linux/include
John W. Linville fec59a711e [PATCH] PCI: restore BAR values after D3hot->D0 for devices that need it
Some PCI devices (e.g. 3c905B, 3c556B) lose all configuration
(including BARs) when transitioning from D3hot->D0.  This leaves such
a device in an inaccessible state.  The patch below causes the BARs
to be restored when enabling such a device, so that its driver will
be able to access it.

The patch also adds pci_restore_bars as a new global symbol, and adds a
correpsonding EXPORT_SYMBOL_GPL for that.

Some firmware (e.g. Thinkpad T21) leaves devices in D3hot after a
(re)boot.  Most drivers call pci_enable_device very early, so devices
left in D3hot that lose configuration during the D3hot->D0 transition
will be inaccessible to their drivers.

Drivers could be modified to account for this, but it would
be difficult to know which drivers need modification.  This is
especially true since often many devices are covered by the same
driver.  It likely would be necessary to replicate code across dozens
of drivers.

The patch below should trigger only when transitioning from D3hot->D0
(or at boot), and only for devices that have the "no soft reset" bit
cleared in the PM control register.  I believe it is safe to include
this patch as part of the PCI infrastructure.

The cleanest implementation of pci_restore_bars was to call
pci_update_resource.  Unfortunately, that does not currently exist
for the sparc64 architecture.  The patch below includes a null
implemenation of pci_update_resource for sparc64.

Some have expressed interest in making general use of the the
pci_restore_bars function, so that has been exported to GPL licensed
modules.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-08-04 21:32:46 -07:00
..
acpi /home/lenb/src/to-linus branch 'acpi-2.6.12' 2005-07-29 23:31:17 -04:00
asm-alpha Revert broken "statement with no effect" warning fix 2005-07-28 10:34:47 -07:00
asm-arm [ARM SMP] Fix another ARMv6 bitop problem 2005-07-28 20:36:26 +01:00
asm-arm26 [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
asm-cris [PATCH] CRIS update: new subarchitecture v32 2005-07-27 16:26:01 -07:00
asm-frv [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
asm-generic [PATCH] x86_64: Some cleanup in setup64.c 2005-07-28 21:45:58 -07:00
asm-h8300 [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
asm-i386 [PATCH] increase PCIBIOS_MIN_IO on x86 2005-08-02 18:21:25 -07:00
asm-ia64 [IA64] inotify: ia64 syscalls. 2005-07-27 10:46:12 -07:00
asm-m32r [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
asm-m68k [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
asm-m68knommu [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
asm-mips [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
asm-parisc [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
asm-ppc [PATCH] ppc32: add missing 4xx EMAC sysfs nodes 2005-08-01 19:14:02 -07:00
asm-ppc64 [PATCH] ppc64: fix for kexec boot issue 2005-08-04 13:00:55 -07:00
asm-s390 [PATCH] s390: ioprio & inotify system calls. 2005-08-01 21:37:59 -07:00
asm-sh [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
asm-sh64 [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
asm-sparc [SPARC]: Add inotify syscall entries. 2005-07-27 14:14:39 -07:00
asm-sparc64 [SPARC]: Add inotify syscall entries. 2005-07-27 14:14:39 -07:00
asm-um [PATCH] uml: vm86 compile fix 2005-07-28 21:46:03 -07:00
asm-v850 [PATCH] v850: Define L1_CACHE_SHIFT and L1_CACHE_SHIFT_MAX 2005-07-27 16:26:03 -07:00
asm-x86_64 [PATCH] increase PCIBIOS_MIN_IO on x86 2005-08-02 18:21:25 -07:00
asm-xtensa [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
linux [PATCH] PCI: restore BAR values after D3hot->D0 for devices that need it 2005-08-04 21:32:46 -07:00
math-emu Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
media [PATCH] V4L: Miscellaneous fixes 2005-08-01 19:13:59 -07:00
mtd [MTD] NAND: Honour autoplacement schemes supplied by the caller 2005-05-23 13:20:45 +02:00
net [NET]: Spelling mistakes threshoulds -> thresholds 2005-07-30 17:41:59 -07:00
pcmcia [PATCH] pcmcia: fix pcmcia-cs compilation 2005-07-12 16:00:59 -07:00
rxrpc Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
scsi [SCSI] fix function prototype warning 2005-07-14 11:54:17 -05:00
sound [ALSA] version 1.0.9b 2005-07-28 15:50:42 +02:00
video [PATCH] Clean-up and bug fix for tdfxfb framebuffer size detection 2005-05-01 08:59:25 -07:00