On Wed, Jul 03, 2024 at 04:35:30PM +0200, Christoph Hellwig wrote: > On Wed, Jul 03, 2024 at 01:52:53PM +0300, Leon Romanovsky wrote: > > On Wed, Jul 03, 2024 at 07:42:38AM +0200, Christoph Hellwig wrote: > > > I just tried to boot this on my usual qemu test setup with emulated > > > nvme devices, and it dead-loops with messages like this fairly late > > > in the boot cycle: > > > > > > [ 43.826627] iommu: unaligned: iova 0xfff7e000 pa 0x000000010be33650 size 0x1000 min_pagesz 0x1000 > > > [ 43.826982] dma_mapping_error -12 > > > > > > passing intel_iommu=off instead of intel_iommu=on (expectedly) makes > > > it go away. > > > > Can you please share your kernel command line and qemu? > > On my and Chaitanya setups it works fine. > > qemu-system-x86_64 \ > -nographic \ > -enable-kvm \ > -m 6g \ > -smp 4 \ > -cpu host \ > -M q35,kernel-irqchip=split \ > -kernel arch/x86/boot/bzImage \ > -append "root=/dev/vda console=ttyS0,115200n8 intel_iommu=on" \ > -device intel-iommu,intremap=on \ > -device ioh3420,multifunction=on,bus=pcie.0,id=port9-0,addr=9.0,chassis=0 \ > -blockdev driver=file,cache.direct=on,node-name=root,filename=/home/hch/images/bookworm.img \ > -blockdev driver=host_device,cache.direct=on,node-name=test,filename=/dev/nvme0n1p4 \ > -device virtio-blk,drive=root \ > -device nvme,drive=test,serial=1234 Thanks, Chaitanya will take a look. If we put aside this issue, do you think that the proposed API is the right one? BTW, I have more fancy command line, it is probably the root cause of working/not-working: /opt/simx/bin/qemu-system-x86_64 -append root=/dev/root rw ignore_loglevel rootfstype=9p rootflags="cache=loose,trans=virtio" earlyprintk=serial,ttyS0,115200 console=hvc0 noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off mitigations=off panic_on_warn=1 intel_iommu=on iommu=nopt iommu.forcedac=true vfio_iommu_type1.allow_unsafe_interrupts=1 systemd.hostname=mtl-leonro-l-vm -chardev stdio,id=stdio,mux=on,signal=off -cpu host -device virtio-rng-pci -device virtio-balloon-pci -device isa-serial,chardev=stdio -device virtio-serial-pci -device virtconsole,chardev=stdio -device virtio-9p-pci,fsdev=host_fs,mount_tag=/dev/root -device virtio-9p-pci,fsdev=host_bind_fs0,mount_tag=bind0 -device virtio-9p-pci,fsdev=host_bind_fs1,mount_tag=bind1 -device virtio-9p-pci,fsdev=host_bind_fs2,mount_tag=bind2 -device intel-iommu,intremap=on -device connectx7 -device nvme,drive=drv0,serial=foo -drive file=/home/leonro/.cache/mellanox/mkt/nvme-1g.raw,if=none,id=drv0,format=raw -enable-kvm -fsdev local,id=host_bind_fs1,security_model=none,path=/logs -fsdev local,id=host_fs,security_model=none,path=/mnt/self -fsdev local,id=host_bind_fs0,security_model=none,path=/plugins -fsdev local,id=host_bind_fs2,security_model=none,path=/home/leonro -fw_cfg etc/sercon-port,string=2 -kernel /home/leonro/src/kernel/arch/x86/boot/bzImage -m 5G -machine q35,kernel-irqchip=split -mon chardev=stdio -net nic,model=virtio,macaddr=52:54:01:d8:e5:f9 -net user,hostfwd=tcp:127.0.0.1:46645-:22 -no-reboot -nodefaults -nographic -smp 16 -vga none > >