diff --git a/hypervisor/dm/hw/pci.c b/hypervisor/dm/hw/pci.c index 7a37a9b82..f18f93398 100644 --- a/hypervisor/dm/hw/pci.c +++ b/hypervisor/dm/hw/pci.c @@ -44,14 +44,14 @@ static uint32_t pci_pdev_calc_address(union pci_bdf bdf, uint32_t offset) return addr; } -uint32_t pci_pdev_read_cfg(struct pci_pdev *pdev, uint32_t offset, uint32_t bytes) +uint32_t pci_pdev_read_cfg(union pci_bdf bdf, uint32_t offset, uint32_t bytes) { uint32_t addr; uint32_t val; spinlock_obtain(&pci_device_lock); - addr = pci_pdev_calc_address(pdev->bdf, offset); + addr = pci_pdev_calc_address(bdf, offset); /* Write address to ADDRESS register */ pio_write32(addr, PCI_CONFIG_ADDR); @@ -73,14 +73,13 @@ uint32_t pci_pdev_read_cfg(struct pci_pdev *pdev, uint32_t offset, uint32_t byte return val; } -void pci_pdev_write_cfg(struct pci_pdev *pdev, uint32_t offset, uint32_t bytes, - uint32_t val) +void pci_pdev_write_cfg(union pci_bdf bdf, uint32_t offset, uint32_t bytes, uint32_t val) { uint32_t addr; spinlock_obtain(&pci_device_lock); - addr = pci_pdev_calc_address(pdev->bdf, offset); + addr = pci_pdev_calc_address(bdf, offset); /* Write address to ADDRESS register */ pio_write32(addr, PCI_CONFIG_ADDR); diff --git a/hypervisor/dm/vpci/pci_priv.h b/hypervisor/dm/vpci/pci_priv.h index 330ccf76d..6b7cecef4 100644 --- a/hypervisor/dm/vpci/pci_priv.h +++ b/hypervisor/dm/vpci/pci_priv.h @@ -73,7 +73,5 @@ void pci_vdev_write_cfg(struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, void pci_vdev_cfg_handler(struct vpci *vpci, uint32_t in, union pci_bdf vbdf, uint32_t offset, uint32_t bytes, uint32_t *val); -uint32_t pci_pdev_read_cfg(struct pci_pdev *pdev, uint32_t offset, uint32_t bytes); -void pci_pdev_write_cfg(struct pci_pdev *pdev, uint32_t offset, uint32_t bytes, uint32_t val); #endif /* PCI_PRIV_H_ */ diff --git a/hypervisor/dm/vpci/pci_pt.c b/hypervisor/dm/vpci/pci_pt.c index d62812041..def6e9375 100644 --- a/hypervisor/dm/vpci/pci_pt.c +++ b/hypervisor/dm/vpci/pci_pt.c @@ -77,10 +77,10 @@ static int vdev_pt_init(struct pci_vdev *vdev) ret = assign_iommu_device(vm->iommu, vdev->pdev.bdf.bits.b, (uint8_t)(vdev->pdev.bdf.value & 0xFFU)); - pci_command = pci_pdev_read_cfg(&vdev->pdev, PCIR_COMMAND, 2U); + pci_command = pci_pdev_read_cfg(vdev->pdev.bdf, PCIR_COMMAND, 2U); /* Disable INTX */ pci_command |= 0x400U; - pci_pdev_write_cfg(&vdev->pdev, PCIR_COMMAND, 2U, pci_command); + pci_pdev_write_cfg(vdev->pdev.bdf, PCIR_COMMAND, 2U, pci_command); return ret; } @@ -109,7 +109,7 @@ static int vdev_pt_cfgread(struct pci_vdev *vdev, uint32_t offset, if (pci_bar_access(offset)) { *val = pci_vdev_read_cfg(vdev, offset, bytes); } else { - *val = pci_pdev_read_cfg(&vdev->pdev, offset, bytes); + *val = pci_pdev_read_cfg(vdev->pdev.bdf, offset, bytes); } return 0; @@ -188,7 +188,7 @@ static int vdev_pt_cfgwrite(struct pci_vdev *vdev, uint32_t offset, vdev_pt_cfgwrite_bar(vdev, offset, bytes, val); } else { /* Write directly to physical device's config space */ - pci_pdev_write_cfg(&vdev->pdev, offset, bytes, val); + pci_pdev_write_cfg(vdev->pdev.bdf, offset, bytes, val); } return 0; diff --git a/hypervisor/include/dm/pci.h b/hypervisor/include/dm/pci.h index 1e7c147eb..08b20382f 100644 --- a/hypervisor/include/dm/pci.h +++ b/hypervisor/include/dm/pci.h @@ -157,4 +157,7 @@ static inline bool pci_bar_access(uint32_t offset) } } +uint32_t pci_pdev_read_cfg(union pci_bdf bdf, uint32_t offset, uint32_t bytes); +void pci_pdev_write_cfg(union pci_bdf bdf, uint32_t offset, uint32_t bytes, uint32_t val); + #endif /* PCI_H_ */