linux/arch/sparc64/kernel
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
..
auxio.c [SPARC64]: Get rid of fast IRQ feature. 2005-06-27 17:04:45 -07:00
binfmt_aout32.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
binfmt_elf32.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
central.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
chmc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpu.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
devices.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dtlb_backend.S [SPARC64]: Typo in dtlb_backend.S, _PAGE_SZ4M --> _PAGE_SZ4MB 2005-07-08 13:33:10 -07:00
dtlb_base.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dtlb_prot.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ebus.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
entry.S [SPARC64]: Do not expand CHEETAH_LOG_ERROR 3 times. 2005-08-30 15:11:52 -07:00
etrap.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
head.S [SPARC64]: Kill BRANCH_IF_ANY_CHEETAH() from copy page. 2005-08-30 11:26:15 -07:00
idprom.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ioctl32.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iommu_common.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iommu_common.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq.c [SPARC64]: Privatize sun5_timer. 2005-07-24 19:36:13 -07:00
isa.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
itlb_base.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kprobes.c [PATCH] Kprobes: prevent possible race conditions sparc64 changes 2005-09-07 16:58:00 -07:00
Makefile [SPARC64]: Move kernel unaligned trap handlers into assembler file. 2005-08-19 15:55:33 -07:00
module.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci_common.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci_impl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci_iommu.c [SPARC64]: More fully work around Spitfire Errata 51. 2005-08-29 12:46:22 -07:00
pci_psycho.c [SPARC64]: Fix IRQ retry interval timer value on sparc64 PCI controllers. 2005-07-04 15:58:19 -07:00
pci_sabre.c [SPARC64]: Add support for IRQ pre-handlers. 2005-07-04 13:24:38 -07:00
pci_schizo.c [SPARC64]: Fix IRQ retry interval timer value on sparc64 PCI controllers. 2005-07-04 15:58:19 -07:00
pci.c [PATCH] PCI: restore BAR values after D3hot->D0 for devices that need it 2005-09-08 14:57:24 -07:00
power.c [PATCH] Don't export machine_restart, machine_halt, or machine_power_off. 2005-07-26 14:35:42 -07:00
process.c [SPARC64]: More fully work around Spitfire Errata 51. 2005-08-29 12:46:22 -07:00
ptrace.c [SPARC64]: Add syscall auditing support. 2005-07-10 19:29:45 -07:00
rtrap.S [SPARC64]: Eliminate irq_cpustat_t. 2005-08-29 22:46:43 -07:00
sbus.c [SPARC64]: More fully work around Spitfire Errata 51. 2005-08-29 12:46:22 -07:00
semaphore.c [SPARC64]: Avoid membar instructions in delay slots. 2005-06-27 15:42:04 -07:00
setup.c [SPARC64]: Eliminate irq_cpustat_t. 2005-08-29 22:46:43 -07:00
signal32.c [SPARC64]: More fully work around Spitfire Errata 51. 2005-08-29 12:46:22 -07:00
signal.c [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00
smp.c [SPARC64]: More fully work around Spitfire Errata 51. 2005-08-29 12:46:22 -07:00
sparc64_ksyms.c [SPARC]: Kill io_remap_page_range() 2005-09-01 21:51:26 -07:00
starfire.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sunos_ioctl32.c [SPARC64]: Fix set/get MTU cases in sunos_ioctl() 2005-09-06 20:12:15 -07:00
sys32.S [SPARC]: Add ioprio system call support. 2005-07-10 15:11:45 -07:00
sys_sparc32.c [PATCH] remove duplicated sys_open32() code from 64bit archs 2005-09-07 16:57:43 -07:00
sys_sparc.c [PATCH] Avoiding mmap fragmentation 2005-06-21 18:46:16 -07:00
sys_sunos32.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
systbls.S [SPARC]: Add inotify syscall entries. 2005-07-27 14:14:39 -07:00
time.c [PATCH] NTP: ntp-helper functions 2005-09-07 16:57:34 -07:00
trampoline.S [SPARC64]: Avoid membar instructions in delay slots. 2005-06-27 15:42:04 -07:00
traps.c [SPARC64]: Revamp Spitfire error trap handling. 2005-08-29 12:45:11 -07:00
ttable.S [SPARC64]: Revamp Spitfire error trap handling. 2005-08-29 12:45:11 -07:00
una_asm.S [SPARC64]: Move kernel unaligned trap handlers into assembler file. 2005-08-19 15:55:33 -07:00
unaligned.c [SPARC64]: Revamp Spitfire error trap handling. 2005-08-29 12:45:11 -07:00
us2e_cpufreq.c [SPARC64]: Fix 2 bugs in cpufreq drivers. 2005-08-18 14:35:38 -07:00
us3_cpufreq.c [SPARC64]: Fix 2 bugs in cpufreq drivers. 2005-08-18 14:35:38 -07:00
vmlinux.lds.S [PATCH] Kprobes: prevent possible race conditions sparc64 changes 2005-09-07 16:58:00 -07:00
winfixup.S [SPARC64]: Revamp Spitfire error trap handling. 2005-08-29 12:45:11 -07:00