[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] IOMMU/x86: fix build with old gcc after IO-APIC RTE changes
commit 38ba0466a1e262edd031500d24919fbf4e48c794 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Thu Aug 17 16:25:51 2023 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Thu Aug 17 16:25:51 2023 +0200 IOMMU/x86: fix build with old gcc after IO-APIC RTE changes Old gcc (up to at least 4.3.4) won't cope with initializers involving unnamed struct/union fields. Fixes: 3e033172b025 ("x86/iommu: pass full IO-APIC RTE for remapping table update") Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/drivers/passthrough/amd/iommu_intr.c | 6 ++++-- xen/drivers/passthrough/vtd/intremap.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/xen/drivers/passthrough/amd/iommu_intr.c b/xen/drivers/passthrough/amd/iommu_intr.c index e83a2a932a..d9eefcd8e4 100644 --- a/xen/drivers/passthrough/amd/iommu_intr.c +++ b/xen/drivers/passthrough/amd/iommu_intr.c @@ -321,8 +321,7 @@ static int update_intremap_entry_from_ioapic( void cf_check amd_iommu_ioapic_update_ire( unsigned int apic, unsigned int pin, uint64_t rte) { - struct IO_APIC_route_entry old_rte; - struct IO_APIC_route_entry new_rte = { .raw = rte }; + struct IO_APIC_route_entry old_rte, new_rte; int seg, bdf, rc; struct amd_iommu *iommu; unsigned int idx; @@ -331,6 +330,9 @@ void cf_check amd_iommu_ioapic_update_ire( if ( idx == MAX_IO_APICS ) return; + /* Not the initializer, for old gcc to cope. */ + new_rte.raw = rte; + /* get device id of ioapic devices */ bdf = ioapic_sbdf[idx].bdf; seg = ioapic_sbdf[idx].seg; diff --git a/xen/drivers/passthrough/vtd/intremap.c b/xen/drivers/passthrough/vtd/intremap.c index 706abefacc..c504852eb8 100644 --- a/xen/drivers/passthrough/vtd/intremap.c +++ b/xen/drivers/passthrough/vtd/intremap.c @@ -432,8 +432,7 @@ unsigned int cf_check io_apic_read_remap_rte( void cf_check io_apic_write_remap_rte( unsigned int apic, unsigned int pin, uint64_t rte) { - struct IO_xAPIC_route_entry new_rte = { .raw = rte }; - struct IO_xAPIC_route_entry old_rte = { }; + struct IO_xAPIC_route_entry old_rte = {}, new_rte; struct vtd_iommu *iommu = ioapic_to_iommu(IO_APIC_ID(apic)); bool masked = true; int rc; @@ -453,6 +452,9 @@ void cf_check io_apic_write_remap_rte( } } + /* Not the initializer, for old gcc to cope. */ + new_rte.raw = rte; + rc = ioapic_rte_to_remap_entry(iommu, apic, pin, &old_rte, new_rte); if ( rc ) { -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |