mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-07-06 00:13:38 -04:00
PCI: Disable Bus Master unconditionally in pci_device_shutdown()
Commitb566a22c23
("PCI: disable Bus Master on PCI device shutdown") used pci_disable_device(), but that doesn't disable Bus Mastering unconditionally; we allow nested enable/disable calls, and only the last disable call actually does anything. This uses pci_clear_master() to unconditionally clear the Bus Master bit. Matthew Garrett and Alan Cox said (see LKML link below) that clearing Bus Master for all PCI devices may lead to unpredictable consequences: some devices ignores this bit and continue DMA, some of them hang after that or crash the whole system. But we're already trying to clear Bus Master in general because ofb566a22c23
; this merely deals with the cases where drivers haven't shut down the device correctly. [bhelgaas: changelog] Link: https://lkml.org/lkml/2012/6/6/278 Signed-off-by: Konstantin Khlebnikov <khlebnikov@openvz.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
d1c3ed669a
commit
7897e60227
1 changed files with 1 additions and 1 deletions
|
@ -392,7 +392,7 @@ static void pci_device_shutdown(struct device *dev)
|
|||
* Turn off Bus Master bit on the device to tell it to not
|
||||
* continue to do DMA
|
||||
*/
|
||||
pci_disable_device(pci_dev);
|
||||
pci_clear_master(pci_dev);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue