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> |
||
|---|---|---|
| .. | ||
| apic-msidef.h | ||
| apic.h | ||
| apic_internal.h | ||
| hostmem-epc.h | ||
| intel_iommu.h | ||
| microvm.h | ||
| pc.h | ||
| sgx-epc.h | ||
| topology.h | ||
| vmport.h | ||
| x86-iommu.h | ||
| x86.h | ||
| xen_arch_hvm.h | ||