qemu/include/hw/i386
Thomas Huth 642ba89672 hw/i386/intel_iommu: Fix endianness problems related to VTD_IR_TableEntry
The code already tries to do some endianness handling here, but
currently fails badly:
- While it already swaps the data when logging errors / tracing, it fails
  to byteswap the value before e.g. accessing entry->irte.present
- entry->irte.source_id is swapped with le32_to_cpu(), though this is
  a 16-bit value
- The whole union is apparently supposed to be swapped via the 64-bit
  data[2] array, but the struct is a mixture between 32 bit values
  (the first 8 bytes) and 64 bit values (the second 8 bytes), so this
  cannot work as expected.

Fix it by converting the struct to two proper 64-bit bitfields, and
by swapping the values only once for everybody right after reading
the data from memory.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20230802135723.178083-3-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>
2023-08-03 16:06:49 -04:00
..
apic_internal.h hw/intc: Extract the IRQ counting functions into a separate file 2023-01-13 16:22:57 +01:00
apic-msidef.h i386/msi: Correct mask of destination ID in MSI address 2017-12-01 18:28:15 +02:00
apic.h hw/intc: Extract the IRQ counting functions into a separate file 2023-01-13 16:22:57 +01:00
hostmem-epc.h hostmem: Add hostmem-epc as a backend for SGX EPC 2021-09-30 14:50:19 +02:00
intel_iommu.h hw/i386/intel_iommu: Fix endianness problems related to VTD_IR_TableEntry 2023-08-03 16:06:49 -04:00
microvm.h Revert "x86: don't let decompressed kernel image clobber setup_data" 2023-03-02 03:10:46 -05:00
pc.h hw/i386/pc: Remove PC_MACHINE_DEVMEM_REGION_SIZE 2023-07-12 09:25:37 +02:00
sgx-epc.h include: Include headers where needed 2023-01-08 01:54:22 -05:00
topology.h Revert "hw/i386: Update structures to save the number of nodes per package" 2020-09-02 07:29:26 -04:00
vmport.h hw/i386/vmport: Drop superfluous parenthesis around function typedef 2020-09-18 13:49:54 -04:00
x86-iommu.h include/hw/pci: Break inclusion loop pci_bridge.h and cxl.h 2023-01-08 01:54:22 -05:00
x86.h include/hw/i386: Clean up includes in x86.h 2023-03-07 14:30:42 +01:00
xen_arch_hvm.h xen-hvm: reorganize xen-hvm and move common function to xen-hvm-common 2023-06-15 16:45:59 -07:00