[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC v9 00/17] VIRTIO-IOMMU device
From: |
Bharat Bhushan |
Subject: |
Re: [Qemu-devel] [RFC v9 00/17] VIRTIO-IOMMU device |
Date: |
Tue, 27 Nov 2018 07:11:46 +0000 |
Hi Eric,
> -----Original Message-----
> From: Eric Auger <address@hidden>
> Sent: Thursday, November 22, 2018 10:45 PM
> To: address@hidden; address@hidden; qemu-
> address@hidden; address@hidden; address@hidden;
> address@hidden; address@hidden
> Cc: address@hidden; address@hidden; Bharat Bhushan
> <address@hidden>; address@hidden
> Subject: [RFC v9 00/17] VIRTIO-IOMMU device
>
> This series rebases the virtio-iommu device on qemu 3.1.0-rc2 and
> implements the v0.8(.1) virtio-iommu spec [1]. The pci proxy for the virtio-
> iommu device is now available and needs to be instantiated from the
> command line using "-device virtio-iommu-pci".
> The iommu machvirt option is not used anymore to instantiate the virtio-
> iommu.
>
> At the moment the virtio-iommu-device only is functional in the ARM virt
> machine. Indeed, besides its instantiation, links between the PCIe end points
> and the IOMMU must be described. This is achieved by DT or ACPI
> description (IORT). This description currently only is done in ARM virt.
>
> Best Regards
>
> Eric
>
> This series can be found at:
> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit
> hub.com%2Feauger%2Fqemu%2Ftree%2Fv3.1.0-rc2-virtio-iommu-
> v0.9&data=02%7C01%7Cbharat.bhushan%40nxp.com%7C031e61e2a2f3
> 4e3b945a08d6509e2918%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%
> 7C636785037552135579&sdata=v99FRL1dQC%2BPTofwwqqoKGNiiqJ%2F
> lGBX3KJB0IUKbQU%3D&reserved=0
>
> References:
> [1] [PATCH v3 0/7] Add virtio-iommu driver
>
> [2] guest branch featuring the virtio-iommu driver v0.8.1 + ACPI
> integration not yet officially released by Jean.
> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit
> hub.com%2Feauger%2Flinux%2Ftree%2Fvirtio-iommu-
> v0.8.1&data=02%7C01%7Cbharat.bhushan%40nxp.com%7C031e61e2a2f
> 34e3b945a08d6509e2918%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0
> %7C636785037552135579&sdata=EjHA9BZ6rNX36YFKkNocBQtoz3uf3bdn
> 5T9NSJ6SaRg%3D&reserved=0
>
> Testing:
> - tested with guest using virtio-net-pci
> (,vhost=off,iommu_platform,disable-modern=off,disable-legacy=on)
> and virtio-blk-pci
> - VFIO/VHOST integration is not part of this series
> - When using the virtio-blk-pci, some EDK2 FW versions feature
> unmapped transactions and in that case the guest fails to boot.
I have tested this series with virtio and VFIO both
Tested-by: Bharat Bhushan <address@hidden>
Thanks
-Bharat
>
> History:
>
> v8 -> v9:
> - virtio-iommu-pci device needs to be instantiated from the command
> line (RID is not imposed anymore).
> - tail structure properly initialized
>
> v7 -> v8:
> - virtio-iommu-pci added
> - virt instantiation modified
> - DT and ACPI modified to exclude the iommu RID from the mapping
> - VIRTIO_IOMMU_F_BYPASS, VIRTIO_F_VERSION_1 features exposed
>
> v6 -> v7:
> - rebase on qemu 3.0.0-rc3
> - minor update against v0.7
> - fix issue with EP not on pci.0 and ACPI probing
> - change the instantiation method
>
> v5 -> v6:
> - minor update against v0.6 spec
> - fix g_hash_table_lookup in virtio_iommu_find_add_as
> - replace some error_reports by qemu_log_mask(LOG_GUEST_ERROR, ...)
>
> v4 -> v5:
> - event queue and fault reporting
> - we now return the IOAPIC MSI region if the virtio-iommu is instantiated
> in a PC machine.
> - we bypass transactions on MSI HW region and fault on reserved ones.
> - We support ACPI boot with mach-virt (based on IORT proposal)
> - We moved to the new driver naming conventions
> - simplified mach-virt instantiation
> - worked around the disappearing of pci_find_primary_bus
> - in virtio_iommu_translate, check the dev->as is not NULL
> - initialize as->device_list in virtio_iommu_get_as
> - initialize bufstate.error to false in virtio_iommu_probe
>
> v3 -> v4:
> - probe request support although no reserved region is returned at
> the moment
> - unmap semantics less strict, as specified in v0.4
> - device registration, attach/detach revisited
> - split into smaller patches to ease review
> - propose a way to inform the IOMMU mr about the page_size_mask
> of underlying HW IOMMU, if any
> - remove warning associated with the translation of the MSI doorbell
>
> v2 -> v3:
> - rebase on top of 2.10-rc0 and especially
> [PATCH qemu v9 0/2] memory/iommu: QOM'fy IOMMU MemoryRegion
> - add mutex init
> - fix as->mappings deletion using g_tree_ref/unref
> - when a dev is attached whereas it is already attached to
> another address space, first detach it
> - fix some error values
> - page_sizes = TARGET_PAGE_MASK;
> - I haven't changed the unmap() semantics yet, waiting for the
> next virtio-iommu spec revision.
>
> v1 -> v2:
> - fix redifinition of viommu_as typedef
>
> Eric Auger (17):
> update-linux-headers: Import virtio_iommu.h
> linux-headers: Partial update for virtio-iommu v0.8
> virtio-iommu: Add skeleton
> virtio-iommu: Decode the command payload
> virtio-iommu: Add the iommu regions
> virtio-iommu: Endpoint and domains structs and helpers
> virtio-iommu: Implement attach/detach command
> virtio-iommu: Implement map/unmap
> virtio-iommu: Implement translate
> virtio-iommu: Implement probe request
> virtio-iommu: Expose the IOAPIC MSI reserved region when relevant
> virtio-iommu: Implement fault reporting
> virtio_iommu: Handle reserved regions in translation process
> virtio-iommu-pci: Add virtio iommu pci support
> hw/arm/virt: Add the virtio-iommu device tree mappings
> hw/arm/virt-acpi-build: Introduce fill_iort_idmap helper
> hw/arm/virt-acpi-build: Add virtio-iommu node in IORT table
>
> hw/arm/virt-acpi-build.c | 91 +-
> hw/arm/virt.c | 57 +-
> hw/virtio/Makefile.objs | 1 +
> hw/virtio/trace-events | 26 +
> hw/virtio/virtio-iommu.c | 1040 +++++++++++++++++
> hw/virtio/virtio-pci.c | 51 +
> hw/virtio/virtio-pci.h | 14 +
> include/hw/acpi/acpi-defs.h | 21 +-
> include/hw/arm/virt.h | 2 +
> include/hw/pci/pci.h | 1 +
> include/hw/virtio/virtio-iommu.h | 65 ++
> include/standard-headers/linux/virtio_ids.h | 1 +
> include/standard-headers/linux/virtio_iommu.h | 159 +++
> linux-headers/linux/virtio_iommu.h | 1 +
> qdev-monitor.c | 1 +
> scripts/update-linux-headers.sh | 3 +
> 16 files changed, 1501 insertions(+), 33 deletions(-) create mode 100644
> hw/virtio/virtio-iommu.c create mode 100644 include/hw/virtio/virtio-
> iommu.h create mode 100644 include/standard-
> headers/linux/virtio_iommu.h
> create mode 100644 linux-headers/linux/virtio_iommu.h
>
> --
> 2.17.2
- [Qemu-devel] [RFC v9 08/17] virtio-iommu: Implement map/unmap, (continued)
- [Qemu-devel] [RFC v9 08/17] virtio-iommu: Implement map/unmap, Eric Auger, 2018/11/22
- [Qemu-devel] [RFC v9 10/17] virtio-iommu: Implement probe request, Eric Auger, 2018/11/22
- [Qemu-devel] [RFC v9 13/17] virtio_iommu: Handle reserved regions in translation process, Eric Auger, 2018/11/22
- [Qemu-devel] [RFC v9 11/17] virtio-iommu: Expose the IOAPIC MSI reserved region when relevant, Eric Auger, 2018/11/22
- [Qemu-devel] [RFC v9 12/17] virtio-iommu: Implement fault reporting, Eric Auger, 2018/11/22
- [Qemu-devel] [RFC v9 15/17] hw/arm/virt: Add the virtio-iommu device tree mappings, Eric Auger, 2018/11/22
- [Qemu-devel] [RFC v9 14/17] virtio-iommu-pci: Add virtio iommu pci support, Eric Auger, 2018/11/22
- [Qemu-devel] [RFC v9 16/17] hw/arm/virt-acpi-build: Introduce fill_iort_idmap helper, Eric Auger, 2018/11/22
- [Qemu-devel] [RFC v9 17/17] hw/arm/virt-acpi-build: Add virtio-iommu node in IORT table, Eric Auger, 2018/11/22
- Re: [Qemu-devel] [RFC v9 00/17] VIRTIO-IOMMU device,
Bharat Bhushan <=