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

CPU hotplug is not working with win2022 and win2025 guest when VBS is enabled

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Undefined Undefined
    • None
    • rhel-9.6
    • qemu-kvm
    • No
    • None
    • rhel-sst-virtualization
    • ssg_virtualization
    • None
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • x86_64
    • None

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

      Enable VBS in windows guest(win2022 and win2025), then reboot guest, hotplug vcpu to guest.

      What is the impact of this issue to you?

      The hotplugged vcpu is not recognized by guest.

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

      qemu-kvm-9.1.0-1.el9

      kernel-5.14.0-524.el9.x86_64

      edk2-ovmf-20240524-7.el9.noarch

      How reproducible is this bug?:

      3/3

      Steps to reproduce

      1. Boot up a Windows guest
      2. Enable VBS on the guest. For doing so you can use https://github.com/MicrosoftDocs/windows-itpro-docs/files/4020040/DG_Readinessv3.7.zip. Then, in Windows powershell, run 'Set-ExecutionPolicy -ExecutionPolicy Unrestricte' and 'DG_Readiness_Tool_3.6.ps1 -Enable'.
      3. Reboot the guest.
      4. Hotplug vcpu to guest

      Expected results

      The hotplugged vcpu is recognized by guest.

      Actual results

      The hotplugged vcpu is NOT recognized by guest.

       

      Additional Info:

       [1] QEMU cli:

      /usr/libexec/qemu-kvm \
           -S  \
           -name 'avocado-vt-vm1'  \
           -sandbox on,elevateprivileges=deny,obsolete=deny,resourcecontrol=deny,spawn=deny \
           -blockdev '{"node-name": "file_ovmf_code", "driver": "file", "filename": "/usr/share/OVMF/OVMF_CODE.secboot.fd", "auto-read-only": true, "discard": "unmap"}' \
           -blockdev '{"node-name": "drive_ovmf_code", "driver": "raw", "read-only": true, "file": "file_ovmf_code"}' \
           -blockdev '{"node-name": "file_ovmf_vars", "driver": "file", "filename": "/root/avocado/data/avocado-vt/avocado-vt-vm1_win2025-64-virtio-scsi-ovmf_qcow2_filesystem_VARS.raw", "auto-read-only": true, "discard": "unmap"}' \
           -blockdev '{"node-name": "drive_ovmf_vars", "driver": "raw", "read-only": false, "file": "file_ovmf_vars"}' \
           -machine q35,kernel-irqchip=split,pflash0=drive_ovmf_code,pflash1=drive_ovmf_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 '{"intremap": "on", "device-iotlb": true, "eim": "off", "aw-bits": 48, "driver": "intel-iommu"}' \
           -device '{"driver": "VGA", "bus": "pcie.0", "addr": "0x2"}' \
           -m 8192 \
           -object '{"size": 8589934592, "id": "mem-machine_mem", "qom-type": "memory-backend-ram"}'  \
           -smp 19,maxcpus=20,cores=10,threads=1,dies=1,sockets=2  \
           -cpu 'Haswell-noTSX-IBRS',vmx=on,pdcm=on,f16c=on,rdrand=on,hypervisor=on,vme=on,ss=on,arat=on,tsc-adjust=on,umip=on,md-clear=on,stibp=on,flush-l1d=on,arch-capabilities=on,ssbd=on,xsaveopt=on,abm=on,pdpe1gb=on,ibpb=on,ibrs=on,amd-stibp=on,amd-ssbd=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,gds-no=on,rfds-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-activity-wait-sipi=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-apicv-register=on,vmx-apicv-vid=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-pml=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-posted-intr=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-load-perf-global-ctrl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-perf-global-ctrl=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on,hv_stimer,hv_synic,hv_vpindex,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_frequencies,hv_runtime,hv_tlbflush,hv_reenlightenment,hv_stimer_direct,hv_ipi,hv-xmm-input,hv_tlbflush_ext,kvm_pv_unhalt=on \
           -chardev socket,path=/var/tmp/avocado__7cdzvax/monitor-qmpmonitor1-20241105-020248-Hk6waOtM,id=qmp_id_qmpmonitor1,wait=off,server=on  \
           -mon chardev=qmp_id_qmpmonitor1,mode=control \
           -chardev socket,path=/var/tmp/avocado__7cdzvax/monitor-catch_monitor-20241105-020248-Hk6waOtM,id=qmp_id_catch_monitor,wait=off,server=on  \
           -mon chardev=qmp_id_catch_monitor,mode=control \
           -device '{"ioport": 1285, "driver": "pvpanic", "id": "id4umYL6"}' \
           -chardev socket,path=/var/tmp/avocado__7cdzvax/serial-serial0-20241105-020248-Hk6waOtM,id=chardev_serial0,wait=off,server=on \
           -device '{"id": "serial0", "driver": "isa-serial", "chardev": "chardev_serial0"}'  \
           -chardev socket,id=seabioslog_id_20241105-020248-Hk6waOtM,path=/var/tmp/avocado__7cdzvax/seabios-20241105-020248-Hk6waOtM,server=on,wait=off \
           -device isa-debugcon,chardev=seabioslog_id_20241105-020248-Hk6waOtM,iobase=0x402 \
           -device '{"id": "pcie-root-port-1", "port": 1, "driver": "pcie-root-port", "addr": "0x1.0x1", "bus": "pcie.0", "chassis": 2}' \
           -device '{"driver": "qemu-xhci", "id": "usb1", "bus": "pcie-root-port-1", "addr": "0x0"}' \
           -device '{"driver": "usb-tablet", "id": "usb-tablet1", "bus": "usb1.0", "port": "1"}' \
           -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", "iommu_platform": true, "ats": true, "aer": true}' \
           -blockdev '{"node-name": "file_image1", "driver": "file", "auto-read-only": true, "discard": "unmap", "aio": "threads", "filename": "/home/kvm_autotest_root/images/win2025-64-virtio-scsi-ovmf.qcow2", "cache": {"direct": true, "no-flush": false}}' \-blockdev '{"node-name": "drive_image1", "driver": "qcow2", "read-only": false, "cache": {"direct": true, "no-flush": false}, "file": "file_image1"}' \
           -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}' \
           -device '{"driver": "virtio-net-pci", "mac": "9a:a8:c3:ae:28:0a", "id": "idrowmlj", "netdev": "idxP9Z3T", "bus": "pcie-root-port-3", "addr": "0x0", "iommu_platform": true, "ats": true, "aer": true}' \
           -netdev  '{"id": "idxP9Z3T", "type": "tap", "vhost": true, "vhostfd": "16", "fd": "10"}' \
           -blockdev '{"node-name": "drive_cd1", "driver": "file", "read-only": true, "discard": "unmap", "aio": "threads", "filename": "/home/kvm_autotest_root/iso/windows/winutils.iso", "cache": {"direct": true, "no-flush": false}}' \
           -device '{"driver": "scsi-cd", "id": "cd1", "drive": "drive_cd1", "write-cache": "on"}'  \
           -vnc :0  \
           -rtc base=localtime,clock=host,driftfix=slew  \
           -boot menu=off,order=cdn,once=c,strict=off \
           -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-crb_vtpm_avocado-vt-vm1_tpm0", "tpmdev": "emulator_vtpm_avocado-vt-vm1_tpm0", "driver": "tpm-crb"}' \
           -enable-kvm \
           -device '{"id": "pcie_extra_root_port_0", "driver": "pcie-root-port", "multifunction": true, "bus": "pcie.0", "addr": "0x3", "chassis": 5}'

       [2] Secure boot is enabled in the test.

      [3] Tested on both Icelake Server and Haswell host, the results are the same.

      [4]Tested with and without intel-iommu device, the results are the same.

       [5] If disable VBS, cpu hotplug is working well.

              virt-maint virt-maint
              rhn-support-yuhuang Yumei Huang
              virt-maint virt-maint
              Xiaoling Gao Xiaoling Gao
              Votes:
              0 Vote for this issue
              Watchers:
              13 Start watching this issue

                Created:
                Updated: