Qemu - AmpereComputing/ampere-lts-kernel---DEPRECATED GitHub Wiki

./qemu-system-aarch64 -nographic -machine virt -cpu host -accel kvm -bios QEMU_EFI.fd -net user,hostfwd=tcp::2222-:22 -net nic -smp cpus=8 -m 4G -net nic -net user,hostfwd=tcp::10021-:22 -drive if=none,file=/root/avocado/data/avocado-vt/images/debian-9.4.0-aarch64_test.qcow2,format=qcow2,id=hd1 -device virtio-blk-pci,drive=hd1,bootindex=0 -drive if=none,file=cloudinit,format=raw,id=hd10 -device virtio-blk-pci,drive=hd10,bootindex=10

ssh [email protected] -p 10021

VM stucks.

AmpereOne

07.24

git clone https://gitlab.com/qemu-project/qemu.git code
pushd code
./configure --target-list=aarch64-softmmu --enable-trace-backends=log --enable-debug --enable-debug-info --enable-vnc --disable-lzo --disable-snappy --disable-docs --disable-werror
make -j100
popd

mkdir bin
cd bin
cp ../code/aarch64-softmmu/qemu-system-aarch64 .

Copy some files for qemu from other server.

./qemu-system-aarch64 -nographic -machine virt -cpu host -bios QEMU_EFI.fd -smp cpus=8 -m 4G -net nic -net user,hostfwd=tcp::2222-:22 -enable-kvm -drive if=none,file=debian-12-nocloud-arm64-20230711-1438.qcow2,format=qcow2,id=hd1 -device virtio-blk-pci,drive=hd1,bootindex=0 -drive if=none,file=cloudinit,format=raw,id=hd10 -device virtio-blk-pci,drive=hd10,bootindex=10
qemu-system-aarch64: PMU: KVM_SET_DEVICE_ATTR: Invalid argument
qemu-system-aarch64: failed to set irq for PMU
./run.sh: line 22: 18000 Aborted

Solution:

qemu-system-aarch64 -nographic -machine virt,gic-version=max -drive file=test/flash0.img,format=raw,if=pflash -drive file=test/flash1.img,format=raw,if=pflash -cpu max -smp cpus=2 -m 1G -drive if=none,file=debian-12-nocloud-arm64-20230711-1438.qcow2,format=qcow2,id=hd1 -device virtio-blk-pci,drive=hd1,bootindex=0

VM gets stuck when kvm is enabled.

QMP usage

echo -e '{ "execute": "qmp_capabilities" }\n { "execute": "query-commands", "id": "RAND91" }\n { "execute": "quit" }' | qemu-system-x86_64 -qmp stdio -vnc none -S

HMP usage

Output help message on aarch64 platform

echo -e 'help\nquit' | /home/dom/Qemu/code/qemu_6.2/build/qemu-system-x86_64 -monitor stdio -vnc none -S

Output error on aarch64 platform:

echo -e 'help\nquit' | /home/dom/Qemu/code/qemu_6.2/build/qemu-system-aarch64 -monitor stdio -vnc none -S

return:
qemu-system-aarch64: No machine specified, and there is no default
Use -machine help to list supported machines

Solution:

echo -e 'help\nquit' | /home/dom/Qemu/code/qemu_6.2/build/qemu-system-aarch64 -machine none -monitor stdio -vnc none -S

The command with pipe is same as:
/home/dom/Qemu/code/qemu_6.2/build/qemu-system-aarch64 -machine none -monitor stdio -vnc none -S
(qemu) help
(qemu) quit

BTW,the parameter "-e" must exist in shell,but not in python.

Shell error in python

virttest/qemu_devices/qcontainer.py
            _ = process.run("echo -e 'help\nquit' | %s -monitor "
                            "stdio -vnc none -S" % qemu_binary,
                            timeout=10, ignore_status=True,
                            shell=True, verbose=False).stdout_text

It returns:

QEMU 8.0.3 monitor - type 'help' for more information^M (qemu) -^[[K^[[D-e^[[K^[[D^[[D-e ^[[K^[[D^[[D^[[D-e h^[[K^[[D^[[D^[[D^[[D-e he^[[K^[[D^[[D^[[D^[[D^[[D-e hel^[[K^[[D^[[D^[[D^[[D^[[D^[[D-e help^[[K^M unknown command: '-e'^M (qemu) q^[[K^[[Dqu^[[K^[[D^[[Dqui^[[K^[[D^[[D^[[Dquit^[[K^M

Solution:

            _ = process.run("echo 'help\nquit' | %s -monitor "
                            "stdio -vnc none -S" % qemu_binary,
                            timeout=10, ignore_status=True,
                            shell=True, verbose=False).stdout_text
It returns:
QEMU 8.0.3 monitor - type 'help' for more information^M
(qemu) h^[[K^[[Dhe^[[K^[[D^[[Dhel^[[K^[[D^[[D^[[Dhelp^[[K^M
announce_self [interfaces] [id] -- Trigger GARP/RARP announcements^M
balloon target -- request VM to change its memory allocation (in MB)^M
block_job_cancel [-f] device -- stop an active background block operation (use -f^M
             if you want to abort the operation immediately^M
             instead of keep running until data is in sync)^M
...
xp /fmt addr -- physical memory dump starting at 'addr'^M
(qemu) q^[[K^[[Dqu^[[K^[[D^[[Dqui^[[K^[[D^[[D^[[Dquit^[[K^M

nvme Command:

qemu-img create -f raw nvm.img 10G
qemu-system-aarch64 -nographic -machine virt -cpu host -accel kvm 
    -bios images/QEMU_EFI.fd -net user,hostfwd=tcp::2222-:22 -net nic -smp cpus=8 -m 4G \
    -net nic -net user,hostfwd=tcp::10021-:22 \
    -drive if=none,file=images/debian-12-generic-arm64-20230711-1438.qcow2,format=qcow2,id=hd1 -device virtio-blk-pci,drive=hd1,bootindex=0 \
    -drive if=none,file=images/cloudinit,format=raw,id=hd10 -device virtio-blk-pci,drive=hd10,bootindex=10 \
    -drive file=images/nvm.img,format=raw,if=none,id=nvm -device nvme,serial=foo,drive=nvm

On VM:
lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda     254:0    0    2G  0 disk
├─vda1  254:1    0  1.9G  0 part /
└─vda15 254:15   0  127M  0 part /boot/efi
vdb     254:16   0    8M  0 disk
nvme0n1 259:0    0   10G  0 disk

mkdir nvme
mount /dev/nvme0n1 nvme
wrong fs type, bad option, bad superblock on /dev/nvme0n1, missing codepage or helper program, or other error.

Solution:

1.Create partition.
fdisk /dev/nvme0n1
n     
p
w
2.Format partition
mkfs.ext4 /dev/nvme0n1p1

3.Mount partition
mount /dev/nvme0n1p1 nvme

SRIOV error:

./build/qemu-system-aarch64 -nographic -machine virt -cpu host -accel kvm -bios /home/dom/Qemu/bin/images/QEMU_EFI.fd -net user,hostfwd=tcp::2222-:22 -net nic -smp cpus=8 -m 4G -net nic -net user,hostfwd=tcp::10021-:22 -drive if=none,file=/home/dom/Qemu/bin/images/debian-12-generic-arm64-20230711-1438.qcow2,format=qcow2,id=hd1 -device virtio-blk-pci,drive=hd1,bootindex=0 -drive if=none,file=/home/dom/Qemu/bin/images/cloudinit,format=raw,id=hd10 -device virtio-blk-pci,drive=hd10,bootindex=10 -device nvme-subsys,id=subsys0 -device nvme,id=nvme0,bus=pcie.0,addr=4.0,serial=deadbead,subsys=subsys0,sriov_max_vfs=3,sriov_vq_flexible=6,sriov_vi_flexible=3

Error:slot 4 function 0 not available for nvme, in use by virtio-blk-pci,id=(null)

Solution

--device virtio-blk-pci
+-device virtio-blk-device

On VM Error:

echo 7 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs
[  171.261175] pci 0000:01:00.0: no driver bound to device; cannot configure SR-IOV
bash: echo: write error: No such file or directory

Solution:

TBD

PCI Error:

/usr/bin/qemu-system-x86_64 -nographic -name avocado-vt-vm1 -machine pc,memory-backend=mem-machine_mem -m 2048 -object memory-backend-ram,size=2048M,id=mem-machine_mem -smp 2,maxcpus=2,cores=2,threads=
1,dies=1,sockets=1 -cpu Skylake-Client-noTSX-IBRS -blockdev node-name=file_image1,driver=file,aio=native,filename=/root/avocado/data/avocado-vt/images/jeos-27-x86_64_test.qcow2,cache.direct=on,cache.no-f
lush=off -blockdev node-name=drive_image1,driver=qcow2,cache.direct=on,cache.no-flush=off,file=file_image1 -device virtio-blk-pci,id=image1,drive=drive_image1,bootindex=1,write-cache=on,bus=pci.0,addr=0x
1 -blockdev node-name=file_unattended,driver=file,aio=native,filename=/root/avocado/data/avocado-vt/images/jeos-27-x86_64/ks.iso,cache.direct=on,cache.no-flush=off -blockdev node-name=drive_unattended,dr
iver=raw,read-only=on,cache.direct=on,cache.no-flush=off,file=file_unattended -device ide-cd,id=unattended,drive=drive_unattended,bootindex=3,write-cache=on,bus=ide.0,unit=0 -kernel /root/avocado/data/av
ocado-vt/images/jeos-27-x86_64/vmlinuz -append 'console=tty0 console=ttyS0 ks=cdrom nicdelay=60 inst.repo=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/27/Server/x86_64/os' -initrd
 /root/avocado/data/avocado-vt/images/jeos-27-x86_64/initrd.img -rtc base=utc,clock=host -boot menu=off,order=cdn,once=c,strict=off -net nic -net user -enable-kvm

qemu-system-x86_64: -device virtio-blk-pci,id=image1,drive=drive_image1,bootindex=1,write-cache=on,bus=pci.0,addr=0x3: PCI: slot 3 function 0 not available for virtio-blk-pci, in use by e1000

Change addr=0x03 to addr = 0x01,the error still exists:

qemu-system-x86_64: -device virtio-blk-pci,id=image1,drive=drive_image1,bootindex=1,write-cache=on,bus=pci.0,addr=0x1: PCI: slot 1 function 0 not available for virtio-blk-pci, in use by PIIX3

Solution:

-device virtio-blk-pci,id=image1,drive=drive_image1,bootindex=1,write-cache=on,bus=pci.0,addr=0x4