1
linux/drivers/pci
Ben Hutchings fcd097f31a PCI: MSI: Remove unsafe and unnecessary hardware access
During suspend on an SMP system, {read,write}_msi_msg_desc() may be
called to mask and unmask interrupts on a device that is already in a
reduced power state.  At this point memory-mapped registers including
MSI-X tables are not accessible, and config space may not be fully
functional either.

While a device is in a reduced power state its interrupts are
effectively masked and its MSI(-X) state will be restored when it is
brought back to D0.  Therefore these functions can simply read and
write msi_desc::msg for devices not in D0.

Further, read_msi_msg_desc() should only ever be used to update a
previously written message, so it can always read msi_desc::msg
and never needs to touch the hardware.

Tested-by: "Michael Chan" <mchan@broadcom.com>
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2010-07-30 09:29:34 -07:00
..
hotplug PCI hotplug: shpchp: Removed check for hotplug of display devices 2010-07-30 09:29:16 -07:00
pcie PCI: Default PCIe ASPM control to on and require !EMBEDDED to disable 2010-07-30 09:29:34 -07:00
.gitignore
access.c PCI: output FW warning in pci_read/write_vpd 2010-05-18 15:00:25 -07:00
bus.c PCI: check return value of pci_enable_device() when enabling bridges 2010-07-30 09:29:14 -07:00
dmar.c Merge git://git.infradead.org/iommu-2.6 2010-05-21 17:25:01 -07:00
hotplug-pci.c
hotplug.c
htirq.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
intel-iommu.c intel-iommu: Force-disable IOMMU for iGFX on broken Cantiga revisions. 2010-06-15 10:57:57 +01:00
intr_remapping.c Merge git://git.infradead.org/iommu-2.6 2010-05-21 17:25:01 -07:00
intr_remapping.h
ioapic.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
iov.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
iova.c
irq.c
Kconfig PCI: change PCI_MSI help text to recommend enabling 2010-05-11 12:01:10 -07:00
Makefile microblaze: Enable PCI, missing files 2010-03-11 14:04:27 +01:00
msi.c PCI: MSI: Remove unsafe and unnecessary hardware access 2010-07-30 09:29:34 -07:00
msi.h
pci-acpi.c Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-03-01 10:36:22 -08:00
pci-driver.c PCI: change device runtime PM settings for probe and remove 2010-07-30 09:29:09 -07:00
pci-stub.c
pci-sysfs.c PCI: pci-sysfs: remove casts from void* 2010-07-30 09:29:18 -07:00
pci.c virtio-pci: disable msi at startup 2010-06-23 22:49:07 +09:30
pci.h PCI: make bitfield unsigned 2010-05-11 10:07:20 +02:00
probe.c ACPI, APEI, PCIE AER, use general HEST table parsing in AER firmware_first setup 2010-05-19 22:40:14 -04:00
proc.c PCI: kernel oops on access to pci proc file while hot-removal 2010-07-30 09:29:33 -07:00
quirks.c PCI: disable MSI on VIA K8M800 2010-07-30 09:29:12 -07:00
remove.c
rom.c
search.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
setup-bus.c PCI hotplug: make sure child bridges are enabled at hotplug time 2010-07-30 09:29:16 -07:00
setup-irq.c
setup-res.c PCI: fall back to original BIOS BAR addresses 2010-07-16 11:39:48 -07:00
slot.c Revert "PCI: create function symlinks in /sys/bus/pci/slots/N/" 2010-06-11 13:08:37 -07:00
syscall.c
vpd.c pci: Add helper to search for VPD keywords 2010-02-28 00:43:33 -08:00