Upgrade qemu to 7.2.0.

As we add kata container support for StarlingX
with the latest kata containers stable version 3.1.3.

We need to upgrade qemu to 7.2.0 version to make them
compatible.

Test plan:
PASS - Build qemu package.
PASS - Build /install image on AIO-SX.
PASS - Verify the package is installed in the system.
PASS - Verify the qemu-utils correctly installed by
       running qemi-image -V
PASS - Verify the qemu x86_64 correctly installed by
       running qemu-system-x86_64 --version
PASS - Verify stx-openstack works correctly with sanity
       and regression tests.
PASS - Verify that the kata-runtime check command print
       system is capable of running kata containers.
PASS - Verify that kubectl could create pod with kata
       containers runtime, and pod start successfully.

Story: 2010781
Task: 48183

Change-Id: Ie9fba13999023e3dce37c620864710707bc679ed
Signed-off-by: David Liu <david.liu@windriver.com>
This commit is contained in:
dliu5 2023-06-06 18:12:43 +08:00 committed by Davi Frossard
parent 1739c97f2f
commit f08c85737a
18 changed files with 612 additions and 299 deletions

View File

@ -24,25 +24,29 @@ Removed packages:
* qemu-user-binftmt
Signed-off-by: Thales Elero Cervi <thaleselero.cervi@windriver.com>
[Rebased original changes to the qemu 7.2 version]
Signed-off-by: david.liu <david.liu@windriver.com>
---
debian/control | 215 +++----------------------------------------------
debian/rules | 86 ++------------------
2 files changed, 16 insertions(+), 285 deletions(-)
debian/control | 232 +++----------------------------------------------
debian/rules | 93 +-------------------
2 files changed, 15 insertions(+), 310 deletions(-)
diff --git a/debian/control b/debian/control
index 6534765..7cc0fb4 100644
index 9a5a3fab..32600f51 100644
--- a/debian/control
+++ b/debian/control
@@ -21,14 +21,10 @@ Build-Depends: debhelper-compat (= 12),
libcapstone-dev (>> 4.0.2~),
# --enable-linux-aio linux-*
libaio-dev [linux-any],
-# --audio-drv-list=pa,alsa,oss linux-*
-# --audio-drv-list=pa,oss kfreebsd-*
@@ -23,14 +23,14 @@ Build-Depends: debhelper-compat (= 13),
libjack-dev [linux-any],
# --audio-drv-list=pa,alsa,jack,oss,sdl linux-*
# --audio-drv-list=pa,oss kfreebsd-*
- libpulse-dev,
- libasound2-dev [linux-any],
+# libpulse-dev,
+# libasound2-dev [linux-any],
# for virtfs (now in libc6)
# --enable-attr
# --enable-bpf linux-*
libbpf-dev [linux-any],
-# --enable-brlapi
- libbrlapi-dev,
+# --disable-brlapi
@ -50,26 +54,24 @@ index 6534765..7cc0fb4 100644
# --enable-virtfs linux-*
# needed for virtfs
# --enable-cap-ng linux-*
@@ -85,8 +81,8 @@ Build-Depends: debhelper-compat (= 12),
@@ -93,7 +93,8 @@ Build-Depends: debhelper-compat (= 13),
# vde is debian-only since ubuntu/vde2 is in universe
# --enable-vde
libvdeplug-dev,
-# --enable-xen linux-amd64|linux-i386
- libxen-dev [linux-amd64 linux-i386],
+# --disable-xen linux-amd64|linux-i386
+# libxen-dev [linux-amd64 linux-i386],
- libxen-dev [linux-amd64],
+# --disable-xen
+# libxen-dev [linux-amd64],
# --enable-nettle
nettle-dev,
## always enabled: --enable-uuid
@@ -114,18 +110,18 @@ Build-Depends: debhelper-compat (= 12),
## auth-pam - for auth for vnc&Co using PAM
## gio-2.0 - for -display=spice-app
@@ -122,17 +123,17 @@ Build-Depends: debhelper-compat (= 13),
Build-Depends-Indep:
# pc-bios/*.dts => *.dtb (PPC firmware)
device-tree-compiler,
- gcc-s390x-linux-gnu,
+# gcc-s390x-linux-gnu,
# libc6.1-dev-alpha-cross isn't really needed but the code,
# for whatever reason, #include's string.h which needs libc6.1-dev
gcc-alpha-linux-gnu, libc6.1-dev-alpha-cross,
# qemu-palcode/palcode-clipper
gcc-alpha-linux-gnu,
# skiboot firmware, openbios
- gcc-powerpc64-linux-gnu,
+# gcc-powerpc64-linux-gnu,
@ -82,32 +84,49 @@ index 6534765..7cc0fb4 100644
# opensbi
- gcc-riscv64-linux-gnu,
+# gcc-riscv64-linux-gnu,
# vbootrom/npcm7xx_bootrom
gcc-arm-none-eabi,
Build-Conflicts: oss4-dev
Standards-Version: 4.5.1
Homepage: http://www.qemu.org/
@@ -218,141 +214,12 @@ Description: QEMU full system emulation binaries (common files)
@@ -218,162 +219,13 @@ Description: QEMU full system emulation binaries (common files)
This package provides common files needed for target-specific
full system emulation (qemu-system-*) packages.
-Package: qemu-system-gui
-Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Multi-Arch: same
-#XXX M-A: same does not really work for now due to /usr/lib/qemu/vhost-user-gpu
-#XXX we'll deal with this if some actual need arises,
-#XXX by moving that binary back to q-s-common or packaging it separately
-#Multi-Arch: same
-Depends: ${misc:Depends}, ${shlibs:Depends},
- qemu-system-x86 (= ${binary:Version}) | qemu-system-arm (= ${binary:Version}) | qemu-system-mips (= ${binary:Version}) | qemu-system-ppc (= ${binary:Version}) | qemu-system-sparc (= ${binary:Version}) | qemu-system-misc (= ${binary:Version}) | qemu-system-s390x (= ${binary:Version}) | qemu-system-x86-xen (= ${binary:Version}),
- qemu-system-x86 (= ${binary:Version})
- |qemu-system-arm (= ${binary:Version})
- |qemu-system-mips (= ${binary:Version})
- |qemu-system-ppc (= ${binary:Version})
- |qemu-system-sparc (= ${binary:Version})
- |qemu-system-misc (= ${binary:Version}),
-# libgl1 is dynamically loaded by sdl display code
- libgl1,
-# we moved vhost-user-gpu files here from qemu-system-common at 6.1-4
-Replaces: qemu-system-common (<< 1:6.1+dfsg-4~)
-Description: QEMU full system emulation binaries (user interface and audio support)
- This package provides local graphical user interface (currently GTK)
- and audio backends for full system emulation (qemu-system-*) packages.
- .
- The default GTK based qemu-system-gui is generally better and recommended,
- but a few corner cases still need SDL which is therefore provided as well.
-
-Package: qemu-system-misc
-Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Multi-Arch: foreign
-Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> ${source:Version}~), qemu-system-data (>> ${source:Version}~),
-Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (= ${binary:Version}), qemu-system-data (>> ${source:Upstream-Version}~),
-Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils,
-# alpha uses vgabios
-# alpha m68k sh4 uses bootroms
- seabios, ipxe-qemu (>= 1.0.0+git-20131111.c3d1e78-1~)
-Suggests: samba, vde2, qemu-block-extra (= ${binary:Version}),
-Provides: ${sysprovides:misc}
- seabios, ipxe-qemu,
- qemu-block-extra (= ${binary:Version}),
-Suggests: samba, vde2,
-Provides: ${sysprovides:misc},
- qemu-kvm [s390x],
-Description: QEMU full system emulation binaries (miscellaneous)
- QEMU is a fast processor emulator: currently the package supports
- ARM, CRIS, M68k (ColdFire), MicroBlaze, and SH4
@ -127,12 +146,13 @@ index 6534765..7cc0fb4 100644
-Package: qemu-system-arm
-Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Multi-Arch: foreign
-Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> ${source:Version}~), qemu-system-data (>> ${source:Version}~),
-Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (= ${binary:Version}), qemu-system-data (>> ${source:Upstream-Version}~),
-Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils,
-# aarch64 arm uses bootroms
- ipxe-qemu (>= 1.0.0+git-20131111.c3d1e78-1~),
- qemu-efi-aarch64, qemu-efi-arm
-Suggests: samba, vde2, qemu-block-extra (= ${binary:Version}),
- ipxe-qemu,
- qemu-efi-aarch64, qemu-efi-arm,
- qemu-block-extra (= ${binary:Version}),
-Suggests: samba, vde2,
-Provides: qemu-kvm [linux-arm64 linux-armhf linux-armel], ${sysprovides:arm}
-Breaks: qemu-kvm [linux-arm64 linux-armhf linux-armel]
-Replaces: qemu-kvm [linux-arm64 linux-armhf linux-armel]
@ -152,11 +172,12 @@ index 6534765..7cc0fb4 100644
-Package: qemu-system-mips
-Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Multi-Arch: foreign
-Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> ${source:Version}~), qemu-system-data (>> ${source:Version}~),
-Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (= ${binary:Version}), qemu-system-data (>> ${source:Upstream-Version}~),
-Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils,
-# all mips targets uses vgabios and bootroms
- seabios, ipxe-qemu (>= 1.0.0+git-20131111.c3d1e78-1~)
-Suggests: samba, vde2, qemu-block-extra (= ${binary:Version}),
- seabios, ipxe-qemu,
- qemu-block-extra (= ${binary:Version}),
-Suggests: samba, vde2,
-Provides: ${sysprovides:mips}
-Description: QEMU full system emulation binaries (mips)
- QEMU is a fast processor emulator: currently the package supports
@ -174,11 +195,12 @@ index 6534765..7cc0fb4 100644
-Package: qemu-system-ppc
-Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Multi-Arch: foreign
-Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> ${source:Version}~), qemu-system-data (>> ${source:Version}~),
-Suggests: samba, vde2, qemu-block-extra (= ${binary:Version}),
-Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (= ${binary:Version}), qemu-system-data (>> ${source:Upstream-Version}~),
-Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils,
-# ppc targets use vgabios-stdvga and bootroms
- seabios, ipxe-qemu (>= 1.0.0+git-20131111.c3d1e78-1~)
- seabios, ipxe-qemu,
- qemu-block-extra (= ${binary:Version}),
-Suggests: samba, vde2,
-Provides: qemu-kvm [linux-ppc64 linux-ppc64el linux-powerpc], ${sysprovides:ppc}
-Breaks: qemu-kvm [linux-ppc64 linux-ppc64el linux-powerpc]
-Replaces: qemu-kvm [linux-ppc64 linux-ppc64el linux-powerpc]
@ -198,11 +220,12 @@ index 6534765..7cc0fb4 100644
-Package: qemu-system-sparc
-Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Multi-Arch: foreign
-Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> ${source:Version}~), qemu-system-data (>> ${source:Version}~),
-Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (= ${binary:Version}), qemu-system-data (>> ${source:Upstream-Version}~),
-Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils,
-# sparc64 uses vgabios-stdvga and bootroms
- seabios, ipxe-qemu (>= 1.0.0+git-20131111.c3d1e78-1~)
-Suggests: samba, vde2, qemu-block-extra (= ${binary:Version}),
- seabios, ipxe-qemu,
- qemu-block-extra (= ${binary:Version}),
-Suggests: samba, vde2,
-Provides: ${sysprovides:sparc}
-Description: QEMU full system emulation binaries (sparc)
- QEMU is a fast processor emulator: currently the package supports
@ -216,24 +239,24 @@ index 6534765..7cc0fb4 100644
- and various peripherals. It enables easier testing and debugging of system
- code. It can also be used to provide virtual hosting of several virtual
- machines on a single server.
-
Package: qemu-system-x86
Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
Multi-Arch: foreign
Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> ${source:Version}~), qemu-system-data (>> ${source:Version}~),
seabios (>= 1.10.2-1~), ipxe-qemu (>= 1.0.0+git-20131111.c3d1e78-1~)
Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (= ${binary:Version}), qemu-system-data (>> ${source:Upstream-Version}~),
seabios, ipxe-qemu,
-Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils,
- ovmf,
+Recommends: qemu-utils, ovmf
Suggests: samba, vde2, qemu-block-extra (= ${binary:Version}),
sgabios,
+Recommends: qemu-utils, ovmf,
qemu-block-extra (= ${binary:Version}),
Suggests: samba, vde2,
Provides: qemu-kvm [linux-amd64 linux-i386], ${sysprovides:x86}
@@ -374,68 +241,6 @@ Description: QEMU full system emulation binaries (x86)
On x86 host hardware this package also enables KVM kernel virtual machine
usage on systems which supports it.
@@ -408,66 +260,6 @@ Description: QEMU full system emulation (Xen helper package)
together with the Xen hypervisor for some types of DomUs.
This package is not useful by its own.
-Package: qemu-user
-Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Architecture: amd64 arm arm64 armel armhf i386 mips mipsel mips64 mips64el ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Multi-Arch: foreign
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Recommends: qemu-user-binfmt
@ -254,15 +277,14 @@ index 6534765..7cc0fb4 100644
- qemu-user-static will register statically linked binfmt handlers instead.
-
-Package: qemu-user-static
-Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Architecture: amd64 arm arm64 armel armhf i386 mips mipsel mips64 mips64el ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Built-Using: ${built-using}
-Multi-Arch: foreign
-Depends: ${misc:Depends}
-Recommends: binfmt-support
-Recommends: systemd | binfmt-support
-Breaks: binfmt-support (<< 2.1.7~)
-Provides: qemu-user-binfmt
-Conflicts: qemu-user-binfmt
-Suggests: sudo
-Description: QEMU user mode emulation binaries (static version)
- QEMU is a fast processor emulator: currently the package supports
- ARM, CRIS, i386, M68k (ColdFire), MicroBlaze, MIPS, PowerPC, SH4,
@ -278,9 +300,9 @@ index 6534765..7cc0fb4 100644
- directly.
-
-Package: qemu-user-binfmt
-Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Architecture: amd64 arm arm64 armel armhf i386 mips mipsel mips64 mips64el ppc64 ppc64el riscv64 s390x sparc sparc64 x32
-Multi-Arch: foreign
-Depends: ${misc:Depends}, qemu-user (= ${binary:Version}), binfmt-support
-Depends: ${misc:Depends}, qemu-user (= ${binary:Version}), systemd | binfmt-support
-Breaks: binfmt-support (<< 2.1.7~)
-Conflicts: qemu-user-static
-Description: QEMU user mode binfmt registration for qemu-user
@ -293,24 +315,23 @@ index 6534765..7cc0fb4 100644
- emulation binaries from qemu-user. This is an empty package, it does
- not contain any additional files, only registration scripts which run
- at install and remove times.
-
Package: qemu-utils
Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
Multi-Arch: foreign
diff --git a/debian/rules b/debian/rules
index 9d9f18f..1dc1e10 100755
index d2cd28e9..908b643a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -72,14 +72,11 @@ endif
@@ -84,14 +84,10 @@ endif
ifeq (${enable_system},enable)
# list of system (softmmu) targets, from ./configure
-system_targets = \
- i386 x86_64 alpha aarch64 arm avr cris hppa m68k microblaze microblazeel \
- mips mipsel mips64 mips64el moxie nios2 or1k ppc ppc64 riscv32 riscv64 rx \
- i386 x86_64 alpha aarch64 arm avr cris hppa m68k loongarch64 microblaze microblazeel \
- mips mipsel mips64 mips64el nios2 or1k ppc ppc64 riscv32 riscv64 rx \
- sh4 sh4eb sparc sparc64 s390x tricore xtensa xtensaeb
-
+system_targets = i386 x86_64
# qemu-system subpackages, from d/control
sys_systems = arm mips ppc sparc x86 $(if $(filter ${VENDOR},UBUNTU),s390x,)
-systems = ${sys_systems} misc
@ -318,41 +339,24 @@ index 9d9f18f..1dc1e10 100755
sysarch_arm = $(filter aarch64 arm,${system_targets})
sysarch_mips = $(filter mips mipsel mips64 mips64el,${system_targets})
sysarch_ppc = $(filter ppc ppc64,${system_targets})
@@ -99,10 +96,7 @@ ifeq (${enable_linux_user},enable)
@@ -109,13 +105,7 @@ endif # enable_system
ifeq (${enable_linux_user},enable)
# list of linux-user targets, from ./configure
user_targets = \
- i386 x86_64 alpha aarch64 aarch64_be arm armeb cris hppa m68k microblaze microblazeel \
-user_targets = \
- i386 x86_64 alpha aarch64 aarch64_be arm armeb cris hexagon hppa \
- loongarch64 m68k microblaze microblazeel \
- mips mipsel mips64 mips64el mipsn32 mipsn32el nios2 or1k \
- ppc ppc64 ppc64le riscv32 riscv64 sh4 sh4eb sparc sparc64 sparc32plus \
- s390x xtensa xtensaeb
+ i386 x86_64 \
-
+user_targets = i386 x86_64
endif # enable_linux_user
@@ -117,6 +111,7 @@ b/configure-stamp: configure
--${enable_linux_user}-linux-user \
--enable-modules \
--enable-module-upgrades \
+ --target-list="$(addsuffix -softmmu,${system_targets})" \
$(shell sh debian/extract-config-opts \
$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH) debian/control) \
$(QEMU_CONFIGURE_OPTIONS) || \
@@ -348,9 +343,11 @@ endif # enable_linux_user
dh_install -a
dh_missing --list-missing
+ifeq ($(enable_linux_user),enable)
dh_installdocs -a -Nqemu-user-binfmt
dh_installchangelogs -a -Nqemu-user-binfmt -XChangelog
dh_installdocs -a -pqemu-user-binfmt --link-doc=qemu-user
+endif
dh_installman -a
dh_installudev -a
ifeq (${enable_system},enable)
@@ -393,35 +390,6 @@ debian/control: debian/control-in debian/rules
chmod -w $@
endif
sysdata-components :=
@@ -441,39 +431,6 @@ endif
##############################################
### firmware, qemu-user-data package
-### openbios rules
-b/openbios/config-host.mak:
@ -363,10 +367,10 @@ index 9d9f18f..1dc1e10 100755
- ${MAKE} -C ${@D} V=${V} EXTRACFLAGS="-ffreestanding -fno-pic -fno-stack-protector"
- @touch $@
-install-openbios: build-openbios
- install -m 0644 b/openbios/obj-ppc/openbios-qemu.elf "${sysdatadir}/openbios-ppc"
- install -m 0644 b/openbios/obj-sparc32/openbios-builtin.elf "${sysdatadir}/openbios-sparc32"
- install -m 0644 b/openbios/obj-sparc64/openbios-builtin.elf "${sysdatadir}/openbios-sparc64"
- install -m 0644 -t "${sysdatadir}" \
- install -m 0644 b/openbios/obj-ppc/openbios-qemu.elf ${sysdataidir}/openbios-ppc
- install -m 0644 b/openbios/obj-sparc32/openbios-builtin.elf ${sysdataidir}/openbios-sparc32
- install -m 0644 b/openbios/obj-sparc64/openbios-builtin.elf ${sysdataidir}/openbios-sparc64
- install -m 0644 -t ${sysdataidir} \
- b/openbios/obj-sparc32/QEMU,tcx.bin \
- b/openbios/obj-sparc32/QEMU,cgthree.bin \
- b/openbios/obj-sparc64/QEMU,VGA.bin
@ -374,29 +378,33 @@ index 9d9f18f..1dc1e10 100755
-
-### powernv firmware in roms/skiboot
-build-skiboot: b/skiboot/skiboot.lid
-b/skiboot/skiboot.lid:
-b/skiboot/skiboot.lid: | roms/skiboot/.version
- mkdir -p b/skiboot
-# skiboot makefiles makes it difficult to *add* an option to CFLAGS.
-# Abuse OPTS= for this, with the default being -Os.
- grep -q '^OPTS=-Os$$' roms/skiboot/Makefile.main || \
- { echo "review OPTS= in skiboot/Makefile.main"; false; }
- ${MAKE} -C b/skiboot -f ${CURDIR}/roms/skiboot/Makefile \
- SRC=${CURDIR}/roms/skiboot \
- OPTS='-Os -ffile-prefix-map="${CURDIR}/roms/skiboot/"=' \
- CROSS_COMPILE=${PPC64_CROSSPFX} V=${V}
-install-skiboot: b/skiboot/skiboot.lid
- install -m 0644 -t "${sysdatadir}" $<
- install -m 0644 -t ${sysdataidir} $<
-sysdata-components += skiboot
-
### x86 optionrom
build-x86-optionrom: b/optionrom/built
b/optionrom/built:
@@ -471,48 +439,6 @@ install-palcode-clipper: b/qemu-palcode/palcode-clipper
install -m 0644 $< ${sysdatadir}/palcode-clipper
build-vof: b/vof/vof.bin
b/vof/vof.bin: | b
@@ -535,50 +492,6 @@ install-palcode-clipper: b/qemu-palcode/palcode-clipper
install -m 0644 $< ${sysdataidir}/palcode-clipper
sysdata-components += palcode-clipper
-### SLOF
-build-slof: b/SLOF/boot_rom.bin
-b/SLOF/boot_rom.bin:
-b/SLOF/boot_rom.bin: | b
- cp -al roms/SLOF b/
- env -u LDFLAGS -u CFLAGS $(MAKE) -C b/SLOF qemu CROSS="powerpc64-linux-gnu-" V=${V}
- env -u LDFLAGS -u CFLAGS $(MAKE) -C b/SLOF qemu CROSS=${PPC64_CROSSPFX} V=${V}
-install-slof: b/SLOF/boot_rom.bin
- install -m 0644 $< ${sysdatadir}/slof.bin
- install -m 0644 $< ${sysdataidir}/slof.bin
-sysdata-components += slof
-
-### s390x firmware in pc-bios/s390-ccw
@ -406,35 +414,37 @@ index 9d9f18f..1dc1e10 100755
- ${MAKE} -f debian/s390fw.mak OUT=b/s390fw/
- touch $@
-install-s390x-fw: build-s390x-fw
- install -m 0644 -t "${sysdatadir}" b/s390fw/s390*.img
- install -m 0644 -t ${sysdataidir} b/s390fw/s390*.img
-sysdata-components += s390x-fw
-
-### hppa-firmware (roms/seabios-hppa)
-build-hppa-fw: b/hppafw/hppa-firmware.img
-b/hppafw/hppa-firmware.img: | b
-b/hppafw/hppa-firmware.img:
- mkdir -p b/hppafw
- echo CONFIG_PARISC=y > roms/seabios-hppa/.config
- ${MAKE} -C roms/seabios-hppa olddefconfig
- ${MAKE} -C roms/seabios-hppa OUT=../../b/hppafw/ PYTHON=python3 parisc
- hppa-linux-gnu-strip -R.note -R.comment $@
-install-hppa-fw: b/hppafw/hppa-firmware.img
- install -m 0644 $< ${sysdatadir}
- install -m 0644 $< ${sysdataidir}
-sysdata-components += hppa-fw
-
-### opensbi (riscv firmware)
-# we only build v64 variants, not v32
-build-opensbi: b/opensbi/.built
-b/opensbi/.built: | b
-b/opensbi/.built:
- mkdir -p b/opensbi
- ${MAKE} -C roms/opensbi O=../../b/opensbi CROSS_COMPILE=riscv64-linux-gnu- V=${V} PLATFORM=generic
- riscv64-linux-gnu-strip --strip-unneeded -R.comment -R.note b/opensbi/platform/generic/firmware/fw_dynamic.elf
- ${MAKE} -C roms/opensbi O=../../b/opensbi CROSS_COMPILE=${RISCV64_CROSSPFX} V=${V} PLATFORM=generic
- ${RISCV64_CROSSPFX}strip --strip-unneeded -R.comment -R.note b/opensbi/platform/generic/firmware/fw_dynamic.elf
- touch $@
-install-opensbi: build-opensbi
- install -m 0644 b/opensbi/platform/generic/firmware/fw_dynamic.bin ${sysdatadir}/opensbi-riscv64-generic-fw_dynamic.bin
- install -m 0644 b/opensbi/platform/generic/firmware/fw_dynamic.elf ${sysdatadir}/opensbi-riscv64-generic-fw_dynamic.elf
- install -m 0644 b/opensbi/platform/generic/firmware/fw_dynamic.bin ${sysdataidir}/opensbi-riscv64-generic-fw_dynamic.bin
- install -m 0644 b/opensbi/platform/generic/firmware/fw_dynamic.elf ${sysdataidir}/opensbi-riscv64-generic-fw_dynamic.elf
-sysdata-components += opensbi
-
build-indep: $(addprefix build-, ${sysdata-components})
b/install-indep-prep.stamp:
### vbootrom (npcm7xx)
build-vbootrom: b/vbootrom/.built
b/vbootrom/.built: | b
--
2.25.1
2.30.2

