Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-73074

Guest (4k kernel) crashes when booting with virtio-iommu, virtio-blk on 64k host

    • Icon: Bug Bug
    • Resolution: Won't Do
    • Icon: Minor Minor
    • None
    • rhel-9.6
    • qemu-kvm / Devices
    • Yes
    • Low
    • 1
    • rhel-sst-virt-arm
    • ssg_virtualization
    • 2
    • False
    • Hide

      None

      Show
      None
    • None
    • Virt ARM 25-1
    • None
    • None
    • aarch64
    • None

      What were you trying to do that didn't work?

      On 64k host, boot a VM (virtio_blk and 4k guest kernel) with virtio-iommu device and enable iommu for some devices, like virtio-gpu-pci, virtio-rng-pci, virtio-blk-pci, virtio-net-pci, then vm crashes.

      Please provide the package NVR for which the bug is seen:

      kernel-5.14.0-545.el9.aarch64+64k
      qemu-kvm-9.1.0.8.el9
      edk2-aarch64-20241117-1.el9.noarch

      How reproducible:

      50%

      Steps to reproduce

      1. Boot a guest with below:

        MALLOC_PERTURB_=1 /usr/libexec/qemu-kvm \

        -S \

        -name 'avocado-vt-vm1' \

        -sandbox on,elevateprivileges=deny,obsolete=deny,resourcecontrol=deny,spawn=deny \

        -blockdev '{"node-name": "file_aavmf_code", "driver": "file", "filename": "/usr/share/edk2/aarch64/QEMU_EFI-silent-pflash.qcow2", "auto-read-only": true, "discard": "unmap"}' \

        -blockdev '{"node-name": "drive_aavmf_code", "driver": "qcow2", "read-only": true, "file": "file_aavmf_code"}' \

        -blockdev '{"node-name": "file_aavmf_vars", "driver": "file", "filename": "/root/avocado/data/avocado-vt/avocado-vt-vm1_rhel960-aarch64-4k-virtio_qcow2_filesystem_VARS.qcow2", "auto-read-only": true, "discard": "unmap"}' \

        -blockdev '{"node-name": "drive_aavmf_vars", "driver": "qcow2", "read-only": false, "file": "file_aavmf_vars"}' \

        -machine virt,gic-version=host,its=on,ras=on,pflash0=drive_aavmf_code,pflash1=drive_aavmf_vars,memory-backend=mem-machine_mem \

        -device '{"id": "pcie-root-port-0", "driver": "pcie-root-port", "multifunction": true, "bus": "pcie.0", "addr": "0x1", "chassis": 1}' \

        -device '{"id": "pcie-pci-bridge-0", "driver": "pcie-pci-bridge", "addr": "0x0", "bus": "pcie-root-port-0"}' \

        -nodefaults \

        -device '{"driver": "virtio-iommu-pci", "bus": "pcie.0", "addr": "0x2"}' \

        -device '{"id": "pcie-root-port-1", "port": 1, "driver": "pcie-root-port", "addr": "0x1.0x1", "bus": "pcie.0", "chassis": 2}' \

        -device '{"driver": "virtio-gpu-pci", "bus": "pcie-root-port-1", "addr": "0x0", "iommu_platform": true}' \

        -m 8192 \

        -object '{"size": 8589934592, "id": "mem-machine_mem", "qom-type": "memory-backend-ram"}' \

        -smp 4,maxcpus=4,cores=2,threads=1,clusters=1,sockets=2 \

        -cpu 'host' \

        -chardev socket,id=qmp_id_qmpmonitor1,server=on,path=/var/tmp/avocado_4b1x0zf8/monitor-qmpmonitor1-20250106-095947-suQYMMpx,wait=off \

        -mon chardev=qmp_id_qmpmonitor1,mode=control \

        -chardev socket,id=qmp_id_catch_monitor,server=on,path=/var/tmp/avocado_4b1x0zf8/monitor-catch_monitor-20250106-095947-suQYMMpx,wait=off \

        -mon chardev=qmp_id_catch_monitor,mode=control \

        -serial unix:'/var/tmp/avocado_4b1x0zf8/serial-serial0-20250106-095947-suQYMMpx',server=on,wait=off \

        -object '{"qom-type": "rng-random", "filename": "/dev/urandom", "id": "passthrough-7jkjt0KF"}' \

        -device '{"id": "pcie-root-port-2", "port": 2, "driver": "pcie-root-port", "addr": "0x1.0x2", "bus": "pcie.0", "chassis": 3}' \

        -device '{"driver": "virtio-rng-pci", "id": "virtio-rng-VhKeD3Gx", "rng": "passthrough-7jkjt0KF", "bus": "pcie-root-port-2", "addr": "0x0", "iommu_platform": true}' \

        -device '{"id": "pcie-root-port-3", "port": 3, "driver": "pcie-root-port", "addr": "0x1.0x3", "bus": "pcie.0", "chassis": 4}' \

        -device '{"driver": "qemu-xhci", "id": "usb1", "bus": "pcie-root-port-3", "addr": "0x0"}' \

        -device '{"driver": "usb-tablet", "id": "usb-tablet1", "bus": "usb1.0", "port": "1"}' \

        -blockdev '{"node-name": "file_image1", "driver": "file", "auto-read-only": true, "discard": "unmap", "aio": "threads", "filename": "/home/kvm_autotest_root/images/rhel960-aarch64-4k-virtio.qcow2", "cache": {"direct": true, "no-flush": false}}' \

        -blockdev '

        Unknown macro: {"node-name"}
        ' \

        -device '{"id": "pcie-root-port-4", "port": 4, "driver": "pcie-root-port", "addr": "0x1.0x4", "bus": "pcie.0", "chassis": 5}' \

        -device '{"driver": "virtio-blk-pci", "id": "image1", "drive": "drive_image1", "bootindex": 0, "write-cache": "on", "bus": "pcie-root-port-4", "addr": "0x0", "iommu_platform": true}' \

        -device '{"id": "pcie-root-port-5", "port": 5, "driver": "pcie-root-port", "addr": "0x1.0x5", "bus": "pcie.0", "chassis": 6}' \

        -device '{"driver": "virtio-net-pci", "mac": "9a:4e:54:79:bd:5e", "rombar": 0, "id": "id6RqcTt", "netdev": "idRoaeaN", "bus": "pcie-root-port-5", "addr": "0x0", "iommu_platform": true}' \

        -netdev '{"id": "idRoaeaN", "type": "tap", "vhost": true, "vhostfd": "16", "fd": "10"}' \

        -vnc :0 \

        -rtc base=utc,clock=host \

        -chardev socket,id=char_vtpm_avocado-vt-vm1_tpm0,path=/root/avocado/data/avocado-vt/swtpm/avocado-vt-vm1_tpm0_swtpm.sock \

        -tpmdev emulator,chardev=char_vtpm_avocado-vt-vm1_tpm0,id=emulator_vtpm_avocado-vt-vm1_tpm0 \

        -device '{"id": "tpm-tis-device_vtpm_avocado-vt-vm1_tpm0", "tpmdev": "emulator_vtpm_avocado-vt-vm1_tpm0", "driver": "tpm-tis-device"}' \

        -enable-kvm \

        -device '{"id": "pcie-root-port-6", "port": 6, "driver": "pcie-root-port", "addr": "0x1.0x6", "bus": "pcie.0", "chassis": 7}' \

        -device '{"driver": "virtio-balloon-pci", "id": "balloon0", "bus": "pcie-root-port-6", "addr": "0x0"}' \

        -device '{"id": "pcie_extra_root_port_0", "driver": "pcie-root-port", "multifunction": true, "bus": "pcie.0", "addr": "0x3", "chassis": 8}' \

        -device '{"id": "pcie_extra_root_port_1", "driver": "pcie-root-port", "addr": "0x3.0x1", "bus": "pcie.0", "chassis": 9}'

      1. Then found vm kernel crash with below trace
        #[stdlog] [ 0.499037] WARNING: CPU: 1 PID: 1 at drivers/iommu/iommu.c:3012 iommu_setup_default_domain+0x1b4/0x2c4
        [stdlog] [ 0.499044] Modules linked in:
        [stdlog] [ 0.499046] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.14.0-545.el9.aarch64 #1
        [stdlog] [ 0.499048] Hardware name: Red Hat KVM, BIOS edk2-20241117-1.el9 11/17/2024
        [stdlog] [ 0.499049] pstate: 60400005 (nZCv daif +PAN UAO -TCO -DIT -SSBS BTYPE=-)
        [stdlog] [ 0.499051] pc : iommu_setup_default_domain+0x1b4/0x2c4
        [stdlog] [ 0.499053] lr : iommu_setup_default_domain+0x1ac/0x2c4
        [stdlog] [ 0.499055] sp : ffff80008003ba60
        [stdlog] [ 0.499056] x29: ffff80008003ba60 x28: 0000000000000000 x27: ffffbcf4eb9301e4
        [stdlog] [ 0.499058] x26: ffff0000c0b0be48 x25: ffff0000c0b0be48 x24: 0000000000000000
        [stdlog] [ 0.499060] x23: 0000000000000000 x22: ffff0000c0b0be00 x21: ffff0000c0b0be48
        [stdlog] [ 0.499062] x20: ffff0000c0b0b900 x19: 00000000ffffffed x18: ffffffffffffffff
        [stdlog] [ 0.499064] x17: 732065676170206d x16: 6574737973206e61 x15: 0720072007200720
        [stdlog] [ 0.499066] x14: 0720072007200720 x13: 0720072007200720 x12: 0720072007200720
        [stdlog] [ 0.499067] x11: 0000000000000001 x10: 0000000000000001 x9 : ffffbcf4ea7b4650
        [stdlog] [ 0.499069] x8 : 00000000000bffe8 x7 : c0000000ffff7fff x6 : 00000000002bffa8
        [stdlog] [ 0.499071] x5 : ffffbcf4ec2add00 x4 : 0000000000000000 x3 : 0000000000000000
        [stdlog] [ 0.499072] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 00000000ffffffed
        [stdlog] [ 0.499074] Call trace:
        [stdlog] [ 0.499075] iommu_setup_default_domain+0x1b4/0x2c4
        [stdlog] [ 0.499078] __iommu_probe_device+0x1c4/0x290
        [stdlog] [ 0.499080] iommu_probe_device+0x3c/0x80
        [stdlog] [ 0.499082] acpi_dma_configure_id+0x90/0x120
        [stdlog] [ 0.499086] pci_dma_configure+0xec/0xf4
        [stdlog] [ 0.499089] really_probe+0x78/0x3dc
        [stdlog] [ 0.499091] __driver_probe_device+0x108/0x160
        [stdlog] [ 0.499094] driver_probe_device+0x40/0x110
        [stdlog] [ 0.499096] __driver_attach+0xcc/0x1f0
        [stdlog] [ 0.499098] bus_for_each_dev+0x7c/0xe0
        [stdlog] [ 0.499100] driver_attach+0x28/0x30
        [stdlog] [ 0.499102] bus_add_driver+0xbc/0x210
        [stdlog] [ 0.499104] driver_register+0x70/0x120
        [stdlog] [ 0.499107] __pci_register_driver+0x48/0x50
        [stdlog] [ 0.499108] xhci_pci_init+0x78/0x84
        [stdlog] [ 0.499111] do_one_initcall+0x4c/0x2e0
        [stdlog] [ 0.499113] do_initcalls+0x100/0x13c
        [stdlog] [ 0.499116] kernel_init_freeable+0x1d0/0x224
        [stdlog] [ 0.499118] kernel_init+0x28/0x148
        [stdlog] [ 0.499121] ret_from_fork+0x10/0x20
        [stdlog] [ 0.499123] --[ end trace 0000000000000000 ]--

      Expected results

      No call trace and vm continues to run

      Actual results

      See above

              eauger Eric Auger
              rhn-support-dzheng Dan Zheng
              virt-maint virt-maint
              virt-bugs virt-bugs
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: