From: wanchao.xu Date: Wed, 23 Apr 2025 08:03:06 +0000 (+0800) Subject: Add packaging files. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2e162b7806b6672da0b1ca4e86251c4f1fa4d99d;p=tools%2Fqemu-tools.git Add packaging files. Change-Id: I67f6fc325f65fdc45caebbd8a2d8ce0154566032 Signed-off-by: wanchao.xu --- diff --git a/packaging/50-seabios-256k.json b/packaging/50-seabios-256k.json new file mode 100644 index 000000000..3109f131a --- /dev/null +++ b/packaging/50-seabios-256k.json @@ -0,0 +1,35 @@ +{ + "description": "SeaBIOS", + "interface-types": [ + "bios" + ], + "mapping": { + "device": "memory", + "filename": "/usr/share/qemu/bios-256k.bin" + }, + "targets": [ + { + "architecture": "i386", + "machines": [ + "pc-i440fx-*", + "pc-q35-*" + ] + }, + { + "architecture": "x86_64", + "machines": [ + "pc-i440fx-*", + "pc-q35-*" + ] + } + ], + "features": [ + "acpi-s3", + "acpi-s4" + ], + "tags": [ + "CONFIG_QEMU=y", + "CONFIG_ROM_SIZE=256", + "CONFIG_ATA_DMA=n" + ] +} diff --git a/packaging/60-seabios-128k.json b/packaging/60-seabios-128k.json new file mode 100644 index 000000000..6c0ed15bb --- /dev/null +++ b/packaging/60-seabios-128k.json @@ -0,0 +1,47 @@ +{ + "description": "SeaBIOS", + "interface-types": [ + "bios" + ], + "mapping": { + "device": "memory", + "filename": "/usr/share/qemu/bios.bin" + }, + "targets": [ + { + "architecture": "i386", + "machines": [ + "pc-i440fx-*", + "pc-q35-*" + ] + }, + { + "architecture": "x86_64", + "machines": [ + "pc-i440fx-*", + "pc-q35-*" + ] + } + ], + "features": [ + "acpi-s3", + "acpi-s4" + ], + "tags": [ + "CONFIG_QEMU=y", + "CONFIG_ROM_SIZE=128", + "CONFIG_ATA_DMA=n", + "CONFIG_BOOTSPLASH=n", + "CONFIG_XEN=n", + "CONFIG_USB_OHCI=n", + "CONFIG_USB_XHCI=n", + "CONFIG_USB_UAS=n", + "CONFIG_SDCARD=n", + "CONFIG_TCGBIOS=n", + "CONFIG_MPT_SCSI=n", + "CONFIG_PVSCSI=n", + "CONFIG_NVME=n", + "CONFIG_USE_SMM=n", + "CONFIG_VGAHOOKS=n" + ] +} diff --git a/packaging/80-kvm.rules b/packaging/80-kvm.rules new file mode 100644 index 000000000..29ad00172 --- /dev/null +++ b/packaging/80-kvm.rules @@ -0,0 +1 @@ +KERNEL=="kvm", MODE="0666", GROUP="kvm" diff --git a/packaging/80-qemu-ga.rules b/packaging/80-qemu-ga.rules new file mode 100644 index 000000000..f38ace1b3 --- /dev/null +++ b/packaging/80-qemu-ga.rules @@ -0,0 +1 @@ +SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", TAG+="systemd", ENV{SYSTEMD_WANTS}+="qemu-guest-agent.service" diff --git a/packaging/APIC.core-count2 b/packaging/APIC.core-count2 new file mode 100644 index 000000000..a255082ef Binary files /dev/null and b/packaging/APIC.core-count2 differ diff --git a/packaging/DSDT.core-count2 b/packaging/DSDT.core-count2 new file mode 100644 index 000000000..ca309f656 Binary files /dev/null and b/packaging/DSDT.core-count2 differ diff --git a/packaging/DSDT.pcie b/packaging/DSDT.pcie new file mode 100644 index 000000000..b5ead3eae Binary files /dev/null and b/packaging/DSDT.pcie differ diff --git a/packaging/FACP.core-count2 b/packaging/FACP.core-count2 new file mode 100644 index 000000000..31fa5dd19 Binary files /dev/null and b/packaging/FACP.core-count2 differ diff --git a/packaging/README.PACKAGING b/packaging/README.PACKAGING new file mode 100644 index 000000000..b744ebfa3 --- /dev/null +++ b/packaging/README.PACKAGING @@ -0,0 +1,202 @@ +# PACKAGING WORKFLOW(S) + +The qemu package follows a special maintenance workflow in order to support +git based patching, including of submodules. Please use it in order to have +changes you make be acceptable to the package maintainers. + +All the development happens at https://github.com/openSUSE/qemu. The relevant +branch is `factory`. + +Any change to the package should be submitted in the form of a Pull Request +against such repository and branch. + +The reminder of this document provides more details, explanations and examples +for both contributors and maintainers. + + +# FOR CONTRIBUTORS + +## BACKPORTING AN UPSTREAM PATCH + +For submitting a backport of an upstream patch, proceed as follows (a local +copy of the repository is of course necessary). + +Identify the hash of the commit that needs backporting and do: + + git cherry-pick -esx + +This way, the changelog will already contain the reference to the upstream +commit itself, and the appropriate "Signed-off-by:" tag. + +If the backport is related to Bugzilla (or Jira, and/or CVEs, etc) entry, add a +reference to that, such as: + + Resolves: bsc#123456 + +Or: + + References: jsc#PED-1234 + +Or: + + Resolves: bsc#7891011 (CVE-1234-5678) + +Add it between the "(cherry picked from commit ...)" line and the "Signed-off-by:" +line that follows it. + +An example of the end result, where Dario Faggioli () is +backporting upstream commit abe2c4bdb65e8dd in order to fix bug 1209546 from +bugzilla.opensuse.org is: + + test-vmstate: fix bad GTree usage, use-after-free + + According to g_tree_foreach() documentation: + "The tree may not be modified while iterating over it (you can't + add/remove items)." + + [...] + + Get rid of the node removal within the tree traversal. Also + check the trees have the same number of nodes before the actual + diff. + + Fixes: 9a85e4b8f6 ("migration: Support gtree migration") + Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1518 + Signed-off-by: Marc-Andr303251 Lureau + Signed-off-by: Eric Auger + Reported-by: Richard W.M. Jones + Tested-by: Richard W.M. Jones + Reviewed-by: Richard W.M. Jones + Reviewed-by: Daniel P. Berrang303251 + Reviewed-by: Juan Quintela + Signed-off-by: Juan Quintela + (cherry picked from commit abe2c4bdb65e8dd9cb2f01c355baa394bf49a8af) + Resolves: bsc#1209546 + Signed-off-by: Dario Faggioli + +Of course, all conflicts and issues should be resolved, before committing the +result/completing the cherry-picking. + +At this point, the PR should be opened. As soon as that happens, some checks +will be run automatically and the maintainers of the QEMU package will review +and, eventually, merge or reject it. + +PRs containing multiple commits are allowed. They are actually encouraged, if +the patches being backported are related and/or dependant among each others. It +must, however, always be the case that each upstream commit is cherry-picked +individually. + +Note that there is no need to change any 'qemu.changes' file. That will, in +fact be handled by the package maintainers (and such RPM changelog entries will +be automatically generated out of the git commit messages). + +## ADDING A PATCH NOT COMING FROM UPSTREAM + +Downstream patches, i.e., patches that are not backports of upstream commits, +should be avoided as much as possible. The (largely!) recommended approach is +to submit the patch upstream and then, once it is accepted and committed, +backport it. + +If that is not possible (for whatever reason), a pull request with a downstream +only patch can be opened. The procedure is almost identical to the one described +above for upstream backports. The main differences are: + +1) Downstream only patch cannot be cherry-picked from upstream commits, of + course. Therefore, the PR will consist of the commit(s) that introduces the + patch. + +2) There will be no "(cherry picked from commit ...") line in the changelog + of a downstream only patch. On the other hand, the "Resolves:" or + "Reference:" tag, that link the patch to the issue it's trying to solve, + must be there, and the same is true for the "Signed-off-by:" tag + indicating who is proposing adding it. + +3) It is required that the subject of the commit starts with the [openSUSE] tag. + +An example of a downstream only commit is: + + [openSUSE] pc: q35: Bump max_cpus to 1024 + + And use the new limit for machine version 7.1 too. + Keep the old limit of 288 for machine versions 7.0 and earlier. + + Signed-off-by: Dario Faggioli + References: bsc#1202282, jsc#PED-2592 + Signed-off-by: Dario Faggioli + +## CHANGING THE PACKAGING FILES + +Files that are necessary for building the RPM (like the spec file) or that +are part of the RPM and will be copied in the appropriate places in the +filesystem when it is installed are also part of the git repository. In fact, +they can be found in the `rpm/` directory. + +Any addition, removal or change of and on any of those file should just be done +as a regular commit, and a pull request including such commit(s) should be +opened. + +Commits to packaging files should be prefixed with both the [openSUSE] tag and +an [RPM] tag. An example can be this one: + + [openSUSE][RPM] Add downstream packaging files + + Stash the "packaging files" in the QEMU repository, in the rpm/ + directory. During package build, they will be pulled out from there + and used as appropriate. + + Signed-off-by: Dario Faggioli + +## ADDING A PATCH IN A SUBMODULE + +For including a backport, or in general adding a patch, to a submodule, the +downstream git repository for the submodule must be checkedout at the location +where the submodule resides, in the main QEMU git repository. + +For example, for including a downstream patch in the ipxe submodule, a local +copy of the repository https://github.com/openSUSE/qemu-ipxe.git is necessary. +After checking out the `factory` branch, add the patch there (cherry-picking +it from upstream, if it is a backport, and respecting all the tagging rules +explained in the previous sections). + +At this point: +- the branch must be pushed; +- in the main (qemu) repository, a commit must be added and pushed, for making + sure that the new patch is picked up. + +Basically, the commit in the main repository is how the information that a +submodule as a new head is recorded. + +The changelog of such commit shall include a reference to the subjects of all +the new commits in the various submodules. Unfortinately, there is not yet a +good way of achieving this automatically. + +As last step, a pull request should be opened, as usual. + +## REMOVING PATCHES + +If a patch, or, in general, a commit, that is already part of the repository +must be removed, this must be done without rewriting the git history, i.e., with +a revert (and then a pull request with the revert should be opened). + + +# FOR MAINTAINERS + +## REVIEWING AND ACCEPTING PRs + +TODO + +## COMMITTING CHANGES INTO FACTORY + +TODO + +## UPDATING THE BASE QEMU VERSION + +TODO + + +# MANUAL AND AUTOMATED CHECKS + +TODO + + + diff --git a/packaging/baselibs.conf b/packaging/baselibs.conf new file mode 100644 index 000000000..378c01515 --- /dev/null +++ b/packaging/baselibs.conf @@ -0,0 +1,109 @@ +arch i586 targets armv7l:cross aarch64:cross riscv64:cross +arch i686 targets armv7l:cross aarch64:cross riscv64:cross +arch x86_64 targets armv7l:cross aarch64:cross riscv64:cross +arch i586 targets armv7l:x86-cross aarch64:x86-cross riscv64:x86-cross +arch i686 targets armv7l:x86-cross aarch64:x86-cross riscv64:x86-cross +arch x86_64 targets armv7l:x86_64-cross aarch64:x86_64-cross riscv64:x86_64-cross +qemu-linux-user + +/ +qemu-linux-user-debuginfo + +/ +qemu-linux-user-debugsource + +/ + +targettype cross package qemu-linux-user + autoreqprov off + +/ + post "function setbinfmt () {" + post " local arch=$1" + post " local fmt=$2" + post " local comp_fmt=$(echo ${fmt} | sed -e 's/.*:://;s/:[^:]$//;s/\\x//g')" + post " local curr_fmt=$(cat /proc/sys/fs/binfmt_misc/${arch} | sed -ne '/interpreter/{s/interpreter //;h};/magic/{s/magic //;H};/mask/{s/mask //;G;s/\([^\n]*\)\n\([^\n]*\)\n\([^\n]*\)/\3:\1:\2/p}')" + post " if ( [ ! -e "/proc/sys/fs/binfmt_misc/${arch}" ] || [ "x${comp_fmt}" != "x${curr_fmt}" ] ); then" + post " builtin echo -1 > "/proc/sys/fs/binfmt_misc/${arch}"" + post " builtin echo "${fmt}" > /proc/sys/fs/binfmt_misc/register" + post " fi" + post "}" + post "[ ! -d /proc/sys/fs/binfmt_misc ] && ( /sbin/modprobe binfmt_misc )" + post "[ ! -f /proc/sys/fs/binfmt_misc/register ] && ( mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc )" + post "[ -e /proc/sys/fs/binfmt_misc/arm64 ] && ( builtin echo -1 > /proc/sys/fs/binfmt_misc/arm64 )" + post "setbinfmt 'arm' ':arm:M::\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-binfmt:P' " + post "setbinfmt 'armeb' ':armeb:M::\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-armeb-binfmt:P'" + post "setbinfmt 'aarch64' ':aarch64:M::\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-aarch64-binfmt:P'" + post "setbinfmt 'riscv64' ':riscv64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-riscv64-binfmt:P'" + post "# workaround for using ldd on non-pie executable causes segfault" + post "# ex) ldd /usr/bin/which" + post "# ldd: exited with unknown exit code (139)" + post "%ifarch aarch64" + post "echo 'export QEMU_GUEST_BASE=0x5500000000' > /etc/profile.d/qemu_base.sh" + post "chmod 755 /etc/profile.d/qemu_base.sh" + post "%endif" + post "%ifarch armv7l" + post "echo 'export QEMU_GUEST_BASE=0x11000000000' > /etc/profile.d/qemu_base.sh" + post "chmod 755 /etc/profile.d/qemu_base.sh" + post "%endif" + +targettype x86_64-cross package qemu-linux-user + autoreqprov off + +/ + post "function setbinfmt () {" + post " local arch=$1" + post " local fmt=$2" + post " local comp_fmt=$(echo ${fmt} | sed -e 's/.*:://;s/:[^:]$//;s/\\x//g')" + post " local curr_fmt=$(cat /proc/sys/fs/binfmt_misc/${arch} | sed -ne '/interpreter/{s/interpreter //;h};/magic/{s/magic //;H};/mask/{s/mask //;G;s/\([^\n]*\)\n\([^\n]*\)\n\([^\n]*\)/\3:\1:\2/p}')" + post " if ( [ ! -e "/proc/sys/fs/binfmt_misc/${arch}" ] || [ "x${comp_fmt}" != "x${curr_fmt}" ] ); then" + post " builtin echo -1 > "/proc/sys/fs/binfmt_misc/${arch}"" + post " builtin echo "${fmt}" > /proc/sys/fs/binfmt_misc/register" + post " fi" + post "}" + post "[ ! -d /proc/sys/fs/binfmt_misc ] && ( /sbin/modprobe binfmt_misc )" + post "[ ! -f /proc/sys/fs/binfmt_misc/register ] && ( mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc )" + post "[ -e /proc/sys/fs/binfmt_misc/arm64 ] && ( builtin echo -1 > /proc/sys/fs/binfmt_misc/arm64 )" + post "setbinfmt 'arm' ':arm:M::\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-binfmt:P' " + post "setbinfmt 'armeb' ':armeb:M::\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-armeb-binfmt:P'" + post "setbinfmt 'aarch64' ':aarch64:M::\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-aarch64-binfmt:P'" + post "setbinfmt 'riscv64' ':riscv64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-riscv64-binfmt:P'" + post "# workaround for using ldd on non-pie executable causes segfault" + post "# ex) ldd /usr/bin/which" + post "# ldd: exited with unknown exit code (139)" + post "%ifarch aarch64" + post "echo 'export QEMU_GUEST_BASE=0x5500000000' > /etc/profile.d/qemu_base.sh" + post "chmod 755 /etc/profile.d/qemu_base.sh" + post "%endif" + post "%ifarch armv7l" + post "echo 'export QEMU_GUEST_BASE=0x11000000000' > /etc/profile.d/qemu_base.sh" + post "chmod 755 /etc/profile.d/qemu_base.sh" + post "%endif" + +targettype x86-cross package qemu-linux-user + autoreqprov off + +/ + post "function setbinfmt () {" + post " local arch=$1" + post " local fmt=$2" + post " local comp_fmt=$(echo ${fmt} | sed -e 's/.*:://;s/:[^:]$//;s/\\x//g')" + post " local curr_fmt=$(cat /proc/sys/fs/binfmt_misc/${arch} | sed -ne '/interpreter/{s/interpreter //;h};/magic/{s/magic //;H};/mask/{s/mask //;G;s/\([^\n]*\)\n\([^\n]*\)\n\([^\n]*\)/\3:\1:\2/p}')" + post " if ( [ ! -e "/proc/sys/fs/binfmt_misc/${arch}" ] || [ "x${comp_fmt}" != "x${curr_fmt}" ] ); then" + post " builtin echo -1 > "/proc/sys/fs/binfmt_misc/${arch}"" + post " builtin echo "${fmt}" > /proc/sys/fs/binfmt_misc/register" + post " fi" + post "}" + post "[ ! -d /proc/sys/fs/binfmt_misc ] && ( /sbin/modprobe binfmt_misc )" + post "[ ! -f /proc/sys/fs/binfmt_misc/register ] && ( mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc )" + post "[ -e /proc/sys/fs/binfmt_misc/arm64 ] && ( builtin echo -1 > /proc/sys/fs/binfmt_misc/arm64 )" + post "setbinfmt 'arm' ':arm:M::\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-binfmt:P' " + post "setbinfmt 'armeb' ':armeb:M::\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-armeb-binfmt:P'" + post "setbinfmt 'aarch64' ':aarch64:M::\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-aarch64-binfmt:P'" + post "setbinfmt 'riscv64' ':riscv64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-riscv64-binfmt:P'" + post "# workaround for using ldd on non-pie executable causes segfault" + post "# ex) ldd /usr/bin/which" + post "# ldd: exited with unknown exit code (139)" + post "%ifarch aarch64" + post "echo 'export QEMU_GUEST_BASE=0x5500000000' > /etc/profile.d/qemu_base.sh" + post "chmod 755 /etc/profile.d/qemu_base.sh" + post "%endif" + post "%ifarch armv7l" + post "echo 'export QEMU_GUEST_BASE=0x11000000000' > /etc/profile.d/qemu_base.sh" + post "chmod 755 /etc/profile.d/qemu_base.sh" + post "%endif" + diff --git a/packaging/bridge.conf b/packaging/bridge.conf new file mode 100644 index 000000000..d06c62a33 --- /dev/null +++ b/packaging/bridge.conf @@ -0,0 +1,11 @@ +# Access control file for qemu bridge helper +# Syntax consists of: +# # comment (ignored) +# allow all +# allow +# deny all +# deny +# include /path/to/additional/ACL/file +# Users are blacklisted by default and 'deny' takes precedence over 'allow'. +# Including additional ACL files allows file access permissions to be used as +# a component of the policy to allow access or deny access to specific bridges. diff --git a/packaging/config.sh b/packaging/config.sh new file mode 100755 index 000000000..b061b0564 --- /dev/null +++ b/packaging/config.sh @@ -0,0 +1,122 @@ +#!/bin/bash + +# config.sh: + +# The next few VARIABLES are to be edited as required: + +# Package name. (In multibuild, it's the base package). Used to ref spec file. +PKG=qemu + +# Here is the git repo which tracks a separate upstream git based project +# We take this approach so we can have our own tags and branches, and store +# the patches in git for others to access outside of the bundle. +PACKAGE_MAIN_GIT_REPO=https://github.com/openSUSE/qemu.git + +# This is the upstream for the PACKAGE_MAIN_GIT_REPO +UPSTREAM_GIT_REPO=https://gitlab.com/qemu-project/qemu.git + +# The following specifies the upstream tag or commit upon which our patchqueue +# gets rebased. The special value LATEST may be used to "automatically" track +# the upstream development tree in the master branch +#GIT_UPSTREAM_COMMIT_ISH=v7.0.0 +GIT_UPSTREAM_COMMIT_ISH=v7.1.0 +# WARNING: If transitioning from using LATEST to not, MANUALLY re-set the +# tarball present. If transitioning TO LATEST, make sure that +# NEXT_RELEASE_IS_MAJOR is set correctly +# This is used to choose the version number when LATEST processing is active +NEXT_RELEASE_IS_MAJOR=1 + +# Unfortunately, SeaBIOS doesn't always follow an "always increasing" version +# model, so there may be times we should overide the automated version setting. +# We can do so by specifing the value here: +#SEABIOS_VERSION=1.13.0 + +# In following, use 1 or 0 as needed (representing true or false respectively) +NUMBERED_PATCHES=0 + +PATCH_RANGE=1000 + +# For compatibility with old packages, we include this option +OVERRIDE_FIVE_DIGIT_NUMBERING=0 + +# Path to be used for temporary files, directories, repositories, etc. +# Default is /dev/shm. An alternative could be /tmp (e.g., when building +# in containers, or whatever). +#TMPDIR=/dev/shm +TMPDIR=/tmp + +# This array tracks all git submodule paths within the superproject (1st entry) +PATCH_PATH_MAP=( + "" + "roms/seabios/" + "roms/ipxe/" + "roms/sgabios/" + "roms/edk2/" + "roms/skiboot/" + "roms/SLOF/" + "roms/openbios/" + "ui/keycodemapdb/" + "slirp/" + "roms/u-boot/" + "roms/qboot/" + "dtc/" + "roms/opensbi/" + "roms/edk2/CryptoPkg/Library/OpensslLib/openssl/" + "capstone/" + "roms/qemu-palcode/" + "roms/seabios-hppa/" + "roms/u-boot-sam460ex/" + "roms/QemuMacDrivers/" + "meson/" + "tests/fp/berkeley-softfloat-3/" + "tests/fp/berkeley-testfloat-3/" + "tests/lcitool/libvirt-ci" + "roms/edk2/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3/" + "roms/edk2/CryptoPkg/Library/OpensslLib/openssl/boringssl/" + "roms/edk2/CryptoPkg/Library/OpensslLib/openssl/krb5/" + "roms/edk2/CryptoPkg/Library/OpensslLib/openssl/pyca-cryptography/" + "roms/edk2/BaseTools/Source/C/BrotliCompress/brotli/" + "roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/" + "roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma/" + "roms/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka/" + "roms/vbootrom/" + "roms/edk2/RedfishPkg/Library/JsonLib/jansson" +) + +# (order and count must correspond to PATCH_PATH_MAP) +LOCAL_REPO_MAP=( + ~/git/qemu-opensuse + ~/git/qemu-seabios + ~/git/qemu-ipxe + ~/git/qemu-sgabios + ~/git/qemu-edk2 + ~/git/qemu-skiboot + ~/git/qemu-SLOF + ~/git/qemu-openbios + ~/git/qemu-keycodemapdb + ~/git/qemu-slirp + ~/git/qemu-u-boot + ~/git/qemu-qboot + ~/git/qemu-dtc + ~/git/qemu-opensbi + ~/git/qemu-edk2-openssl + ~/git/qemu-capstone + ~/git/qemu-qemu-palcode + ~/git/qemu-seabios-hppa + ~/git/qemu-u-boot-sam460ex + ~/git/qemu-QemuMacDrivers + ~/git/qemu-meson + ~/git/qemu-tests-berkeley-softfloat-3 + ~/git/qemu-tests-berkeley-testfloat-3 + ~/git/qemu-tests-lcitool-libvirt-ci + ~/git/qemu-edk2-berkeley-softfloat-3 + ~/git/qemu-edk2-openssl-boringssl + ~/git/qemu-edk2-openssl-krb5 + ~/git/qemu-edk2-openssl-pyca-cryptography + ~/git/qemu-edk2-BrotliCompress-brotli + ~/git/qemu-edk2-BrotliCustomDecompressLib-brotli + ~/git/qemu-edk2-oniguruma + ~/git/qemu-edk2-cmocka + ~/git/qemu-vbootrom + ~/git/qemu-edk2-jansson +) diff --git a/packaging/ksm.service b/packaging/ksm.service new file mode 100644 index 000000000..fec1e7eaf --- /dev/null +++ b/packaging/ksm.service @@ -0,0 +1,13 @@ +[Unit] +Description=Kernel Samepage Merging +ConditionPathExists=/sys/kernel/mm/ksm +ConditionVirtualization=no + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/bin/bash -c "/bin/echo 1 > /sys/kernel/mm/ksm/run" +ExecStop=/bin/bash -c "/bin/echo 0 > /sys/kernel/mm/ksm/run" + +[Install] +WantedBy=multi-user.target diff --git a/packaging/kvm.conf b/packaging/kvm.conf new file mode 100644 index 000000000..c1c76e682 --- /dev/null +++ b/packaging/kvm.conf @@ -0,0 +1,3 @@ +# load kvm module at boot time +kvm + diff --git a/packaging/qemu-guest-agent.service b/packaging/qemu-guest-agent.service new file mode 100644 index 000000000..2d6da4250 --- /dev/null +++ b/packaging/qemu-guest-agent.service @@ -0,0 +1,14 @@ +[Unit] +Description=QEMU Guest Agent +Documentation=http://wiki.qemu.org/Features/GuestAgent +BindsTo=dev-virtio\x2dports-org.qemu.guest_agent.0.device +After=dev-virtio\x2dports-org.qemu.guest_agent.0.device + +[Service] +Type=simple +ExecStart=-/usr/bin/qemu-ga -p /dev/virtio-ports/org.qemu.guest_agent.0 +Restart=always +RestartSec=0 + +[Install] +WantedBy=dev-virtio\x2dports-org.qemu.guest_agent.0.device diff --git a/packaging/qemu-ifup b/packaging/qemu-ifup new file mode 100644 index 000000000..7716b1244 --- /dev/null +++ b/packaging/qemu-ifup @@ -0,0 +1,23 @@ +#!/bin/sh + +# sample bridge qemu-ifup script + +echo 'configuring qemu network with bridge for' $* + +# If bridge is not specified, try device with default route. +bridge=$2 +if [ -z "$bridge" ]; then + bridge=$(/usr/sbin/ip route list | /usr/bin/awk '/^default / { print $5 }') +fi + +# Exit if $bridge is not a bridge. Exit with 0 status +# so qemu process is not terminated and provide message +# about failure to setup network. +if [ ! -e "/sys/class/net/${bridge}/bridge" ] +then + echo "WARNING! ${bridge} is not a bridge. qemu-ifup exiting. VM may not have a functioning networking stack." + exit 0 +fi + +/usr/sbin/ip link set $1 up +/usr/sbin/ip link set $1 master $bridge || true diff --git a/packaging/qemu-kvm.1.gz b/packaging/qemu-kvm.1.gz new file mode 100644 index 000000000..48e8ae91e Binary files /dev/null and b/packaging/qemu-kvm.1.gz differ diff --git a/packaging/qemu-linux-user.spec b/packaging/qemu-linux-user.spec new file mode 100644 index 000000000..5a6506161 --- /dev/null +++ b/packaging/qemu-linux-user.spec @@ -0,0 +1,510 @@ +# +# spec file for package qemu-linux-user +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define _buildshell /bin/bash + +%define sbver 1.16.3_3_ga95067eb + +%define srcdir %{_builddir}/%buildsubdir +%define blddir %srcdir/build + +%define build_x86_firmware 0 +%define build_ppc_firmware 0 +%define build_opensbi_firmware 0 +%define kvm_available 0 +%define legacy_qemu_kvm 0 +%define force_fit_virtio_pxe_rom 1 + +%define with_xen 0%{!?_without_xen:1} + +%if "%{?distribution}" == "" +%define distro private-build +%else +%define distro %{distribution} +%endif + +# Items to exclude in ALP-based products +%if 0%{?suse_version} == 1600 +%define with_xen 0 +%endif + +%bcond_with system_membarrier +%bcond_with malloc_trim + +%bcond_with chkqtests + +%if 0%{?suse_version} > 1600 +# canokey is an openSUSE thing, not a SLE one +%ifarch x86_64 +%bcond_without canokey +%else +%bcond_with canokey +%endif +%endif + +%if 0%{?suse_version} > 1600 +# XDP seems not to be there in SLE... +%bcond_without xdp +%else +%bcond_with xdp +%endif + +# Make it possible to build without spice (for SLE/Leap Micro) +%bcond_without spice + +# We do not have the stuff needed to compile rutabaga support. +# If/when we want to do it, we can check how it's done here: +# https://src.fedoraproject.org/rpms/qemu/c/deeb9357cb751df21c566fd8408936cfb034d43b?branch=rawhide +%define has_rutabaga_gfx 0 + +%define has_virtiofsd 1 +# Upstream virtiofsd does not even build on 32 bit systems +%ifarch %ix86 %arm +%define has_virtiofsd 0 +%endif + +# non-x86 archs still seem to have some issues with Link Time Optimization +%ifnarch %ix86 x86_64 +%define _lto_cflags %{nil} +%endif + +%ifarch aarch64 +%define qemu_arch aarch64 +%endif +%ifarch %arm +%define qemu_arch arm +%endif +%ifarch %ix86 +%define qemu_arch i386 +%endif +%ifarch ppc64 +%define qemu_arch ppc64 +%endif +%ifarch ppc +%define qemu_arch ppc +%endif +%ifarch ppc64le +%define qemu_arch ppc64le +%endif +%ifarch riscv64 +%define qemu_arch riscv64 +%endif +%ifarch s390x +%define qemu_arch s390x +%endif +%ifarch x86_64 +%define qemu_arch x86_64 +%endif + +%define generic_qemu_description \ +QEMU provides full machine emulation and cross architecture usage. It closely\ +integrates with KVM and Xen virtualization, allowing for excellent performance.\ +Many options are available for defining the emulated environment, including\ +traditional devices, direct host device access, and interfaces specific to\ +virtualization. + + +%ifarch %ix86 x86_64 s390x +%define legacy_qemu_kvm 1 +%endif + +Name: qemu-linux-user +URL: https://www.qemu.org/ +Summary: CPU emulator for user space +License: BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT +Group: System/Emulators/PC +Version: 8.2.2 +Release: 0 +Source0: qemu-%{version}.tar.xz +Source13: supported.s390.txt +Source303: README.PACKAGING +Source1000: qemu-rpmlintrc +BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: bison +BuildRequires: glib2-devel-static >= 2.56 +BuildRequires: glibc-devel-static +BuildRequires: (pcre-devel-static if glib2-devel-static < 2.73 else pcre2-devel-static) +# passing filelist check for /usr/lib/binfmt.d +#BuildRequires: systemd +BuildRequires: zlib-devel-static +# we must not install the qemu-linux-user package when under QEMU build +%if 0%{?qemu_user_space_build:1} +#!BuildIgnore: post-build-checks +%endif +BuildRequires: discount +BuildRequires: fdupes +BuildRequires: flex +BuildRequires: gcc-c++ +BuildRequires: meson +BuildRequires: ninja >= 1.7 +%if 0%{?suse_version} >= 1600 +BuildRequires: python3-Sphinx +BuildRequires: python3-base >= 3.8 +%else +BuildRequires: python311-Sphinx +BuildRequires: python311-base +%endif + +%description +QEMU provides CPU emulation along with other related capabilities. This package +provides programs to run user space binaries and libraries meant for another +architecture. The syscall interface is intercepted and execution below the +syscall layer occurs on the native hardware and operating system. + +%files +%doc README.rst VERSION +%license COPYING COPYING.LIB LICENSE +%_bindir/qemu-aarch64 +%_bindir/qemu-aarch64_be +%_bindir/qemu-alpha +%_bindir/qemu-arm +%_bindir/qemu-armeb +%_bindir/qemu-cris +%_bindir/qemu-hexagon +%_bindir/qemu-hppa +%_bindir/qemu-i386 +%_bindir/qemu-loongarch64 +%_bindir/qemu-m68k +%_bindir/qemu-microblaze +%_bindir/qemu-microblazeel +%_bindir/qemu-mips +%_bindir/qemu-mips64 +%_bindir/qemu-mips64el +%_bindir/qemu-mipsel +%_bindir/qemu-mipsn32 +%_bindir/qemu-mipsn32el +%_bindir/qemu-nios2 +%_bindir/qemu-or1k +%_bindir/qemu-ppc +%_bindir/qemu-ppc64 +%_bindir/qemu-ppc64le +%_bindir/qemu-riscv32 +%_bindir/qemu-riscv64 +%_bindir/qemu-s390x +%_bindir/qemu-sh4 +%_bindir/qemu-sh4eb +%_bindir/qemu-sparc +%_bindir/qemu-sparc32plus +%_bindir/qemu-sparc64 +%_bindir/qemu-x86_64 +%_bindir/qemu-xtensa +%_bindir/qemu-xtensaeb +%_sbindir/qemu-binfmt-conf.sh +#%_prefix/lib/binfmt.d/qemu-*.conf +# add files for tizen compatibility +%_bindir/qemu-binfmt +%_bindir/qemu-*-binfmt +%_bindir/qemu-arm64 +%_bindir/qemu-*-static +/qemu/ + +%prep +%setup -q -n qemu-%{version} + +# We have the meson subprojects there, but as submodules (because OBS +# SCM bridge can handle the latter, but not the former) so we need to +# apply the layering of the packagefiles manually +meson subprojects packagefiles --apply berkeley-testfloat-3 +meson subprojects packagefiles --apply berkeley-softfloat-3 + +%build + +%define rpmfilesdir %{_builddir}/qemu-%{version}/rpm + +%if %{legacy_qemu_kvm} +# FIXME: Why are we copying the s390 specific one? +cp %{SOURCE13} docs/supported.rst +sed -i '/^\ \ \ about\/index.*/i \ \ \ supported.rst' docs/index.rst +%endif + +find . -iname ".git" -exec rm -rf {} + + +mkdir -p %blddir +cd %blddir + +# We define a few general and common options and then we disable +# pretty much everything. Afterwards, there is a section for each +# of the flavors where we explicitly enable all the feature we want +# for them. + +# TODO: Check whether we want to enable the followings: +# * avx512f +# * debug-info +# * fuse +# * malloc-trim +# * multiprocess +# * qom-cast-debug +# * trace-backends=dtrace +# +# Fedora has avx2 enabled for ix86, while we can't (I tried). Guess it's +# because, for them, ix86 == i686 (while for us it's i586). + +# Let's try to stick to _FORTIFY_SOURCE=2 for now +EXTRA_CFLAGS="$(echo %{optflags} | sed -E 's/-[A-Z]?_FORTIFY_SOURCE[=]?[0-9]*//g') -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-error" + +%srcdir/configure \ +%if 0%{?suse_version} >= 1600 + --python=%_bindir/python3 \ +%else + --python=%_bindir/python3.11 \ +%endif + --docdir=%_docdir \ + --datadir=%_datadir \ + --extra-cflags="${EXTRA_CFLAGS}" \ + --firmwarepath=%_datadir/%name \ + --libdir=%_libdir \ + --libexecdir=%_libexecdir \ + --localstatedir=%_localstatedir \ + --prefix=%_prefix \ + --sysconfdir=%_sysconfdir \ + --with-pkgversion="%(echo '%{distro}' | sed 's/ (.*)//')" \ + --disable-af-xdp \ + --disable-alsa \ + --disable-attr \ + --disable-auth-pam \ + --disable-avx2 \ + --disable-avx512f \ + --disable-block-drv-whitelist-in-tools \ + --disable-bochs \ + --disable-bpf \ + --disable-brlapi \ + --disable-bsd-user \ + --disable-bzip2 \ + --disable-cap-ng \ + --disable-capstone \ + --disable-cfi \ + --disable-cfi-debug \ + --disable-cloop \ + --disable-cocoa \ + --disable-coreaudio \ + --disable-coroutine-pool \ + --disable-crypto-afalg \ + --disable-curl \ + --disable-curses \ + --disable-dbus-display \ + --disable-debug-info \ + --disable-debug-mutex \ + --disable-debug-tcg \ + --disable-dmg \ + --disable-docs \ + --disable-download \ + --disable-dsound \ + --disable-fdt \ + --disable-fuse \ + --disable-fuse-lseek \ + --disable-gcrypt \ + --disable-gettext \ + --disable-gio \ + --disable-glusterfs \ + --disable-gnutls \ + --disable-gtk \ + --disable-guest-agent \ + --disable-guest-agent-msi \ + --disable-hv-balloon \ + --disable-hvf \ + --disable-iconv \ + --disable-jack \ + --disable-kvm \ + --disable-l2tpv3 \ + --disable-libdaxctl \ + --disable-libiscsi \ + --disable-libkeyutils \ + --disable-libnfs \ + --disable-libpmem \ + --disable-libssh \ + --disable-libudev \ + --disable-libusb \ + --disable-linux-aio \ + --disable-linux-io-uring \ + --disable-linux-user \ + --disable-live-block-migration \ + --disable-lto \ + --disable-lzfse \ + --disable-lzo \ + --disable-malloc-trim \ + --disable-membarrier \ + --disable-module-upgrades \ + --disable-modules \ + --disable-mpath \ + --disable-multiprocess \ + --disable-netmap \ + --disable-nettle \ + --disable-numa \ + --disable-nvmm \ + --disable-opengl \ + --disable-oss \ + --disable-pa \ + --disable-parallels \ + --disable-pie \ + --disable-pipewire \ + --disable-pixman \ + --disable-plugins \ + --disable-png \ + --disable-pvrdma \ + --disable-qcow1 \ + --disable-qed \ + --disable-qom-cast-debug \ + --disable-rbd \ + --disable-rdma \ + --disable-relocatable \ + --disable-replication \ + --disable-rng-none \ + --disable-rutabaga-gfx \ + --disable-safe-stack \ + --disable-sanitizers \ + --disable-sdl \ + --disable-sdl-image \ + --disable-seccomp \ + --disable-selinux \ + --disable-slirp \ + --disable-slirp-smbd \ + --disable-smartcard \ + --disable-snappy \ + --disable-sparse \ + --disable-spice \ + --disable-spice-protocol \ + --disable-strip \ + --disable-system \ + --disable-tcg \ + --disable-tcg-interpreter \ + --disable-tools \ + --disable-tpm \ + --disable-u2f \ + --disable-usb-redir \ + --disable-user \ + --disable-vde \ + --disable-vdi \ + --disable-vhost-crypto \ + --disable-vhost-kernel \ + --disable-vhost-net \ + --disable-vhost-user \ + --disable-vhost-user-blk-server \ + --disable-vhost-vdpa \ + --disable-virglrenderer \ + --disable-virtfs \ + --disable-vnc \ + --disable-vnc-jpeg \ + --disable-vnc-sasl \ + --disable-vte \ + --disable-vvfat \ + --disable-werror \ + --disable-whpx \ + --disable-xen \ + --disable-xen-pci-passthrough \ + --disable-xkbcommon \ + --disable-zstd \ + --without-default-devices \ +%if %{with system_membarrier} + --enable-membarrier \ +%endif +%if %{with malloc_trim} + --enable-malloc-trim \ +%endif +%if "%{_lto_cflags}" != "%{nil}" + --disable-lto \ +%endif + --disable-install-blobs \ + --enable-attr \ + --enable-coroutine-pool \ + --enable-linux-user \ + --enable-selinux \ + --enable-tcg \ + --static + +echo "=== Content of config-host.mak: ===" +cat config-host.mak +echo "=== ===" + +%make_build + +%install +cd %blddir + +%make_build install DESTDIR=%{buildroot} + +rm -rf %{buildroot}%_datadir/qemu/keymaps +unlink %{buildroot}%_datadir/qemu/trace-events-all +install -d -m 755 %{buildroot}%_sbindir +install -m 755 scripts/qemu-binfmt-conf.sh %{buildroot}%_sbindir +#install -d -m 755 %{buildroot}%{_prefix}/lib/binfmt.d/ +#scripts/qemu-binfmt-conf.sh --systemd ALL --persistent yes --preserve-argv0 yes --exportdir %{buildroot}%{_prefix}/lib/binfmt.d/ + +# add qemu-binfmt for tizen. +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-aarch64-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-aarch64_be-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-alpha-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-arm-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-armeb-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-cris-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-hexagon-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-hppa-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-i386-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-loongarch64-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-m68k-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-microblaze-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-microblazeel-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-mips-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-mips64-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-mips64el-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-mipsel-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-mipsn32-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-mipsn32el-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-or1k-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-ppc-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-ppc64-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-ppc64le-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-riscv32-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-riscv64-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-s390x-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-sh4-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-sh4eb-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-sparc-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-sparc32plus-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-sparc64-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-x86_64-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-xtensa-binfmt +ln -s qemu-binfmt %{buildroot}%_bindir/qemu-xtensaeb-binfmt + +#from tizen patches: Add compatibility symlinks +ln -sf qemu-arm %{buildroot}%_bindir/qemu-arm-static +ln -sf qemu-aarch64 %{buildroot}%_bindir/qemu-aarch64-static +ln -sf qemu-aarch64 %{buildroot}%_bindir/qemu-arm64 +ln -sf qemu-aarch64-binfmt %{buildroot}%_bindir/qemu-arm64-binfmt + +mkdir -p %{buildroot}/qemu +for arch in arm{,64} aarch64; +do + ln -sf %{_bindir}/qemu-$arch %{buildroot}/qemu/qemu-$arch + ln -sf %{_bindir}/qemu-$arch-binfmt %{buildroot}/qemu/qemu-$arch-binfmt +done + +%fdupes -s %{buildroot} + +%check +cd %blddir + +%ifarch aarch64 %ix86 ppc ppc64 ppc64le riscv64 s390x x86_64 +%{qemu_arch}-linux-user/qemu-%{qemu_arch} %_bindir/ls > /dev/null +%endif + +%make_build check-softfloat + +%clean +rm -rf %{buildroot} + +%changelog diff --git a/packaging/qemu-rpmlintrc b/packaging/qemu-rpmlintrc new file mode 100644 index 000000000..9664dfe39 --- /dev/null +++ b/packaging/qemu-rpmlintrc @@ -0,0 +1,7 @@ +# This line is mandatory to access the configuration functions +from Config import * + +addFilter("arch-dependent-file-in-usr-share") +addFilter("obsolete-not-provided") +addFilter("summary-not-capitalized") +addFilter("executable-stack") diff --git a/packaging/qemu-supportconfig b/packaging/qemu-supportconfig new file mode 100644 index 000000000..832a0c9e8 --- /dev/null +++ b/packaging/qemu-supportconfig @@ -0,0 +1,53 @@ +#!/bin/bash +############################################################# +# Name: Supportconfig Plugin for QEMU/KVM +# Description: Gathers important troubleshooting information +# about QEMU +############################################################# + +RCFILE="/usr/lib/supportconfig/resources/supportconfig.rc" +OF="output-qemu.txt" + +if [ -s $RCFILE ]; then + if ! source $RCFILE; then + log_write $OF "ERROR: Initializing resource file: $RCFILE" + exit 1 + fi +fi + +rpm_verify $OF qemu || exit 111 + +# skip if the host is xen +log_write $OF "#==[ Checking if booted Xen ]=================================#" +if [ -d /proc/xen ] && [ -e /proc/xen/capabilities ] && [ `cat /proc/xen/capabilities` = "control_d" ]; then + log_write $OF "Yes" + log_write $OF "Skipped" + exit 0 +else + log_write $OF "No" +fi + +# basic system information +log_cmd $OF "uname -r" +log_cmd $OF "lscpu" +log_cmd $OF "lspci -v" +log_cmd $OF "lsscsi" +log_cmd $OF "kvm_stat -1" +log_cmd $OF "lsmod | grep ^kvm" +for MODULE in `lsmod | grep ^kvm | cut -d ' ' -f 1`; do + log_cmd $OF "modinfo $MODULE" +done +log_cmd $OF "ps -ef | grep qemu" + +# list contents of common config and image directories +log_cmd $OF "ls -alR /var/lib/libvirt/images/" + +# network-related info often useful for debugging +nm_enabled=$(systemctl is-enabled NetworkManager.service > /dev/null 2>&1; echo $?) +if [ $nm_enabled -eq 0 ]; then + log_write $OF "NOTE: NetworkManager should not be enabled on a KVM host" +fi +log_cmd $OF "ip route list" +log_cmd $OF "ip neigh list" +log_cmd $OF "ip link show type bridge" +log_cmd $OF "bridge link show" diff --git a/packaging/qemu.keyring b/packaging/qemu.keyring new file mode 100644 index 000000000..cce2e0110 --- /dev/null +++ b/packaging/qemu.keyring @@ -0,0 +1,493 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=YraJ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/packaging/qemu.spec b/packaging/qemu.spec new file mode 100644 index 000000000..6c1a2b5ff --- /dev/null +++ b/packaging/qemu.spec @@ -0,0 +1,2172 @@ +# +# spec file for package qemu +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define _buildshell /bin/bash + +%define sbver 1.16.3_3_ga95067eb + +%define srcdir %{_builddir}/%buildsubdir +%define blddir %srcdir/build + +%define build_x86_firmware 0 +%define build_ppc_firmware 0 +%define build_opensbi_firmware 0 +%define kvm_available 0 +%define legacy_qemu_kvm 0 +%define force_fit_virtio_pxe_rom 1 + +%define with_xen 0%{!?_without_xen:1} + +%if "%{?distribution}" == "" +%define distro private-build +%else +%define distro %{distribution} +%endif + +# Items to exclude in ALP-based products +%if 0%{?suse_version} == 1600 +%define with_xen 0 +%endif + +%bcond_with system_membarrier +%bcond_with malloc_trim + +%bcond_with chkqtests + +%if 0%{?suse_version} > 1600 +# canokey is an openSUSE thing, not a SLE one +%ifarch x86_64 +%bcond_without canokey +%else +%bcond_with canokey +%endif +%endif + +%if 0%{?suse_version} > 1600 +# XDP seems not to be there in SLE... +%bcond_without xdp +%else +%bcond_with xdp +%endif + +# Make it possible to build without spice (for SLE/Leap Micro) +%bcond_without spice + +# We do not have the stuff needed to compile rutabaga support. +# If/when we want to do it, we can check how it's done here: +# https://src.fedoraproject.org/rpms/qemu/c/deeb9357cb751df21c566fd8408936cfb034d43b?branch=rawhide +%define has_rutabaga_gfx 0 + +%define has_virtiofsd 1 +# Upstream virtiofsd does not even build on 32 bit systems +%ifarch %ix86 %arm +%define has_virtiofsd 0 +%endif + +# non-x86 archs still seem to have some issues with Link Time Optimization +%ifnarch %ix86 x86_64 +%define _lto_cflags %{nil} +%endif + +%ifarch aarch64 +%define qemu_arch aarch64 +%endif +%ifarch %arm +%define qemu_arch arm +%endif +%ifarch %ix86 +%define qemu_arch i386 +%endif +%ifarch ppc64 +%define qemu_arch ppc64 +%endif +%ifarch ppc +%define qemu_arch ppc +%endif +%ifarch ppc64le +%define qemu_arch ppc64le +%endif +%ifarch riscv64 +%define qemu_arch riscv64 +%endif +%ifarch s390x +%define qemu_arch s390x +%endif +%ifarch x86_64 +%define qemu_arch x86_64 +%endif + +%define generic_qemu_description \ +QEMU provides full machine emulation and cross architecture usage. It closely\ +integrates with KVM and Xen virtualization, allowing for excellent performance.\ +Many options are available for defining the emulated environment, including\ +traditional devices, direct host device access, and interfaces specific to\ +virtualization. + + +# So, we have openSUSE:Factory, and we have "ports". In openSUSE:Factory, we +# have i586 and x86_64. In the :ARM port, we have aarch64, armv6l and armv7l. +# In the :PowerPC port, we have ppc64, ppc and ppc64le. In the :zSystems port +# we have s390x. And in the :RISCV we have riscv. +# +# Ideally, we'd want to build the firmwares at least once per port, and then +# share the resulting packages among the arch-es within each port (check the +# `ExportFilter` directives in the project config). +# +# Of course, we always build the "native fimrwares" (e.g., x86 firmwares on +# x86_64, PPC firmwares on ppc64le, etc). But we also cross compile as much +# firmwares as we can (e.g., both x86 and PPC firmwares on aarch64) so they'll +# be available in as many ports as possible (as noarch packages). + +%ifarch x86_64 aarch64 +%define build_ppc_firmware 1 +# Currently, opensbi does not cross build cleanly on 15.3 and 15.4 +%if ! 0%{?sle_version} +%define build_opensbi_firmware 1 +%endif +%define build_x86_firmware 1 +%endif +%ifarch ppc64 ppc64le +%define build_ppc_firmware 1 +%if ! 0%{?sle_version} +%define build_opensbi_firmware 1 +%endif +# FIXME: Try to enable cross building of x86 firmwares here on PPC +%endif +%ifarch riscv64 +%define build_opensbi_firmware 1 +%endif + +%ifarch %ix86 x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64 riscv64 +%define kvm_available 1 +%define with_uring 1 +%define liburing_min_version 1.0 +%endif + +%ifarch %ix86 x86_64 s390x +%define legacy_qemu_kvm 1 +%endif + +%ifarch x86_64 aarch64 ppc64le s390x +%define with_rbd 1 +%endif + +%ifarch x86_64 ppc64le +%define with_daxctl 1 +%endif + +# enforce pxe rom sizes for migration compatability from SLE 11 SP3 forward +# the following need to be > 64K +%define supported_nics_large {e1000 rtl8139} +# the following need to be <= 64K +%define supported_nics_small {virtio} +# Though not required, make unsupported pxe roms migration compatable as well +%define unsupported_nics {eepro100 ne2k_pci pcnet} + +Name: qemu +URL: https://www.qemu.org/ +Summary: Machine emulator and virtualizer +License: BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT +Group: System/Emulators/PC +Version: 8.2.2 +Release: 0 +Source0: qemu-%{version}.tar.xz +Source1: 80-kvm.rules +Source2: kvm.conf +Source3: qemu-ifup +Source4: bridge.conf +Source5: qemu-kvm.1.gz +Source6: ksm.service +Source7: qemu-guest-agent.service +Source8: 80-qemu-ga.rules +Source9: qemu-supportconfig +Source10: supported.arm.txt +Source11: supported.ppc.txt +Source12: supported.x86.txt +Source13: supported.s390.txt +Source14: 50-seabios-256k.json +Source15: 60-seabios-128k.json +Source16: seabios_version +Source17: skiboot_version +Source18: openSUSE-pcbios-stub-out-the-SAN-req-s-i.patch +Source19: DSDT.pcie +Source20: APIC.core-count2 +Source21: DSDT.core-count2 +Source22: FACP.core-count2 +Source303: README.PACKAGING +Source1000: qemu-rpmlintrc +BuildRoot: %{_tmppath}/%{name}-%{version}-build +## Packages we REQUIRE during build +%if %{build_x86_firmware} +%ifnarch %ix86 x86_64 +# We must cross-compile on non-x86* +BuildRequires: cross-x86_64-binutils +BuildRequires: cross-x86_64-gcc%gcc_version +%endif +BuildRequires: acpica +BuildRequires: binutils-devel +BuildRequires: dos2unix +BuildRequires: glibc-devel-32bit +BuildRequires: pkgconfig(liblzma) +%endif +%if %{build_opensbi_firmware} +%ifnarch riscv64 +BuildRequires: cross-riscv64-binutils +BuildRequires: cross-riscv64-gcc%gcc_version +%endif +%endif +%if %{build_ppc_firmware} +%ifnarch ppc64 ppc64le +BuildRequires: cross-ppc64-binutils +BuildRequires: cross-ppc64-gcc%gcc_version +%endif +%endif +%ifarch x86_64 +BuildRequires: gcc-32bit +%if %{with_xen} +BuildRequires: xen-devel >= 4.2 +%endif +BuildRequires: pkgconfig(libpmem) +%endif +%ifnarch %arm s390x +BuildRequires: libnuma-devel +%endif +%if 0%{with canokey} +BuildRequires: canokey-qemu-devel +%endif +%if 0%{?with_daxctl} +BuildRequires: pkgconfig(libndctl) +%endif +%if %{kvm_available} +BuildRequires: pkgconfig(udev) +%endif +%if 0%{?with_rbd} +BuildRequires: librbd-devel +%endif +%if 0%{with spice} +BuildRequires: pkgconfig(spice-protocol) >= 0.12.3 +BuildRequires: pkgconfig(spice-server) >= 0.12.5 +%endif +%if 0%{?with_uring} +BuildRequires: pkgconfig(liburing) >= %liburing_min_version +%endif +%if 0%{with xdp} +BuildRequires: libxdp-devel +%endif +%if 0%{?suse_version} >= 1600 +BuildRequires: python3-Sphinx +BuildRequires: python3-base >= 3.8 +%else +BuildRequires: python311-Sphinx +BuildRequires: python311-base +%endif +BuildRequires: Mesa-devel +BuildRequires: bison +BuildRequires: brlapi-devel +BuildRequires: discount +BuildRequires: fdupes +BuildRequires: flex +BuildRequires: gcc-c++ +BuildRequires: keyutils-devel +BuildRequires: libaio-devel +BuildRequires: libattr-devel +BuildRequires: libbpf-devel +BuildRequires: libbz2-devel +BuildRequires: libcapstone-devel +BuildRequires: libfdt-devel >= 1.4.2 +BuildRequires: libgcrypt-devel >= 1.8.0 +BuildRequires: lzfse-devel +BuildRequires: meson +BuildRequires: multipath-tools-devel +BuildRequires: ninja >= 1.7 +BuildRequires: pam-devel +BuildRequires: pkgconfig +BuildRequires: pkgconfig(alsa) +BuildRequires: pkgconfig(epoxy) +BuildRequires: pkgconfig(gbm) +BuildRequires: pkgconfig(glib-2.0) >= 2.56 +BuildRequires: pkgconfig(glusterfs-api) >= 3 +BuildRequires: pkgconfig(gnutls) >= 3.5.18 +BuildRequires: pkgconfig(gtk+-3.0) >= 3.22 +BuildRequires: pkgconfig(jack) +BuildRequires: pkgconfig(libcacard) >= 2.5.1 +BuildRequires: pkgconfig(libcap-ng) +BuildRequires: pkgconfig(libcurl) >= 7.29 +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libiscsi) >= 1.9.0 +BuildRequires: pkgconfig(libjpeg) +BuildRequires: pkgconfig(libnfs) >= 1.9.3 +BuildRequires: pkgconfig(libpipewire-0.3) +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(libsasl2) +BuildRequires: pkgconfig(libseccomp) >= 2.3.0 +BuildRequires: pkgconfig(libssh) >= 0.8.7 +BuildRequires: pkgconfig(libudev) +BuildRequires: pkgconfig(libusb-1.0) >= 1.0.13 +BuildRequires: pkgconfig(libzstd) +BuildRequires: pkgconfig(lzo2) +BuildRequires: pkgconfig(ncurses) +BuildRequires: pkgconfig(openssl) >= 1.0.0 +BuildRequires: pkgconfig(pixman-1) >= 0.21.8 +BuildRequires: pkgconfig(slirp) >= 4.2.0 +BuildRequires: pkgconfig(systemd) +BuildRequires: pkgconfig(vdeplug) +BuildRequires: pkgconfig(virglrenderer) >= 0.4.1 +BuildRequires: pkgconfig(vte-2.91) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(zlib) +BuildRequires: rdma-core-devel +BuildRequires: snappy-devel +BuildRequires: update-desktop-files +BuildRequires: usbredir-devel >= 0.6 +BuildRequires: xfsprogs-devel +%{?systemd_ordering} +## Packages we will REQUIRE +%if %{kvm_available} +Requires(post): acl +Requires(post): udev +%endif +Requires(post): coreutils +Requires: group(kvm) +Requires: group(qemu) +Requires: user(qemu) +# Due to change in where some documentation files are, if qemu-guest-agent +# is installed, we need to make sure we update it to our version. +Requires: (qemu-guest-agent = %{version} if qemu-guest-agent) +## Packages we will RECOMMEND +%ifarch s390x +Recommends: qemu-hw-s390x-virtio-gpu-ccw +%else +Recommends: qemu-hw-display-qxl +Recommends: qemu-hw-display-virtio-gpu +Recommends: qemu-hw-display-virtio-gpu-pci +Recommends: qemu-hw-display-virtio-vga +Recommends: qemu-hw-usb-host +Recommends: qemu-hw-usb-redirect +Recommends: qemu-hw-usb-smartcard +%if 0%{with spice} +Recommends: qemu-ui-spice-app +%endif +# End of "ifarch s390x" +%endif +%if %{kvm_available} +Recommends: kvm_stat +%endif +Recommends: qemu-block-curl +Recommends: qemu-block-nfs +Recommends: qemu-ksm = %{version} +Recommends: qemu-tools +Recommends: qemu-ui-curses +## Packages we will SUGGEST +%if 0%{?with_rbd} +Suggests: qemu-block-rbd +%endif +Suggests: qemu-accel-qtest +Suggests: qemu-block-dmg +Suggests: qemu-block-gluster +Suggests: qemu-block-iscsi +Suggests: qemu-block-ssh +Suggests: qemu-chardev-baum +Suggests: qemu-extra +Suggests: qemu-lang +Suggests: qemu-microvm +Suggests: qemu-skiboot +Suggests: qemu-vhost-user-gpu +Suggests: qemu-ui-gtk +Suggests: qemu-doc +## Packages we PROVIDE +Provides: kvm = %{version} +Provides: qemu-kvm = %{version} +## Pacakges we OBSOLETE (and CONFLICT) +Obsoletes: kvm <= %{version} +Obsoletes: qemu-audio-oss < %{version} +Obsoletes: qemu-audio-sdl < %{version} +Obsoletes: qemu-kvm <= %{version} +Obsoletes: qemu-sgabios <= 8 +Obsoletes: qemu-ui-sdl < %{version} +## What we do with the main emulator depends on the architecture we're on +%if %{kvm_available} +%ifarch %ix86 x86_64 +Requires: qemu-x86 +%else +Suggests: qemu-x86 +%endif +%ifarch ppc ppc64 ppc64le +Requires: qemu-ppc +%else +Suggests: qemu-ppc +%endif +%ifarch s390x +Requires: qemu-s390x +Requires(post): procps +%else +Suggests: qemu-s390x +%endif +%ifarch %arm aarch64 +Requires: qemu-arm +%else +Suggests: qemu-arm +%endif +%ifarch riscv64 +Requires: qemu-extra +%else +Suggests: qemu-extra +%endif +# End of "if kvm_available" +%endif + +%description +%{generic_qemu_description} + +This package acts as an umbrella package to the other QEMU sub-packages. + +%files +%if %{kvm_available} +%ifarch s390x +%{_prefix}/lib/modules-load.d/kvm.conf +%endif +/usr/lib/udev/rules.d/80-kvm.rules +# End of "if kvm_available" +%endif +%if %{legacy_qemu_kvm} +%doc %_docdir/qemu-kvm +%_mandir/man1/qemu-kvm.1.gz +%endif +%_bindir/qemu-kvm +%dir %_datadir/icons/hicolor +%dir %_datadir/icons/hicolor/*/ +%dir %_datadir/icons/hicolor/*/apps +%dir %_datadir/%name +%dir %_datadir/%name/firmware +%dir %_datadir/%name/vhost-user +%dir %_sysconfdir/%name +%dir %_sysconfdir/%name/firmware +%dir /usr/lib/supportconfig +%dir /usr/lib/supportconfig/plugins +%_datadir/applications/qemu.desktop +%_datadir/icons/hicolor/16x16/apps/qemu.png +%_datadir/icons/hicolor/24x24/apps/qemu.png +%_datadir/icons/hicolor/32x32/apps/qemu.bmp +%_datadir/icons/hicolor/32x32/apps/qemu.png +%_datadir/icons/hicolor/48x48/apps/qemu.png +%_datadir/icons/hicolor/64x64/apps/qemu.png +%_datadir/icons/hicolor/128x128/apps/qemu.png +%_datadir/icons/hicolor/256x256/apps/qemu.png +%_datadir/icons/hicolor/512x512/apps/qemu.png +%_datadir/icons/hicolor/scalable/apps/qemu.svg +%_datadir/%name/keymaps +%_datadir/%name/qemu-ifup +%_datadir/%name/qemu-nsis.bmp +%_datadir/%name/trace-events-all +%_mandir/man1/%name.1.gz +%_mandir/man7/qemu-block-drivers.7.gz +%_mandir/man7/qemu-cpu-models.7.gz +%_mandir/man7/qemu-qmp-ref.7.gz +%_mandir/man7/qemu-ga-ref.7.gz +/usr/lib/supportconfig/plugins/%name +%license COPYING COPYING.LIB LICENSE + +%if %{kvm_available} +%post +# Do not execute operations affecting host devices while running in a chroot +if [ $(stat -L -c "%i" /proc/1/root/) = $(stat -L -c "%i" /) ]; then + setfacl --remove-all /dev/kvm &> /dev/null || : +%ifarch s390x + if [ -c /dev/kvm ]; then + %_bindir/chmod 0666 /dev/kvm + %_bindir/chgrp kvm /dev/kvm + fi +%endif + %udev_rules_update + %_bindir/udevadm trigger -y kvm || : +%ifarch s390x + sysctl vm.allocate_pgste=1 || : +%endif +fi +# End of "if {kvm_available}" +%endif + +# Modules need to match {qemu-system-*,qemu-img} version. +# We cannot have qemu and qemu-tools require them in the right version, +# as that would drag in the dependencies the modules are supposed to avoid. +# Nor can we have modules require the right version of qemu and qemu-tools +# as Xen reuses our qemu-tools but does not want our qemu and qemu-x86. +%define qemu_module_conflicts \ +Conflicts: %name < %{version}-%{release} \ +Conflicts: %name > %{version}-%{release} \ +Conflicts: qemu-tools < %{version}-%{release} \ +Conflicts: qemu-tools > %{version}-%{release} + +%prep +%setup -q -n qemu-%{version} + +# We have the meson subprojects there, but as submodules (because OBS +# SCM bridge can handle the latter, but not the former) so we need to +# apply the layering of the packagefiles manually +meson subprojects packagefiles --apply berkeley-testfloat-3 +meson subprojects packagefiles --apply berkeley-softfloat-3 + +# for the record, this set of firmware files is installed, but we don't +# build (yet): bamboo.dtb canyonlands.dtb hppa-firmware.img openbios-ppc +# openbios-sparc32 openbios-sparc64 palcode-clipper petalogix-ml605.dtb +# petalogix-s3adsp1800.dtb QEMU,cgthree.bin QEMU,tcx.bin qemu_vga.ndrv +# u-boot.e500 u-boot-sam460-20100605.bin opensbi-riscv32-generic-fw_dynamic.bin +# opensbi-riscv32-generic-fw_dynamic.elfnpcm7xx_bootrom.bin vof.bin +# vof-nvram.bin + +# Note that: +# - default firmwares are built "by default", i.e., they're built automatically +# during the process of building QEMU (on each specific arch) +# - extra firmwares are built "manually" (see below) from their own sources +# (which, typically, are submodules checked out in the {srcdi}r/roms directory) +%define ppc_default_firmware %{nil} +#{vof.bin vof-nvram.bin} +%define ppc_extra_firmware {skiboot.lid slof.bin} +%define riscv64_default_firmware %{nil} +%define riscv64_extra_firmware {opensbi-riscv64-generic-fw_dynamic.bin} +%define s390x_default_firmware {s390-ccw.img s390-netboot.img} +%define s390x_extra_firmware %{nil} +%define x86_default_firmware {linuxboot.bin linuxboot_dma.bin multiboot.bin \ +multiboot_dma.bin kvmvapic.bin pvh.bin} +%define x86_extra_firmware {bios.bin bios-256k.bin bios-microvm.bin qboot.rom \ +pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom pxe-pcnet.rom pxe-rtl8139.rom \ +pxe-virtio.rom vgabios-ati.bin vgabios-bochs-display.bin \ +vgabios.bin vgabios-cirrus.bin vgabios-qxl.bin vgabios-ramfb.bin \ +vgabios-stdvga.bin vgabios-virtio.bin vgabios-vmware.bin \ +efi-e1000.rom efi-e1000e.rom efi-eepro100.rom efi-ne2k_pci.rom efi-pcnet.rom \ +efi-rtl8139.rom efi-virtio.rom efi-vmxnet3.rom} + +# Complete list of all the firmwares that we build, if we consider +# all the builds, on all the arches. +%define firmware { \ +%{ppc_default_firmware} %{ppc_extra_firmware} \ +%{riscv64_default_firmware} %{riscv64_extra_firmware} \ +%{s390x_default_firmware} %{s390x_extra_firmware} \ +%{x86_default_firmware} %{x86_extra_firmware} } + +# Note that: +# - {arch}_default_built_firmware are the firmwares that we will be built by +# default in this particular build, on the arch where we currently are on +# - {arch}_extra_built_fimrware, likewise, but for extra firmwares, built manually +%ifarch ppc64 ppc64le +%define ppc_default_built_firmware %{ppc_default_firmware} +%endif +%ifarch riscv64 +%define riscv64_default_built_firmware %{riscv64_default_firmware} +%endif +%ifarch s390x +%define s390x_default_built_firmware %{s390x_default_firmware} +%endif +%ifarch %ix86 x86_64 +%define x86_default_built_firmware %{x86_default_firmware} +%endif + +%if %{build_opensbi_firmware} +%define riscv64_extra_built_firmware %{riscv64_extra_firmware} +%endif +%if %{build_ppc_firmware} +%define ppc_extra_built_firmware %{ppc_extra_firmware} +%endif +%if %{build_x86_firmware} +%define x86_extra_built_firmware %{x86_extra_firmware} +%endif + +# List of only firmwares that will actually be built, in this instance +%define built_firmware { \ +%{?ppc_default_built_firmware} %{?ppc_extra_built_firmware} \ +%{?riscv64_default_built_firmware} %{?riscv64_extra_built_firmware} \ +%{?s390x_default_built_firmware} %{?s390x_extra_built_firmware} \ +%{?x86_default_built_firmware} %{?x86_extra_built_firmware} } + +%build + +%define rpmfilesdir %{_builddir}/qemu-%{version}/rpm + +%if %{legacy_qemu_kvm} +# FIXME: Why are we copying the s390 specific one? +cp %{SOURCE13} docs/supported.rst +sed -i '/^\ \ \ about\/index.*/i \ \ \ supported.rst' docs/index.rst +%endif + +# When generating an upstream release tarball, the following commands +# are run (see scripts/make-release): +# (cd roms/seabios && git describe --tags --long --dirty > .version) +# (cd roms/skiboot && ./make_version.sh > .version) +# This has not happened for the archive we're using, since it's cloned +# from a git branch. We, therefore, assumed that the following commands +# have been run, and the result committed to the repository (with seabios +# and skiboot at the proper commit/tag/...): +# git -C roms/seabios describe --tags --long --dirty > rpm/seabios_version +# (cd roms/skiboot && ./make_version.sh > ../../rpm/skiboot_version) +cp %{SOURCE16} roms/seabios/.version +cp %{SOURCE17} roms/skiboot/.version +find . -iname ".git" -exec rm -rf {} + + +mkdir -p %blddir +cd %blddir + +# We define a few general and common options and then we disable +# pretty much everything. Afterwards, there is a section for each +# of the flavors where we explicitly enable all the feature we want +# for them. + +# TODO: Check whether we want to enable the followings: +# * avx512f +# * debug-info +# * fuse +# * malloc-trim +# * multiprocess +# * qom-cast-debug +# * trace-backends=dtrace +# +# Fedora has avx2 enabled for ix86, while we can't (I tried). Guess it's +# because, for them, ix86 == i686 (while for us it's i586). + +# Let's try to stick to _FORTIFY_SOURCE=2 for now +EXTRA_CFLAGS="$(echo %{optflags} | sed -E 's/-[A-Z]?_FORTIFY_SOURCE[=]?[0-9]*//g') -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-error" + +%srcdir/configure \ +%if 0%{?suse_version} >= 1600 + --python=%_bindir/python3 \ +%else + --python=%_bindir/python3.11 \ +%endif + --docdir=%_docdir \ + --datadir=%_datadir \ + --extra-cflags="${EXTRA_CFLAGS}" \ + --firmwarepath=%_datadir/%name \ + --libdir=%_libdir \ + --libexecdir=%_libexecdir \ + --localstatedir=%_localstatedir \ + --prefix=%_prefix \ + --sysconfdir=%_sysconfdir \ + --with-pkgversion="%(echo '%{distro}' | sed 's/ (.*)//')" \ + --disable-af-xdp \ + --disable-alsa \ + --disable-attr \ + --disable-auth-pam \ + --disable-avx2 \ + --disable-avx512f \ + --disable-block-drv-whitelist-in-tools \ + --disable-bochs \ + --disable-bpf \ + --disable-brlapi \ + --disable-bsd-user \ + --disable-bzip2 \ + --disable-cap-ng \ + --disable-capstone \ + --disable-cfi \ + --disable-cfi-debug \ + --disable-cloop \ + --disable-cocoa \ + --disable-coreaudio \ + --disable-coroutine-pool \ + --disable-crypto-afalg \ + --disable-curl \ + --disable-curses \ + --disable-dbus-display \ + --disable-debug-info \ + --disable-debug-mutex \ + --disable-debug-tcg \ + --disable-dmg \ + --disable-docs \ + --disable-download \ + --disable-dsound \ + --disable-fdt \ + --disable-fuse \ + --disable-fuse-lseek \ + --disable-gcrypt \ + --disable-gettext \ + --disable-gio \ + --disable-glusterfs \ + --disable-gnutls \ + --disable-gtk \ + --disable-guest-agent \ + --disable-guest-agent-msi \ + --disable-hv-balloon \ + --disable-hvf \ + --disable-iconv \ + --disable-jack \ + --disable-kvm \ + --disable-l2tpv3 \ + --disable-libdaxctl \ + --disable-libiscsi \ + --disable-libkeyutils \ + --disable-libnfs \ + --disable-libpmem \ + --disable-libssh \ + --disable-libudev \ + --disable-libusb \ + --disable-linux-aio \ + --disable-linux-io-uring \ + --disable-linux-user \ + --disable-live-block-migration \ + --disable-lto \ + --disable-lzfse \ + --disable-lzo \ + --disable-malloc-trim \ + --disable-membarrier \ + --disable-module-upgrades \ + --disable-modules \ + --disable-mpath \ + --disable-multiprocess \ + --disable-netmap \ + --disable-nettle \ + --disable-numa \ + --disable-nvmm \ + --disable-opengl \ + --disable-oss \ + --disable-pa \ + --disable-parallels \ + --disable-pie \ + --disable-pipewire \ + --disable-pixman \ + --disable-plugins \ + --disable-png \ + --disable-pvrdma \ + --disable-qcow1 \ + --disable-qed \ + --disable-qom-cast-debug \ + --disable-rbd \ + --disable-rdma \ + --disable-relocatable \ + --disable-replication \ + --disable-rng-none \ + --disable-rutabaga-gfx \ + --disable-safe-stack \ + --disable-sanitizers \ + --disable-sdl \ + --disable-sdl-image \ + --disable-seccomp \ + --disable-selinux \ + --disable-slirp \ + --disable-slirp-smbd \ + --disable-smartcard \ + --disable-snappy \ + --disable-sparse \ + --disable-spice \ + --disable-spice-protocol \ + --disable-strip \ + --disable-system \ + --disable-tcg \ + --disable-tcg-interpreter \ + --disable-tools \ + --disable-tpm \ + --disable-u2f \ + --disable-usb-redir \ + --disable-user \ + --disable-vde \ + --disable-vdi \ + --disable-vhost-crypto \ + --disable-vhost-kernel \ + --disable-vhost-net \ + --disable-vhost-user \ + --disable-vhost-user-blk-server \ + --disable-vhost-vdpa \ + --disable-virglrenderer \ + --disable-virtfs \ + --disable-vnc \ + --disable-vnc-jpeg \ + --disable-vnc-sasl \ + --disable-vte \ + --disable-vvfat \ + --disable-werror \ + --disable-whpx \ + --disable-xen \ + --disable-xen-pci-passthrough \ + --disable-xkbcommon \ + --disable-zstd \ + --without-default-devices \ + --audio-drv-list=pipewire,pa,alsa,jack,oss \ +%ifarch x86_64 + --enable-avx2 \ + --enable-libpmem \ +%if %{with_xen} + --enable-xen \ + --enable-xen-pci-passthrough \ +%endif +%endif +%if 0%{with xdp} + --enable-af-xdp \ +%endif +%if 0%{with canokey} + --enable-canokey \ +%endif +%if %{kvm_available} + --enable-kvm \ +%endif +%if 0%{?with_daxctl} + --enable-libdaxctl \ +%endif +%if 0%{?with_uring} + --enable-linux-io-uring \ +%endif +%if "%{_lto_cflags}" != "%{nil}" + --enable-lto \ +%endif +%if %{with malloc_trim} + --enable-malloc-trim \ +%endif +%if %{with system_membarrier} + --enable-membarrier \ +%endif +%ifnarch %arm s390x + --enable-numa \ +%endif +%if 0%{?with_rbd} + --enable-rbd \ +%endif +%if %{has_rutabaga_gfx} + --enable-rutabaga-gfx \ +%endif + --enable-alsa \ + --enable-attr \ + --enable-auth-pam \ + --enable-bochs \ + --enable-bpf \ + --enable-brlapi \ + --enable-bzip2 \ + --enable-cap-ng \ + --enable-capstone \ + --enable-cloop \ + --enable-coroutine-pool \ + --enable-curl \ + --enable-curses \ + --enable-dbus-display \ + --enable-dmg \ + --enable-docs \ + --enable-fdt=system \ + --enable-gcrypt \ + --enable-gettext \ + --enable-gio \ + --enable-glusterfs \ + --enable-gnutls \ + --enable-gtk \ + --enable-guest-agent \ + --enable-hv-balloon \ + --enable-iconv \ + --enable-jack \ + --enable-l2tpv3 \ + --enable-libiscsi \ + --enable-libkeyutils \ + --enable-libnfs \ + --enable-libssh \ + --enable-libudev \ + --enable-libusb \ + --enable-linux-aio \ + --enable-live-block-migration \ + --enable-lzfse \ + --enable-lzo \ + --enable-modules \ + --enable-mpath \ + --enable-opengl \ + --enable-oss \ + --enable-pa \ + --enable-parallels \ + --enable-pie \ + --enable-pipewire \ + --enable-pixman \ + --enable-png \ + --enable-pvrdma \ + --enable-qcow1 \ + --enable-qed \ + --enable-rdma \ + --enable-relocatable \ + --enable-replication \ + --enable-seccomp \ + --enable-selinux \ + --enable-slirp \ + --enable-slirp-smbd \ + --enable-smartcard \ + --enable-snappy \ +%if 0%{with spice} + --enable-spice \ + --enable-spice-protocol \ +%endif + --enable-system \ + --enable-tcg \ + --enable-tools \ + --enable-tpm \ + --enable-usb-redir \ + --enable-vde \ + --enable-vdi \ + --enable-vhost-crypto \ + --enable-vhost-kernel \ + --enable-vhost-net \ + --enable-vhost-user \ + --enable-vhost-user-blk-server \ + --enable-vhost-vdpa \ + --enable-virglrenderer \ + --enable-virtfs \ + --enable-vnc \ + --enable-vnc-jpeg \ + --enable-vnc-sasl \ + --enable-vte \ + --enable-vvfat \ + --enable-werror \ + --enable-xkbcommon \ + --enable-zstd \ + --with-coroutine=ucontext \ + --with-default-devices + +echo "=== Content of config-host.mak: ===" +cat config-host.mak +echo "=== ===" + +# For building QEMU and all the "default" firmwares, for each arch, +# for the package qemu, we first need to delete the firmware files that +# we intend to build... +# +# TODO: check if this can be common to qemu and qemu-linux-user +for i in %built_firmware +do + unlink %srcdir/pc-bios/$i +done + +%make_build + +# ... Then, we need to reinstate the firmwares that have been built already +for i in %{?s390x_default_built_firmware} +do + cp pc-bios/s390-ccw/$i %srcdir/pc-bios/ +done + +for i in %{?x86_default_built_firmware} +do + cp pc-bios/optionrom/$i %srcdir/pc-bios/ +done + +# Build the "extra" firmwares. Note that the QEMU Makefile in {srcdir}/roms +# does some cross-compiler auto detection. So we often don't need to define +# or pass CROSS= and CROSS_COMPILE ourselves. + +%if %{build_ppc_firmware} +# FIXME: check if we can upstream: Makefile-define-endianess-for-cross-buil.patch +%make_build -C %srcdir/roms skiboot + +%make_build -C %srcdir/roms slof +%endif + +%if %{build_opensbi_firmware} +%make_build -C %srcdir/roms opensbi64-generic +# End of "if build_ppc_firmware" +%endif + +%if %{build_x86_firmware} +%make_build %{?_smp_mflags} -C %srcdir/roms bios \ + SEABIOS_EXTRAVERSION="-rebuilt.opensuse.org" \ + +pushd %srcdir/roms/seabios/docs +for f in *.md +do + b="${f%.md}" + # Ensure the correct media type + markdown "${f}" >"${b}.html" + # Links to b.md will be rendered as to b + ln -Ts "${b}.html" "${b}" +done +popd + +# FIXME: check if we can upstream: roms-Makefile-add-cross-file-to-qboot-me.patch +# and qboot-add-cross.ini-file-to-handle-aarch.patch +%make_build -C %srcdir/roms qboot + +%make_build -C %srcdir/roms seavgabios \ + +%make_build -C %srcdir/roms seavgabios-ati \ + +%make_build -C %srcdir/roms pxerom + +%make_build -C %srcdir/roms edk2-basetools EXTRA_OPTFLAGS='-fPIE' +%make_build -C %srcdir/roms efirom + +%if %{force_fit_virtio_pxe_rom} +pushd %srcdir +patch -p1 < %{SOURCE18} +popd +%make_build -C %srcdir/roms pxerom_variants=virtio pxerom_targets=1af41000 pxerom +%endif + +for i in %supported_nics_large %unsupported_nics + do + if test "`stat -c '%s' %srcdir/pc-bios/pxe-$i.rom`" -gt "131072" ; then + echo "pxe rom is too large" + exit 1 + fi + if test "`stat -c '%s' %srcdir/pc-bios/pxe-$i.rom`" -le "65536" ; then + %srcdir/roms/ipxe/src/util/padimg.pl %srcdir/pc-bios/pxe-$i.rom -s 65536 -b 255 + echo -ne "SEGMENT OVERAGE\0" >> %srcdir/pc-bios/pxe-$i.rom + fi +done +for i in %supported_nics_small + do + if test "`stat -c '%s' %srcdir/pc-bios/pxe-$i.rom`" -gt "65536" ; then + echo "pxe rom is too large" + exit 1 + fi +done +# End of "if build_x86_firmware" +%endif + +%install +cd %blddir +export USER=abuild +export HOSTNAME=OBS # is used in roms/SLOF/Makefile.gen (boo#1084909) + +%make_build install DESTDIR=%{buildroot} + +%find_lang %name +install -d -m 0755 %{buildroot}%_datadir/%name/firmware +install -d -m 0755 %{buildroot}/usr/lib/supportconfig/plugins +install -d -m 0755 %{buildroot}%_sysconfdir/%name/firmware +install -D -m 0644 %{SOURCE4} %{buildroot}%_sysconfdir/%name/bridge.conf +install -D -m 0755 %{SOURCE3} %{buildroot}%_datadir/%name/qemu-ifup +install -D -p -m 0644 %{SOURCE8} %{buildroot}/usr/lib/udev/rules.d/80-qemu-ga.rules +install -D -m 0755 scripts/analyze-migration.py %{buildroot}%_bindir/analyze-migration.py +install -D -m 0755 scripts/vmstate-static-checker.py %{buildroot}%_bindir/vmstate-static-checker.py +install -D -m 0755 scripts/kvm/vmxcap %{buildroot}%_bindir/vmxcap +install -D -m 0755 %{SOURCE9} %{buildroot}/usr/lib/supportconfig/plugins/%name +install -D -m 0644 %{SOURCE10} %{buildroot}%_docdir/qemu-arm/supported.txt +install -D -m 0644 %{SOURCE11} %{buildroot}%_docdir/qemu-ppc/supported.txt +install -D -m 0644 %{SOURCE12} %{buildroot}%_docdir/qemu-x86/supported.txt +install -D -m 0644 %{SOURCE13} %{buildroot}%_docdir/qemu-s390x/supported.txt + +%if %{legacy_qemu_kvm} +install -D -m 0644 %{SOURCE5} %{buildroot}%_mandir/man1/qemu-kvm.1.gz +install -d %{buildroot}%_docdir/qemu-kvm +# FIXME: Why do we onlly generate the HTML for the legacy package documentation? +%ifarch s390x +ln -s ../qemu-s390x/supported.txt %{buildroot}%_docdir/qemu-kvm/kvm-supported.txt +rst2html --exit-status=2 %{buildroot}%_docdir/qemu-s390x/supported.txt %{buildroot}%_docdir/qemu-kvm/kvm-supported.html +%else +ln -s ../qemu-x86/supported.txt %{buildroot}%_docdir/qemu-kvm/kvm-supported.txt +rst2html --exit-status=2 %{buildroot}%_docdir/qemu-x86/supported.txt %{buildroot}%_docdir/qemu-kvm/kvm-supported.html +# End of "ifarch s390x" +%endif +# End of "if legacy_qemu_kvm" +%endif + +%ifarch aarch64 %arm %ix86 ppc ppc64 ppc64le riscv64 s390x x86_64 +%ifarch ppc64le +%define qemu_arch ppc64 +%endif +ln -s qemu-system-%{qemu_arch} %{buildroot}%_bindir/qemu-kvm +%endif + +%if %{kvm_available} +install -D -m 0644 %{SOURCE1} %{buildroot}/usr/lib/udev/rules.d/80-kvm.rules +%endif +install -D -p -m 0644 %{SOURCE7} %{buildroot}%{_unitdir}/qemu-guest-agent.service +install -D -p -m 0644 %{SOURCE6} %{buildroot}%{_unitdir}/ksm.service +%ifarch s390x +install -D -m 0644 %{SOURCE2} %{buildroot}%{_prefix}/lib/modules-load.d/kvm.conf +# End of "if kvm_available" +%endif + +# We rely on a separate project / package to provide edk2 firmware +unlink %{buildroot}%_datadir/%name/edk2-licenses.txt +unlink %{buildroot}%_datadir/%name/firmware/50-edk2-i386-secure.json +unlink %{buildroot}%_datadir/%name/firmware/50-edk2-x86_64-secure.json +unlink %{buildroot}%_datadir/%name/firmware/60-edk2-aarch64.json +unlink %{buildroot}%_datadir/%name/firmware/60-edk2-arm.json +unlink %{buildroot}%_datadir/%name/firmware/60-edk2-i386.json +unlink %{buildroot}%_datadir/%name/firmware/60-edk2-x86_64.json +unlink %{buildroot}%_datadir/%name/edk2-aarch64-code.fd +unlink %{buildroot}%_datadir/%name/edk2-arm-code.fd +unlink %{buildroot}%_datadir/%name/edk2-arm-vars.fd +unlink %{buildroot}%_datadir/%name/edk2-i386-code.fd +unlink %{buildroot}%_datadir/%name/edk2-i386-secure-code.fd +unlink %{buildroot}%_datadir/%name/edk2-i386-vars.fd +unlink %{buildroot}%_datadir/%name/edk2-x86_64-code.fd +unlink %{buildroot}%_datadir/%name/edk2-x86_64-secure-code.fd + +# this was never meant for customer consumption - delete even though installed +unlink %{buildroot}%_bindir/elf2dmp + +# For PPC and x86 firmwares, there are a few extra install steps necessary. +# In general, if we know that we have not built a firmware, remove it from the +# install base, as the one that we have there is the upstream binary, that got +# copied there during `make install`. + +%if %{build_ppc_firmware} +# In support of update-alternatives +# +# The reason why we do this, is because we have (only for PPC) an skiboot +# package, shipping an alternative version of skiboot.lid. That is, in fact, +# what's "on the other end" of us supporting update-alternatives for this +# particular firmware. +mv %{buildroot}%_datadir/%name/skiboot.lid %{buildroot}%_datadir/%name/skiboot.lid.qemu +# create a dummy target for /etc/alternatives/skiboot.lid +mkdir -p %{buildroot}%{_sysconfdir}/alternatives +ln -s -f %{_sysconfdir}/alternatives/skiboot.lid %{buildroot}%{_datadir}/%name/skiboot.lid +%else +for f in %{ppc_extra_firmware} ; do + unlink %{buildroot}%_datadir/%name/$f +done +# End of "if build_ppc_fimrware" +%endif + +# For riscv64 firmwares (currently, only opensbi), we leave them there in +# any case, because they're part of the qemu-extra package, and riscv is +# a bit special in many ways already. + +%if %{build_x86_firmware} +install -D -m 0644 %{SOURCE14} %{buildroot}%_datadir/%name/firmware/50-seabios-256k.json +install -D -m 0644 %{SOURCE15} %{buildroot}%_datadir/%name/firmware/60-seabios-128k.json +install -d -m 0755 %{buildroot}%_docdir/qemu-seabios +%else +for f in %{x86_extra_firmware} ; do + unlink %{buildroot}%_datadir/%name/$f +done +# End of "if build_x86_firmware" +%endif + +%suse_update_desktop_file qemu + +# Common install steps for qemu and qemu-linux-user +%fdupes -s %{buildroot} + +%check +cd %blddir + +# Patch 'increase x86_64 physical bits to 42' requires that the DSDT used for +# acpi [q]tests is modified too. But it's binary, and that means we cannot +# do that in the patch itself. Instead, we keep a copy of the binary in the +# package sources, and put it in place now, before the tests themselves. +# If that patch is removed, the following line needs to go as well. +cp %{SOURCE19} %{srcdir}/tests/data/acpi/microvm/ + +# Patch 'tests/acpi: update tables for new core count test' requires some new +# binaries to be introcuded too. Let's copy them in place as well +cp %{SOURCE20} %{SOURCE21} %{SOURCE22} %{srcdir}/tests/data/acpi/q35/ + +%if 0%{?qemu_user_space_build} +# Seccomp is not supported by linux-user emulation +echo 'int main (void) { return 0; }' > %{srcdir}/tests/unit/test-seccomp.c +# keyctl is not yet supported by linux-user emulation +echo 'int main (void) { return 0; }' > %{srcdir}/tests/unit/test-crypto-secret.c +%endif + +# Compile the QOM test binary first, so that ... +%make_build tests/qtest/qom-test +# ... make comes in fresh and has lots of address space (needed for 32bit, bsc#957379) +# FIXME: is this still a problem? + +# Let's build everything first +%make_build check-build +# Let's now run the 'make check' component individually, so we have +# more control on the options (like -j, etc) +%make_build check-unit +%make_build check-qapi-schema +%make_build check-softfloat +# This would be `make_build check-block`. But iotests are not reliable +# if ran in parallel in OBS, so let's be slow for now. +make -O V=1 VERBOSE=1 -j1 check-block +%if %{with chkqtests} && !0%{?qemu_user_space_build} +# Run qtests sequentially, as it's too unreliable, when run in OBS, if parallelized +make -O V=1 VERBOSE=1 -j1 check-qtest +%endif +# Last step will be to run a full check-report, but we will +# enable this at a later point +#make -O V=1 VERBOSE=1 -j1 check-report.junit.xml + +%if 0%{with spice} +%package spice +Summary: Modules and packages for SPICE +Group: System/Emulators/PC +Requires: qemu-audio-spice +Requires: qemu-chardev-spice +Requires: qemu-headless +Requires: qemu-hw-display-qxl +Requires: qemu-hw-usb-redirect +Requires: qemu-ui-spice-core + +%description spice +%{generic_qemu_description} + +This meta-package brings in, as dependencies, the modules and packages +necessary for having SPICE working for your VMs. + +%files spice + +%package audio-spice +Summary: Spice based audio support for QEMU +Group: System/Emulators/PC +Requires: qemu-ui-spice-core = %{version}-%{release} +%{qemu_module_conflicts} + +%description audio-spice +This package contains a module for Spice based audio support for QEMU. + +%files audio-spice +%dir %_libdir/%name +%_libdir/%name/audio-spice.so + +%package chardev-spice +Summary: Spice vmc and port chardev support for QEMU +Group: System/Emulators/PC +Requires: qemu-ui-spice-core = %{version}-%{release} +%{qemu_module_conflicts} + +%description chardev-spice +This package contains a module for Spice chardev support for QEMU. + +%files chardev-spice +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/chardev-spice.so + +%package ui-spice-app +Summary: Spice UI support for QEMU +Group: System/Emulators/PC +Requires: qemu-chardev-spice = %{version}-%{release} +Requires: qemu-ui-spice-core = %{version}-%{release} +%{qemu_module_conflicts} + +%description ui-spice-app +This package contains a module for doing Spice based UI for QEMU. + +%files ui-spice-app +%dir %_libdir/%name +%_libdir/%name/ui-spice-app.so + +%package ui-spice-core +Summary: Core Spice support for QEMU +Group: System/Emulators/PC +Requires: qemu-ui-opengl +# This next Requires is only since virt-manager expects audio support +Requires: qemu-audio-spice = %{version}-%{release} +%{qemu_module_conflicts} + +%description ui-spice-core +This package contains a module with core Spice support for QEMU. + +%files ui-spice-core +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/ui-spice-core.so + +%package hw-display-qxl +Summary: QXL display support for QEMU +Group: System/Emulators/PC +Requires: qemu-ui-spice-core = %{version}-%{release} +%{qemu_module_conflicts} + +%description hw-display-qxl +This package contains a module for QXL display support for QEMU. + +%files hw-display-qxl +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/hw-display-qxl.so + +# End of "with spice" +%endif + +%package headless +Summary: Minimum set of packages for having a functional QEMU +Group: System/Emulators/PC +Requires: qemu +Requires: qemu-block-curl +Requires: qemu-block-nfs +Requires: qemu-img +%if %{has_virtiofsd} +Requires: virtiofsd +%endif +Recommends: qemu-tools + +%description headless +%{generic_qemu_description} + +This meta-package brings in, as dependencies, the minimum set of packages +currently necessary for having a functional (headless) QEMU/KVM stack. + +%files headless + +%package x86 +Summary: Machine emulator and virtualizer for x86 architectures +Group: System/Emulators/PC +Requires: %name = %{version} +Requires: qemu-accel-tcg-x86 +Requires: qemu-ipxe +Requires: qemu-seabios +Requires: qemu-vgabios +%ifarch x86_64 +Requires: qemu-ovmf-x86_64 +%else +Recommends: qemu-ovmf-ia32 +Recommends: qemu-ovmf-x86_64 +%endif +Recommends: ovmf +Recommends: qemu-microvm + +%description x86 +%{generic_qemu_description} + +This package provides i386 and x86_64 emulation. + +%files x86 +%_bindir/qemu-system-i386 +%_bindir/qemu-system-x86_64 +%_datadir/%name/kvmvapic.bin +%_datadir/%name/linuxboot.bin +%_datadir/%name/linuxboot_dma.bin +%_datadir/%name/multiboot.bin +%_datadir/%name/multiboot_dma.bin +%_datadir/%name/pvh.bin +%doc %_docdir/qemu-x86 + +%package ppc +Summary: Machine emulator and virtualizer for Power architectures +Group: System/Emulators/PC +Requires: %name = %{version} +Requires: qemu-SLOF +Recommends: qemu-ipxe +Recommends: qemu-vgabios + +%description ppc +%{generic_qemu_description} + +This package provides ppc and ppc64 emulation. + +%files ppc +%_bindir/qemu-system-ppc +%_bindir/qemu-system-ppc64 +%_datadir/%name/bamboo.dtb +%_datadir/%name/canyonlands.dtb +%_datadir/%name/openbios-ppc +%_datadir/%name/qemu_vga.ndrv +%_datadir/%name/u-boot.e500 +%_datadir/%name/u-boot-sam460-20100605.bin +%_datadir/%name/vof*.bin +%doc %_docdir/qemu-ppc + +%package s390x +Summary: Machine emulator and virtualizer for S/390 architectures +Group: System/Emulators/PC +Requires: %name = %{version} +Provides: qemu-s390 = %{version} +Obsoletes: qemu-s390 < %{version} + +%description s390x +%{generic_qemu_description} + +This package provides s390x emulation. + +%files s390x +%_bindir/qemu-system-s390x +%_datadir/%name/s390-ccw.img +%_datadir/%name/s390-netboot.img +%doc %_docdir/qemu-s390x + +%package arm +Summary: Machine emulator and virtualizer for ARM architectures +Group: System/Emulators/PC +Requires: %name = %{version} +Recommends: ovmf +Recommends: qemu-ipxe +Recommends: qemu-uefi-aarch64 +Recommends: qemu-vgabios + +%description arm +%{generic_qemu_description} + +This package provides arm emulation. + +%files arm +%_bindir/qemu-system-arm +%_bindir/qemu-system-aarch64 +%_datadir/%name/npcm7xx_bootrom.bin +%doc %_docdir/qemu-arm + +%package extra +Summary: Machine emulator and virtualizer for "extra" architectures +Group: System/Emulators/PC +Requires: %name = %{version} +Recommends: qemu-ipxe +Recommends: qemu-skiboot +Recommends: qemu-vgabios + +%description extra +%{generic_qemu_description} + +This package provides some lesser used emulations, including alpha, m68k, +mips, sparc, and xtensa. (The term "extra" is juxtapositioned against more +popular QEMU packages which are dedicated to a single architecture.) + +%files extra +%_bindir/qemu-system-alpha +%_bindir/qemu-system-avr +%_bindir/qemu-system-cris +%_bindir/qemu-system-hppa +%_bindir/qemu-system-loongarch64 +%_bindir/qemu-system-m68k +%_bindir/qemu-system-microblaze +%_bindir/qemu-system-microblazeel +%_bindir/qemu-system-mips +%_bindir/qemu-system-mipsel +%_bindir/qemu-system-mips64 +%_bindir/qemu-system-mips64el +%_bindir/qemu-system-nios2 +%_bindir/qemu-system-or1k +%_bindir/qemu-system-riscv32 +%_bindir/qemu-system-riscv64 +%_bindir/qemu-system-rx +%_bindir/qemu-system-sh4 +%_bindir/qemu-system-sh4eb +%_bindir/qemu-system-sparc +%_bindir/qemu-system-sparc64 +%_bindir/qemu-system-tricore +%_bindir/qemu-system-xtensa +%_bindir/qemu-system-xtensaeb +%_datadir/%name/hppa-firmware.img +%_datadir/%name/openbios-sparc32 +%_datadir/%name/openbios-sparc64 +%_datadir/%name/opensbi-riscv32-generic-fw_dynamic.bin +%_datadir/%name/opensbi-riscv64-generic-fw_dynamic.bin +%_datadir/%name/palcode-clipper +%_datadir/%name/petalogix-ml605.dtb +%_datadir/%name/petalogix-s3adsp1800.dtb +%_datadir/%name/QEMU,cgthree.bin +%_datadir/%name/QEMU,tcx.bin + +%package lang +Summary: Translations for QEMU +Group: System/Emulators/PC + +%description lang +This package contains a few language translations, particularly for the +graphical user interface components that come with QEMU. The bulk of strings +in QEMU are not localized. + +%files lang -f %blddir/%name.lang + +%package audio-alsa +Summary: ALSA based audio support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description audio-alsa +This package contains a module for ALSA based audio support for QEMU. + +%files audio-alsa +%dir %_libdir/%name +%_libdir/%name/audio-alsa.so + +%package audio-dbus +Summary: D-Bus based audio support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description audio-dbus +This package provides a module for D-Bus based audio support for QEMU. + +%files audio-dbus +%dir %_libdir/%name +%_libdir/%name/audio-dbus.so + +%package audio-pa +Summary: Pulse Audio based audio support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description audio-pa +This package contains a module for Pulse Audio based audio support for QEMU. + +%files audio-pa +%dir %_libdir/%name +%_libdir/%name/audio-pa.so + +%package audio-jack +Summary: JACK based audio support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description audio-jack +This package contains a module for JACK based audio support for QEMU. + +%files audio-jack +%dir %_libdir/%name +%_libdir/%name/audio-jack.so + +%package audio-oss +Summary: OSS based audio support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description audio-oss +This package contains a module for OSS based audio support for QEMU. + +%files audio-oss +%dir %_libdir/%name +%_libdir/%name/audio-oss.so + +%package audio-pipewire +Summary: Pipewire based audio support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description audio-pipewire +This package contains a module for Pipewire based audio support for QEMU. + +%files audio-pipewire +%dir %_libdir/%name +%_libdir/%name/audio-pipewire.so + +%package block-curl +Summary: cURL block support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description block-curl +This package contains a module for accessing network-based image files over +a network connection from qemu-img tool and QEMU system emulation. + +%files block-curl +%dir %_libdir/%name +%_libdir/%name/block-curl.so + +%package block-dmg +Summary: DMG block support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description block-dmg +This package contains a module for accessing Mac OS X image files from +qemu-img tool and QEMU system emulation. + +%files block-dmg +%dir %_libdir/%name +%_libdir/%name/block-dmg-bz2.so +%_libdir/%name/block-dmg-lzfse.so + +%package block-gluster +Summary: GlusterFS block support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description block-gluster +This package contains a module for accessing network-based image files over a +GlusterFS network connection from qemu-img tool and QEMU system emulation. + +%files block-gluster +%dir %_libdir/%name +%_libdir/%name/block-gluster.so + +%package block-iscsi +Summary: iSCSI block support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description block-iscsi +This package contains a module for accessing network-based image files over an +iSCSI network connection from qemu-img tool and QEMU system emulation. + +%files block-iscsi +%dir %_libdir/%name +%_libdir/%name/block-iscsi.so + +%package block-nfs +Summary: direct Network File System support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description block-nfs +This package contains a module for directly accessing nfs based image files +for QEMU. + +%files block-nfs +%dir %_libdir/%name +%_libdir/%name/block-nfs.so + +%package block-ssh +Summary: SSH (SFTP) block support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description block-ssh +This package contains a module for accessing network-based image files over an +SSH network connection from qemu-img tool and QEMU system emulation. + +%files block-ssh +%dir %_libdir/%name +%_libdir/%name/block-ssh.so + +%package chardev-baum +Summary: Baum braille chardev support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description chardev-baum +This package contains a module for baum braille chardev support for QEMU. + +%files chardev-baum +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/chardev-baum.so + +%package hw-display-virtio-gpu +Summary: Virtio GPU display support for QEMU +Group: System/Emulators/PC +# Make sure that VGA is pretty much always there. Technically, this isn't +# really necessary (and/or, should be dealt with in other places) but it +# makes it easier to deal with strange situation where, e.g., GRUB is +# configured to work only with a graphical terminal (see bsc#1219164), +# and the hw-display-virtio-vga package is small enough, anyway. +Requires: qemu-hw-display-virtio-vga = %{version}-%{release} +%{qemu_module_conflicts} + +%description hw-display-virtio-gpu +This package contains a module for Virtio GPU display support for QEMU. + +%files hw-display-virtio-gpu +%dir %_datadir/%name +%_libdir/%name/hw-display-virtio-gpu.so +%_libdir/%name/hw-display-virtio-gpu-gl.so + +%package hw-display-virtio-gpu-pci +Summary: Virtio-gpu pci device for QEMU +Group: System/Emulators/PC +Requires: qemu-hw-display-virtio-gpu = %{version}-%{release} +%{qemu_module_conflicts} + +%description hw-display-virtio-gpu-pci +This package contains a module providing the virtio gpu pci device for QEMU. + +%files hw-display-virtio-gpu-pci +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/hw-display-virtio-gpu-pci.so +%_libdir/%name/hw-display-virtio-gpu-pci-gl.so + +%package hw-display-virtio-vga +Summary: Virtio vga device for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description hw-display-virtio-vga +This package contains a module providing the virtio vga device for QEMU. + +%files hw-display-virtio-vga +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/hw-display-virtio-vga.so +%_libdir/%name/hw-display-virtio-vga-gl.so + +%package hw-s390x-virtio-gpu-ccw +Summary: S390x virtio-gpu ccw device for QEMU +Group: System/Emulators/PC +Requires: qemu-hw-display-virtio-gpu = %{version}-%{release} +%{qemu_module_conflicts} + +%description hw-s390x-virtio-gpu-ccw +This package contains a module providing the s390x virtio gpu ccw device for +QEMU. + +%files hw-s390x-virtio-gpu-ccw +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/hw-s390x-virtio-gpu-ccw.so + +%package hw-usb-redirect +Summary: USB redirection support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description hw-usb-redirect +This package contains a module for USB redirection support for QEMU. + +%files hw-usb-redirect +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/hw-usb-redirect.so + +%package hw-usb-smartcard +Summary: USB smartcard support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description hw-usb-smartcard +This package contains a modules for USB smartcard support for QEMU. + +%files hw-usb-smartcard +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/hw-usb-smartcard.so + +%package hw-usb-host +Summary: USB passthrough driver support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description hw-usb-host +This package contains a modules for USB passthrough driver for QEMU. + +%files hw-usb-host +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/hw-usb-host.so + +%package ui-dbus +Summary: D-Bus based UI support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description ui-dbus +This package contains a module for doing D-Bus based UI for QEMU. + +%files ui-dbus +%dir %_libdir/%name +%_libdir/%name/ui-dbus.so + +%package ui-curses +Summary: Curses based UI support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description ui-curses +This package contains a module for doing curses based UI for QEMU. + +%files ui-curses +%dir %_libdir/%name +%_libdir/%name/ui-curses.so + +%package ui-gtk +Summary: GTK based UI support for QEMU +Group: System/Emulators/PC +Requires: qemu-ui-opengl +Supplements: (qemu and libgtk-3-0) +%{qemu_module_conflicts} + +%description ui-gtk +This package contains a module for doing GTK based UI for QEMU. + +%files ui-gtk +%dir %_libdir/%name +%_libdir/%name/ui-gtk.so + +%package ui-opengl +Summary: OpenGL based UI support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description ui-opengl +This package contains a module for doing OpenGL based UI for QEMU. + +%files ui-opengl +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/ui-egl-headless.so +%_libdir/%name/ui-opengl.so + +%package vhost-user-gpu +Summary: Vhost user mode virtio-gpu 2D/3D rendering backend for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description vhost-user-gpu +This package contains a vhost user mode virtio-gpu 2D/3D rendering backend for +QEMU. + +%files vhost-user-gpu +%dir %_datadir/%name/vhost-user +%_datadir/%name/vhost-user/50-qemu-gpu.json +%_libexecdir/vhost-user-gpu + +%package img +Summary: QEMU disk image utility +Group: System/Emulators/PC + +%description img +This package provides command line tools for manipulating disk images. + +%files img +%_bindir/qemu-img +%_bindir/qemu-io +%_bindir/qemu-nbd +%_bindir/qemu-storage-daemon +%_mandir/man1/qemu-img.1.gz +%_mandir/man8/qemu-nbd.8.gz +%_mandir/man1/qemu-storage-daemon.1.gz +%_mandir/man7/qemu-storage-daemon-qmp-ref.7.gz + +%package pr-helper +Summary: QEMU persistent reservation helper +Group: System/Emulators/PC + +%description pr-helper +This package provides a helper utility for SCSI persistent reservations. + +%files pr-helper +%_bindir/qemu-pr-helper +%_mandir/man8/qemu-pr-helper.8.gz + +%package tools +Summary: Tools for QEMU +Group: System/Emulators/PC +Requires(pre): permissions +Requires: qemu-img +Requires: qemu-pr-helper +Requires: group(kvm) +%if %{has_virtiofsd} +Requires: virtiofsd +%endif +Recommends: multipath-tools +Recommends: qemu-block-curl +%if 0%{?with_rbd} +Recommends: qemu-block-rbd +%endif + +%description tools +This package contains various QEMU related tools, including a bridge helper, +a virtfs helper, ivshmem, disk utilities and scripts for various purposes. + +%files tools +%_bindir/analyze-migration.py +%_bindir/qemu-edid +%_bindir/qemu-keymap +%_bindir/vmstate-static-checker.py +%_bindir/vmxcap +%verify(not mode) %attr(4750,root,kvm) %_libexecdir/qemu-bridge-helper +%_libexecdir/virtfs-proxy-helper +%_mandir/man1/virtfs-proxy-helper.1.gz +%dir %_sysconfdir/%name +%config(noreplace) %_sysconfdir/%name/bridge.conf + +%post tools +%set_permissions %_libexecdir/qemu-bridge-helper + +%verifyscript tools +%verify_permissions %_libexecdir/qemu-bridge-helper + +%package ivshmem-tools +Summary: Inter-VM Shared Memory Tools for QEMU +Group: System/Emulators/PC + +%description ivshmem-tools +This package contains a sample shared memory client and server which utilize +QEMU's Inter-VM shared memory device as specified by the ivshmem client-server +protocol specification documented in docs/specs/ivshmem-spec.txt in QEMU source +code. + +%files ivshmem-tools +%dir %_datadir/%name +%_bindir/ivshmem-client +%_bindir/ivshmem-server + +%package guest-agent +Summary: Guest agent for QEMU +Group: System/Emulators/PC +Requires: group(kvm) +Requires(post): udev +Supplements: modalias(acpi*:QEMU0002%3A*) +Supplements: modalias(pci:v00005853d00000001sv*sd*bc*sc*i*) +Supplements: modalias(pci:v0000FFFDd00000101sv*sd*bc*sc*i*) +%{?systemd_ordering} + +%description guest-agent +This package contains the QEMU guest agent. It is installed in the linux guest +to provide information and control at the guest OS level. + +%files guest-agent +%attr(0755,root,kvm) %_bindir/qemu-ga +%_mandir/man8/qemu-ga.8.gz +%{_unitdir}/qemu-guest-agent.service +/usr/lib/udev/rules.d/80-qemu-ga.rules + +%pre guest-agent +%service_add_pre qemu-guest-agent.service + +%post guest-agent +%service_add_post qemu-guest-agent.service +if [ -e /dev/virtio-ports/org.qemu.guest_agent.0 ]; then + /usr/bin/systemctl start qemu-guest-agent.service || : +fi + +%preun guest-agent +if [ -e /dev/virtio-ports/org.qemu.guest_agent.0 ]; then + /usr/bin/systemctl stop qemu-guest-agent.service || : +fi + +%postun guest-agent +%service_del_postun_without_restart qemu-guest-agent.service +if [ "$1" = "1" ] ; then + if [ -e /dev/virtio-ports/org.qemu.guest_agent.0 ]; then + /usr/bin/systemctl restart qemu-guest-agent.service || : + fi +fi + +%package ksm +Summary: Kernel Samepage Merging services +Group: System/Emulators/PC +Requires(pre): coreutils +Requires(post): coreutils + +%description ksm +Kernel Samepage Merging (KSM) is a memory-saving de-duplication feature, that +merges anonymous (private) pages (not pagecache ones). + +This package provides a service file for starting and stopping KSM. + +%files ksm +%{_unitdir}/ksm.service + +%pre ksm +%service_add_pre ksm.service + +%post ksm +%service_add_post ksm.service + +%preun ksm +%service_del_preun ksm.service + +%postun ksm +%service_del_postun ksm.service + +%package accel-tcg-x86 +Summary: TCG accelerator for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description accel-tcg-x86 +TCG is the QEMU binary translator, responsible for converting from target to +host instruction set. + +This package provides the TCG accelerator for QEMU. + +%files accel-tcg-x86 +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/accel-tcg-i386.so +%_libdir/%name/accel-tcg-x86_64.so + +%package accel-qtest +Summary: QTest accelerator for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description accel-qtest +QTest is a device emulation testing framework. It is useful to test device +models. + +This package provides QTest accelerator for testing QEMU. + +%files accel-qtest +%dir %_datadir/%name +%dir %_libdir/%name +%_libdir/%name/accel-qtest-aarch64.so +%_libdir/%name/accel-qtest-alpha.so +%_libdir/%name/accel-qtest-arm.so +%_libdir/%name/accel-qtest-avr.so +%_libdir/%name/accel-qtest-cris.so +%_libdir/%name/accel-qtest-hppa.so +%_libdir/%name/accel-qtest-i386.so +%_libdir/%name/accel-qtest-loongarch64.so +%_libdir/%name/accel-qtest-m68k.so +%_libdir/%name/accel-qtest-microblaze.so +%_libdir/%name/accel-qtest-microblazeel.so +%_libdir/%name/accel-qtest-mips.so +%_libdir/%name/accel-qtest-mips64.so +%_libdir/%name/accel-qtest-mips64el.so +%_libdir/%name/accel-qtest-mipsel.so +%_libdir/%name/accel-qtest-nios2.so +%_libdir/%name/accel-qtest-or1k.so +%_libdir/%name/accel-qtest-ppc.so +%_libdir/%name/accel-qtest-ppc64.so +%_libdir/%name/accel-qtest-riscv32.so +%_libdir/%name/accel-qtest-riscv64.so +%_libdir/%name/accel-qtest-rx.so +%_libdir/%name/accel-qtest-s390x.so +%_libdir/%name/accel-qtest-sh4.so +%_libdir/%name/accel-qtest-sh4eb.so +%_libdir/%name/accel-qtest-sparc.so +%_libdir/%name/accel-qtest-sparc64.so +%_libdir/%name/accel-qtest-tricore.so +%_libdir/%name/accel-qtest-x86_64.so +%_libdir/%name/accel-qtest-xtensa.so +%_libdir/%name/accel-qtest-xtensaeb.so + +%if 0%{?with_rbd} +%package block-rbd +Summary: Rados Block Device (Ceph) support for QEMU +Group: System/Emulators/PC +%{qemu_module_conflicts} + +%description block-rbd +This package contains a module for accessing ceph (rbd,rados) image files +for QEMU. + +%files block-rbd +%dir %_libdir/%name +%_libdir/%name/block-rbd.so +# End of "if with_rbd" +%endif + +%if %{build_ppc_firmware} +%package SLOF +Summary: Slimline Open Firmware - SLOF +Group: System/Emulators/PC +BuildArch: noarch + +%description SLOF +Slimline Open Firmware (SLOF) is an implementation of the IEEE 1275 standard. +It can be used as partition firmware for pSeries machines running on QEMU or KVM. + +%files SLOF +%dir %_datadir/%name +%_datadir/%name/slof.bin + +%package skiboot +Summary: OPAL firmware (aka skiboot), used in booting OpenPOWER systems +Group: System/Emulators/PC +BuildArch: noarch +Requires(post): update-alternatives +Requires(postun): update-alternatives + +%description skiboot +Provides OPAL (OpenPower Abstraction Layer) firmware, aka skiboot, as +traditionally packaged with QEMU. + +%files skiboot +%dir %_datadir/%name +%_datadir/%name/skiboot.lid +%_datadir/%name/skiboot.lid.qemu +%ghost %_sysconfdir/alternatives/skiboot.lid + +%post skiboot +update-alternatives --install \ + %{_datadir}/%name/skiboot.lid skiboot.lid %{_datadir}/%name/skiboot.lid.qemu 15 + +%preun skiboot +if [ ! -f %{_datadir}/%name/skiboot.lid.qemu ] ; then + update-alternatives --remove skiboot.lid %{_datadir}/%name/skiboot.lid.qemu +fi +# End of "if build_ppc_firmware" +%endif + +%if %{build_x86_firmware} +%package microvm +Summary: x86 MicroVM firmware for QEMU +Group: System/Emulators/PC +BuildArch: noarch + +%description microvm +This package provides minimal x86 firmware for booting certain guests under +QEMU. qboot provides the minimum resources needed to boot PVH and bzImages. +bios-microvm, created from a minimal seabios configuration, provides slightly +wider support than qboot, but still focuses on quick boot up. + +%files microvm +%dir %_datadir/%name +%_datadir/%name/bios-microvm.bin +%_datadir/%name/qboot.rom + +%package seabios +Summary: x86 Legacy BIOS for QEMU +Group: System/Emulators/PC +Version: %{sbver} +Release: 0 +BuildArch: noarch +Conflicts: %name < 1.6.0 + +%description seabios +SeaBIOS is an open source implementation of a 16bit x86 BIOS. SeaBIOS +is the default and legacy BIOS for QEMU. + +%files seabios +%dir %_datadir/%name +%_datadir/%name/bios.bin +%_datadir/%name/bios-256k.bin +%_datadir/%name/firmware/50-seabios-256k.json +%_datadir/%name/firmware/60-seabios-128k.json +%license roms/seabios/COPYING +%doc %_docdir/qemu-seabios + +%package vgabios +Summary: VGA BIOSes for QEMU +Group: System/Emulators/PC +Version: %{sbver} +Release: 0 +BuildArch: noarch +Conflicts: %name < 1.6.0 + +%description vgabios +VGABIOS provides the video ROM BIOSes for the following variants of VGA +emulated devices: Std VGA, QXL, Cirrus CLGD 5446 and VMware emulated +video card. For use with QEMU. + +%files vgabios +%dir %_datadir/%name +%_datadir/%name/vgabios.bin +%_datadir/%name/vgabios-ati.bin +%_datadir/%name/vgabios-bochs-display.bin +%_datadir/%name/vgabios-cirrus.bin +%_datadir/%name/vgabios-qxl.bin +%_datadir/%name/vgabios-ramfb.bin +%_datadir/%name/vgabios-stdvga.bin +%_datadir/%name/vgabios-virtio.bin +%_datadir/%name/vgabios-vmware.bin +%license roms/seabios/COPYING + +%package ipxe +Summary: PXE ROMs for QEMU NICs +Group: System/Emulators/PC +Version: 1.0.0+ +Release: 0 +BuildArch: noarch +Conflicts: %name < 1.6.0 + +%description ipxe +Provides Preboot Execution Environment (PXE) ROM support for various emulated +network adapters available with QEMU. + +%files ipxe +%dir %_datadir/%name +%_datadir/%name/efi-e1000.rom +%_datadir/%name/efi-e1000e.rom +%_datadir/%name/efi-eepro100.rom +%_datadir/%name/efi-ne2k_pci.rom +%_datadir/%name/efi-pcnet.rom +%_datadir/%name/efi-rtl8139.rom +%_datadir/%name/efi-virtio.rom +%_datadir/%name/efi-vmxnet3.rom +%_datadir/%name/pxe-e1000.rom +%_datadir/%name/pxe-eepro100.rom +%_datadir/%name/pxe-ne2k_pci.rom +%_datadir/%name/pxe-pcnet.rom +%_datadir/%name/pxe-rtl8139.rom +%_datadir/%name/pxe-virtio.rom +# End of "if build_x86_firmware" +%endif + +%package doc +Summary: Documentation for QEMU +Group: System/Emulators/PC +BuildArch: noarch +Suggests: qemu + +%files doc +%doc %_docdir/%name + +%description doc +%{generic_qemu_description} + +This package contains user and developer documentation for QEMU. + +%changelog diff --git a/packaging/seabios_version b/packaging/seabios_version new file mode 100644 index 000000000..0ce512e75 --- /dev/null +++ b/packaging/seabios_version @@ -0,0 +1 @@ +rel-1.16.2-3-gd478f380 diff --git a/packaging/skiboot_version b/packaging/skiboot_version new file mode 100644 index 000000000..5f205eb16 --- /dev/null +++ b/packaging/skiboot_version @@ -0,0 +1 @@ +v7.0 diff --git a/packaging/supported.arm.txt b/packaging/supported.arm.txt new file mode 100644 index 000000000..d55ef9b15 --- /dev/null +++ b/packaging/supported.arm.txt @@ -0,0 +1,926 @@ +[qemu-arm package document] + +SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS +=============================================== + +Overview +-------- + + The QEMU based packages included with SLES 15 SP4 provide a large variety of + features, from the very latest customer requests to features of questionable + quality or value. The linux kernel includes components which contribute KVM + virtualization features as well. This document was created to assist the user + in deciding which features can be relied upon to build enterprise class + virtualization solutions. KVM based virtualization for x86 (Intel 64/AMD64), + for IBM System z (s390x), and for the ARM64 architecture (AArch64) are offered + at the L3 (full support) level. The bulk of this document deals with L3 + supported features and is primarily ARM64 centric. This document should be + considered a companion to the standard virtualization documentation delivered + with the product. + + KVM is implemented in linux kernel modules which enable the linux kernel to + function as an integral part of the KVM hypervisor. The hypervisor-guest + interaction is managed by QEMU through the /dev/kvm ioctl interface. The linux + host assists in the virtualization of storage, networking and display + resources as well as allowing direct hardware passthrough of PCI and USB + devices. Linux memory and cpu management features are used by QEMU/KVM to + enable guests to share those host resources as efficiently as possible. + + QEMU is a primary component of KVM based virtualization. The QEMU emulator + binary qemu-system-aarch64 is the program to use to access KVM virtualization. + When using this program, the -machine option accel=kvm (or its alias + -enable-kvm) or --accel kvm option must be specified for KVM acceleration to + be used by the guest. + + Libvirt is the preferred means of accessing QEMU/KVM functionality and is + documented elsewhere. This document focuses on the features and direct usage + of QEMU/KVM as provided by the QEMU based packages. + +Major QEMU/KVM Supported Features +--------------------------------- + +- KVM virtualization is accomplished by using the QEMU program in KVM + acceleration mode. KVM acceleration requires that both guest and host have + the same fundamental architecture. + +- Guest images created under previous QEMU versions are supported by machine + version compatibilities built into more recent QEMU versions. + +- For ease of use, the QEMU program has defaults which represent traditional + usage patterns. + +- Guest virtual machine characteristics are specified by a combination of + internal defaults, options provided on the QEMU program command-line, runtime + configurations set via the monitor interfaces and optional config files. The + runtime control of a VM is effected either through the Human Monitor + "Protocol" (HMP), or the JSON based programmatical QEMU Monitor Protocol (QMP) + interface. For QMP details, see qemu-qmp-ref man page. + Since a KVM guest runs in the context of a normal linux process, some types + of execution controls are managed with linux tools. + +- QEMU is compatible with EDK II based UEFI firmware available with SLES 15 SP4, + which allow boot options common to physical systems, along with other features + tailored to virtualization. Various VGABIOS ROMs, from the SEABIOS project, + are also available. + +- Some QEMU messages have been localized to various languages. This is provided + by the optional qemu-lang package. Keyboard mappings for various nationalities + is also provided. + +- Virtual machine lifecycle controls include startup through the UEFI BIOS or + kernel boot, ACPI based shutdown, execution pausing, the saving and restoring + of machine state or disk state, VM migration to another host, and + miscellaneous controls available through the "monitors" mentioned above. + +- Guest execution state may be "moved" in both time (save/restore) and space + (static and live migration). These migrations or save/restore operations can + take place either from certain prior SLES versioned hosts to a SLES 15 SP4 + host or between hosts of the same version. Certain other restrictions also + apply. + +- Security considerations include privileged helpers and a security model which + allows running guests as a non-root user. + +- QEMU provides best effort reuse of existing disk images, including those with + systems installed, through geometry probing. Also disk images produced by + other popular virtualization technologies may be imported into QEMU supported + storage formats. These QEMU formats include features which exploit the + benefits of virtualization. + +- Memory, cpu and disk space overcommit are possible and can be beneficial when + done responsibly. Additional management of these resources comes in the form + of memory ballooning or hotplug, host KSM, vcpu hot-add, online disk resizing, + trim, discard and hole punching. + +- Guest performance is enhanced through the use of virtio devices, various disk + caching modes, network acceleration via the vhost-net kernel module, multi- + queue network transmit capabilities, host transparent huge pages (THP) and + direct hugetlb usage. Physical PCI and USB devices may also be passed through + to the guest, including SR-IOV VF's. + +- The guest UI is accessable via GTK, VNC, Spice, and serial (including curses + TUI) interfaces. + +- Guest timekeeping is supported in a variety of ways, including a paravirtual + clocksource, and options for the various guest clocks for how to handle the + timeslicing of the guest's execution on the host. + +- In addition to the para-virtualized devices already mentioned, other devices + and infrastructure designed to avoid virtualization "problem areas" are + available such as SPICE graphics, vmmouse emulation, tablet style pointer + interfaces and virtio based UI interfaces. + +- A built-in user-mode network (SLIRP) stack is available. + +- Portions of the host file system may be shared with a guest by using virtFS. + +- A guest "agent" is available for SLES 15 SP4 KVM guests via the + qemu-guest-agent package. This allows some introspection and control of the + guest OS environment from the host. + +QEMU/KVM Technology Previews +---------------------------- + +- All features indicated as not being supported in this document fall under the + Technology Preview definition contained in the main product's release notes. + +Noteworthy QEMU/KVM Unsupported Features +---------------------------------------- + +- Note that some features are unsupported simply due to lack of validation. If + an existing feature is desired, but not marked supported, let SUSE know about + your requirements. + +- The TCG "acceleration" mode may be helpful for problem isolation, but + otherwise presents insufficient benefit and stability. + +- GlusterFS integration is not enabled. + +- 32 bit ARM KVM has never been supported by SUSE, but it's worth noting that + this capability will cease to even be possible in a near-future QEMU/KVM + (kernel) combination. + +Deprecated, Superseded, Modified and Dropped Features +----------------------------------------------------- + +- https://qemu-project.gitlab.io/qemu/about/deprecated.html and + https://qemu-project.gitlab.io/qemu/about/removed-features.html + These websites track features deprecation and removal at the upstream + development level. Our qemu package inherits this community direction, but be + aware that we can and will deviate as needed. Those deviations and additional + information can be found in this section. Feature deprecation as well as + removed features are also tracked in the "System Emulation" section of the + documentation installed with the qemu package. + +- qemu-img: Deprecate use of -b without -F. Creating an image that requires + format probing of the backing image is potentially unsafe and is now + deprecated. + +- Aspeed swift-bmc machine is deprecated. It can be easily replaced by the + witherspoon-bmc or the romulus-bmc machines. + +- The previously non-persistent backing file with pmem=on is deprecated. Modify + VM configuration to set pmem=off to continue using fake NVDIMM with backing + file or move backing file to NVDIMM storage and keep pmem=on. + +- The use of "?" as a parameter to "-cpu", "-soundhw", "-device", "-M", + "-machine" and "-d" is now considered deprecated. Use "help" + instead. + +- The use of "if=scsi" as a parameter to "-drive" does not work anymore with PC + machine types, as it created an obsolete SCSI controller model. + +- Use of aio=native without direct cache mode also being specified (cache=none, + cache=directsync, or cache.direct=on) is no longer allowed. + +- The use of image encryption in qcow and qcow2 formats is now considered + deprecated. + Analysis has shown it to be weak encryption, in addition to suffering from + poor design. Images can easily be converted to a non-encrypted format. + +- Use of acpi, boot-opts, and smp-opts in a -readconfig config file are now + considered deprecated. In the future those names will be standardized to + acpitable, boot, and smp respectively. + +- These previously supported command line options are now considered deprecated: + -display sdl,window_close= (use -display sdl,window-close) + -no-quit (use -display ...,window-close=off) + -chardev tty (use serial name instead) + -chardev paraport (use parallel name instead) + -device virtio-blk,scsi= (use virtio-scsi instead) + -device virtio-blk-pci,scsi= (use virtio-scsi instead) + -enable-fips (not really helpful - see https://git.qemu.org/?p=qemu.git;a=commit;h=166310299a1e7824bbff17e1f016659d18b4a559 for details) + -realtime mlock= (use -overcommit mem-lock= instead) + -spice password=string (use password-string option instead) + -writeconfig (no replacement - never really worked right) + -share and noshare must be replaced by share=on/share=off + -nodelay must be replaced by nodelay=on rather than delay=off + -object-add options opened=on and loaded=on (both had no effect) + +- These previously supported command line options are no longer supported: + -device ide-drive (use ide-hd or ide-cd instead) + -device scsi-disk (use scsi-hd or scsi-cd instead) + +- These previously supported command line options are no longer recognized: + -balloon (use -device virtio-balloon instead) + -clock + -device ivshmem (use ivshmem-doorbell or ivshmem-plain instead) + -device pc-sysfw (no longer needed) + -device pci-assign, -device kvm-pci-assign (use -device vfio-pci instead) + -display sdl + -no-frame + -nodefconfig (use -no-user-config instead) + -realtime ... + -sdl + -show-cursor + -virtioconsole (use -device virtconsole instead) + +- The previously unsupported machine type xlnx-ep108 is no longer recognized + (used xlnx-zcu102 unstead) + +- Specifying a cpu feature with both "+feature/-feature" and "feature=on/off" + will now cause a warning. The current behavior for this combination where + "+feature/-feature" wins over "feature=on/off", will be changed going forward + so that "+feature" and "-feature" will be synonyms for "feature=on" and + "feature=off" respectively. + +- The previously supported blkdev-add QMP command has been flagged as lacking + and could possibly change syntax in the future. + +- This previously unsupported command line option is now deprecated: + -soundhw (use -device ... instead) + +- These previously unsupported command line options are no longer recognized: + -bt + -device at24c-eeprom + -device mmio_interface + -device ssi-sd + -device tpm-tis-device + -device u2f-passthru + -device vhost-user-vsock-pci-transitional + -device vhost-vsock-pci-transitional + -device virtio-iommu-pci-transitional + -enable-hax + -tb-size + -tdf + -xen-create + +- These previously supported QMP commands are now deprecated: + + +- These previously supported QMP commands are no longer recognized: + info cpustats + block_passwd + change (use blockdev-change-medium or change-vnc-password instead) + cpu-add (use device_add instead) + migrate-set-cache-size (use migrate-set-parameters instead) + migrate_set_downtime (use migrate-set-parameters instead) + migrate_set_speed (use migrate-set-parameters instead) + query-cpus (use query-cpus-fast instead) + query-events + query-migrate-cache-size (use query-migrate-parameters instead) + +- These previously supported monitor commands are now deprecated: + change + +- These previously supported monitor commands are no longer recognized: + info cpustats + block_passwd ... + cpu-add (use device_add instead) + migrate_set_cache_size + migrate_set_downtime + migrate_set_speed + pci_add (use device_add instead) + pci_del (use device_del instead) + usb_add (use device_add instead) + usb_del (use device_del instead) + +- These previously unsupported monitor command are now deprecated: + + +- These previously unsupported monitor commands are no longer recognized: + acl_add ... + acl_policy ... + acl_remove ... + acl_reset ... + acl_show ... + host_net_add + host_net_remove + +- These previously unsupported QMP commands are now supported under a new name: + x-block-dirty-bitmap-disable (use block-dirty-bitmap-disable instead) + x-block-dirty-bitmap-enable (use block-dirty-bitmap-enable instead) + x-block-dirty-bitmap-merge (use block-dirty-bitmap-merge instead) + x-block-latency-histogram-set (use block-latency-histogram-set instead) + x-blockdev-create (use blockdev-create instead) + +- This previously unsupported QMP commands is no longer recognized: + x-nbd-server-add-bitmap + +- Due to upstream's decision to no longer fully support the qed storage format + going forward (since it really provides no benefit over qcow2 and is now no + longer actively maintained upstream), creating qed storage images is no longer + supported and it is highly discouraged to continue using existing qed images. + They should instead be converted to another supported format. + +QEMU Command-Line and Monitor Syntax and Support +------------------------------------------------ + +- The QEMU program command-line syntax is as follows: + qemu-system-aarch64 [options] + + Where 'options' are taken from the options listed below. + The images used with -drive or -cdrom, may be in the raw (no format) or qcow2 + storage formats, and may be located in files within the host filesystem, + logical volumes, host physical disks, or network based storage. Read only + media may also be accessed via URL style protocol specifiers. + + Note that as a general rule, as new command line options are added which serve + to replace an older option or interface, you are strongly encouraged to adapt + your usage to the new option. The new option is being introduced to provide + better functionality and usability going forward. In some cases existing + problems or even bugs in older interfaces cannot be fixed due to functional + expectations, but are resolved in the newer interface or option. + This advice includes moving to the most recent machine type (eg virt-6.1 + instead of virt-6.0) if possible. + +- The following command line options are supported: + -accel ... + -action ... + -add-fd ... + -alt-grab + -append ... + -audio-help + -audiodev + -bios ... + -blockdev ... + -boot ... + -cdrom ... + -chardev ... + -compat ... + -cpu host + -ctrl-grab + -d ... + -daemonize + -debugcon ... + -device + + [VGA|rtl8139|virtio-net-pci|virtio-blk-pci|virtio-balloon-pci| + virtio-9p-pci|usb-hub|usb-ehci|usb-tablet|usb-storage|usb-mouse| + usb-kbd|virtserialport|virtconsole|virtio-serial-pci|i82559er| + virtio-scsi-pci|scsi-cd|scsi-hd|scsi-generic|scsi-disk|scsi-block| + pci-serial|pci-serial-2x|pci-serial-4x|ich9-ahci|usb-host|usb-serial| + usb-wacom-tablet|usb-braille|usb-net|pci-ohci|virtio-rng-pci|i6300esb| + qxl|qxl-vga|pvpanic|vfio-pci|ivshmem-doorbell|ivshmem-plain| + pci-bridge|megasas-gen2|e1000e|e1000|vmcoreinfo|pcie-pci-bridge| + vhost-user-blk|vhost-user-blk-pci|vhost-user-scsi|vhost-user-scsi-pci| + vhost-vsock-pci|virtio-crypto-pci|virtio-vga| + vhost-scsi-pci-non-transitional|vhost-scsi-pci-transitional| + vhost-user-blk-pci-non-transitional|vhost-user-blk-pci-transitional| + vhost-user-scsi-pci-non-transitional|vhost-user-scsi-pci-transitional| + vhost-vsock-pci-non-transitional|virtio-9p-pci-non-transitional| + virtio-9p-pci-transitional|virtio-balloon-pci-non-transitional| + virtio-balloon-pci-transitional|virtio-blk-pci-non-transitional| + virtio-blk-pci-transitional|virtio-input-host-pci-non-transitional| + virtio-input-host-pci-transitional|virtio-net-pci-non-transitional| + virtio-net-pci-transitional|virtio-rng-pci-non-transitional| + virtio-rng-pci-transitional|virtio-scsi-pci-non-transitional| + virtio-scsi-pci-transitional|virtio-serial-pci-non-transitional| + virtio-serial-pci-transitional|vhost-user-fs-pci|vhost-user-gpu| + vhost-user-pci-pci|vhost-user-input|vhost-user-input-pci| + vhost-user-vga|virtio-mmio|guest-loader|nvme-subsys|pvpanic-pci] + (the following are aliases of these supported devices: ahci| + virtio-blk|virtio-net|virtio-serial|virtio-balloon| virtio-9p| + virtio-input-host|virtio-keyboard|virtio-mouse|virtio-tablet| + virtio-gpu|virtio-scsi|virtio-rng|e1000-82540em) + + -dfilter range, ... + -display ... + -drive + + ... (if specified if=[virtio] and format=[qcow2|raw] and + snapshot=off only) + + -echr ... + -enable-fips + -enable-kvm + -fsdev ... + -full-screen + -fw_cfg ... + -gdb ... + -global ... + -h + -help + -incoming ... + -initrd ... + -iscsi ... + -k ... + -kernel ... + -loadvm ... + -m ... + -M [help|none|virt-2.6|virt-2.11|virtio-3.1|virt-4.2|virt-5.2|virt-6.0|virt-6.1] + -machine [help|none|virt-2.6|virt-2.11|virt-3.1|virt-4.2|virt-5.2|virt-6.0|virt-6.1] + -mem-path ... + -mem-prealloc + -mon ... + -monitor ... + -msg ... + -name ... + -net + + [bridge|l2tpv3|nic|none|tap|user] ... (for model= only e1000, rtl8139, + and virtio are supported) + + -netdev [bridge|tap|user] ... + -nic ... + -no-acpi + -nodefaults + -nographic + -no-quit + -no-reboot + -no-shutdown + -no-user-config + -object ... + -only-migratable + -parallel ... + -pidfile ... + -plugin ... + -qmp ... + -qmp-pretty ... + -readconfig ... + -rtc ... + -runas ... + -s + -S + -sandbox ... + -seed ... + -serial ... + -smbios ... + -smp ... + -spice + -tpmdev passthrough ... + -trace ... + -usb + -usbdevice [braile|disk|host|mouse|net|serial|tablet] + -uuid ... + -version + -vga [none|qxl|std|virtio] + -virtfs ... + -vnc ... + -watchdog ... + -watchdog-action ... + -writeconfig ... + +- The following monitor commands are supported: + ? + announce_self ... + balloon ... + block_resize ... + boot_set ... + c + change ... + chardev-add ... + chardev-change ... + chardev-remove ... + chardev-send-break ... + client_migrate_info ... + closefd ... + cont + cpu ... + delvm ... + device_add ... + device_del ... + drive_add ... + drive_backup ... + drive_del ... + dump_guest_memory ... + eject ... + gdbserver ... + gpa2hpa ... + gpa2hva ... + gva2gpa ... + help + i ... + info ... + loadvm ... + logfile ... + logitem ... + mce ... + memsave ... + migrate ... + migrate_cancel + migrate_continue ... + migrate_incoming + migrate_pause + migrate_recover ... + migrate_set_capability ... + migrate_set_parameter ... + migrate_start_post_copy + mouse_button ... + mouse_move ... + mouse_set ... + nmi ... + o ... + object_add ... + object_del ... + p ... + pmemsave ... + print ... + q + qemu-io ... + qom-list + qom-set + ringbuf_read ... + ringbuf_write ... + savevm ... + screendump ... + sendkey ... + snapshot_blkdev_internal ... + snapshot_delete_blkdev_internal ... + stop + sum ... + system_powerdown + system_reset + system_wakeup + trace-event ... + watchdog_action ... + x ... + xp ... + +- The following QMP commands are supported: + add_client + add-fd + announce-self + balloon + blockdev-add + blockdev-backup + blockdev-change-medium + blockdev-close-tray + blockdev-create + blockdev-del + blockdev-mirror + blockdev-open-tray + blockdev-snapshot + blockdev-snapshot-delete-internal-sync + blockdev-snapshot-internal-sync + blockdev-snapshot-sync + block-commit + block-dirty-bitmap-add + block-dirty-bitmap-clear + block-dirty-bitmap-disable + block-dirty-bitmap-enable + block-dirty-bitmap-merge + block-dirty-bitmap-remove + block-export-add + block-export-del + block-latency-histogram-set + block_resize + block_set_io_throttle + block-set-write-threshold + block_stream + calc-dirty-rate + change-vnc-password + chardev-add + chardev-change + chardev-remove + chardev-send-break + client_migrate_info + closefd + cont + cpu + device_add + device_del + device-list-properties + display-reload + dump-guest-memory + eject + expire_password + getfd + human-monitor-command + inject-nmi + input-send-event + job-cancel + job-complete + job-dismiss + job-finalize + job-pause + job-resume + memsave + migrate + migrate_cancel + migrate-continue + migrate-incoming + migrate-pause + migrate-resume + migrate-set-capabilities + migrate-set-parameters + migrate-start-postcopy + object-add + object-del + pmemsave + qmp_capabilities + qom-get + qom-list + qom-list-types + qom-set + query-acpi-ospm-status + query-balloon + query-block + query-block-exports + query-block-jobs + query-blockstats + query-chardev + query-chardev-backends + query-command-line-options + query-commands + query-cpu-definitions + query-cpu-model-expansion + query-cpus-fast + query-current-machine + query-display-options + query-dirty-rate + query-dump + query-dump-guest-memory-capability + query-fdsets + query-gic-capabilities + query-hotpluggable-cpus + query-iothreads + query-jobs + query-kvm + query-machines + query-memdev + query-memory-devices + query-memory-size-summary + query-mice + query-migrate + query-migrate-capabilities + query-migrate-parameters + query-name + query-named-block-nodes + query-pci + query-pr-managers + query-qmp-schema + query-rocker + query-rocker-of-dpa-flows + query-rocker-of-dpa-groups + query-rocker-ports + query-rx-filter + query-spice + query-status + query-target + query-tpm + query-tpm-models + query-tpm-types + query-uuid + query-version + query-vnc + query-vnc-servers + query-yank + query-xen-replication-status + quit + remove-fd + ringbuf-read + ringbuf-write + screendump + send-key + set-action + set_link + set_password + snapshot-delete + snapshot-load + snapshot-save + stop + system_powerdown + system_reset + system_wakeup + trace-event-get-state + trace-event-set-state + transaction + watchdog-set-action + yank + +- The following command line options are unsupported: + + -acpitable ... + -chroot ... + -cpu ... (all except host) + -curses + -device + + [160s33b|320s33b|640s33b|a15mpcore_priv|a9mpcore_priv|a9-scu|adlib| + ads7846|allwinner-a10|allwinner-a10-pic|allwinner-A10-timer| + allwinner-emac|amd-iommu|AMDVI-PCI|arm1026-arm-cpu|arm1136-arm-cpu| + arm1136-r2-arm-cpu|arm1176-arm-cpu|arm11mpcore-arm-cpu| + arm11mpcore_priv|arm11-scu|arm926-arm-cpu|arm946-arm-cpu| + arm.cortex-a9-global-timer|arm_gic|arm-gicv2m| + arm_mptimer|armv7m_nvic|aspeed.timer|aspeed.vic|ast2400| + at25128a-nonjedec|at25256a-nonjedec|at25df041a|at25df321a|at25df641| + at25fs010|at25fs040|at26df081a|at26df161a|at26df321|at26f004| + at45db081d|bcm2835-aux|bcm2835-dma|bcm2835-fb|bcm2835-ic|bcm2835-mbox| + bcm2835-peripherals|bcm2835-property|bcm2836|bcm2836-control| + bochs-display|cadence_gem|cadence_ttc|cadence_uart|ccid-card-emulated| + ccid-card-passthru|cfi.pflash02|cirrus-vga|cmsdk-apb-dualtimer| + cmsdk-apb-watchdog|corgi-ssp|cortex-a15-arm-cpu|cortex-a53-arm-cpu| + cortex-a57-arm-cpu|cortex-a72-arm-cpu|cortex-a8-arm-cpu| + cortex-a9-arm-cpu|cortex-m0-arm-cpu|cortex-m3-arm-cpu| + cortex-m4-arm-cpu|cortex-r5-arm-cpu|cs4231a|digic|digic-timer| + digic-uart|ds1338|dscm1xxxx|e1000|en25f32|en25p32|en25p64|en25q32b| + en25q64|exynos4210.combiner|exynos4210-ehci-usb|exynos4210.fimd| + exynos4210.gic|exynos4210.i2c|exynos4210.irq_gate|exynos4210.mct| + exynos4210.pmu|exynos4210.pwm|exynos4210.rtc|exynos4210.uart|floppy| + fslimx25|fslimx31|fusbh200-ehci-usb|fw_cfg|gd25q32|gd25q64| + gpex-pcihost|gpex-root|gpio_i2c|gpio-key|gus|hyperv-testdev| + highbank-regs|host-arm-cpu|*-i386-cpu|i8042|ib700|icp-ctrl-regs| + igd-passthrough-isa-bridge|imx25.ccm|imx31.ccm|imx6.ccm|imx.avic| + imx.epit|imx.fec|imx.gpio|imx.gpt|imx.i2c|imx.serial|imx6ul.ccm| + integrator_core|integrator_debug|integrator_pic|integrator_pit| + intel_iommu|iotkit-sysctl|iotkit-sysinfo|ipmi-bmc-extern|ipmi-bmc-sim| + isa-applesmc|isa-cirrus-vga|isa-debugcon|isa-debug-exit|isa-fdc| + isa-ide|isa-ipmi-bt|isa-ipmi-kcs|isa-parallel|isa-vga|kvaser_pci| + kvm-arm-gic|kvm-arm-gicv3|l2x0|lan9118|lm8323|loader|lsi53c810a| + lsi53c895a|m25p05|m25p10|m25p128|m25p16|m25p20|m25p32|m25p40|m25p64| + m25p80|m25pe16|m25pe20|m25pe80|m25px32|m25px32-s0|m25px32-s1|m25px64| + m45pe10|m45pe16|m45pe80|mainstone-fpga|max1110|max1111|max7310| + mioe3680_pci|msf2-soc|msf2-sysreg|mss-sp1|mss-timer|musicpal_gpio| + musicpal_key|musicpal_lcd|musicpal-misc|mv88w8618_audio|mv88w8618_eth| + mv88w8618_flashcfg|mv88w8618_pic|mv88w8618_pit|mv88w8618_wlan| + mx25l12805d|mx25l12855e|mx25l1606e|mx25l2005a|mx25l25635e|mx25l25655e| + mx25l3205d|mx25l4005a|mx25l6405d|mx25l8005|n25q032|n25q032a11| + n25q032a13|n25q064|n25q064a11|n25q064a13|n25q128|n25q128a11| + n25q128a13|n25q256a|n25q256a11|n25q256a13|n25q512a|n25q512a11| + n25q512a13|nand|ne2k_isa|nrf51-soc|nrf51_soc.uart|nvdimm|omap2-gpio| + omap2-intc|omap-gpio|omap_i2c|omap-intc|onenand|pc-dimm|pc-testdev| + piix3-ide|piix3-ide|piix3-ide-xen|piix3-usb-uhci|pl011|pl011_luminary| + pl022|pl031|pl041|pl050_keyboard|pl050_mouse|pl061|pl061_luminary| + pl080|pl081|pl110|pl110_versatile|pl111|pl181|pl190|pl330| + platform-bus-device|pvrdma|pxa250-arm-cpu|pxa255-arm-cpu|pxa25x-timer| + pxa260-arm-cpu|pxa261-arm-cpu|pxa262-arm-cpu|pxa270-a0-arm-cpu| + pxa270-a1-arm-cpu|pxa270-arm-cpu|pxa270-b0-arm-cpu|pxa270-b1-arm-cpu| + pxa270-c0-arm-cpu|pxa270-c5-arm-cpu|pxa27x-timer|pxa2xx-dma| + pxa2xx-fir|pxa2xx-gpio|pxa2xx_i2c|pxa2xx-i2c-slave|pxa2xx-mmci| + pxa2xx-pcmcia|pxa2xx_pic|pxa2xx_rtc|pxa2xx-ssp|ramfb|realview_gic| + realview_mpcore|realview_pci|realview_sysctl|s25fl016k|s25fl064k| + s25fl129p0|s25fl129p1|s25fl256s0|s25fl256s1|s25fl512s|s25sl004a| + s25sl008a|s25sl016a|s25sl032a|s25sl032p|s25sl064a|s25sl064p| + s25sl12800|s25sl12801|s70fl01gs|sa1100-arm-cpu|sa1110-arm-cpu|sb16| + scoop|sdhci-pci|sga|sii9022|sl-nand|smbus-eeprom|smc91c111|sp804| + spitz-keyboard|spitz-lcdtg|ssd0303|ssd0323|sst25vf016b|sst25vf032b| + sst25vf040b|sst25vf080b|sst25wf010|sst25wf020|sst25wf040| sst25wf080| + sst25wf512|stellaris-adc|stellaris_enet|stellaris-gptm|stellaris-i2c| + stm32f205-soc|stm32f2xx-syscfg|stm32f2xx-timer|stm32f2xx-usart| + strongarm-gpio|strongarm_pic|strongarm-ppc|strongarm-rtc| + strongarm-ssp|strongarm-uart|tegra2-ehci-usb|ti925t-arm-cpu|tmp105| + tosa_dac|tosa-ssp|tusb6010|twl92230|tz-msc|usb-redir|versatile_i2c| + versatilepb_sic|versatile_pci|versatile_pci_host|vfio-pci-nohotplug| + vfio-platform|vhost-vsock-device|virtconsole|virtio-crypto-device| + vmgenid|vmware-svga|w25q256|w25q32|w25q32dw|w25q64|w25q80|w25q80bl| + w25x10|w25x16|w25x20|w25x32|w25x40|w25x64|w25x80|wm8750|*-x86_64-cpu| + xen-backend|xen-pci-passthrough|xen-platform|xen-pvdevice|xgmac| + xilinxzynq_slcr|xlnx-versal|xlnx.ps7-qspi|xlnx.ps7-spi|xlnxzynqmp| + xlnxzynq-xadc|armsse-cpuid|armsse-mhu|cpu-cluster|luminary-watchdog| + microbit.i2c|nrf51_soc.gpio|nrf51_soc.nvm|nrf51_soc.rng| + nrf51_soc.timer|platform-ehci-usb|sse-200|vmware-svga|vmxnet3|ati-vga| + cirrus-vga|vhost-user-fs-device|tulip|ati-vga|aw-hc-ehci-usb| + virtio-iommu-device|virtio-iommu-pci| + virtio-iommu-pci-non-transitional|cortex-m7-arm-cpu|allwinner-cpucfg| + allwinner-h3|allwinner-h3-ccu|allwinner-h3-dramc|allwinner-h3-sysctrl| + allwinner-rtc-sun4i|allwinner-rtc-sun6i|allwinner-rtc-sun7i| + allwinner-sdhost-sun4i|allwinner-sdhost-sun5i|allwinner-sid| + allwinner-sun8i-emac|imx.rngc|imx.usbphy|serial|serial-io| + stm32f405-soc|stm32f4xx-exti|stm32f4xx-syscfg|nvdimm| + vhost-user-vsock-device|vhost-user-vsock-pci| + vhost-user-vsock-pci-non-transitional|nvme-ns|ads7846|led|ssd0323| + vhost-user-vga|ctucan_pci|bcm2835-cprman-clock-mux| + bcm2835-cprman-cprman-dsi0hsck-mux|bcm2835-cprman-cprman-pll| + bcm2835-cprman-cprman-pll-channel|mt25ql512ab|mx66l5123f|n25q512ax3| + ssd0323|at24c-eeprom|emc1413|emc1414|is25lp016d|is25lp032|is25lp064| + is25lp080d|is25lp128|is25lp256|is25lq040b|is25wp032|is25wp064| + is25wp128|is25wp256|npcm7xx-clock-divider|npcm7xx-clock-pll| + npcm7xx-clock-sel] + (the following are aliases of these unsupported devices: lsi| + piix3-usb-uhci) + (note that some of these device names represent supported devices and + are used internally, but are not specifyable via -device even though + they appear in the list of devices) + + -drive + + ,if=[scsi|mtd|pflash], snapshot=on, format=[anything besides qcow2 or + raw] + + -dtb file + -enable-sync-profile + -fda/-fdb ... + -g ... + -hda/-hdb/-hdc/-hdd ... + -icount ... + -L ... + -M + + [akita|ast2500-evb|ast2600-evb|borzoi|canon-a1100|cheetah|collie|connex| + cubieboard|emcraft-sf2|g220a-bmc|highbank|imx25-pdk|integratorcp|kzm| + lm3s6965evb|lm3s811evb|mainstone|mcimx6ul-evk|mcimx7d-sabre|microbit| + midway|mps2-an385|mps2-an386|mps2-an500|mps2-an505|mps2-an511|mps2-an521| + mps3-an524|mps3-an547|musca-a|musca-b1|musicpal|n800|n810|netduino2| + netduinoplus2|npcm750-evb|nuri|orangepi-pc|palmetto-bmc|quanta-gsj|raspi0| + raspi1ap|raspi2|raspi2b|raspi3ap|raspi3|raspi3b|realview-eb| + realview-eb-mpcore|realview-pb-a8|realview-pbx-a9|romulus-bmc|sabrelite| + sbsa-ref|smdkc210|sonorapass-bmc|spitz|supermicrox11-bmc|swift-bmc|sx1| + sx1-v1|tacoma-bmc|terrier|tosa|verdex|versatileab|versatilepb| + vexpress-a15|vexpress-a9|virt-2.12|virt-2.7|virt-2.8|virt-3.0|virt-4.0| + virt-4.1|virt-5.0|virt-5.1|virt-6.0|virt|virt-6.1|witherspoon-bmc| + xilinx-zynq-a9|xlnx-versal-virt|xlnx-zcu102|z2] + + -machine + + [akita|ast2500-evb|ast2600-evb|borzoi|canon-a1100|cheetah|collie| + connex|cubieboard|emcraft-sf2|g220a-bmc|highbank|imx25-pdk| + integratorcp|kzm|lm3s6965evb|lm3s811evb|mainstone|mcimx6ul-evk| + mcimx7d-sabre|microbit|midway|mps2-an385|mps2-an386|mps2-an500| + mps2-an505|mps2-an511|mps2-an521|mps3-an524|mps3-an547|musca-a| + musca-b1|musicpal|n800|n810|netduino2|netduinoplus2|npcm750-evb| + nuri|orangepi-pc|palmetto-bmc|quanta-gsj|raspi0|raspi1ap|raspi2| + raspi2b|raspi3ap|raspi3|raspi3b|realview-eb|realview-eb-mpcore| + realview-pb-a8|realview-pbx-a9|romulus-bmc|sabrelite|sbsa-ref| + smdkc210|sonorapass-bmc|spitz|supermicrox11-bmc|swift-bmc|sx1| + sx1-v1|tacoma-bmc|terrier|tosa|verdex|versatileab|versatilepb| + vexpress-a15|vexpress-a9|virt-2.12|virt-2.7|virt-2.8|virt-3.0| + virt-4.0|virt-4.1|virt-5.0|virt-5.1|virt-6.0|virt|virt-6.1| + witherspoon-bmc|xilinx-zynq-a9|xlnx-versal-virt|xlnx-zcu102|z2] + + -mtdblock file + -net [socket|vde] ... + -netdev [hubport|l2tpv3|socket|vde] ... + -no-fd-bootchk + -no-hpet + -no-kvm + -no-kvm-irqchip + -no-kvm-pit + -no-kvm-pit-reinjection + -numa cpu ... + -numa dist ... + -numa node ... + -option-rom ... + -overcommit ... + -pflash file + -portrait + -preconfig + -prom-env ... + -qtest ... + -qtest-log ... + -rotate + -sd file + -sdl + -set ... + -singlestep + -snapshot + -soundhw ... + -tpmdev emulator ... + -vga [cg3|tcx|virtio|cirrus|xenfb] + -win2k-hack + -xen-attach ... + -xen-domid ... + -xen-domid-restrict ... + +- The following monitor commands are unsupported: + block_job_cancel ... + block_job_complete ... + block_job_pause ... + block_job_resume ... + block_job_set_speed ... + commit ... + drive_mirror ... + exit_preconfig + expire_password ... + hostfwd_add ... + hostfwd_remove ... + nbd_server_add ... + nbd server_start ... + nbd_server_stop ... + netdev_add + netdev_del ... + pcie_aer_inject_error ... + replay_break ... + replay_delete_break + replay_seek ... + set_link ... + set_password ... + singlestep ... + snapshot_blkdev ... + stopcapture ... + sync-profile ... + wavcapture ... + x_colo_lost_heartbeat + +- The following QMP commands are unsupported: + block-job-cancel + block-job-complete + block-job-pause + block-job-resume + block-job-set-speed + change-backing-file + drive-backup + drive-mirror + netdev_add + netdev_del + nbd-server-add + nbd-server-start + nbd-server-stop + query-colo-status + replay_break + replay_delete_break + replay_seek + x-blockdev-amend + x-blockdev-change + x-blockdev-insert-medium + x-blockdev-remove-medium + x-blockdev-reopen + x-colo-lost-heartbeat + x-debug-block-dirty-bitmap-sha256 + x-debug-query-block-graph + x-exit-preconfig + xen-colo-do-checkpoint + xen-load-devices-state + xen-save-devices-state + xen-set-global-dirty-log + xen-set-replication diff --git a/packaging/supported.ppc.txt b/packaging/supported.ppc.txt new file mode 100644 index 000000000..ceb67674c --- /dev/null +++ b/packaging/supported.ppc.txt @@ -0,0 +1,6 @@ +[qemu-ppc package document] + +SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS +=============================================== + +QEMU/KVM on ppc is not supported. diff --git a/packaging/supported.s390.txt b/packaging/supported.s390.txt new file mode 100644 index 000000000..1441d5e42 --- /dev/null +++ b/packaging/supported.s390.txt @@ -0,0 +1,868 @@ +[qemu-s390 package document] + +SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS +=============================================== + +Overview +-------- + + The QEMU based packages included with SLES 15 SP4 provide a large variety of + features, from the very latest customer requests to features of questionable + quality or value. The linux kernel includes components which contribute KVM + virtualization features as well. This document was created to assist the user + in deciding which features can be relied upon to build enterprise class + virtualization solutions. KVM based virtualization for x86 (Intel 64/AMD64), + for IBM System z (s390x), and for the ARM64 architecture (AArch64) are offered + at the L3 (full support) level. The bulk of this document deals with L3 + supported features and is primarily s390x centric. This document should be + considered a companion to the standard virtualization documentation delivered + with the product. + + KVM is implemented in linux kernel modules which enable the linux kernel to + function as an integral part of the KVM hypervisor. The hypervisor-guest + interaction is managed by QEMU through the /dev/kvm ioctl interface. The linux + host assists in the virtualization of storage, networking and display + resources as well as allowing direct hardware passthrough of PCI devices. + Linux memory and cpu management features are used by QEMU/KVM to enable guests + to share those host resources as efficiently as possible. + + QEMU is a primary component of KVM based virtualization. The legacy qemu-kvm + program is available for continuity with pre SLES 12 usage, including in + libvirt domain xml references. The QEMU emulator binary qemu-system-s390x is + now the primary program to use to access KVM virtualization. When using this + program, the -machine option accel=kvm (or its alias -enable-kvm) or --accel + kvm option must be specified for KVM acceleration to be used by the guest. + + Libvirt is the preferred means of accessing QEMU/KVM functionality and is + documented elsewhere. This document focuses on the features and direct usage + of QEMU/KVM as provided by the QEMU based packages. + +Major QEMU/KVM Supported Features +--------------------------------- + +- KVM virtualization is accomplished by using the QEMU program in KVM + acceleration mode. KVM acceleration requires that both guest and host have + the same fundamental architecture. + +- Guest images created under previous QEMU versions are supported by machine + version compatibilities built into more recent QEMU versions. + +- For ease of use, the QEMU program has defaults which represent traditional + usage patterns. + +- Guest virtual machine characteristics are specified by a combination of + internal defaults, options provided on the QEMU program command-line, runtime + configurations set via the monitor interfaces and optional config files. The + runtime control of a VM is effected either through the Human Monitor + "Protocol" (HMP), or the JSON based programmatical QEMU Monitor Protocol (QMP) + interface. For QMP details, see qemu-qmp-ref man page. + Since a KVM guest runs in the context of a normal linux process, some types + of execution controls are managed with linux tools. + +- QEMU incorporates virtualized, s390 specific, ccw bus based firmware for + booting s390 guests. This firmware is automatically incorporated and + doesn't need to be explicitly referenced. + +- Some QEMU messages have been localized to various languages. This is provided + by the optional qemu-lang package. Keyboard mappings for various nationalities + is also provided. + +- Virtual machine lifecycle controls include startup through the ccw firmware or + kernel boot, firmware based shutdown, execution pausing, the saving and + restoring of machine state or disk state, VM migration to another host, and + miscellaneous controls available through the "monitors" mentioned above. + +- Guest execution state may be "moved" in both time (save/restore) and space + (static and live migration). These migrations or save/restore operations can + take place either from certain prior SLES versioned hosts to a SLES 15 SP4 + host or between hosts of the same version. Certain other restrictions also + apply. + +- Security considerations include privileged helpers and a security model which + allows running guests as a non-root user. + +- QEMU provides best effort reuse of existing disk images, including those with + systems installed, through geometry probing. Also disk images produced by + other popular virtualization technologies may be imported into QEMU supported + storage formats. These QEMU formats include features which exploit the + benefits of virtualization. + +- Memory, cpu and disk space overcommit are possible and can be beneficial when + done responsibly. Additional management of these resources comes in the form + of memory ballooning or hotplug, host KSM, vcpu hot-add, online disk resizing, + trim, discard and hole punching. + +- Guest performance is enhanced through the use of virtio devices, various disk + caching modes, network acceleration via the vhost-net kernel module, multi- + queue network transmit capabilities, host transparent huge pages (THP) and + direct hugetlb usage. Physical PCI devices may also be passed through to the + guest, including SR-IOV VF's. + +- The guest UI is accessable via GTK, VNC, and serial (including curses TUI) + interfaces. + +- Guest timekeeping is supported in a variety of ways, including a paravirtual + clocksource, and options for the various guest clocks for how to handle the + timeslicing of the guest's execution on the host. + +- In addition to the para-virtualized devices already mentioned, other devices + and infrastructure designed to avoid virtualization "problem areas" are + available such as SPICE graphics, vmmouse emulation, tablet style pointer + interfaces and virtio based UI interfaces. + +- A built-in user-mode network (SLIRP) stack is available. + +- Portions of the host file system may be shared with a guest by using virtFS. + +- A guest "agent" is available for SLES 15 SP4 KVM guests via the + qemu-guest-agent package. This allows some introspection and control of the + guest OS environment from the host. + +QEMU/KVM Technology Previews +---------------------------- + +- All features indicated as not being supported in this document fall under the + Technology Preview definition contained in the main product's release notes. + +Noteworthy QEMU/KVM Unsupported Features +---------------------------------------- + +- Note that some features are unsupported simply due to lack of validation. If + an existing feature is desired, but not marked supported, let SUSE know about + your requirements. + +- The TCG "acceleration" mode may be helpful for problem isolation, but + otherwise presents insufficient benefit and stability. + +- GlusterFS integration is not enabled. + +Deprecated, Superseded, Modified and Dropped Features +----------------------------------------------------- + +- https://qemu-project.gitlab.io/qemu/about/deprecated.html and + https://qemu-project.gitlab.io/qemu/about/removed-features.html + These websites track features deprecation and removal at the upstream + development level. Our qemu package inherits this community direction, but be + aware that we can and will deviate as needed. Those deviations and additional + information can be found in this section. Feature deprecation as well as + removed features are also tracked in the "System Emulation" section of the + documentation installed with the qemu package. + +- qemu-img: Deprecate use of -b without -F. Creating an image that requires + format probing of the backing image is potentially unsafe and is now + deprecated. + +- The previously non-persistent backing file with pmem=on is deprecated. Modify + VM configuration to set pmem=off to continue using fake NVDIMM with backing + file or move backing file to NVDIMM storage and keep pmem=on. + +- The use of "?" as a parameter to "-cpu", "-soundhw", "-device", "-M", + "-machine" and "-d" is now considered deprecated. Use "help" + instead. + +- The use of "if=scsi" as a parameter to "-drive" does not work anymore with PC + machine types, as it created an obsolete SCSI controller model. + +- Use of aio=native without direct cache mode also being specified (cache=none, + cache=directsync, or cache.direct=on) is no longer allowed. + +- The use of image encryption in qcow and qcow2 formats is now considered + deprecated. + Analysis has shown it to be weak encryption, in addition to suffering from + poor design. Images can easily be converted to a non-encrypted format. + +- Use of acpi, boot-opts, and smp-opts in a -readconfig config file are now + considered deprecated. In the future those names will be standardized to + acpitable, boot, and smp respectively. + +- These previously supported command line options are now considered deprecated: + -display sdl,window_close= (use -display sdl,window-close) + -no-quit (use -display ...,window-close=off) + -chardev tty (use serial name instead) + -chardev paraport (use parallel name instead) + -device virtio-blk,scsi= (use virtio-scsi instead) + -device virtio-blk-pci,scsi= (use virtio-scsi instead) + -enable-fips (not really helpful - see https://git.qemu.org/?p=qemu.git;a=commit;h=166310299a1e7824bbff17e1f016659d18b4a559 for details) + -realtime mlock= (use -overcommit mem-lock= instead) + -spice password=string (use password-string option instead) + -writeconfig (no replacement - never really worked right) + -share and noshare must be replaced by share=on/share=off + -nodelay must be replaced by nodelay=on rather than delay=off + -object-add options opened=on and loaded=on (both had no effect) + +- These previously supported command line options are no longer supported: + + +- These previously supported command line options are no longer recognized: + -balloon (use -device virtio-balloon instead) + -clock + -device ivshmem (use ivshmem-doorbell or ivshmem-plain instead) + -device pc-sysfw (no longer needed) + -device pci-assign, -device kvm-pci-assign (use -device vfio-pci instead) + -display sdl + -no-frame + -nodefconfig (use -no-user-config instead) + -realtime ... + -sdl + -show-cursor + -virtioconsole (use -device virtconsole instead) + +- Specifying a cpu feature with both "+feature/-feature" and "feature=on/off" + will now cause a warning. The current behavior for this combination where + "+feature/-feature" wins over "feature=on/off", will be changed going forward + so that "+feature" and "-feature" will be synonyms for "feature=on" and + "feature=off" respectively. + +- The previously supported blkdev-add QMP command has been flagged as lacking + and could possibly change syntax in the future. + +- These previously unsupported command line options are now deprecated: + -bt + -soundhw (use -device ... instead) + +- These previously unsupported command line options are no longer recognized: + -device ide-drive (use ide-hd or ide-cd) + -device mmio_interface + -device ramfb + -device scsi-disk (use scsi-hd or scsi-cd) + -device vhost-user-vsock-pci-transitional + -device vhost-vsock-pci-transitional + -device virtio-iommu-pci-transitional + -enable-hax + -tb-size + -tdf + -xen-create + +- These previously supported QMP commands are now deprecated: + + +- These previously supported QMP commands are no longer recognized: + info cpustats + block_passwd + change (use blockdev-change-medium or change-vnc-password instead) + cpu-add (use device_add instead) + migrate-set-cache-size (use migrate-set-parameters instead) + migrate_set_downtime (use migrate-set-parameters instead) + migrate_set_speed (use migrate-set-parameters instead) + query-cpus (use query-cpus-fast instead) + query-events + query-migrate-cache-size (use query-migrate-parameters instead) + +- These previously supported monitor commands are now deprecated: + change + +- These previously supported monitor commands are no longer recognized: + info cpustats + block_passwd ... + cpu-add (use device_add instead) + migrate_set_cache_size + migrate_set_downtime + migrate_set_speed + pci_add (use device_add instead) + pci_del (use device_del instead) + +- These previously unsupported monitor command are now deprecated: + + +- These previously unsupported monitor commands are no longer recognized: + acl_add ... + acl_policy ... + acl_remove ... + acl_reset ... + acl_show ... + host_net_add + host_net_remove + usb_add + usb_del + +- These previously unsupported QMP commands are now supported under a new name: + x-block-dirty-bitmap-disable (use block-dirty-bitmap-disable instead) + x-block-dirty-bitmap-enable (use block-dirty-bitmap-enable instead) + x-block-dirty-bitmap-merge (use block-dirty-bitmap-merge instead) + x-block-latency-histogram-set (use block-latency-histogram-set instead) + x-blockdev-create (use blockdev-create instead) + +- This previously unsupported QMP commands is no longer recognized: + x-nbd-server-add-bitmap + +- Due to upstream's decision to no longer fully support the qed storage format + going forward (since it really provides no benefit over qcow2 and is now no + longer actively maintained upstream), creating qed storage images is no longer + supported and it is highly discouraged to continue using existing qed images. + They should instead be converted to another supported format. + +QEMU Command-Line and Monitor Syntax and Support +------------------------------------------------ + +- The QEMU program command-line syntax is as follows: + qemu-system-s390x [options] + + Where 'options' are taken from the options listed below. + The images used with -drive or -cdrom, may be in the raw (no format) or qcow2 + storage formats, and may be located in files within the host filesystem, + logical volumes, host physical disks, or network based storage. Read only + media may also be accessed via URL style protocol specifiers. + + Note that as a general rule, as new command line options are added which serve + to replace an older option or interface, you are strongly encouraged to adapt + your usage to the new option. The new option is being introduced to provide + better functionality and usability going forward. In some cases existing + problems or even bugs in older interfaces cannot be fixed due to functional + expectations, but are resolved in the newer interface or option. + This advice includes moving to the most recent machine type (eg + s390-ccw-virtio-6.1 instead of s390-ccw-virtio-6.0) if possible. + +- The following command line options are supported: + -accel ... + -action ... + -add-fd ... + -alt-grab + -append ... + -audio-help + -audiodev + -bios ... + -blockdev ... + -boot ... + -cdrom ... + -chardev ... + -compat ... + -cpu host + -ctrl-grab + -d ... + -daemonize + -debugcon ... + -device + + [virtio-net-pci|virtio-blk-pci|virtio-balloon-pci|virtserialport| + virtconsole|virtio-serial-pci|virtio-scsi-pci|scsi-cd|scsi-hd| + scsi-generic|scsi-block|virtio-rng-pci|pci-bridge|megasas-gen2|e1000e| + e1000|zpci|virtio-gpu-ccw|virtio-keyboard-ccw|vhost-user-blk-pci| + vhost-user-scsi|vhost-user-scsi-pci|vhost-vsock-ccw| + virtio-balloon-ccw|virtio-blk-ccw|vhost-scsi-ccw|vhost-user-blk| + virtio-crypto-ccw|virtio-net-ccw|virtio-rng-ccw|virtio-scsi-ccw| + virtio-serial-ccw|virtio-mouse-ccw|virtio-tablet-ccw|vfio-pci| + virtio-vga|vhost-scsi-pci-non-transitional| + vhost-scsi-pci-transitional|vhost-user-blk-pci-non-transitional| + vhost-user-blk-pci-transitional|vhost-user-scsi-pci-non-transitional| + vhost-user-scsi-pci-transitional|vhost-vsock-pci-non-transitional| + virtio-9p-ccw|virtio-9p-pci-non-transitional| + virtio-9p-pci-transitional|virtio-balloon-pci-non-transitional| + virtio-balloon-pci-transitional|virtio-blk-pci-non-transitional| + virtio-blk-pci-transitional|virtio-input-host-pci-non-transitional| + virtio-input-host-pci-transitional|virtio-net-pci-non-transitional| + virtio-net-pci-transitional|virtio-rng-pci-non-transitional| + virtio-rng-pci-transitional|virtio-scsi-pci-non-transitional| + virtio-scsi-pci-transitional|virtio-serial-pci-non-transitional| + virtio-serial-pci-transitional|vhost-user-fs-pci|vhost-user-gpu| + vhost-user-pci-pci|vhost-user-input|vhost-user-input-pci| + vhost-user-vga] + (the following are aliases of these supported devices: virtio-blk| + virtio-input-host|virtio-keyboard|virtio-mouse|virtio-tablet| + virtio-gpu|virtio-9p|virtio-net|virtio-serial|virtio-balloon| + virtio-scsi|virtio-rng) + + -dfilter range, ... + -display ... + -drive + + ... (if specified if=[virtio] and format=[qcow2|raw] and + snapshot=off only) + + -echr ... + -enable-fips + -enable-kvm + -fsdev ... + -full-screen + -fw_cfg ... + -gdb ... + -global ... + -h + -help + -incoming ... + -initrd ... + -iscsi ... + -k ... + -kernel ... + -loadvm ... + -m ... + -M + + [help|?|none|s390-ccw-virtio-2.6|s390-ccw-virtio-2.9|s390-ccw-virtio-2.11| + s390-ccw-virtio-3.1|s390-ccw-virtio-4.2|s390-ccw-virtio-5.2] + + -machine + + [help|?|none|s390-ccw-virtio-2.6|s390-ccw-virtio-2.9| + s390-ccw-virtio-2.11|s390-ccw-virtio-3.1|s390-ccw-virtio-4.2| + s390-ccw-virtio-5.2] + + -mem-path ... + -mem-prealloc + -mon ... + -monitor ... + -msg ... + -name ... + -net + + [bridge|l2tpv3|nic|none|tap|user] ... (for model= only e1000, rtl8139, + and virtio are supported) + + -netdev [bridge|tap|user] ... + -nic ... + -nodefaults + -nographic + -no-quit + -no-reboot + -no-shutdown + -no-user-config + -object ... + -only-migratable + -parallel ... + -pidfile ... + -plugin ... + -qmp ... + -qmp-pretty ... + -readconfig ... + -rtc ... + -runas ... + -s + -S + -sandbox ... + -seed ... + -serial ... + -smp ... + -trace ... + -uuid ... + -version + -vga [none|qxl|std] + -virtfs ... + -vnc ... + -watchdog ... + -watchdog-action ... + -writeconfig ... + +- The following monitor commands are supported: + ? + announce_self ... + balloon ... + block_resize ... + boot_set ... + c + change ... + chardev-add ... + chardev-change ... + chardev-remove ... + chardev-send-break ... + client_migrate_info ... + closefd ... + cont + cpu ... + delvm ... + device_add ... + device_del ... + drive_add ... + drive_backup ... + drive_del ... + dump_guest_memory ... + eject ... + gdbserver ... + gpa2hpa ... + gpa2hva ... + gva2gpa ... + help + i ... + info ... + loadvm ... + logfile ... + logitem ... + mce ... + memsave ... + migrate ... + migrate_cancel + migrate_continue ... + migrate_incoming + migrate_pause + migrate_recover ... + migrate_set_capability ... + migrate_set_parameter ... + migrate_start_post_copy + mouse_button ... + mouse_move ... + mouse_set ... + nmi ... + o ... + object_add ... + object_del ... + p ... + pmemsave ... + print ... + q + qemu-io ... + qom-list + qom-set + ringbuf_read ... + ringbuf_write ... + savevm ... + screendump ... + sendkey ... + snapshot_blkdev_internal ... + snapshot_delete_blkdev_internal ... + stop + sum ... + system_powerdown + system_reset + system_wakeup + trace-event ... + watchdog_action ... + x ... + xp ... + +- The following QMP commands are supported: + add_client + add-fd + announce-self + balloon + blockdev-add + blockdev-backup + blockdev-change-medium + blockdev-close-tray + blockdev-create + blockdev-del + blockdev-mirror + blockdev-open-tray + blockdev-snapshot + blockdev-snapshot-delete-internal-sync + blockdev-snapshot-internal-sync + blockdev-snapshot-sync + block-commit + block-dirty-bitmap-add + block-dirty-bitmap-clear + block-dirty-bitmap-disable + block-dirty-bitmap-enable + block-dirty-bitmap-merge + block-dirty-bitmap-remove + block-export-add + block-export-del + block-latency-histogram-set + block_resize + block_set_io_throttle + block-set-write-threshold + block_stream + calc-dirty-rate + change-vnc-password + chardev-add + chardev-change + chardev-remove + chardev-send-break + client_migrate_info + closefd + cont + cpu + device_add + device_del + device-list-properties + display-reload + dump-guest-memory + eject + expire_password + getfd + human-monitor-command + inject-nmi + input-send-event + job-cancel + job-complete + job-dismiss + job-finalize + job-pause + job-resume + memsave + migrate + migrate_cancel + migrate-continue + migrate-incoming + migrate-pause + migrate-resume + migrate-set-capabilities + migrate-set-parameters + migrate-start-postcopy + object-add + object-del + pmemsave + qmp_capabilities + qom-get + qom-list + qom-list-types + qom-set + query-acpi-ospm-status + query-balloon + query-block + query-block-exports + query-block-jobs + query-blockstats + query-chardev + query-chardev-backends + query-command-line-options + query-commands + query-cpu-definitions + query-cpu-model-baseline + query-cpu-model-comparison + query-cpu-model-expansion + query-cpus-fast + query-current-machine + query-dirty-rate + query-display-options + query-dump + query-dump-guest-memory-capability + query-fdsets + query-gic-capabilities + query-hotpluggable-cpus + query-iothreads + query-jobs + query-kvm + query-machines + query-memdev + query-memory-devices + query-memory-size-summary + query-mice + query-migrate + query-migrate-capabilities + query-migrate-parameters + query-name + query-named-block-nodes + query-pci + query-pr-managers + query-qmp-schema + query-rocker + query-rocker-of-dpa-flows + query-rocker-of-dpa-groups + query-rocker-ports + query-rx-filter + query-spice + query-status + query-target + query-uuid + query-version + query-vnc + query-vnc-servers + query-yank + query-xen-replication-status + quit + remove-fd + ringbuf-read + ringbuf-write + screendump + send-key + set-action + set_link + set_password + snapshot-delete + snapshot-load + snapshot-save + stop + system_powerdown + system_reset + system_wakeup + trace-event-get-state + trace-event-set-state + transaction + watchdog-set-action + yank + +- The following command line options are unsupported: + + -acpitable ... + -chroot ... + -cpu ... (all except host) + -curses + -device + + [AC97|adlib|am53c974|amd-iommu|AMDVI-PCI|ccid-card-emulated| + ccid-card-passthrough|cirrus-vga|cs4231a|dc390|diag288|e1000-82544gc| + e1000-82545em|edu|ES1370|floppy|generic-sdhci|gus|hda-duplex| + hda-micro|hda-output|hyperv-testdev|*-i386-cpu|i8042|i82550|i82551| + i82557a|i82557b|i82557c|i82558a|i82558b|i82559a|i82559b|i82559c| + i82562|i82801|i82801b11-bridge|ib700|ich9-intel-hda|ich9-usb-ehci1| + ich9-usb-ehci2|ich9-usb-uhci1|ich9-usb-uhci2|ich9-usb-uhci3| + ich9-usb-uhci4|ich9-usb-uhci5|ich9-usb-uhci6|ide-cd|ide-drive|ide-hd| + igd-passthrough-isa-bridge|intel-hda|intel_iommu|ioh3420| + ipmi-bmc-extern|ipmi-bmc-sim|ipoctal232|isa-applesmc|isa-cirrus-vga| + isa-debugcon|isa-debug-exit|isa-fdc|isa-ide|isa-ipmi-bt|isa-ipmi-kcs| + isa-parallel|isa-serial|isa-vga|lsi53c810|lsi53c810a|max-s390x-cpu| + megasas|mptsas1068|ne2k_isa|ne2k_pci|nec-usb-xhci|nvdimm|nvme|pc-dimm| + pci-testdev|pcnet|pc-testdev|piix3-ide|piix3-ide|piix3-ide-xen| + piix4-usb-uhci|pvscsi|pxb|pxb-host|pxb-pcie|qemu-s390-cpu|rocker| + s390-flic|s390-flic-qemu|s390-ipl|s390-pcihost| + s390-sclp-event-facility|s390-skeys-qemu|sb16|sclp|sclpconsole| + sclp-cpu-hotplug|sclplmconsole|sclp-memory-hotplug-dev|sclpquiesce| + sd-card|sdhci-pci|secondary-vga|sga|smbus-eeprom|tpci200|usb-audio| + usb-bot|usb-ccid|usb-mtp|usb-uas|vfio-ap|vfio-pci-nohotplug| + virtio-9p-device|virtual-css-bridge|vmcoreinfo|vmgenid|vmware-svga| + vmxnet3|vt82c686b-usb-uhci|x3130-upstream|*-x86_64-cpu|xen-backend| + xen-pci-passthrough|xen-platform|xen-pvdevice|xio3130-downstream| + z10BC.2-base-s390x-cpu|z10BC.2-s390x-cpu|z10BC-base-s390x-cpu| + z10BC-s390x-cpu|z10EC.2-base-s390x-cpu|z10EC.2-s390x-cpu| + z10EC.3-base-s390x-cpu|z10EC.3-s390x-cpu|z10EC-base-s390x-cpu| + z10EC-s390x-cpu|z114-base-s390x-cpu|z114-s390x-cpu| + z13.2-base-s390x-cpu|z13.2-s390x-cpu|z13-base-s390x-cpu|z13-s390x-cpu| + z13s-base-s390x-cpu|z13s-s390x-cpu|z196.2-base-s390x-cpu| + z196.2-s390x-cpu|z196-base-s390x-cpu|z196-s390x-cpu| + z800-base-s390x-cpu|z800-s390x-cpu|z890.2-base-s390x-cpu| + z890.2-s390x-cpu|z890.3-base-s390x-cpu|z890.3-s390x-cpu| + z890-base-s390x-cpu|z890-s390x-cpu|z900.2-base-s390x-cpu| + z900.2-s390x-cpu|z900.3-base-s390x-cpu|z900.3-s390x-cpu| + z900-base-s390x-cpu|z900-s390x-cpu|z990.2-base-s390x-cpu| + z990.2-s390x-cpu|z990.3-base-s390x-cpu|z990.3-s390x-cpu| + z990.4-base-s390x-cpu|z990.4-s390x-cpu|z990.5-base-s390x-cpu| + z990.5-s390x-cpu|z990-base-s390x-cpu|z990-s390x-cpu| + z9BC.2-base-s390x-cpu|z9BC.2-s390x-cpu|z9BC-base-s390x-cpu| + z9BC-s390x-cpu|z9EC.2-base-s390x-cpu|z9EC.2-s390x-cpu| + z9EC.3-base-s390x-cpu|z9EC.3-s390x-cpu|z9EC-base-s390x-cpu| + z9EC-s390x-cpu|z14ZR1-base-s390x-cpu|z14ZR1-s390x-cpu| + zBC12-base-s390x-cpu|zBC12-s390x-cpu|zEC12.2-base-s390x-cpu| + zEC12.2-s390x-cpu|zEC12-base-s390x-cpu|zEC12-s390x-cpu|cpu-cluster| + z14.2-base-s390x-cpu|z14.2-s390x-cpu|vhost-user-fs-device| + virtio-iommu-device|virtio-iommu-pci| + virtio-iommu-pci-non-transitional|vhost-user-vsock-device| + vhost-user-vsock-pci|vhost-user-vsock-pci-non-transitional| + vhost-user-fs-ccw|guest-loader] + (the following are aliases of these unsupported devices: lsi| + ahci|e1000-82540em|vfio-ccw) + (note that some of these device names represent supported devices and + are used internally, but are not specifyable via -device even though + they appear in the list of devices) + + -drive + + ,if=[scsi|mtd|pflash], snapshot=on, format=[anything besides qcow2 or + raw] + + -dtb file + -enable-sync-profile + -fda/-fdb ... + -g ... + -hda/-hdb/-hdc/-hdd ... + -icount ... + -L ... + -M + + [s390-ccw-virtio|s390-ccw-virtio-2.4|s390-ccw-virtio-2.5| + s390-ccw-virtio-2.7|s390-ccw-virtio-2.8|s390-ccw-virtio-2.10| + s390-ccw-virtio-2.12|s390-ccw-virtio-3.0|s390-ccw-virtio-4.0| + s390-ccw-virtio-4.1|s390-ccw-virtio-5.0|s390-ccw-virtio-5.1| + s390-ccw-virtio-6.0|s390-ccw-virtio-6.1] + + -machine + + [s390-ccw-virtio|s390-ccw-virtio-2.4|s390-ccw-virtio-2.5| + s390-ccw-virtio-2.7|s390-ccw-virtio-2.8|s390-ccw-virtio-2.10| + s390-ccw-virtio-2.12|s390-ccw-virtio-3.0|s390-ccw-virtio-4.0| + s390-ccw-virtio-4.1|s390-ccw-virtio-5.0|s390-ccw-virtio-5.1| + s390-ccw-virtio-6.0|s390-ccw-virtio-6.1] + + -mtdblock file + -net [socket|vde] ... + -netdev [hubport|l2tpv3|socket|vde] ... + -no-acpi + -no-fd-bootchk + -no-hpet + -no-kvm + -no-kvm-irqchip + -no-kvm-pit + -no-kvm-pit-reinjection + -numa cpu ... + -numa dist ... + -numa node ... + -option-rom ... + -overcommit ... + -pflash file + -portrait + -preconfig + -prom-env ... + -qtest ... + -qtest-log ... + -rotate + -sd file + -sdl + -set ... + -singlestep + -smbios ... + -snapshot + -soundhw ... + -spice + -tdf + -tpmdev emulator ... + -tpmdev passthrough ... + -usb + -usbdevice [braile|disk|host|mouse|net|serial|tablet] + -vga [cg3|tcx|virtio|cirrus|xenfb|vmware] + -win2k-hack + -xen-attach ... + -xen-domid ... + -xen-domid-restrict ... + +- The following monitor commands are unsupported: + block_job_cancel ... + block_job_complete ... + block_job_pause ... + block_job_resume ... + block_job_set_speed ... + commit ... + drive_mirror ... + exit_preconfig + expire_password ... + hostfwd_add ... + hostfwd_remove ... + nbd_server_add ... + nbd server_start ... + nbd_server_stop ... + netdev_add + netdev_del ... + pcie_aer_inject_error ... + replay_break ... + replay_delete_break + replay_seek ... + set_link ... + set_password ... + singlestep ... + snapshot_blkdev ... + stopcapture ... + sync-profile ... + wavcapture ... + x_colo_lost_heartbeat + +- The following QMP commands are unsupported: + block-job-cancel + block-job-complete + block-job-pause + block-job-resume + block-job-set-speed + change-backing-file + drive-backup + drive-mirror + dump-skeys + netdev_add + netdev_del + nbd-server-add + nbd-server-start + nbd-server-stop + query-colo-status + query-tpm + query-tpm-models + query-tpm-types + replay_break + replay_delete_break + replay_seek + x-blockdev-amend + x-blockdev-change + x-blockdev-insert-medium + x-blockdev-remove-medium + x-blockdev-reopen + x-colo-lost-heartbeat + x-debug-block-dirty-bitmap-sha256 + x-debug-query-block-graph + x-exit-preconfig + xen-colo-do-checkpoint + xen-load-devices-state + xen-save-devices-state + xen-set-global-dirty-log + xen-set-replication diff --git a/packaging/supported.x86.txt b/packaging/supported.x86.txt new file mode 100644 index 000000000..bf47bb04a --- /dev/null +++ b/packaging/supported.x86.txt @@ -0,0 +1,963 @@ +[qemu-x86 package document] + +SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS +=============================================== + +Overview +-------- + + The QEMU based packages included with SLES 15 SP4 provide a large variety of + features, from the very latest customer requests to features of questionable + quality or value. The linux kernel includes components which contribute KVM + virtualization features as well. This document was created to assist the user + in deciding which features can be relied upon to build enterprise class + virtualization solutions. KVM based virtualization for x86 (Intel 64/AMD64), + for IBM System z (s390x), and for the ARM64 architecture (AArch64) are offered + at the L3 (full support) level. The bulk of this document deals with L3 + supported features and is primarily x86 centric. This document should be + considered a companion to the standard virtualization documentation delivered + with the product. + + KVM is implemented in linux kernel modules which enable the linux kernel to + function as an integral part of the KVM hypervisor. The hypervisor-guest + interaction is managed by QEMU through the /dev/kvm ioctl interface. The linux + host assists in the virtualization of storage, networking and display + resources as well as allowing direct hardware passthrough of PCI and USB + devices. Linux memory and cpu management features are used by QEMU/KVM to + enable guests to share those host resources as efficiently as possible. + + QEMU is a primary component of KVM based virtualization. The legacy qemu-kvm + program is available for continuity with pre SLES 12 usage, including in + libvirt domain xml references. The QEMU emulator binaries qemu-system-x86_64 + and qemu-system-i386 (x86 host) are now the primary programs to use to access + KVM virtualization. When using these programs, the -machine option accel=kvm + (or its alias -enable-kvm), or --accel kvm option must be specified for KVM + acceleration to be used by the guest. Although Xen uses QEMU for + virtualization as well, this document does not identify Xen supported + features. + + Libvirt is the preferred means of accessing QEMU/KVM functionality and is + documented elsewhere. This document focuses on the features and direct usage + of QEMU/KVM as provided by the QEMU based packages. + +Major QEMU/KVM Supported Features +--------------------------------- + +- KVM virtualization is accomplished by using the QEMU program in KVM + acceleration mode. KVM acceleration requires that both guest and host have + the same fundamental architecture. + +- Guest images created under previous QEMU versions are supported by machine + version compatibilities built into more recent QEMU versions. + +- For ease of use, the QEMU program has defaults which represent traditional + usage patterns. + +- Guest virtual machine characteristics are specified by a combination of + internal defaults, options provided on the QEMU program command-line, runtime + configurations set via the monitor interfaces and optional config files. The + runtime control of a VM is effected either through the Human Monitor + "Protocol" (HMP), or the JSON based programmatical QEMU Monitor Protocol (QMP) + interface. For QMP details, see qemu-qmp-ref man page. + Since a KVM guest runs in the context of a normal linux process, some types + of execution controls are managed with linux tools. + +- Various standard vCPU types are available, along with the ability to specify + individual CPU features visible to the guest. + +- QEMU incorporates a SEABIOS based system BIOS and iPXE based PXE ROMs, which + allow boot options common to physical systems, along with other features + tailored to virtualization. Various VGABIOS ROMs, also from the SEABIOS + project, are also included. A UEFI based guest boot environment is also + available by using the firmware provided by the qemu-ovmf-x86_64 package. + +- Some QEMU messages have been localized to various languages. This is provided + by the optional qemu-lang package. Keyboard mappings for various nationalities + is also provided. + +- Virtual machine lifecycle controls include startup through the system BIOS or + kernel boot, ACPI or legacy based shutdown, execution pausing, the saving and + restoring of machine state or disk state, VM migration to another host, and + miscellaneous controls available through the "monitors" mentioned above. + +- Guest execution state may be "moved" in both time (save/restore) and space + (static and live migration). These migrations or save/restore operations can + take place either from certain prior SLES versioned hosts to a SLES 15 SP4 + host or between hosts of the same version. Certain other restrictions also + apply. + +- Security considerations include seccomp2 based sandboxing, vTPM, privileged + helpers and a security model which allows running guests as a non-root user. + +- QEMU/KVM supports a wide range of operating systems within the VMs. See the + online SUSE documentation for supported OS's. Windows guests can optionally be + accelerated with QEMU/KVM provided Hyper-V hypercalls, or with paravirtual + drivers from the SUSE Virtual Machine Driver Pack. Linux includes a number of + paravirtual drivers as well. + +- QEMU provides best effort reuse of existing disk images, including those with + systems installed, through geometry probing. Also disk images produced by + other popular virtualization technologies may be imported into QEMU supported + storage formats. These QEMU formats include features which exploit the + benefits of virtualization. + +- Memory, cpu and disk space overcommit are possible and can be beneficial when + done responsibly. Additional management of these resources comes in the form + of memory ballooning or hotplug, host KSM, vcpu hot-add, online disk resizing, + trim, discard and hole punching. + +- Guest performance is enhanced through the use of virtio devices, various disk + caching modes, network acceleration via the vhost-net kernel module, multi- + queue network transmit capabilities, host transparent huge pages (THP) and + direct hugetlb usage. Physical PCI and USB devices may also be passed through + to the guest, including SR-IOV VF's. + +- The guest UI is accessable via GTK, VNC, Spice, and serial (including curses + TUI) interfaces. + +- Guest timekeeping is supported in a variety of ways, including a paravirtual + clocksource, and options for the various guest clocks for how to handle the + timeslicing of the guest's execution on the host. + +- Guest OS's interact with virtualized hardware including a choice of either + older or more recent x86 system chipsets, system devices and buses, and a + variety of common storage and networking emulated devices. SMBIOS and ACPI + table details can be customized. + +- In addition to the para-virtualized devices already mentioned, other devices + and infrastructure designed to avoid virtualization "problem areas" are + available such as SPICE graphics, vmmouse emulation, tablet style pointer + interfaces and virtio based UI interfaces. + +- A built-in user-mode network (SLIRP) stack is available. + +- Portions of the host file system may be shared with a guest by using virtFS. + +- A guest "agent" is available for SLES 15 SP4 KVM guests via the + qemu-guest-agent package. This allows some introspection and control of the + guest OS environment from the host. + +QEMU/KVM Technology Previews +---------------------------- + +- Nested VMX and SVM virtualization is possible. + +- All features indicated as not being supported in this document fall under the + Technology Preview definition contained in the main product's release notes. + +Noteworthy QEMU/KVM Unsupported Features +---------------------------------------- + +- Note that some features are unsupported simply due to lack of validation. If + an existing feature is desired, but not marked supported, let SUSE know about + your requirements. + +- The TCG "acceleration" mode may be helpful for problem isolation, but + otherwise presents insufficient benefit and stability. + +- Use of -cpu host is not supported in all host/guest configurations. + +- GlusterFS integration is not enabled. + +Deprecated, Superseded, Modified and Dropped Features +----------------------------------------------------- + +- https://qemu-project.gitlab.io/qemu/about/deprecated.html and + https://qemu-project.gitlab.io/qemu/about/removed-features.html + These websites track features deprecation and removal at the upstream + development level. Our qemu package inherits this community direction, but be + aware that we can and will deviate as needed. Those deviations and additional + information can be found in this section. Feature deprecation as well as + removed features are also tracked in the "System Emulation" section of the + documentation installed with the qemu package. + +- qemu-img: Deprecate use of -b without -F. Creating an image that requires + format probing of the backing image is potentially unsafe and is now + deprecated. + +- When no video adapter is specified, the default used is stdvga. This differs + from the default of prior releases which was cirrus. The cirrus adapter was + considered too outdated to continue to use as the default. + +- The deprecated windows drivers (win-virtio-drivers.iso) are no longer provided. + The Virtual Machine Driver Pack is the supported way to get virtio drivers for + Windows guests. + +- The use of ",boot=on" for virtio disks is no longer needed since the bios used + supports the virtio block interface directly. In fact, its usage may cause + problems, and is now considered deprecated. + +- The previously non-persistent backing file with pmem=on is deprecated. Modify + VM configuration to set pmem=off to continue using fake NVDIMM with backing + file or move backing file to NVDIMM storage and keep pmem=on. + +- The use of "?" as a parameter to "-cpu", "-soundhw", "-device", "-M", + "-machine" and "-d" is now considered deprecated. Use "help" + instead. + +- The use of "if=scsi" as a parameter to "-drive" does not work anymore with PC + machine types, as it created an obsolete SCSI controller model. + +- Passthrough of a host floppy device is now considered deprecated. + +- Use of aio=native without direct cache mode also being specified (cache=none, + cache=directsync, or cache.direct=on) is no longer allowed. + +- The use of image encryption in qcow and qcow2 formats is now considered + deprecated. + Analysis has shown it to be weak encryption, in addition to suffering from + poor design. Images can easily be converted to a non-encrypted format. + +- Use of acpi, boot-opts, and smp-opts in a -readconfig config file are now + considered deprecated. In the future those names will be standardized to + acpitable, boot, and smp respectively. + +- When only a partial SMP topology is provided (ie only some of sockets, cores, + threads) the derived guest ABI is not guaranteed to be equivalent in future + versions. + +- These previously supported command line options are now considered deprecated: + -display sdl,window_close= (use -display sdl,window-close) + -no-quit (use -display ...,window-close=off) + -M option kernel-irqchip=off + -chardev tty (use serial name instead) + -chardev paraport (use parallel name instead) + -device virtio-blk,scsi= (use virtio-scsi instead) + -device virtio-blk-pci,scsi= (use virtio-scsi instead) + -enable-fips (not really helpful - see https://git.qemu.org/?p=qemu.git;a=commit;h=166310299a1e7824bbff17e1f016659d18b4a559 for details) + -realtime mlock= (use -overcommit mem-lock= instead) + -spice password=string (use password-string option instead) + -writeconfig (no replacement - never really worked right) + -share and noshare must be replaced by share=on/share=off + -nodelay must be replaced by nodelay=on rather than delay=off + -object-add options opened=on and loaded=on (both had no effect) + +- These previously supported command line options are no longer supported: + -device ide-drive (use ide-hd or ide-cd instead) + -device scsi-disk (use scsi-hd or scsi-cd instead) + +- The previously supported machine types pc-0.12, pc-0.14 and pc-0.15 are no + longer recognized. Switch to a newer machine type. + +- These previously supported command line options are no longer recognized: + -balloon (use -device virtio-balloon instead) + -clock + -device ivshmem (use ivshmem-doorbell or ivshmem-plain instead) + -device pc-sysfw (no longer needed) + -device pci-assign, -device kvm-pci-assign (use -device vfio-pci instead) + -display sdl + -no-frame + -nodefconfig (use -no-user-config instead) + -realtime ... + -sdl + -show-cursor + -virtioconsole (use -device virtconsole instead) + +- Specifying a cpu feature with both "+feature/-feature" and "feature=on/off" + will now cause a warning. The current behavior for this combination where + "+feature/-feature" wins over "feature=on/off", will be changed going forward + so that "+feature" and "-feature" will be synonyms for "feature=on" and + "feature=off" respectively. + +- The case of specified sockets, cores, and threads not matching the vcpu count + is no longer silently ignored. QEMU now requires that the topology match the + vcpu count. + +- The previously supported blkdev-add QMP command has been flagged as lacking + and could possibly change syntax in the future. + +- These previously unsupported command line options are now deprecated: + -no-kvm-pit + -soundhw (use -device ... instead) + +- These previously unsupported command line options are no longer recognized: + -bt + -device at24c-eeprom + -device ccid-card-passthru + -device cfi.pflash01 + -device esp + -device exynos4210-ehci-usb + -device fusbh200-ehci-usb + -device icc-bridge + -device q35-pcihost + -device mch + -device mmio_interface + -device smbus-eeprom + -device SUNW,fdtwo + -device sysbus-ahci + -device sysbus-fdc + -device sysbus-ohci + -device tegra2-ehci-usb + -device testdev (use -device pc-testdev instead) + -device vhost-user-vsock-pci-transitional + -device vhost-vsock-pci-transitional + -device virtio-iommu-pci-transitional + -device virtio-mmio + -device xln,ps7-usb + -enable-hax (use -accel hax instead) + -enable-nesting + -kvm-shadow-memory (use -machine kvm_shadow_mem= instead) + -M mac + -machine mac + -no-kvm-irqchip (use -machine kernel_irqchip=off instead) + -no-kvm-pit + -no-kvm-pit-reinjection (use -global kvm-pit.lost_tick_policy=discard instead) + -nvram + -old-param + -osk + -pcidevice (use -device vfio-pci instead) + -qtest + -semihosting + -tb-size + -tdf (note: mistakenly listed previously as supported) + -xen-create + +- The previously unsupported machine types pc-0.10, pc-0.11, pc-0.13, + pc-1.0, pc-1.1, pc-1.2 and pc-1.3 are are no longer recognized. + +- These previously supported QMP commands are now deprecated: + + +- These previously supported QMP commands are no longer recognized: + info cpustats + block_passwd + change (use blockdev-change-medium or change-vnc-password instead) + cpu-add (use device_add instead) + migrate-set-cache-size (use migrate-set-parameters instead) + migrate_set_downtime (use migrate-set-parameters instead) + migrate_set_speed (use migrate-set-parameters instead) + query-cpus (use query-cpus-fast instead) + query-events + query-migrate-cache-size (use query-migrate-parameters instead) + +- These previously supported monitor commands are now deprecated: + change + +- These previously supported monitor commands are no longer recognized: + info cpustats + block_passwd ... + block_passwd + cpu-add + cpu_set + migrate_set_cache_size + migrate_set_downtime + migrate_set_speed + pci_add (use device_add instead) + pci_del (use device_del instead) + usb_add (use device_add instead) + usb_del (use device_del instead) + +- These previously unsupported monitor command are now deprecated: + + +- These previously unsupported monitor commands are no longer recognized: + acl_add ... + acl_policy ... + acl_remove ... + acl_reset ... + acl_show ... + host_net_add + host_net_remove + +- These previously unsupported QMP commands are now supported under a new name: + x-block-dirty-bitmap-disable (use block-dirty-bitmap-disable instead) + x-block-dirty-bitmap-enable (use block-dirty-bitmap-enable instead) + x-block-dirty-bitmap-merge (use block-dirty-bitmap-merge instead) + x-block-latency-histogram-set (use block-latency-histogram-set instead) + x-blockdev-create (use blockdev-create instead) + x-input-send-event (use input-send-event instead) + +- This previously unsupported QMP commands is no longer recognized: + x-nbd-server-add-bitmap + +- Due to the lack of migration support (mainly due to ahci interface issues) + and other unstable interface issues, earlier versions of the q35 machine type + are not supported in this release. The current q35 machine type is however now + fully supported. + +- Due to upstream's decision to no longer fully support the qed storage format + going forward (since it really provides no benefit over qcow2 and is now no + longer actively maintained upstream), creating qed storage images is no longer + supported and it is highly discouraged to continue using existing qed images. + They should instead be converted to another supported format. + +- If KVM Intel nested virtualization is enabled, and the guest is passed the vmx + feature, then live migration or save/restore is prohibited. + +QEMU Command-Line and Monitor Syntax and Support +------------------------------------------------ + +- The QEMU program command-line syntax is as follows: + qemu-system-i386 [options] [disk_image] + qemu-system-x86_64 [options] [disk_image] + + Where 'options' are taken from the options listed below, and 'disk_image' is + the file system reference to the x86 guest's primary IDE based hard disk + image. This image as well as those used with -drive or -cdrom, may be in the + raw (no format) or qcow2 storage formats, and may be located in files within + the host filesystem, logical volumes, host physical disks, or network based + storage. Read only media may also be accessed via URL style protocol + specifiers. + + Note that as a general rule, as new command line options are added which serve + to replace an older option or interface, you are strongly encouraged to adapt + your usage to the new option. The new option is being introduced to provide + better functionality and usability going forward. In some cases existing + problems or even bugs in older interfaces cannot be fixed due to functional + expectations, but are resolved in the newer interface or option. + This advice includes moving to the most recent machine type (eg pc-i440fx-6.1 + instead of pc-i440fx-6.0) if possible. + +- The following command line options are supported: + -accel ... + -action ... + -add-fd ... + -alt-grab + -append ... + -audio-help + -audiodev + -bios ... + -blockdev ... + -boot ... + -cdrom ... + -chardev ... + -compat ... + -cpu ... (all except host) + -ctrl-grab + -d ... + -daemonize + -debugcon ... + -device + + [isa-serial|isa-parallel|isa-fdc|ide-hd|ide-cd|VGA|cirrus-vga|rtl8139| + usb-hub|usb-ehci|usb-tablet|usb-storage|usb-mouse|usb-kbd| + virtserialport|virtconsole|sga|i82559er|scsi-cd|scsi-hd|scsi-generic| + scsi-block|pci-serial|pci-serial-2x|pci-serial-4x|ich9-ahci| + piix3-usb-uhci|usb-host|usb-serial|usb-wacom-tablet|usb-braille| + usb-net|pci-ohci|piix4-usb-uhci|i6300esb|ib700|qxl|qxl-vga|pvpanic| + vfio-pci|ivshmem-doorbell|ivshmem-plain|pci-bridge|megasas-gen2| + pc-dimm|floppy|e1000e|ccid-card-emulated|ccid-card-passthrough| + xen-backend|loader|e1000-82540em|vmgenid|vmcoreinfo|pcie-pci-bridge| + ich9-usb-ehci1|ich9-usb-ehci2|ich9-usb-uhci1|ich9-usb-uhci2| + ich9-usb-uhci3|ich9-usb-uhci4|ich9-usb-uhci5|ich9-usb-uhci6| + usb-redir|vhost-scsi|vhost-scsi-pci|vhost-user-blk| + vhost-user-blk-pci|vhost-user-blk-pci-non-transitional| + vhost-user-blk-pci-transitional|vhost-user-scsi|vhost-user-scsi-pci| + vhost-user-scsi-pci-non-transitional|vhost-user-pci-transitional| + vhost-vsock-pci|vhost-vsock-pci-non-transitional|virtio-balloon-pci| + virtio-balloon-pci-non-transitional|virtio-balloon-pci-transitional| + virtio-blk-pci|virtio-blk-pci-non-transitional| + virtio-blk-pci-transitional|virtio-net-pci| + virtio-net-pci-non-transitional|virtio-net-pci-transitional| + virtio-9p-pci|virtio-9p-pci-non-transitional| + virtio-9p-pci-transitional|virtio-serial-pci| + virtio-serial-pci-non-transitional|virtio-serial-pci-transitional| + virtio-scsi-pci|virtio-scsi-pci-non-transitional| + virtio-scsi-pci-transitional|virtio-rng-pci| + virtio-rng-pci-non-transitional|virtio-rng-pci-transitional| + virtio-input-host-pci|virtio-input-host-pci-non-transitional| + virtio-input-host-pci-transitional|virtio-keyboard-pci| + virtio-mouse-pci|virtio-tablet-pci|virtio-gpu-pci|virtio-crypto-pci| + virtio-vga|vhost-user-fs-pci|vhost-user-gpu|vhost-user-pci-pci| + vhost-user-input|vhost-user-input-pci|vhost-user-vga|virtio-mmio| + virtio-pmem|virtio-pmem-pci|mc146818rtci|nvme-subsys|guest-loader| + pvpanic-pci] + (the following are aliases of these supported devices: ahci| + e1000|virtio-blk|virtio-net|virtio-serial|virtio-balloon|virtio-9p| + virtio-scsi|virtio-rng|virtio-input-host|virtio-keyboard|virtio-mouse|virtio-tablet|virtio-gpu) + + -dfilter range, ... + -display ... + -drive + + ... (if specified if=[floppy|ide|virtio] and format=[qcow2|raw] and + snapshot=off only) + + -echr ... + -enable-fips + -enable-kvm + -fda/-fdb ... + -fsdev ... + -full-screen + -fw_cfg ... + -gdb ... + -global ... + -h + -hda/-hdb/-hdc/-hdd ... + -help + -incoming ... + -initrd ... + -iscsi ... + -k ... + -kernel ... + -loadvm ... + -m ... + -M + + [help|none|pc-i440fx-1.4|pc-i440fx-1.7|pc-i440fx-2.0|pc-i440fx-2.3| + pc-i440fx-2.6|pc-i440fx-2.9|pc-i440fx-2.11|pc-i440fx-3.1|pc-i440fx-4.2| + pc-i440fx-5.2|pc-i440fx-6.0|pc-i440fx-6.1|pc-q35-2.6|pc-q35-2.9| + pc-q35-2.11|pc-q35-3.1|pc-q35-4.2|pc-q35-5.2|pc-q35-6.0|pc-q35-6.1| + xenfv|xenfv-4.2] + + -machine + + [help|none|pc-i440fx-1.4|pc-i440fx-1.7|pc-i440fx-2.0| + pc-i440fx-2.3|pc-440fx-2.6|pc-i440fx-2.9|pc-i440fx-2.11| + pc-i440fx-3.1|pc-i440fx-4.2|pc-i440fx-5.2|pc-i440fx-6.0| + pc-i440fx-6.1|pc-q35-2.6|pc-q35-2.9|pc-q35-2.11|pc-q35-3.1| + pc-q35-4.2|pc-q35-5.2|pc-q35-6.0|pc-q35-6.1|xenfv|xenifv-4.2] + + -mem-path ... + -mem-prealloc + -mon ... + -monitor ... + -msg ... + -name ... + -net + + [bridge|l2tpv3|nic|none|tap|user] ... (for model= only e1000, rtl8139, + and virtio are supported) + + -netdev [bridge|tap|user] ... + -nic ... + -no-acpi + -nodefaults + -no-fd-bootchk + -nographic + -no-hpet + -no-quit + -no-reboot + -no-shutdown + -no-user-config + -numa cpu ... + -numa dist ... + -object ... + -only-migratable + -parallel ... + -pidfile ... + -plugin ... + -qmp ... + -qmp-pretty ... + -readconfig ... + -rtc ... + -runas ... + -s + -S + -sandbox ... + -seed ... + -serial ... + -smbios ... + -smp ... + -spice + -tpmdev passthrough ... + -trace ... + -usb + -usbdevice [braile|disk|host|mouse|net|serial|tablet] + -uuid ... + -version + -vga [cirrus|none|qxl|std|xenfb] + -virtfs ... + -vnc ... + -watchdog ... + -watchdog-action ... + -writeconfig ... + -xen-attach ... + -xen-domid ... + -xen-domid-restrict ... + +- The following monitor commands are supported: + ? + announce_self ... + balloon ... + block_resize ... + boot_set ... + c + change ... + chardev-add ... + chardev-change ... + chardev-remove ... + chardev-send-break ... + client_migrate_info ... + closefd ... + cont + cpu ... + delvm ... + device_add ... + device_del ... + drive_add ... + drive_backup ... + drive_del ... + dump_guest_memory ... + eject ... + gdbserver ... + gpa2hpa ... + gpa2hva ... + gva2gpa ... + help + i ... + info ... + loadvm ... + logfile ... + logitem ... + mce ... + memsave ... + migrate ... + migrate_cancel + migrate_continue ... + migrate_incoming + migrate_pause + migrate_recover ... + migrate_set_capability ... + migrate_set_parameter ... + migrate_start_post_copy + mouse_button ... + mouse_move ... + mouse_set ... + nmi ... + o ... + object_add ... + object_del ... + p ... + pci_add ... + pci_del... + pmemsave ... + print ... + q + qemu-io ... + qom-list + qom-set + ringbuf_read ... + ringbuf_write ... + savevm ... + screendump ... + sendkey ... + snapshot_blkdev_internal ... + snapshot_delete_blkdev_internal ... + stop + sum ... + system_powerdown + system_reset + system_wakeup + trace-event ... + watchdog_action ... + x ... + xp ... + +- The following QMP commands are supported: + add_client + add-fd + announce-self + balloon + blockdev-add + blockdev-backup + blockdev-change-medium + blockdev-close-tray + blockdev-create + blockdev-del + blockdev-mirror + blockdev-open-tray + blockdev-snapshot + blockdev-snapshot-delete-internal-sync + blockdev-snapshot-internal-sync + blockdev-snapshot-sync + block-commit + block-dirty-bitmap-add + block-dirty-bitmap-clear + block-dirty-bitmap-disable + block-dirty-bitmap-enable + block-dirty-bitmap-merge + block-dirty-bitmap-remove + block-export-add + block-export-del + block-latency-histogram-set + block_resize + block_set_io_throttle + block-set-write-threshold + block_stream + calc-dirty-rate + change-vnc-password + chardev-add + chardev-change + chardev-remove + chardev-send-break + client_migrate_info + closefd + cont + cpu + device_add + device_del + device-list-properties + display-reload + dump-guest-memory + eject + expire_password + getfd + human-monitor-command + inject-nmi + input-send-event + job-cancel + job-complete + job-dismiss + job-finalize + job-pause + job-resume + memsave + migrate + migrate_cancel + migrate-continue + migrate-incoming + migrate-pause + migrate-resume + migrate-set-capabilities + migrate-set-parameters + migrate-start-postcopy + object-add + object-del + pmemsave + qmp_capabilities + qom-get + qom-list + qom-list-types + qom-set + query-acpi-ospm-status + query-balloon + query-block + query-block-exports + query-block-jobs + query-blockstats + query-chardev + query-chardev-backends + query-command-line-options + query-commands + query-cpu-definitions + query-cpu-model-expansion + query-cpus-fast + query-current-machine + query-dirty-rate + query-display-options + query-dump + query-dump-guest-memory-capability + query-fdsets + query-gic-capabilities + query-hotpluggable-cpus + query-iothreads + query-jobs + query-kvm + query-machines + query-memdev + query-memory-devices + query-memory-size-summary + query-mice + query-migrate + query-migrate-capabilities + query-migrate-parameters + query-name + query-named-block-nodes + query-pci + query-pr-managers + query-qmp-schema + query-rocker + query-rocker-of-dpa-flows + query-rocker-of-dpa-groups + query-rocker-ports + query-rx-filter + query-sev + query-sev-capabilities + query-sev-launch-measure + query-spice + query-status + query-target + query-tpm + query-tpm-models + query-tpm-types + query-uuid + query-version + query-vnc + query-vnc-servers + query-yank + query-xen-replication-status + quit + remove-fd + ringbuf-read + ringbuf-write + screendump + send-key + set-action + set_link + set_password + set-numa-node + sev-inject-launch-secret + snapshot-delete + snapshot-load + snapshot-save + stop + system_powerdown + system_reset + system_wakeup + trace-event-get-state + trace-event-set-state + transaction + watchdog-set-action + xen-load-devices-state + xen-save-devices-state + xen-set-global-dirty-log + yank + +- The following command line options are unsupported: + + -acpitable ... + -chroot ... + -cpu host + -curses + -device + + [ipoctal232|i82562|nec-usb-xhci|hda-duplex|hda-output|usb-bot| + lsi53c810a|isa-debug-exit|ne2k_pci|usb-uas|ioh3420|isa-ide|usb-ccid| + pcnet|ich9-intel-hda|dc390|hda-micro|x3130-upstream|isa-cirrus-vga| + pc-testdev|ne2k_isa|isa-vga|cs4231a|gus|vmware-svga|i82801b11-bridge| + i82557a|i82557c|i82557b|i82801|AC97|am53c974|intel-hda|i82558a| + i82558b|usb-audio|i82550|isa-debugcon|sb16|megasas|i82551| + xio3130-downstream|vt82c686b-usb-uhci|tpci200|i82559a|i82559b|i82559c| + isa-applesmc|adlib|ES1370|lsi53c810|nvme|pci-testdev|pvscsi| + virtio-9p-device|virtio-balloon-device|virtio-blk-device| + virtio-net-device|virtio-rng-device|virtio-scsi-device| + virtio-serial-device|vmxnet3|xen-pci-passthrough|xen-platform| + xen-pvdevice|piix3-ide|piix3-ide-xen|piix3-ide|i8042|sdhci-pci| + secondary-vga|edu|intel_iommu|usb-mtp|e1000-82544gc|e1000-82545em| + pci-bridge-seat|pxb|pxb-pcie|rocker|virtio-input-host-device| + virtio-keyboard-device|virtio-mouse-device|virtio-tablet-device| + hyperv-testdev|generic-sdhci|igd-passthrough-isa-bridge| + ipmi-bmc-extern|ipmi-bmc-sim|isa-ipmi-bt|isa-ipmi-kcs|mptsas1068| + nvdimm|pxb-host|sd-card|virtio-gpu-device|amd-iommu|AMDVI-PCI| + vhost-vsock-device|virtio-crypto-device|vfio-pci-igd-lpc-bridge| + pcie-root-port|qemu-xhci|*-i386-cpu|*-x86_64-cpu|pvrdma|bochs-display| + ramfb|ccid-card-emulated|ccid-card-passthru|kvaser_pci|tpm-crb| + mioe3680_pci|pcm3680_pci|hyperv-synic|vfio-pci-nohotplug| + vfio-platform|xen-bridge|xen-cdrom|xen-disk|ati-vga|cpu-cluster| + intel-iommu|vhost-user-fs-device|tulip|ati-vga|i2c-ddc|pci-ipmi-bt| + pci-ipmi-kcs|serial|serial-io|serial-mm|virtio-iommu-device| + virtio-iommu-pci|virtio-iommu-pci-nontransitional|xen-sysdev| + imx.usbphy|vmbus-bridge|vhost-user-vsock-device|vhost-user-vsock-pci| + vhost-user-vsock-pci-non-transitional|virtio-mem|virtio-mem-pci| + nvme-ns|ctucan_pci|u2f-passthru] + (the following are aliases of these unsupported devices: lsi) + (note that some of these device names represent supported devices and + are used internally, but are not specifyable via -device even though + they appear in the list of devices) + + -drive + + ,if=[scsi|mtd|pflash], snapshot=on, format=[anything besides qcow2 or + raw] + + -dtb file + -enable-sync-profile + -g ... + -icount ... + -L ... + -M + + [pc|isapc|microvm|x-remote|pc-i440fx-1.5|pc-i440fx-1.6|pc-i440fx-2.1| + pc-i440fx-2.2|pc-i440fx-2.4|pc-i440fx-2.5|pc-i440fx-2.7|pc-i440fx-2.8| + pc-i440fx-2.10|pc-i440fx-2.12|pc-i440fx-3.0|pc-i440fx-4.0|pc-i440fx-4.1| + pc-i440fx-5.0|pc-i440fx-5.1|pc-i440fx-6.0|q35|pc-q35-1.4|pc-q35-1.5| + pc-q35-1.6|pc-q35-1.7|pc-q35-2.0|pc-q35-2.1|pc-q35-2.2|pc-q35-2.3| + pc-q35-2.4|pc-q35-2.5|pc-q35-2.7|pc-q35-2.8|pc-q35-2.10|pc-q35-2.12| + pc-q35-3.0|pc-q35-4.0|pc-q35-4.1|pc-q35-5.0|pc-q35-5.1|pc-q35-6.0] + + -machine + + [pc|isapc|microvm|x-remote|pc-i440fx-1.5|pc-i440fx-1.6|pc-i440fx-2.1| + pc-i440fx-2.2|pc-i440fx-2.4|pc-i440fx-2.5|pc-i440fx-2.7| + pc-i440fx-2.8|pc-i440fx-2.10|pc-i440fx-2.12|pc-i440fx-3.0| + pc-i440fx-4.0|pc-i440fx-4.1|pc-i440fx-5.0|pc-i440fx-5.1| + pc-i440fx-6.0|q35|pc-q35-1.4|pc-q35-1.5|pc-q35-1.6|pc-q35-1.7| + pc-q35-2.0|pc-q35-2.1|pc-q35-2.2|pc-q35-2.3|pc-q35-2.4|pc-q35-2.5| + pc-q35-2.7|pc-q35-2.8|pc-q35-2.10|pc-q35-2.12|pc-q35-3.0|pc-q35-4.0| + pc-q35-4.1|pc-q35-5.0|pc-q35-5.1|pc-q35-6.0] + + -mtdblock file + -net [socket|vde] ... + -netdev [hubport|l2tpv3|socket|vde] ... + -no-kvm + -numa node ... + -option-rom ... + -overcommit ... + -pflash file + -portrait + -preconfig + -prom-env ... + -qtest ... + -qtest-log ... + -rotate + -sd file + -sdl + -set ... + -singlestep + -snapshot + -soundhw ... + -tpmdev emulator ... + -vga [cg3|tcx|virtio|vmware] + -win2k-hack + +- The following monitor commands are unsupported: + block_job_cancel ... + block_job_complete ... + block_job_pause ... + block_job_resume ... + block_job_set_speed ... + commit ... + drive_mirror ... + exit_preconfig + expire_password ... + hostfwd_add ... + hostfwd_remove ... + nbd_server_add ... + nbd server_start ... + nbd_server_stop ... + netdev_add + netdev_del ... + pcie_aer_inject_error ... + replay_break ... + replay_delete_break + replay_seek ... + set_link ... + set_password ... + singlestep ... + snapshot_blkdev ... + stopcapture ... + sync-profile ... + wavcapture ... + x_colo_lost_heartbeat + +- The following QMP commands are unsupported: + block-job-cancel + block-job-complete + block-job-pause + block-job-resume + block-job-set-speed + change-backing-file + drive-backup + drive-mirror + netdev_add + netdev_del + nbd-server-add + nbd-server-start + nbd-server-stop + query-colo-status + query-replay + replay_break + replay_delete_break + replay_seek + x-blockdev-amend + x-blockdev-change + x-blockdev-insert-medium + x-blockdev-remove-medium + x-blockdev-reopen + x-colo-lost-heartbeat + x-debug-block-dirty-bitmap-sha256 + x-debug-query-block-graph + x-exit-preconfig + xen-colo-do-checkpoint + xen-set-replication