hw/i386/x86-iommu: Fix endianness issue in x86_iommu_irq_to_msi_message()

The values in "msg" are assembled in host endian byte order (the other
field are also not swapped), so we must not swap the __addr_head here.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20230802135723.178083-6-thuth@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Peter Xu <peterx@redhat.com>
(cherry picked from commit 37cf5cecb0)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
Thomas Huth 2023-08-02 15:57:22 +02:00 committed by Michael Tokarev
parent fd02247083
commit b58abc4a2b

View File

@ -63,7 +63,7 @@ void x86_iommu_irq_to_msi_message(X86IOMMUIrq *irq, MSIMessage *msg_out)
msg.redir_hint = irq->redir_hint; msg.redir_hint = irq->redir_hint;
msg.dest = irq->dest; msg.dest = irq->dest;
msg.__addr_hi = irq->dest & 0xffffff00; msg.__addr_hi = irq->dest & 0xffffff00;
msg.__addr_head = cpu_to_le32(0xfee); msg.__addr_head = 0xfee;
/* Keep this from original MSI address bits */ /* Keep this from original MSI address bits */
msg.__not_used = irq->msi_addr_last_bits; msg.__not_used = irq->msi_addr_last_bits;