On 2/21/22 17:12, Charles Polisher wrote: Hey, please the list on CC for benefit of others, e.g. when somebody runs into the same problem they can find the discussion in the archive. > On 2/21/22 01:54, Michal Prívozník wrote: > >> On 2/20/22 04:07, Charles Polisher wrote: >>> Hello, >>> >>> After defining hugepages, as documented at >>> https://libvirt.org/formatdomain.html#memory-backing , >>> when I start the guest, I get a dialogue >>> box that says: >>> >>> Error starting domain: internal error: qemu unexpectedly >>> closed the monitor: 2022-02-20T01:10:36.520955Z >>> qemu-system-x86_64: Memory backend 'pc.ram' not found >>> Traceback (most recent call last): >>> File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, >>> in cb_wrapper >>> callback(asyncjob, *args, **kwargs) >>> File "/usr/share/virt-manager/virtManager/asyncjob.py", line 101, >>> in tmpcb >>> callback(*args, **kwargs) >>> File >>> "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 57, >>> in newfn >>> ret = fn(self, *args, **kwargs) >>> File "/usr/share/virt-manager/virtManager/object/domain.py", line >>> 1329, in startup >>> self._backend.create() >>> File "/usr/lib64/python3.9/site-packages/libvirt.py", line 1353, >>> in create >>> raise libvirtError('virDomainCreate() failed' >>> >>> After backing out changes, guest starts normally. >>> I searched online for the error message, but found nothing useful. >>> The hypervisor is running libvirtd (libvirt) 7.8.0 and QEMU emulator >>> version 6.1.0, >>> both build from source. I've got plenty of hugepages available. >>> The domain's XML definition is attached. >> Hey, can you share your domain XML and the generated cmd line? The >> latter should be found in /var/log/libvirt/qemu/$domain.log >> >> Thanks, >> Michal > > Thanks for your reply. As requested, the domain XML: > > <domain type="kvm"> > <name>slacky-0</name> > <uuid>4a67eb39-9b92-8b8a-97ba-7e1250d56b07</uuid> > <title>slacky-0</title> > <description>elided</description> > <memory unit="KiB">4194304</memory> > <currentMemory unit="KiB">4194304</currentMemory> > <memoryBacking> > <hugepages> > <page size="4194304" unit="KiB"/> This does not look correct. This is on x86_64 and there is no such size for hugepages, only 2MiB and 1GiB. > </hugepages> > </memoryBacking> > <vcpu placement="static">2</vcpu> > <os> > <type arch="x86_64" machine="pc-i440fx-5.1">hvm</type> > <bootmenu enable="no"/> > </os> > <features> > <acpi/> > <apic/> > <pae/> > </features> > <cpu mode="custom" match="exact" check="none"> > <model fallback="forbid">kvm64</model> > </cpu> > <clock offset="utc"/> > <on_poweroff>destroy</on_poweroff> > <on_reboot>restart</on_reboot> > <on_crash>restart</on_crash> > <devices> > <emulator>/usr/bin/qemu-system-x86_64</emulator> > <disk type="file" device="cdrom"> > <driver name="qemu" type="raw"/> > <target dev="hdc" bus="ide"/> > <readonly/> > <address type="drive" controller="0" bus="1" target="0" > unit="0"/> > </disk> > <disk type="file" device="disk"> > <driver name="qemu" type="qcow2" cache="writethrough"/> > <source file="/mnt/nvme1/VIRTUAL_MACHINES/slacky-0.qcow2"/> > <target dev="vda" bus="virtio"/> > <boot order="1"/> > <address type="pci" domain="0x0000" bus="0x00" slot="0x09" > function="0x0"/> > </disk> > <controller type="usb" index="0" model="ich9-ehci1"> > <address type="pci" domain="0x0000" bus="0x00" slot="0x05" > function="0x7"/> > </controller> > <controller type="usb" index="0" model="ich9-uhci1"> > <master startport="0"/> > <address type="pci" domain="0x0000" bus="0x00" slot="0x05" > function="0x0" multifunction="on"/> > </controller> > <controller type="usb" index="0" model="ich9-uhci2"> > <master startport="2"/> > <address type="pci" domain="0x0000" bus="0x00" slot="0x05" > function="0x1"/> > </controller> > <controller type="usb" index="0" model="ich9-uhci3"> > <master startport="4"/> > <address type="pci" domain="0x0000" bus="0x00" slot="0x05" > function="0x2"/> > </controller> > <controller type="ide" index="0"> > <address type="pci" domain="0x0000" bus="0x00" slot="0x01" > function="0x1"/> > </controller> > <controller type="virtio-serial" index="0"> > <address type="pci" domain="0x0000" bus="0x00" slot="0x07" > function="0x0"/> > </controller> > <controller type="scsi" index="0" model="virtio-scsi"> > <address type="pci" domain="0x0000" bus="0x00" slot="0x08" > function="0x0"/> > </controller> > <controller type="pci" index="0" model="pci-root"/> > <interface type="network"> > <mac address="52:54:00:c3:93:40"/> > <source network="default"/> > <model type="virtio"/> > <address type="pci" domain="0x0000" bus="0x00" slot="0x03" > function="0x0"/> > </interface> > <serial type="file"> > <source path="/tmp/myconsoleoutput.txt"/> > <target type="isa-serial" port="0"> > <model name="isa-serial"/> > </target> > </serial> > <console type="file"> > <source path="/tmp/myconsoleoutput.txt"/> > <target type="serial" port="0"/> > </console> > <input type="tablet" bus="usb"> > <address type="usb" bus="0" port="1"/> > </input> > <input type="mouse" bus="ps2"/> > <input type="keyboard" bus="ps2"/> > <graphics type="spice" autoport="yes" listen="127.0.0.1"> > <listen type="address" address="127.0.0.1"/> > </graphics> > <sound model="ich9"> > <address type="pci" domain="0x0000" bus="0x00" slot="0x04" > function="0x0"/> > </sound> > <audio id="1" type="spice"/> > <video> > <model type="qxl" ram="65536" vram="65536" vgamem="16384" > heads="1" primary="yes"/> > <address type="pci" domain="0x0000" bus="0x00" slot="0x02" > function="0x0"/> > </video> > <memballoon model="virtio"> > <address type="pci" domain="0x0000" bus="0x00" slot="0x06" > function="0x0"/> > </memballoon> > </devices> > </domain> > > > And the guest log with the generated command line: > > 2022-02-20 01:13:12.985+0000: starting up libvirt version: 7.8.0, > qemu version: 6.1.0, kernel: 5.15.19, hostname: godzilla.peecee3.com > LC_ALL=C \ > PATH=/sbin:/usr/sbin:/bin:/usr/bin \ > HOME=/var/lib/libvirt/qemu/domain-34-slacky-0 \ > XDG_DATA_HOME=/var/lib/libvirt/qemu/domain-34-slacky-0/.local/share \ > XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain-34-slacky-0/.cache \ > XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain-34-slacky-0/.config \ > /usr/bin/qemu-system-x86_64 \ > -name guest=slacky-0,process=qemu:slacky-0,debug-threads=on \ > -S \ > -object > '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain-34-slacky-0/master-key.aes"}' > \ > -machine > pc-i440fx-5.1,accel=kvm,usb=off,dump-guest-core=off,memory-backend=pc.ram \ So this instructs qemu to use a memory device wih id='pc.ram' as the default/generic memory for the guest.. > -cpu kvm64 \ > -m 4096 \ > -overcommit mem-lock=off \ .. but we never generate such device. Here libvirt should have generated -object memory-backend-file,id=pc.ram,path=/hugepages/... And I think I know why. Let me post a patch. > -smp 2,sockets=2,cores=1,threads=1 \ > -uuid 4a67eb39-9b92-8b8a-97ba-7e1250d56b07 \ > -no-user-config \ > -nodefaults \ > -chardev socket,id=charmonitor,fd=34,server=on,wait=off \ > -mon chardev=charmonitor,id=monitor,mode=control \ > -rtc base=utc \ > -no-shutdown \ > -boot menu=off,strict=on \ > -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x5.0x7 \ > -device > ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x5 > \ > -device > ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x5.0x1 \ > -device > ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x5.0x2 \ > -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x8 \ > -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x7 \ > -device ide-cd,bus=ide.1,unit=0,id=ide0-1-0 \ > -blockdev > '{"driver":"file","filename":"/mnt/nvme1/VIRTUAL_MACHINES/slacky-0.qcow2","node-name":"libvirt-1-storage","cache":{"direct":false,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' > \ > -blockdev > '{"node-name":"libvirt-1-format","read-only":false,"cache":{"direct":false,"no-flush":false},"driver":"qcow2","file":"libvirt-1-storage","backing":null}' > \ > -device > virtio-blk-pci,bus=pci.0,addr=0x9,drive=libvirt-1-format,id=virtio-disk0,bootindex=1,write-cache=off > \ > -netdev tap,fd=58,id=hostnet0,vhost=on,vhostfd=60 \ > -device > virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:c3:93:40,bus=pci.0,addr=0x3 > \ > -add-fd set=3,fd=62 \ > -chardev file,id=charserial0,path=/dev/fdset/3,append=on \ > -device isa-serial,chardev=charserial0,id=serial0 \ > -device usb-tablet,id=input0,bus=usb.0,port=1 \ > -audiodev id=audio1,driver=spice \ > -spice > port=5901,addr=127.0.0.1,disable-ticketing=on,seamless-migration=on \ > -device > qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pci.0,addr=0x2 > \ > -device ich9-intel-hda,id=sound0,bus=pci.0,addr=0x4 \ > -device > hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0,audiodev=audio1 \ > -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 \ > -msg timestamp=on > 2022-02-20T01:13:13.136602Z qemu-system-x86_64: Memory backend > 'pc.ram' not found > 2022-02-20 01:13:13.186+0000: shutting down, reason=failed > > Again, thank you! Michal