提交 a3b93121 编写于 作者: J Joerg Roedel

iommu/amd: Check for the right TLP prefix bit

Unfortunatly the PRI spec changed and moved the
TLP-prefix-required bit to a different location. This patch
makes the necessary change in the AMD IOMMU driver.
Regressions are not expected because all hardware
implementing the PRI capability sets this bit to zero
anyway.

Cc: stable@vger.kernel.org # v3.3
Signed-off-by: NJoerg Roedel <joerg.roedel@amd.com>
上级 00341028
...@@ -2035,20 +2035,20 @@ static int pdev_iommuv2_enable(struct pci_dev *pdev) ...@@ -2035,20 +2035,20 @@ static int pdev_iommuv2_enable(struct pci_dev *pdev)
} }
/* FIXME: Move this to PCI code */ /* FIXME: Move this to PCI code */
#define PCI_PRI_TLP_OFF (1 << 2) #define PCI_PRI_TLP_OFF (1 << 15)
bool pci_pri_tlp_required(struct pci_dev *pdev) bool pci_pri_tlp_required(struct pci_dev *pdev)
{ {
u16 control; u16 status;
int pos; int pos;
pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_PRI); pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_PRI);
if (!pos) if (!pos)
return false; return false;
pci_read_config_word(pdev, pos + PCI_PRI_CTRL, &control); pci_read_config_word(pdev, pos + PCI_PRI_STATUS, &status);
return (control & PCI_PRI_TLP_OFF) ? true : false; return (status & PCI_PRI_TLP_OFF) ? true : false;
} }
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册