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@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
void cf_check amd_iommu_resume(void)
{
struct amd_iommu *iommu;
+ bool invalidate_all = true;
for_each_amd_iommu ( iommu )
{
*/
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();