PCI: Enable is not exposed as a PASID capability
The PASID ECN indicates bit 0 is reserved in the capability register. Switch pci_enable_pasid() to error if PASID is already enabled and don't expose enable as a feature in pci_pasid_features(). Reviewed-by: Joerg Roedel <joerg.roedel@amd.com> Tested-by: Joerg Roedel <joerg.roedel@amd.com> Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
parent
a776c491ca
commit
60fe823837
|
@ -348,7 +348,7 @@ int pci_enable_pasid(struct pci_dev *pdev, int features)
|
||||||
pci_read_config_word(pdev, pos + PCI_PASID_CONTROL_OFF, &control);
|
pci_read_config_word(pdev, pos + PCI_PASID_CONTROL_OFF, &control);
|
||||||
pci_read_config_word(pdev, pos + PCI_PASID_CAP_OFF, &supported);
|
pci_read_config_word(pdev, pos + PCI_PASID_CAP_OFF, &supported);
|
||||||
|
|
||||||
if (!(supported & PCI_PASID_ENABLE))
|
if (control & PCI_PASID_ENABLE)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
supported &= PCI_PASID_EXEC | PCI_PASID_PRIV;
|
supported &= PCI_PASID_EXEC | PCI_PASID_PRIV;
|
||||||
|
@ -390,7 +390,6 @@ EXPORT_SYMBOL_GPL(pci_disable_pasid);
|
||||||
* Returns a negative value when no PASI capability is present.
|
* Returns a negative value when no PASI capability is present.
|
||||||
* Otherwise is returns a bitmask with supported features. Current
|
* Otherwise is returns a bitmask with supported features. Current
|
||||||
* features reported are:
|
* features reported are:
|
||||||
* PCI_PASID_ENABLE - PASID capability can be enabled
|
|
||||||
* PCI_PASID_EXEC - Execute permission supported
|
* PCI_PASID_EXEC - Execute permission supported
|
||||||
* PCI_PASID_PRIV - Priviledged mode supported
|
* PCI_PASID_PRIV - Priviledged mode supported
|
||||||
*/
|
*/
|
||||||
|
@ -405,7 +404,7 @@ int pci_pasid_features(struct pci_dev *pdev)
|
||||||
|
|
||||||
pci_read_config_word(pdev, pos + PCI_PASID_CAP_OFF, &supported);
|
pci_read_config_word(pdev, pos + PCI_PASID_CAP_OFF, &supported);
|
||||||
|
|
||||||
supported &= PCI_PASID_ENABLE | PCI_PASID_EXEC | PCI_PASID_PRIV;
|
supported &= PCI_PASID_EXEC | PCI_PASID_PRIV;
|
||||||
|
|
||||||
return supported;
|
return supported;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue