mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-19 20:22:46 +00:00
hv: ivshmem: BAR0 size should be 256 Bytes
ivshmem spec says that the size of BAR0 is 256 bytes. Windows ivshmem driver will check the size of BAR0. It will refuse to load the ivshmem driver if BAR0 size is not 256. For post-launched VM hv land ivshmem BARs are allocated by device model. For pre-launched VM hv land ivshmem BARs are allocated by acrn-config tool. Both device model and acrn-config tool should make sure that the BAR base addr are aligned to 4K at least. Tracked-On: #5717 Signed-off-by: Jian Jun Chen <jian.jun.chen@intel.com> Reviewed-by: Fei Li <fei1.li@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
parent
fad6a94030
commit
aae7a89480
@ -26,7 +26,7 @@
|
||||
#define IVSHMEM_MSIX_BAR 1U
|
||||
#define IVSHMEM_SHM_BAR 2U
|
||||
|
||||
#define IVSHMEM_MMIO_BAR_SIZE 4096UL
|
||||
#define IVSHMEM_MMIO_BAR_SIZE 256UL
|
||||
|
||||
/* The device-specific registers of ivshmem device */
|
||||
#define IVSHMEM_IRQ_MASK_REG 0x0U
|
||||
@ -261,7 +261,7 @@ static void ivshmem_vbar_map(struct pci_vdev *vdev, uint32_t idx)
|
||||
(void)memset(&ivs_dev->mmio, 0U, sizeof(ivs_dev->mmio));
|
||||
register_mmio_emulation_handler(vm, ivshmem_mmio_handler, vbar->base_gpa,
|
||||
(vbar->base_gpa + vbar->size), vdev, false);
|
||||
ept_del_mr(vm, (uint64_t *)vm->arch_vm.nworld_eptp, vbar->base_gpa, vbar->size);
|
||||
ept_del_mr(vm, (uint64_t *)vm->arch_vm.nworld_eptp, vbar->base_gpa, round_page_up(vbar->size));
|
||||
} else if ((idx == IVSHMEM_MSIX_BAR) && (vbar->base_gpa != 0UL)) {
|
||||
register_mmio_emulation_handler(vm, vmsix_handle_table_mmio_access, vbar->base_gpa,
|
||||
(vbar->base_gpa + vbar->size), vdev, false);
|
||||
|
Loading…
Reference in New Issue
Block a user