[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 12/12] AMD/IOMMU: miscellaneous DTE handling adjustments
On 30.07.2019 15:42, Andrew Cooper wrote: > On 25/07/2019 14:33, Jan Beulich wrote: >> --- a/xen/include/asm-x86/hvm/svm/amd-iommu-defs.h >> +++ b/xen/include/asm-x86/hvm/svm/amd-iommu-defs.h >> @@ -107,57 +107,60 @@ >> #define IOMMU_DEV_TABLE_INT_CONTROL_FORWARDED 0x1 >> #define IOMMU_DEV_TABLE_INT_CONTROL_TRANSLATED 0x2 >> >> +/* For now we always allocate maximum possible interrupt remapping tables. >> */ > > /* For now, we always allocate the maximum. 2048 remap entries. */ > > ? Sure, done. >> +#define IOMMU_INTREMAP_LENGTH 0xB > > Also, LENGTH isn't an appropriate name. This is actually the order of > the number of entries. As you're already changing the name, how about > s/LENGTH/ORDER/ here? I did consider this (and will change), but I didn't change it right away because of the resulting inconsistency on this line dte->int_tab_len = IOMMU_INTREMAP_ORDER; I had taken "length" to mean "encoded length" here, not "actual length". > If so, Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Thanks. > [Not related to this patch...] > > It has always occurred to me that we allocate silly quantities of memory > for interrupt remapping tables. If I've done my sums right, for Intel > we allocate 64k entries per IOMMU (256k RAM), whereas for AMD we > allocate 2048 entries per PCI function (32k RAM, now with the larger > format). Right, that's another thing I wanted to look into as a follow-on. I too did notice this. Depending what you mean by "PCI function" it may actually be worse than what you describe: It's not per PCI function of present devices, but per PCI function enumerated by the ACPI tables. On my box this means everything from 00:00.0 to ff:1f.7, which amounts to almost 2Gb if I'm not mistaken ("almost" because of some aliasing of devices, where only one table gets allocated for all the aliases). > The largest Intel system I've encountered (interrupt wise) is a few > thousand interrupts, split fairly evenly across the root-complex IOMMUs > (the PCH IOMMU not, because its mostly legacy IO behind there). > > For individual functions, I have never encountered a PCI function with > more than a dozen interrupts or so, so I think in practice we can get > away with allocating a 4k (32 entry) interrupt remap table in all cases. That's clearly a possibility. (I think you meant 256 entries per 4k though.) > It would probably make sense to default to allocating less space, and > providing a command line option to allocate max. Alternatively, we > could work this out as we walk the PCI topology, as it is encoded in > standards compliant ways in config space. To be honest, first of all I'd like to avoid allocating tables for devices which don't even exist. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |