kernel-ark/include/linux
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
..
byteorder
dvb
hdlc
isdn
lockd
mmc [PATCH] sd: SD 4-bit bus 2005-09-07 16:57:51 -07:00
mtd
netfilter
netfilter_arp
netfilter_bridge
netfilter_ipv4 [NETFILTER]: kill __ip_ct_expect_unlink_destroy 2005-09-06 15:10:46 -07:00
netfilter_ipv6
nfsd
raid
sunrpc [PATCH] sunrpc: cache_register can use wrong module reference 2005-09-07 16:57:25 -07:00
tc_act
tc_ematch
8250_pci.h
a.out.h
ac97_codec.h
acct.h
acpi.h
adb.h
adfs_fs_i.h
adfs_fs_sb.h
adfs_fs.h
affs_fs.h
affs_hardblocks.h
agp_backend.h
agpgart.h
aio_abi.h
aio.h
amifd.h
amifdreg.h
amigaffs.h
apm_bios.h
arcdevice.h
arcfb.h
ata.h
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_suni.h
atm_tcp.h
atm_zatm.h
atm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
attribute_container.h [SCSI] correct attribute_container list usage 2005-08-30 22:44:20 -05:00
audit.h
auto_fs4.h
auto_fs.h
auxvec.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
awe_voice.h
ax25.h
b1lli.h
b1pcmcia.h
backing-dev.h
backlight.h
baycom.h
bcd.h
bfs_fs.h
binfmts.h
bio.h Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6 2005-09-07 17:31:27 -07:00
bitmap.h
bitops.h
blkdev.h
blkpg.h
blockgroup_lock.h
bootmem.h
bpqether.h
buffer_head.h
cache.h
capability.h [PATCH] VM: add capabilites check to set_zone_reclaim 2005-09-05 00:05:44 -07:00
capi.h
cciss_ioctl.h
cd1400.h
cdev.h
cdk.h
cdrom.h
chio.h
circ_buf.h
cobalt-nvram.h
coda_cache.h
coda_fs_i.h
coda_linux.h
coda_proc.h
coda_psdev.h
coda.h
coff.h
com20020.h
compat_ioctl.h
compat.h [PATCH] compat: be more consistent about [ug]id_t 2005-09-07 16:57:19 -07:00
compiler-gcc2.h
compiler-gcc3.h
compiler-gcc4.h
compiler-gcc.h
compiler-intel.h
compiler.h
completion.h
comstats.h
concap.h
config.h
console_struct.h
console.h
consolemap.h
cpu.h [PATCH] remove driverfs references from include/linux/cpu.h and net/sunrpc/rpc_pipe.c 2005-09-02 00:57:31 -07:00
cpufreq.h
cpumask.h
cpuset.h [PATCH] cpusets: confine oom_killer to mem_exclusive cpuset 2005-09-07 16:57:40 -07:00
cramfs_fs_sb.h
cramfs_fs.h
crash_dump.h
crc32.h
crc32c.h
crc-ccitt.h
crypto.h [CRYPTO]: Added CRYPTO_TFM_REQ_MAY_SLEEP flag 2005-09-01 17:43:05 -07:00
cryptohash.h
ctype.h
cuda.h
cyclades.h
cyclomx.h
cycx_cfm.h
cycx_drv.h
cycx_x25.h
dcache.h [PATCH] struct dentry: place d_hash close to d_parent and d_name to speedup lookups 2005-09-07 16:57:41 -07:00
dccp.h
dcookies.h
debugfs.h
delay.h
devfs_fs_kernel.h
devfs_fs.h
device-mapper.h
device.h
devpts_fs.h
dio.h
dirent.h
divert.h
dm9000.h
dm-ioctl.h
dma-mapping.h
dmapool.h
dmi.h [PATCH] dmi: add onboard devices discovery 2005-09-07 16:57:44 -07:00
dn.h
dnotify.h
dqblk_v1.h
dqblk_v2.h
dqblk_xfs.h
ds1286.h
dtlk.h
edd.h
eeprom.h
efi.h [PATCH] x86: fix EFI memory map parsing 2005-09-05 00:06:09 -07:00
efs_dir.h
efs_fs_i.h
efs_fs_sb.h
efs_fs.h
efs_vh.h
eisa.h
elevator.h
elf-fdpic.h
elf.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
elfcore.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h
eventpoll.h
ext2_fs_sb.h
ext2_fs.h [PATCH] disk quotas fail when /etc/mtab is symlinked to /proc/mounts 2005-09-07 16:57:23 -07:00
ext3_fs_i.h
ext3_fs_sb.h
ext3_fs.h [PATCH] disk quotas fail when /etc/mtab is symlinked to /proc/mounts 2005-09-07 16:57:23 -07:00
ext3_jbd.h
fadvise.h
fb.h
fcdevice.h
fcntl.h
fd1772.h
fd.h
fddidevice.h
fdreg.h
file.h
filter.h
firmware.h [PATCH] modified firmware_class.c to support no hotplug 2005-09-07 16:57:26 -07:00
flat.h
font.h
fs_struct.h
fs.h [PATCH] Make ll_rw_block() wait for buffer lock 2005-09-07 16:57:55 -07:00
fsl_devices.h
fsnotify.h
ftape-header-segment.h
ftape-vendors.h
ftape.h
futex.h [PATCH] FUTEX_WAKE_OP: pthread_cond_signal() speedup 2005-09-07 16:57:17 -07:00
gameport.h
gen_stats.h
genalloc.h
generic_serial.h
genhd.h
gfp.h [PATCH] cpusets: new __GFP_HARDWALL flag 2005-09-07 16:57:40 -07:00
hardirq.h
harrier_defs.h
hash.h
hayesesp.h
hdlc.h
hdlcdrv.h
hdpu_features.h
hdreg.h
hdsmart.h
hiddev.h
highmem.h
highuid.h
hippidevice.h
hpet.h
hpfs_fs.h
hugetlb.h [PATCH] remove hugetlb_clean_stale_pgtable() and fix huge_pte_alloc() 2005-09-05 00:05:46 -07:00
hwmon-sysfs.h [PATCH] I2C: W83792D driver 1/3 2005-09-05 09:14:13 -07:00
hwmon-vid.h [PATCH] hwmon: hwmon vs i2c, second round (10/11) 2005-09-05 09:14:23 -07:00
hwmon.h [PATCH] hwmon: move SENSORS_LIMIT to hwmon.h 2005-09-05 09:14:17 -07:00
hysdn_if.h
i2c-algo-bit.h
i2c-algo-ite.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-algo-sgi.h
i2c-algo-sibyte.h
i2c-dev.h
i2c-id.h [PATCH] I2C: Kill i2c_algorithm.id (7/7) 2005-09-05 09:14:33 -07:00
i2c-isa.h [PATCH] I2C: Kill i2c_algorithm.id (5/7) 2005-09-05 09:14:31 -07:00
i2c.h [PATCH] I2C: Drop the I2C_ACK_TEST ioctl 2005-09-05 09:26:56 -07:00
i2o-dev.h
i2o.h
i8k.h
ibmtr.h
icmp.h
icmpv6.h
ide.h
idr.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_ec.h
if_eql.h
if_ether.h
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_ltalk.h
if_packet.h
if_plip.h
if_ppp.h
if_pppox.h
if_shaper.h
if_slip.h
if_strip.h
if_tr.h
if_tun.h [TUNTAP]: Allow setting the linktype of the tap device from userspace 2005-09-01 17:40:05 -07:00
if_tunnel.h
if_vlan.h
if_wanpipe_common.h
if_wanpipe.h
if.h
igmp.h
in6.h
in_route.h
in.h
inet_diag.h
inet.h
inetdevice.h
init_task.h
init.h
initrd.h
inotify.h [PATCH] inotify: fix event loss on hardlinked files 2005-09-07 16:57:39 -07:00
input.h [PATCH] Input: Add a new switch event type 2005-09-07 16:57:54 -07:00
interrupt.h
ioc4.h
ioctl32.h [PATCH] remove register_ioctl32_conversion and unregister_ioctl32_conversion 2005-09-07 16:57:20 -07:00
ioctl.h
ioport.h
ioprio.h
ip6_tunnel.h
ip_mp_alg.h
ip.h
ipc.h
ipmi_msgdefs.h
ipmi_smi.h
ipmi.h [PATCH] ipmi: fix panic ipmb response 2005-09-07 16:57:48 -07:00
ipsec.h
ipv6_route.h
ipv6.h
ipx.h
irda.h
irq_cpustat.h
irq.h [PATCH] CHECK_IRQ_PER_CPU() to avoid dead code in __do_IRQ() 2005-09-07 16:57:29 -07:00
isapnp.h
isdn_divertif.h
isdn_ppp.h
isdn.h [PATCH] Remove non-arch consumers of asm/segment.h 2005-09-07 16:57:34 -07:00
isdnif.h
isicom.h
iso_fs.h
istallion.h
ite_gpio.h
ixjuser.h
jbd.h [PATCH] fs/jbd/: cleanups 2005-09-07 16:57:19 -07:00
jffs2_fs_i.h
jffs2_fs_sb.h
jffs2.h
jffs.h
jhash.h
jiffies.h
journal-head.h
joystick.h
kallsyms.h
kbd_diacr.h
kbd_kern.h
kd.h
kdev_t.h
kernel_stat.h
kernel.h
kernelcapi.h
kexec.h
key-ui.h
key.h
keyboard.h
keyctl.h
kfifo.h
klist.h [PATCH] fix klist semantics for lists which have elements removed on traversal 2005-09-07 18:26:54 -07:00
kmalloc_sizes.h
kmod.h
kobj_map.h
kobject_uevent.h
kobject.h
kprobes.h [PATCH] Kprobes: prevent possible race conditions generic 2005-09-07 16:57:59 -07:00
kref.h
kthread.h
lapb.h
lcd.h
libata.h /spare/repo/libata-dev branch 'iomap-try3' 2005-09-05 05:20:33 -04:00
libps2.h
limits.h
linkage.h [PATCH] Kprobes: prevent possible race conditions generic 2005-09-07 16:57:59 -07:00
linux_logo.h
list.h
llc.h
loop.h
lp.h
major.h
matroxfb.h
mbcache.h
mc6821.h
mc146818rtc.h
mca-legacy.h
mca.h
mempolicy.h [PATCH] PCI: Run PCI driver initialization on local node 2005-09-08 14:57:23 -07:00
mempool.h
meye.h
mii.h
minix_fs.h
miscdevice.h
mm_inline.h
mm.h
mman.h
mmtimer.h
mmzone.h [PATCH] sparsemem extreme: hotplug preparation 2005-09-05 00:05:38 -07:00
mod_devicetable.h
module.h
moduleloader.h
moduleparam.h
mount.h
mpage.h
mqueue.h
mroute.h
msdos_fs.h
msg.h [PATCH] ipc: convert /proc/sysvipc/* to generic seq_file interface 2005-09-07 16:57:26 -07:00
mtio.h
mv643xx.h [PATCH] ppc32: mv64x60 updates & enhancements 2005-09-05 00:06:00 -07:00
n_r3964.h
namei.h
namespace.h
nbd.h
ncp_fs_i.h
ncp_fs_sb.h
ncp_fs.h
ncp_mount.h
ncp_no.h
ncp.h
net.h
netdevice.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter_logging.h
netfilter.h
netlink.h
netpoll.h
netrom.h
nfs2.h
nfs3.h
nfs4_acl.h
nfs4_mount.h
nfs4.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfs_page.h
nfs_xdr.h
nfs.h
nfsacl.h
nfsd_idmap.h
nls.h
nmi.h
node.h
nodemask.h
notifier.h
nubus.h
numa.h
nvram.h
openprom_fs.h
oprofile.h
page-flags.h [PATCH] VM: add page_state info to per-node meminfo 2005-09-05 00:05:49 -07:00
pagemap.h
pagevec.h
param.h
parport_pc.h
parport.h
parser.h
patchkey.h
pci_ids.h [PATCH] net: add driver for the NIC on Cell Blades 2005-09-06 22:17:49 -04:00
pci_regs.h [PATCH] PCI: restore BAR values after D3hot->D0 for devices that need it 2005-09-08 14:57:24 -07:00
pci-acpi.h
pci.h [PATCH] PCI: restore BAR values after D3hot->D0 for devices that need it 2005-09-08 14:57:24 -07:00
pcieport_if.h
percpu_counter.h
percpu.h
personality.h
pfkeyv2.h
pg.h
phonedev.h
phy.h
pid.h
pipe_fs_i.h [PATCH] remove pipe definitions 2005-09-07 16:57:24 -07:00
pkt_cls.h
pkt_sched.h
pktcdvd.h
platform.h
pm.h [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
pmu.h
pnp.h [PATCH] PNP: make pnp_dbg conditional directly on CONFIG_PNP_DEBUG 2005-09-07 16:57:25 -07:00
pnpbios.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix_types.h
posix-timers.h
ppdev.h
ppp_channel.h
ppp_defs.h
ppp-comp.h
prctl.h
preempt.h
prefetch.h
prio_tree.h
proc_fs.h
profile.h
ps2esdi.h
ptrace.h [PATCH] remove duplicated code from proc and ptrace 2005-09-07 16:57:43 -07:00
qic117.h
qnx4_fs.h
qnxtypes.h
quota.h
quotaio_v1.h
quotaio_v2.h
quotaops.h
radeonfb.h
radix-tree.h
raid_class.h [SCSI] embryonic RAID class 2005-08-30 22:48:51 -05:00
ramfs.h
random.h
raw.h
rbtree.h
rcupdate.h
reboot_fixups.h
reboot.h
reiserfs_acl.h
reiserfs_fs_i.h
reiserfs_fs_sb.h
reiserfs_fs.h
reiserfs_xattr.h
relayfs_fs.h [PATCH] relayfs 2005-09-07 16:57:18 -07:00
resource.h
rmap.h
romfs_fs.h
root_dev.h
rose.h
route.h
rslib.h
rtc.h
rtnetlink.h
rwsem-spinlock.h
rwsem.h
sc26198.h
scatterlist.h
scc.h
sched.h [PATCH] cpusets: Move the ia64 domain setup code to the generic code 2005-09-07 16:57:40 -07:00
sctp.h
scx200_gpio.h
scx200.h
sdla_asy.h
sdla_chdlc.h
sdla_fr.h
sdla_ppp.h
sdla_x25.h
sdla.h
sdladrv.h
sdlapci.h
sdlasfm.h
seccomp.h
securebits.h
security.h
selection.h
selinux_netlink.h
sem.h [PATCH] ipc: convert /proc/sysvipc/* to generic seq_file interface 2005-09-07 16:57:26 -07:00
seq_file.h
seqlock.h
serial167.h
serial_8250.h [SERIAL] Move serial8250_*_port prototypes to linux/serial_8250.h 2005-09-01 15:56:26 +01:00
serial_core.h [SERIAL]: Avoid 'statement with no effect' warnings. 2005-09-06 13:57:08 -07:00
serial_reg.h
serial.h [ARM] 2866/1: add i.MX set_mctrl / get_mctrl functions 2005-08-31 21:48:47 +01:00
serialP.h
serio.h
shm.h
shmem_fs.h
signal.h
skbuff.h [NET]: skb_get/set_timestamp use const 2005-09-06 15:48:03 -07:00
slab.h [PATCH] introduce and use kzalloc 2005-09-07 16:57:45 -07:00
smb_fs_i.h
smb_fs_sb.h
smb_fs.h
smb_mount.h
smb.h
smbno.h
smp_lock.h
smp.h
snmp.h
socket.h
sockios.h
som.h
sonet.h
sonypi.h [PATCH] sonypi SPIC initialisation fix 2005-09-07 16:57:24 -07:00
sort.h
sound.h
soundcard.h
spinlock.h
stallion.h
stat.h
statfs.h
stddef.h
stop_machine.h
string.h
stringify.h
superhyway.h
suspend.h
swap.h [PATCH] swap: swap_lock replace list+device 2005-09-05 00:05:42 -07:00
swapops.h [PATCH] comment typo fix 2005-09-05 00:05:45 -07:00
synclink.h
sys.h
syscalls.h
sysctl.h [PATCH] ipmi poweroff: fix chassis control 2005-09-07 16:57:49 -07:00
sysdev.h
sysfs.h
sysrq.h
sysv_fs.h
tcp.h
telephony.h
termios.h
textsearch_fsm.h
textsearch.h
thread_info.h
threads.h
ticable.h
time.h [PATCH] Delete unused do_nanosleep declaration 2005-09-07 16:57:30 -07:00
timer.h
times.h
timex.h [PATCH] NTP: ntp-helper functions 2005-09-07 16:57:34 -07:00
tiocl.h
topology.h [PATCH] cpusets: Move the ia64 domain setup code to the generic code 2005-09-07 16:57:40 -07:00
toshiba.h
transport_class.h
trdevice.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty.h
types.h
udf_fs_i.h
udf_fs_sb.h
udf_fs.h
udp.h
ufs_fs_i.h
ufs_fs_sb.h
ufs_fs.h
uinput.h
uio.h
ultrasound.h
umem.h
un.h
unistd.h
usb_cdc.h
usb_ch9.h
usb_gadget.h
usb_gadgetfs.h
usb_input.h
usb_isp116x.h
usb_otg.h
usb_sl811.h
usb.h
usbdevice_fs.h
user.h
utime.h
uts.h
utsname.h
vermagic.h
vfs.h
via.h
video_decoder.h
video_encoder.h
videodev2.h
videodev.h
videotext.h
vmalloc.h [PATCH] arm: allow for arch-specific IOREMAP_MAX_ORDER 2005-09-05 00:05:46 -07:00
vt_buffer.h
vt_kern.h
vt.h
wait.h
wanpipe.h
wanrouter.h
watchdog.h
wavefront.h
wireless.h [wireless] build fixes after merging WE-19 2005-09-07 00:27:54 -04:00
workqueue.h
writeback.h
x25.h
xattr.h
xfrm.h
yam.h
zconf.h
zftape.h
zlib.h
zorro_ids.h
zorro.h
zutil.h