Bug 1789335
| Summary: | VM with edk2 can't boot when setting memory with '-m 2001' | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 8 | Reporter: | Xueqiang Wei <xuwei> | ||||
| Component: | edk2 | Assignee: | Laszlo Ersek <lersek> | ||||
| Status: | CLOSED ERRATA | QA Contact: | Xueqiang Wei <xuwei> | ||||
| Severity: | high | Docs Contact: | |||||
| Priority: | high | ||||||
| Version: | 8.2 | CC: | berrange, chayang, coli, jinzhao, juzhang, kraxel, lersek, pbonzini, philmd | ||||
| Target Milestone: | rc | Keywords: | Regression | ||||
| Target Release: | 8.0 | Flags: | pm-rhel:
mirror+
|
||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | edk2-20190829git37eef91017ad-6.el8 | Doc Type: | If docs needed, set a value | ||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2020-04-28 16:02:22 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Attachments: |
|
||||||
I can reproduce the issue.
My debugging & analysis indicates it is a regression from upstream
commit 4eee0cc7cc0d ("UefiCpuPkg/PiSmmCpu: Enable 5 level paging when
CPU supports", 2019-07-12). That commit was released as part of upstream
tag edk2-stable201908.
For downstream, it means this problem is a regression from BZ#1748180 /
"edk2-20190829git37eef91017ad-2.el8" -- that's where we rebased
downstream to edk2-stable201908.
Using "edk2-20190308git89910a39dcfd-6.el8" (the last official
development build in Brew, from before BZ#1748180), the symptom
disappears.
I've posted the upstream fix now:
* [edk2-devel] [PATCH]
UefiCpuPkg/PiSmmCpuDxeSmm: fix 2M->4K page splitting regression for PDEs
https://edk2.groups.io/g/devel/message/53098
http://mid.mail-archive.com/20200109232512.11022-1-lersek@redhat.com
(In reply to Laszlo Ersek from comment #1) > I've posted the upstream fix now: > > * [edk2-devel] [PATCH] > UefiCpuPkg/PiSmmCpuDxeSmm: fix 2M->4K page splitting regression for PDEs > > https://edk2.groups.io/g/devel/message/53098 > http://mid.mail-archive.com/20200109232512.11022-1-lersek@redhat.com Upstream commit a52355624440. Tested on edk2-20190829git37eef91017ad-6.el8, not hit this issue. So set status to VERIFIED.
Details:
Host:
kernel-4.18.0-175.el8.x86_64
qemu-kvm-4.2.0-7.module+el8.2.0+5520+4e5817f3
edk2-ovmf-20190829git37eef91017ad-6.el8.noarch
Guest:
kernel-4.18.0-147.el8.x86_64
1. boot guest with "-m 2001"
/usr/libexec/qemu-kvm \
-name guest=net-client,debug-threads=on \
-S \
-machine pc-q35-rhel8.1.0,accel=kvm,usb=off,dump-guest-core=off \
-cpu 'Opteron_G5',+kvm_pv_unhalt \
-m 2001 \
-smp 4,sockets=1,cores=4,threads=1 \
-uuid 6151ce83-f196-462c-995b-a87ef8c31f6c \
-no-user-config \
-nodefaults \
-rtc base=utc,driftfix=slew \
-global kvm-pit.lost_tick_policy=delay \
-no-hpet \
-no-shutdown \
-global ICH9-LPC.disable_s3=1 \
-global ICH9-LPC.disable_s4=1 \
-boot menu=on,splash-time=5000,strict=on \
-device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2 \
-device pcie-root-port,port=0x11,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 \
-device pcie-root-port,port=0x12,chassis=3,id=pci.3,bus=pcie.0,addr=0x2.0x2 \
-device pcie-root-port,port=0x13,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 \
-device pcie-root-port,port=0x14,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 \
-device pcie-root-port,port=0x15,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x5 \
-device pcie-root-port,port=0x16,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x6 \
-device pcie-root-port,port=0x17,chassis=8,id=pci.8,bus=pcie.0,addr=0x2.0x7 \
-global driver=cfi.pflash01,property=secure,value=on \
-blockdev node-name=file_ovmf_code,driver=file,read-only=on,filename=/usr/share/OVMF/OVMF_CODE.secboot.fd \
-blockdev node-name=file_ovmf_vars,driver=file,filename=/home/kvm_autotest_root/images/rhel810-64-virtio-scsi.qcow2.fd \
-machine pflash0=file_ovmf_code,pflash1=file_ovmf_vars \
-device virtio-scsi-pci,id=scsi0,bus=pci.2,addr=0x0 \
-blockdev node-name=file_image1,driver=file,aio=native,filename=/home/kvm_autotest_root/images/rhel810-64-virtio-scsi.qcow2,cache.direct=on,cache.no-flush=off \
-blockdev node-name=drive_image1,driver=qcow2,cache.direct=on,cache.no-flush=off,file=file_image1 \
-device scsi-hd,id=image1,drive=drive_image1,write-cache=on,bus=scsi0.0,channel=0,scsi-id=0,lun=0 \
-device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.3,addr=0x0 \
-device usb-tablet,id=input0,bus=usb.0,port=1 \
-vnc 0.0.0.0:1 \
-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0x1 \
-device virtio-balloon-pci,id=balloon0,bus=pci.6,addr=0x0 \
-object rng-random,id=objrng0,filename=/dev/urandom \
-device virtio-rng-pci,rng=objrng0,id=rng0,bus=pci.7,addr=0x0 \
-global isa-debugcon.iobase=0x402 \
-debugcon file:/tmp/ovmf_test.log \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on \
-monitor stdio \
after step 1, guest boot up successfully.
Set memory to 2048, 4001, 4096, 15360, all work well.
Tested on slow train: qemu-kvm-2.12.0-97.module+el8.2.0+5545+14c6799f, also work well.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2020:1712 |
Created attachment 1650942 [details] xml file for guest Description of problem: If set memory to "2048576", guest can't enter BIOS setup, can't boot up. e.g. <memory unit='KiB'>2048576</memory> <currentMemory unit='KiB'>2048576</currentMemory> If set memory to "2097152", it works well. e.g. <memory unit='KiB'>2097152</memory> <currentMemory unit='KiB'>2097152</currentMemory> Version-Release number of selected component (if applicable): Host: kernel-4.18.0-165.el8.x86_64 qemu-kvm-4.2.0-4.module+el8.2.0+5220+e82621dc edk2-ovmf-20190829git37eef91017ad-4.el8.noarch How reproducible: 5/5 Steps to Reproduce: 1. start a guest with net-client.xml (please refer to attachment.) # virsh define net-client.xml Domain net-client defined from net-client.xml # virsh start net-client Domain net-client started # virsh list --all Id Name State ---------------------------------------------------- 7 net-server running 21 net-client running 2. connect to guest # remote-viewer vnc://10.66.8.143:5901 Actual results: after step 2: guest can't enter BIOS setup, can't boot up. # remote-viewer vnc://10.66.8.143:5901 Guest has not initialized the display (yet). logs like: SMM exception at access (0x7C101010) It is invoked from the instruction before IP(0x7D0F6F4F) in module (/builddir/build/BUILD/edk2-37eef91017ad/Build/Ovmf3264/DEBUG_GCC5/X64/MdeModulePkg/Core/PiSmmCore/PiSmmCore/DEBUG/PiSmmCore.dll) Expected results: guest boot up normally. Additional info: Host memory: # free -m total used free shared buff/cache available Mem: 7684 2586 4782 37 315 4800 Swap: 7975 240 7735 qemu cmd lines: # cp /usr/share/edk2/ovmf/OVMF_VARS.fd /home/kvm_autotest_root/images/rhel820-64-virtio-scsi.qcow2.fd usr/libexec/qemu-kvm \ -name guest=net-client,debug-threads=on \ -S \ -machine pc-q35-rhel8.1.0,accel=kvm,usb=off,dump-guest-core=off \ -cpu IvyBridge-IBRS,ss=on,pcid=on,hypervisor=on,arat=on,tsc-adjust=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaveopt=on,ibpb=on,skip-l1dfl-vmentry=on \ -m 2001 \ -smp 4,sockets=1,cores=4,threads=1 \ -uuid 6151ce83-f196-462c-995b-a87ef8c31f6c \ -no-user-config \ -nodefaults \ -rtc base=utc,driftfix=slew \ -global kvm-pit.lost_tick_policy=delay \ -no-hpet \ -no-shutdown \ -global ICH9-LPC.disable_s3=1 \ -global ICH9-LPC.disable_s4=1 \ -boot menu=on,splash-time=5000,strict=on \ -device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2 \ -device pcie-root-port,port=0x11,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 \ -device pcie-root-port,port=0x12,chassis=3,id=pci.3,bus=pcie.0,addr=0x2.0x2 \ -device pcie-root-port,port=0x13,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 \ -device pcie-root-port,port=0x14,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 \ -device pcie-root-port,port=0x15,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x5 \ -device pcie-root-port,port=0x16,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x6 \ -device pcie-root-port,port=0x17,chassis=8,id=pci.8,bus=pcie.0,addr=0x2.0x7 \ -global driver=cfi.pflash01,property=secure,value=on \ -blockdev node-name=file_ovmf_code,driver=file,read-only=on,filename=/usr/share/OVMF/OVMF_CODE.secboot.fd \ -blockdev node-name=file_ovmf_vars,driver=file,filename=/home/kvm_autotest_root/images/rhel820-64-virtio-scsi.qcow2.fd \ -machine pflash0=file_ovmf_code,pflash1=file_ovmf_vars \ -device virtio-scsi-pci,id=scsi0,bus=pci.2,addr=0x0 \ -blockdev node-name=file_image1,driver=file,aio=native,filename=/home/kvm_autotest_root/images/net-client.qcow2,cache.direct=on,cache.no-flush=off \ -blockdev node-name=drive_image1,driver=qcow2,cache.direct=on,cache.no-flush=off,file=file_image1 \ -device scsi-hd,id=image1,drive=drive_image1,write-cache=on,bus=scsi0.0,channel=0,scsi-id=0,lun=0 \ -device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.3,addr=0x0 \ -device usb-tablet,id=input0,bus=usb.0,port=1 \ -vnc 0.0.0.0:1 \ -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0x1 \ -device virtio-balloon-pci,id=balloon0,bus=pci.6,addr=0x0 \ -object rng-random,id=objrng0,filename=/dev/urandom \ -device virtio-rng-pci,rng=objrng0,id=rng0,bus=pci.7,addr=0x0 \ -global isa-debugcon.iobase=0x402 \ -debugcon file:/tmp/ovmf_test.log \ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on \ -monitor stdio \