From 0e9cc7c0a60ace8baeab6e32f49770afbeec6f5d Mon Sep 17 00:00:00 2001 From: Kunkun Jiang Date: Fri, 18 Nov 2022 15:22:38 +0800 Subject: [PATCH 19/36] Revert "vfio/pci: Set up the DMA FAULT region" This reverts commit e701d0fef4fbb7935d6aa7d22d82eb2dcfee2431. Signed-off-by: Kunkun Jiang --- hw/vfio/pci.c | 64 --------------------------------------------------- hw/vfio/pci.h | 1 - 2 files changed, 65 deletions(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 76bc9d3506..37a70932c6 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2638,67 +2638,11 @@ int vfio_populate_vga(VFIOPCIDevice *vdev, Error **errp) return 0; } -static void vfio_init_fault_regions(VFIOPCIDevice *vdev, Error **errp) -{ - struct vfio_region_info *fault_region_info = NULL; - struct vfio_region_info_cap_fault *cap_fault; - VFIODevice *vbasedev = &vdev->vbasedev; - struct vfio_info_cap_header *hdr; - char *fault_region_name; - int ret; - - ret = vfio_get_dev_region_info(&vdev->vbasedev, - VFIO_REGION_TYPE_NESTED, - VFIO_REGION_SUBTYPE_NESTED_DMA_FAULT, - &fault_region_info); - if (ret) { - goto out; - } - - hdr = vfio_get_region_info_cap(fault_region_info, - VFIO_REGION_INFO_CAP_DMA_FAULT); - if (!hdr) { - error_setg(errp, "failed to retrieve DMA FAULT capability"); - goto out; - } - cap_fault = container_of(hdr, struct vfio_region_info_cap_fault, - header); - if (cap_fault->version != 1) { - error_setg(errp, "Unsupported DMA FAULT API version %d", - cap_fault->version); - goto out; - } - - fault_region_name = g_strdup_printf("%s DMA FAULT %d", - vbasedev->name, - fault_region_info->index); - - ret = vfio_region_setup(OBJECT(vdev), vbasedev, - &vdev->dma_fault_region, - fault_region_info->index, - fault_region_name); - g_free(fault_region_name); - if (ret) { - error_setg_errno(errp, -ret, - "failed to set up the DMA FAULT region %d", - fault_region_info->index); - goto out; - } - - ret = vfio_region_mmap(&vdev->dma_fault_region); - if (ret) { - error_setg_errno(errp, -ret, "Failed to mmap the DMA FAULT queue"); - } -out: - g_free(fault_region_info); -} - static void vfio_populate_device(VFIOPCIDevice *vdev, Error **errp) { VFIODevice *vbasedev = &vdev->vbasedev; struct vfio_region_info *reg_info; struct vfio_irq_info irq_info = { .argsz = sizeof(irq_info) }; - Error *err = NULL; int i, ret = -1; /* Sanity check device */ @@ -2762,12 +2706,6 @@ static void vfio_populate_device(VFIOPCIDevice *vdev, Error **errp) } } - vfio_init_fault_regions(vdev, &err); - if (err) { - error_propagate(errp, err); - return; - } - irq_info.index = VFIO_PCI_ERR_IRQ_INDEX; ret = ioctl(vdev->vbasedev.fd, VFIO_DEVICE_GET_IRQ_INFO, &irq_info); @@ -3360,7 +3298,6 @@ static void vfio_instance_finalize(Object *obj) vfio_display_finalize(vdev); vfio_bars_finalize(vdev); - vfio_region_finalize(&vdev->dma_fault_region); g_free(vdev->emulated_config_bits); g_free(vdev->rom); /* @@ -3381,7 +3318,6 @@ static void vfio_exitfn(PCIDevice *pdev) vfio_unregister_req_notifier(vdev); vfio_unregister_err_notifier(vdev); vfio_unregister_ext_irq_notifiers(vdev); - vfio_region_exit(&vdev->dma_fault_region); pci_device_set_intx_routing_notifier(&vdev->pdev, NULL); if (vdev->irqchip_change_notifier.notify) { kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notifier); diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h index eef91065f1..a8b06737fb 100644 --- a/hw/vfio/pci.h +++ b/hw/vfio/pci.h @@ -145,7 +145,6 @@ struct VFIOPCIDevice { EventNotifier err_notifier; EventNotifier req_notifier; VFIOPCIExtIRQ *ext_irqs; - VFIORegion dma_fault_region; int (*resetfn)(struct VFIOPCIDevice *); uint32_t vendor_id; uint32_t device_id; -- 2.27.0