Hi Eric, >-----Original Message----- >From: Eric Auger <eric.au...@redhat.com> >Subject: Re: [PATCH v2 17/19] intel_iommu: Refresh pasid bind when either >SRTP or TE bit is changed > >Hi Zhenzhong, > >On 6/20/25 9:18 AM, Zhenzhong Duan wrote: >> From: Yi Liu <yi.l....@intel.com> >> >> When either 'Set Root Table Pointer' or 'Translation Enable' bit is changed, >> the pasid bindings on host side become stale and need to be updated. >> >> Introduce a helper function vtd_refresh_pasid_bind() for that purpose. >nit I would avoid introducing yet another terminology, ie. refresh. If >it is a replay let's keep replay and precisely explain what the replay does. >vtd_replay_pasid_bindings?
Will do > > >> >> Signed-off-by: Yi Liu <yi.l....@intel.com> >> Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com> >> --- >> hw/i386/intel_iommu.c | 23 +++++++++++++++++++++++ >> 1 file changed, 23 insertions(+) >> >> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c >> index d1fa395274..0b322078cc 100644 >> --- a/hw/i386/intel_iommu.c >> +++ b/hw/i386/intel_iommu.c >> @@ -90,6 +90,7 @@ 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_refresh_pasid_bind(IntelIOMMUState *s); >> >> static void vtd_pasid_cache_reset_locked(IntelIOMMUState *s); >> static void vtd_pasid_cache_sync(IntelIOMMUState *s, >> @@ -3066,6 +3067,7 @@ static void >vtd_handle_gcmd_srtp(IntelIOMMUState *s) >> vtd_set_clear_mask_long(s, DMAR_GSTS_REG, 0, VTD_GSTS_RTPS); >> vtd_reset_caches(s); >> vtd_address_space_refresh_all(s); >> + vtd_refresh_pasid_bind(s); >> } >> >> /* Set Interrupt Remap Table Pointer */ >> @@ -3100,6 +3102,7 @@ static void >vtd_handle_gcmd_te(IntelIOMMUState *s, bool en) >> >> vtd_reset_caches(s); >> vtd_address_space_refresh_all(s); >> + vtd_refresh_pasid_bind(s); >> } >> >> /* Handle Interrupt Remap Enable/Disable */ >> @@ -3813,6 +3816,26 @@ static void >vtd_replay_guest_pasid_bindings(IntelIOMMUState *s, >> } >> } >> >> +static void vtd_refresh_pasid_bind(IntelIOMMUState *s) >> +{ >> + VTDPASIDCacheInfo pc_info = { .error_happened = false, >> + .type = >VTD_PASID_CACHE_GLOBAL_INV }; >> + >> + /* >> + * Only when dmar is enabled, should pasid bindings replayed, >> + * otherwise no need to replay. >> + */ >I am not sure the above comment is necessary. Will delete it Thanks Zhenzhong