All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC][PATCH v2 00/13] iommu/arm-smmu-v3: Add NVIDIA implementation
@ 2021-08-31  2:59 ` Nicolin Chen via iommu
  0 siblings, 0 replies; 63+ messages in thread
From: Nicolin Chen @ 2021-08-31  2:59 UTC (permalink / raw)
  To: will, robin.murphy, joro, alex.williamson, cohuck, corbet
  Cc: nicoleotsuka, vdumpa, thierry.reding, linux-tegra, nwatterson,
	Jonathan.Cameron, jean-philippe, song.bao.hua, eric.auger,
	thunder.leizhen, yuzenghui, linux-kernel, linux-arm-kernel,
	iommu, kvm, linux-doc

The SMMUv3 devices implemented in the Grace SoC support NVIDIA's custom
CMDQ-Virtualization (CMDQV) hardware. Like the new ECMDQ feature first
introduced in the ARM SMMUv3.3 specification, CMDQV adds multiple VCMDQ
interfaces to supplement the single architected SMMU_CMDQ in an effort
to reduce contention.

This series of patches add CMDQV support with its preparational changes:

* PATCH-1 to PATCH-8 are related to shared VMID feature: they are used
  first to improve TLB utilization, second to bind a shared VMID with a
  VCMDQ interface for hardware configuring requirement.

* PATCH-9 and PATCH-10 are to accommodate the NVIDIA implementation with
  the existing arm-smmu-v3 driver.

* PATCH-11 borrows the "implementation infrastructure" from the arm-smmu
  driver so later change can build upon it.

* PATCH-12 adds an initial NVIDIA implementation related to host feature,
  and also adds implementation specific ->device_reset() and ->get_cmdq()
  callback functions.

* PATCH-13 adds virtualization features using VFIO mdev interface, which
  allows user space hypervisor to map and get access to one of the VCMDQ
  interfaces of CMDQV module.

( Thinking that reviewers can get a better view of this implementation,
  I am attaching QEMU changes here for reference purpose:
      https://github.com/nicolinc/qemu/commits/dev/cmdqv_v6.0.0-rc2
  The branch has all preparational changes, while I'm still integrating
  device model and ARM-VIRT changes, and will push them these two days,
  although they might not be in a good shape of being sent to review yet )

Above all, I marked RFC for this series, as I feel that we may come up
some better solution. So please kindly share your reviews and insights.

Thank you!

Changelog
v1->v2:
 * Added mdev interface support for hypervisor and VMs.
 * Added preparational changes for mdev interface implementation.
 * PATCH-12 Changed ->issue_cmdlist() to ->get_cmdq() for a better
   integration with recently merged ECMDQ-related changes.

Nate Watterson (3):
  iommu/arm-smmu-v3: Add implementation infrastructure
  iommu/arm-smmu-v3: Add support for NVIDIA CMDQ-Virtualization hw
  iommu/nvidia-smmu-v3: Add mdev interface support

Nicolin Chen (10):
  iommu: Add set_nesting_vmid/get_nesting_vmid functions
  vfio: add VFIO_IOMMU_GET_VMID and VFIO_IOMMU_SET_VMID
  vfio: Document VMID control for IOMMU Virtualization
  vfio: add set_vmid and get_vmid for vfio_iommu_type1
  vfio/type1: Implement set_vmid and get_vmid
  vfio/type1: Set/get VMID to/from iommu driver
  iommu/arm-smmu-v3: Add shared VMID support for NESTING
  iommu/arm-smmu-v3: Add VMID alloc/free helpers
  iommu/arm-smmu-v3: Pass dev pointer to arm_smmu_detach_dev
  iommu/arm-smmu-v3: Pass cmdq pointer in arm_smmu_cmdq_issue_cmdlist()

 Documentation/driver-api/vfio.rst             |   34 +
 MAINTAINERS                                   |    2 +
 drivers/iommu/arm/arm-smmu-v3/Makefile        |    2 +-
 .../iommu/arm/arm-smmu-v3/arm-smmu-v3-impl.c  |   15 +
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c   |  121 +-
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h   |   18 +
 .../iommu/arm/arm-smmu-v3/nvidia-smmu-v3.c    | 1249 +++++++++++++++++
 drivers/iommu/iommu.c                         |   20 +
 drivers/vfio/vfio.c                           |   25 +
 drivers/vfio/vfio_iommu_type1.c               |   37 +
 include/linux/iommu.h                         |    5 +
 include/linux/vfio.h                          |    2 +
 include/uapi/linux/vfio.h                     |   26 +
 13 files changed, 1537 insertions(+), 19 deletions(-)
 create mode 100644 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-impl.c
 create mode 100644 drivers/iommu/arm/arm-smmu-v3/nvidia-smmu-v3.c

-- 
2.17.1


^ permalink raw reply	[flat|nested] 63+ messages in thread

end of thread, other threads:[~2021-09-16 18:37 UTC | newest]

Thread overview: 63+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-31  2:59 [RFC][PATCH v2 00/13] iommu/arm-smmu-v3: Add NVIDIA implementation Nicolin Chen
2021-08-31  2:59 ` Nicolin Chen
2021-08-31  2:59 ` Nicolin Chen via iommu
2021-08-31  2:59 ` [RFC][PATCH v2 01/13] iommu: Add set_nesting_vmid/get_nesting_vmid functions Nicolin Chen via iommu
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59 ` [RFC][PATCH v2 02/13] vfio: add VFIO_IOMMU_GET_VMID and VFIO_IOMMU_SET_VMID Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen via iommu
2021-08-31  2:59 ` [RFC][PATCH v2 03/13] vfio: Document VMID control for IOMMU Virtualization Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen via iommu
2021-08-31  2:59 ` [RFC][PATCH v2 04/13] vfio: add set_vmid and get_vmid for vfio_iommu_type1 Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen via iommu
2021-08-31  2:59 ` [RFC][PATCH v2 05/13] vfio/type1: Implement set_vmid and get_vmid Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen via iommu
2021-08-31  2:59 ` [RFC][PATCH v2 06/13] vfio/type1: Set/get VMID to/from iommu driver Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen via iommu
2021-08-31  2:59 ` [RFC][PATCH v2 07/13] iommu/arm-smmu-v3: Add shared VMID support for NESTING Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen via iommu
2021-08-31  2:59 ` [RFC][PATCH v2 08/13] iommu/arm-smmu-v3: Add VMID alloc/free helpers Nicolin Chen via iommu
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59 ` [RFC][PATCH v2 09/13] iommu/arm-smmu-v3: Pass dev pointer to arm_smmu_detach_dev Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen via iommu
2021-08-31  2:59 ` [RFC][PATCH v2 10/13] iommu/arm-smmu-v3: Pass cmdq pointer in arm_smmu_cmdq_issue_cmdlist() Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen via iommu
2021-08-31  2:59 ` [RFC][PATCH v2 11/13] iommu/arm-smmu-v3: Add implementation infrastructure Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen via iommu
2021-08-31  2:59 ` [RFC][PATCH v2 12/13] iommu/arm-smmu-v3: Add support for NVIDIA CMDQ-Virtualization hw Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen via iommu
2021-08-31  8:03   ` kernel test robot
2021-08-31  9:13   ` kernel test robot
2021-08-31  9:13     ` kernel test robot
2021-08-31  2:59 ` [RFC][PATCH v2 13/13] iommu/nvidia-smmu-v3: Add mdev interface support Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen
2021-08-31  2:59   ` Nicolin Chen via iommu
2021-08-31  8:58   ` kernel test robot
2021-08-31 10:26   ` kernel test robot
2021-08-31 10:26     ` kernel test robot
2021-08-31 16:15 ` [RFC][PATCH v2 00/13] iommu/arm-smmu-v3: Add NVIDIA implementation Alex Williamson
2021-08-31 16:15   ` Alex Williamson
2021-08-31 16:15   ` Alex Williamson
2021-09-01  6:55   ` Tian, Kevin
2021-09-01  6:55     ` Tian, Kevin
2021-09-01  6:55     ` Tian, Kevin
2021-09-02 14:45     ` Jason Gunthorpe
2021-09-02 14:45       ` Jason Gunthorpe
2021-09-02 14:45       ` Jason Gunthorpe via iommu
2021-09-02 22:27       ` Tian, Kevin
2021-09-02 22:27         ` Tian, Kevin
2021-09-02 22:27         ` Tian, Kevin
2021-09-16 18:21         ` Nicolin Chen
2021-09-16 18:21           ` Nicolin Chen
2021-09-16 18:21           ` Nicolin Chen via iommu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.