diff --git a/hypervisor/arch/x86/assign.c b/hypervisor/arch/x86/assign.c index 917723c85..9124edb3b 100644 --- a/hypervisor/arch/x86/assign.c +++ b/hypervisor/arch/x86/assign.c @@ -160,11 +160,11 @@ ptdev_build_physical_rte(struct vm *vm, */ static struct ptdev_remapping_info * add_msix_remapping(struct vm *vm, uint16_t virt_bdf, uint16_t phys_bdf, - uint32_t msix_entry_index) + uint32_t entry_nr) { struct ptdev_remapping_info *entry; - DEFINE_MSI_SID(phys_sid, phys_bdf, msix_entry_index); - DEFINE_MSI_SID(virt_sid, virt_bdf, msix_entry_index); + DEFINE_MSI_SID(phys_sid, phys_bdf, entry_nr); + DEFINE_MSI_SID(virt_sid, virt_bdf, entry_nr); spinlock_obtain(&ptdev_lock); entry = ptdev_lookup_entry_by_sid(PTDEV_INTR_MSI, &phys_sid, NULL); @@ -194,7 +194,7 @@ add_msix_remapping(struct vm *vm, uint16_t virt_bdf, uint16_t phys_bdf, entry->vm->vm_id, entry->virt_sid.msi_id.bdf, vm->vm_id, virt_bdf); ASSERT(false, "msix entry pbdf%x idx%d already in vm%d", - phys_bdf, msix_entry_index, entry->vm->vm_id); + phys_bdf, entry_nr, entry->vm->vm_id); spinlock_release(&ptdev_lock); return NULL; @@ -207,17 +207,17 @@ add_msix_remapping(struct vm *vm, uint16_t virt_bdf, uint16_t phys_bdf, dev_dbg(ACRN_DBG_IRQ, "VM%d MSIX add vector mapping vbdf%x:pbdf%x idx=%d", - entry->vm->vm_id, virt_bdf, phys_bdf, msix_entry_index); + entry->vm->vm_id, virt_bdf, phys_bdf, entry_nr); return entry; } -/* deactive & remove mapping entry of vbdf:msix_entry_index for vm */ +/* deactive & remove mapping entry of vbdf:entry_nr for vm */ static void -remove_msix_remapping(struct vm *vm, uint16_t virt_bdf, uint32_t msix_entry_index) +remove_msix_remapping(struct vm *vm, uint16_t virt_bdf, uint32_t entry_nr) { struct ptdev_remapping_info *entry; - DEFINE_MSI_SID(virt_sid, virt_bdf, msix_entry_index); + DEFINE_MSI_SID(virt_sid, virt_bdf, entry_nr); spinlock_obtain(&ptdev_lock); entry = ptdev_lookup_entry_by_sid(PTDEV_INTR_MSI, &virt_sid, vm); @@ -233,7 +233,7 @@ remove_msix_remapping(struct vm *vm, uint16_t virt_bdf, uint32_t msix_entry_inde dev_dbg(ACRN_DBG_IRQ, "VM%d MSIX remove vector mapping vbdf-pbdf:0x%x-0x%x idx=%d", entry->vm->vm_id, virt_bdf, - entry->phys_sid.msi_id.bdf, msix_entry_index); + entry->phys_sid.msi_id.bdf, entry_nr); release_entry(entry); @@ -477,17 +477,17 @@ void ptdev_intx_ack(struct vm *vm, uint8_t virt_pin, /* Main entry for PCI device assignment with MSI and MSI-X * MSI can up to 8 vectors and MSI-X can up to 1024 Vectors - * We use msix_entry_index to indicate coming vectors - * msix_entry_index = 0 means first vector - * user must provide bdf and msix_entry_index + * We use entry_nr to indicate coming vectors + * entry_nr = 0 means first vector + * user must provide bdf and entry_nr * * This function is called by SOS pci MSI config routine through hcall */ int ptdev_msix_remap(struct vm *vm, uint16_t virt_bdf, - struct ptdev_msi_info *info) + uint16_t entry_nr, struct ptdev_msi_info *info) { struct ptdev_remapping_info *entry; - DEFINE_MSI_SID(virt_sid, virt_bdf, info->msix_entry_index); + DEFINE_MSI_SID(virt_sid, virt_bdf, entry_nr); /* * Device Model should pre-hold the mapping entries by calling @@ -502,8 +502,8 @@ int ptdev_msix_remap(struct vm *vm, uint16_t virt_bdf, if (entry == NULL) { /* VM0 we add mapping dynamically */ if (is_vm0(vm)) { - entry = add_msix_remapping(vm, virt_bdf, virt_bdf, - info->msix_entry_index); + entry = add_msix_remapping(vm, + virt_bdf, virt_bdf, entry_nr); if (entry == NULL) { pr_err("dev-assign: msi entry exist in others"); return -ENODEV; @@ -532,10 +532,8 @@ int ptdev_msix_remap(struct vm *vm, uint16_t virt_bdf, dev_dbg(ACRN_DBG_IRQ, "PCI %x:%x.%x MSI VR[%d] 0x%x->0x%x assigned to vm%d", - (virt_bdf >> 8) & 0xFFU, - (virt_bdf >> 3) & 0x1FU, - (virt_bdf) & 0x7U, - info->msix_entry_index, + (virt_bdf >> 8) & 0xFFU, (virt_bdf >> 3) & 0x1FU, + (virt_bdf) & 0x7U, entry_nr, entry->msi.virt_vector, entry->msi.phys_vector, entry->vm->vm_id); diff --git a/hypervisor/common/hypercall.c b/hypervisor/common/hypercall.c index fcb006198..a78e8170b 100644 --- a/hypervisor/common/hypercall.c +++ b/hypervisor/common/hypercall.c @@ -623,13 +623,12 @@ int32_t hcall_remap_pci_msix(struct vm *vm, uint16_t vmid, uint64_t param) ret = -1; } else { info.msix = remap.msix; - info.msix_entry_index = remap.msix_entry_index; info.vmsi_ctl = remap.msi_ctl; info.vmsi_addr = remap.msi_addr; info.vmsi_data = remap.msi_data; ret = ptdev_msix_remap(target_vm, - remap.virt_bdf, &info); + remap.virt_bdf, remap.msix_entry_index, &info); remap.msi_data = info.pmsi_data; remap.msi_addr = info.pmsi_addr; diff --git a/hypervisor/include/arch/x86/assign.h b/hypervisor/include/arch/x86/assign.h index a72738da8..c20f45713 100644 --- a/hypervisor/include/arch/x86/assign.h +++ b/hypervisor/include/arch/x86/assign.h @@ -12,7 +12,7 @@ void ptdev_intx_ack(struct vm *vm, uint8_t virt_pin, enum ptdev_vpin_source vpin_src); int ptdev_msix_remap(struct vm *vm, uint16_t virt_bdf, - struct ptdev_msi_info *info); + uint16_t entry_nr, struct ptdev_msi_info *info); int ptdev_intx_pin_remap(struct vm *vm, uint8_t virt_pin, enum ptdev_vpin_source vpin_src); int ptdev_add_intx_remapping(struct vm *vm, __unused uint16_t virt_bdf, diff --git a/hypervisor/include/common/ptdev.h b/hypervisor/include/common/ptdev.h index a429ca6fc..4594a31bc 100644 --- a/hypervisor/include/common/ptdev.h +++ b/hypervisor/include/common/ptdev.h @@ -44,7 +44,6 @@ struct ptdev_msi_info { uint32_t pmsi_addr; /* phys msi_addr */ uint32_t pmsi_data; /* phys msi_data */ int msix; /* 0-MSI, 1-MSIX */ - uint32_t msix_entry_index; /* MSI: 0, MSIX: index of vector table*/ uint32_t virt_vector; uint32_t phys_vector; };