mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
x86/IO-APIC: fix build with gcc9
There are a number of pointless __packed attributes which cause gcc 9 to
legitimately warn:
utils.c: In function 'vtd_dump_iommu_info':
utils.c:287:33: error: converting a packed 'struct IO_APIC_route_entry' pointer (alignment 1) to a 'struct IO_APIC_route_remap_entry' pointer (alignment 8) may result in an unaligned pointer value [-Werror=address-of-packed-member]
287 | remap = (struct IO_APIC_route_remap_entry *) &rte;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
intremap.c: In function 'ioapic_rte_to_remap_entry':
intremap.c:343:25: error: converting a packed 'struct IO_APIC_route_entry' pointer (alignment 1) to a 'struct IO_APIC_route_remap_entry' pointer (alignment 8) may result in an unaligned pointer value [-Werror=address-of-packed-member]
343 | remap_rte = (struct IO_APIC_route_remap_entry *) old_rte;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
Simply drop these attributes. Take the liberty and also re-format the
structure definitions at the same time.
Reported-by: Charles Arnold <carnold@suse.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
679216943f
commit
ca9310b24e
1 file changed
+54
-53
@@ -33,42 +33,42 @@
|
||||
* The structure of the IO-APIC:
|
||||
*/
|
||||
union IO_APIC_reg_00 {
|
||||
u32 raw;
|
||||
struct __packed {
|
||||
u32 __reserved_2 : 14,
|
||||
LTS : 1,
|
||||
delivery_type : 1,
|
||||
__reserved_1 : 8,
|
||||
ID : 8;
|
||||
} bits;
|
||||
uint32_t raw;
|
||||
struct {
|
||||
unsigned int __reserved_2:14;
|
||||
unsigned int LTS:1;
|
||||
unsigned int delivery_type:1;
|
||||
unsigned int __reserved_1:8;
|
||||
unsigned int ID:8;
|
||||
} bits;
|
||||
};
|
||||
|
||||
union IO_APIC_reg_01 {
|
||||
u32 raw;
|
||||
struct __packed {
|
||||
u32 version : 8,
|
||||
__reserved_2 : 7,
|
||||
PRQ : 1,
|
||||
entries : 8,
|
||||
__reserved_1 : 8;
|
||||
} bits;
|
||||
uint32_t raw;
|
||||
struct {
|
||||
unsigned int version:8;
|
||||
unsigned int __reserved_2:7;
|
||||
unsigned int PRQ:1;
|
||||
unsigned int entries:8;
|
||||
unsigned int __reserved_1:8;
|
||||
} bits;
|
||||
};
|
||||
|
||||
union IO_APIC_reg_02 {
|
||||
u32 raw;
|
||||
struct __packed {
|
||||
u32 __reserved_2 : 24,
|
||||
arbitration : 4,
|
||||
__reserved_1 : 4;
|
||||
} bits;
|
||||
uint32_t raw;
|
||||
struct {
|
||||
unsigned int __reserved_2:24;
|
||||
unsigned int arbitration:4;
|
||||
unsigned int __reserved_1:4;
|
||||
} bits;
|
||||
};
|
||||
|
||||
union IO_APIC_reg_03 {
|
||||
u32 raw;
|
||||
struct __packed {
|
||||
u32 boot_DT : 1,
|
||||
__reserved_1 : 31;
|
||||
} bits;
|
||||
uint32_t raw;
|
||||
struct {
|
||||
unsigned int boot_DT:1;
|
||||
unsigned int __reserved_1:31;
|
||||
} bits;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -88,35 +88,36 @@ enum ioapic_irq_destination_types {
|
||||
dest_ExtINT = 7
|
||||
};
|
||||
|
||||
struct __packed IO_APIC_route_entry {
|
||||
__u32 vector : 8,
|
||||
delivery_mode : 3, /* 000: FIXED
|
||||
* 001: lowest prio
|
||||
* 111: ExtINT
|
||||
*/
|
||||
dest_mode : 1, /* 0: physical, 1: logical */
|
||||
delivery_status : 1,
|
||||
polarity : 1,
|
||||
irr : 1,
|
||||
trigger : 1, /* 0: edge, 1: level */
|
||||
mask : 1, /* 0: enabled, 1: disabled */
|
||||
__reserved_2 : 15;
|
||||
struct IO_APIC_route_entry {
|
||||
unsigned int vector:8;
|
||||
unsigned int delivery_mode:3; /*
|
||||
* 000: FIXED
|
||||
* 001: lowest prio
|
||||
* 111: ExtINT
|
||||
*/
|
||||
unsigned int dest_mode:1; /* 0: physical, 1: logical */
|
||||
unsigned int delivery_status:1;
|
||||
unsigned int polarity:1; /* 0: low, 1: high */
|
||||
unsigned int irr:1;
|
||||
unsigned int trigger:1; /* 0: edge, 1: level */
|
||||
unsigned int mask:1; /* 0: enabled, 1: disabled */
|
||||
unsigned int __reserved_2:15;
|
||||
|
||||
union { struct { __u32
|
||||
__reserved_1 : 24,
|
||||
physical_dest : 4,
|
||||
__reserved_2 : 4;
|
||||
} physical;
|
||||
union {
|
||||
struct {
|
||||
unsigned int __reserved_1:24;
|
||||
unsigned int physical_dest:4;
|
||||
unsigned int __reserved_2:4;
|
||||
} physical;
|
||||
|
||||
struct { __u32
|
||||
__reserved_1 : 24,
|
||||
logical_dest : 8;
|
||||
} logical;
|
||||
|
||||
/* used when Interrupt Remapping with EIM is enabled */
|
||||
__u32 dest32;
|
||||
} dest;
|
||||
struct {
|
||||
unsigned int __reserved_1:24;
|
||||
unsigned int logical_dest:8;
|
||||
} logical;
|
||||
|
||||
/* used when Interrupt Remapping with EIM is enabled */
|
||||
unsigned int dest32;
|
||||
} dest;
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||