From: Vasant Hegde <vasant.hegde@amd.com>
To: Yi Liu <yi.l.liu@intel.com>, Jason Gunthorpe <jgg@ziepe.ca>
Cc: Joerg Roedel <joro@8bytes.org>,
"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>,
Will Deacon <will@kernel.org>,
Robin Murphy <robin.murphy@arm.com>,
Baolu Lu <baolu.lu@linux.intel.com>
Subject: Re: [RFC] iommu_ops->domain_alloc_paging() enhancement to support AMD IOMMU driver
Date: Mon, 15 Jul 2024 16:09:33 +0530 [thread overview]
Message-ID: <97538ddf-57e4-481c-9429-ab5a4b88710d@amd.com> (raw)
In-Reply-To: <71880aa8-adb9-4f3f-ba9a-7862e8d30b46@intel.com>
Hi,
On 7/11/2024 7:26 PM, Yi Liu wrote:
> On 2024/7/11 18:15, Vasant Hegde wrote:
>> Hi Yi,
>>
>>
>> On 7/3/2024 12:27 PM, Yi Liu wrote:
>>> On 2024/7/3 13:42, Vasant Hegde wrote:
>>>> Jason,
>>>>
>>>>
>>>> On 7/1/2024 10:56 PM, Jason Gunthorpe wrote:
>>>>> On Mon, Jul 01, 2024 at 04:18:01PM +0530, Vasant Hegde wrote:
.../...
>>>
>>> https://lore.kernel.org/kvm/20240412082121.33382-1-yi.l.liu@intel.com/
>>>
>>> BTW. For AMD, can a single device be attached to multiple V1 page table?
>>> IIRC. looks like AMD has only one V1 page table pointer per BDF. But there
>>> is a PASID table which has multiple cr3 page table pointers.
>>
>> Jason covered this part in his response. Basically AMD has two page table :
>> V1 which doesn't support PASID.
>> V2 which support PASID
>>
>> By default when host is booted it will be in V1 page table. What we are planning
>> is we will implement domain_alloc_paging() interface in AMD driver. As part of
>> that:
>> - PASID capable device will be placed in V2 page table, rest will be in V1
>> page table
>
> looks like the format of V1 and V2 page tables are different. Can the V2
> page table be attached to a device (RID) and used to do address translation
> for the DMAs w/o PASID? I have an impression that a RID can only use V1
> page table. I may be wrong here. :)
We can attach V2 page table to a device. DMAs without PASID will use GCR3[0]
(PASID zero).
V1 is AMD IOMMU specific, V2 is compatible with CPU page table hence it can
support PASID.
>
>> For UNMANAGED domain (like vfio-pci), we would need a indication from core layer
>> saying whether we want to allocate PASID capable domain or not. So that
>> internally we can allocate appropriate page table type.
>>
>> That means from VFIO layer we need to pass this detail to IOMMU layer.
>> For this part, I will start watching your patch. May be we can start discussion
>> in that thread itself.
>>
>
> yeah. Looks like you need to pass a hint to iommu driver for domain
> allocation. For the usage vfio+iommufd, it is fine as the domain_alloc_user
> accepts a flag. For legacy vfio (using vfio iommu type1) usage, it's a bit
> tough as the domain allocation is within kernel, userspace does not have
> any input on it so far. And vfio type1 does not expose the domain concept
> to userspace, it only exposes container which is kind of an address space
> object. This means no good way for userspace to control the domain
> allocation.
>
> If it's only a matter when PASID is enabled, perhaps we can skip vfio iommu
> type1 as it is not supposed to support PASID.
Right. My understanding is with vfio IOMMU we will not support PASID. SO it
should be fine.
-Vasant
next prev parent reply other threads:[~2024-07-15 10:39 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-28 6:43 [RFC] iommu_ops->domain_alloc_paging() enhancement to support AMD IOMMU driver Vasant Hegde
2024-06-28 12:23 ` Baolu Lu
2024-06-28 13:06 ` Robin Murphy
2024-06-28 17:08 ` Vasant Hegde
2024-06-28 17:58 ` Robin Murphy
2024-07-01 10:28 ` Vasant Hegde
2024-06-28 14:50 ` Vasant Hegde
2024-06-28 15:34 ` Jason Gunthorpe
2024-06-28 13:03 ` Jason Gunthorpe
2024-06-28 17:49 ` Vasant Hegde
2024-06-28 18:04 ` Jason Gunthorpe
2024-07-01 10:48 ` Vasant Hegde
2024-07-01 17:26 ` Jason Gunthorpe
2024-07-03 5:42 ` Vasant Hegde
2024-07-03 6:57 ` Yi Liu
2024-07-09 18:23 ` Jason Gunthorpe
2024-07-10 4:17 ` Yi Liu
2024-07-11 23:49 ` Jason Gunthorpe
2024-07-12 13:40 ` Robin Murphy
2024-07-12 13:53 ` Jason Gunthorpe
2024-07-12 15:12 ` Robin Murphy
2024-07-12 15:19 ` Jason Gunthorpe
2024-07-15 8:46 ` Yi Liu
2024-07-11 10:15 ` Vasant Hegde
2024-07-11 13:56 ` Yi Liu
2024-07-12 1:39 ` Baolu Lu
2024-07-12 2:43 ` Yi Liu
2024-07-15 10:39 ` Vasant Hegde [this message]
2024-07-16 7:43 ` Yi Liu
2024-07-16 13:41 ` Jason Gunthorpe
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=97538ddf-57e4-481c-9429-ab5a4b88710d@amd.com \
--to=vasant.hegde@amd.com \
--cc=baolu.lu@linux.intel.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@ziepe.ca \
--cc=joro@8bytes.org \
--cc=robin.murphy@arm.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=will@kernel.org \
--cc=yi.l.liu@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox