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

Boot SNP guests failed with qemu-kvm: kvm_set_user_memory_region

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Critical Critical
    • None
    • rhel-10.0
    • qemu-kvm
    • None
    • Important
    • sst_virtualization_hwe
    • ssg_virtualization
    • None
    • QE ack
    • False
    • Hide

      None

      Show
      None
    • None
    • Red Hat Enterprise Linux
    • None
    • x86_64
    • Linux
    • None

      What were you trying to do that didn't work?
      Boot SNP guests failed with qemu-kvm: kvm_set_user_memory_region: KVM_SET_USER_MEMORY_REGION2 failed, slot=6, start=0x81900000, size=0x10000, flags=0x2, guest_memfd=-1, guest_memfd_offset=0x0: Invalid argument
      kvm_set_phys_mem: error registering slot: Invalid argument

      Please provide the package NVR for which bug is seen:
      kernel-6.11.0-0.rc5.22.el10.x86_64
      edk2-ovmf-20240524-4.el10.noarch
      qemu-kvm-9.1.0-1.el10.x86_64

      How reproducible:
      100%

      Steps to reproduce
      1. Check SNP enabled on host

      1. cat /sys/module/kvm_amd/parameters/sev_snp
        Y
      2. dmesg|grep -i snp
        [ 0.000000] SEV-SNP: RMP table physical range [0x0000000025e00000 - 0x00000000566fffff]
        [ 0.011978] SEV-SNP: Reserving start/end of RMP table on a 2MB boundary [0x0000000056600000]
        [ 4.053832] AMD-Vi: IOMMU SNP support enabled.
        [ 4.155982] AMD-Vi: Extended features (0x841f77e022094ace, 0x0): PPR X2APIC NX IA GA PC SNP
        [ 16.628245] ccp 0000:26:00.1: SEV-SNP API:1.55 build:8
        [ 21.329284] kvm_amd: SEV-SNP enabled (ASIDs 1 - 99)
        2. Boot a SNP guest
        /usr/libexec/qemu-kvm \
        -S \
        -name 'avocado-vt-vm1' \
        -sandbox on,elevateprivileges=deny,obsolete=deny,resourcecontrol=deny,spawn=deny \
        -machine q35,confidential-guest-support=lsec0,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"}

        ' \
        -object sev-snp-guest,id=lsec0,cbitpos=51,reduced-phys-bits=1 \
        -nodefaults \
        -device '

        {"driver": "VGA", "bus": "pcie.0", "addr": "0x2"}

        ' \
        -m 4096 \
        -object '

        {"size": 4294967296, "id": "mem-machine_mem", "qom-type": "memory-backend-ram"}

        ' \
        -smp 48,maxcpus=48,cores=24,threads=1,dies=1,sockets=2 \
        -cpu 'EPYC-Milan-v2',+kvm_pv_unhalt \
        -chardev socket,server=on,path=/var/tmp/avocado_xmn0uir4/monitor-qmpmonitor1-20240914-040237-RJXU2t1G,id=qmp_id_qmpmonitor1,wait=off \
        -mon chardev=qmp_id_qmpmonitor1,mode=control \
        -chardev socket,server=on,path=/var/tmp/avocado_xmn0uir4/monitor-catch_monitor-20240914-040237-RJXU2t1G,id=qmp_id_catch_monitor,wait=off \
        -mon chardev=qmp_id_catch_monitor,mode=control \
        -device '

        {"ioport": 1285, "driver": "pvpanic", "id": "idfTtmFz"}

        ' \
        -chardev socket,server=on,path=/var/tmp/avocado_xmn0uir4/serial-serial0-20240914-040237-RJXU2t1G,id=chardev_serial0,wait=off \
        -device '

        {"id": "serial0", "driver": "isa-serial", "chardev": "chardev_serial0"}

        ' \
        -chardev socket,id=seabioslog_id_20240914-040237-RJXU2t1G,path=/var/tmp/avocado_xmn0uir4/seabios-20240914-040237-RJXU2t1G,server=on,wait=off \
        -device isa-debugcon,chardev=seabioslog_id_20240914-040237-RJXU2t1G,iobase=0x402 \
        -device '

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

        ' \
        -device '

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

        ' \
        -device '

        {"id": "virtio_scsi_pci0", "driver": "virtio-scsi-pci", "bus": "pcie-root-port-2", "addr": "0x0", "disable-legacy": "on"}

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

        Unknown macro: {"node-name"}

        ' \
        -device '

        {"driver": "scsi-hd", "id": "image1", "drive": "drive_image1", "write-cache": "on"}

        ' \
        -device '

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

        ' \
        -vnc :0 \
        -rtc base=utc,clock=host,driftfix=slew \
        -boot menu=off,order=cdn,once=c,strict=off \
        -bios /usr/share/edk2/ovmf/OVMF.amdsev.fd \
        -enable-kvm \
        -monitor stdio \
        qemu-kvm: warning: Machine type 'pc-q35-rhel9.4.0' is deprecated: machines from the previous RHEL major release are subject to deletion in the next RHEL major release
        QEMU 9.1.0 monitor - type 'help' for more information
        (qemu) c
        (qemu) qemu-kvm: kvm_set_user_memory_region: KVM_SET_USER_MEMORY_REGION2 failed, slot=6, start=0x81900000, size=0x10000, flags=0x2, guest_memfd=-1, guest_memfd_offset=0x0: Invalid argument
        kvm_set_phys_mem: error registering slot: Invalid argument

      Expected results
      SNP guest can boot

      Actual results
      Boot failed.

            virt-maint virt-maint
            zixchen Zixi Chen
            virt-maint virt-maint
            Zixi Chen Zixi Chen
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated: