Skip to content
Animesh Trivedi edited this page Aug 9, 2024 · 34 revisions

Compiling from source

On Fedora: https://github.com/animeshtrivedi/notes/wiki/fedora-systems-development#kernelqemu-compilation-on-fedroa

on Ubuntu: To-be-filled:

git clone https://github.com/qemu/qemu.git
cd qemu 
git checkout v9.0.2
mkidr build 
cd build 
sudo apt-get install ninja-build libglib2.0-dev libaio-dev meson libpixman-1-dev 

patch the meson.build file: https://github.com/animeshtrivedi/notes/wiki/qemu#compiling-qemu-oct-2023 and install libslirp 4.7 version

../configure --target-list=x86_64-softmmu --enable-kvm --enable-linux-aio --enable-trace-backends=log --disable-werror --disable-gtk --prefix=/home/$USER/local/ --enable-slirp --enable-docs --enable-vnc --enable-linux-io-uring

Running command:

qemu-img create -f qcow2 nvmessd-1G.qcow2 1G

sudo env "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" /home/animesh.trivedi/local/bin//qemu-system-x86_64 #-name dev -m 8G --enable-kvm -cpu host -smp 8 -hda ./ubuntu-2404.qcow2 -net user,hostfwd=tcp::7777-:22 -net nic -drive file=./nvmessd-1G.qcow2,id=nvme-device,format=raw,if=none -device nvme,drive=nvme-device,serial=nvme-dev,physical_block_size=4096,logical_block_size=4096

How to resize the LVM partition on a default Ubuntu installation

How to Extend the Default Ubuntu LVM Partition

atr@u24clean:~$ sudo vgdisplay 
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <48.00 GiB
  PE Size               4.00 MiB
  Total PE              12287
  Alloc PE / Size       6143 / <24.00 GiB
  Free  PE / Size       6144 / 24.00 GiB
  VG UUID               me8Qjt-riXz-ssyj-KYDf-9ZWf-kwZL-32q2Dt
   
atr@u24clean:~$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                mcaiHX-TQcI-1Le8-sQrE-M8mt-UPzO-RybFte
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2024-07-04 12:43:10 +0200
  LV Status              available
  # open                 1
  LV Size                <24.00 GiB
  Current LE             6143
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
atr@u24clean:~$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from <24.00 GiB (6143 extents) to <48.00 GiB (12287 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
atr@u24clean:~$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                mcaiHX-TQcI-1Le8-sQrE-M8mt-UPzO-RybFte
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2024-07-04 12:43:10 +0200
  LV Status              available
  # open                 1
  LV Size                <48.00 GiB
  Current LE             12287
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
atr@u24clean:~$ sudo vgdisplay  
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <48.00 GiB
  PE Size               4.00 MiB
  Total PE              12287
  Alloc PE / Size       12287 / <48.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               me8Qjt-riXz-ssyj-KYDf-9ZWf-kwZL-32q2Dt
   
atr@u24clean:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              743M  932K  742M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   24G   23G   53M 100% /
tmpfs                              3.7G     0  3.7G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  186M  1.7G  11% /boot
tmpfs                              743M   16K  743M   1% /run/user/1000
atr@u24clean:~$ sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 6
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 12581888 (4k) blocks long.

atr@u24clean:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              743M  932K  742M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   48G   23G   23G  50% /
tmpfs                              3.7G     0  3.7G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  186M  1.7G  11% /boot
tmpfs                              743M   16K  743M   1% /run/user/1000
atr@u24clean:~$ 

Download and test an iso quickly

qemu-system-x86_64 -enable-kvm -boot d -cdrom ./ubuntu-18.04.6-desktop-amd64.iso -m 4G

Setting up a clean ubuntu server quickly

Download https://ubuntu.com/download/server

Create a base image (change the number and size):

qemu-img create -f qcow2 ubuntu-2004.qcow2 50G

start installation with userlevel networking :

qemu-system-x86_64 \
-hda ubuntu-2004.qcow2 \
--enable-kvm -m 4G -smp 2 \
-boot d -cdrom ubuntu-20.04-live-server-amd64.iso \
-net user,hostfwd=tcp::7777-:22 -net nic -cpu host

For installation, you have to use the graphics VNC setup.

Start the new VM machine:

qemu-system-x86_64 \
-name qemuzns -m 4G --enable-kvm -cpu host -smp 4 \
-hda ubuntu-2004.qcow2 \
-net user,hostfwd=tcp::7777-:22 -net nic 

on the host machine after installation:

ssh -X user@localhost -p 7777

For authentication issues:

$ ssh -X user@localhost -p 7777
Received disconnect from 127.0.0.1 port 7777:2: Too many authentication failures
Disconnected from 127.0.0.1 port 7777
$ ssh -X user@localhost -o PubkeyAuthentication=no -o PreferredAuthentications=password -p 7777

To select a particular ssh key, use -i key flag

compiling QEMU Oct 2023

CXL setup

On ubuntu 22

https://stackoverflow.com/questions/75641274/network-backend-user-is-not-compiled-into-this-binary

git clone or wget 
../configure --target-list=x86_64-softmmu --enable-kvm --enable-linux-aio --enable-trace-backends=log --disable-werror --disable-gtk  --prefix=/home/atr/local/ --enable-slirp

need to explicitly enable slirp (that is removed in version 7)

Then you run into the compilation issue like this https://gitlab.com/qemu-project/qemu/-/issues/1853:

54 | return ioctl(uffd_dev, USERFAULTFD_IOC_NEW, flags);
   |                        ^~~~~~~~~~~~~~~~~~~ | USERFAULTFD_H
../util/userfaultfd.c:54:32: note: each undeclared identifier is reported only once for each function it appears in

Solution: this meson.build file fix (in the top level directory),

diff --git a/meson.build b/meson.build
index 925a7a15f05..bc6c4cc39eb 100644
--- a/meson.build
+++ b/meson.build
@@ -499,8 +499,8 @@ if 'objc' in all_languages
   add_project_arguments(objc.get_supported_arguments(warn_flags), native: false, language: 'objc')
 endif
 if targetos == 'linux'
-  add_project_arguments('-isystem', meson.current_source_dir() / 'linux-headers',
-                        '-isystem', 'linux-headers',
+  add_project_arguments('-isystem' + meson.current_source_dir() / 'linux-headers',
+                        '-isystem' + 'linux-headers',
                         language: all_languages)
 endif

Install libslirp 4.7 by hand because this specific version is asked:

animesh.trivedi@flex19:~$ sudo /home/animesh.trivedi/local/bin//qemu-system-x86_64
/home/animesh.trivedi/local/bin//qemu-system-x86_64: /lib/x86_64-linux-gnu/libslirp.so.0: version `SLIRP_4.7' not found (required by /home/animesh.trivedi/local/bin//qemu-system-x86_64)
git clone https://gitlab.freedesktop.org/slirp/libslirp/
cd libslirp 
git checkout v4.7.0 
meson build --prefix=/home/$USER/local/
ninja -C build install

Stosys compilation and a remote node2 machine

  1. start the VM on node2

  2. Setup the tunnel

ssh -L 127.0.0.1:6666:node2:7777 node2
  1. Do login for now without password, we can set it up to copy id
ssh  -o PubkeyAuthentication=no -o PreferredAuthentications=password user@localhost -p 6666 -v

Compiling on a fresh machine

# kernel essentials, 
sudo apt-get install git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache bison flex libelf-dev dwarves
# while compiling qemu 
sudo apt install ninja-build libglib2.0-dev libaio-dev meson libpixman-1-dev 

Virtio block device

-drive file=/dev/sdX#,cache=none,if=virtio - Set a virtual VirtIO-BLK hard drive and use the specified partition for it.

NVMe PCI passthrough

atr@node3$ ls -l /sys/block/nvme1n1/device/device
lrwxrwxrwx 1 root root 0 May 25 14:19 /sys/block/nvme1n1/device/device -> ../../../0000:00:05.0
root@node3# echo "0000:00:05.0" > /sys/bus/pci/drivers/nvme/unbind
root@node3# modprobe vfio-pci
root@node3# lspci -n -s 0000:00:05.0
b0:00.0 0108: 8086:2700
# attach to vfio driver
root@node3# echo 8086 2700  > /sys/bus/pci/drivers/vfio-pci/new_id
# build a local QEMU setup ( i compile and run a 6.0 version locally)
$ sudo qemu-system-x86_64 -name qemuzns -m 64G --enable-kvm -cpu host -smp 8 \
	-hda /home/atr/xfs/images/ubuntu-20.04-zns.qcow \
	-net user,hostfwd=tcp::7777-:22,hostfwd=tcp::2222-:2000 -net nic \
        -device vfio-pci,host=0000:00:05.0   (use the pci address)

get qcow image details

qemu-img info <filename>

Resize QCOW image

https://www.randomhacks.co.uk/how-to-resize-a-qcow2-harddrive-images/

https://maunium.net/blog/resizing-qcow2-images/

qemu-img resize image.qcow2 +SIZE

wget https://gparted.org/download.php

#Then as an example boot: 
sudo /home/atr/src/qemu-6.1.0//build/qemu-system-x86_64 -name qemuzns -m 32G --enable-kvm -cpu host -smp 16 -hda /home/atr/src/zns-resources/stosys-class/bin/gparted-live-1.3.1-1-amd64.iso -hdb /home/atr/xfs/images/ubuntu-20.04-stosys-v5.12.qcow -net user,hostfwd=tcp::7777-:22,hostfwd=tcp::2222-:2000 -net nic

WARNING: Image format was not specified for './gparted-live-1.3.1-1-amd64.iso' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.
VNC server running on 127.0.0.1:5900

start QEMU forwarding (as shown below and then resize the partition)

GTK error

atr@node3:/home/atr/src/qemu-6.0.0$ ./build/qemu-system-x86_64
Unable to init server: Could not connect: Connection refused
gtk initialization failed
atr@node3:/home/atr/src/qemu-6.0.0$ 

not sure why it started to build with gtk but you can disable

atr@node3:/home/atr/src/qemu-6.0.0$ ../configure --target-list=x86_64-softmmu --enable-kvm --enable-linux-aio --enable-trace-backends=log --disable-werror --disable-gtk

Building QEMU

./configure --target-list=x86_64-softmmu --enable-kvm --enable-linux-aio--enable-virtfs --enable-trace-backends=log --disable-werror
or 
../configure --target-list=x86_64-softmmu --enable-kvm --enable-linux-aio --enable-trace-backends=log --disable-werror 

See here: https://github.com/animeshtrivedi/qemu-xzns/blob/xzns-qemu-6.0.0/atr-notes.txt

Arch wiki QEMU: https://wiki.archlinux.org/title/QEMU

Setup ssh tunnel to forward the VNC traffic

In this example, I have VM running on node3 for which I can do an ssh access.

ssh -L 127.0.0.1:6000:127.0.0.1:5900 atr@node3

What is happening: The "127.0.0.1:5900" (private network) traffic will be looped from node3 (from which I have access to this private network), on my local desktop machine at "127.0.0.1:6000" port. Then open Reminna and connect to the VNC traffic at the local port 6000

Example:

Let’s say you have a MySQL database server running on machine db001.host (Eqv of 127.0.0.1:5900) on an internal (private) network, on port 3306, which is accessible from the machine pub001.host (my node3), and you want to connect using your local machine MySQL client (my desktop) to the database server. To do so, you can forward the connection using the following command:

ssh -L 3336:db001.host:3306 user@pub001.host

See this: https://linuxize.com/post/how-to-setup-ssh-tunneling/

Missing firmware files

qemu: could not load PC BIOS 'bios-256k.bin'

something like this means that the build was messed up. Follow the readme

mkdir build
cd build
../configure
make

https://github.com/qemu/qemu

Compressing images

qemu-img convert -c -O qcow2 ubuntu-20.04-stosys-fresh-installed.qcow shrunk.qcow2
qemu-img convert -c -O qcow2 -m 16 ubuntu-20.04-stosys-v5.12.qcow shrunk.qcow2
atr@node3:/mnt/xfs/images$ ls -l 
total 93491472
-rw-rw-r-- 1 atr  atr         1043 Oct 24 10:57 atr-notes.txt
-rw-rw-r-- 1 atr  atr      8388608 Oct 25 10:08 nvmessd.img
-rw-r--r-- 1 atr  atr   5733810176 Oct 24 10:53 RO-ubuntu-20.04-stosys-fresh-installed.qcow
-rw-r--r-- 1 atr  atr   6690701312 Oct 25 09:47 RO-ubuntu-20.04-stosys-v5.12-50G.qcow
-rw-r--r-- 1 atr  atr   2737045504 Oct 26 16:36 shrunk.qcow2
-rw-r--r-- 1 atr  atr   6694502400 Oct 26 16:24 ubuntu-20.04-stosys-v5.12.qcow

https://wiki.liutyi.info/display/DEVOPS/compress+qcow2+images

https://linux.die.net/man/1/qemu-img

QEMU 6.0 help

atr@node3:/home/atr/local/bin$ sudo /home/atr/src/qemu-6.0.0/build/qemu-system-x86_64 --help 
QEMU emulator version 6.0.0
Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers
usage: qemu-system-x86_64 [options] [disk_image]

'disk_image' is a raw hard disk image for IDE hard disk 0

Standard options:
-h or -help     display this help and exit
-version        display version information and exit
-machine [type=]name[,prop[=value][,...]]
                selects emulated machine ('-machine help' for list)
                property accel=accel1[:accel2[:...]] selects accelerator
                supported accelerators are kvm, xen, hax, hvf, whpx or tcg (default: tcg)
                vmport=on|off|auto controls emulation of vmport (default: auto)
                dump-guest-core=on|off include guest memory in a core dump (default=on)
                mem-merge=on|off controls memory merge support (default: on)
                aes-key-wrap=on|off controls support for AES key wrapping (default=on)
                dea-key-wrap=on|off controls support for DEA key wrapping (default=on)
                suppress-vmdesc=on|off disables self-describing migration (default=off)
                nvdimm=on|off controls NVDIMM support (default=off)
                memory-encryption=@var{} memory encryption object to use (default=none)
                hmat=on|off controls ACPI HMAT support (default=off)
                memory-backend='backend-id' specifies explicitly provided backend for main RAM (default=none)
-cpu cpu        select CPU ('-cpu help' for list)
-accel [accel=]accelerator[,prop[=value][,...]]
                select accelerator (kvm, xen, hax, hvf, whpx or tcg; use 'help' for a list)
                igd-passthru=on|off (enable Xen integrated Intel graphics passthrough, default=off)
                kernel-irqchip=on|off|split controls accelerated irqchip support (default=on)
                kvm-shadow-mem=size of KVM shadow MMU in bytes
                split-wx=on|off (enable TCG split w^x mapping)
                tb-size=n (TCG translation block cache size)
                thread=single|multi (enable multi-threaded TCG)
-smp [cpus=]n[,maxcpus=cpus][,cores=cores][,threads=threads][,dies=dies][,sockets=sockets]
                set the number of CPUs to 'n' [default=1]
                maxcpus= maximum number of total cpus, including
                offline CPUs for hotplug, etc
                cores= number of CPU cores on one socket (for PC, it's on one die)
                threads= number of threads on one CPU core
                dies= number of CPU dies on one socket (for PC only)
                sockets= number of discrete sockets in the system
-numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]
-numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]
-numa dist,src=source,dst=destination,val=distance
-numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z]
-numa hmat-lb,initiator=node,target=node,hierarchy=memory|first-level|second-level|third-level,data-type=access-latency|read-latency|write-latency[,latency=lat][,bandwidth=bw]
-numa hmat-cache,node-id=node,size=size,level=level[,associativity=none|direct|complex][,policy=none|write-back|write-through][,line=size]
-add-fd fd=fd,set=set[,opaque=opaque]
                Add 'fd' to fd 'set'
-set group.id.arg=value
                set <arg> parameter for item <id> of type <group>
                i.e. -set drive.$id.file=/path/to/image
-global driver.property=value
-global driver=driver,property=property,value=value
                set a global default for a driver property
-boot [order=drives][,once=drives][,menu=on|off]
      [,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]
                'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)
                'sp_name': the file's name that would be passed to bios as logo picture, if menu=on
                'sp_time': the period that splash picture last if menu=on, unit is ms
                'rb_timeout': the timeout before guest reboot when boot failed, unit is ms
-m [size=]megs[,slots=n,maxmem=size]
                configure guest RAM
                size: initial amount of guest memory
                slots: number of hotplug slots (default: none)
                maxmem: maximum amount of guest memory (default: none)
NOTE: Some architectures might enforce a specific granularity
-mem-path FILE  provide backing storage for guest RAM
-mem-prealloc   preallocate guest memory (use with -mem-path)
-k language     use keyboard layout (for example 'fr' for French)
-audio-help     show -audiodev equivalent of the currently specified audio settings
-audiodev [driver=]driver,id=id[,prop[=value][,...]]
                specifies the audio backend to use
                id= identifier of the backend
                timer-period= timer period in microseconds
                in|out.mixing-engine= use mixing engine to mix streams inside QEMU
                in|out.fixed-settings= use fixed settings for host audio
                in|out.frequency= frequency to use with fixed settings
                in|out.channels= number of channels to use with fixed settings
                in|out.format= sample format to use with fixed settings
                valid values: s8, s16, s32, u8, u16, u32, f32
                in|out.voices= number of voices to use
                in|out.buffer-length= length of buffer in microseconds
-audiodev none,id=id,[,prop[=value][,...]]
                dummy driver that discards all output
-audiodev oss,id=id[,prop[=value][,...]]
                in|out.dev= path of the audio device to use
                in|out.buffer-count= number of buffers
                in|out.try-poll= attempt to use poll mode
                try-mmap= try using memory mapped access
                exclusive= open device in exclusive mode
                dsp-policy= set timing policy (0..10), -1 to use fragment mode
-audiodev wav,id=id[,prop[=value][,...]]
                path= path of wav file to record
-soundhw c1,... enable audio support
                and only specified sound cards (comma separated list)
                use '-soundhw help' to get the list of supported cards
                use '-soundhw all' to enable all of them
-device driver[,prop[=value][,...]]
                add device (based on driver)
                prop=value,... sets driver properties
                use '-device help' to print all possible drivers
                use '-device driver,help' to print all possible properties
-name string1[,process=string2][,debug-threads=on|off]
                set the name of the guest
                string1 sets the window title and string2 the process name
                When debug-threads is enabled, individual threads are given a separate name
                NOTE: The thread names are for debugging and not a stable API.
-uuid %08x-%04x-%04x-%04x-%012x
                specify machine UUID

Block device options:
-fda/-fdb file  use 'file' as floppy disk 0/1 image
-hda/-hdb file  use 'file' as IDE hard disk 0/1 image
-hdc/-hdd file  use 'file' as IDE hard disk 2/3 image
-cdrom file     use 'file' as IDE cdrom image (cdrom is ide1 master)
-blockdev [driver=]driver[,node-name=N][,discard=ignore|unmap]
          [,cache.direct=on|off][,cache.no-flush=on|off]
          [,read-only=on|off][,auto-read-only=on|off]
          [,force-share=on|off][,detect-zeroes=on|off|unmap]
          [,driver specific parameters...]
                configure a block backend
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
       [,cache=writethrough|writeback|none|directsync|unsafe][,format=f]
       [,snapshot=on|off][,rerror=ignore|stop|report]
       [,werror=ignore|stop|report|enospc][,id=name]
       [,aio=threads|native|io_uring]
       [,readonly=on|off][,copy-on-read=on|off]
       [,discard=ignore|unmap][,detect-zeroes=on|off|unmap]
       [[,bps=b]|[[,bps_rd=r][,bps_wr=w]]]
       [[,iops=i]|[[,iops_rd=r][,iops_wr=w]]]
       [[,bps_max=bm]|[[,bps_rd_max=rm][,bps_wr_max=wm]]]
       [[,iops_max=im]|[[,iops_rd_max=irm][,iops_wr_max=iwm]]]
       [[,iops_size=is]]
       [[,group=g]]
                use 'file' as a drive image
-mtdblock file  use 'file' as on-board Flash memory image
-sd file        use 'file' as SecureDigital card image
-pflash file    use 'file' as a parallel flash image
-snapshot       write to temporary files instead of disk image files
-fsdev local,id=id,path=path,security_model=mapped-xattr|mapped-file|passthrough|none
 [,writeout=immediate][,readonly=on][,fmode=fmode][,dmode=dmode]
 [[,throttling.bps-total=b]|[[,throttling.bps-read=r][,throttling.bps-write=w]]]
 [[,throttling.iops-total=i]|[[,throttling.iops-read=r][,throttling.iops-write=w]]]
 [[,throttling.bps-total-max=bm]|[[,throttling.bps-read-max=rm][,throttling.bps-write-max=wm]]]
 [[,throttling.iops-total-max=im]|[[,throttling.iops-read-max=irm][,throttling.iops-write-max=iwm]]]
 [[,throttling.iops-size=is]]
-fsdev proxy,id=id,socket=socket[,writeout=immediate][,readonly=on]
-fsdev proxy,id=id,sock_fd=sock_fd[,writeout=immediate][,readonly=on]
-fsdev synth,id=id
-virtfs local,path=path,mount_tag=tag,security_model=mapped-xattr|mapped-file|passthrough|none
        [,id=id][,writeout=immediate][,readonly=on][,fmode=fmode][,dmode=dmode][,multidevs=remap|forbid|warn]
-virtfs proxy,mount_tag=tag,socket=socket[,id=id][,writeout=immediate][,readonly=on]
-virtfs proxy,mount_tag=tag,sock_fd=sock_fd[,id=id][,writeout=immediate][,readonly=on]
-virtfs synth,mount_tag=tag[,id=id][,readonly=on]
-iscsi [user=user][,password=password]
       [,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE
       [,initiator-name=initiator-iqn][,id=target-iqn]
       [,timeout=timeout]
                iSCSI session parameters

USB convenience options:
-usb            enable on-board USB host controller (if not enabled by default)
-usbdevice name add the host or guest USB device 'name'

Display options:
-display vnc=<display>[,<optargs>]
-display curses[,charset=<encoding>]
-display none
                select display backend type
                The default display is equivalent to
                "-vnc localhost:0,to=99,id=default"
-nographic      disable graphical output and redirect serial I/Os to console
-curses         shorthand for -display curses
-alt-grab       use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)
-ctrl-grab      use Right-Ctrl to grab mouse (instead of Ctrl-Alt)
-no-quit        disable SDL window close capability
-sdl            shorthand for -display sdl
-spice [port=port][,tls-port=secured-port][,x509-dir=<dir>]
       [,x509-key-file=<file>][,x509-key-password=<file>]
       [,x509-cert-file=<file>][,x509-cacert-file=<file>]
       [,x509-dh-key-file=<file>][,addr=addr]
       [,ipv4=on|off][,ipv6=on|off][,unix=on|off]
       [,tls-ciphers=<list>]
       [,tls-channel=[main|display|cursor|inputs|record|playback]]
       [,plaintext-channel=[main|display|cursor|inputs|record|playback]]
       [,sasl=on|off][,disable-ticketing=on|off]
       [,password=<string>][,password-secret=<secret-id>]
       [,image-compression=[auto_glz|auto_lz|quic|glz|lz|off]]
       [,jpeg-wan-compression=[auto|never|always]]
       [,zlib-glz-wan-compression=[auto|never|always]]
       [,streaming-video=[off|all|filter]][,disable-copy-paste=on|off]
       [,disable-agent-file-xfer=on|off][,agent-mouse=[on|off]]
       [,playback-compression=[on|off]][,seamless-migration=[on|off]]
       [,gl=[on|off]][,rendernode=<file>]
   enable spice
   at least one of {port, tls-port} is mandatory
-portrait       rotate graphical output 90 deg left (only PXA LCD)
-rotate <deg>   rotate graphical output some deg left (only PXA LCD)
-vga [std|cirrus|vmware|qxl|xenfb|tcx|cg3|virtio|none]
                select video card type
-full-screen    start in full screen
-vnc <display>  shorthand for -display vnc=<display>

i386 target only:
-win2k-hack     use it when installing Windows 2000 to avoid a disk full bug
-no-fd-bootchk  disable boot signature checking for floppy disks
-no-acpi        disable ACPI
-no-hpet        disable HPET
-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,{data|file}=file1[:file2]...]
                ACPI table description
-smbios file=binary
                load SMBIOS entry from binary file
-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]
              [,uefi=on|off]
                specify SMBIOS type 0 fields
-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]
              [,uuid=uuid][,sku=str][,family=str]
                specify SMBIOS type 1 fields
-smbios type=2[,manufacturer=str][,product=str][,version=str][,serial=str]
              [,asset=str][,location=str]
                specify SMBIOS type 2 fields
-smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str]
              [,sku=str]
                specify SMBIOS type 3 fields
-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str]
              [,asset=str][,part=str][,max-speed=%d][,current-speed=%d]
                specify SMBIOS type 4 fields
-smbios type=11[,value=str][,path=filename]
                specify SMBIOS type 11 fields
-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str]
               [,asset=str][,part=str][,speed=%d]
                specify SMBIOS type 17 fields

Network options:
-netdev user,id=str[,ipv4=on|off][,net=addr[/mask]][,host=addr]
         [,ipv6=on|off][,ipv6-net=addr[/int]][,ipv6-host=addr]
         [,restrict=on|off][,hostname=host][,dhcpstart=addr]
         [,dns=addr][,ipv6-dns=addr][,dnssearch=domain][,domainname=domain]
         [,tftp=dir][,tftp-server-name=name][,bootfile=f][,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]]
                configure a user mode network backend with ID 'str',
                its DHCP server and optional services
-netdev tap,id=str[,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile]
         [,br=bridge][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off]
         [,vhostfd=h][,vhostfds=x:y:...:z][,vhostforce=on|off][,queues=n]
         [,poll-us=n]
                configure a host TAP network backend with ID 'str'
                connected to a bridge (default=br0)
                use network scripts 'file' (default=/usr/local/etc/qemu-ifup)
                to configure it and 'dfile' (default=/usr/local/etc/qemu-ifdown)
                to deconfigure it
                use '[down]script=no' to disable script execution
                use network helper 'helper' (default=/usr/local/libexec/qemu-bridge-helper) to
                configure it
                use 'fd=h' to connect to an already opened TAP interface
                use 'fds=x:y:...:z' to connect to already opened multiqueue capable TAP interfaces
                use 'sndbuf=nbytes' to limit the size of the send buffer (the
                default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576')
                use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag
                use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition
                use vhost=on to enable experimental in kernel accelerator
                    (only has effect for virtio guests which use MSIX)
                use vhostforce=on to force vhost on for non-MSIX virtio guests
                use 'vhostfd=h' to connect to an already opened vhost net device
                use 'vhostfds=x:y:...:z to connect to multiple already opened vhost net devices
                use 'queues=n' to specify the number of queues to be created for multiqueue TAP
                use 'poll-us=n' to specify the maximum number of microseconds that could be
                spent on busy polling for vhost net
-netdev bridge,id=str[,br=bridge][,helper=helper]
                configure a host TAP network backend with ID 'str' that is
                connected to a bridge (default=br0)
                using the program 'helper (default=/usr/local/libexec/qemu-bridge-helper)
-netdev l2tpv3,id=str,src=srcaddr,dst=dstaddr[,srcport=srcport][,dstport=dstport]
         [,rxsession=rxsession],txsession=txsession[,ipv6=on|off][,udp=on|off]
         [,cookie64=on|off][,counter][,pincounter][,txcookie=txcookie]
         [,rxcookie=rxcookie][,offset=offset]
                configure a network backend with ID 'str' connected to
                an Ethernet over L2TPv3 pseudowire.
                Linux kernel 3.3+ as well as most routers can talk
                L2TPv3. This transport allows connecting a VM to a VM,
                VM to a router and even VM to Host. It is a nearly-universal
                standard (RFC3931). Note - this implementation uses static
                pre-configured tunnels (same as the Linux kernel).
                use 'src=' to specify source address
                use 'dst=' to specify destination address
                use 'udp=on' to specify udp encapsulation
                use 'srcport=' to specify source udp port
                use 'dstport=' to specify destination udp port
                use 'ipv6=on' to force v6
                L2TPv3 uses cookies to prevent misconfiguration as
                well as a weak security measure
                use 'rxcookie=0x012345678' to specify a rxcookie
                use 'txcookie=0x012345678' to specify a txcookie
                use 'cookie64=on' to set cookie size to 64 bit, otherwise 32
                use 'counter=off' to force a 'cut-down' L2TPv3 with no counter
                use 'pincounter=on' to work around broken counter handling in peer
                use 'offset=X' to add an extra offset between header and data
-netdev socket,id=str[,fd=h][,listen=[host]:port][,connect=host:port]
                configure a network backend to connect to another network
                using a socket connection
-netdev socket,id=str[,fd=h][,mcast=maddr:port[,localaddr=addr]]
                configure a network backend to connect to a multicast maddr and port
                use 'localaddr=addr' to specify the host address to send packets from
-netdev socket,id=str[,fd=h][,udp=host:port][,localaddr=host:port]
                configure a network backend to connect to another network
                using an UDP tunnel
-netdev vhost-user,id=str,chardev=dev[,vhostforce=on|off]
                configure a vhost-user network, backed by a chardev 'dev'
-netdev vhost-vdpa,id=str,vhostdev=/path/to/dev
                configure a vhost-vdpa network,Establish a vhost-vdpa netdev
-netdev hubport,id=str,hubid=n[,netdev=nd]
                configure a hub port on the hub with ID 'n'
-nic [tap|bridge|user|l2tpv3|vhost-user|socket][,option][,...][mac=macaddr]
                initialize an on-board / default host NIC (using MAC address
                macaddr) and connect it to the given host network backend
-nic none       use it alone to have zero network devices (the default is to
                provided a 'user' network connection)
-net nic[,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
                configure or create an on-board (or machine default) NIC and
                connect it to hub 0 (please use -nic unless you need a hub)
-net [user|tap|bridge|socket][,option][,option][,...]
                old way to initialize a host network interface
                (use the -netdev option if possible instead)

Character device options:
-chardev help
-chardev null,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]
-chardev socket,id=id[,host=host],port=port[,to=to][,ipv4=on|off][,ipv6=on|off][,nodelay=on|off][,reconnect=seconds]
         [,server=on|off][,wait=on|off][,telnet=on|off][,websocket=on|off][,reconnect=seconds][,mux=on|off]
         [,logfile=PATH][,logappend=on|off][,tls-creds=ID][,tls-authz=ID] (tcp)
-chardev socket,id=id,path=path[,server=on|off][,wait=on|off][,telnet=on|off][,websocket=on|off][,reconnect=seconds]
         [,mux=on|off][,logfile=PATH][,logappend=on|off][,abstract=on|off][,tight=on|off] (unix)
-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]
         [,localport=localport][,ipv4=on|off][,ipv6=on|off][,mux=on|off]
         [,logfile=PATH][,logappend=on|off]
