>-----Original Message-----
>From: Eric Auger <eric.au...@redhat.com>
>Subject: Re: [PATCH v2 13/19] intel_iommu: Stick to system MR for
>IOMMUFD backed host device when x-fls=on
>
>
>
>On 6/20/25 9:18 AM, Zhenzhong Duan wrote:
>> When guest in scalable mode and x-flts=on, we stick to system MR for
>IOMMUFD
>when guest works in scalable mode ?
>> backed host device. Then its default hwpt contains GPA->HPA mappings
>which is
>> used directly if PGTT=PT and used as nested parent if PGTT=FLT. Otherwise
>> fallback to original processing.
>>
>> Suggested-by: Yi Liu <yi.l....@intel.com>
>> Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
>> ---
>>  hw/i386/intel_iommu.c | 24 ++++++++++++++++++++++++
>>  1 file changed, 24 insertions(+)
>>
>> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
>> index ed71bb8ec7..be01f8885f 100644
>> --- a/hw/i386/intel_iommu.c
>> +++ b/hw/i386/intel_iommu.c
>> @@ -1779,6 +1779,7 @@ static bool
>vtd_dev_pt_enabled(IntelIOMMUState *s, VTDContextEntry *ce,
>>               */
>>              return false;
>>          }
>> +
>spurious new line

Will fix.

>>          return (VTD_PE_GET_TYPE(&pe) == VTD_SM_PASID_ENTRY_PT);
>>      }
>>
>> @@ -1790,10 +1791,33 @@ static bool
>vtd_as_pt_enabled(VTDAddressSpace *as)
>>  {
>>      IntelIOMMUState *s;
>>      VTDContextEntry ce;
>> +    struct vtd_as_key key = {
>> +        .bus = as->bus,
>> +        .devfn = as->devfn,
>> +    };
>>
>>      assert(as);
>>
>>      s = as->iommu_state;
>> +
>> +    /*
>> +     * When guest in scalable mode and x-flts=on, we stick to system MR
>ditto

That's strange, I didn't see spurious new line here.

>> +     * for IOMMUFD backed host device. Then its default hwpt contains
>> +     * GPA->HPA mappings which is used directly if PGTT=PT and used as
>> +     * nested parent if PGTT=FLT. Otherwise fallback to original
>fall back here and above
>
>This comment sounds a little bit unrelated to the below implementation
>which does not refer to system MR. how does the search for the hiod
>relate to that. I would refocus the comment.

vtd_as_pt_enabled()'s return value determines which MR to switch to.
See vtd_switch_address_space(). How about adding a comment:

+/*
+ * vtd_switch_address_space() calls vtd_as_pt_enabled() to determine which
+ * MR to switch to. Switch to system MR if return true, iommu MR otherwise.
+ */
 static bool vtd_as_pt_enabled(VTDAddressSpace *as)
 {

With this comment, we know the return value impact MR switch and this patch
deal with return value.

Thanks
Zhenzhong

Reply via email to