mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-22 09:17:58 +00:00
HV: vpci: check if address is in VM BAR MMIO space
When guest doing BAR re-programming, we should check whether the base address of the BAR is valid.This patch does this check by: 1. whether the gpa is located in the responding MMIO window 2. whether the gpa is aligned with the BAR size Tracked-On: #6011 Signed-off-by: Tao Yuhong <yuhong.tao@intel.com> Reviewed-by: Eddie Dong <eddie.dong@intel.com> Reviewed-by: Li Fei <fei1.li@intel.com>
This commit is contained in:
@@ -26,6 +26,10 @@
|
||||
#define UOS_VIRT_PCI_MMCFG_BASE 0xE0000000UL
|
||||
#define UOS_VIRT_PCI_MMCFG_START_BUS 0x0U
|
||||
#define UOS_VIRT_PCI_MMCFG_END_BUS 0xFFU
|
||||
#define UOS_VIRT_PCI_MEMBASE32 0x80000000UL /* 2GB */
|
||||
#define UOS_VIRT_PCI_MEMLIMIT32 0xE0000000UL /* 3.5GB */
|
||||
#define UOS_VIRT_PCI_MEMBASE64 0x4000000000UL /* 256GB */
|
||||
#define UOS_VIRT_PCI_MEMLIMIT64 0x8000000000UL /* 512GB */
|
||||
|
||||
void build_vrsdp(struct acrn_vm *vm);
|
||||
|
||||
|
@@ -163,11 +163,19 @@ union pci_cfg_addr_reg {
|
||||
} bits;
|
||||
};
|
||||
|
||||
/* start address & end address of MMIO BAR */
|
||||
struct pci_mmio_res {
|
||||
uint64_t start;
|
||||
uint64_t end;
|
||||
};
|
||||
|
||||
struct acrn_vpci {
|
||||
spinlock_t lock;
|
||||
union pci_cfg_addr_reg addr;
|
||||
struct pci_mmcfg_region pci_mmcfg;
|
||||
uint32_t pci_vdev_cnt;
|
||||
struct pci_mmio_res res32; /* 32-bit mmio start/end address */
|
||||
struct pci_mmio_res res64; /* 64-bit mmio start/end address */
|
||||
struct pci_vdev pci_vdevs[CONFIG_MAX_PCI_DEV_NUM];
|
||||
struct hlist_head vdevs_hlist_heads [VDEV_LIST_HASHSIZE];
|
||||
};
|
||||
|
Reference in New Issue
Block a user