On 10/15/2025 2:57 AM, Alejandro Jimenez wrote:
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.
Hi Alejandro,
Yep I did that, but I think that somehow I tested a different branch
thats why failed to catch these errors.
Sorry for inconvenience. Will take care of it in future !
Thanks
Sairaj
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(-)