diff --git a/xen/arch/x86/pci.c b/xen/arch/x86/pci.c index 1aefeab663..4c27987551 100644 --- a/xen/arch/x86/pci.c +++ b/xen/arch/x86/pci.c @@ -76,8 +76,9 @@ int pci_conf_write_intercept(unsigned int seg, unsigned int bdf, unsigned int reg, unsigned int size, uint32_t *data) { + pci_sbdf_t sbdf = PCI_SBDF(seg, bdf); struct pci_dev *pdev; - int rc = xsm_pci_config_permission(XSM_HOOK, current->domain, bdf, + int rc = xsm_pci_config_permission(XSM_HOOK, current->domain, sbdf.sbdf, reg, reg + size - 1, true); if ( rc < 0 ) @@ -93,7 +94,7 @@ int pci_conf_write_intercept(unsigned int seg, unsigned int bdf, pcidevs_lock(); - pdev = pci_get_pdev(NULL, PCI_SBDF(seg, bdf)); + pdev = pci_get_pdev(NULL, sbdf); if ( pdev ) rc = pci_msi_conf_write_intercept(pdev, reg, size, data);