1
linux/drivers
John W. Linville 064b53dbcc [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>
2005-09-08 14:57:24 -07:00
..
acorn
acpi [ACPI] revert bad processor_core.c patch for bug 5128 2005-09-03 12:41:12 -04:00
atm [ATM]: Fix dereference of uninitialized pointer in zatm 2005-09-02 12:18:03 -07:00
base [SCSI] Re-do "final klist fixes" 2005-09-07 18:44:33 -07:00
block Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6 2005-09-07 17:31:27 -07:00
bluetooth [Bluetooth]: Move packet type into the SKB control buffer 2005-08-29 15:55:13 -07:00
cdrom Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6 2005-09-07 17:31:27 -07:00
char [PATCH] PCI: remove CONFIG_PCI_NAMES 2005-09-08 14:57:23 -07:00
cpufreq
crypto
dio
eisa
fc4
firmware [PATCH] dcdbas: add Dell Systems Management Base Driver with sysfs support 2005-09-07 16:57:27 -07:00
hwmon [PATCH] hwmon: (3/3) pc87360 driver update 2005-09-05 09:26:55 -07:00
i2c [PATCH] drivers: convert kcalloc to kzalloc 2005-09-07 16:57:46 -07:00
ide Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6 2005-09-07 17:31:27 -07:00
ieee1394 [PATCH] provide MODALIAS= enviroment variable to autoload ieee1394 modules via udev 2005-09-07 16:57:41 -07:00
infiniband [PATCH] PCI: remove CONFIG_PCI_NAMES 2005-09-08 14:57:23 -07:00
input [PATCH] Input: Add a new switch event type 2005-09-07 16:57:54 -07:00
isdn [PATCH] -Wundef fixes (hisax) 2005-09-07 17:17:33 -07:00
macintosh [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
mca
md [PATCH] kill bio->bi_set 2005-09-07 16:57:20 -07:00
media [PATCH] DVB: lgdt330x check callback fix 2005-09-07 16:58:02 -07:00
message Merge by hand (conflicts in sd.c) 2005-09-06 17:52:54 -05:00
mfd [MFD] Add SA11x0 MCP platform device support 2005-08-18 10:10:46 +01:00
misc [SERIAL] Update ibmasm driver for death of register_serial&co 2005-09-07 21:37:00 +01:00
mmc [PATCH] mmc: conditional scr sysfs entry 2005-09-07 16:57:52 -07:00
mtd [PATCH] detect soft lockups 2005-09-07 16:57:17 -07:00
net [PATCH] PCI: remove CONFIG_PCI_NAMES 2005-09-08 14:57:23 -07:00
nubus
oprofile
parisc
parport [PATCH] parport: add NetMOS 9805 support 2005-09-07 16:57:28 -07:00
pci [PATCH] PCI: restore BAR values after D3hot->D0 for devices that need it 2005-09-08 14:57:24 -07:00
pcmcia [PATCH] yenta: make ToPIC95 bridges work with 16bit cards 2005-09-07 16:57:21 -07:00
pnp Merge linux-2.6 with linux-acpi-2.6 2005-09-08 01:45:47 -04:00
s390 [PATCH] s390: claw driver fixes 2005-09-06 22:15:20 -04:00
sbus [SPARC64]: Use drivers/Kconfig 2005-08-30 21:46:19 -07:00
scsi [PATCH] scan all enabled ports on ata_piix 2005-09-08 05:57:23 -04:00
serial Merge linux-2.6 with linux-acpi-2.6 2005-09-08 01:45:47 -04:00
sh
sn
tc
telephony
usb [PATCH] PCI: remove CONFIG_PCI_NAMES 2005-09-08 14:57:23 -07:00
video [PATCH] PCI: remove CONFIG_PCI_NAMES 2005-09-08 14:57:23 -07:00
w1 [NETLINK]: Add "groups" argument to netlink_kernel_create 2005-08-29 16:01:11 -07:00
zorro
Kconfig [MFD] Add multimedia communication port core support 2005-08-18 10:06:59 +01:00
Makefile Auto-update from upstream 2005-08-29 17:02:17 -04:00