[Qemu-devel] [PATCH v4 00/10] VT-d: PT (passthrough) mode support and misc fixes

Peter Xu posted 10 patches 6 years, 11 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1495163989-9994-1-git-send-email-peterx@redhat.com
Test checkpatch passed
Test docker passed
Test s390x passed
exec.c                         |   3 +-
hw/alpha/typhoon.c             |   2 +-
hw/dma/rc4030.c                |   2 +-
hw/i386/amd_iommu.c            |   4 +-
hw/i386/intel_iommu.c          | 313 ++++++++++++++++++++++++++++++-----------
hw/i386/intel_iommu_internal.h |   1 +
hw/i386/trace-events           |   2 +
hw/i386/x86-iommu.c            |  48 ++-----
hw/pci-host/apb.c              |   2 +-
hw/ppc/spapr_iommu.c           |   2 +-
hw/s390x/s390-pci-bus.c        |   2 +-
hw/s390x/s390-pci-inst.c       |   2 +-
hw/vfio/common.c               |   2 +-
hw/virtio/trace-events         |   4 +
hw/virtio/vhost.c              |  49 +++++++
include/exec/memory.h          |  15 +-
include/hw/compat.h            |   4 +
include/hw/i386/x86-iommu.h    |   1 +
memory.c                       |   7 +-
19 files changed, 319 insertions(+), 146 deletions(-)
[Qemu-devel] [PATCH v4 00/10] VT-d: PT (passthrough) mode support and misc fixes
Posted by Peter Xu 6 years, 11 months ago
Online repo:

  https://github.com/xzpeter/qemu/tree/vtd-passthrough-misc-1

v4
- remove patch "pc: add 2.10 machine type" since it's merged already
- remove patch "memory: fix address_space_get_iotlb_entry()" since
  the problem is fixed by an much better upstream patch:
  "exec: abstract address_space_do_translate()"
- fix issue that patchew reported
- introduce vtd_ce_type_check(), then use it in
  vtd_dev_to_context_entry() [Jason]
- vtd_pt_enable_fast_path() don't use "SUCCESS" but bool [Jason]
- do address space switch for dsi/global ce invalidate [Jason]
- remove detect_pt in vtd_switch_address_space() [Jason]

v3:
- add one patch to provide machine type 2.10 for pc, add r-b for Edurado
- add r-b/a-b for David on the two memory patches
- add a-b for Paolo on the two memory patches
- remove useless if in vtd_switch_address_space() [Jason]
- check pt_supported when needed [Yi]
- one more patch to check whether dev-iotlb is supported before
  allowing such type of context entry
- enable pt fast path (squashed into current patch 10). when we found
  pt is setup on the first translation, we do address space switch.
  When it's unset, we can capture it via invalidations. [Jason]
- add compat bit for HW_COMPAT_2_9 for "pt" param [Jason]
- one vhost fix for pt (added patch 4)
- faster vhost caching (added patch 12) [Jason]

This series add support for per-device passthrough mode for VT-d
emulation, along with some tweaks on existing codes.

Patches 1-2: memory related cleanups.

Patches 3-7: some VT-d cleanups and fixes.

Patch 8: add support for passthrough.

Patch 9: turn pt off for machine type <=2.9, for compatibility.

Patch 10: vhost enhancement when used with passthrough, to pre-cache
          static mappings.

A simple test with PT mode using 10g nic is line speed.

Please review. Thanks.

Peter Xu (10):
  memory: tune last param of iommu_ops.translate()
  memory: remove the last param in memory_region_iommu_replay()
  x86-iommu: use DeviceClass properties
  intel_iommu: renaming context entry helpers
  intel_iommu: provide vtd_ce_get_type()
  intel_iommu: use IOMMU_ACCESS_FLAG()
  intel_iommu: allow dev-iotlb context entry conditionally
  intel_iommu: support passthrough (PT)
  intel_iommu: turn off pt before 2.9
  vhost: iommu: cache static mapping if there is

 exec.c                         |   3 +-
 hw/alpha/typhoon.c             |   2 +-
 hw/dma/rc4030.c                |   2 +-
 hw/i386/amd_iommu.c            |   4 +-
 hw/i386/intel_iommu.c          | 313 ++++++++++++++++++++++++++++++-----------
 hw/i386/intel_iommu_internal.h |   1 +
 hw/i386/trace-events           |   2 +
 hw/i386/x86-iommu.c            |  48 ++-----
 hw/pci-host/apb.c              |   2 +-
 hw/ppc/spapr_iommu.c           |   2 +-
 hw/s390x/s390-pci-bus.c        |   2 +-
 hw/s390x/s390-pci-inst.c       |   2 +-
 hw/vfio/common.c               |   2 +-
 hw/virtio/trace-events         |   4 +
 hw/virtio/vhost.c              |  49 +++++++
 include/exec/memory.h          |  15 +-
 include/hw/compat.h            |   4 +
 include/hw/i386/x86-iommu.h    |   1 +
 memory.c                       |   7 +-
 19 files changed, 319 insertions(+), 146 deletions(-)

