[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 05/10] AMD/IOMMU: introduce 128-bit IRTE non-guest-APIC IRTE format
On 02.07.2019 16:41, Andrew Cooper wrote: > On 27/06/2019 16:21, Jan Beulich wrote: >> --- a/xen/drivers/passthrough/amd/iommu_intr.c >> +++ b/xen/drivers/passthrough/amd/iommu_intr.c >> @@ -40,12 +40,45 @@ union irte32 { >> >> -#define INTREMAP_TABLE_ORDER 1 >> +union irte_cptr { >> + const void *ptr; >> + const union irte32 *ptr32; >> + const union irte128 *ptr128; >> +} __transparent__; >> + >> +#define INTREMAP_TABLE_ORDER (irte_mode == irte32 ? 1 : 3) > > This is problematic for irte_mode == irteUNK. As this "constant" is > used in exactly two places, I'd suggest a tiny static function along the > same lines as {get,update}_intremap_entry(), which can sensibly prevent > code looking for a size before irte_mode is set up. This was indeed a problem, and requires quite a bit of further rework: Things only worked (almost) correctly because for irteUNK we'd also set up a table fitting 128-bit entries. The issue is that amd_iommu_update_ivrs_mapping_acpi() gets called (in the original code immediately) ahead of amd_iommu_setup_ioapic_remapping(), yet so far it is the latter what establishes irte_mode. I'm now trying to figure whether / how far it would be feasible to go by per-IOMMU settings rather than the global mode indicator. But that in turn requires setting GAEn earlier. Another option (or maybe an additional requirement) is to hand through the "xt" flag to further functions. 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 |