da6d0af41d
The first bitfield here is supposed to be used as a 64-bit equivalent
to the "uint64_t msi_addr" in the union. To make this work correctly
on big endian hosts, too, the __addr_hi field has to be part of the
bitfield, and the the bitfield members must be declared with "uint64_t"
instead of "uint32_t" - otherwise the values are placed in the wrong
bytes on big endian hosts.
Same applies to the 32-bit "msi_data" field: __resved1 must be part
of the bitfield, and the members must be declared with "uint32_t"
instead of "uint16_t".
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20230802135723.178083-7-thuth@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
(cherry picked from commit
|
||
---|---|---|
.. | ||
apic_internal.h | ||
apic-msidef.h | ||
apic.h | ||
hostmem-epc.h | ||
ich9.h | ||
intel_iommu.h | ||
ioapic_internal.h | ||
ioapic.h | ||
microvm.h | ||
pc.h | ||
sgx-epc.h | ||
topology.h | ||
vmport.h | ||
x86-iommu.h | ||
x86.h |