Branch: refs/heads/staging
Home: https://github.com/qemu/qemu
Commit: dc955052b400572dcfed896532d2b0dcf9d111f5
https://github.com/qemu/qemu/commit/dc955052b400572dcfed896532d2b0dcf9d111f5
Author: John Snow <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
M scripts/qapi/backend.py
Log Message:
-----------
qapi: Add some pylint ignores
This restores the linting baseline in QAPI.
Signed-off-by: John Snow <[email protected]>
Reviewed-by: Markus Armbruster <[email protected]>
Message-id: [email protected]
Commit: a738817c1ddb1730cf144e444d367b5d37e4a4dd
https://github.com/qemu/qemu/commit/a738817c1ddb1730cf144e444d367b5d37e4a4dd
Author: John Snow <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
M docs/sphinx/qapi_domain.py
M docs/sphinx/qapidoc.py
Log Message:
-----------
docs/qapidoc: linting fixes
This restores the linting baseline in qapidoc. The order of some imports
change slightly here due to configuring isort a little better:
previously, isort was having difficulty understanding that "compat" and
"qapidoc_legacy" were local modules because docs/sphinx "isn't a python
package". Configuring this manually, isort chooses a different import
ordering, which _is_ intentional here.
Also: extra ignores are added for pylint. The most recent versions of
pylint don't require these ignores, but the oldest versions we support
do, so in the extra ignores go.
Signed-off-by: John Snow <[email protected]>
Reviewed-by: Markus Armbruster <[email protected]>
Message-id: [email protected]
Commit: 4b77e5d7b8b6377f7433de886b98bf64a5fcc663
https://github.com/qemu/qemu/commit/4b77e5d7b8b6377f7433de886b98bf64a5fcc663
Author: John Snow <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
M python/tests/minreqs.txt
Log Message:
-----------
python: update missing dependencies from minreqs
We pin all dependencies for the "check-minreqs" test because pip lacks a
dependency resolver that installs "the oldest possible package that
meets dependency criteria". So, in order to test our stated minimum
requirements, we pin all of our dependencies (and their dependencies,
transitively) at the oldest possible versions that still work and pass
tests; proving that our minimum requirements are correct.
(It also ensures no new features accidentally sneak in from developers
on newer platforms.)
A few transitive dependencies were omitted from the pinned dependency
file by accident; as a result, pip's dependency solver can pull in newer
dependencies, which we don't want. This patch corrects the previous
oversight and pins the missing dependencies.
Signed-off-by: John Snow <[email protected]>
Reviewed-by: Markus Armbruster <[email protected]>
Message-id: [email protected]
Commit: 65aa0a1780d59ea2b07da6e3626b98eca8b163d1
https://github.com/qemu/qemu/commit/65aa0a1780d59ea2b07da6e3626b98eca8b163d1
Author: John Snow <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
M python/setup.cfg
M python/tests/minreqs.txt
A python/tests/qapi-flake8.sh
A python/tests/qapi-isort.sh
A python/tests/qapi-mypy.sh
A python/tests/qapi-pylint.sh
M scripts/qapi/pylintrc
Log Message:
-----------
python: add qapi static analysis tests
Update the python tests to also check QAPI and the QAPI Sphinx
extensions. The docs/sphinx/qapidoc_legacy.py file is not included in
these checks, as it is destined for removal soon. mypy is also not
called on the QAPI Sphinx extensions, owing to difficulties supporting
Sphinx 3.x - 8.x while maintaining static type checking support. mypy
*is* called on all of the QAPI tools themselves, though.
flake8, isort and mypy use the tool configuration from the existing
python directory (in setup.cfg). pylint continues to use the special
configuration located in scripts/qapi/ - that configuration is more
permissive. If we wish to unify the two configurations, that's a
separate series and a discussion for a later date.
The list of pylint ignores is also updated, owing again to the wide
window of pylint version support: newer versions require pragmas to
occasionally silence the "too many positional arguments" warning, but
older versions do not have such a warning category and will instead yelp
about an unrecognized option. Silence that warning, too.
As a result of this patch, one would be able to run any of the following
tests locally from the qemu.git/python directory and have it cover the
QAPI tooling as well. All of the following options run the python tests,
static analysis tests, and linter checks; but with different
combinations of dependencies and interpreters.
- "make check-minreqs" Run tests specifically under our oldest supported
Python and our oldest supported dependencies. This is the test that
runs on GitLab as "check-python-minreqs". This helps ensure we do not
regress support on older platforms accidentally.
- "make check-tox" Runs the tests under the newest supported
dependencies, but under each supported version of Python in turn. At
time of writing, this is Python 3.8 to 3.13 inclusive. This test helps
catch bleeding-edge problems before they become problems for developer
workstations. This is the GitLab test "check-python-tox" and is an
optionally run, may-fail test due to the unpredictable nature of new
dependencies being released into the ecosystem that may cause
regressions.
- "make check-dev" Runs the tests under the newest supported
dependencies using whatever version of Python the user happens to have
installed. This is a quick convenience check that does not map to any
particular GitLab test.
(Note! check-dev may be busted on Fedora 41 and bleeding edge versions
of setuptools. That's unrelated to this patch and I'll address it
separately and soon. Thank you for your patience, --mgmt)
Finally, finally, finally: this means that QAPI tooling will be linted
and type-checked from the GitLab pipelines.
Signed-off-by: John Snow <[email protected]>
Reviewed-by: Markus Armbruster <[email protected]>
Message-id: [email protected]
[Edited license choice per review --js]
Signed-off-by: John Snow <[email protected]>
Commit: 781e730556f3621a3f5f83e9b6afdc7d306f0094
https://github.com/qemu/qemu/commit/781e730556f3621a3f5f83e9b6afdc7d306f0094
Author: Markus Armbruster <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
M python/setup.cfg
Log Message:
-----------
python: Drop redundant warn_unused_configs = True
strict = True implies warn_unused_configs = True.
Signed-off-by: Markus Armbruster <[email protected]>
Signed-off-by: John Snow <[email protected]>
Reviewed-by: Markus Armbruster <[email protected]>
Message-id: [email protected]
Commit: 678868eee3947fa25e13ccf3abb004c9c418e8a2
https://github.com/qemu/qemu/commit/678868eee3947fa25e13ccf3abb004c9c418e8a2
Author: John Snow <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
R scripts/qapi/.flake8
R scripts/qapi/.isort.cfg
R scripts/qapi/mypy.ini
Log Message:
-----------
qapi: delete un-needed python static analysis configs
Since the previous commit, python/setup.cfg applies to scripts/qapi/ as
well. Configuration files in scripts/qapi/ override python/setup.cfg.
scripts/qapi/.flake8 and scripts/qapi/.isort.cfg actually match
python/setup.cfg exactly, and can go.
The differences between scripts/qapi/mypy.ini and python/setup.cfg are
harmless: namespace_packages being set to True is a requirement for the
PEP420 nested package structure of QEMU but not for scripts/qapi, but
has no effect on type checking the QAPI code. warn_unused_ignores is
used in python/ to be able to target a wide variety of mypy versions;
some of which that have added new ignore categories that are not present
in older versions.
Ultimately, scripts/qapi/mypy.ini can be removed without any real change
in behavior to how mypy enforces type safety there.
The pylint config is being left in place because the settings differ
enough from the python/ directory settings that we need a chit-chat on
how to merge them O:-)
Signed-off-by: John Snow <[email protected]>
Reviewed-by: Markus Armbruster <[email protected]>
Message-id: [email protected]
Commit: a95ad49bbfac2a5080c5761688465bdbb1969c24
https://github.com/qemu/qemu/commit/a95ad49bbfac2a5080c5761688465bdbb1969c24
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
M rust/meson.build
M rust/qemu-api/meson.build
M scripts/archive-source.sh
M scripts/make-release
M subprojects/.gitignore
A subprojects/anyhow-1-rs.wrap
A subprojects/packagefiles/anyhow-1-rs/meson.build
Log Message:
-----------
subprojects: add the anyhow crate
This is a standard replacement for Box<dyn Error> which is more efficient (it
only
occcupies one word) and provides a backtrace of the error. This could be
plumbed
into &error_abort in the future.
Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: bfe0f6b02a4d76bcdc05f50e03667447f6069445
https://github.com/qemu/qemu/commit/bfe0f6b02a4d76bcdc05f50e03667447f6069445
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
M rust/meson.build
M rust/qemu-api/meson.build
M scripts/archive-source.sh
M scripts/make-release
M subprojects/.gitignore
A subprojects/foreign-0.3-rs.wrap
A subprojects/packagefiles/foreign-0.3-rs/meson.build
Log Message:
-----------
subprojects: add the foreign crate
This is a cleaned up and separated version of the patches at
https://lore.kernel.org/all/[email protected]/
https://lore.kernel.org/all/[email protected]/
Its first user will be the Error bindings; for example a QEMU Error ** can be
converted to a Rust Option using
unsafe { Option::<Error>::from_foreign(c_error) }
Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 8714d366e7e29d3ca8cebc8504e18c4cd7b5cf48
https://github.com/qemu/qemu/commit/8714d366e7e29d3ca8cebc8504e18c4cd7b5cf48
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
A include/qapi/error-internal.h
M rust/wrapper.h
M util/error.c
Log Message:
-----------
util/error: expose Error definition to Rust code
This is used to preserve the file and line in a roundtrip from
C Error to Rust and back to C.
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 230a4894f45eac5fbd6bea8dc0dd54f84cf6c0fa
https://github.com/qemu/qemu/commit/230a4894f45eac5fbd6bea8dc0dd54f84cf6c0fa
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
M include/qapi/error-internal.h
M util/error.c
Log Message:
-----------
util/error: allow non-NUL-terminated err->src
Rust makes the current file available as a statically-allocated string,
but without a NUL terminator. Allow this by storing an optional maximum
length in the Error.
Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: e8fb9c91a3ea437bdddd1819e180f36112e41ae1
https://github.com/qemu/qemu/commit/e8fb9c91a3ea437bdddd1819e180f36112e41ae1
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
M include/qapi/error-internal.h
M util/error.c
Log Message:
-----------
util/error: make func optional
The function name is not available in Rust, so make it optional.
Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: b4ff3cf34fa09b28a480870b98377bac183833c8
https://github.com/qemu/qemu/commit/b4ff3cf34fa09b28a480870b98377bac183833c8
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
M docs/devel/rust.rst
M rust/Cargo.lock
M rust/Cargo.toml
M rust/qemu-api/Cargo.toml
M rust/qemu-api/meson.build
A rust/qemu-api/src/error.rs
M rust/qemu-api/src/lib.rs
Log Message:
-----------
rust: qemu-api: add bindings to Error
Provide an implementation of std::error::Error that bridges the Rust
anyhow::Error and std::panic::Location types with QEMU's Error*.
It also has several utility methods, analogous to error_propagate(),
that convert a Result into a return value + Error** pair. One important
difference is that these propagation methods *panic* if *errp is NULL,
unlike error_propagate() which eats subsequent errors[1]. The reason
for this is that in C you have an error_set*() call at the site where
the error is created, and calls to error_propagate() are relatively rare.
In Rust instead, even though these functions do "propagate" a
qemu_api::Error into a C Error**, there is no error_setg() anywhere that
could check for non-NULL errp and call abort(). error_propagate()'s
behavior of ignoring subsequent errors is generally considered weird,
and there would be a bigger risk of triggering it from Rust code.
[1] This is actually a violation of the preconditions of error_propagate(),
so it should not happen. But you never know...
Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 9a33f49f44453b2914dc2e9be2633c0dfcb9e267
https://github.com/qemu/qemu/commit/9a33f49f44453b2914dc2e9be2633c0dfcb9e267
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-05 (Thu, 05 Jun 2025)
Changed paths:
M rust/qemu-api/src/error.rs
Log Message:
-----------
rust: qemu-api: add tests for Error bindings
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 4b66abead9c9c7b637fb87e6bf782a45eee2a621
https://github.com/qemu/qemu/commit/4b66abead9c9c7b637fb87e6bf782a45eee2a621
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M rust/hw/char/pl011/src/device.rs
M rust/hw/timer/hpet/src/device.rs
M rust/qemu-api/src/qdev.rs
Log Message:
-----------
rust: qdev: support returning errors from realize
Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: b3bf86b8936dbca8689623d22b8955e071143a5e
https://github.com/qemu/qemu/commit/b3bf86b8936dbca8689623d22b8955e071143a5e
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M rust/hw/timer/hpet/src/device.rs
Log Message:
-----------
rust/hpet: change type of num_timers to usize
Remove the need to convert after every read of the BqlCell. Because the
vmstate uses a u8 as the size of the VARRAY, this requires switching
the VARRAY to use num_timers_save; which in turn requires ensuring that
the num_timers_save is always there. For simplicity do this by
removing support for version 1, which QEMU has not been producing for
~15 years.
Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 6e85cfe44c0e0311d6395526a064eb5af761a879
https://github.com/qemu/qemu/commit/6e85cfe44c0e0311d6395526a064eb5af761a879
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M hw/timer/hpet.c
Log Message:
-----------
hpet: adjust VMState for consistency with Rust version
No functional change intended.
Suggested-by: Zhao Liu <[email protected]>
Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 14b5a799339d2d21826eac5ab1e98d00b1f1f89f
https://github.com/qemu/qemu/commit/14b5a799339d2d21826eac5ab1e98d00b1f1f89f
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M hw/timer/hpet.c
Log Message:
-----------
hpet: return errors from realize if properties are incorrect
Do not silently adjust num_timers, and fail if intcap is 0.
Reviewed-by: Markus Armbruster <[email protected]>
Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 4d2fec89cb8651ee760ff9296c8d3e2ade4cc063
https://github.com/qemu/qemu/commit/4d2fec89cb8651ee760ff9296c8d3e2ade4cc063
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M rust/hw/timer/hpet/src/device.rs
M rust/hw/timer/hpet/src/fw_cfg.rs
Log Message:
-----------
rust/hpet: return errors from realize if properties are incorrect
Match the code in hpet.c; this also allows removing the
BqlCell from the num_timers field.
Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 869b0afa4fafb73ba5a3c556b0ef5e5c1a39e717
https://github.com/qemu/qemu/commit/869b0afa4fafb73ba5a3c556b0ef5e5c1a39e717
Author: Zhao Liu <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M rust/hw/timer/hpet/src/device.rs
Log Message:
-----------
rust/hpet: Drop BqlCell wrapper for num_timers
Now that the num_timers field is initialized as a property, someone may
change its default value using qdev_prop_set_uint8(), but the value is
fixed after the Rust code sees it first. Since there is no need to modify
it after realize(), it is not to be necessary to have a BqlCell wrapper.
Signed-off-by: Zhao Liu <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
[Remove .into() as well. - Paolo]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 9c00ef6248bd6545f262f18f31b15fc681e88972
https://github.com/qemu/qemu/commit/9c00ef6248bd6545f262f18f31b15fc681e88972
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M docs/devel/rust.rst
Log Message:
-----------
docs: update Rust module status
error is new; offset_of is gone.
Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: bc2a48d647752e4f99247184f5dfe00e67a2de8f
https://github.com/qemu/qemu/commit/bc2a48d647752e4f99247184f5dfe00e67a2de8f
Author: Paolo Bonzini <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M rust/qemu-api-macros/src/lib.rs
Log Message:
-----------
rust: make TryFrom macro more resilient
If the enum includes values such as "Ok", "Err", or "Error", the TryInto
macro can cause errors. Be careful and qualify identifiers with the full
path, or in the case of TryFrom<>::Error do not use the associated type
at all.
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 4cdc489eb9c25f76255a550a4a0b19cda3435a76
https://github.com/qemu/qemu/commit/4cdc489eb9c25f76255a550a4a0b19cda3435a76
Author: Tom Lendacky <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M accel/kvm/kvm-all.c
M include/system/kvm.h
M target/i386/kvm/kvm.c
Log Message:
-----------
i386/kvm: Prefault memory on page state change
A page state change is typically followed by an access of the page(s) and
results in another VMEXIT in order to map the page into the nested page
table. Depending on the size of page state change request, this can
generate a number of additional VMEXITs. For example, under SNP, when
Linux is utilizing lazy memory acceptance, memory is typically accepted in
4M chunks. A page state change request is submitted to mark the pages as
private, followed by validation of the memory. Since the guest_memfd
currently only supports 4K pages, each page validation will result in
VMEXIT to map the page, resulting in 1024 additional exits.
When performing a page state change, invoke KVM_PRE_FAULT_MEMORY for the
size of the page state change in order to pre-map the pages and avoid the
additional VMEXITs. This helps speed up boot times.
Signed-off-by: Tom Lendacky <[email protected]>
Link:
https://lore.kernel.org/r/f5411c42340bd2f5c14972551edb4e959995e42b.1743193824.git.thomas.lenda...@amd.com
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 6e2d11bf04fb18e60afc8551871d9acb7b56983d
https://github.com/qemu/qemu/commit/6e2d11bf04fb18e60afc8551871d9acb7b56983d
Author: Akihiko Odaki <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M include/qemu/futex.h
M tests/unit/test-aio-multithread.c
M util/qemu-thread-posix.c
Log Message:
-----------
futex: Check value after qemu_futex_wait()
futex(2) - Linux manual page
https://man7.org/linux/man-pages/man2/futex.2.html
> Note that a wake-up can also be caused by common futex usage patterns
> in unrelated code that happened to have previously used the futex
> word's memory location (e.g., typical futex-based implementations of
> Pthreads mutexes can cause this under some conditions). Therefore,
> callers should always conservatively assume that a return value of 0
> can mean a spurious wake-up, and use the futex word's value (i.e.,
> the user-space synchronization scheme) to decide whether to continue
> to block or not.
Signed-off-by: Akihiko Odaki <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 1bc2c495395bfad526b50d84f4db5687ce1d3963
https://github.com/qemu/qemu/commit/1bc2c495395bfad526b50d84f4db5687ce1d3963
Author: Akihiko Odaki <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M include/qemu/futex.h
M meson.build
M tests/unit/test-aio-multithread.c
M util/lockcnt.c
M util/meson.build
M util/qemu-thread-posix.c
Log Message:
-----------
futex: Support Windows
Windows supports futex-like APIs since Windows 8 and Windows Server
2012.
Signed-off-by: Akihiko Odaki <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 32da70a88780a167affde071fb2410ca2da58eaa
https://github.com/qemu/qemu/commit/32da70a88780a167affde071fb2410ca2da58eaa
Author: Akihiko Odaki <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M include/qemu/thread-posix.h
M util/qemu-thread-posix.c
Log Message:
-----------
qemu-thread: Replace __linux__ with CONFIG_LINUX
scripts/checkpatch.pl warns for __linux__ saying "architecture specific
defines should be avoided".
Signed-off-by: Akihiko Odaki <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: d1895f4c17fdeee35a9b86099bb64d4ed3333658
https://github.com/qemu/qemu/commit/d1895f4c17fdeee35a9b86099bb64d4ed3333658
Author: Akihiko Odaki <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M util/qemu-thread-posix.c
Log Message:
-----------
qemu-thread: Avoid futex abstraction for non-Linux
qemu-thread used to abstract pthread primitives into futex for the
QemuEvent implementation of POSIX systems other than Linux. However,
this abstraction has one key difference: unlike futex, pthread
primitives require an explicit destruction, and it must be ordered after
wait and wake operations.
It would be easier to perform destruction if a wait operation ensures
the corresponding wake operation finishes as POSIX semaphore does, but
that requires to protect state accesses in qemu_event_set() and
qemu_event_wait() with a mutex. On the other hand, real futex does not
need such a protection but needs complex barrier and atomic operations
to ensure ordering between the two functions.
Add special implementations of qemu_event_set() and qemu_event_wait()
using pthread primitives. qemu_event_wait() will ensure qemu_event_set()
finishes, and these functions will avoid complex barrier and atomic
operations to ensure ordering between them.
Signed-off-by: Akihiko Odaki <[email protected]>
Tested-by: Phil Dennis-Jordan <[email protected]>
Reviewed-by: Phil Dennis-Jordan <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 69e10db83ea69cae74b59d27d87cfc61d9dd2b51
https://github.com/qemu/qemu/commit/69e10db83ea69cae74b59d27d87cfc61d9dd2b51
Author: Akihiko Odaki <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M include/qemu/thread-posix.h
M include/qemu/thread-win32.h
M include/qemu/thread.h
A util/event.c
M util/meson.build
M util/qemu-thread-posix.c
M util/qemu-thread-win32.c
Log Message:
-----------
qemu-thread: Use futex for QemuEvent on Windows
Use the futex-based implementation of QemuEvent on Windows to
remove code duplication and remove the overhead of event object
construction and destruction.
Signed-off-by: Akihiko Odaki <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 0a765ca850125e0202c366cb4aab032ac9670870
https://github.com/qemu/qemu/commit/0a765ca850125e0202c366cb4aab032ac9670870
Author: Akihiko Odaki <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M include/qemu/lockcnt.h
M util/lockcnt.c
Log Message:
-----------
qemu-thread: Use futex if available for QemuLockCnt
This unlocks the futex-based implementation of QemuLockCnt to Windows.
Signed-off-by: Akihiko Odaki <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 5e2312f75adcba8cfee343a03343bf298c5bc937
https://github.com/qemu/qemu/commit/5e2312f75adcba8cfee343a03343bf298c5bc937
Author: Akihiko Odaki <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M include/qemu/thread.h
Log Message:
-----------
qemu-thread: Document QemuEvent
Document QemuEvent to help choose an appropriate synchronization
primitive.
Signed-off-by: Akihiko Odaki <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 952691b7a6c93f4f5b9ae9bb178021511374967a
https://github.com/qemu/qemu/commit/952691b7a6c93f4f5b9ae9bb178021511374967a
Author: Akihiko Odaki <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M migration/migration.c
M migration/migration.h
Log Message:
-----------
migration: Replace QemuSemaphore with QemuEvent
pause_event can utilize qemu_event_reset() to discard events.
Signed-off-by: Akihiko Odaki <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: da926a8b9dd67be3432c525a6db998141be444e2
https://github.com/qemu/qemu/commit/da926a8b9dd67be3432c525a6db998141be444e2
Author: Akihiko Odaki <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M migration/colo.c
M migration/migration.h
Log Message:
-----------
migration/colo: Replace QemuSemaphore with QemuEvent
colo_exit_sem and colo_incoming_sem represent one-shot events so they
can be converted into QemuEvent, which is more lightweight.
Signed-off-by: Akihiko Odaki <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: d401b7aed83af96fa0e68f46b15446838f6f5e0f
https://github.com/qemu/qemu/commit/d401b7aed83af96fa0e68f46b15446838f6f5e0f
Author: Akihiko Odaki <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M migration/migration.h
M migration/postcopy-ram.c
M migration/savevm.c
Log Message:
-----------
migration/postcopy: Replace QemuSemaphore with QemuEvent
thread_sync_sem is an one-shot event so it can be converted into
QemuEvent, which is more lightweight.
Signed-off-by: Akihiko Odaki <[email protected]>
Reviewed-by: Fabiano Rosas <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 23aec0d0e80a31d3fc3061e5c83432007502948a
https://github.com/qemu/qemu/commit/23aec0d0e80a31d3fc3061e5c83432007502948a
Author: Akihiko Odaki <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M hw/display/apple-gfx.m
Log Message:
-----------
hw/display/apple-gfx: Replace QemuSemaphore with QemuEvent
sem in AppleGFXReadMemoryJob is an one-shot event so it can be converted
into QemuEvent, which is more specialized for such a use case.
Signed-off-by: Akihiko Odaki <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: bc40e4fe6263f2c939ac8455033bfec18c9b3a0a
https://github.com/qemu/qemu/commit/bc40e4fe6263f2c939ac8455033bfec18c9b3a0a
Author: Peter Maydell <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M target/i386/tcg/fpu_helper.c
M tests/tcg/x86_64/fma.c
Log Message:
-----------
target/i386: Detect flush-to-zero after rounding
The Intel SDM section 10.2.3.3 on the MXCSR.FTZ bit says that we
flush outputs to zero when we detect underflow, which is after
rounding. Set the detect_ftz flag accordingly.
This allows us to enable the test in fma.c which checks this
behaviour.
Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Zhao Liu <[email protected]>
Link:
https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 397ef415cad11c91318b512ecfaa27679ea7e351
https://github.com/qemu/qemu/commit/397ef415cad11c91318b512ecfaa27679ea7e351
Author: Peter Maydell <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M target/i386/ops_sse.h
M target/i386/tcg/fpu_helper.c
Log Message:
-----------
target/i386: Use correct type for get_float_exception_flags() values
The softfloat get_float_exception_flags() function returns 'int', but
in various places in target/i386 we incorrectly store the returned
value into a uint8_t. This currently has no ill effects because i386
doesn't care about any of the float_flag enum values above 0x40.
However, we want to start using float_flag_input_denormal_used, which
is 0x4000.
Switch to using 'int' so that we can handle all the possible valid
float_flag_* values. This includes changing the return type of
save_exception_flags() and the argument to merge_exception_flags().
Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Zhao Liu <[email protected]>
Link:
https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 57df511180ae015c4f6fac2a8260649a79e8ead9
https://github.com/qemu/qemu/commit/57df511180ae015c4f6fac2a8260649a79e8ead9
Author: Peter Maydell <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M target/i386/tcg/fpu_helper.c
Log Message:
-----------
target/i386: Wire up MXCSR.DE and FPUS.DE correctly
The x86 DE bit in the FPU and MXCSR status is supposed to be set
when an input denormal is consumed. We didn't previously report
this from softfloat, so the x86 code either simply didn't set
the DE bit or else incorrectly wired it up to denormal_flushed,
depending on which register you looked at.
Now we have input_denormal_used we can wire up these DE bits
with the semantics they are supposed to have.
Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Link:
https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: 3f9bdfb0dc8162cbc080c868625336178ddcda56
https://github.com/qemu/qemu/commit/3f9bdfb0dc8162cbc080c868625336178ddcda56
Author: Peter Maydell <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M tests/tcg/x86_64/fma.c
Log Message:
-----------
tests/tcg/x86_64/fma: add test for exact-denormal output
Add some fma test cases that check for correct handling of FTZ and
for the flag that indicates that the input denormal was consumed.
Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Zhao Liu <[email protected]>
Link:
https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>
Commit: fc8da54ec43cf6302ac496d8fe54832812954679
https://github.com/qemu/qemu/commit/fc8da54ec43cf6302ac496d8fe54832812954679
Author: Stefan Hajnoczi <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M docs/sphinx/qapi_domain.py
M docs/sphinx/qapidoc.py
M python/setup.cfg
M python/tests/minreqs.txt
A python/tests/qapi-flake8.sh
A python/tests/qapi-isort.sh
A python/tests/qapi-mypy.sh
A python/tests/qapi-pylint.sh
R scripts/qapi/.flake8
R scripts/qapi/.isort.cfg
M scripts/qapi/backend.py
R scripts/qapi/mypy.ini
M scripts/qapi/pylintrc
Log Message:
-----------
Merge tag 'python-pull-request' of https://gitlab.com/jsnow/qemu into staging
Python Pull Request
Add QAPI and QAPI doc files to python static analysis testing regime,
this time for real, probably
# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEE+ber27ys35W+dsvQfe+BBqr8OQ4FAmhB388ACgkQfe+BBqr8
# OQ6lMA//WJtSr57ADW5k5zcRMxV7k//erYFkjgXbTh7b9DDblMwNVhYr5lqJbEvS
# V5OChW32++QIO5Y4cBhzbzxFTJXbAYzyg3UATCkH2kRbd139bqdAtsnsaFmoHmLP
# c8KAggT1+hIb7JIVkFiFccMsdCeFwXwQoS5Nk7w95H9cxxYUj/O9qbRuCN+elg/e
# mX4zaq6F2umTx0EdD35DlBPrPPyRsdlVWKUqh8f5KaAGPOelGyvbgwrXU2MT7ewG
# JXcRoYzn/9J2KSboiFY0MjIKqDuhoMdCnbSNpRNGgClJRa+VZEBPFClMe1YSXw0m
# J3kQMYeqm5S1GUG+ZrBTICY6Ch8jNq2kb3ua707JJWdYmd9gq0poF/P7gaRVbyAL
# 5UdYVVgtH/3xve2LGe0guj3v5kTK7Vo6dApwj8pRHrBWWOgAG0UgGseOJgndfCIx
# PQRsF2T4YoVdjiGB46EIgBmoFI+VJGwFRlvb6WZ0YmPedi7MuUvWmo0lbgDkaTO+
# MMqsWxShTY+xwnSFgtl1iHOAdfT6jiHcn1n+hZrGpvF492XRjW02zKiDSZECqSz5
# lg51+OaDc2HwS65sYyFb4GD7yF/PcdOj7MG/Ij9dx0GoM9/HmcVAHyRt45QNgxzc
# N7Xx6GFGs7puDoE/pSoauFtGC8XeR6Cx0HfBcXYGaJcJEq6N4yw=
# =IVAr
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu 05 Jun 2025 14:19:59 EDT
# gpg: using RSA key F9B7ABDBBCACDF95BE76CBD07DEF8106AAFC390E
# gpg: Good signature from "John Snow (John Huston) <[email protected]>" [full]
# Primary key fingerprint: FAEB 9711 A12C F475 812F 18F2 88A9 064D 1835 61EB
# Subkey fingerprint: F9B7 ABDB BCAC DF95 BE76 CBD0 7DEF 8106 AAFC 390E
* tag 'python-pull-request' of https://gitlab.com/jsnow/qemu:
qapi: delete un-needed python static analysis configs
python: Drop redundant warn_unused_configs = True
python: add qapi static analysis tests
python: update missing dependencies from minreqs
docs/qapidoc: linting fixes
qapi: Add some pylint ignores
Signed-off-by: Stefan Hajnoczi <[email protected]>
Commit: 96215036f47403438c7c7869b7cd419bd7a11f82
https://github.com/qemu/qemu/commit/96215036f47403438c7c7869b7cd419bd7a11f82
Author: Stefan Hajnoczi <[email protected]>
Date: 2025-06-06 (Fri, 06 Jun 2025)
Changed paths:
M accel/kvm/kvm-all.c
M docs/devel/rust.rst
M hw/display/apple-gfx.m
M hw/timer/hpet.c
A include/qapi/error-internal.h
M include/qemu/futex.h
M include/qemu/lockcnt.h
M include/qemu/thread-posix.h
M include/qemu/thread-win32.h
M include/qemu/thread.h
M include/system/kvm.h
M meson.build
M migration/colo.c
M migration/migration.c
M migration/migration.h
M migration/postcopy-ram.c
M migration/savevm.c
M rust/Cargo.lock
M rust/Cargo.toml
M rust/hw/char/pl011/src/device.rs
M rust/hw/timer/hpet/src/device.rs
M rust/hw/timer/hpet/src/fw_cfg.rs
M rust/meson.build
M rust/qemu-api-macros/src/lib.rs
M rust/qemu-api/Cargo.toml
M rust/qemu-api/meson.build
A rust/qemu-api/src/error.rs
M rust/qemu-api/src/lib.rs
M rust/qemu-api/src/qdev.rs
M rust/wrapper.h
M scripts/archive-source.sh
M scripts/make-release
M subprojects/.gitignore
A subprojects/anyhow-1-rs.wrap
A subprojects/foreign-0.3-rs.wrap
A subprojects/packagefiles/anyhow-1-rs/meson.build
A subprojects/packagefiles/foreign-0.3-rs/meson.build
M target/i386/kvm/kvm.c
M target/i386/ops_sse.h
M target/i386/tcg/fpu_helper.c
M tests/tcg/x86_64/fma.c
M tests/unit/test-aio-multithread.c
M util/error.c
A util/event.c
M util/lockcnt.c
M util/meson.build
M util/qemu-thread-posix.c
M util/qemu-thread-win32.c
Log Message:
-----------
Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging
* futex: support Windows
* qemu-thread: Avoid futex abstraction for non-Linux
* migration, hw/display/apple-gfx: replace QemuSemaphore with QemuEvent
* rust: bindings for Error
* hpet, rust/hpet: return errors from realize if properties are incorrect
* rust/hpet: Drop BqlCell wrapper for num_timers
* target/i386: Emulate ftz and denormal flag bits correctly
* i386/kvm: Prefault memory on page state change
# -----BEGIN PGP SIGNATURE-----
#
# iQFIBAABCgAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmhC4AgUHHBib256aW5p
# QHJlZGhhdC5jb20ACgkQv/vSX3jHroP09wf+K9e0TaaZRxTsw7WU9pXsDoYPzTLd
# F5CkBZPY770X1JW75f8Xw5qKczI0t6s26eFK1NUZxYiDVWzW/lZT6hreCUQSwzoS
# b0wlAgPW+bV5dKlKI2wvnadrgDvroj4p560TS+bmRftiu2P0ugkHHtIJNIQ+byUQ
# sWdhKlUqdOXakMrC4H4wDyIgRbK4CLsRMbnBHBUENwNJYJm39bwlicybbagpUxzt
# w4mgjbMab0jbAd2hVq8n+A+1sKjrroqOtrhQLzEuMZ0VAwocwuP2Adm6gBu9kdHV
# tpa8RLopninax3pWVUHnypHX780jkZ8E7zk9ohaaK36NnWTF4W/Z41EOLw==
# =Vs6V
# -----END PGP SIGNATURE-----
# gpg: Signature made Fri 06 Jun 2025 08:33:12 EDT
# gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg: issuer "[email protected]"
# gpg: Good signature from "Paolo Bonzini <[email protected]>" [full]
# gpg: aka "Paolo Bonzini <[email protected]>" [full]
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1
# Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83
* tag 'for-upstream' of https://gitlab.com/bonzini/qemu: (31 commits)
tests/tcg/x86_64/fma: add test for exact-denormal output
target/i386: Wire up MXCSR.DE and FPUS.DE correctly
target/i386: Use correct type for get_float_exception_flags() values
target/i386: Detect flush-to-zero after rounding
hw/display/apple-gfx: Replace QemuSemaphore with QemuEvent
migration/postcopy: Replace QemuSemaphore with QemuEvent
migration/colo: Replace QemuSemaphore with QemuEvent
migration: Replace QemuSemaphore with QemuEvent
qemu-thread: Document QemuEvent
qemu-thread: Use futex if available for QemuLockCnt
qemu-thread: Use futex for QemuEvent on Windows
qemu-thread: Avoid futex abstraction for non-Linux
qemu-thread: Replace __linux__ with CONFIG_LINUX
futex: Support Windows
futex: Check value after qemu_futex_wait()
i386/kvm: Prefault memory on page state change
rust: make TryFrom macro more resilient
docs: update Rust module status
rust/hpet: Drop BqlCell wrapper for num_timers
rust/hpet: return errors from realize if properties are incorrect
...
Signed-off-by: Stefan Hajnoczi <[email protected]>
Compare: https://github.com/qemu/qemu/compare/2a53c4f5c534...96215036f474
To unsubscribe from these emails, change your notification settings at
https://github.com/qemu/qemu/settings/notifications