All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jacob Pan <jacob.pan@linux.microsoft.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: Mukesh R <mrathor@linux.microsoft.com>,
	Alex Williamson <alex@shazbot.org>,
	hpa@zytor.com, robin.murphy@arm.com, robh@kernel.org,
	wei.liu@kernel.org, mhklinux@outlook.com, muislam@microsoft.com,
	namjain@linux.microsoft.com, magnuskulke@linux.microsoft.com,
	anbelski@linux.microsoft.com, linux-kernel@vger.kernel.org,
	linux-hyperv@vger.kernel.org, iommu@lists.linux.dev,
	linux-pci@vger.kernel.org, linux-arch@vger.kernel.org,
	kys@microsoft.com, haiyangz@microsoft.com, decui@microsoft.com,
	longli@microsoft.com, tglx@kernel.org, mingo@redhat.com,
	bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org,
	joro@8bytes.org, will@kernel.org, lpieralisi@kernel.org,
	kwilczynski@kernel.org, bhelgaas@google.com, arnd@arndb.de,
	"Aneesh Kumar K.V" <aneesh.kumar@kernel.org>,
	jacob.pan@linux.microsoft.com,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH v5 3/9] mshv: Introduce basic mshv bridge device for VFIO to build upon
Date: Thu, 3 Sep 2026 11:34:59 -0700	[thread overview]
Message-ID: <20260903113459.00006639@linux.microsoft.com> (raw)
In-Reply-To: <20260903144236.GK4157646@nvidia.com>

Hi Jason,

On Thu, 3 Sep 2026 11:42:36 -0300
Jason Gunthorpe <jgg@nvidia.com> wrote:

> On Wed, Sep 02, 2026 at 11:19:05AM -0700, Jacob Pan wrote:
> 
> > If we do want to support this kvm-vfio bridge semantics beyond kvm,
> > maybe this should be abstracted as a generic VFIO "hypervisor
> > partition" association, with hypervisor-specific get/put callbacks,
> > rather than adding an MSHV-only copy of the KVM hook.
> > +Alex  
> 
> I don't like this patch at all.
> 
> I think we should try to harmonize all these sort of "external" cases
> as best we can. mshv, confidential compute, xen, etc all have a very
> similar shape.
> 
> I am discussing here with Aneesh an approach to use the viommu almost
> exclusively for this.
> 
> https://lore.kernel.org/all/20260902235609.GG2890729@ziepe.ca/
> 
> Can you imagine a way to do that for your stuff?
> 
> In that case I imagine the iommufd vdevice create is what attaches the
> vfio device to the partition, not a seperate ioctl over in some other
> driver. When the viommu is created it knows what partition it is
> affiliated with because it took in a FD that describes that partition.
Yes, viommu/vdevice model maps well in my POC/RFC(WIP) without new
ioctls.

vdevice is attached to the vm partition via viommu (holds vm_fd). i.e.
	struct iommu_vdevice_alloc alloc = {
		.size = sizeof(alloc),
		.viommu_id = viommu_id,
		.dev_id = dev_id,
		.virt_id = vm_device_id, //vmm assigned
	};
	int rc;

	rc = do_ioctl(iommufd, IOMMU_VDEVICE_ALLOC, &alloc,
		      "IOMMU_VDEVICE_ALLOC");

In our case, we don't need a vdevice_init op since all we need is the
virt_id, hyperv iommu driver will retrieved the vmm assigned logical
device ID (virt_id) by existing API:

static int hyperv_iommu_external_attach_dev(struct iommu_domain *domain,
					   struct device *dev,
					   struct iommu_domain *old)
{
	ret = iommufd_viommu_get_vdev_id(external_domain->viommu, dev,
					 &vdev_id);

Then use vdev_id for the hypercall to attach external domain.

I currently have a new IOMMU_VIOMMU_TYPE_MSHV with:

/**
 * struct iommu_viommu_mshv - Microsoft Hypervisor virtual IOMMU
 *                            (IOMMU_VIOMMU_TYPE_MSHV)
 * @vm_fd: MSHV partition file descriptor
 * @flags: Must be 0
 * @__reserved: Must be 0
 */
struct iommu_viommu_mshv {
	__s32 vm_fd;
	__u32 flags;
	__aligned_u64 __reserved;
};

That is MSHV-specific only because the fd validation and partition-ID
lookup are MSHV-specific today. I think this could be generalized later
into a common "external/hypervisor partition" vIOMMU type with
driver-specific fd validation/get/put semantics.

Thanks,

Jacob

