diff options
Diffstat (limited to 'drivers/pci/pci.c')
| -rw-r--r-- | drivers/pci/pci.c | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 7d85c04fbba2..225a6cd2e9ca 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -1067,8 +1067,15 @@ static void pci_std_enable_acs(struct pci_dev *dev, struct pci_acs *caps)  static void pci_enable_acs(struct pci_dev *dev)  {  	struct pci_acs caps; +	bool enable_acs = false;  	int pos; +	/* If an iommu is present we start with kernel default caps */ +	if (pci_acs_enable) { +		if (pci_dev_specific_enable_acs(dev)) +			enable_acs = true; +	} +  	pos = dev->acs_cap;  	if (!pos)  		return; @@ -1077,11 +1084,8 @@ static void pci_enable_acs(struct pci_dev *dev)  	pci_read_config_word(dev, pos + PCI_ACS_CTRL, &caps.ctrl);  	caps.fw_ctrl = caps.ctrl; -	/* If an iommu is present we start with kernel default caps */ -	if (pci_acs_enable) { -		if (pci_dev_specific_enable_acs(dev)) -			pci_std_enable_acs(dev, &caps); -	} +	if (enable_acs) +		pci_std_enable_acs(dev, &caps);  	/*  	 * Always apply caps from the command line, even if there is no iommu. | 
