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