mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-16 14:28:56 +00:00
hv: ptirq: associate an irte with ptirq_remapping_info entry
For a ptirq_remapping_info entry, when build IRTE: - If the caller provides a valid IRTE, use the IRET - If the caller doesn't provide a valid IRTE, allocate a IRET when the entry doesn't have a valid IRTE, in this case, the IRET will be freed when free the entry. Tracked-On:#4831 Signed-off-by: Binbin Wu <binbin.wu@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
@@ -31,6 +31,7 @@
|
||||
#include <ptdev.h>
|
||||
#include <assign.h>
|
||||
#include <vpci.h>
|
||||
#include <vtd.h>
|
||||
#include "vpci_priv.h"
|
||||
|
||||
|
||||
@@ -78,7 +79,7 @@ static void remap_vmsi(const struct pci_vdev *vdev)
|
||||
info.addr.full = (uint64_t)vmsi_addrlo | ((uint64_t)vmsi_addrhi << 32U);
|
||||
info.data.full = vmsi_msgdata;
|
||||
|
||||
if (ptirq_prepare_msix_remap(vm, vdev->bdf.value, pbdf.value, 0U, &info) == 0) {
|
||||
if (ptirq_prepare_msix_remap(vm, vdev->bdf.value, pbdf.value, 0U, &info, INVALID_IRTE_ID) == 0) {
|
||||
pci_pdev_write_cfg(pbdf, capoff + PCIR_MSI_ADDR, 0x4U, (uint32_t)info.addr.full);
|
||||
if (vdev->msi.is_64bit) {
|
||||
pci_pdev_write_cfg(pbdf, capoff + PCIR_MSI_ADDR_HIGH, 0x4U,
|
||||
|
@@ -36,6 +36,7 @@
|
||||
#include <ept.h>
|
||||
#include <mmu.h>
|
||||
#include <logmsg.h>
|
||||
#include <vtd.h>
|
||||
#include "vpci_priv.h"
|
||||
|
||||
/**
|
||||
@@ -87,7 +88,8 @@ static void remap_one_vmsix_entry(const struct pci_vdev *vdev, uint32_t index)
|
||||
info.addr.full = vdev->msix.table_entries[index].addr;
|
||||
info.data.full = vdev->msix.table_entries[index].data;
|
||||
|
||||
ret = ptirq_prepare_msix_remap(vpci2vm(vdev->vpci), vdev->bdf.value, vdev->pdev->bdf.value, (uint16_t)index, &info);
|
||||
ret = ptirq_prepare_msix_remap(vpci2vm(vdev->vpci), vdev->bdf.value, vdev->pdev->bdf.value,
|
||||
(uint16_t)index, &info, INVALID_IRTE_ID);
|
||||
if (ret == 0) {
|
||||
/* Write the table entry to the physical structure */
|
||||
pentry = get_msix_table_entry(vdev, index);
|
||||
|
Reference in New Issue
Block a user