PCI/ATS: Move pci_prg_resp_pasid_required() to CONFIG_PCI_PRI
pci_prg_resp_pasid_required() returns the value of the "PRG Response PASID Required" bit from the PRI capability, but the interface was previously defined under #ifdef CONFIG_PCI_PASID. Move it from CONFIG_PCI_PASID to CONFIG_PCI_PRI so it's with the other PRI-related things. Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> Reviewed-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
fd872843ec
commit
8cbb8a9374
|
@ -280,6 +280,31 @@ int pci_reset_pri(struct pci_dev *pdev)
|
|||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_reset_pri);
|
||||
|
||||
/**
|
||||
* pci_prg_resp_pasid_required - Return PRG Response PASID Required bit
|
||||
* status.
|
||||
* @pdev: PCI device structure
|
||||
*
|
||||
* Returns 1 if PASID is required in PRG Response Message, 0 otherwise.
|
||||
*/
|
||||
int pci_prg_resp_pasid_required(struct pci_dev *pdev)
|
||||
{
|
||||
u16 status;
|
||||
int pos;
|
||||
|
||||
pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_PRI);
|
||||
if (!pos)
|
||||
return 0;
|
||||
|
||||
pci_read_config_word(pdev, pos + PCI_PRI_STATUS, &status);
|
||||
|
||||
if (status & PCI_PRI_STATUS_PASID)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_prg_resp_pasid_required);
|
||||
#endif /* CONFIG_PCI_PRI */
|
||||
|
||||
#ifdef CONFIG_PCI_PASID
|
||||
|
@ -395,36 +420,6 @@ int pci_pasid_features(struct pci_dev *pdev)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(pci_pasid_features);
|
||||
|
||||
/**
|
||||
* pci_prg_resp_pasid_required - Return PRG Response PASID Required bit
|
||||
* status.
|
||||
* @pdev: PCI device structure
|
||||
*
|
||||
* Returns 1 if PASID is required in PRG Response Message, 0 otherwise.
|
||||
*
|
||||
* Even though the PRG response PASID status is read from PRI Status
|
||||
* Register, since this API will mainly be used by PASID users, this
|
||||
* function is defined within #ifdef CONFIG_PCI_PASID instead of
|
||||
* CONFIG_PCI_PRI.
|
||||
*/
|
||||
int pci_prg_resp_pasid_required(struct pci_dev *pdev)
|
||||
{
|
||||
u16 status;
|
||||
int pos;
|
||||
|
||||
pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_PRI);
|
||||
if (!pos)
|
||||
return 0;
|
||||
|
||||
pci_read_config_word(pdev, pos + PCI_PRI_STATUS, &status);
|
||||
|
||||
if (status & PCI_PRI_STATUS_PASID)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_prg_resp_pasid_required);
|
||||
|
||||
#define PASID_NUMBER_SHIFT 8
|
||||
#define PASID_NUMBER_MASK (0x1f << PASID_NUMBER_SHIFT)
|
||||
/**
|
||||
|
|
|
@ -10,6 +10,7 @@ int pci_enable_pri(struct pci_dev *pdev, u32 reqs);
|
|||
void pci_disable_pri(struct pci_dev *pdev);
|
||||
void pci_restore_pri_state(struct pci_dev *pdev);
|
||||
int pci_reset_pri(struct pci_dev *pdev);
|
||||
int pci_prg_resp_pasid_required(struct pci_dev *pdev);
|
||||
|
||||
#else /* CONFIG_PCI_PRI */
|
||||
|
||||
|
@ -31,6 +32,10 @@ static inline int pci_reset_pri(struct pci_dev *pdev)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int pci_prg_resp_pasid_required(struct pci_dev *pdev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_PCI_PRI */
|
||||
|
||||
#ifdef CONFIG_PCI_PASID
|
||||
|
@ -40,7 +45,6 @@ void pci_disable_pasid(struct pci_dev *pdev);
|
|||
void pci_restore_pasid_state(struct pci_dev *pdev);
|
||||
int pci_pasid_features(struct pci_dev *pdev);
|
||||
int pci_max_pasids(struct pci_dev *pdev);
|
||||
int pci_prg_resp_pasid_required(struct pci_dev *pdev);
|
||||
|
||||
#else /* CONFIG_PCI_PASID */
|
||||
|
||||
|
@ -66,11 +70,6 @@ static inline int pci_max_pasids(struct pci_dev *pdev)
|
|||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int pci_prg_resp_pasid_required(struct pci_dev *pdev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_PCI_PASID */
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue