dm: passthru: pass pbdf when reset msi/msix interrupt
Physcial bdf is needed in hypervisor to find the right pci dev. Tracked-On: #2788 Signed-off-by: Binbin Wu <binbin.wu@intel.com> Reviewed-by: Jason Chen CJ <jason.cj.chen@intel.com>
This commit is contained in:
parent
cd360de4aa
commit
7669a76f95
|
@ -541,7 +541,7 @@ vm_set_ptdev_msix_info(struct vmctx *ctx, struct ic_ptdev_irq *ptirq)
|
|||
}
|
||||
|
||||
int
|
||||
vm_reset_ptdev_msix_info(struct vmctx *ctx, uint16_t virt_bdf,
|
||||
vm_reset_ptdev_msix_info(struct vmctx *ctx, uint16_t virt_bdf, uint16_t phys_bdf,
|
||||
int vector_count)
|
||||
{
|
||||
struct ic_ptdev_irq ptirq;
|
||||
|
@ -549,6 +549,7 @@ vm_reset_ptdev_msix_info(struct vmctx *ctx, uint16_t virt_bdf,
|
|||
bzero(&ptirq, sizeof(ptirq));
|
||||
ptirq.type = IRQ_MSIX;
|
||||
ptirq.virt_bdf = virt_bdf;
|
||||
ptirq.phys_bdf = phys_bdf;
|
||||
ptirq.msix.vector_cnt = vector_count;
|
||||
|
||||
return ioctl(ctx->fd, IC_RESET_PTDEV_INTR_INFO, &ptirq);
|
||||
|
|
|
@ -508,7 +508,7 @@ deinit_msix_table(struct vmctx *ctx, struct passthru_dev *ptdev)
|
|||
if (ptdev->msix.ptirq_allocated) {
|
||||
printf("ptdev reset msix: 0x%x-%x, vector_cnt=%d.\n",
|
||||
virt_bdf, ptdev->phys_bdf, vector_cnt);
|
||||
vm_reset_ptdev_msix_info(ctx, virt_bdf, vector_cnt);
|
||||
vm_reset_ptdev_msix_info(ctx, virt_bdf, ptdev->phys_bdf, vector_cnt);
|
||||
ptdev->msix.ptirq_allocated = false;
|
||||
}
|
||||
|
||||
|
@ -909,8 +909,7 @@ passthru_deinit(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
|
|||
deinit_msix_table(ctx, ptdev);
|
||||
else if(ptdev->msi.capoff != 0) {
|
||||
/* Currently only support 1 vector */
|
||||
printf("ptdev reset msi: 0x%x-%x\n", virt_bdf, ptdev->phys_bdf);
|
||||
vm_reset_ptdev_msix_info(ctx, virt_bdf, 1);
|
||||
vm_reset_ptdev_msix_info(ctx, virt_bdf, ptdev->phys_bdf, 1);
|
||||
}
|
||||
|
||||
printf("vm_reset_ptdev_intx:0x%x-%x, ioapic virpin=%d.\n",
|
||||
|
|
|
@ -130,7 +130,7 @@ int vm_unmap_ptdev_mmio(struct vmctx *ctx, int bus, int slot, int func,
|
|||
int vm_setup_ptdev_msi(struct vmctx *ctx,
|
||||
struct acrn_vm_pci_msix_remap *msi_remap);
|
||||
int vm_set_ptdev_msix_info(struct vmctx *ctx, struct ic_ptdev_irq *ptirq);
|
||||
int vm_reset_ptdev_msix_info(struct vmctx *ctx, uint16_t virt_bdf,
|
||||
int vm_reset_ptdev_msix_info(struct vmctx *ctx, uint16_t virt_bdf, uint16_t phys_bdf,
|
||||
int vector_count);
|
||||
int vm_set_ptdev_intx_info(struct vmctx *ctx, uint16_t virt_bdf,
|
||||
uint16_t phys_bdf, int virt_pin, int phys_pin, bool pic_pin);
|
||||
|
|
Loading…
Reference in New Issue