Message ID | 5D14DE6A020000780023B97B@prv1-mh.provo.novell.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | x86: AMD x2APIC support | expand |
On 27/06/2019 16:19, Jan Beulich wrote: > The common case is all IOMMUs having the same features. Log them only > for the first IOMMU, or for any that have a differing feature set. > > Requested-by: Andrew Cooper <andrew.cooper3@citrix.com> > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
On Thu, Jun 27, 2019 at 09:19:06AM -0600, Jan Beulich wrote: > The common case is all IOMMUs having the same features. Log them only > for the first IOMMU, or for any that have a differing feature set. > > Requested-by: Andrew Cooper <andrew.cooper3@citrix.com> > Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Brian Woods <brian.woods@amd.com> > --- > v2: New. > > --- a/xen/drivers/passthrough/amd/iommu_detect.c > +++ b/xen/drivers/passthrough/amd/iommu_detect.c > @@ -62,6 +62,7 @@ void __init get_iommu_features(struct am > { > u32 low, high; > int i = 0 ; > + const struct amd_iommu *first; > static const char *__initdata feature_str[] = { > "- Prefetch Pages Command", > "- Peripheral Page Service Request", > @@ -89,6 +90,11 @@ void __init get_iommu_features(struct am > > iommu->features = ((u64)high << 32) | low; > > + /* Don't log the same set of features over and over. */ > + first = list_first_entry(&amd_iommu_head, struct amd_iommu, list); > + if ( iommu != first && iommu->features == first->features ) > + return; > + > printk("AMD-Vi: IOMMU Extended Features:\n"); > > while ( feature_str[i] ) > > >
--- a/xen/drivers/passthrough/amd/iommu_detect.c +++ b/xen/drivers/passthrough/amd/iommu_detect.c @@ -62,6 +62,7 @@ void __init get_iommu_features(struct am { u32 low, high; int i = 0 ; + const struct amd_iommu *first; static const char *__initdata feature_str[] = { "- Prefetch Pages Command", "- Peripheral Page Service Request", @@ -89,6 +90,11 @@ void __init get_iommu_features(struct am iommu->features = ((u64)high << 32) | low; + /* Don't log the same set of features over and over. */ + first = list_first_entry(&amd_iommu_head, struct amd_iommu, list); + if ( iommu != first && iommu->features == first->features ) + return; + printk("AMD-Vi: IOMMU Extended Features:\n"); while ( feature_str[i] )
The common case is all IOMMUs having the same features. Log them only for the first IOMMU, or for any that have a differing feature set. Requested-by: Andrew Cooper <andrew.cooper3@citrix.com> Signed-off-by: Jan Beulich <jbeulich@suse.com> --- v2: New.