>-----Original Message-----
>From: Liu, Yi L <[email protected]>
>Subject: Re: [PATCH v2 2/3] intel_iommu: Reset pasid cache when system
>level reset
>
>On 2025/10/16 15:45, Zhenzhong Duan wrote:
>> Reset pasid cache when system level reset. Currently we don't have any
>> device supporting PASID yet. So all are PASID_0, its vtd_as is allocated
>> by PCI system and never removed, just mark pasid cache invalid.
>>
>> Signed-off-by: Yi Liu <[email protected]>
>> Signed-off-by: Zhenzhong Duan <[email protected]>
>> ---
>>   hw/i386/intel_iommu.c | 16 ++++++++++++++++
>>   hw/i386/trace-events  |  1 +
>>   2 files changed, 17 insertions(+)
>>
>> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
>> index c47f13b659..07bc0a749c 100644
>> --- a/hw/i386/intel_iommu.c
>> +++ b/hw/i386/intel_iommu.c
>> @@ -87,6 +87,21 @@ struct vtd_iotlb_key {
>>   static void vtd_address_space_refresh_all(IntelIOMMUState *s);
>>   static void vtd_address_space_unmap(VTDAddressSpace *as,
>IOMMUNotifier *n);
>>
>> +static void vtd_pasid_cache_reset_locked(IntelIOMMUState *s)
>> +{
>> +    VTDAddressSpace *vtd_as;
>> +    GHashTableIter as_it;
>> +
>> +    trace_vtd_pasid_cache_reset();
>> +
>> +    g_hash_table_iter_init(&as_it, s->vtd_address_spaces);
>> +    while (g_hash_table_iter_next(&as_it, NULL, (void **)&vtd_as)) {
>> +        VTDPASIDCacheEntry *pc_entry = &vtd_as->pasid_cache_entry;
>> +        pc_entry->valid = false;
>> +    }
>
>do you have any special reason to use this version? To me, the prior
>version looks better. I think global reset also need to be followed
>by switch as and as sync. right? The prior version supports it once
>patch 03 is applied.

During system reset, vtd_reset_exit() calls vtd_address_space_refresh_all() to 
do the same work, it's duplicated if I do it again in pach_cache_reset.

Thanks
Zhenzhong

Reply via email to