View File

@ -0,0 +1,88 @@
From 3f65615b7108b1e50cf0647a6eb8cbef22dc14be Mon Sep 17 00:00:00 2001
From: Jackie Huang <jackie.huang@windriver.com>
Date: Mon, 12 Jun 2023 21:42:44 -0700
Subject: [PATCH] remove xen build for STX
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
debian/control | 14 --------------
debian/rules | 31 -------------------------------
2 files changed, 45 deletions(-)
diff --git a/debian/control b/debian/control
index 32600f51..16b25abf 100644
--- a/debian/control
+++ b/debian/control
@@ -247,20 +247,6 @@ Description: QEMU full system emulation binaries (x86)
On x86 host hardware this package also enables KVM kernel virtual machine
usage on systems which supports it.
-Package: qemu-system-xen
-Architecture: amd64
-Multi-Arch: no
-# do we really need qemu-system-data? keymaps only?
-Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-data (>> ${source:Upstream-Version}~),
- seabios, ipxe-qemu
-Recommends: qemu-utils,
- ovmf,
-Description: QEMU full system emulation (Xen helper package)
- This package provides the i386 system emulation binary to work
- together with the Xen hypervisor for some types of DomUs.
- This package is not useful by its own.
-
-
Package: qemu-utils
Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
Multi-Arch: foreign
diff --git a/debian/rules b/debian/rules
index d95b4af0..6743f90a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -40,7 +40,6 @@ BUILD_PACKAGES := $(shell dh_listpackages)
enable_system = $(if $(filter qemu-system,${BUILD_PACKAGES}),enable,disable)
enable_linux_user = $(if $(filter qemu-user,${BUILD_PACKAGES}),enable,disable)
-QEMU_XEN = /usr/libexec/xen-qemu-system-i386
PKGVERSION = Debian ${DEB_VERSION}
SAVEMODDIR = /run/qemu/$(shell echo -n "${PKGVERSION}" | tr --complement '[:alnum:]+-.~' '_')
sysdataidir = debian/qemu-system-data/usr/share/qemu
@@ -306,36 +305,6 @@ ifeq ($(filter-out $(DEB_HOST_ARCH),amd64)${enable_system},enable)
qemu-builds += microvm
endif
-##############################################
-# xen build (amd64 arch only, i386-softmmu target only)
-configure-xen: b/xen/configured
-b/xen/configured: configure
- # system build for qemu-system-xen
- rm -rf b/xen; mkdir -p b/xen
- cd b/xen && \
- ../../configure ${common_configure_opts} \
- --disable-blobs --disable-docs --disable-tools \
- --without-default-features \
- --enable-avx2 --enable-avx512f \
- --enable-xen --target-list=i386-softmmu \
- --enable-xen-pci-passthrough \
- --disable-tcg --disable-kvm \
- --audio-drv-list= \
- --enable-vnc --enable-vnc-jpeg \
- --enable-spice \
- ${QEMU_XEN_CONFIGURE_OPTIONS}
- touch $@
-build-xen: b/xen/built
-b/xen/built: b/xen/configured
- $(MAKE) -C b/xen V=${V} qemu-system-i386
- touch $@
-install-xen: b/xen/built
- install -D b/xen/qemu-system-i386 \
- debian/qemu-system-xen${QEMU_XEN}
-ifeq (${DEB_HOST_ARCH}-${enable_system},amd64-enable)
-qemu-builds += xen
-endif
-
##############################################
# linux-user-static build
configure-user-static: b/user-static/configured
--
2.39.0

View File

@ -0,0 +1,35 @@
From 5b3c6ce515cd027eaf9ccf3a8b4b7b8ce019f1ff Mon Sep 17 00:00:00 2001
From: Jackie Huang <jackie.huang@windriver.com>
Date: Tue, 13 Jun 2023 05:43:47 +0000
Subject: [PATCH 1/2] rules: remove vof
build-vof for powerpc64 is newly added in 7.2, not used.
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
debian/rules | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/debian/rules b/debian/rules
index 6743f90a..67549c4d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -400,15 +400,6 @@ endif
### firmware, qemu-user-data package
-build-vof: b/vof/vof.bin
-b/vof/vof.bin: | b
- mkdir -p b/vof
- printf 'CC=$${CROSS}gcc\nLD=$${CROSS}ld\nOBJCOPY=$${CROSS}objcopy\nEXTRA_CFLAGS=-m32 -mbig-endian' > b/vof/config.mak
- ${MAKE} -C b/vof CROSS=${PPC64_CROSSPFX} SRC_DIR=../../pc-bios/vof -f../../pc-bios/vof/Makefile
-install-vof: b/vof/vof.bin
- install -m 0644 -t ${sysdataidir} $<
-sysdata-components += vof
-
### x86 optionrom
build-x86-optionrom: b/optionrom/built
b/optionrom/built:
--
2.30.2

View File

@ -0,0 +1,34 @@
From e628f96df051dae5f2d5b6baf89deb9470207478 Mon Sep 17 00:00:00 2001
From: Jackie Huang <jackie.huang@windriver.com>
Date: Tue, 13 Jun 2023 05:56:58 +0000
Subject: [PATCH 2/2] add condition for dh_installdocs
This should only be installed when linux_user is enabled.
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
debian/rules | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/debian/rules b/debian/rules
index 67549c4d..2d48c723 100755
--- a/debian/rules
+++ b/debian/rules
@@ -357,10 +357,14 @@ build-arch: $(addprefix build-, ${qemu-builds})
override_dh_auto_install-arch: $(addprefix install-, ${qemu-builds})
override_dh_installdocs:
+ifeq ($(enable_linux_user),enable)
dh_installdocs -Nqemu-user-binfmt
dh_installdocs -pqemu-user-binfmt --link-doc=qemu-user
+endif
override_dh_installchangelogs:
+ifeq ($(enable_linux_user),enable)
dh_installchangelogs -Nqemu-user-binfmt
+endif
override_dh_installinit:
dh_installinit -pqemu-guest-agent
override_dh_installsystemd:
--
2.30.2

View File

@ -0,0 +1,38 @@
From 92ac85437328dd35bc020b6ea7fbe008e479c38a Mon Sep 17 00:00:00 2001
From: Jackie Huang <jackie.huang@windriver.com>
Date: Tue, 13 Jun 2023 07:12:50 +0000
Subject: [PATCH] fix for dh_missing
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
debian/not-installed | 3 +++
debian/qemu-system-common.install | 2 ++
2 files changed, 5 insertions(+)
diff --git a/debian/not-installed b/debian/not-installed
index b691757c..a7fb0fb1 100644
--- a/debian/not-installed
+++ b/debian/not-installed
@@ -15,3 +15,6 @@ usr/bin/qemu-edid
# this one might be helpful for qemu-system -k <lang>
# but is -k flag useful these days?
usr/bin/qemu-keymap
+usr/share/locale/*
+usr/bin/qemu-system-*
+usr/share/doc/qemu/user/*
diff --git a/debian/qemu-system-common.install b/debian/qemu-system-common.install
index 47ed9d9c..993b7942 100644
--- a/debian/qemu-system-common.install
+++ b/debian/qemu-system-common.install
@@ -1,6 +1,8 @@
debian/qemu-ifdown etc/
debian/tmp/usr/share/man/man1/qemu-system.1
debian/tmp/usr/share/qemu/trace-events-all
+debian/tmp/usr/share/qemu/vhost-user/50-qemu-gpu.json
+debian/tmp/usr/lib/qemu/vhost-user-gpu
debian/tmp/usr/bin/qemu-pr-helper
debian/tmp/usr/share/man/man8/qemu-pr-helper.8
debian/tmp/usr/share/man/man7/qemu-qmp-ref.7
--
2.30.2

View File

@ -0,0 +1,28 @@
From 4f0fd874a11c140dff8ca7844493fe310a183880 Mon Sep 17 00:00:00 2001
From: Jackie Huang <jackie.huang@windriver.com>
Date: Thu, 15 Jun 2023 01:48:28 -0700
Subject: [PATCH] remove dependency on qemu-system-ARCH
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
debian/control | 4 ----
1 file changed, 4 deletions(-)
diff --git a/debian/control b/debian/control
index 16b25abf..faaaef03 100644
--- a/debian/control
+++ b/debian/control
@@ -147,10 +147,6 @@ Package: qemu-system
Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
Multi-Arch: foreign
Depends: ${misc:Depends},
- qemu-system-arm,
- qemu-system-mips,
- qemu-system-ppc,
- qemu-system-sparc,
qemu-system-x86,
qemu-system-misc
Description: QEMU full system emulation binaries
--
2.39.0

View File

@ -0,0 +1,31 @@
From f202f6d015a5361f2849d72a3fc334da0dc0ae20 Mon Sep 17 00:00:00 2001
From: Jackie Huang <jackie.huang@windriver.com>
Date: Thu, 15 Jun 2023 02:27:25 -0700
Subject: [PATCH] workaround for libvirt breaks
qemu 6.0+ breaks libvirt <7.2(issue with hotplug on attach-device):
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1932264
This can be removed if libvirt is upgraded to 7.2+
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
debian/control | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/debian/control b/debian/control
index faaaef03..2a37ef87 100644
--- a/debian/control
+++ b/debian/control
@@ -203,7 +203,7 @@ Package: qemu-system-common
Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32
Multi-Arch: no
Replaces: qemu-system-data (<< 1:3.1+dfsg-1~), qemu-utils (<< 1:3.1+dfsg-3~)
-Breaks: qemu-system-data (<< 1:3.1+dfsg-1~), qemu-utils (<< 1:3.1+dfsg-3~), libvirt-daemon (<< 7.2.0-1)
+Breaks: qemu-system-data (<< 1:3.1+dfsg-1~), qemu-utils (<< 1:3.1+dfsg-3~),
Depends: ${misc:Depends}, ${shlibs:Depends},
# to fix wrong acl for newly created device node on ubuntu:
Description: QEMU full system emulation binaries (common files)
--
2.39.0

View File

@ -1 +1,7 @@
0001-Customize-Debian-build-files-for-STX.patch
0002-remove-xen-build-for-STX.patch
0003-rules-remove-vof.patch
0004-add-condition-for-dh_installdocs.patch
0005-fix-for-dh_missing.patch
0006-remove-dependency-on-qemu-system-ARCH.patch
0007-workaround-for-libvirt-breaks.patch

View File

@ -1,7 +1,7 @@
---
debname: qemu
debver: 5.2+dfsg-11+deb11u3
archive: https://snapshot.debian.org/archive/debian/20231021T030056Z/pool/main/q/qemu/
debver: 7.2+dfsg-7
archive: https://snapshot.debian.org/archive/debian/20230605T024459Z/pool/main/q/qemu/
revision:
dist: $STX_DIST
GITREVCOUNT:

View File

@ -25,23 +25,25 @@ STX-Author: Jim Somerville <Jim.Somerville@windriver.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
Signed-off-by: Rafael Falcao <Rafael.VieiraFalcao@windriver.com>
[Rebased original changes to the qemu 7.2 version]
Signed-off-by: david.liu <david.liu@windriver.com>
---
softmmu/vl.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/softmmu/vl.c b/softmmu/vl.c
index e6e0ad5a92..27ce96f671 100644
index 5115221e..a1720fe4 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -1688,9 +1688,17 @@ static void version(void)
@@ -834,9 +834,17 @@ static void version(void)
QEMU_COPYRIGHT "\n");
}
+static void print_stx_warning(void)
+{
+ printf("\nWARNING: Direct use of qemu-kvm from the command line is not supported by StarlingX.\n"
+ "WARNING: Use libvirt as the stable management interface.\n"
+ "WARNING: Some command line options listed here may not be available in future releases.\n\n");
+ "WARNING: Use libvirt as the stable management interface.\n"
+ "WARNING: Some command line options listed here may not be available in future releases.\n\n");
+}
+
static void help(int exitcode)
@ -50,8 +52,8 @@ index e6e0ad5a92..27ce96f671 100644
+ print_stx_warning();
printf("usage: %s [options] [disk_image]\n\n"
"'disk_image' is a raw hard disk image for IDE hard disk 0\n\n",
error_get_progname());
@@ -1707,6 +1715,7 @@ static void help(int exitcode)
g_get_prgname());
@@ -862,6 +870,7 @@ static void help(int exitcode)
"\n"
QEMU_HELP_BOTTOM "\n");
@ -60,4 +62,5 @@ index e6e0ad5a92..27ce96f671 100644
}
--
2.25.1
2.30.2

View File

@ -9,32 +9,34 @@ setting syscalls.
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
[ Update hmp-commands struc ]
Signed-off-by: Rafael Falcao <Rafael.VieiraFalcao@windriver.com>
[Rebased original changes to the qemu 7.2 version]
Signed-off-by: david.liu <david.liu@windriver.com>
---
hmp-commands.hx | 30 ++++++++++++++++++++++++
include/monitor/hmp.h | 2 ++
migration/migration.c | 53 ++++++++++++++++++++++++++++++++++++++++++
monitor/hmp-cmds.c | 26 +++++++++++++++++++++
migration/migration.c | 52 ++++++++++++++++++++++++++++++++++++++++++
monitor/hmp-cmds.c | 25 ++++++++++++++++++++
qapi/misc.json | 30 ++++++++++++++++++++++++
softmmu/qemu-seccomp.c | 5 ----
softmmu/trace-events | 1 +
7 files changed, 142 insertions(+), 5 deletions(-)
7 files changed, 140 insertions(+), 5 deletions(-)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index ff2d7aa8f3..c5db85593b 100644
index 673e39a6..a00f3157 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1103,6 +1103,36 @@ SRST
once migration finished successfully. Only implemented for SPICE.
@@ -39,6 +39,36 @@ SRST
completes.
ERST
+ {
+ .name = "migrate_set_thread_cpumask",
+ .name = "migrate-set-thread-cpumask",
+ .args_type = "value:o",
+ .params = "value",
+ .help = "Set CPU mask for the migration thread."
+ "Defaults to CPU 0 if no mask is specified",
+ .cmd = hmp_migrate_set_thread_cpumask,
+ },
+ },
+
+SRST
+``migrate_set_thread_cpumask`` *value*
@ -42,7 +44,7 @@ index ff2d7aa8f3..c5db85593b 100644
+ERST
+
+ {
+ .name = "migrate_set_thread_priority",
+ .name = "migrate-set-thread-priority",
+ .args_type = "value:o",
+ .params = "value",
+ .help = "Set real time priority for the the migration thread."
@ -58,13 +60,13 @@ index ff2d7aa8f3..c5db85593b 100644
+ERST
+
{
.name = "dump-guest-memory",
.args_type = "paging:-p,detach:-d,windmp:-w,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:l?,length:l?",
.name = "quit|q",
.args_type = "",
diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h
index ed2913fd18..85100cd33d 100644
index dfbc0c9a..394e90db 100644
--- a/include/monitor/hmp.h
+++ b/include/monitor/hmp.h
@@ -72,6 +72,8 @@ void hmp_migrate_set_cache_size(Monitor *mon, const QDict *qdict);
@@ -70,6 +70,8 @@ void hmp_migrate_set_parameter(Monitor *mon, const QDict *qdict);
void hmp_client_migrate_info(Monitor *mon, const QDict *qdict);
void hmp_migrate_start_postcopy(Monitor *mon, const QDict *qdict);
void hmp_x_colo_lost_heartbeat(Monitor *mon, const QDict *qdict);
@ -74,10 +76,10 @@ index ed2913fd18..85100cd33d 100644
void hmp_expire_password(Monitor *mon, const QDict *qdict);
void hmp_change(Monitor *mon, const QDict *qdict);
diff --git a/migration/migration.c b/migration/migration.c
index 87a9b59f83..b7415a52ca 100644
index f485eea5..45f7b5d5 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -39,6 +39,7 @@
@@ -38,6 +38,7 @@
#include "qapi/qapi-visit-migration.h"
#include "qapi/qapi-visit-sockets.h"
#include "qapi/qapi-commands-migration.h"
@ -85,37 +87,36 @@ index 87a9b59f83..b7415a52ca 100644
#include "qapi/qapi-events-migration.h"
#include "qapi/qmp/qerror.h"
#include "qapi/qmp/qnull.h"
@@ -56,6 +57,16 @@
#include "net/announce.h"
#include "qemu/queue.h"
#include "multifd.h"
@@ -61,6 +62,15 @@
#include "sysemu/cpus.h"
#include "yank_functions.h"
#include "sysemu/qtest.h"
+#include <sched.h>
+
+/* #define DEBUG */
+
+#ifdef DEBUG
+#define DPRINTF(fmt, ...) \
+ printf(fmt, ## __VA_ARGS__)
+ printf(fmt, ## __VA_ARGS__)
+#else
+#define DPRINTF(fmt, ...)
+#endif
#ifdef CONFIG_VFIO
#include "hw/vfio/vfio-common.h"
@@ -118,6 +129,11 @@
static NotifierList migration_state_notifiers =
NOTIFIER_LIST_INITIALIZER(migration_state_notifiers);
#define MAX_THROTTLE (128 << 20) /* Migration transfer speed throttling */
@@ -116,6 +126,11 @@
#define DEFAULT_MIGRATE_ANNOUNCE_ROUNDS 5
#define DEFAULT_MIGRATE_ANNOUNCE_STEP 100
+/* variables for pinning the migration thread to a CPU and assigning the
+ * realtime priority to it */
+* realtime priority to it */
+static uint64_t migrate_thread_cpumask=0;
+static uint64_t migrate_thread_priority=0;
+
static bool deferred_incoming;
static NotifierList migration_state_notifiers =
NOTIFIER_LIST_INITIALIZER(migration_state_notifiers);
/* Messages sent on the return path from destination to source */
@@ -2215,6 +2231,30 @@ void qmp_migrate_set_cache_size(int64_t value, Error **errp)
qmp_migrate_set_parameters(&p, errp);
@@ -2180,6 +2195,30 @@ void migrate_init(MigrationState *s)
s->threshold_size = 0;
}
+void qmp_migrate_set_thread_cpumask(int64_t value, Error **errp)
@ -142,10 +143,10 @@ index 87a9b59f83..b7415a52ca 100644
+ migrate_thread_priority = value;
+}
+
int64_t qmp_query_migrate_cache_size(Error **errp)
int migrate_add_blocker_internal(Error *reason, Error **errp)
{
return migrate_xbzrle_cache_size();
@@ -3540,6 +3580,19 @@ static void *migration_thread(void *opaque)
/* Snapshots are similar to migrations, so check RUN_STATE_SAVE_VM too. */
@@ -3988,6 +4027,19 @@ static void *migration_thread(void *opaque)
qemu_savevm_send_postcopy_advise(s->to_dst_file);
}
@ -159,17 +160,17 @@ index 87a9b59f83..b7415a52ca 100644
+ memset(&schedp, 0, sizeof(schedp));
+ schedp.sched_priority = migrate_thread_priority;
+ if (sched_setscheduler(0, SCHED_FIFO, &schedp) < 0) {
+ DPRINTF("Error setting user input priority. Switching to default.\n");
+ DPRINTF("Error setting user input priority. Switching to default.\n");
+ }
+
if (migrate_colo_enabled()) {
/* Notify migration destination that we enable COLO */
qemu_savevm_send_colo_enable(s->to_dst_file);
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
index 65d8ff4849..a079ec3ace 100644
index 01b789a7..5395c64f 100644
--- a/monitor/hmp-cmds.c
+++ b/monitor/hmp-cmds.c
@@ -1471,6 +1471,32 @@ void hmp_x_colo_lost_heartbeat(Monitor *mon, const QDict *qdict)
@@ -1444,6 +1444,31 @@ out:
hmp_handle_error(mon, err);
}
@ -198,20 +199,19 @@ index 65d8ff4849..a079ec3ace 100644
+ return;
+ }
+}
+
void hmp_set_password(Monitor *mon, const QDict *qdict)
{
const char *protocol = qdict_get_str(qdict, "protocol");
#ifdef CONFIG_VNC
static void hmp_change_read_arg(void *opaque, const char *password,
diff --git a/qapi/misc.json b/qapi/misc.json
index 40df513856..1c75d85126 100644
index 27ef5a2b..0efe14c5 100644
--- a/qapi/misc.json
+++ b/qapi/misc.json
@@ -238,6 +238,36 @@
@@ -246,6 +246,36 @@
'returns': 'str',
'features': [ 'savevm-monitor-nodes' ] }
+##
+# @migrate_set_thread_cpumask:
+# @migrate-set-thread-cpumask:
+#
+# Set migration thread CPU mask.
+#
@ -223,10 +223,10 @@ index 40df513856..1c75d85126 100644
+#
+# Since: 0.14.0
+##
+{ 'command': 'migrate_set_thread_cpumask', 'data': {'value': 'int'} }
+{ 'command': 'migrate-set-thread-cpumask', 'data': {'value': 'int'} }
+
+##
+# @migrate_set_thread_priority:
+# @migrate-set-thread-priority:
+#
+# Set migration thread Real Timer priority mask.
+#
@ -238,35 +238,39 @@ index 40df513856..1c75d85126 100644
+#
+# Since: 0.14.0
+##
+{ 'command': 'migrate_set_thread_priority', 'data': {'value': 'int'} }
+{ 'command': 'migrate-set-thread-priority', 'data': {'value': 'int'} }
+
##
# @change:
# @getfd:
#
diff --git a/softmmu/qemu-seccomp.c b/softmmu/qemu-seccomp.c
index 8325ecb766..b1b8431eb3 100644
index d66a2a12..2bfbcea8 100644
--- a/softmmu/qemu-seccomp.c
+++ b/softmmu/qemu-seccomp.c
@@ -101,11 +101,6 @@ static const struct QemuSeccompSyscall blacklist[] = {
{ SCMP_SYS(setpriority), QEMU_SECCOMP_SET_RESOURCECTL },
{ SCMP_SYS(sched_setparam), QEMU_SECCOMP_SET_RESOURCECTL },
{ SCMP_SYS(sched_getparam), QEMU_SECCOMP_SET_RESOURCECTL },
@@ -258,11 +258,6 @@ static const struct QemuSeccompSyscall denylist[] = {
0, NULL, SCMP_ACT_ERRNO(EPERM) },
{ SCMP_SYS(sched_setparam), QEMU_SECCOMP_SET_RESOURCECTL,
0, NULL, SCMP_ACT_ERRNO(EPERM) },
- { SCMP_SYS(sched_setscheduler), QEMU_SECCOMP_SET_RESOURCECTL,
- ARRAY_SIZE(sched_setscheduler_arg), sched_setscheduler_arg },
- { SCMP_SYS(sched_getscheduler), QEMU_SECCOMP_SET_RESOURCECTL },
- { SCMP_SYS(sched_setaffinity), QEMU_SECCOMP_SET_RESOURCECTL },
- { SCMP_SYS(sched_getaffinity), QEMU_SECCOMP_SET_RESOURCECTL },
{ SCMP_SYS(sched_get_priority_max), QEMU_SECCOMP_SET_RESOURCECTL },
{ SCMP_SYS(sched_get_priority_min), QEMU_SECCOMP_SET_RESOURCECTL },
- ARRAY_SIZE(sched_setscheduler_arg), sched_setscheduler_arg,
- SCMP_ACT_ERRNO(EPERM) },
- { SCMP_SYS(sched_setaffinity), QEMU_SECCOMP_SET_RESOURCECTL,
- 0, NULL, SCMP_ACT_ERRNO(EPERM) },
};
static inline __attribute__((unused)) int
diff --git a/softmmu/trace-events b/softmmu/trace-events
index b80ca042e1..b0210d70c3 100644
index 22606dc2..ec100a33 100644
--- a/softmmu/trace-events
+++ b/softmmu/trace-events
@@ -26,3 +26,4 @@ runstate_set(int current_state, const char *current_state_str, int new_state, co
@@ -31,6 +31,7 @@ runstate_set(int current_state, const char *current_state_str, int new_state, co
system_wakeup_request(int reason) "reason=%d"
qemu_system_shutdown_request(int reason) "reason=%d"
qemu_system_powerdown_request(void) ""
+migrate_thread(uint64_t migrate_thread_cpumask, uint64_t migrate_thread_priority) "migration Thread pinned to %" PRIu64 "with Priority %" PRIu64
#dirtylimit.c
dirtylimit_state_initialize(int max_cpus) "dirtylimit state initialize: max cpus %d"
--
2.25.1
2.30.2

View File

@ -5,39 +5,41 @@ Subject: [PATCH] STX: qemu dpdk changes for openvswitch dpdk
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
Signed-off-by: Rafael Falcao <Rafael.VieiraFalcao@windriver.com>
[Rebased original changes to the qemu 7.2 version]
Signed-off-by: david.liu <david.liu@windriver.com>
---
configure | 26 ++++++++++++++++++
configure | 27 +++++++++++++++++
hw/net/virtio-net.c | 5 ++++
softmmu/vl.c | 67 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 98 insertions(+)
softmmu/vl.c | 70 ++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 101 insertions(+), 1 deletion(-)
diff --git a/configure b/configure
index 18c26e0389..cb6d3c08fc 100755
index 5f1828f1..6b92b5cb 100755
--- a/configure
+++ b/configure
@@ -1106,6 +1106,11 @@ for opt do
@@ -853,6 +853,11 @@ for opt do
;;
--enable-whpx) whpx="enabled"
--with-coroutine=*) coroutine="$optarg"
;;
+ --disable-dpdk) dpdk="no"
+ ;;
+ --dpdkdir=*) rte_sdk="$optarg"
+ dpdk="yes"
+ dpdk="yes"
+ ;;
--disable-tcg-interpreter) tcg_interpreter="no"
--disable-zlib-test)
;;
--enable-tcg-interpreter) tcg_interpreter="yes"
@@ -5993,6 +5998,27 @@ if test "$guest_agent" = "yes" ; then
echo "CONFIG_GUEST_AGENT=y" >> $config_host_mak
--disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
@@ -2401,6 +2406,28 @@ if test -n "$gdb_bin"; then
fi
fi
echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
+if test "$dpdk" = "yes"; then
+ if test "${rte_sdk+set}" != set; then
+ echo "No dpdkdir given"
+ exit 1
+ fi
+ echo "dpdk_dir=`eval echo $rte_sdk`" >> $config_host_mak
+ echo "dpdk_lib_dir=\$(dpdk_dir)/x86_64-default-linuxapp-gcc/lib" >> $config_host_mak
+ echo "dpdk_lib_dir=\$(dpdk_dir)/x86_64-default-linuxapp-gcc/lib" >> $config_host_mak_
+ echo "dpdk_inc_dir=\$(dpdk_dir)/x86_64-default-linuxapp-gcc/include" >> $config_host_mak
+ echo "" >> $config_host_mak
+ echo "dpdk_libs=\$(dpdk_lib_dir)/librte_eal.a \\" >> $config_host_mak
@ -52,11 +54,12 @@ index 18c26e0389..cb6d3c08fc 100755
+ LIBS="\$(dpdk_libs) $LIBS"
+ QEMU_INCLUDES="-I\$(dpdk_inc_dir) $QEMU_INCLUDES"
+fi
if test "$vde" = "yes" ; then
echo "CONFIG_VDE=y" >> $config_host_mak
echo "VDE_LIBS=$vde_libs" >> $config_host_mak
+
if test "$container" != no; then
echo "ENGINE=$container" >> $config_host_mak
fi
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 9179013ac4..a25381c452 100644
index aba12759..01ca6015 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -2,6 +2,7 @@
@ -67,7 +70,7 @@ index 9179013ac4..a25381c452 100644
*
* Authors:
* Anthony Liguori <aliguori@us.ibm.com>
@@ -1509,6 +1510,7 @@ static void receive_header(VirtIONet *n, const struct iovec *iov, int iov_cnt,
@@ -1671,6 +1672,7 @@ static void receive_header(VirtIONet *n, const struct iovec *iov, int iov_cnt,
}
}
@ -75,7 +78,7 @@ index 9179013ac4..a25381c452 100644
static int receive_filter(VirtIONet *n, const uint8_t *buf, int size)
{
static const uint8_t bcast[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
@@ -1559,6 +1561,7 @@ static int receive_filter(VirtIONet *n, const uint8_t *buf, int size)
@@ -1721,6 +1723,7 @@ static int receive_filter(VirtIONet *n, const uint8_t *buf, int size)
return 0;
}
@ -83,7 +86,7 @@ index 9179013ac4..a25381c452 100644
static uint8_t virtio_net_get_hash_type(bool isip4,
bool isip6,
@@ -1687,8 +1690,10 @@ static ssize_t virtio_net_receive_rcu(NetClientState *nc, const uint8_t *buf,
@@ -1852,8 +1855,10 @@ static ssize_t virtio_net_receive_rcu(NetClientState *nc, const uint8_t *buf,
return 0;
}
@ -95,10 +98,10 @@ index 9179013ac4..a25381c452 100644
offset = i = 0;
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 27ce96f671..5f556f1a0e 100644
index a1720fe4..6c68f123 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -2445,6 +2445,35 @@ static const QEMUOption *lookup_opt(int argc, char **argv,
@@ -1583,6 +1583,35 @@ static const QEMUOption *lookup_opt(int argc, char **argv,
return popt;
}
@ -131,24 +134,27 @@ index 27ce96f671..5f556f1a0e 100644
+}
+#endif
+
static MachineClass *select_machine(void)
static MachineClass *select_machine(QDict *qdict, Error **errp)
{
GSList *machines = object_class_get_list(TYPE_MACHINE, false);
@@ -2901,6 +2930,10 @@ void qemu_init(int argc, char **argv, char **envp)
const char *optarg = qdict_get_try_str(qdict, "type");
@@ -2644,6 +2673,11 @@ void qemu_init(int argc, char **argv)
MachineClass *machine_class;
bool userconfig = true;
FILE *vmstate_dump_file = NULL;
Error *main_loop_err = NULL;
Error *err = NULL;
+
+#ifdef CONFIG_ENABLE_DPDK
+ bool use_dpdk = false;
+ int retval;
+#endif
bool list_data_dirs = false;
char **dirs;
const char *mem_path = NULL;
@@ -2922,6 +2955,37 @@ void qemu_init(int argc, char **argv, char **envp)
atexit(qemu_run_exit_notifiers);
qemu_init_exec_dir(argv[0]);
qemu_add_opts(&qemu_drive_opts);
qemu_add_drive_opts(&qemu_legacy_drive_opts);
@@ -2680,7 +2714,38 @@ void qemu_init(int argc, char **argv)
error_init(argv[0]);
qemu_init_exec_dir(argv[0]);
-
+
+#ifdef CONFIG_ENABLE_DPDK
+ /* need to check for -enable-dpdk before calling rte_eal_init. If
+ * it is not found, don't call rte_eal_init */
@ -162,13 +168,13 @@ index 27ce96f671..5f556f1a0e 100644
+ const QEMUOption *popt;
+ popt = quick_scan_opt(argc, argv, &optind);
+ if (popt) {
+ switch (popt->index) {
+ case QEMU_OPTION_enable_dpdk:
+ use_dpdk = true;
+ break;
+ switch (popt->index) {
+ case QEMU_OPTION_enable_dpdk:
+ use_dpdk = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if (use_dpdk) {
@ -179,19 +185,20 @@ index 27ce96f671..5f556f1a0e 100644
+ argv += retval;
+ }
+#endif
+
module_call_init(MODULE_INIT_QOM);
module_call_init(MODULE_INIT_MIGRATION);
+
qemu_init_arch_modules();
@@ -3869,6 +3933,9 @@ void qemu_init(int argc, char **argv, char **envp)
qemu_init_subsystems();
@@ -3532,6 +3597,9 @@ void qemu_init(int argc, char **argv)
cpu_timers_init();
user_register_global_props();
+ extern int
+ rte_eal_init(int argc, char **argv);
+
+ extern int rte_eal_init(int argc, char **argv);
+
replay_configure(icount_opts);
if (incoming && !preconfig_exit_requested) {
configure_rtc(qemu_find_opts_singleton("rtc"));
--
2.25.1
2.30.2

View File

@ -14,18 +14,20 @@ Signed-off-by: Paul Barrette <paul.barrette@windriver.com>
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
[ Update qemu-options.hx struc ]
Signed-off-by: Rafael Falcao <Rafael.VieiraFalcao@windriver.com>
[Rebased original changes to the qemu 7.2 version]
Signed-off-by: david.liu <david.liu@windriver.com>
---
qemu-options.hx | 7 +++++++
softmmu/vl.c | 1 +
2 files changed, 8 insertions(+)
diff --git a/qemu-options.hx b/qemu-options.hx
index 104632ea34..1a339453e4 100644
index 7f99d15b..fd6a45f1 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -906,6 +906,13 @@ DEFHEADING()
@@ -1147,6 +1147,13 @@ backend describes how QEMU handles the data.
DEFHEADING(Block device options:)
ERST
+DEF("enable-dpdk", 0, QEMU_OPTION_enable_dpdk,
+ "-enable-dpdk initialized DPDK EAL environment\n", QEMU_ARCH_ALL)
@ -38,10 +40,10 @@ index 104632ea34..1a339453e4 100644
"-fda/-fdb file use 'file' as floppy disk 0/1 image\n", QEMU_ARCH_ALL)
DEF("fdb", HAS_ARG, QEMU_OPTION_fdb, "", QEMU_ARCH_ALL)
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 5f556f1a0e..a398697d0d 100644
index 6c68f123..95fd30aa 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -3899,6 +3899,7 @@ void qemu_init(int argc, char **argv, char **envp)
@@ -3552,6 +3552,7 @@ void qemu_init(int argc, char **argv)
qsp_enable();
break;
case QEMU_OPTION_nouserconfig:
@ -50,4 +52,5 @@ index 5f556f1a0e..a398697d0d 100644
break;
default:
--
2.25.1
2.30.2

View File

@ -10,23 +10,27 @@ compile time define that can be used internally.
Signed-off-by: Paul Barrette <paul.barrette@windriver.com>
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
Signed-off-by: Rafael Falcao <Rafael.VieiraFalcao@windriver.com>
[Rebased original changes to the qemu 7.2 version]
Signed-off-by: david.liu <david.liu@windriver.com>
---
configure | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/configure b/configure
index cb6d3c08fc..d0c4b79446 100755
index 6b92b5cb..1eed8512 100755
--- a/configure
+++ b/configure
@@ -6003,7 +6003,8 @@ if test "$dpdk" = "yes"; then
@@ -2411,8 +2411,9 @@ if test "$dpdk" = "yes"; then
echo "No dpdkdir given"
exit 1
fi
- echo "dpdk_dir=`eval echo $rte_sdk`" >> $config_host_mak
+ echo "CONFIG_ENABLE_DPDK=y" >> $config_host_mak
+ echo "dpdk_dir=`eval echo $rte_sdk`" >> $config_host_mak
echo "dpdk_lib_dir=\$(dpdk_dir)/x86_64-default-linuxapp-gcc/lib" >> $config_host_mak
echo "dpdk_dir=`eval echo $rte_sdk`" >> $config_host_mak
- echo "dpdk_lib_dir=\$(dpdk_dir)/x86_64-default-linuxapp-gcc/lib" >> $config_host_mak_
+ echo "dpdk_lib_dir=\$(dpdk_dir)/x86_64-default-linuxapp-gcc/lib" >> $config_host_mak
echo "dpdk_inc_dir=\$(dpdk_dir)/x86_64-default-linuxapp-gcc/include" >> $config_host_mak
echo "" >> $config_host_mak
echo "dpdk_libs=\$(dpdk_lib_dir)/librte_eal.a \\" >> $config_host_mak
--
2.25.1
2.30.2

View File

@ -20,15 +20,17 @@ collect2: error: ld returned 1 exit status
Signed-off-by: Amy Fong <amy.fong@windriver.com>
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
Signed-off-by: Rafael Falcao <Rafael.VieiraFalcao@windriver.com>
[Rebased original changes to the qemu 7.2 version]
Signed-off-by: david.liu <david.liu@windriver.com>
---
configure | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure b/configure
index d0c4b79446..e90a4e8fe0 100755
index 49e6ca1e..f61a8d3d 100755
--- a/configure
+++ b/configure
@@ -6017,7 +6017,7 @@ if test "$dpdk" = "yes"; then
@@ -2425,7 +2425,7 @@ if test "$dpdk" = "yes"; then
echo " \$(dpdk_lib_dir)/librte_mempool.a \\" >> $config_host_mak
echo " \$(dpdk_lib_dir)/librte_ring.a \\" >> $config_host_mak
echo " \$(dpdk_lib_dir)/librte_malloc.a" >> $config_host_mak
@ -36,6 +38,7 @@ index d0c4b79446..e90a4e8fe0 100755
+ LIBS="\$(dpdk_libs) -ldl $LIBS"
QEMU_INCLUDES="-I\$(dpdk_inc_dir) $QEMU_INCLUDES"
fi
if test "$vde" = "yes" ; then
--
2.25.1
2.30.2

View File

@ -5,28 +5,30 @@ Subject: [PATCH] STX: qemu dpdk custom config
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
Signed-off-by: Rafael Falcao <Rafael.VieiraFalcao@windriver.com>
[Rebased original changes to the qemu 7.2 version]
Signed-off-by: david.liu <david.liu@windriver.com>
---
configure | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index e90a4e8fe0..77c0321b5f 100755
index 622348b7..07b40fb1 100755
--- a/configure
+++ b/configure
@@ -1111,6 +1111,8 @@ for opt do
@@ -858,6 +858,8 @@ for opt do
--dpdkdir=*) rte_sdk="$optarg"
dpdk="yes"
dpdk="yes"
;;
+ --dpdktarget=*) rte_target="$optarg"
+ ;;
--disable-tcg-interpreter) tcg_interpreter="no"
--disable-zlib-test)
;;
--enable-tcg-interpreter) tcg_interpreter="yes"
@@ -6005,9 +6007,10 @@ if test "$dpdk" = "yes"; then
--disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
@@ -2413,9 +2415,10 @@ if test "$dpdk" = "yes"; then
fi
echo "CONFIG_ENABLE_DPDK=y" >> $config_host_mak
echo "dpdk_dir=`eval echo $rte_sdk`" >> $config_host_mak
- echo "dpdk_lib_dir=\$(dpdk_dir)/x86_64-default-linuxapp-gcc/lib" >> $config_host_mak
echo "dpdk_dir=`eval echo $rte_sdk`" >> $config_host_mak
- echo "dpdk_lib_dir=\$(dpdk_dir)/x86_64-default-linuxapp-gcc/lib" >> $config_host_mak
- echo "dpdk_inc_dir=\$(dpdk_dir)/x86_64-default-linuxapp-gcc/include" >> $config_host_mak
echo "" >> $config_host_mak
+ echo "dpdk_target=`eval echo $rte_target`" >> $config_host_mak
@ -36,4 +38,5 @@ index e90a4e8fe0..77c0321b5f 100755
echo " \$(dpdk_lib_dir)/libethdev.a \\" >> $config_host_mak
echo " \$(dpdk_lib_dir)/librte_cmdline.a \\" >> $config_host_mak
--
2.25.1
2.30.2

View File

@ -21,42 +21,55 @@ disk or allocate memory, thus breaking any realtime guarantees.
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
Signed-off-by: Rafael Falcao <Rafael.VieiraFalcao@windriver.com>
[Rebased original changes to the qemu 7.2 version]
Signed-off-by: david.liu <david.liu@windriver.com>
---
softmmu/physmem.c | 13 ++++++++++++-
softmmu/vl.c | 8 ++++----
2 files changed, 16 insertions(+), 5 deletions(-)
softmmu/physmem.c | 14 +++++++++++++-
softmmu/vl.c | 8 +++-----
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/softmmu/physmem.c b/softmmu/physmem.c
index 3027747c03..e63fad9b13 100644
index 1b606a30..b2cff2b9 100644
--- a/softmmu/physmem.c
+++ b/softmmu/physmem.c
@@ -1464,6 +1464,7 @@ static void *file_ram_alloc(RAMBlock *block,
Error **errp)
@@ -49,6 +49,7 @@
#include "sysemu/dma.h"
#include "sysemu/hostmem.h"
#include "sysemu/hw_accel.h"
+#include "sysemu/sysemu.h"
#include "sysemu/xen-mapcache.h"
#include "trace/trace-root.h"
@@ -1542,6 +1543,7 @@ static void *file_ram_alloc(RAMBlock *block,
{
uint32_t qemu_map_flags;
void *area;
+ int flags;
block->page_size = qemu_fd_getpagesize(fd);
if (block->mr->align % block->page_size) {
@@ -1510,8 +1511,13 @@ static void *file_ram_alloc(RAMBlock *block,
@@ -1588,11 +1590,16 @@ static void *file_ram_alloc(RAMBlock *block,
perror("ftruncate");
}
+ /* WRS - enable mlock */
+ /* WRS - enable mlock */
+ flags = block->flags & RAM_SHARED;
+ if (enable_mlock) {
+ flags |= MAP_LOCKED;
+ }
area = qemu_ram_mmap(fd, memory, block->mr->align,
- block->flags & RAM_SHARED, block->flags & RAM_PMEM);
+ flags, block->flags & RAM_PMEM);
qemu_map_flags = readonly ? QEMU_MAP_READONLY : 0;
qemu_map_flags |= (block->flags & RAM_SHARED) ? QEMU_MAP_SHARED : 0;
qemu_map_flags |= (block->flags & RAM_PMEM) ? QEMU_MAP_SYNC : 0;
qemu_map_flags |= (block->flags & RAM_NORESERVE) ? QEMU_MAP_NORESERVE : 0;
- area = qemu_ram_mmap(fd, memory, block->mr->align, qemu_map_flags, offset);
+ area = qemu_ram_mmap(fd, memory, block->mr->align, flags, block->flags & RAM_PMEM);
if (area == MAP_FAILED) {
error_setg_errno(errp, errno,
"unable to map backing store for guest RAM");
@@ -1937,6 +1943,11 @@ static void ram_block_add(RAMBlock *new_block, Error **errp, bool shared)
QEMU_MADV_DONTFORK);
@@ -2044,6 +2051,11 @@ static void ram_block_add(RAMBlock *new_block, Error **errp)
}
ram_block_notify_add(new_block->host, new_block->max_length);
ram_block_notify_add(new_block->host, new_block->used_length,
new_block->max_length);
+ if (enable_mlock) {
+ if (mlock(new_block->host, new_block->max_length) < 0) {
+ perror("mlock");
@ -66,26 +79,26 @@ index 3027747c03..e63fad9b13 100644
}
diff --git a/softmmu/vl.c b/softmmu/vl.c
index a398697d0d..527fe4e961 100644
index 5115221e..2a029b9e 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -2,6 +2,7 @@
* QEMU System Emulator
*
* Copyright (c) 2003-2008 Fabrice Bellard
+ * Copyright (c) 2013-2016 Wind River Systems, Inc. All rights reserved.
+ * Copyright (c) 2013-2023 Wind River Systems, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -38,6 +39,7 @@
#include "sysemu/tcg.h"
#include "sysemu/xen.h"
@@ -96,7 +97,6 @@
#include "fsdev/qemu-fsdev.h"
#endif
#include "sysemu/qtest.h"
-
#include "disas/disas.h"
+#include "qemu-common.h"
#include "qemu/error-report.h"
#include "qemu/sockets.h"
#include "sysemu/accel.h"
@@ -1111,10 +1113,8 @@ static QemuOptsList qemu_smp_opts = {
#include "trace.h"
@@ -750,10 +750,8 @@ static QemuOptsList qemu_smp_opts = {
static void realtime_init(void)
{
if (enable_mlock) {
@ -99,4 +112,5 @@ index a398697d0d..527fe4e961 100644
}
--
2.25.1
2.30.2

View File

@ -28,15 +28,17 @@ memory map.
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
[ Trimmed the shortlog ]
Signed-off-by: Rafael Falcao <Rafael.VieiraFalcao@windriver.com>
[Rebased original changes to the qemu 7.2 version]
Signed-off-by: david.liu <david.liu@windriver.com>
---
hw/virtio/vhost.c | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index 614ccc2bcb..05c045925a 100644
index fdcd1a8f..b2c9f5ee 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -61,6 +61,10 @@ bool vhost_has_free_slot(void)
@@ -62,6 +62,10 @@ bool vhost_has_free_slot(void)
return slots_limit > used_memslots;
}
@ -47,14 +49,14 @@ index 614ccc2bcb..05c045925a 100644
static void vhost_dev_sync_region(struct vhost_dev *dev,
MemoryRegionSection *section,
uint64_t mfirst, uint64_t mlast,
@@ -448,6 +452,21 @@ static void vhost_begin(MemoryListener *listener)
@@ -525,6 +529,21 @@ static void vhost_begin(MemoryListener *listener)
dev->n_tmp_sections = 0;
}
+static void vhost_update_backend_ring_mappings(struct vhost_dev *dev)
+{
+ int i,r;
+
+
+ if(dev->vhost_ops->backend_type != VHOST_BACKEND_TYPE_USER) {
+ return;
+ }
@ -69,27 +71,27 @@ index 614ccc2bcb..05c045925a 100644
static void vhost_commit(MemoryListener *listener)
{
struct vhost_dev *dev = container_of(listener, struct vhost_dev,
@@ -524,7 +543,7 @@ static void vhost_commit(MemoryListener *listener)
@@ -601,7 +620,7 @@ static void vhost_commit(MemoryListener *listener)
if (r < 0) {
VHOST_OPS_DEBUG("vhost_set_mem_table failed");
VHOST_OPS_DEBUG(r, "vhost_set_mem_table failed");
}
- goto out;
+ goto vring_mapping;
}
log_size = vhost_get_log_size(dev);
/* We allocate an extra 4K bytes to log,
@@ -543,6 +562,11 @@ static void vhost_commit(MemoryListener *listener)
@@ -620,6 +639,11 @@ static void vhost_commit(MemoryListener *listener)
vhost_dev_log_resize(dev, log_size);
}
+vring_mapping:
+ /* For vhost-user backend, update the vring mappings after we sent a new
+ * guest memory map. */
+ vhost_update_backend_ring_mappings(dev);
+/* For vhost-user backend, update the vring mappings after we sent a new
+* guest memory map. */
+ vhost_update_backend_ring_mappings(dev);
+
out:
/* Deref the old list of sections, this must happen _after_ the
* vhost_set_mem_table to ensure the client isn't still using the
--
2.25.1
2.30.2