Nathan Bryant [Wed, 4 Aug 2004 13:06:43 +0000 (09:06 -0400)]
[ACPI] restore PCI Interrupt Link Devices upon resume
* register as as a sys_device so that we can get resume callbacks and restore
interrupt routing state.
* add acpi_pci_link_resume(), which will be called when resuming from a suspend
state that needs IRQ routing to be restored. This fixes issues reported on
the mailing lists, e.g.:
http://marc.theaimsgroup.com/?l=acpi4linux&m=109142999328643&w=2
* rename setonboot --> initialized
* change to test acpi_noirq in init
We want to initialize everything on S3 resume in case the BIOS points an
interrupt link somewhere we didn't expect. (Doing so avoids "missing interrupt"
or "irq x: nobody cared" problems.) According to Len, past experience has shown
that it's a good idea to initialize only devices that exist or were explicitly
asked for, so we try to initialize only the IRQ's that were previously
initialized at some point before suspend, by checking the "initialized" flag.
This corresponds to links that have PCI devices attached. Everything else, we
leave alone. Assuming the BIOS does the same thing on resume that it did on
boot, this will leave all the unused links in the same state that they were on
boot.
We are registered as a sysdev in order to do this work fairly early during
resume, before devices are resumed; some devices may not call
pci_device_enable.
Previous "setonboot once" behavior is left in place, to be conservative.
Restructured the internal HW GPE interfaces to pass/track
the current state of interrupts (enabled/disabled) in
order to avoid possible deadlock and increase flexibility
of the interfaces.
Implemented a "lexicographical compare" for String and
Buffer objects within the logical operators -- LGreater,
LLess, LGreaterEqual, and LLessEqual -- as per further
clarification to the ACPI specification. Behavior is
similar to C library "strcmp".
Completed a major reduction in CPU stack use for the
acpi_get_firmware_table external function. In the 32-bit
non-debug case, the stack use has been reduced from 168
bytes to 32 bytes.
Deployed a new run-time configuration flag,
acpi_gbl_enable_interpeter_slack, whose purpose is to allow
the AML interpreter to forgive certain bad AML constructs.
Default setting is FALSE.
Implemented the first use of acpi_gbl_enable_interpeter_slack
in the Field IO support code. If enabled, it allows field
access to go beyond the end of a region definition if the
field is within the region length rounded up to the next
access width boundary (a common coding error.)
Renamed OSD_HANDLER to acpi_osd_handler, and
OSD_EXECUTION_CALLBACK to acpi_osd_exec_callback for
consistency with other ACPI symbols. Also, these symbols
are lowercased by the latest version of the acpisrc tool.
The prototypes for the PCI interfaces in acpiosxf.h
have been updated to rename "register" to simply "reg"
to prevent certain compilers from complaining.
Len Brown [Wed, 14 Jul 2004 10:47:30 +0000 (06:47 -0400)]
[ACPI] /proc/acpi/thermal_zone/THRM/cooling_mode
Add concept of (mandatory) "critical", when (optional)
"passive" and "active" are not present. (Zhenyu Z Wang)
http://bugzilla.kernel.org/show_bug.cgi?id=1770
Implemented support for Buffer and String objects (as
per ACPI 2.0) for the following ASL operators: LEqual,
LGreater, LLess, LGreaterEqual, and LLessEqual.
Completed a new design and implementation for EBDA
(Extended BIOS Data Area) support in the RSDP scan code.
The original code improperly scanned for the EBDA by simply
scanning from memory location 0 to 0x400. The correct
method is to first obtain the EBDA pointer from within
the BIOS data area, then scan 1K of memory starting at the
EBDA pointer. There appear to be few if any machines that
place the RSDP in the EBDA, however.
http://bugme.osdl.org/show_bug.cgi?id=2415
Integrated a fix for a possible fault during evaluation
of BufferField arguments. Obsolete code that was causing
the problem was removed. (Asus laptop boot crash)
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=121760
Found and fixed a problem in the Field Support Code
where data could be corrupted on a bit field read that
starts on an aligned boundary but does not end on an
aligned boundary. Merged the read/write "datum length"
calculation code into a common procedure.
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.
Len Brown [Wed, 16 Jun 2004 21:26:33 +0000 (17:26 -0400)]
[ACPI] Fix a lockup which Sid Boyce <sboyce@blueyonder.co.uk>
discovered with IOAPIC disabled.
The problem was that drivers/serial/8250_acpi.c found COM1 in the ACPI
namespace and called acpi_register_gsi() to set up its IRQ. ACPI tells us
that the COM1 IRQ is edge triggered, active high, but acpi_register_gsi()
was ignoring the edge_level argument, so it blindly set the COM1 IRQ to be
level-triggered.
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Signed-off-by: Andrew Morton <akpm@osdl.org
John Rose [Tue, 15 Jun 2004 13:19:55 +0000 (06:19 -0700)]
[PATCH] insert_resource fix
I noticed that insert_resource() incorrectly handles the case of an
existing parent resource with the same ending address as a newly added
child. This results in incorrect nesting, like the following:
PIO handlers under CONFIG_IDE_TASKFILE_IO=n are never used for bio
based requests (rq->bio is always NULL) so we can use rq->buffer
directly instead of calling ide_[un]map_buffer().
[PATCH] ide: cleanup taskfile PIO handlers (CONFIG_IDE_TASKFILE_IO=n)
These handlers are nowadays used only for REQ_DRIVE_TASKFILE
requests (rq->bio is always NULL) which aren't retried et all so
remove code 'rewinding' rq->current_nr_sectors and some FIXMEs.
[PATCH] ide: fix ide-cd to not retry REQ_DRIVE_TASKFILE requests
'cat /proc/ide/hdx/identify' generates REQ_DRIVE_TASKFILE request
(for WIN_PIDENTIFY command) even for devices controlled by ide-cd.
All other drivers don't try to retry such requests.
- do not unregister ide-pnp driver while detaching random
IDE device from random IDE device driver if IDE is modular
(somebody added this in 2.3.51)
- clear 'hw_regs_t hw' allocated from stack
- mark idepnp_init() with __init
- use ide_std_init_ports() instead of ide_setup_ports()
The IDE sparse fixups cause 2 warnings (unused variables `val' and
`reg') on m68k and APUS. However, the reason why this code was
commented out is gone. So just remove the special case.
Chris Wedgwood [Mon, 14 Jun 2004 16:01:29 +0000 (09:01 -0700)]
[PATCH] stat nlink resolution fix
Some filesystems can get overflows when their link-count exceeds
65534. This patch increases the kernels internal resolution for this
and also has a check for the old-system call paths to return and error
(-EOVERFLOW) as required (as suggested by Al Viro).
Signed-off-by: Chris Wedgwood <cw@f00f.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Harald Welte [Mon, 14 Jun 2004 10:30:31 +0000 (03:30 -0700)]
[NETFILTER]: Prevent orphan expectations.
This patch fixes orphaned expectations, which can occur when helpers create
expectations for unconfirmed conntracks and the packet is dropped before
the conntrack is confirmed.
Signed-off-by: Phil Oester <kernel@linuxace.com> Signed-off-by: Harald Welte <laforge@netfilter.org> Signed-off-by: David S. Miller <davem@redhat.com>
Harald Welte [Mon, 14 Jun 2004 10:28:58 +0000 (03:28 -0700)]
[NETFILTER]: Don't assign new helper after NAT when there are already expectations present.
Tracked down by Raivis Bucis <raivis@mt.lv>
This patch fixes an oops while listing /proc/net/ip_conntrack.
When a helper sets up expectations based on the first packet (tftp),
NAT can still change the packet and cause conntrack to look for a new helper
based on the new tuple. When no helper is found, expectant->helper will be
NULL, which leads to an oops in print_expect().
Only assign a new helper in ip_conntrack_alter_reply() if there are no
expectations.
Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: Harald Welte <laforge@netfilter.org> Signed-off-by: David S. Miller <davem@redhat.com>
Andrew Morton [Mon, 14 Jun 2004 06:16:49 +0000 (23:16 -0700)]
[PATCH] ppc64: fix out_be64
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Patch fixes out_be64 implementation on ppc64 along with a glich in out_be32
(inconsistent) use of barrier.
Signed-off-by: Roland Dreier <roland@topspin.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org>
Andrew Morton [Mon, 14 Jun 2004 06:16:27 +0000 (23:16 -0700)]
[PATCH] Fix nfs writepage behaviour
From: Nick Piggin <nickpiggin@yahoo.com.au>
nfs_writepage() refuses to write back mapped pages at all on the page
reclaim path, causing systems to get locked up when there's a lot of dirty
mmapped data around. The patch changes NFS so that it will start I/O
against these pages.
The code as it stands is designed to defer writeout to pdflush which can do
larger, more efficient I/Os. But there shouldn't be much traffic by this
path, and going slow is better than not going at all.
Andi Kleen [Mon, 14 Jun 2004 06:06:51 +0000 (23:06 -0700)]
[PATCH] Fix x86-64 VIA systems with IOMMU debug
VIA chipsets are broken and don't work with IOMMU enabled. For some mysterious
reason (the IOMMU logic is actually in the CPU) they manage to corrupt all
data going through the aperture to PCI devices.
There was a workaround previously that enabled the slower softmmu when VIA is
detected on the normal IOMMU path (when there is more than 3GB of memory). But
CONFIG_IOMMU_DEBUG took a short cut that was not handled, which ended up with
VIA systems not booting when this option is enabled.
This patch enables the workaround with CONFIG_IOMMU_DEBUG/iommu=force too