-- 
2.7.4


Re: [Qemu-devel] [PATCH v4 00/10] VT-d: PT (passthrough) mode support and misc fixes
Posted by Jason Wang 6 years, 11 months ago

On 2017年05月19日 11:19, Peter Xu wrote:
> Online repo:
>
>    https://github.com/xzpeter/qemu/tree/vtd-passthrough-misc-1
>
> v4
> - remove patch "pc: add 2.10 machine type" since it's merged already
> - remove patch "memory: fix address_space_get_iotlb_entry()" since
>    the problem is fixed by an much better upstream patch:
>    "exec: abstract address_space_do_translate()"
> - fix issue that patchew reported
> - introduce vtd_ce_type_check(), then use it in
>    vtd_dev_to_context_entry() [Jason]
> - vtd_pt_enable_fast_path() don't use "SUCCESS" but bool [Jason]
> - do address space switch for dsi/global ce invalidate [Jason]
> - remove detect_pt in vtd_switch_address_space() [Jason]
>
> v3:
> - add one patch to provide machine type 2.10 for pc, add r-b for Edurado
> - add r-b/a-b for David on the two memory patches
> - add a-b for Paolo on the two memory patches
> - remove useless if in vtd_switch_address_space() [Jason]
> - check pt_supported when needed [Yi]
> - one more patch to check whether dev-iotlb is supported before
>    allowing such type of context entry
> - enable pt fast path (squashed into current patch 10). when we found
>    pt is setup on the first translation, we do address space switch.
>    When it's unset, we can capture it via invalidations. [Jason]
> - add compat bit for HW_COMPAT_2_9 for "pt" param [Jason]
> - one vhost fix for pt (added patch 4)
> - faster vhost caching (added patch 12) [Jason]
>
> This series add support for per-device passthrough mode for VT-d
> emulation, along with some tweaks on existing codes.
>
> Patches 1-2: memory related cleanups.
>
> Patches 3-7: some VT-d cleanups and fixes.
>
> Patch 8: add support for passthrough.
>
> Patch 9: turn pt off for machine type <=2.9, for compatibility.
>
> Patch 10: vhost enhancement when used with passthrough, to pre-cache
>            static mappings.
>
> A simple test with PT mode using 10g nic is line speed.
>
> Please review. Thanks.
>
> Peter Xu (10):
>    memory: tune last param of iommu_ops.translate()
>    memory: remove the last param in memory_region_iommu_replay()
>    x86-iommu: use DeviceClass properties
>    intel_iommu: renaming context entry helpers
>    intel_iommu: provide vtd_ce_get_type()
>    intel_iommu: use IOMMU_ACCESS_FLAG()
>    intel_iommu: allow dev-iotlb context entry conditionally
>    intel_iommu: support passthrough (PT)
>    intel_iommu: turn off pt before 2.9
>    vhost: iommu: cache static mapping if there is
>
>   exec.c                         |   3 +-
>   hw/alpha/typhoon.c             |   2 +-
>   hw/dma/rc4030.c                |   2 +-
>   hw/i386/amd_iommu.c            |   4 +-
>   hw/i386/intel_iommu.c          | 313 ++++++++++++++++++++++++++++++-----------
>   hw/i386/intel_iommu_internal.h |   1 +
>   hw/i386/trace-events           |   2 +
>   hw/i386/x86-iommu.c            |  48 ++-----
>   hw/pci-host/apb.c              |   2 +-
>   hw/ppc/spapr_iommu.c           |   2 +-
>   hw/s390x/s390-pci-bus.c        |   2 +-
>   hw/s390x/s390-pci-inst.c       |   2 +-
>   hw/vfio/common.c               |   2 +-
>   hw/virtio/trace-events         |   4 +
>   hw/virtio/vhost.c              |  49 +++++++
>   include/exec/memory.h          |  15 +-
>   include/hw/compat.h            |   4 +
>   include/hw/i386/x86-iommu.h    |   1 +
>   memory.c                       |   7 +-
>   19 files changed, 319 insertions(+), 146 deletions(-)
>

For the series

Reviewed-by: Jason Wang <jasowang@redhat.com>

Thanks