Fixed a problem where hardware GPE enable bits sometimes
not set properly during and after GPE method execution.
Result of ACPICA 20040427 changes.
Removed extra "clear all GPEs" when sleeping/waking.
Removed acpi_ht_enable_gpe and acpi_hw_disable_gpe, replaced
by the single acpi_hw_write_gpe_enable_reg. Changed a couple
of calls to the functions above to the new acpi_ev* calls
as appropriate.
ACPI_OS_NAME was removed from the OS-specific headers.
The default name is now "Microsoft Windows NT" for maximum
compatibility. However this can be changed by modifying
the acconfig.h file. Fixes EHCI probe issue:
http://bugme.osdl.org/show_bug.cgi?id=1762
Allow a single invocation of acpi_install_notify_handler
for a handler that traps both types of notifies (System,
Device). Use ACPI_ALL_NOTIFY flag.
Run _INI methods on ThermalZone objects. This is against
the ACPI specification, but there is apparently ASL code
in the field that has these _INI methods, and apparently
"other" AML interpreters execute them.
Performed a full 16/32/64 bit lint that resulted in some
small changes.
Completed a major overhaul of the GPE handling within ACPI CA.
There are now three types of GPEs:
wake-only; runtime-only; combination wake/run.
The only GPEs allowed to be combination wake/run are for
button-style devices such as a control-method power button,
control-method sleep button, or a notebook lid switch.
GPEs that have an _Lxx or _Exx method and are not referenced
by any _PRW methods are marked for "runtime" and hardware enabled.
Any GPE that is referenced by a _PRW method is marked for "wake"
(and disabled at runtime). However, at sleep time, only those
GPEs that have been specifically enabled for wake via the
acpi_enable_gpe() interface will actually be hardware enabled.
A new external interface has been added, acpi_set_gpe_type()
that is meant to be used by device drivers to force a GPE
to a particular type. It will be especially useful for the
drivers for the button devices mentioned above.
Completed restructuring of the ACPI CA initialization sequence
so that default operation region handlers are installed
before GPEs are initialized and the _PRW methods are executed.
This will prevent errors when the _PRW methods attempt to
access system memory or I/O space.
GPE enable/disable no longer reads the GPE enable register.
We now keep the enable info for runtime and wake separate
and in the GPE_EVENT_INFO. We thus no longer depend on
the hardware to maintain these bits.
Always clear the wake status and fixed/GPE status bits
before sleep, even for state S5.
Improved the AML debugger output for displaying the
GPE blocks and their current status.
Added new strings for the _OSI method, of the form
"Windows 2001 SPx" where x = 0,1,2,3,4.
Fixed a problem where the physical address was incorrectly
calculated when the Load() operator was used to directly
load from an Operation Region (vs. loading from a Field object.)
Also added check for minimum table length for this case.
Fix for multiple mutex acquisition. Restore original thread
SyncLevel on mutex release.
Added ACPI_VALID_SXDS flag to the acpi_get_object_info interface
for consistency with the other fields returned.
Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.
There is one such structure for each GPE in the system,
so the size of this structure is important.
CPU stack requirement reduction:
Cleaned up the method execution and object evaluation paths
so that now a parameter structure is passed, instead of copying
the various method parameters over and over again.
In evregion.c:
Correctly exit and reenter the interpreter region if and only
if dispatching an operation region request to a user-installed
handler. Do not exit/reenter when dispatching to a default
handler (e.g., default system memory or I/O handlers)
Fixed an interpreter problem where an indirect store through an
ArgX parameter was incorrectly applying the "implicit conversion
rules" during the store. From the ACPI specification: "If the
target is a method local or argument (LocalX or ArgX), no
conversion is performed and the result is stored directly to the
target". The new behavior is to disable implicit conversion
during ALL stores to an ArgX.
Changed the behavior of the _PRW method scan to ignore any and
all errors returned by a given _PRW. This prevents the scan from
aborting from the failure of any single _PRW.
Moved the runtime configuration parameters from the global init
procedure to static variables in acglobal.h. This will allow the
host to override the default values easily.
Karol Kozimor [Tue, 27 Apr 2004 20:41:56 +0000 (16:41 -0400)]
[PATCH] acpi4asus 0.28 (Karol 'sziwan' Kozimor)
- Added support for Samsung P30
- Fixed an oops triggered by non-standard hardware (Samsung P30)
- Added support for L4400L and M6800N
The patch also removes some superfluous data. It doesn't include the
copy_from_user() conversion, it will be released as a separate patch.
Len Brown [Fri, 23 Apr 2004 09:15:31 +0000 (05:15 -0400)]
[ACPI] workaround for nForce2 BIOS bug: XT-PIC timer in IOAPIC mode
"acpi_skip_timer_override" boot parameter
dmi_scan for common platforms, may be replaced with PCI-ID in future.
http://bugzilla.kernel.org/show_bug.cgi?id=1203
Re-instate __ARCH_SI_BAND_T, to allow architecture overrides.
We default to "long" (which is what POSIX says), but since
a number of architectures have used "int" for historical
reasons, we need to allow overrides.
At least sparc64 needs this. Possibly others, but so far
architecture maintainers haven't spoken up. ppc64 and x86-64
are known to be ok with the default "long".
Andrew Morton [Fri, 2 Apr 2004 12:05:15 +0000 (04:05 -0800)]
[PATCH] PPC32: Fix thinko in arch/ppc/boot/simple/relocate.S
From: Tom Rini <trini@kernel.crashing.org>
When I was updating ppc/boot/simple/relocate.S to work on PPC_PREP systems, I
in advertantly broke 4xx systems. On classic PPC, the first three
instructions are nops, of which the first two can be overwritten. This is
not true of 4xx (or 8xx, but that's not working right now anyhow). The
following is needed to fix this.
Russell King [Fri, 2 Apr 2004 13:17:43 +0000 (14:17 +0100)]
[ARM] Update ARM makefiles
- Use -march=armv6 where available.
- CFLAGS_BOOT isn't needed - the decompressor uses CFLAGS, remove it.
- PROCESSOR is never used, remove it.
- LDFLAGS_BLOB is never used, remove it.
- Remove MACHINE macro.
- Correct comments for include/asm-arm/.arch target.
- Copy format of include/asm symlink rule.
- Arrange for configuration to be split before making
include/asm-arm/arch symlink.
- This means that asm-offsets.s no longer depends on
include/config/MARKER.
Andrew Morton [Thu, 1 Apr 2004 05:53:47 +0000 (21:53 -0800)]
[PATCH] Fix swp_entry_t encoding
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
This fixes a problem in sys_swapon that can cause the creation of invalid
swap ptes. This has its cause in the arch-independent swap entries vs.
the pte coded swap entries. The swp_entry_t uses 27 bits for the offset
and 5 bits for the type. In sys_swapon this definition is used to find how
many swap devices and how many pages on each device there can be. But the
swap entries encoded in a pte can be subject to additional restrictions due
to the hardware besides the 27/5 division of the bits in the swp_entry_t
type. This is solved by adding pte_to_swp_entry and swp_entry_to_pte calls
to the calculations for maximum type and offset.
In addition the s390 swap pte division for offset/type is changed from 19/6
bits to 20/5 bits.
Andrew Morton [Thu, 1 Apr 2004 05:52:20 +0000 (21:52 -0800)]
[PATCH] run page_address_init() earlier
If someone runs page_address() before page_address_init(), the kernel locks
up over uninitialised spinlocks.
This only happens with the 4:4 patch, but it is more robust to run
page_address_init() before setup_arch(). page_address_init() simply
initialises statically allocated storage.
Andrew Morton [Thu, 1 Apr 2004 05:52:06 +0000 (21:52 -0800)]
[PATCH] loop setup calling bd_set_size too soon
From: Chris Mason <mason@suse.com>
I think Andrew and I managed to mismerge the loop setup race fix.
loop_set_fd is using get_capacity() to read the size of the disk and
sending that to bd_set_size.
But, it is doing this before calling set_capacity, so the size being used
is wrong. This should clean things up.
Andrew Morton [Thu, 1 Apr 2004 05:51:54 +0000 (21:51 -0800)]
[PATCH] Replace MAX_MAP_COUNT with /proc/sys/vm/max_map_count
From: David Mosberger <davidm@napali.hpl.hp.com>
Below is a warmed up version of a patch originally done by Werner Almesberger
(see http://tinyurl.com/25zra) to replace the MAX_MAP_COUNT limit with a
sysctl variable. I thought this had gone into the tree a long time ago but
alas it has not and as luck would have it, the hard limit bit someone today
once again with a large app on a large machine.
Andrew Morton [Thu, 1 Apr 2004 05:51:13 +0000 (21:51 -0800)]
[PATCH] Fix hugetlb-vs-memory overcommit
From: Andy Whitcroft <apw@shadowen.org>
Two problems:
a) The memory overcommit code fails oto take into account all the pages
which are pinned by being reserved for the hugetlbpage pool
b) We're performing overcommit accounting and checking on behalf of
hugetlbpage vmas.
The main thrust is to ensure that VM_ACCOUNT actually only gets set on
vma's which are indeed accountable. With that ensured much of the rest
comes out in the wash. It also removes the hugetlb memory for the
overcommit_memory=2 case.
Andrew Morton [Thu, 1 Apr 2004 05:50:47 +0000 (21:50 -0800)]
[PATCH] ppc64: add useful warning message in hugepage code
From: David Gibson <david@gibson.dropbear.id.au>
This patch adds a debugging message to the ppc64 hugepage code when we
attempt to open the "low" (32-bit) hugepage window on PPC64, but can't
because a (non-hugepage) mapping already exists in the region.
Andrew Morton [Thu, 1 Apr 2004 05:50:36 +0000 (21:50 -0800)]
[PATCH] ppc64: allow MAP_FIXED hugepage mappings
From: David Gibson <david@gibson.dropbear.id.au>
On PowerPC64 the "low" hugepage range (at 2-3G for use by 32-bit processes)
needs to be activated before it can be used. hugetlb_get_unmapped_area()
automatically activates the range for hugepage mappings in 32-bit processes
which are not MAP_FIXED. However for MAP_FIXED mmap()s, even at a suitable
address will fail if the region is not already activated, because there is
no suitable callback from the generic MAP_FIXED code path into the arch
code.
This patch corrects this problem and allows PPC64 to do MAP_FIXED hugepage
mappings in the low hugepage range.
Andrew Morton [Thu, 1 Apr 2004 05:50:10 +0000 (21:50 -0800)]
[PATCH] ppc64: create dma_mapping_error
From: Anton Blanchard <anton@samba.org>
From: Stephen Rothwell <sfr@canb.auug.org.au>
This creates DMA_ERROR_CODE and uses it everywhere instead of
PCI_DMA_ERROR_CODE as we really want the three DMA mapping API's to return
a single error code. Also we now have dma_mapping_error and
vio_dma_mapping_error - and this latter and pci_dma_mapping_error both just
call the former.
Also a small fix in the vscsi - dma_map_sg returns 0 to indicate an error.
[XFS] Be explicit in adding in the non-transactional data to the reservation
estimate. We must add in for the worst case of a log stripe taking us the
full distance for a log stripe boundary.
[XFS] Define a new superblock field for more feature bits. Take the last
feature bit in sb_versionnum to use to indicate that the new feature bit
field is to be used.
Nathan Scott [Thu, 1 Apr 2004 20:38:16 +0000 (06:38 +1000)]
[XFS] Remove dup fdatasync/fdatawait call on fsync. Means we no longer
take the iolock here, and readers no longer conflict with concurrent
fsync activity. Kudos to Steve!
Linus Torvalds [Wed, 31 Mar 2004 10:18:18 +0000 (02:18 -0800)]
acpi: enable global wake events by default
People need the global wake events even when not sleeping:
they are used for lid open events at least on some laptops.
As such, they should be enabled by default.
You can disable them with "acpi_leave_gpes_disabled" if
your machine doesn't need them, and you want to get a few
less GPE's.