128246 Commits

Author SHA1 Message Date
Peter Maydell
b6a7d06213 Update version for v11.0.0-rc2 release
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
v11.0.0-rc2
2026-04-01 20:48:02 +01:00
Peter Maydell
2bf71cb2d8 Merge tag 'firmware-20260401-for-11.0-pull-request' of https://gitlab.com/kraxel/qemu into staging
igvm bugfixes

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCgAdFiEEoDKM/7k6F6eZAf59TLbY7tPocTgFAmnM6lEACgkQTLbY7tPo
# cTg9BhAA1WRZUp8e3G7wUwZPf8JGztEExXRC8ageNp6c4cmY8WB9BmqdteH4afo/
# ulKzwNk7aI8AdyG5OlIl+aI9MyfEMiOEstdL+Hu2nt8o0Ve5h5uXh9NmqTbcHxNU
# G3lwzTR1mjE5zm8/PZ0mQDMD7MMMbAPrpVCxbUSg13oWxQCG0Tl38w8n9G2RCTZe
# PE1XMRp/tzumzmraxTkCRwleD4Ctq298gS4DG7k8Zlits8Wwak5dDFvphwV7X/na
# Aix4DF0mtXgHHZ4szjX5HZGQq824JdY6keq8vq30kE87rA2/Qz9evhgRelYPPiLH
# /QFGUhHEwL4o5fMZkID852QXA85wRL9XulPIU08jF15jkkhOQZo6nYYQDJvTjtpz
# Lji++Pm8EFxvbDqO8TrSagXA0Y7DQ0GTzj5wuJ/5jIePA1trfV9dypjrT9vpOIg/
# iKM+kT8vb05Fid0v12thI0/7bAcnTMv+BNjtkiMYkQ8PIgSfEDbHYS6OBelXSHY0
# aw8I85UORuzqq5DDFRvY7WqpZ4Rd+vHDh9lBpnPEI6QheLFSV39zHpveNlB14z4Q
# r7CO9pQKvxU44qEpIiDQ36AJT8udBt4e9rBpBoRTbq77hbU0APKllpn89yb0YckQ
# uhoJnF8glP7kuu0aMz8OLHDFvZwmlSm/HuOFw4pbmE0WtLPnEcY=
# =rhi3
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Apr  1 10:50:09 2026 BST
# gpg:                using RSA key A0328CFFB93A17A79901FE7D4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full]
# gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>" [full]
# gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full]
# Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138

* tag 'firmware-20260401-for-11.0-pull-request' of https://gitlab.com/kraxel/qemu:
  igvm: fix parent object type in IgvmCfg struct
  igvm: fix memory leak on failed memory region init
  igvm: switch to PRIx64

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-04-01 16:47:41 +01:00
Peter Maydell
9e69071fc2 Merge tag 'pull-linux-user-20260401' of https://gitlab.com/pm215/qemu into staging
linux-user:
 * don't incorrectly sign extend guest addresses from mlock etc
 * fix name_to_handle_at when AT_HANDLE_MNT_ID_UNIQUE flag is set
 * update select timeout writeback
 * make openat2() use -L for absolute paths
 * correctly handle SIGSEGV generated when trying to deliver
   a synchronous signal

# -----BEGIN PGP SIGNATURE-----
#
# iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmnM6b0ZHHBldGVyLm1h
# eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3utoEACFpsqPLc4bTYZfIOy7Q8qW
# Kd9w/QT2Wyp5eZ52efxXopimpB7yKfIbHOB6MF1lHELfwkrDZ04CcD2q+JSR9Zce
# Zydl11nMdmhIzsWmfUju5qzrQQmx+F9pjC2nntt6QAqixMKqj6DLNEClK9QXp1WX
# q9XfJVju5JgciiUlC/Ne01GmKv1xGV3PkZy6BOzi1n3BVFyqb+wWP1G83KKIYoSN
# VCgs5IOh53qEwlPYMKzDJAUJhc3Ba2LvC4xQ2rAZlHTAoejcJHMtKjd/8ZNebGTo
# juO+7GpqxBhAQUFrmsaLidD7kiNcTMpWV5N25BDG+QFlD7pRdwk7hPrrtTHUCw7c
# H+HKKmCTUoTgoucNzkfokX58YTOOyG4Uh2eRnQ03SCd2bVX2Oesq2WYIkaJ6kY/D
# JukzaTGHLZHYzze7vmZe0dGdWWFox5MqbuNOuALan+sCq+VsznCOI2quXFovU/9m
# OCYRYwB5sAPmAd1yVvkwl53xfhyXvwCPJhzBTq9YfY6RAtqufgq1zfFPiMqvQNMi
# AZRTIcB+YXxk3fOa/xAMKF7GAzYujNbKCC/DTE2EnaqgpDHqUyQxQXSUJiAiR0os
# yI1XL/1I7dKEsV+ZdNJtQiWFdLJvi0f3C15jq1ICqzQViI2Dk27MVNAhYhda4ueo
# sr9PJ85vQk8bKu7+Ng2qYg==
# =jmT5
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Apr  1 10:47:41 2026 BST
# gpg:                using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
# gpg:                issuer "peter.maydell@linaro.org"
# gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [ultimate]
# gpg:                 aka "Peter Maydell <pmaydell@gmail.com>" [ultimate]
# gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [ultimate]
# gpg:                 aka "Peter Maydell <peter@archaic.org.uk>" [ultimate]
# Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE

* tag 'pull-linux-user-20260401' of https://gitlab.com/pm215/qemu:
  bsd-user, linux-user: signal: recursive signal delivery fix
  linux-user: Make openat2() use -L for absolute paths
  linux-user: update select timeout writeback
  linux-user: fix name_to_handle_at when AT_HANDLE_MNT_ID_UNIQUE flag is set
  include/user/guest-host.h: Provide g2h etc for both abi_ptr and vaddr
  include: Don't include guest-host.h in cpu-ldst.h

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-04-01 10:49:09 +01:00
Peter Maydell
7df28e4c41 Merge tag 'hppa-more-v11-fixes-pull-request' of https://github.com/hdeller/qemu-hppa into staging
HPPA patches for qemu-v11

A few late fixes for the HPPA architecture for QEMU v11:
- graphics support was broken for 64-bit machines. This series adds
  support for VGA graphics for Linux guests
- the various memory ranges were not correctly implemented
- TOC/NMI was not working on 64-bit machines
- minor 64-bit HP-UX boot fixes (but HP-UX 64-bit still crashes)

# -----BEGIN PGP SIGNATURE-----
#
# iHUEABYKAB0WIQS86RI+GtKfB8BJu973ErUQojoPXwUCacwXxAAKCRD3ErUQojoP
# X7NxAQCBszDUKsNX5KiB+cxW1AfT1Gyzo4q9T0NNULO5v2Fn7gD/YVzgtZ6F+crK
# 1eG1R0aVekPmx+NClsCLvy/dX1YmTww=
# =L+6i
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue Mar 31 19:51:48 2026 BST
# gpg:                using EDDSA key BCE9123E1AD29F07C049BBDEF712B510A23A0F5F
# gpg: Good signature from "Helge Deller <deller@gmx.de>" [unknown]
# gpg:                 aka "Helge Deller <deller@kernel.org>" [unknown]
# gpg:                 aka "Helge Deller <deller@debian.org>" [unknown]
# 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: 4544 8228 2CD9 10DB EF3D  25F8 3E5F 3D04 A7A2 4603
#      Subkey fingerprint: BCE9 123E 1AD2 9F07 C049  BBDE F712 B510 A23A 0F5F

* tag 'hppa-more-v11-fixes-pull-request' of https://github.com/hdeller/qemu-hppa:
  target/hppa: Update SeaBIOS-hppa to version 24
  hw/hppa: Implement memory ranges
  target/hppa: Fix TOC handler for 64-bit CPUs
  hw/pci-host/astro: Add GMMIO mapping
  hw/pci-host/astro: Fix LMMIO DIRECT mappings
  hw/pci-host/astro: Implement LMMIO registers
  hw/pci-host/astro: Fix initial addresses in IOC
  hw/pci-host/astro: Make astro address arrays accessible for other users

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-03-31 20:46:13 +01:00
Helge Deller
bf758751aa target/hppa: Update SeaBIOS-hppa to version 24
New SeaBIOS-hppa v24 release with various fixes for qemu-v11:
- Initialize Astro chip with relevant LMMIO, GMMIO and others
- Disable Artist on 64-bit machines
- Fully implement parisc memory ranges
- Change inventory to list CPU first for HP-UX
- Allow 715 to boot from HP-UX 11iv1 CD-ROM
- Prepare for MULTICELL machines
- Initialize PCI_CACHE_LINE_SIZE PCI value
- Call TOC/HPMC handler code from OS if installed

Signed-off-by: Helge Deller <deller@gmx.de>
2026-03-31 20:24:24 +02:00
Helge Deller
4a84032a26 hw/hppa: Implement memory ranges
All 64-bit PA-RISC machines split the memory into (up to 3) different
memory ranges, which are mapped at specific addresses.  This patch
mimics the mapping as it's done on physical machines, which includes the
3.75 GB split for C3700, and 1 GB split for newer 64-bit PAT machines
like the A400.

SeaBIOS-hppa needs to know how the memory split is done, so add a new
memsplit_addr variable which stores the specific split address and hand
this over to SeaBIOS-hppa via fwcfg.

Signed-off-by: Helge Deller <deller@gmx.de>
2026-03-31 20:22:25 +02:00
Helge Deller
afcb125165 target/hppa: Fix TOC handler for 64-bit CPUs
When the TOC handler is triggered, e.g. by using the "NMI" command
in the QEMU monitor, make sure to call the full 64-bit TOC handler
address in SeaBIOS-hppa firmware.
This fixes the TOC handler on 64-bit CPUs (and 64-bit SeaBIOS).

Signed-off-by: Helge Deller <deller@gmx.de>
2026-03-31 20:22:25 +02:00
Helge Deller
a45862947e hw/pci-host/astro: Add GMMIO mapping
Implement the GMMIO mapping.

Signed-off-by: Helge Deller <deller@gmx.de>
2026-03-31 20:22:25 +02:00
Helge Deller
12cd2e5ec1 hw/pci-host/astro: Fix LMMIO DIRECT mappings
Fix the existing code which has the mask wrong.
Implement the direct mapping via overlapping subregion with priority 3
to make sure the direct mapping gets precedence over the LMMIO region.

Signed-off-by: Helge Deller <deller@gmx.de>
2026-03-31 20:22:25 +02:00
Helge Deller
4f5367f0a2 hw/pci-host/astro: Implement LMMIO registers
Add code to adjust the memory mapping windows according to the LMMIO registers
in Astro.  This allows SeaBIOS-hppa to configure Astro depending on existing
PCI cards, and especially makes it possible to enable a VGA PCI card.

Signed-off-by: Helge Deller <deller@gmx.de>
2026-03-31 20:22:25 +02:00
Helge Deller
64f676beea hw/pci-host/astro: Fix initial addresses in IOC
F-Extend the LMMIO and IOS distributed addresses.
Use the 44-bit address for the IOS distributed address.

Signed-off-by: Helge Deller <deller@gmx.de>
2026-03-31 20:22:25 +02:00
Helge Deller
a3210e056d hw/pci-host/astro: Make astro address arrays accessible for other users
Move the tables out of astro_realize(). This is needed because follow-up
patches will need those tables.

Signed-off-by: Helge Deller <deller@gmx.de>
2026-03-31 20:22:25 +02:00
Nicholas Piggin
7e966ef38f bsd-user, linux-user: signal: recursive signal delivery fix
Synchronous signals must accommodate a synchronous signal being
raised during delivery, as asynchronous ones do. For example
badframe errors during delivery will cause SIGSEGV to be raised.

Without this fix, cpu_loop() runs process_pending_signals() which
delivers the first synchronous signal (e.g., SIGILL) which fails
to set the handler and forces SIGSEGV, but that is not picked up.
process_pending_signals() returns. Then cpu_loop() runs cpu_exec()
again, which attempts to execute the same instruction, another
SIGILL.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20260321135624.581398-3-npiggin@gmail.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-03-31 19:13:20 +01:00
Sun Haoyu
fa6dfcc373 linux-user: Make openat2() use -L for absolute paths
openat2() ignored the -L prefix and opened host files directly.
For example, openat2("/tmp/file") opened /tmp/file on the host, not
QEMU_LD_PREFIX/tmp/file like openat() does.

Fix this by using path() to rewrite absolute paths. Skip this
when RESOLVE_BENEATH or RESOLVE_IN_ROOT is set:
- RESOLVE_BENEATH rejects absolute paths anyway
- RESOLVE_IN_ROOT resolves relative to dirfd

Now openat() and openat2() work in the same way.

Link: https://gitlab.com/qemu-project/qemu/-/work_items/3341

Signed-off-by: Sun Haoyu <shyliuli@aosc.io>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20260317053827.25051-1-shyliuli@aosc.io
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-03-31 19:13:20 +01:00
Sun Haoyu
9b7d64686b linux-user: update select timeout writeback
The Linux kernel writes back the remaining timeout for select-family
syscalls in poll_select_finish(). If that writeback fails, it keeps
the original return value.

However, QEMU only writes back the timeout on success. If the writeback
fails, QEMU returns -TARGET_EFAULT. This can lose the remaining
timeout and change the return value.

Update do_select(), do_pselect6(), and do_ppoll() to always write back
the timeout to match the Linux kernel's behavior. If the timeout
writeback fails, keep the original return value.

Tested with the issue reproducer.

Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3343
Signed-off-by: Sun Haoyu <shyliuli@aosc.io>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20260320111647.138984-1-shyliuli@aosc.io
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-03-31 19:13:20 +01:00
Clayton Craft
22966937f4 linux-user: fix name_to_handle_at when AT_HANDLE_MNT_ID_UNIQUE flag is set
Linux 6.12 added AT_HANDLE_MNT_ID_UNIQUE, which indicates that mount_id
is 64-bits. If name_to_handle_at is called with this flag set then qemu
passes a 4 byte int to the kernel, which then tries to store 8 bytes in
a 4 byte variable, causing a SIGSEGV[1][2].

This stores mount_id in a 64-bit var if the flag is set.

1. https://gitlab.postmarketos.org/postmarketOS/pmaports/-/work_items/4431
2. https://github.com/systemd/systemd/issues/41279

Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Reviewed-by: Helge Deller <deller@gmx.de>
Message-id: 20260325-fix-name-to-handle-at-v1-1-49fb922e6fd3@craftyguy.net
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-03-31 19:13:20 +01:00
Peter Maydell
8330da591e include/user/guest-host.h: Provide g2h etc for both abi_ptr and vaddr
In commit 7804c84a ("include/user: Use vaddr in guest-host.h") we
changed all the functions in guest-host.h that took or returned their
guest address argument in type abi_ptr to instead use vaddr.

This introduced regressions for the case of a 32-bit guest and an
address above 2GB for the common situation where the address is a
syscall argument stored in a variable of type 'abi_long'.  With
abi_ptr (which will be an unsigned 32-bit type for 32-bit guests),
the address is cast to unsigned 32-bit, and then zero-extended to
64-bits in g2h_untagged_vaddr().  With the switch to vaddr (which is
always a 64-bit unsigned type), the guest address will instead be
sign-extended to 64 bits, which gives the wrong answer.

Fix this by providing two versions of the affected functions: the
standard names (g2h(), g2h_untagged(), guest_addr_valid_untagged(),
guest_range_valid_untagged(), cpu_untagged_addr()) return to using
the logically-correct abi_ptr type; new versions with a _vaddr()
prefix use the vaddr type.

accel/tcg/user-exec.c must change to use the _vaddr() versions; this
is the only file that uses guest-host.h that we want to compile once.
All the other uses are in linux-user and bsd-user code that
inherently has to know the sizes of target-ABI types.

Cc: qemu-stable@nongnu.org
Fixes: 7804c84a ("include/user: Use vaddr in guest-host.h")
Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3333
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20260330143123.1685142-3-peter.maydell@linaro.org
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 19:13:03 +01:00
Peter Maydell
7a2dc48276 Merge tag 'for-upstream' of https://gitlab.com/kmwolf/qemu into staging
Block layer patches

- ide: Fix potential assertion failure on VM stop for PIO read error
- scsi: Don't consider LOGICAL UNIT NOT SUPPORTED guest recoverable
- vhost-user-blk-server: fix opt_io_size=1 causing severe Windows I/O degradation
- monitor: Fix deadlock in monitor_cleanup
- Fix filename references in comments

# -----BEGIN PGP SIGNATURE-----
#
# iQJFBAABCgAvFiEE3D3rFZqa+V09dFb+fwmycsiPL9YFAmnL4dURHGt3b2xmQHJl
# ZGhhdC5jb20ACgkQfwmycsiPL9aG/BAAiZ1XYu46Ct9+IdopoPYhEK+T7m7PuEUR
# KJPvdp0J6mVwVBehUjacmKvCtBQUbUF8x7PD6NMF3Q+7qkVqhmngbb4s5ks/zUQi
# MxZTJF1Yps9EZ6mI3bA6caV9PzegQSOA4p+RhOXaDt7lhXhBFt6lCVFVB5eCma+a
# 1dOxAbKD6geftaMvB1uQu5qYAtclATw1Gl4YSkdaO+UKGizce6YdKYOvFwU53EvO
# 4cRrrVzk7i5act61HcwT6xNSFJ+Fgmwcn+EiD0Uw/hOFzf8nXNS0DME7QJKjr6Ug
# Adv/439sUk5J1A//S3liSQ8D9SZBdi2yS7quMy4ggbwz9CqQvUi3ejenpOJtn8yG
# ylyhHmd4dnr8QC1Zf/3SbZ1hbLWn69y+rmV+e2uJF59bpWRMvqxeJX+D4DPe5LZp
# E8pckNmqkqkBfsPuM0nzW5qdPmkioZ+i2pEgAQ99tkUlcfFLvrlEaCr9AVKgDcZn
# B2HjaZPLrZtXEKMtKM4RXt7h8F33Zxnvy8chSdqW6J0BaWvPtFO7bJn2elAgibum
# ZBigvhfwkw9xxzlGmudTbNMz8Fnpc/KBue8bhzDkOe4AybcVwuefG3VIyI8tLkG9
# IoHxbeQM6+yHXjrvn3OLWLJ7HQ0EyBsRE9cpZN4p/3rSS5G7RWfNdAIuzwLamZQ3
# lmzdXf9++1E=
# =JiFt
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue Mar 31 16:01:41 2026 BST
# gpg:                using RSA key DC3DEB159A9AF95D3D7456FE7F09B272C88F2FD6
# gpg:                issuer "kwolf@redhat.com"
# gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* tag 'for-upstream' of https://gitlab.com/kmwolf/qemu:
  block: Fix crash after setting latency historygram with single bin
  vhost-user-blk-server: fix opt_io_size=1 causing severe Windows I/O degradation
  monitor: Fix deadlock in monitor_cleanup
  block: Fix references in bdrv_bsc_*() function comments
  scsi: Don't consider LOGICAL UNIT NOT SUPPORTED guest recoverable
  ide: Fix potential assertion failure on VM stop for PIO read error

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-03-31 17:51:08 +01:00
Peter Maydell
ad7a005d67 include: Don't include guest-host.h in cpu-ldst.h
We currently include user/guest-host.h from accel/tcg/cpu-ldst.h.
However that file doesn't need anything from guest-host.h, since we
removed the uses of g2h() in commit 9b74d403b3 ("accel/tcg: Move
user-only tlb_vaddr_to_host out of line").

Move the include of guest-host.h to where it's actually needed.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20260330143123.1685142-2-peter.maydell@linaro.org
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 16:31:30 +01:00
Peter Maydell
9f6c969883 Merge tag 'hw-misc-20260331' of https://github.com/philmd/qemu into staging
Misc HW patches

Few fixes and MAINTAINERS updates.

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmnLyKIACgkQ4+MsLN6t
# wN5PNw/9ELCMUEt9V+K4NvfHYEeBAj3TvjxqJSoZ2NI8NrOP4edzWz690D4Hdqg/
# Ptt+OpgQicfxCpFrH3VNC7v69zaVRPB17BAlwMOJDF7x/2vRa4RsaPDpM3zYy3NA
# Rc+ujc/Umt8T3O0qVVcRExGx4XhHyo7ed55GPMXNcMFmG2ndmX2K/ZJfRCBWqSjd
# aMsqG/ZnT5WR7MgWL4jOC3oZsOg53FlNl4cVDV5HuVKzR8kK3M2u1nDFB2Oyi7Wa
# /9d6h5lwXRW5VrccNMM2wSoQqeYiChq7/ZcxBgmZrgbq9vlsSFQ/ea+3NloTLbx9
# 7SVwR7XHL2Bo8Civ6VjmyStt8bRCNOAYD4cg2br/EDhO9rnyVNpaCcYprAcK9I+H
# CKcwWBzKvgzkboCqU5rXrE1m5E+eZX9xiz3K0J7up+m72rGunhOIeou4gAY4wtFj
# d7F5dCzzC7wn+iIK45KtDpGTb9chlOoTTx0auwco9Av1C5ZqqoVa1+Dpf4wKnb2+
# 2Hzpz5L7R8UxYWTyYuL3ZDOqaVc5ZIpxrYwbzLI8VO1lHN0vPfzNLXfUaIPO4XNm
# JL0GDUV4CetFVAQJHFckUEpI+NAGkajvmY5bckwSA1CXWGDqGmRIuaL9ML9R79/V
# yZUZ0z/WHJQlH8Q953BE2SxQzhql/ZKDQeQSP/LVmVaJW2arBAw=
# =vddZ
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue Mar 31 14:14:10 2026 BST
# gpg:                using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE
# gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <f4bug@amsat.org>" [full]
# Primary key fingerprint: FAAB E75E 1291 7221 DCFD  6BB2 E3E3 2C2C DEAD C0DE

* tag 'hw-misc-20260331' of https://github.com/philmd/qemu:
  MAINTAINERS: fix OSUOSL typo
  hw/hppa: Disable Artist graphics card on 64-bit machines
  hw/pci-host/astro: Update copyright and documentation link
  ati-vga: Add upper limit to x-linear-aper-size property
  ati-vga: Silence warning about operator precedence
  target/i386: Treat qtest like TCG for supported-features
  target/i386/cpu.c: Correct minor grammar error in warning
  backends/igvm: switch to PRIx64
  target/mips: save CP0 timer in vmstate
  MAINTAINERS: Separate QDev section from QOM one
  ppc/pnv: generate dtb after machine initialization is complete

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-03-31 15:21:44 +01:00
Kevin Wolf
a55402d5c3 block: Fix crash after setting latency historygram with single bin
Passing an empty list of boundaries to block-latency-histogram-set sets
up a state that leads to a NULL pointer dereference when the next
request should be accounted for. This is not a useful configuration, so
just error out if the user tries to set it.

The crash can easily be reproduced with the following script:

    qmp() {
    cat <<EOF
    {'execute':'qmp_capabilities'}
    {'execute':'block-latency-histogram-set',
     'arguments': {'id':'ide0','boundaries':[]}}
    {'execute':'cont'}
    EOF
    }

    qmp | ./qemu-system-x86_64 -S -qmp stdio \
        -drive if=none,format=raw,file=null-co:// \
        -device ide-hd,drive=none0,id=ide0

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-ID: <20260331102608.60882-1-kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2026-03-31 15:47:52 +02:00
Max Makarov
99bfc1c754 vhost-user-blk-server: fix opt_io_size=1 causing severe Windows I/O degradation
The QSD vhost-user-blk export sets opt_io_size=1 and min_io_size=1 in
the virtio config. These values are reported to the guest through the
VPD Block Limits page as OptimalTransferLength=1 block (512 bytes)
and OptimalTransferLengthGranularity=1 block.

Windows respects these hints and splits all I/O into ~512-byte
requests, causing ~100x sequential throughput degradation (150 MB/s
instead of 15+ GB/s). Linux is unaffected as its block layer ignores
these values.

Set both to 0 which means "not reported" per the SCSI Block Limits
VPD spec, allowing Windows to use its own optimal I/O size defaults.

Signed-off-by: Max Makarov <maxpain@linux.com>
Message-ID: <20260330193451.76037-1-maxpain@linux.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2026-03-31 15:45:32 +02:00
hongmianquan
fc1a2ec7da monitor: Fix deadlock in monitor_cleanup
During qemu_cleanup, if a non-coroutine QMP command (e.g.,
query-commands) is concurrently received and processed by the
mon_iothread, it can lead to a deadlock in monitor_cleanup.

The root cause is a race condition between the main thread's shutdown
sequence and the coroutine's dispatching mechanism. When handling a
non-coroutine QMP command, qmp_dispatcher_co schedules the actual
command execution as a bottom half in iohandler_ctx and then yields. At
this suspended point, qmp_dispatcher_co_busy remains true.

Subsequently, the main thread in monitor_cleanup(), sets
qmp_dispatcher_co_shutdown, and calls qmp_dispatcher_co_wake(). Since
qmp_dispatcher_co_busy is already true, the aio_co_wake is skipped. The
main thread then enters the AIO_WAIT_WHILE_UNLOCKED loop, it executes
the scheduled BH (do_qmp_dispatch_bh) via aio_poll(iohandler_ctx,
false), which attempts to wake up the coroutine, aio_co_wake schedules a
new wake-up BH in iohandler_ctx. The main thread then blocks
indefinitely in aio_poll(qemu_aio_context, true), while the coroutine's
wake-up BH is starved in iohandler_ctx, qmp_dispatcher_co never reaches
termination, resulting in a deadlock.

The execution sequence is illustrated below:

 IO Thread                 Main Thread (qemu_aio_context)        qmp_dispatcher_co (iohandler_ctx)
    |                                 |                                        |
    |-- query-commands                |                                        |
    |-- qmp_dispatcher_co_wake()      |                                        |
    |    (sets busy = true)           |                                        |
    |                                 |   <-- Wakes up in iohandler_ctx -->    |
    |                                 |                                        |-- qmp_dispatch()
    |                                 |                                        |-- Schedules BH (do_qmp_dispatch_bh)
    |                                 |                                        |-- qemu_coroutine_yield()
    |                                 |                                            [State: Suspended, busy=true]
    |   [ quit triggered ]            |
    |                                 |-- monitor_cleanup()
    |                                 |-- qmp_dispatcher_co_shutdown = true
    |                                 |-- qmp_dispatcher_co_wake()
    |                                 |    -> Checks busy flag. It's TRUE!
    |                                 |    -> Skips aio_co_wake().
    |                                 |
    |                                 |-- AIO_WAIT_WHILE_UNLOCKED:
    |                                 |   |-- aio_poll(iohandler_ctx, false)
    |                                 |   |    -> Executes do_qmp_dispatch_bh
    |                                 |   |    -> Schedules 'co_schedule_bh' in iohandler_ctx
    |                                 |   |
    |                                 |   |-- aio_poll(qemu_aio_context, true)
    |                                 |   |    -> Blocks indefinitely! (Deadlock)
    |                                 |
    |                                 X (Main thread sleeping)                 X (Waiting for next iohandler_ctx poll)

To fix this, we add an explicit aio_wait_kick() in do_qmp_dispatch_bh()
to break the main loop out of its blocking poll, allowing it to evaluate
the loop condition and poll iohandler_ctx.

Suggested-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: hongmianquan <hongmianquan@bytedance.com>
Signed-off-by: wubo.bob <wubo.bob@bytedance.com>
Message-ID: <20260327131024.51947-1-hongmianquan@bytedance.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2026-03-31 15:35:19 +02:00
Alex Bennée
a4d5cfe3ee MAINTAINERS: fix OSUOSL typo
It stands for Oregon State University Open Source Lab.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-ID: <20260331070401.1125840-1-alex.bennee@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 15:12:45 +02:00
Helge Deller
6a0e2db073 hw/hppa: Disable Artist graphics card on 64-bit machines
The original Artist graphics used the GSC bus, was often installed in old
32-bit machines (e.g. 715) and can not be used on 64-bit machines.
This is why this patch makes the artist driver dependend on the Lasi chip,
which was never used in a 64-bit machine.

Note that there exists a variant of Artist for the PCI-bus (Visualize-EG PCI).
It has quite some differences in the registers, and would require that we write
a PCI ROM for it, so that Linux and HP-UX would be able to use it.

Instead, for now, users can simply use a standard VGA or ATI PCI graphics card
on Linux.  This can be enabled on the command line with "-device ati-vga" or
"-device VGA".  If the "-nographic" option is omitted, a PCI OCHI controller
with USB keyboard and USB mouse will be added automatically.

This fixes graphics support on 64-bit hppa machines and allows us to boot up a
64-bit Linux installation with VGA graphics.

Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20260330211859.19317-3-deller@kernel.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 15:12:45 +02:00
Helge Deller
508a870550 hw/pci-host/astro: Update copyright and documentation link
Update the link to the documentation, which was still pointing to the
Wiki page. In the meantime the PA-RISC wiki was converted to a
read-the-docs website.

Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20260330211859.19317-2-deller@kernel.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 15:12:45 +02:00
BALATON Zoltan
6af42f7c50 ati-vga: Add upper limit to x-linear-aper-size property
Coverity warns in CID 1645968 about possible integer overflow. This
should never happen but to ensure that, add an upper limit on the
x-linear-aper-size. This may not silence the warning but makes sure
users cannot cause an overflow.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <541ffffdaa4c67b9dcbca6c2498e69b137bce95d.1774904832.git.balaton@eik.bme.hu>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 15:12:45 +02:00
BALATON Zoltan
3b4acaf9e6 ati-vga: Silence warning about operator precedence
Coverity in CID 1645969 warns about possible operator precendence
issue which is a false positive in this case but simplify the
expression to silence the warning.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-ID: <24161ec41f118ad097387f8a84897dee7b4747b8.1774904832.git.balaton@eik.bme.hu>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 15:12:45 +02:00
Peter Maydell
f2a8070d08 target/i386: Treat qtest like TCG for supported-features
In x86_cpu_get_supported_feature_word() we figure out the supported
features differently for each accelerator. The default case is
"set all feature bits"; however this triggers a warning because
it enables two features which conflict with each other:

$ ./build/x86/qemu-system-x86_64   -cpu max -accel qtest -S
qemu-system-x86_64: warning: this feature conflicts with APX: CPUID[eax=07h,ecx=00h].EBX.mpx [bit 14]
qemu-system-x86_64: warning: this feature conflicts with MPX: CPUID[eax=07h,ecx=01h].EDX.apxf [bit 21]

Treat qtest like TCG here, to avoid the complaint.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Message-ID: <20260330151437.1787008-1-peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 15:12:45 +02:00
Peter Maydell
1e0cf63987 target/i386/cpu.c: Correct minor grammar error in warning
Fix a minor error in the grammar of the warning messages
produced if both MPX and APX are enabled:

$ ./build/x86/qemu-system-x86_64   -cpu max -accel qtest -S
qemu-system-x86_64: warning: this feature conflicts with APX: CPUID[eax=07h,ecx=00h].EBX.mpx [bit 14]
qemu-system-x86_64: warning: this feature conflicts with MPX: CPUID[eax=07h,ecx=01h].EDX.apxf [bit 21]

Fixes: 91bc4d8107 ("i386/cpu: Add APX EGPRs into xsave area")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20260330151309.1786787-1-peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 15:12:45 +02:00
Luigi Leonardi
a85c5ed33f backends/igvm: switch to PRIx64
Use the PRIx64 format macro instead of %lX for uint64_t values.

This is to improve portability as %lX is not necessarily 64 bit long.

Signed-off-by: Luigi Leonardi <leonardi@redhat.com>
Reviewed-by: Ani Sinha <anisinha@redhat.com>
Message-ID: <20260330-igvm_fixes-v1-1-03587a5a808b@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 15:12:45 +02:00
Trieu Huynh
07ec1a7235 target/mips: save CP0 timer in vmstate
The MIPS R4K CP0 timer (env->timer) is not included in vmstate_mips_cpu,
so after loadvm the QEMUTimer has no scheduled expiry. This causes
qemu_poll_ns() to block indefinitely and the guest to freeze until an
external I/O event (e.g. a keypress) wakes the main loop.

Fix by adding an optional vmstate subsection for the timer, following
the same pattern used by ARM (gt_timer), RISC-V (env.stimer), SPARC
(qtimer), and OpenRISC (timer).

The .needed callback returns false when env->timer is NULL (KVM mode),
keeping the subsection optional for backwards compatibility with
existing snapshots.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1987
Signed-off-by: Trieu Huynh <vikingtc4@gmail.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20260329113732.482619-1-vikingtc4@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 15:12:45 +02:00
Philippe Mathieu-Daudé
946e4d6506 MAINTAINERS: Separate QDev section from QOM one
QDev is about QEMU devices model API, while
QOM is about QEMU object model in plain C.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
Message-Id: <20260325151728.45378-2-philmd@linaro.org>
2026-03-31 15:12:45 +02:00
Shivang Upadhyay
ba48bff09f ppc/pnv: generate dtb after machine initialization is complete
Currently, the machine dtb is generated in pnv_init(), before all devices
are fully initialized. This can result in an incomplete dtb for the system,
as seen in bug [1].

Fix this by deferring dtb generation until machine initialization is complete,
using the machine_init_done_notifier hook.

[1] https://lore.kernel.org/all/20260323231612.GA2637687@ax162/

Cc: Aditya Gupta <adityag@linux.ibm.com>
Cc: Harsh Prateek Bora <harshpb@linux.ibm.com>
Cc: BALATON Zoltan <balaton@eik.bme.hu>
Cc: qemu-stable@nongnu.org
Reported-by: Nathan Chancellor <nathan@kernel.org>
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Fixes: a16d4c2f16 ("ppc/pnv: fix dumpdtb option")
Signed-off-by: Shivang Upadhyay <shivangu@linux.ibm.com>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Aditya Gupta <adityag@linux.ibm.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-ID: <20260327124136.983955-1-shivangu@linux.ibm.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2026-03-31 15:12:45 +02:00
Yunjian Long
6bd32ce558 block: Fix references in bdrv_bsc_*() function comments
Some functions are defined in block_int-io.h, so the correct
annotation is block_int-io.h rather than block_int.h

Signed-off-by: Yunjian Long <long.yunjian@zte.com.cn>
Message-ID: <20260325094204300GFCZYBzAE00cSWaldbDcT@zte.com.cn>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2026-03-31 14:52:06 +02:00
Peter Maydell
6aeb397deb Merge tag 'for-11.0-rc-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging
Various UI & audio fixes for 11.0-rc

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCgAdFiEEh6m9kz+HxgbSdvYt2ujhCXWWnOUFAmnLmTsACgkQ2ujhCXWW
# nOUKig//Z6OlzPu5bmwwXulJpVsnwMHG5l+gftbYgs7p2XuMNFuejTQzHO6Ozns2
# chLJ3Of0xm9Z8NsQ2DZJThXjBUCanXCAOsuMYCAGy5PP2vTNBklwc6Sfm0a357cY
# um9E7GN21Kgc8CPizR/b5sv0enTZUT0JXPGapLZpuX2lOPrGpRXHA5thRtwcfaQP
# CHXJ6inWEgz3hXTTgxslvKIlwlTaH5EvjMWbjWgda//V/ZV2x8643o8n2qwO5spL
# ZY8j3TbPr10f4YnfwVcoRLfxnAswXeuk6LkJne0zv8WAQUOOkmi78H6oOmOCoJrt
# Lj08WXU+BJXZS6RKNN20eS1AmcHa2Z+59jXzwRDSRkskugeGACFlx/hbBMZwhbR9
# 0siL/dLJUdQhO/XiCYerN/HNwTy9j0lw4PWFNBBNPn66ykQQZWii4bzMWsVwt5IY
# yKhBQuAvHiN/wre0/NV914TuGWVHqwRYA37SPuLl7VfiR6hVJwTSUK7FscbswTLg
# WGjXB/uxn2XQJnYDXV9WaUHKAOIJ228HXBWLEB5vW55ZkJIl3xT5GL93kX8oFjSh
# 1vy3rVwrMO7UdS0UVhvXZC6E0tmI/fu67jcI8cQsENK6eqnXMdQEKY7otblW9LzM
# pesEUc7LKYFbYbxX8627MnbNU52HXan/XeV2otUJiX9ssUoIdag=
# =qtVg
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue Mar 31 10:51:55 2026 BST
# gpg:                using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5
# gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" [full]
# gpg:                 aka "Marc-André Lureau <marcandre.lureau@gmail.com>" [full]
# Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5

* tag 'for-11.0-rc-pull-request' of https://gitlab.com/marcandre.lureau/qemu:
  tests: don't build audio tests when no audio drivers are enabled
  ui/vnc-jobs: clear source tag
  ui/vnc-jobs: fix VncRectEntry leak on job cleanup
  ui/dbus: tear down clipboard callbacks on display finalize
  ui/dbus: associate add_client completion with its request
  audio/mixeng: fix sw/hw mixup in audio_pcm_sw_init_

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-03-31 13:41:29 +01:00
Kevin Wolf
ccc613f96c scsi: Don't consider LOGICAL UNIT NOT SUPPORTED guest recoverable
When commit bdf9613b introduced scsi_sense_buf_is_guest_recoverable(),
it included LOGICAL UNIT NOT SUPPORTED in the list of guest recoverable
sense codes. It doesn't really explain how the codes to be in the list
were selected.

As the LUN doesn't come from the guest, but from the block backend
(usually the SCSI device on the host that was opened with host_device,
but it could also be the iscsi block driver), there is really no way the
guest could influence this.

It seems that on some storage arrays, LOGICAL UNIT NOT SUPPORTED can
happen during failover operations. When combined with multipath, the
request should be retried on another path instead of being reported to
the guest, which would offline the filesystem in response.

Simply returning false in scsi_sense_buf_is_guest_recoverable() will
enable the retry logic in file-posix, and will also make sure that if
the error persists, the configured error policy is respected so that the
VM can be stopped.

Buglink: https://redhat.atlassian.net/browse/RHEL-158212
Fixes: bdf9613b7f ('scsi: explicitly list guest-recoverable sense codes')
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-ID: <20260330121635.49205-1-kwolf@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2026-03-31 14:27:28 +02:00
Kevin Wolf
59c1d31136 ide: Fix potential assertion failure on VM stop for PIO read error
ide_sector_read() as well as its callers neglect to call ide_set_retry()
before starting I/O. If the I/O fails, this means that the retry
information is stale. In particular, ide_handle_rw_error() has an
assertion that s->bus->retry_unit == s->unit, which can fail if either
there was no previous request or it came from another device on the bus.
If the assertion weren't there, a wrong request would be retried after
resuming the VM.

Fix this by adding a ide_set_retry() call to ide_sector_read().

This affects only reads because ide_transfer_start() does call
ide_set_retry(). For writes, the data transfer comes first and the I/O
is only started when the data has been read into s->io_buffer, so by
that time, ide_set_retry() has been called. For reads, however, the I/O
comes first and only then the data is transferred to the guest, so the
call in ide_transfer_start() is too late.

Buglink: https://redhat.atlassian.net/browse/RHEL-153537
Reported-by: Tingting Mao <timao@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-ID: <20260326165124.138593-1-kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2026-03-31 14:25:21 +02:00
Anton Kuchin
425f084fd2 tests: don't build audio tests when no audio drivers are enabled
When there are no audio drivers configure fails with "ERROR: Command
cannot have '@INPUT@', since no input files were specified".

Fixes: 3220b38a8d ("tests: start manual audio backend test")
Signed-off-by: Anton Kuchin <antonkuchin@nebius.com>
Message-ID: <DB8P190MB07142E1BA8DEEA8B2E41D5B2DB57A@DB8P190MB0714.EURP190.PROD.OUTLOOK.COM>
[ Marc-André - use empty modinfo stub ]
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2026-03-31 13:48:42 +04:00
Peter Maydell
49ea010020 Merge tag 'migration-20260330-pull-request' of https://gitlab.com/farosas/qemu into staging
Migration pull request

- Fix dirty limit (-m thorough) test
- Fix a few error message strings

# -----BEGIN PGP SIGNATURE-----
#
# iQJEBAABCAAuFiEEqhtIsKIjJqWkw2TPx5jcdBvsMZ0FAmnKx94QHGZhcm9zYXNA
# c3VzZS5kZQAKCRDHmNx0G+wxnXp7EADLdY2S5gVgc8/R/b0uZRzj9f0A9vrkK2S8
# bcUHJxhY+PkJhUnNRr2l4PuyiwLCKefDWc0gnl9J0mFZ/gqVnkAPEZhVS+hOwjZm
# 6KyHWwEz9hBqU0RmIq/RmVsvKw+jRqAIZ2k43N4aOy38TbRK1o5PLrK8T4Zouycq
# grsg383xahcHUx/RZDGilGXWONeOnnv/Tg8v6rqL51eGa8BllOTZRxqMlXD/r53/
# EyLAdr3gmeawL9o7aLU6bodRwRREWGAPyvHMKB6VBautu28MsMmPjpdAbP+i3aYY
# JoKreKxO1mXvV8UL8xYOTVLbR52qACQ35Q+YKplrT4vO8yqVhN+nr8XVeQmQi2gF
# elLWi//ir6ZQggArkGSIfLdkzsyuLtNlHLtT7i35xudWUx1KcEDuT3i18OY6Qfd+
# faJr9JZPQ0I0QWMo7qRDjfUSzgYYOYoAdrfuG5xND+z2X3W4BK4E8dL4uJ5Eipad
# 8q/yRZf2KbY2vzR/VDRVUXOyVcirV0bg0v3Y7iAdaffIyia/htFvtJoZHNMhKhzU
# zoqa6VtipHJT5YLstei2Nzol9u0ghh7snWmzUKFnPjlbOfP8L11r7hNd6iYW0lFY
# GegIgZWyqwhccIAzAndqS14bwN/yRiDcH1FiZH8wYJaT4gcaTtgRzI5JGA08Ahhc
# SVKJrpsq7A==
# =ynIi
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon Mar 30 19:58:38 2026 BST
# gpg:                using RSA key AA1B48B0A22326A5A4C364CFC798DC741BEC319D
# gpg:                issuer "farosas@suse.de"
# gpg: Good signature from "Fabiano Rosas <farosas@suse.de>" [unknown]
# gpg:                 aka "Fabiano Almeida Rosas <fabiano.rosas@suse.com>" [unknown]
# gpg: WARNING: The key's User ID is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: AA1B 48B0 A223 26A5 A4C3  64CF C798 DC74 1BEC 319D

* tag 'migration-20260330-pull-request' of https://gitlab.com/farosas/qemu:
  tests/qtest/migration: Fix slow test dirty_limit
  migration: Fix references to parameter names in error messages
  migration: Fix up error message for max-cpu-throttle

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-03-31 09:39:52 +01:00
Luigi Leonardi
9b4edc3eca igvm: fix parent object type in IgvmCfg struct
IgvmCfg is defined as an Object but, currently, its first member is an
ObjectClass.

Replace ObjectClass with Object.

Fixes: c1d466d267 ("backends/igvm: Add IGVM loader and configuration")
Signed-off-by: Luigi Leonardi <leonardi@redhat.com>
Reviewed-by: Ani Sinha <anisinha@redhat.com>
Message-ID: <20260330-igvm_fixes-v1-3-03587a5a808b@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2026-03-31 08:53:47 +02:00
Luigi Leonardi
5df493476f igvm: fix memory leak on failed memory region init
When memory_region_init_* fail, `igvm_pages` is not freed causing a leak.

Free `igvm_pages` in the error path.

Fixes: c1d466d267 ("backends/igvm: Add IGVM loader and configuration")
Signed-off-by: Luigi Leonardi <leonardi@redhat.com>
Message-ID: <20260330-igvm_fixes-v1-2-03587a5a808b@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2026-03-31 08:53:47 +02:00
Luigi Leonardi
f61ff065d3 igvm: switch to PRIx64
Use the PRIx64 format macro instead of %lX for uint64_t values.

This is to improve portability as %lX is not necessarily 64 bit long.

Signed-off-by: Luigi Leonardi <leonardi@redhat.com>
Reviewed-by: Ani Sinha <anisinha@redhat.com>
Message-ID: <20260330-igvm_fixes-v1-1-03587a5a808b@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2026-03-31 08:53:47 +02:00
Peter Maydell
d62e907c35 Merge tag 'pull-target-arm-20260330' of https://gitlab.com/pm215/qemu into staging
target-arm queue:
 * target/arm: Don't skip access flag fault for AccessType_AT
 * hw/net/rocker: Avoid double-free of l2_flood.group_ids
 * MAINTAINERS updates
 * hw/arm/xilinx_zynq: Use strcasecmp to parse boot-mode option values

# -----BEGIN PGP SIGNATURE-----
#
# iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmnKxl0ZHHBldGVyLm1h
# eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3i+bD/49nGG+lfkDEXxTl0CU+8Wp
# jQsZnKTox38hQA39Mdpi2yMnQLnOdjVlUloUiGp43jGnoqRRD60j3jrncytPRoPN
# ez4TZV0w/WHpGp1kj8UzKbe96XdMK6eQNSN+fnZHGsqz3F9mprQsX/qN461zIe8T
# AO4tg/Fk1omWpE7KqM6Y93T+00DcGjgjoQaVxkb97JPHsIEgZeqzZ8GZ5NgHPAWo
# +73bFW3jG3UbpCQwSycrVOduuyBMxeagnrXXlhPwrv5g7DLP5QA/F0RGj41VZD2U
# tYIGFBm3D+haQ0R6yLFHZQG3cnysroaGcw+pwSOf2M/iNV1D7h7zv3CaGsR3fgVq
# 6ZLYjCV0T0chDMCjeGAclTTYi8kLq2flMdu+RHmcN+pDP6rJjyBmRaha7jLLhRey
# bMQCYlYzZRsPn1F6wmy3mcX9Qpj4eBTFAu+fxoJ6JIOAZL6wAohfrTWPWpPI+yjK
# 9AFYEfizzonQYH/ItxWBHB5vYhq76CtsJZcwkAV5pyQsVdT87hlTjza5oNh/B6LP
# VCG6sdAdqFsgQ8ehzhnX3fNlfQe2nCcFstFnodD/6ee4rcU+Gq1op5bQW74rx+hC
# dm8EoM9iy5eJ1UTAPANlfmgUgsV/fYrCeS0vEMIvh5KEqoCARxTbPMn9iGQHgnjV
# dc8He30avuBBRh/LlOViJQ==
# =/KNp
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon Mar 30 19:52:13 2026 BST
# gpg:                using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
# gpg:                issuer "peter.maydell@linaro.org"
# gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [ultimate]
# gpg:                 aka "Peter Maydell <pmaydell@gmail.com>" [ultimate]
# gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [ultimate]
# gpg:                 aka "Peter Maydell <peter@archaic.org.uk>" [ultimate]
# Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE

* tag 'pull-target-arm-20260330' of https://gitlab.com/pm215/qemu:
  hw/arm/xilinx_zynq: Use strcasecmp to parse boot-mode option values
  MAINTAINERS: Remove Igor Mitsyanko
  MAINTAINERS: Remove Riku Voipio
  hw/net/rocker: Avoid double-free of l2_flood.group_ids
  target/arm: Don't skip access flag fault for AccessType_AT

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-03-30 19:53:58 +01:00
Peter Maydell
36212b4e85 hw/arm/xilinx_zynq: Use strcasecmp to parse boot-mode option values
In zynq_set_boot_mode() where we parse the string the user has set
the boot-mode option to, we use strncasecmp(str, "qspi", 4) and so
on.  This is wrong, because it means that we will ignore any trailing
junk on the end of the option string, and handle
 -machine boot-mode=sdXYZZY
the same as
 -machine boot-mode=sd

In the documentation we say:
 Supported values are ``jtag``, ``sd``, ``qspi`` and ``nor``.
and that's obviously what we meant to implement.

The correct tool for this job is a simple strcasecmp operation.
Switch to that.

We use the g_ascii_strcasecmp() rather than plain strcasecmp()
because we're comparing ASCII strings here and don't want the
potentially locale-specific behaviour that strcasecmp() implies (and
we're trying to standardize on the glib function for this kind of
string comparison).

Fixes: 7df3747c92 ("hw/arm/xilinx_zynq: Add boot-mode property")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Kostiantyn Kostiuk <kkostiuk@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 20260327145012.907264-1-peter.maydell@linaro.org
2026-03-30 16:18:07 +01:00
Peter Maydell
62ed99e8fe MAINTAINERS: Remove Igor Mitsyanko
Igor Mitsyanko doesn't wish to be listed in MAINTAINERS any more;
remove his email from the relevant sections.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20260323134741.4114629-3-peter.maydell@linaro.org
2026-03-30 16:18:07 +01:00
Peter Maydell
4646224f2a MAINTAINERS: Remove Riku Voipio
Riku Voipio doesn't wish to be listed in MAINTAINERS any more;
remove his email from the relevant sections.

This moves the "overall usermode emulation" section to Orphan status.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20260323134741.4114629-2-peter.maydell@linaro.org
2026-03-30 16:18:07 +01:00
Peter Maydell
a0721c099b hw/net/rocker: Avoid double-free of l2_flood.group_ids
In of_dpa_cmd_add_l2_flood(), we allocate memory for the
group->l2_flood.group_ids array, freeing any previous array.
However, in the error-exit path we free the group_ids memory but do
not clear the pointer to NULL.  This means that if the guest causes
us to take the error-exit path and then later call the function
again, we will try again to free the memory we already freed.

Fix this by clearing the group_ids pointer in the error exit
path, so we maintain the invariant of "either it points at
allocated memory, or it is NULL" (both being valid to g_free()).

Cc: qemu-stable@nongnu.org
Fixes: dc488f8880 ("rocker: add new rocker switch device")
Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3253
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20260324193530.375628-1-peter.maydell@linaro.org
2026-03-30 16:18:06 +01:00
Zenghui Yu
31b8d287b7 target/arm: Don't skip access flag fault for AccessType_AT
As per the pseudo code from DDI0487 M.a.a (on J1-16021) AArch64.S1Walk():

  // Check descriptor AF bit
  elsif (descriptor<10> == '0' && walkparams.ha == '0' &&
          (!accdesc.acctype IN {AccessType_DC, AccessType_IC} ||
           boolean IMPLEMENTATION_DEFINED "Generate access flag fault on IC/DC operations")) then
      fault.statuscode = Fault_AccessFlag;

an access flag fault should be generated for AccessType_AT, if the AF bit
is 0 and !param.ha.

Besides, we should continue to not raise the access flag fault for
in_debug = true which is what we've been doing previously (before commit
efebeec13d) for LPAE and is what intention of the debugger access
codepath is.

Cc: qemu-stable@nongnu.org
Fixes: efebeec13d ("target/arm: Skip AF and DB updates for AccessType_AT")
Signed-off-by: Zenghui Yu <zenghui.yu@linux.dev>
Message-id: 20260324160321.96347-1-zenghui.yu@linux.dev
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2026-03-30 16:18:06 +01:00
Fabiano Rosas
6f33b6eebb tests/qtest/migration: Fix slow test dirty_limit
After the referenced commit, the incoming side doesn't exit
automatically after a failure. Tests that expect the destination to
fail should use -incoming defer, issue QMP migrate-incoming, wait for
the failure event and issue QMP quit.

Fix the dirty_limit test which wasn't updated properly.

Fixes: 4e8c4dda97 ("tests/qtest/migration: Force exit-on-error=false")
Reported-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20260326164405.1626-1-farosas@suse.de
Signed-off-by: Fabiano Rosas <farosas@suse.de>
2026-03-30 10:48:12 -03:00