  parent reply	other threads:[~2026-09-03 18:35 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-31 22:34 [PATCH v5 0/9] PCI passthru on Hyper-V Mukesh R
2026-07-31 22:34 ` [PATCH v5 1/9] mshv: Provide a way to get partition ID if running in a VMM process Mukesh R
2026-07-31 22:47   ` sashiko-bot
2026-07-31 22:34 ` [PATCH v5 2/9] mshv: Add declarations and definitions for VFIO-MSHV bridge device Mukesh R
2026-07-31 22:42   ` sashiko-bot
2026-07-31 22:34 ` [PATCH v5 3/9] mshv: Introduce basic mshv bridge device for VFIO to build upon Mukesh R
2026-07-31 22:49   ` sashiko-bot
2026-09-02 18:19   ` Jacob Pan
2026-09-03 14:42     ` Jason Gunthorpe
2026-09-03 16:13       ` Wei Liu
2026-09-03 17:40         ` Jason Gunthorpe
2026-09-03 18:46           ` Jacob Pan
2026-09-04  0:10             ` Jason Gunthorpe
2026-09-03 18:34       ` Jacob Pan [this message]
2026-07-31 22:34 ` [PATCH v5 4/9] mshv: Add ioctl support for MSHV-VFIO bridge device Mukesh R
2026-07-31 22:49   ` sashiko-bot
2026-07-31 22:34 ` [PATCH v5 5/9] mshv: Import data structs around device passthru from hyperv headers Mukesh R
2026-07-31 22:45   ` sashiko-bot
2026-07-31 22:34 ` [PATCH v5 6/9] PCI: hv: Export hv_build_devid_type_pci() and change return type Mukesh R
2026-07-31 22:47   ` sashiko-bot
2026-08-18 22:14   ` Bjorn Helgaas
2026-07-31 22:34 ` [PATCH v5 7/9] x86/hyperv: Implement Hyper-V virtual IOMMU Mukesh R
2026-07-31 22:48   ` sashiko-bot
2026-08-05 12:48   ` Jason Gunthorpe
2026-08-18 21:01     ` Jacob Pan
2026-08-18 23:51       ` Jason Gunthorpe
2026-08-18 23:39     ` Mukesh R
2026-08-18 23:48       ` Jason Gunthorpe
2026-08-19  0:13         ` Mukesh R
2026-08-19 12:46           ` Jason Gunthorpe
2026-08-19 16:29             ` Jacob Pan
2026-08-19 16:33               ` Jason Gunthorpe
2026-07-31 22:34 ` [PATCH v5 8/9] mshv: Populate mmio mappings for PCI passthru Mukesh R
2026-07-31 22:54   ` sashiko-bot
2026-07-31 22:34 ` [PATCH v5 9/9] mshv: Disable movable regions upfront if device passthru Mukesh R
2026-07-31 22:57   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260903113459.00006639@linux.microsoft.com \
    --to=jacob.pan@linux.microsoft.com \
    --cc=alex@shazbot.org \
    --cc=anbelski@linux.microsoft.com \
    --cc=aneesh.kumar@kernel.org \
    --cc=arnd@arndb.de \
    --cc=bhelgaas@google.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=decui@microsoft.com \
    --cc=haiyangz@microsoft.com \
    --cc=hpa@zytor.com \
    --cc=iommu@lists.linux.dev \
    --cc=jgg@nvidia.com \
    --cc=joro@8bytes.org \
    --cc=kwilczynski@kernel.org \
    --cc=kys@microsoft.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=longli@microsoft.com \
    --cc=lpieralisi@kernel.org \
    --cc=magnuskulke@linux.microsoft.com \
    --cc=mhklinux@outlook.com \
    --cc=mingo@redhat.com \
    --cc=mrathor@linux.microsoft.com \
    --cc=muislam@microsoft.com \
    --cc=namjain@linux.microsoft.com \
    --cc=robh@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=teddy.astie@vates.tech \
    --cc=tglx@kernel.org \
    --cc=wei.liu@kernel.org \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.