>-----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
