[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-commits] [qemu/qemu] de52cb: linux-user: Emulate /proc/cpuinfo out
From: |
Richard Henderson |
Subject: |
[Qemu-commits] [qemu/qemu] de52cb: linux-user: Emulate /proc/cpuinfo output for riscv |
Date: |
Tue, 16 May 2023 08:53:13 -0700 |
Branch: refs/heads/staging
Home: https://github.com/qemu/qemu
Commit: de52cbdacca9ab8baf41a331840989f8c18c0f7b
https://github.com/qemu/qemu/commit/de52cbdacca9ab8baf41a331840989f8c18c0f7b
Author: Afonso Bordado <afonsobordado@gmail.com>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M linux-user/syscall.c
M tests/tcg/riscv64/Makefile.target
A tests/tcg/riscv64/cpuinfo.c
Log Message:
-----------
linux-user: Emulate /proc/cpuinfo output for riscv
RISC-V does not expose all extensions via hwcaps, thus some userspace
applications may want to query these via /proc/cpuinfo.
Currently when querying this file the host's file is shown instead
which is slightly confusing. Emulate a basic /proc/cpuinfo file
with mmu info and an ISA string.
Signed-off-by: Afonso Bordado <afonsobordado@gmail.com>
Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com>
Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>
Message-Id: <167873059442.9885.15152085316575248452-0@git.sr.ht>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Commit: f3a87e459d85768153a34dac3710bc4a735b9b13
https://github.com/qemu/qemu/commit/f3a87e459d85768153a34dac3710bc4a735b9b13
Author: Thomas Weißschuh <thomas@t-8ch.de>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M linux-user/syscall.c
Log Message:
-----------
linux-user: report ENOTTY for unknown ioctls
The correct error number for unknown ioctls is ENOTTY.
ENOSYS would mean that the ioctl() syscall itself is not implemented,
which is very improbable and unexpected for userspace.
ENOTTY means "Inappropriate ioctl for device". This is what the kernel
returns on unknown ioctls, what qemu is trying to express and what
userspace is prepared to handle.
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20230426070659.80649-1-thomas@t-8ch.de>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Commit: 3b6bb13356268ed0cc07f2e448c5f86d6985c322
https://github.com/qemu/qemu/commit/3b6bb13356268ed0cc07f2e448c5f86d6985c322
Author: Thomas Weißschuh <thomas@t-8ch.de>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M linux-user/syscall.c
Log Message:
-----------
linux-user: Add move_mount() syscall
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
[lv: define syscall]
Message-Id: <20230424153429.276788-1-thomas@t-8ch.de>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Commit: f8bb4c120c3050605469f675fff1e95c8d0ef1a5
https://github.com/qemu/qemu/commit/f8bb4c120c3050605469f675fff1e95c8d0ef1a5
Author: Thomas Weißschuh <thomas@t-8ch.de>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M linux-user/syscall.c
Log Message:
-----------
linux-user: Add open_tree() syscall
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20230424153429.276788-2-thomas@t-8ch.de>
[lv: move declaration at the beginning of the block,
define syscall]
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Commit: ca78e0ca150f88e9ea8168ff144936e3e7714110
https://github.com/qemu/qemu/commit/ca78e0ca150f88e9ea8168ff144936e3e7714110
Author: Thomas Huth <thuth@redhat.com>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M linux-user/main.c
Log Message:
-----------
linux-user/main: Use list_cpus() instead of cpu_list()
This way we can get rid of the if'deffery and the XXX comment
here (it's repeated in the list_cpus() function anyway).
Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20230424122126.236586-1-thuth@redhat.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Commit: c532762f6e6ed406f75c50d303b093a40d7769b7
https://github.com/qemu/qemu/commit/c532762f6e6ed406f75c50d303b093a40d7769b7
Author: Thomas Weißschuh <thomas@t-8ch.de>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M linux-user/qemu.h
Log Message:
-----------
linux-user: Add new flag VERIFY_NONE
This can be used to validate that an address range is mapped but without
being readable or writable.
It will be used by an updated implementation of mincore().
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20230422100314.1650-2-thomas@t-8ch.de>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Commit: e6aa9e1f8cec39bafd4cbc14c2a2f00ce1d39a09
https://github.com/qemu/qemu/commit/e6aa9e1f8cec39bafd4cbc14c2a2f00ce1d39a09
Author: Thomas Weißschuh <thomas@t-8ch.de>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M linux-user/syscall.c
Log Message:
-----------
linux-user: Don't require PROT_READ for mincore
The kernel does not require PROT_READ for addresses passed to mincore.
For example the fincore(1) tool from util-linux uses PROT_NONE and
currently does not work under qemu-user.
Example (with fincore(1) from util-linux 2.38):
$ fincore /proc/self/exe
RES PAGES SIZE FILE
24K 6 22.1K /proc/self/exe
$ qemu-x86_64 /usr/bin/fincore /proc/self/exe
fincore: failed to do mincore: /proc/self/exe: Cannot allocate memory
With this patch:
$ ./build/qemu-x86_64 /usr/bin/fincore /proc/self/exe
RES PAGES SIZE FILE
24K 6 22.1K /proc/self/exe
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20230422100314.1650-3-thomas@t-8ch.de>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Commit: 5d385d89fff90a670fdaf5a1c910020f0ae2b429
https://github.com/qemu/qemu/commit/5d385d89fff90a670fdaf5a1c910020f0ae2b429
Author: Daniil Kovalev <dkovalev@compiler-toolchain-for.me>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M linux-user/mips/cpu_loop.c
Log Message:
-----------
linux-user: Fix mips fp64 executables loading
If a program requires fr1, we should set the FR bit of CP0 control status
register and add F64 hardware flag. The corresponding `else if` branch
statement is copied from the linux kernel sources (see `arch_check_elf` function
in linux/arch/mips/kernel/elf.c).
Signed-off-by: Daniil Kovalev <dkovalev@compiler-toolchain-for.me>
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Message-Id: <20230404052153.16617-1-dkovalev@compiler-toolchain-for.me>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Commit: c490496e85047d516b31f93ea0e14819e0ab5cf5
https://github.com/qemu/qemu/commit/c490496e85047d516b31f93ea0e14819e0ab5cf5
Author: Michael Tokarev <mjt@tls.msk.ru>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M linux-user/syscall.c
Log Message:
-----------
linux-user: fix getgroups/setgroups allocations
linux-user getgroups(), setgroups(), getgroups32() and setgroups32()
used alloca() to allocate grouplist arrays, with unchecked gidsetsize
coming from the "guest". With NGROUPS_MAX being 65536 (linux, and it
is common for an application to allocate NGROUPS_MAX for getgroups()),
this means a typical allocation is half the megabyte on the stack.
Which just overflows stack, which leads to immediate SIGSEGV in actual
system getgroups() implementation.
An example of such issue is aptitude, eg
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811087#72
Cap gidsetsize to NGROUPS_MAX (return EINVAL if it is larger than that),
and use heap allocation for grouplist instead of alloca(). While at it,
fix coding style and make all 4 implementations identical.
Try to not impose random limits - for example, allow gidsetsize to be
negative for getgroups() - just do not allocate negative-sized grouplist
in this case but still do actual getgroups() call. But do not allow
negative gidsetsize for setgroups() since its argument is unsigned.
Capping by NGROUPS_MAX seems a bit arbitrary, - we can do more, it is
not an error if set size will be NGROUPS_MAX+1. But we should not allow
integer overflow for the array being allocated. Maybe it is enough to
just call g_try_new() and return ENOMEM if it fails.
Maybe there's also no need to convert setgroups() since this one is
usually smaller and known beforehand (KERN_NGROUPS_MAX is actually 63, -
this is apparently a kernel-imposed limit for runtime group set).
The patch fixes aptitude segfault mentioned above.
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Message-Id: <20230409105327.1273372-1-mjt@msgid.tls.msk.ru>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Commit: cf102aa4e20337d270f8f6f1e7936127351ec31f
https://github.com/qemu/qemu/commit/cf102aa4e20337d270f8f6f1e7936127351ec31f
Author: Richard Henderson <richard.henderson@linaro.org>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M linux-user/main.c
M linux-user/mips/cpu_loop.c
M linux-user/qemu.h
M linux-user/syscall.c
M tests/tcg/riscv64/Makefile.target
A tests/tcg/riscv64/cpuinfo.c
Log Message:
-----------
Merge tag 'linux-user-for-8.1-pull-request' of https://github.com/vivier/qemu
into staging
linux-user pull request 20230512-v3
add open_tree(), move_mount()
add /proc/cpuinfo for riscv
fixes and cleanup
# -----BEGIN PGP SIGNATURE-----
#
# iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAmRje3sSHGxhdXJlbnRA
# dml2aWVyLmV1AAoJEPMMOL0/L748NVwQAJ4jWpZblT2F77e+fADcI3RQvioOEbSK
# 7yB+l9dP/a9RZ8hm+EYYRWMf6lh6x/acI2xjZXZn5THqahw3e7wrZaSCg1OTY19y
# 8uwsPhRyQVbIzveqqGlbLCVPaVkk2xHRxDr7dJf2erIzkliQeHHgcdD0TpSuXdqQ
# XlqoofcdnZwwMmB8pL65+A2271P4DocPdxslQmuq6HPHIx+qXGvxDD1t5Hhg5KPj
# pAmsAIDHm69X+3dv3WGDDCI/HmyG491p7pXXuoUmcq1ObHsodA/Zo71qd46O7zKb
# wfkGzx8HDIVw6nPvZNaVED/wS5PBrrfGdzJAJblaLENhijFIdqcff/q7tIfcldgg
# 9kNcT7eUIpiB/a414Y3M0L/0JlZ6ClC0A4rWwa1tWjOhosRhmGB0IFXiYkO1u8b9
# fCOIUouTvnDXLfvJOgXLuEvu52iyfyw3oqt/3GRFG0kCAnrWDupV32d/ovzvtUPW
# rU+mKg2QaDxtSn0Q+hGL37dvZOroUsKEEBkkqh+AaCZSjnYaR/E8gBUPJw7il9qI
# J8KtQS7taJ4yXUrSb/WjZo9v8/WfSQFG78DQdloZiQM0FNJlVYEySEG1MEIIBlUB
# Kdru25wASuxPGSFZW4Ec1/6qN+07Dasvg9kpO8UBwl/AuzqG6LITgouIO9mxDqQ9
# z9lLKnlaGLKU
# =ruip
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 16 May 2023 05:47:55 AM PDT
# gpg: using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C
# gpg: issuer "laurent@vivier.eu"
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [undefined]
# gpg: aka "Laurent Vivier <laurent@vivier.eu>" [undefined]
# gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>"
[undefined]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg: There is no indication that the signature belongs to the owner.
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C
* tag 'linux-user-for-8.1-pull-request' of https://github.com/vivier/qemu:
linux-user: fix getgroups/setgroups allocations
linux-user: Fix mips fp64 executables loading
linux-user: Don't require PROT_READ for mincore
linux-user: Add new flag VERIFY_NONE
linux-user/main: Use list_cpus() instead of cpu_list()
linux-user: Add open_tree() syscall
linux-user: Add move_mount() syscall
linux-user: report ENOTTY for unknown ioctls
linux-user: Emulate /proc/cpuinfo output for riscv
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Compare: https://github.com/qemu/qemu/compare/3d8ff94e5977...cf102aa4e203
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-commits] [qemu/qemu] de52cb: linux-user: Emulate /proc/cpuinfo output for riscv,
Richard Henderson <=