Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP7:GA
xen.32200
60d496ee-VT-d-dont-lose-errors-on-multi-IOMMU-f...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 60d496ee-VT-d-dont-lose-errors-on-multi-IOMMU-flush.patch of Package xen.32200
# Commit e7059776f9755b989a992d229c68c3d7778412be # Date 2021-06-24 16:30:06 +0200 # Author Jan Beulich <jbeulich@suse.com> # Committer Jan Beulich <jbeulich@suse.com> VT-d: don't lose errors when flushing TLBs on multiple IOMMUs While no longer an immediate problem with flushes no longer timing out, errors (if any) get properly reported by iommu_flush_iotlb_{dsi,psi}(). Overwriting such an error with, perhaps, a success indicator received from another IOMMU will misguide callers. Record the first error, but don't bail from the loop (such that further necessary invalidation gets carried out on a best effort basis). Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -633,7 +633,7 @@ static int __must_check iommu_flush_iotl struct iommu *iommu; bool_t flush_dev_iotlb; int iommu_domid; - int rc = 0; + int ret = 0; /* * No need pcideves_lock here because we have flush @@ -641,6 +641,8 @@ static int __must_check iommu_flush_iotl */ for_each_drhd_unit ( drhd ) { + int rc; + iommu = drhd->iommu; if ( !test_bit(iommu->index, &hd->arch.iommu_bitmap) ) @@ -663,13 +665,12 @@ static int __must_check iommu_flush_iotl flush_dev_iotlb); if ( rc > 0 ) - { iommu_flush_write_buffer(iommu); - rc = 0; - } + else if ( !ret ) + ret = rc; } - return rc; + return ret; } static int __must_check iommu_flush_iotlb_pages(struct domain *d,
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor