Hi, On 10/13/25 1:00 AM, Sairaj Kodilkar wrote:
This series provide fixes for following two issues:1. AMD IOMMU fails to detect the devices when they are attached to PCI bus with bus id != 0. e.g. With following command line, dhclient command fails inside the guest -device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x5 \ -netdev user,id=USER0,hostfwd=tcp::3333-:22 \ -device virtio-net-pci,id=vnet0,iommu_platform=on,disable-legacy=on,romfile=,netdev=USER0,bus=pci.1,addr=0 \ 2. Current AMD IOMMU supports IOVAs upto 60 bit which cause failure while setting up the devices when guest is booted with command line "iommu.forcedac=1". One example of the failure is when there are two virtio ethernet devices attached to the guest with command line-netdev user,id=USER0 \-netdev user,id=USER1 \ -device virtio-net-pci,id=vnet0,iommu_platform=on,disable-legacy=on,romfile=,netdev=USER0 \ -device virtio-net-pci,id=vnet1,iommu_platform=on,disable-legacy=on,romfile=,netdev=USER1 \In this case dhclient fails for second device with following dmesg [ 24.802644] virtio_net virtio0 enp0s1: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 5664000 usecs ago[ 29.856716] virtio_net virtio0 enp0s1: NETDEV WATCHDOG: CPU: 59: transmit queue 0 timed out 10720 ms [ 29.858585] virtio_net virtio0 enp0s1: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 10720000 usecs ago ------------------------------------------------------------------------------- Change log: > ---------- P1:
I generally like to include a link to the previous version. Not a must, but makes it easier others to follow the series history.
- Use fixed type uint8_t for devfn - Use uintptr_t instead of uint64_t - Build hash key using lower 56 bits of bus pointer and 8 bits of devfn - Use gboolean instead of int for amdvi_find_as_by_devid - Update comments - Use IOMMU_NOTIFIER_NONE instead of IOMMU_NONE P2: - Reword commit message - Correctly initialize `struct amdvi_iotlb_key` - Remove unused macro
Before sending a new revision, ideally you should run a smoke test (or more thorough testing depending on the scope of the changes). But at the bare minimum please make sure a clean build is done. There are trivial issues in both patches that cause compilation errors. See the replies for details.
Thank you, Alejandro
------------------------------------------------------------------------------- Base commit: (qemu uptream) eb7abb4a719f ------------------------------------------------------------------------------- Sairaj Kodilkar (2): amd_iommu: Fix handling device on buses != 0 amd_iommu: Support 64 bit address for IOTLB lookup hw/i386/amd_iommu.c | 179 +++++++++++++++++++++++++++----------------- hw/i386/amd_iommu.h | 6 +- 2 files changed, 113 insertions(+), 72 deletions(-)
