SHA256
1
0
forked from pool/qemu
qemu/linux-user-use-target_ulong.patch
Dario Faggioli d58941a9c7 Accepting request 1006734 from home:dfaggioli:devel:Virtualization
- Runs of the test-suite seem much more stable now, in this version
  of QEMU. (bsc#1203610) We are also fine re-enabling running them
  in parallel.
- Switch QEMU Linux user to emulate the same CPU as the one of the
  host by default. This is a bit conrtoversial and tricky, when
  thinking about system emulation/virtualization. But for linux-user,
  it should be just fine. (bsc#1203684)
* Patches added:
  linux-user-use-max-as-default-CPU-model-.patch
- Be less verbose when packaging documentation. In fact, with just
  a couple of (minor) re-arrangements, we can get rid of having to
  list all the files all the time
- Package /etc/qemu/bridge.conf as '%config(noreplace). Next step
  will probably be to move it to /usr/etc/qemu (bsc#1201944)
- Switch to %autosetup for all products (this required some changes
  in update_git.sh)
- Run check-qtest sequentially, as it's more reliable, when in OBS
- Build with libbpf, fdt and capstone support
- Drop the patch adding our support document, and deal with that
  in the spec file directly
* Patches dropped:
  doc-add-our-support-doc-to-the-main-proj.patch
- Updated to latest upstream version 7.1
  * https://wiki.qemu.org/ChangeLog/7.1
  Be sure to also check the following pages:
  * https://qemu-project.gitlab.io/qemu/about/removed-features.html
  * https://qemu-project.gitlab.io/qemu/about/deprecated.html
  Some notable changes:
  * [x86] Support for architectural LBRs on KVM virtual machines
  * [x86] The libopcode-based disassembler has been removed. Use
          Capstone instead
  * [LoongArch] Add initial support for the LoongArch64 architecture.
  * [ARM] The emulated SMMUv3 now advertises support for SMMUv3.2-BBML2
  * [ARM] The xlnx-zynqmp SoC model now implements the 4 TTC timers
  * [ARM] The versal machine now models the Cortex-R5s in the Real-Time
          Processing Unit (RPU) subsystem
  * [ARM] The virt board now supports emulation of the GICv4.0
  * [ARM] New emulated CPU types: Cortex-A76, Neoverse-N1
  * [HPPA] Fix serial port pass-through from host to guest
  * [HPPA] Lots of general code improvements and tidy-ups
  * [RISC-V] RISC-V
  * [RISC-V] Add support for privileged spec version 1.12.0
  * [RISC-V] Use privileged spec version 1.12.0 for virt machine by default
  * [RISC-V] Allow software access to MIP SEIP
  * [RISC-V] Add initial support for the Sdtrig extension
  * [RISC-V] Optimisations and improvements for the vector extension
  * [VFIO] Experimental support for exposing emulated PCI devices over the
           new vfio-user protocol (a vfio-user client is not yet available
           in QEMU, though)
  * [QMP] The on-cbw-error option for copy-before-write filter, to specify
           behavior on CBW (copy before write) operation failure.
  * [QMP] The cbw-timeout option for copy-before-write filter, to specify
          timeout for CBW operation.
  * [QMP] New commands query-stats and query-stats-schema to retrieve
          statistics from various QEMU subsystems (right now only from
          KVM).
  * [QMP] The PanicAction can now be configured to report an exit-failure
          (useful for automated testing)
  * [Networking] QEMU can be compiled with the system slirp library even
                 when using CFI. This requires libslirp 4.7.
  * [Migration] Support for zero-copy-send on Linux, which reduces CPU
                usage on the source host. Note that locked memory is needed
                to support this
* Patches added:
  Revert-tests-qtest-enable-more-vhost-use.patch
  meson-remove-pkgversion-from-CONFIG_STAM.patch
* Patches dropped:
  AIO-Reduce-number-of-threads-for-32bit-h.patch
  Makefile-Don-t-check-pc-bios-as-pre-requ.patch
  Revert-8dcb404bff6d9147765d7dd3e9c849337.patch
  Revert-qht-constify-qht_statistics_init.patch
  XXX-dont-dump-core-on-sigabort.patch
  acpi_piix4-Fix-migration-from-SLE11-SP2.patch
  configure-only-populate-roms-if-softmmu.patch
  configure-remove-pkgversion-from-CONFIG_.patch
  coroutine-ucontext-use-QEMU_DEFINE_STATI.patch
  coroutine-use-QEMU_DEFINE_STATIC_CO_TLS.patch
  coroutine-win32-use-QEMU_DEFINE_STATIC_C.patch
  hostmem-default-the-amount-of-prealloc-t.patch
  hw-usb-hcd-ehci-fix-writeback-order.patch
  i8254-Fix-migration-from-SLE11-SP2.patch
  intc-exynos4210_gic-replace-snprintf-wit.patch
  modules-generates-per-target-modinfo.patch
  modules-introduces-module_kconfig-direct.patch
  pc-bios-s390-ccw-net-avoid-warning-about.patch
  pci-fix-overflow-in-snprintf-string-form.patch
  qemu-cvs-gettimeofday.patch
  qemu-cvs-ioctl_debug.patch
  qemu-cvs-ioctl_nodirection.patch
  qht-Revert-some-constification-in-qht.c.patch
  qom-handle-case-of-chardev-spice-module-.patch
  scsi-lsi53c895a-fix-use-after-free-in-ls.patch
  scsi-lsi53c895a-really-fix-use-after-fre.patch
  softmmu-Always-initialize-xlat-in-addres.patch
  sphinx-change-default-language-to-en.patch
  test-add-mapping-from-arch-of-i686-to-qe.patch
  tests-Fix-block-tests-to-be-compatible-w.patch
  tests-qtest-Move-the-fuzz-tests-to-x86-o.patch
  usb-Help-compiler-out-to-avoid-a-warning.patch

OBS-URL: https://build.opensuse.org/request/show/1006734
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=732
2022-09-29 06:46:40 +00:00

86 lines
3.9 KiB
Diff

From: Alexander Graf <agraf@suse.de>
Date: Tue, 9 Oct 2012 09:06:49 +0200
Subject: linux-user: use target_ulong
Linux syscalls pass pointers or data length or other information of that sort
to the kernel. This is all stuff you don't want to have sign extended.
Otherwise a host 64bit variable parameter with a size parameter will extend
it to a negative number, breaking lseek for example.
Pass syscall arguments as ulong always.
Signed-off-by: Alexander Graf <agraf@suse.de>
[JRZ: changes from linux-user/qemu.h wass moved to linux-user/user-internals.h]
Signed-off-by: Jose R Ziviani <jziviani@suse.de>
[DF: Forward port, i.e., use ulong for do_prctl too]
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
linux-user/syscall.c | 20 ++++++++++----------
linux-user/user-internals.h | 8 ++++----
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index b746511fe5ba1c03cf44a14ed811..de782620fe3c9169a58e442a6f05 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6405,8 +6405,8 @@ static abi_long do_prctl_inval1(CPUArchState *env, abi_long arg2)
#define do_prctl_sme_set_vl do_prctl_inval1
#endif
-static abi_long do_prctl(CPUArchState *env, abi_long option, abi_long arg2,
- abi_long arg3, abi_long arg4, abi_long arg5)
+static abi_long do_prctl(CPUArchState *env, abi_ulong option, abi_ulong arg2,
+ abi_ulong arg3, abi_ulong arg4, abi_ulong arg5)
{
abi_long ret;
@@ -8581,10 +8581,10 @@ _syscall2(int, pivot_root, const char *, new_root, const char *, put_old)
* of syscall results, can be performed.
* All errnos that do_syscall() returns must be -TARGET_<errcode>.
*/
-static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
- abi_long arg2, abi_long arg3, abi_long arg4,
- abi_long arg5, abi_long arg6, abi_long arg7,
- abi_long arg8)
+static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_ulong arg1,
+ abi_ulong arg2, abi_ulong arg3, abi_ulong arg4,
+ abi_ulong arg5, abi_ulong arg6, abi_ulong arg7,
+ abi_ulong arg8)
{
CPUState *cpu = env_cpu(cpu_env);
abi_long ret;
@@ -13203,10 +13203,10 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
return ret;
}
-abi_long do_syscall(CPUArchState *cpu_env, int num, abi_long arg1,
- abi_long arg2, abi_long arg3, abi_long arg4,
- abi_long arg5, abi_long arg6, abi_long arg7,
- abi_long arg8)
+abi_long do_syscall(CPUArchState *cpu_env, int num, abi_ulong arg1,
+ abi_ulong arg2, abi_ulong arg3, abi_ulong arg4,
+ abi_ulong arg5, abi_ulong arg6, abi_ulong arg7,
+ abi_ulong arg8)
{
CPUState *cpu = env_cpu(cpu_env);
abi_long ret;
diff --git a/linux-user/user-internals.h b/linux-user/user-internals.h
index 0280e76addda504ea9745a17324b..1026e09da8caecf3e74159ea319e 100644
--- a/linux-user/user-internals.h
+++ b/linux-user/user-internals.h
@@ -59,10 +59,10 @@ int info_is_fdpic(struct image_info *info);
void target_set_brk(abi_ulong new_brk);
void syscall_init(void);
-abi_long do_syscall(CPUArchState *cpu_env, int num, abi_long arg1,
- abi_long arg2, abi_long arg3, abi_long arg4,
- abi_long arg5, abi_long arg6, abi_long arg7,
- abi_long arg8);
+abi_long do_syscall(CPUArchState *cpu_env, int num, abi_ulong arg1,
+ abi_ulong arg2, abi_ulong arg3, abi_ulong arg4,
+ abi_ulong arg5, abi_ulong arg6, abi_ulong arg7,
+ abi_ulong arg8);
extern __thread CPUState *thread_cpu;
G_NORETURN void cpu_loop(CPUArchState *env);
abi_long get_errno(abi_long ret);