diff --git a/drivers/virtualization/virt_ivshmem.c b/drivers/virtualization/virt_ivshmem.c index 01a986e0bc1..f7141999c63 100644 --- a/drivers/virtualization/virt_ivshmem.c +++ b/drivers/virtualization/virt_ivshmem.c @@ -103,43 +103,6 @@ static const struct ivshmem_reg no_reg; #endif /* CONFIG_IVSHMEM_DOORBELL */ -static bool ivshmem_check_on_bdf(pcie_bdf_t bdf) -{ - uint32_t data; - - data = pcie_conf_read(bdf, PCIE_CONF_ID); - if ((data != PCIE_ID_NONE) && - (PCIE_ID_TO_VEND(data) == IVSHMEM_VENDOR_ID) && - (PCIE_ID_TO_DEV(data) == IVSHMEM_DEVICE_ID)) { - return true; - } - - return false; -} - -/* Ivshmem's BDF is not a static value that we could get from DTS, - * since the same image could run on qemu or ACRN which could set - * a different one. So instead, let's find it at runtime. - */ -static pcie_bdf_t ivshmem_bdf_lookup(void) -{ - int bus, dev, func; - - for (bus = 0; bus <= MAX_BUS; bus++) { - for (dev = 0; dev <= MAX_DEV; ++dev) { - for (func = 0; func <= MAX_FUNC; ++func) { - pcie_bdf_t bdf = PCIE_BDF(bus, dev, func); - - if (ivshmem_check_on_bdf(bdf)) { - return bdf; - } - } - } - } - - return 0; -} - static bool ivshmem_configure(const struct device *dev) { struct ivshmem *data = dev->data; @@ -261,8 +224,9 @@ static int ivshmem_init(const struct device *dev) { struct ivshmem *data = dev->data; - data->bdf = ivshmem_bdf_lookup(); - if (data->bdf == 0) { + data->bdf = pcie_bdf_lookup(PCIE_ID(IVSHMEM_VENDOR_ID, + IVSHMEM_DEVICE_ID)); + if (data->bdf == PCIE_BDF_NONE) { LOG_WRN("ivshmem device not found"); return -ENOTSUP; } diff --git a/drivers/virtualization/virt_ivshmem.h b/drivers/virtualization/virt_ivshmem.h index 4323cf3ac66..4298e83af6f 100644 --- a/drivers/virtualization/virt_ivshmem.h +++ b/drivers/virtualization/virt_ivshmem.h @@ -16,10 +16,6 @@ #define IVSHMEM_PCIE_REG_BAR_IDX 0 #define IVSHMEM_PCIE_SHMEM_BAR_IDX 2 -#define MAX_BUS (0xFFFFFFFF & PCIE_BDF_BUS_MASK) -#define MAX_DEV (0xFFFFFFFF & PCIE_BDF_DEV_MASK) -#define MAX_FUNC (0xFFFFFFFF & PCIE_BDF_FUNC_MASK) - struct ivshmem_param { const struct device *dev; struct k_poll_signal *signal;