From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=209.85.208.46 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793787810; b=dV60GIwA0jO+9a/CXBDGZ/lsCeBQRwdko/BZAO3JkhAzb15Rix1STkcV4lL2aK09qzZT gYqjUhvDYM9FmiJkBqam2uR/fW1mnR2KLoPZ4Hfk6BpQaBiu0ClnONEN2enPxNg0rGbO1 PvEJVPaUMBG0cd6pLgFi7ZkpBCoMv2Oo/24ac2HISVC622l2VSxAviCQ+lo0gKRodaBHB Q/s56yhe8IW+bH/xNWr3XR0pJBQhNnk0BesxLqn2o6SIy1dLyR0VP4lAnNKQuHIEKLiIH kK3SUQrYlC0drKS5a3tsycx0lWrJwMRLpAgEyf9ptVFw8cFLyScRv4JgqT8d8KZO6TQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793787810; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Forwarded-Encrypted:X-Gm-Message-State:X-Gm-Gg:X-Received:Received: Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; bh=fP2wtbL8okahCme2REeuz/5kpLBhIsTYBbFIyLkDukQ=; b=j2gbt/2DIqBieVGSqSd3xPR06EZIdu5jDKYUDaVRgL83Rg8dlhhl8eN0e3JAZb2YbpSg uB9wY5/Iqtf/jekaHW4da/iTX3Z+YxnLHe/sCrhyD/yzqqOWdHEJeZDoqe0Fn+SsrmT2u b/AY3qPZUWe+J6c7ElW1krRyTkSHPdcex2aAijPbeNcrgZw5z22jrHq5bh1TacAO4yLul FHSPfVxmFdJDtCw3A2gHeiBjBLdgfi4whgiQ1RwREQGiN48lz6Skx//Gc71lqPb8yzNMs ZK6fMYWf8nHBPJcPE/ehW5IDvvKGM2Te5Av74wdaYt0470OqRotZeTKdMmMHef33/sg== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20260707 header.b=BOH80JmD; arc=none smtp.remote-ip=209.85.208.46 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4C959606A329 for ; Wed, 4 Nov 2026 10:23:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 4C959606A329 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20260707 header.b=BOH80JmD Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-6b56c90b38eso116a12.0 for ; Wed, 04 Nov 2026 02:23:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20260707; t=1793787809; x=1794392609; darn=vger.kernel.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=fP2wtbL8okahCme2REeuz/5kpLBhIsTYBbFIyLkDukQ=; b=BOH80JmDvOkOft+cKPp7n1RirDBIBFL2zo4WJZDGlWTn0vLjSBwquwsHFimt4K+vA1 FdhAnhkpRpC7pduXSvZ+wG3rv/sxZmXhoWLS1uEqK+jTRPZWyd4Md60+3MPU2OOGKZZy 3r+suUFd3TMG2GtAoDCzc8Mrc8s063vNBN2gqQt2tUZCxE+/nAa4YFsisojEjNCQKoCc fSK+aGOVHtKanDoGRkovZI45rCR8TKH0vZQRA7zy7t/vzRmWkA8mpNYclrLDEomrjwPP RNzlTcn/803NgI+tVuOvSJdntkLED2/EKHQwTSjyVt/kTlNjRRYG4pMdP4Wm5ONavfih Tulw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793787809; x=1794392609; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=fP2wtbL8okahCme2REeuz/5kpLBhIsTYBbFIyLkDukQ=; b=ZPqXzIfcGiAo5UTZZ/2WRIVuxI5Dk3vWGwxs8/WHZm+1oQ08CDkILByqEY/mrv2Wcs KQYti64xy9hzu86Pp2WWOcsmAZWIRFmBttuhPq1uS8VO+QPvT1t0T84jpGyKuYUWEZHm 1FRbAVsu/KdshnYPKBmFN2u/+xiwcSQjOtD4eeBhy3ydTMLq310m8CIgRVIP9+WiBCQQ JMlBcFn6PLswJU4jcO2QTjX62BRZwLRfb26Uyvxfv9biLGW8qQVWDg2jU01fzXidPTxC zKpKECWzm2ub57CNd/JIdsdB0qa6AZ7/fHFLeUVZBfWPiZf95AoejU181OW29Ecpy16a nyzQ== X-Forwarded-Encrypted: i=1; AKwUvBy2QfGacNStlGTqHf8ioIXhVsUF0CFc7QfoXxWGrgcqGYm7foe4JrIRQRACXc0N3r9XBfKvFZ3tOK4Lr00=@vger.kernel.org X-Gm-Message-State: APuU4Z8zXdywNBATcs+k9Un9SJ3zeFc0781WX0WUpceBrRAnLWvOGw1t i7RfssfCiOU7hgnwGrJ39tSaF+AOUsCQvjchL1xPKnWtvMu5dfkhFN4lVqVNeYK3+Q== X-Gm-Gg: AYBFou1Z3tB1MhdTVaFkF2T61dIHUDAT1zmgafZ79aI7nSjYfSsBAS6a0Fnfy71yqek O6xowAUzIRohZPCqOKbAPBAalYruLyE+m4EBBSK61wf1KVI4b4C0t0vJIDddKuF7yiCuSUpJQSD Z37keb307tTTcZyO4QMO8UNWa3+CAuOtJQB7e/n/aQCws8pQLcqj0/p73UNXRWputqD5X98SbLX 5ZDOV5jyOC/RwSNrU9MIuWt4VblaOYvDIEzUf6mfOp3swjSMGxbZ7Hj00+cuJ6AZmbTHFV0sAh/ cuOknxs/zYyGVyiMseQsnuqhLhOhiUTJS1ZrHjuyZ2byahgEWQ0BXjH3F4Z9xEbPRgBMvHkBxog fBDoEKPfy0Ku7pvMaTsKxZMm75hFj/JPZbLfqwYTTjwFYX+pNtbe/blgqaV5f8lkD/3a0ZHQFrl A/374WxKQVAeao3cOeCjLg7z7KUXxPQ6t/R9yKyrOb/3rP3jHsWGsQdk5dwtih24tBhzEu/rlw3 DZgnnbKPkVfDgLaFEJa72jShRXtLY3MlZWWu302/GZBSXKej4mNOdppeH/vQGJxVKM+0e178I5o pJVA4btcye3udQOwxAlr7XlNFqQeBJ5gbKOT3vhr48gm0cG7WrFkKc0gvoaFbbz4itqr+A== X-Received: by 2002:a05:6402:a2ca:20b0:6b4:6725:f2c6 with SMTP id 4fb4d7f45d1cf-6b55abce7efmr53379a12.13.1793787808278; Wed, 04 Nov 2026 02:23:28 -0800 (PST) Received: from google.com (250.192.189.35.bc.googleusercontent.com. [35.189.192.250]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c4d0e1402c6sm55414666b.2.2026.11.04.02.23.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Nov 2026 02:23:26 -0800 (PST) Date: Wed, 4 Nov 2026 10:23:22 +0000 From: Mostafa Saleh To: Jacob Pan Cc: iommu@lists.linux.dev, Jason Gunthorpe , Nicolin Chen , Kevin Tian , Will Deacon , Robin Murphy , Wei Liu , "K . Y . Srinivasan" , Haiyang Zhang , Dexuan Cui , Long Li , linux-hyperv@vger.kernel.org, Joerg Roedel , Suravee Suthikulpanit , Vasant Hegde , Arnd Bergmann , linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, "Aneesh Kumar K . V" , Mukesh Rathor , John Starks , Souradeep Chakrabarti , Yu Zhang , Easwar Hariharan , Alex Williamson Subject: Re: [RFC PATCH 0/9] iommu/iommufd: Add hypervisor external attach Message-ID: References: <20260925190742.1575380-1-jacob.pan@linux.microsoft.com> <20261026114917.00005a22@linux.microsoft.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20261026114917.00005a22@linux.microsoft.com> On Mon, Oct 26, 2026 at 11:49:17AM -0700, Jacob Pan wrote: > Hi Mostafa, > > On Wed, 21 Oct 2026 10:55:36 +0000 > Mostafa Saleh wrote: > > > On Fri, Sep 25, 2026 at 12:07:33PM -0700, Jacob Pan wrote: > > > Hi, > > > > > > This RFC supports guest VM device assignment from a Linux host > > > using the Microsoft Hypervisor (MSHV). The goal is that a common > > > set of flows and infrastructure can be applied for Xen and other > > > type 1 hypervisors. > > > > > > Background: > > > > > > The IOMMUFD/VFIO stack used for device assignment has largely > > > evolved around the KVM/QEMU model, at least as the first enabling > > > target. In that model, the Linux host owns the host-side physical > > > IOMMU programming as well as the physical PCI devices. > > > > > > Architecturally, MSHV and Xen differ from this KVM/QEMU ownership > > > model. At a high level: > > > > > > +------------------+ > > > | Guest VM | > > > | virtual IOMMU | > > > +--------+---------+ > > > | vIOMMU ops > > > v > > > +------------------+ external attach +------------------+ > > > | MSHV |<-----------------------| Linux host | > > > +--------+---------+ +--------+---------+ > > > | programs | owns > > > v v > > > +------------------+ +------------------+ > > > | HW IOMMU |<---------------------->| PCI dev | > > > +------------------+ DMA +------------------+ > > > > > > For MSHV, the specific ownership model is as follows: > > > 1. The Linux host OS owns the physical device and exposes it > > > through VFIO/IOMMUFD, but it does not directly own any of the IOMMU > > > hardware. 2. The device node (/dev/mshv) owns the VM partition file > > > used by userspace. 3. MSHV owns most of the physical IOMMU > > > programming, including stage-2 I/O page tables. > > > 4. The Linux MSHV root pvIOMMU driver bridges IOMMUFD/VFIO UAPIs > > > to hardware IOMMU programming through MSHV hypercalls. > > > 5. Guest virtual IOMMU emulation is done in MSHV rather than the > > > userspace VMM. > > > 6. Stage-2 IOPT may be shared between CPU and IOMMU. It is > > > managed by MSHV and abstracted from the Linux host, including TLB > > > synchronization. > > > > > > These structural differences from the KVM/QEMU model create several > > > needs for IOMMUFD support: > > > 1. Move a device to a guest whose I/O page table is externally > > > managed. This patchset refers to that operation as external attach. > > > Unlike conventional IOMMU vendor drivers, where translation is > > > managed within the driver through paging domains, external attach > > > means that translation is managed outside the driver, such as by > > > the hypervisor. 2. Identify the guest-visible device across VMM, > > > host pvIOMMU driver, and hypervisor namespaces. > > > 3. Identify the guest partition in the host pvIOMMU driver for > > > device attach hypercalls. > > > 4. Tie the device-attachment lifetime to the hypervisor partition. > > > 5. Coordinate guest-memory pinning and mapping for DMA between > > > MSHV and the external IOMMU domain attachment. > > > > > > External attach has a few caveats compared with KVM/QEMU, where > > > nesting is typically handled by the host IOMMU driver in one > > > transaction after the userspace VMM uses IOMMUFD to form nested > > > domains: > > > > > > 1. MSHV creates a temporal split between host and guest > > > device-domain attach. The host first attaches S2 through a > > > hypercall; later, if virtual IOMMU is present, the guest > > > allocates S1 and establishes nesting with MSHV directly > > > through a pvIOMMU or emulated vIOMMU. > > > 2. Guest-memory pinning before mapping is covered by the > > > MSHV/userspace VMM contract, not by the VFIO/IOMMUFD pin-and-map > > > DMA flow. 3. Device capabilities such as ATS and PASID need a > > > contract among MSHV, the userspace VMM, and the host pvIOMMU > > > driver. At the time of host external attach, only S2 is attached, > > > so the guest's later ATS/PASID usage is not yet known. For example, > > > whether to expose and enable PASID in the device could depend on > > > whether the userspace VMM creates a guest virtual IOMMU. > > > > > > This RFC proposes an IOMMUFD external attach model for those cases. > > > The normal Linux-managed paging or nested domain is not the object > > > that ultimately owns the translation context. Instead, userspace > > > identifies a VM/domain object, binds a physical device to a > > > VM-visible device identity, and asks the host pvIOMMU driver to > > > attach the device to an externally managed address space. > > > > > > The series makes that relationship explicit in IOMMUFD. The model > > > is anchored around a hypervisor vIOMMU object that represents the > > > per-VM partition abstraction. It introduces: > > > > > > 1. IOMMU_DOMAIN_EXTERNAL for externally managed translation > > > domains. 2. IOMMU_VIOMMU_TYPE_HYPERVISOR for the file-backed VM > > > partition. 3. IOMMU_HWPT_EXTERNAL for user-visible external type > > > IOMMU domains. > > > > > > It reuses the IOMMUFD vDEVICE object to carry the guest-VM-scoped > > > logical device ID visible to the hypervisor. > > > > > > > This is very similar to pKVM on arm64 also, where the IOMMU is managed > > by the hypervisor, and for device assignment, the host doesn't control > > it for the guest, but the hypervisor (in EL2), and there will be a > > channel between the guest and pKVM directly after the guest runs. > > > > The host only sets the virtual to physical topology (how many vIOMMUs, > > vSID -> SID mappings) and describes that for the hypervisor through > > hypercalls. > > In Android, we have an out of tree uAPI through KVM/VFIO bridge > > IOCTLs that proxies those hypercalls. > > > > In that case, the host just creates a virtual IOMMU and the guest sees > > a paravirtual one which runs with single stage collapsed translation, > > although I don't see a difference on the host side if nested > > translation was used beyond an argument change to the hypercalls. > > > By "argument change", do you mean that the host would pass the guest S1 > context in the device-attach hypercall for nested translation? > > IMHO, I don't see any change needed for the host-side attach between hw > nested and collapsed single stage, if guest and host attach are > split. I think it is up to pKVM or MSHV to handle guest virtual iommu > mapping for both cases. Although the hypervisor (pKVM, MSHV) is managing the guest IOMMU in that case, I believe the host should be able to decide the guest virtual toplology, as that will impact the firmware tables populated from the host for example, as in the nested case the guest will see an architectural SMMUv3 while in the collapsed case it will see a simple HVC based IOMMU. > > > My goal is to converge to IOMMUFD and I believe this series is the way > > forward, By relying on the vDEVICE virtual toplogy uAPI and the > > external attach introduced here. > > > > I will try to prototype something based on that to prove that it > > works. However that work has a dependency on the host SMMUv3 support > > [1] which needs to land first. > > > > [1] https://lore.kernel.org/all/20261015200903.2735565-1-smostafa@google.com/ > > > Same here, our pviommu root driver must land first. > https://lore.kernel.org/linux-iommu/20260929223622.778617-5-mrathor@linux.microsoft.com/ > > My next step is to rebase on Aneesh's v7 such that we have a converged > iommufd viommu layer, i will remove mshv specific helper registration > in this series. > https://lore.kernel.org/linux-iommu/20261008055955.4014342-1-aneesh.kumar@kernel.org/ > I see, I will add this to my review list also. Thanks, Mostafa