Re: [RFC PATCH kvmtool 09/10] vfio/iommufd: Add viommu and vdevice objects

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mostafa Saleh <smostafa@xxxxxxxxxx> writes:

> On Tue, Jul 29, 2025 at 10:49:31AM +0530, Aneesh Kumar K.V wrote:
>> Mostafa Saleh <smostafa@xxxxxxxxxx> writes:
>> 
>> > On Sun, May 25, 2025 at 01:19:15PM +0530, Aneesh Kumar K.V (Arm) wrote:
>> >> This also allocates a stage1 bypass and stage2 translate table.
>> >
>> > So this makes IOMMUFD only working with SMMUv3?
>> >
>> > I don’t understand what is the point of this configuration? It seems to add
>> > extra complexity and extra hw constraints and no extra value.
>> >
>> > Not related to this patch, do you have plans to add some of the other iommufd
>> > features, I think things such as page faults might be useful?
>> >
>> 
>> The primary goal of adding viommu/vdevice support is to enable kvmtool
>> to serve as the VMM for ARM CCA secure device development. This requires
>> a viommu implementation so that a KVM file descriptor can be associated
>> with the corresponding viommu.
>> 
>> The full set of related patches is available here:
>> https://gitlab.arm.com/linux-arm/kvmtool-cca/-/tree/cca/tdisp-upstream-post-v1
>
> I see, but I don't understand why we need a nested setup in that case?
> How would having bypassed stage-1 change things?
>

I might be misunderstanding the viommu/vdevice setup, but I was under
the impression that it requires an `IOMMU_HWPT_ALLOC_NEST_PARENT`-type
HWPT allocation.

Based on that, I expected the viommu allocation to look something like this:

	alloc_viommu.size = sizeof(alloc_viommu);
	alloc_viommu.flags =  IOMMU_VIOMMU_KVM_FD;
	alloc_viommu.type = IOMMU_VIOMMU_TYPE_ARM_SMMUV3;
	alloc_viommu.dev_id = vdev->bound_devid;
	alloc_viommu.hwpt_id = alloc_hwpt.out_hwpt_id;
	alloc_viommu.kvm_vm_fd = kvm->vm_fd;

	if (ioctl(iommu_fd, IOMMU_VIOMMU_ALLOC, &alloc_viommu)) {

Could you clarify if this is the correct usage pattern, or whether a
different HWPT setup is expected here?

>
> Also, In case we do something like this, I'd suggest to make it clear
> for the command line that this is SMMUv3/CCA only, and maybe move
> some of the code to arm64/
>

My intent wasn't to make this SMMUv3-specific. Ideally, we could make
the IOMMU type a runtime option in `lkvm`.

The main requirement here is the ability to create a `vdevice` and
use that in the VFIO setup flow.

-aneesh





[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux