Updated from Linux LTS 3.10.24 to 3.10.25
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/kexec.h>
|
||||
#include "pci.h"
|
||||
|
||||
struct pci_dynid {
|
||||
@@ -388,12 +389,17 @@ static void pci_device_shutdown(struct device *dev)
|
||||
pci_msi_shutdown(pci_dev);
|
||||
pci_msix_shutdown(pci_dev);
|
||||
|
||||
#ifdef CONFIG_KEXEC
|
||||
/*
|
||||
* Turn off Bus Master bit on the device to tell it to not
|
||||
* continue to do DMA. Don't touch devices in D3cold or unknown states.
|
||||
* If this is a kexec reboot, turn off Bus Master bit on the
|
||||
* device to tell it to not continue to do DMA. Don't touch
|
||||
* devices in D3cold or unknown states.
|
||||
* If it is not a kexec reboot, firmware will hit the PCI
|
||||
* devices with big hammer and stop their DMA any way.
|
||||
*/
|
||||
if (pci_dev->current_state <= PCI_D3hot)
|
||||
if (kexec_in_progress && (pci_dev->current_state <= PCI_D3hot))
|
||||
pci_clear_master(pci_dev);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
Reference in New Issue
Block a user