-chardev msmouse,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]
-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
         [,mux=on|off][,logfile=PATH][,logappend=on|off]
-chardev ringbuf,id=id[,size=size][,logfile=PATH][,logappend=on|off]
-chardev file,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]
-chardev pipe,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]
-chardev pty,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]
-chardev stdio,id=id[,mux=on|off][,signal=on|off][,logfile=PATH][,logappend=on|off]
-chardev serial,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]
-chardev tty,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]
-chardev parallel,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]
-chardev parport,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]

TPM device options:
-tpmdev passthrough,id=id[,path=path][,cancel-path=path]
                use path to provide path to a character device; default is /dev/tpm0
                use cancel-path to provide path to TPM's cancel sysfs entry; if
                not provided it will be searched for in /sys/class/misc/tpm?/device
-tpmdev emulator,id=id,chardev=dev
                configure the TPM device using chardev backend

Linux/Multiboot boot specific:
-kernel bzImage use 'bzImage' as kernel image
-append cmdline use 'cmdline' as kernel command line
-initrd file    use 'file' as initial ram disk
-dtb    file    use 'file' as device tree image

Debug/Expert options:
-compat [deprecated-input=accept|reject|crash][,deprecated-output=accept|hide]
                Policy for handling deprecated management interfaces
-fw_cfg [name=]<name>,file=<file>
                add named fw_cfg entry with contents from file
-fw_cfg [name=]<name>,string=<str>
                add named fw_cfg entry with contents from string
-serial dev     redirect the serial port to char device 'dev'
-parallel dev   redirect the parallel port to char device 'dev'
-monitor dev    redirect the monitor to char device 'dev'
-qmp dev        like -monitor but opens in 'control' mode
-qmp-pretty dev like -qmp but uses pretty JSON formatting
-mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]
-debugcon dev   redirect the debug console to char device 'dev'
-pidfile file   write PID to 'file'
-singlestep     always run in singlestep mode
--preconfig     pause QEMU before machine is initialized (experimental)
-S              freeze CPU at startup (use 'c' to start execution)
-overcommit [mem-lock=on|off][cpu-pm=on|off]
                run qemu with overcommit hints
                mem-lock=on|off controls memory lock support (default: off)
                cpu-pm=on|off controls cpu power management (default: off)
-gdb dev        accept gdb connection on 'dev'. (QEMU defaults to starting
                the guest without waiting for gdb to connect; use -S too
                if you want it to not start execution.)
-s              shorthand for -gdb tcp::1234
-d item1,...    enable logging of specified items (use '-d help' for a list of log items)
-D logfile      output log to logfile (default stderr)
-dfilter range,..  filter debug output to range of addresses (useful for -d cpu,exec,etc..)
-seed number       seed the pseudo-random number generator
-L path         set the directory for the BIOS, VGA BIOS and keymaps
-bios file      set the filename for the BIOS
-enable-kvm     enable KVM full virtualization support
-xen-domid id   specify xen guest domain id
-xen-attach     attach to existing xen domain
                libxl will use this when starting QEMU
-xen-domid-restrict     restrict set of available xen operations
                        to specified domain id. (Does not affect
                        xenpv machine type).
-no-reboot      exit instead of rebooting
-no-shutdown    stop before shutdown
-action reboot=reset|shutdown
                   action when guest reboots [default=reset]
-action shutdown=poweroff|pause
                   action when guest shuts down [default=poweroff]
-action panic=pause|shutdown|none
                   action when guest panics [default=shutdown]
-action watchdog=reset|shutdown|poweroff|inject-nmi|pause|debug|none
                   action when watchdog fires [default=reset]
-loadvm [tag|id]
                start right away with a saved state (loadvm in monitor)
-daemonize      daemonize QEMU after initializing
-option-rom rom load a file, rom, into the option ROM space
-rtc [base=utc|localtime|<datetime>][,clock=host|rt|vm][,driftfix=none|slew]
                set the RTC base and clock, enable drift fix for clock ticks (x86 only)
-icount [shift=N|auto][,align=on|off][,sleep=on|off][,rr=record|replay,rrfile=<filename>[,rrsnapshot=<snapshot>]]
                enable virtual instruction counter with 2^N clock ticks per
                instruction, enable aligning the host and virtual clocks
                or disable real time cpu sleeping, and optionally enable
                record-and-replay mode
-watchdog model
                enable virtual hardware watchdog [default=none]
-watchdog-action reset|shutdown|poweroff|inject-nmi|pause|debug|none
                action when watchdog fires [default=reset]
-echr chr       set terminal escape character instead of ctrl-a
-incoming tcp:[host]:port[,to=maxport][,ipv4=on|off][,ipv6=on|off]
-incoming rdma:host:port[,ipv4=on|off][,ipv6=on|off]
-incoming unix:socketpath
                prepare for incoming migration, listen on
                specified protocol and socket address
-incoming fd:fd
-incoming exec:cmdline
                accept incoming migration on given file descriptor
                or from given external command
-incoming defer
                wait for the URI to be specified via migrate_incoming
-only-migratable     allow only migratable devices
-nodefaults     don't create default devices
-chroot dir     chroot to dir just before starting the VM
-runas user     change to user id user just before starting the VM
                user can be numeric uid:gid instead
-sandbox on[,obsolete=allow|deny][,elevateprivileges=allow|deny|children]
          [,spawn=allow|deny][,resourcecontrol=allow|deny]
                Enable seccomp mode 2 system call filter (default 'off').
                use 'obsolete' to allow obsolete system calls that are provided
                    by the kernel, but typically no longer used by modern
                    C library implementations.
                use 'elevateprivileges' to allow or deny the QEMU process ability
                    to elevate privileges using set*uid|gid system calls.
                    The value 'children' will deny set*uid|gid system calls for
                    main QEMU process but will allow forks and execves to run unprivileged
                use 'spawn' to avoid QEMU to spawn new threads or processes by
                     blocking *fork and execve
                use 'resourcecontrol' to disable process affinity and schedular priority
-readconfig <file>
-writeconfig <file>
                read/write config file (deprecated)
-no-user-config
                do not load default user-provided config files at startup
-trace [[enable=]<pattern>][,events=<file>][,file=<file>]
                specify tracing options
-plugin [file=]<file>[,arg=<string>]
                load a plugin
-enable-fips    enable FIPS 140-2 compliance
-msg [timestamp[=on|off]][,guest-name=[on|off]]
                control error message format
                timestamp=on enables timestamps (default: off)
                guest-name=on enables guest name prefix but only if
                              -name guest option is set (default: off)
-dump-vmstate <file>
                Output vmstate information in JSON format to file.
                Use the scripts/vmstate-static-checker.py file to
                check for possible regressions in migration code
                by comparing two such vmstate dumps.
-enable-sync-profile
                enable synchronization profiling

Generic object creation:
-object TYPENAME[,PROP1=VALUE1,...]
                create a new object of type TYPENAME setting properties
                in the order they are specified.  Note that the 'id'
                property must be set.  These objects are placed in the
                '/objects' path.

During emulation, the following keys are useful:
ctrl-alt-f      toggle full screen
ctrl-alt-n      switch to virtual console 'n'
ctrl-alt        toggle mouse and keyboard grab

When using -nographic, press 'ctrl-a h' to get some help.

See <https://qemu.org/contribute/report-a-bug> for how to report bugs.
More information on the QEMU project at <https://qemu.org>
atr@node3:/home/atr/local/bin$ sudo /home/atr/src/qemu-6.0.0/build/qemu-system-x86_64 -device help 
Controller/Bridge/Hub devices:
name "i82801b11-bridge", bus PCI
name "igd-passthrough-isa-bridge", bus PCI, desc "ISA bridge faked to support IGD PT"
name "ioh3420", bus PCI, desc "Intel IOH device id 3420 PCIE Root Port"
name "pci-bridge", bus PCI, desc "Standard PCI Bridge"
name "pci-bridge-seat", bus PCI, desc "Standard PCI Bridge (multiseat)"
name "pcie-pci-bridge", bus PCI
name "pcie-root-port", bus PCI, desc "PCI Express Root Port"
name "pxb", bus PCI, desc "PCI Expander Bridge"
name "pxb-pcie", bus PCI, desc "PCI Express Expander Bridge"
name "usb-hub", bus usb-bus
name "vfio-pci-igd-lpc-bridge", bus PCI, desc "VFIO dummy ISA/LPC bridge for IGD assignment"
name "vmbus-bridge", bus System
name "x3130-upstream", bus PCI, desc "TI X3130 Upstream Port of PCI Express Switch"
name "xio3130-downstream", bus PCI, desc "TI X3130 Downstream Port of PCI Express Switch"

USB devices:
name "ich9-usb-ehci1", bus PCI
name "ich9-usb-ehci2", bus PCI
name "ich9-usb-uhci1", bus PCI
name "ich9-usb-uhci2", bus PCI
name "ich9-usb-uhci3", bus PCI
name "ich9-usb-uhci4", bus PCI
name "ich9-usb-uhci5", bus PCI
name "ich9-usb-uhci6", bus PCI
name "nec-usb-xhci", bus PCI
name "pci-ohci", bus PCI, desc "Apple USB Controller"
name "piix3-usb-uhci", bus PCI
name "piix4-usb-uhci", bus PCI
name "qemu-xhci", bus PCI
name "usb-ehci", bus PCI

Storage devices:
name "am53c974", bus PCI, desc "AMD Am53c974 PCscsi-PCI SCSI adapter"
name "dc390", bus PCI, desc "Tekram DC-390 SCSI adapter"
name "floppy", bus floppy-bus, desc "virtual floppy drive"
name "ich9-ahci", bus PCI, alias "ahci"
name "ide-cd", bus IDE, desc "virtual IDE CD-ROM"
name "ide-hd", bus IDE, desc "virtual IDE disk"
name "isa-fdc", bus ISA
name "isa-ide", bus ISA
name "lsi53c810", bus PCI
name "lsi53c895a", bus PCI, alias "lsi"
name "megasas", bus PCI, desc "LSI MegaRAID SAS 1078"
name "megasas-gen2", bus PCI, desc "LSI MegaRAID SAS 2108"
name "mptsas1068", bus PCI, desc "LSI SAS 1068"
name "nvdimm", desc "DIMM memory module"
name "nvme", bus PCI, desc "Non-Volatile Memory Express"
name "nvme-ns", bus nvme-bus, desc "Virtual NVMe namespace"
name "nvme-subsys", desc "Virtual NVMe subsystem"
name "piix3-ide", bus PCI
name "piix3-ide-xen", bus PCI
name "piix4-ide", bus PCI
name "pvscsi", bus PCI
name "scsi-block", bus SCSI, desc "SCSI block device passthrough"
name "scsi-cd", bus SCSI, desc "virtual SCSI CD-ROM"
name "scsi-generic", bus SCSI, desc "pass through generic scsi device (/dev/sg*)"
name "scsi-hd", bus SCSI, desc "virtual SCSI disk"
name "sd-card", bus sd-bus
name "sdhci-pci", bus PCI
name "usb-bot", bus usb-bus
name "usb-mtp", bus usb-bus, desc "USB Media Transfer Protocol device"
name "usb-storage", bus usb-bus
name "usb-uas", bus usb-bus
name "vhost-scsi", bus virtio-bus
name "vhost-scsi-pci", bus PCI
name "vhost-scsi-pci-non-transitional", bus PCI
name "vhost-scsi-pci-transitional", bus PCI
name "vhost-user-blk", bus virtio-bus
name "vhost-user-blk-pci", bus PCI
name "vhost-user-blk-pci-non-transitional", bus PCI
name "vhost-user-blk-pci-transitional", bus PCI
name "vhost-user-fs-device", bus virtio-bus
name "vhost-user-fs-pci", bus PCI
name "vhost-user-scsi", bus virtio-bus
name "vhost-user-scsi-pci", bus PCI
name "vhost-user-scsi-pci-non-transitional", bus PCI
name "vhost-user-scsi-pci-transitional", bus PCI
name "virtio-blk-device", bus virtio-bus
name "virtio-blk-pci", bus PCI, alias "virtio-blk"
name "virtio-blk-pci-non-transitional", bus PCI
name "virtio-blk-pci-transitional", bus PCI
name "virtio-pmem", bus virtio-bus
name "virtio-scsi-device", bus virtio-bus
name "virtio-scsi-pci", bus PCI, alias "virtio-scsi"
name "virtio-scsi-pci-non-transitional", bus PCI
name "virtio-scsi-pci-transitional", bus PCI

Network devices:
name "e1000", bus PCI, alias "e1000-82540em", desc "Intel Gigabit Ethernet"
name "e1000-82544gc", bus PCI, desc "Intel Gigabit Ethernet"
name "e1000-82545em", bus PCI, desc "Intel Gigabit Ethernet"
name "e1000e", bus PCI, desc "Intel 82574L GbE Controller"
name "i82550", bus PCI, desc "Intel i82550 Ethernet"
name "i82551", bus PCI, desc "Intel i82551 Ethernet"
name "i82557a", bus PCI, desc "Intel i82557A Ethernet"
name "i82557b", bus PCI, desc "Intel i82557B Ethernet"
name "i82557c", bus PCI, desc "Intel i82557C Ethernet"
name "i82558a", bus PCI, desc "Intel i82558A Ethernet"
name "i82558b", bus PCI, desc "Intel i82558B Ethernet"
name "i82559a", bus PCI, desc "Intel i82559A Ethernet"
name "i82559b", bus PCI, desc "Intel i82559B Ethernet"
name "i82559c", bus PCI, desc "Intel i82559C Ethernet"
name "i82559er", bus PCI, desc "Intel i82559ER Ethernet"
name "i82562", bus PCI, desc "Intel i82562 Ethernet"
name "i82801", bus PCI, desc "Intel i82801 Ethernet"
name "ne2k_isa", bus ISA
name "ne2k_pci", bus PCI
name "pcnet", bus PCI
name "pvrdma", bus PCI, desc "RDMA Device"
name "rocker", bus PCI, desc "Rocker Switch"
name "rtl8139", bus PCI
name "tulip", bus PCI
name "usb-net", bus usb-bus
name "virtio-net-device", bus virtio-bus
name "virtio-net-pci", bus PCI, alias "virtio-net"
name "virtio-net-pci-non-transitional", bus PCI
name "virtio-net-pci-transitional", bus PCI
name "vmxnet3", bus PCI, desc "VMWare Paravirtualized Ethernet v3"

Input devices:
name "i8042", bus ISA
name "ipoctal232", bus IndustryPack, desc "GE IP-Octal 232 8-channel RS-232 IndustryPack"
name "isa-parallel", bus ISA
name "isa-serial", bus ISA
name "pci-serial", bus PCI
name "pci-serial-2x", bus PCI
name "pci-serial-4x", bus PCI
name "tpci200", bus PCI, desc "TEWS TPCI200 IndustryPack carrier"
name "usb-braille", bus usb-bus
name "usb-ccid", bus usb-bus, desc "CCID Rev 1.1 smartcard reader"
name "usb-kbd", bus usb-bus
name "usb-mouse", bus usb-bus
name "usb-serial", bus usb-bus
name "usb-tablet", bus usb-bus
name "usb-wacom-tablet", bus usb-bus, desc "QEMU PenPartner Tablet"
name "vhost-user-input", bus virtio-bus
name "vhost-user-input-pci", bus PCI
name "virtconsole", bus virtio-serial-bus
name "virtio-input-host-device", bus virtio-bus
name "virtio-input-host-pci", bus PCI, alias "virtio-input-host"
name "virtio-keyboard-device", bus virtio-bus
name "virtio-keyboard-pci", bus PCI, alias "virtio-keyboard"
name "virtio-mouse-device", bus virtio-bus
name "virtio-mouse-pci", bus PCI, alias "virtio-mouse"
name "virtio-serial-device", bus virtio-bus
name "virtio-serial-pci", bus PCI, alias "virtio-serial"
name "virtio-serial-pci-non-transitional", bus PCI
name "virtio-serial-pci-transitional", bus PCI
name "virtio-tablet-device", bus virtio-bus
name "virtio-tablet-pci", bus PCI, alias "virtio-tablet"
name "virtserialport", bus virtio-serial-bus
name "vmmouse", bus ISA

Display devices:
name "ati-vga", bus PCI
name "bochs-display", bus PCI
name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
name "isa-cirrus-vga", bus ISA
name "isa-vga", bus ISA
name "ramfb", bus System, desc "ram framebuffer standalone device"
name "secondary-vga", bus PCI
name "sga", bus ISA, desc "Serial Graphics Adapter"
name "VGA", bus PCI
name "vhost-user-gpu", bus virtio-bus
name "vhost-user-gpu-pci", bus PCI
name "vhost-user-vga", bus PCI
name "virtio-gpu-device", bus virtio-bus
name "virtio-gpu-pci", bus PCI, alias "virtio-gpu"
name "virtio-vga", bus PCI
name "vmware-svga", bus PCI

Sound devices:
name "AC97", bus PCI, alias "ac97", desc "Intel 82801AA AC97 Audio"
name "adlib", bus ISA, desc "Yamaha YM3812 (OPL2)"
name "cs4231a", bus ISA, desc "Crystal Semiconductor CS4231A"
name "ES1370", bus PCI, alias "es1370", desc "ENSONIQ AudioPCI ES1370"
name "gus", bus ISA, desc "Gravis Ultrasound GF1"
name "hda-duplex", bus HDA, desc "HDA Audio Codec, duplex (line-out, line-in)"
name "hda-micro", bus HDA, desc "HDA Audio Codec, duplex (speaker, microphone)"
name "hda-output", bus HDA, desc "HDA Audio Codec, output-only (line-out)"
name "ich9-intel-hda", bus PCI, desc "Intel HD Audio Controller (ich9)"
name "intel-hda", bus PCI, desc "Intel HD Audio Controller (ich6)"
name "sb16", bus ISA, desc "Creative Sound Blaster 16"
name "usb-audio", bus usb-bus

Misc devices:
name "amd-iommu", bus System, desc "AMD IOMMU (AMD-Vi) DMA Remapping device"
name "ctucan_pci", bus PCI, desc "CTU CAN PCI"
name "edu", bus PCI
name "guest-loader", desc "Guest Loader"
name "hyperv-testdev", bus ISA
name "i2c-ddc", bus i2c-bus
name "i6300esb", bus PCI
name "ib700", bus ISA
name "intel-iommu", bus System, desc "Intel IOMMU (VT-d) DMA Remapping device"
name "isa-applesmc", bus ISA
name "isa-debug-exit", bus ISA
name "isa-debugcon", bus ISA
name "ivshmem-doorbell", bus PCI, desc "Inter-VM shared memory"
name "ivshmem-plain", bus PCI, desc "Inter-VM shared memory"
name "kvaser_pci", bus PCI, desc "Kvaser PCICANx"
name "loader", desc "Generic Loader"
name "mioe3680_pci", bus PCI, desc "Mioe3680 PCICANx"
name "pc-testdev", bus ISA
name "pci-testdev", bus PCI, desc "PCI Test Device"
name "pcm3680_pci", bus PCI, desc "Pcm3680i PCICANx"
name "pvpanic", bus ISA
name "pvpanic-pci", bus PCI
name "smbus-ipmi", bus i2c-bus
name "tpm-crb"
name "tpm-tis", bus ISA
name "u2f-passthru", bus usb-bus, desc "QEMU U2F passthrough key"
name "vfio-pci", bus PCI, desc "VFIO-based PCI device assignment"
name "vfio-pci-nohotplug", bus PCI, desc "VFIO-based PCI device assignment"
name "vhost-user-vsock-device", bus virtio-bus
name "vhost-user-vsock-pci", bus PCI
name "vhost-user-vsock-pci-non-transitional", bus PCI
name "vhost-vsock-device", bus virtio-bus
name "vhost-vsock-pci", bus PCI
name "vhost-vsock-pci-non-transitional", bus PCI
name "virtio-balloon-device", bus virtio-bus
name "virtio-balloon-pci", bus PCI, alias "virtio-balloon"
name "virtio-balloon-pci-non-transitional", bus PCI
name "virtio-balloon-pci-transitional", bus PCI
name "virtio-crypto-device", bus virtio-bus
name "virtio-crypto-pci", bus PCI
name "virtio-iommu-device", bus virtio-bus
name "virtio-iommu-pci", bus PCI, alias "virtio-iommu"
name "virtio-iommu-pci-non-transitional", bus PCI
name "virtio-mem", bus virtio-bus
name "virtio-mem-pci", bus PCI
name "virtio-pmem-pci", bus PCI
name "virtio-rng-device", bus virtio-bus
name "virtio-rng-pci", bus PCI, alias "virtio-rng"
name "virtio-rng-pci-non-transitional", bus PCI
name "virtio-rng-pci-transitional", bus PCI
name "vmcoreinfo"
name "vmgenid"

CPU devices:
name "486-v1-x86_64-cpu"
name "486-x86_64-cpu"
name "athlon-v1-x86_64-cpu"
name "athlon-x86_64-cpu"
name "base-x86_64-cpu"
name "Broadwell-IBRS-x86_64-cpu"
name "Broadwell-noTSX-IBRS-x86_64-cpu"
name "Broadwell-noTSX-x86_64-cpu"
name "Broadwell-v1-x86_64-cpu"
name "Broadwell-v2-x86_64-cpu"
name "Broadwell-v3-x86_64-cpu"
name "Broadwell-v4-x86_64-cpu"
name "Broadwell-x86_64-cpu"
name "Cascadelake-Server-noTSX-x86_64-cpu"
name "Cascadelake-Server-v1-x86_64-cpu"
name "Cascadelake-Server-v2-x86_64-cpu"
name "Cascadelake-Server-v3-x86_64-cpu"
name "Cascadelake-Server-v4-x86_64-cpu"
name "Cascadelake-Server-x86_64-cpu"
name "Conroe-v1-x86_64-cpu"
name "Conroe-x86_64-cpu"
name "Cooperlake-v1-x86_64-cpu"
name "Cooperlake-x86_64-cpu"
name "core2duo-v1-x86_64-cpu"
name "core2duo-x86_64-cpu"
name "coreduo-v1-x86_64-cpu"
name "coreduo-x86_64-cpu"
name "Denverton-v1-x86_64-cpu"
name "Denverton-v2-x86_64-cpu"
name "Denverton-x86_64-cpu"
name "Dhyana-v1-x86_64-cpu"
name "Dhyana-x86_64-cpu"
name "EPYC-IBPB-x86_64-cpu"
name "EPYC-Milan-v1-x86_64-cpu"
name "EPYC-Milan-x86_64-cpu"
name "EPYC-Rome-v1-x86_64-cpu"
name "EPYC-Rome-v2-x86_64-cpu"
name "EPYC-Rome-x86_64-cpu"
name "EPYC-v1-x86_64-cpu"
name "EPYC-v2-x86_64-cpu"
name "EPYC-v3-x86_64-cpu"
name "EPYC-x86_64-cpu"
name "Haswell-IBRS-x86_64-cpu"
name "Haswell-noTSX-IBRS-x86_64-cpu"
name "Haswell-noTSX-x86_64-cpu"
name "Haswell-v1-x86_64-cpu"
name "Haswell-v2-x86_64-cpu"
name "Haswell-v3-x86_64-cpu"
name "Haswell-v4-x86_64-cpu"
name "Haswell-x86_64-cpu"
name "host-x86_64-cpu"
name "Icelake-Client-noTSX-x86_64-cpu"
name "Icelake-Client-v1-x86_64-cpu"
name "Icelake-Client-v2-x86_64-cpu"
name "Icelake-Client-x86_64-cpu"
name "Icelake-Server-noTSX-x86_64-cpu"
name "Icelake-Server-v1-x86_64-cpu"
name "Icelake-Server-v2-x86_64-cpu"
name "Icelake-Server-v3-x86_64-cpu"
name "Icelake-Server-v4-x86_64-cpu"
name "Icelake-Server-x86_64-cpu"
name "IvyBridge-IBRS-x86_64-cpu"
name "IvyBridge-v1-x86_64-cpu"
name "IvyBridge-v2-x86_64-cpu"
name "IvyBridge-x86_64-cpu"
name "KnightsMill-v1-x86_64-cpu"
name "KnightsMill-x86_64-cpu"
name "kvm32-v1-x86_64-cpu"
name "kvm32-x86_64-cpu"
name "kvm64-v1-x86_64-cpu"
name "kvm64-x86_64-cpu"
name "max-x86_64-cpu"
name "n270-v1-x86_64-cpu"
name "n270-x86_64-cpu"
name "Nehalem-IBRS-x86_64-cpu"
name "Nehalem-v1-x86_64-cpu"
name "Nehalem-v2-x86_64-cpu"
name "Nehalem-x86_64-cpu"
name "Opteron_G1-v1-x86_64-cpu"
name "Opteron_G1-x86_64-cpu"
name "Opteron_G2-v1-x86_64-cpu"
name "Opteron_G2-x86_64-cpu"
name "Opteron_G3-v1-x86_64-cpu"
name "Opteron_G3-x86_64-cpu"
name "Opteron_G4-v1-x86_64-cpu"
name "Opteron_G4-x86_64-cpu"
name "Opteron_G5-v1-x86_64-cpu"
name "Opteron_G5-x86_64-cpu"
name "Penryn-v1-x86_64-cpu"
name "Penryn-x86_64-cpu"
name "pentium-v1-x86_64-cpu"
name "pentium-x86_64-cpu"
name "pentium2-v1-x86_64-cpu"
name "pentium2-x86_64-cpu"
name "pentium3-v1-x86_64-cpu"
name "pentium3-x86_64-cpu"
name "phenom-v1-x86_64-cpu"
name "phenom-x86_64-cpu"
name "qemu32-v1-x86_64-cpu"
name "qemu32-x86_64-cpu"
name "qemu64-v1-x86_64-cpu"
name "qemu64-x86_64-cpu"
name "SandyBridge-IBRS-x86_64-cpu"
name "SandyBridge-v1-x86_64-cpu"
name "SandyBridge-v2-x86_64-cpu"
name "SandyBridge-x86_64-cpu"
name "Skylake-Client-IBRS-x86_64-cpu"
name "Skylake-Client-noTSX-IBRS-x86_64-cpu"
name "Skylake-Client-v1-x86_64-cpu"
name "Skylake-Client-v2-x86_64-cpu"
name "Skylake-Client-v3-x86_64-cpu"
name "Skylake-Client-x86_64-cpu"
name "Skylake-Server-IBRS-x86_64-cpu"
name "Skylake-Server-noTSX-IBRS-x86_64-cpu"
name "Skylake-Server-v1-x86_64-cpu"
name "Skylake-Server-v2-x86_64-cpu"
name "Skylake-Server-v3-x86_64-cpu"
name "Skylake-Server-v4-x86_64-cpu"
name "Skylake-Server-x86_64-cpu"
name "Snowridge-v1-x86_64-cpu"
name "Snowridge-v2-x86_64-cpu"
name "Snowridge-x86_64-cpu"
name "Westmere-IBRS-x86_64-cpu"
name "Westmere-v1-x86_64-cpu"
name "Westmere-v2-x86_64-cpu"
name "Westmere-x86_64-cpu"

Uncategorized devices:
name "AMDVI-PCI", bus PCI
name "ipmi-bmc-extern"
name "ipmi-bmc-sim"
name "isa-ipmi-bt", bus ISA
name "isa-ipmi-kcs", bus ISA
name "mc146818rtc", bus ISA
name "pc-dimm", desc "DIMM memory module"
name "pci-ipmi-bt", bus PCI, desc "PCI IPMI BT"
name "pci-ipmi-kcs", bus PCI, desc "PCI IPMI KCS"
name "x-pci-proxy-dev", bus PCI

atr@node3:/home/atr/local/bin$ sudo /home/atr/src/qemu-6.0.0/build/qemu-system-x86_64 -device vfio-pci,help
vfio-pci options:
  acpi-index=<uint32>    -  (default: 0)
  addr=<int32>           - Slot and optional function number, example: 06.0 or 06 (default: -1)
  bootindex=<int32>
  display=<OnOffAuto>    - on/off/auto (default: "off")
  failover_pair_id=<str>
  host=<str>             - Address (bus/device/function) of the host device, example: 04:10.0
  multifunction=<bool>   - on/off (default: false)
  rombar=<uint32>        -  (default: 1)
  romfile=<str>
  romsize=<uint32>       -  (default: 4294967295)
  sysfsdev=<str>
  x-balloon-allowed=<bool> -  (default: false)
  x-enable-migration=<bool> -  (default: false)
  x-igd-gms=<uint32>     -  (default: 0)
  x-igd-opregion=<bool>  - on/off (default: false)
  x-intx-mmap-timeout-ms=<uint32> -  (default: 1100)
  x-msix-relocation=<OffAutoPCIBAR> - off/auto/bar0/bar1/bar2/bar3/bar4/bar5 (default: "off")
  x-no-geforce-quirks=<bool> -  (default: false)
  x-no-kvm-intx=<bool>   -  (default: false)
  x-no-kvm-ioeventfd=<bool> -  (default: false)
  x-no-kvm-msi=<bool>    -  (default: false)
  x-no-kvm-msix=<bool>   -  (default: false)
  x-no-mmap=<bool>       -  (default: false)
  x-no-vfio-ioeventfd=<bool> -  (default: false)
  x-nv-gpudirect-clique=<uint4> - NVIDIA GPUDirect Clique ID (0 - 15)
  x-pci-device-id=<uint32> -  (default: 4294967295)
  x-pci-sub-device-id=<uint32> -  (default: 4294967295)
  x-pci-sub-vendor-id=<uint32> -  (default: 4294967295)
  x-pci-vendor-id=<uint32> -  (default: 4294967295)
  x-pcie-extcap-init=<bool> - on/off (default: true)
  x-pcie-lnksta-dllla=<bool> - on/off (default: true)
  x-pre-copy-dirty-page-tracking=<OnOffAuto> - on/off/auto (default: "on")
  x-req=<bool>           - on/off (default: true)
  x-vga=<bool>           - on/off (default: false)
  xres=<uint32>          -  (default: 0)
  yres=<uint32>          -  (default: 0)
Clone this wiki locally