[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen stable-4.16] iommu/amd-vi: fix checking for Invalidate All support in amd_iommu_resume()
commit 606331e6562f7b64ef0be1fd2596423c0ae209da Author: Roger Pau Monné <roger.pau@xxxxxxxxxx> AuthorDate: Mon Jul 17 08:34:33 2023 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Mon Jul 17 08:34:33 2023 +0200 iommu/amd-vi: fix checking for Invalidate All support in amd_iommu_resume() The iommu local variable does not point to to a valid amd_iommu element after the call to for_each_amd_iommu(). Instead check whether any IOMMU on the system doesn't support Invalidate All in order to perform the per-domain and per-device flushes. Fixes: 9c46139de889 ('amd iommu: Support INVALIDATE_IOMMU_ALL command.') Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> master commit: 5ecbb779748a56495f2c892f0610d57dd623c7cd master date: 2023-06-13 14:41:32 +0200 --- xen/drivers/passthrough/amd/iommu_init.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthrough/amd/iommu_init.c index 559a734bda..ca791d4e54 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -1587,6 +1587,7 @@ void amd_iommu_crash_shutdown(void) void amd_iommu_resume(void) { struct amd_iommu *iommu; + bool invalidate_all = true; for_each_amd_iommu ( iommu ) { @@ -1596,10 +1597,12 @@ void amd_iommu_resume(void) */ disable_iommu(iommu); enable_iommu(iommu); + if ( !iommu->features.flds.ia_sup ) + invalidate_all = false; } /* flush all cache entries after iommu re-enabled */ - if ( !iommu->features.flds.ia_sup ) + if ( !invalidate_all ) { invalidate_all_devices(); invalidate_all_domain_pages(); -- generated by git-patchbot for /home/xen/git/xen.git#stable-4.16
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |