diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2010-06-17 20:16:36 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-09-20 13:36:09 -0700 |
commit | fa4dc90c63ad8bd633a082f848c937d0d967d162 (patch) | |
tree | e354f5013107da90f289b31f2b5ed30dba208242 /include/linux/msi.h | |
parent | aa7fe1f4b6b1380162c10676676abdc29fdb4461 (diff) |
PCI: MSI: Remove unsafe and unnecessary hardware access
commit fcd097f31a6ee207cc0c3da9cccd2a86d4334785 upstream.
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux/msi.h')
0 files changed, 0 insertions, 0 deletions