PCI: Enable is not exposed as a PASID capability
authorAlex Williamson <alex.williamson@redhat.com>
Fri, 11 Nov 2011 17:06:56 +0000 (10:06 -0700)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Mon, 5 Dec 2011 18:22:03 +0000 (10:22 -0800)
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>
drivers/pci/ats.c

index 831e192..8e95a12 100644 (file)
@@ -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_CAP_OFF,     &supported);
 
-       if (!(supported & PCI_PASID_ENABLE))
+       if (control & PCI_PASID_ENABLE)
                return -EINVAL;
 
        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.
  * Otherwise is returns a bitmask with supported features. Current
  * features reported are:
- * PCI_PASID_ENABLE - PASID capability can be enabled
  * PCI_PASID_EXEC - Execute permission 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);
 
-       supported &= PCI_PASID_ENABLE | PCI_PASID_EXEC | PCI_PASID_PRIV;
+       supported &= PCI_PASID_EXEC | PCI_PASID_PRIV;
 
        return supported;
 }