addr += (uint64_t)i * src_width;
> > +src += (uint64_t)i * src_width;
> > +dest += (uint64_t)i * dest_row_pitch;
> >
> > snap = memory_region_snapshot_and_clear_dirty(mem, addr, src_width *
> > rows,
> >DIRTY_MEMORY_VGA);
>
Reviewed-by: Manos Pitsidianakis
(self, f"{self.KUT_BASE}/selftest-smp", self.OK_CMD)
> +ec_and_wait(self, f"{self.KUT_BASE}/selftest-vectors-kernel",
> self.OK_CMD)
> +ec_and_wait(self, f"{self.KUT_BASE}/selftest-vectors-user",
> self.OK_CMD)
These could probably be merged in _launch_guest() just as well
> +
> +
> +def test_aarch64_vhe_selftest(self):
> +
> +self._launch_guest("vhe")
> +
> +ec_and_wait(self, f"{self.KUT_BASE}/selftest-setup", self.OK_CMD)
> +ec_and_wait(self, f"{self.KUT_BASE}/selftest-smp", self.OK_CMD)
> +ec_and_wait(self, f"{self.KUT_BASE}/selftest-vectors-kernel",
> self.OK_CMD)
> +ec_and_wait(self, f"{self.KUT_BASE}/selftest-vectors-user",
> self.OK_CMD)
> +
> +
> +if __name__ == '__main__':
> +LinuxKernelTest.main()
> --
> 2.47.2
>
>
Tested-by: Manos Pitsidianakis
Reviewed-by: Manos Pitsidianakis
f staticlibs?
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
On Sat, Jul 19, 2025 at 7:00 AM Pierrick Bouvier
wrote:
>
> TF-A needs to be patched to enable support for FEAT_TCR2 and
> FEAT_SCTLR2. This new image contains updated firmware.
>
> Signed-off-by: Pierrick Bouvier
> ---
> tests/functional/test_aarch64_rme_sbsaref.py | 64 ---
> tests
Add a CLI argument that takes fnmatch(3)-style patterns as value and can
be specified many times. Only tests that match the pattern will be
executed. This argument is passed to unittest.main which takes the same
argument.
Signed-off-by: Manos Pitsidianakis
---
tests/functional/qemu_test
Add CLI arg to keep scratch files after test execution, equivalent to
setting QEMU_TEST_KEEP_SCRATCH env var.
Suggested-by: Alex Bennée
Signed-off-by: Manos Pitsidianakis
---
tests/functional/qemu_test/testcase.py | 14 +-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git
ned-off-by: Manos Pitsidianakis
---
tests/functional/qemu_test/testcase.py | 16
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/tests/functional/qemu_test/testcase.py
b/tests/functional/qemu_test/testcase.py
index
9b00c63e6ca7a2a669fd456f1d1b51
Pitsidianakis
---
Changes in v2:
- Fixed invalid -k value passing when -k was specified more than once
(thanks Paolo)
- Link to v1:
https://lore.kernel.org/qemu-devel/20250718-functional_tests_args-v1-0-54d4c6207...@linaro.org
---
Manos Pitsidianakis (3):
tests/functional: add --keep
On Fri, Jul 18, 2025 at 12:37 PM Paolo Bonzini wrote:
>
> On 7/18/25 11:12, Manos Pitsidianakis wrote:
> > Add a CLI argument that takes fnmatch(3)-style patterns as value and can
> > be specified many times. Only tests that match the pattern will be
> > executed. Th
On Fri, Jul 18, 2025 at 12:20 PM Daniel P. Berrangé wrote:
>
> On Thu, Jul 17, 2025 at 01:34:13PM +0300, Manos Pitsidianakis wrote:
> > Add argument parsing to functional tests to improve developer experience
> > when running individual tests. All logs are printed to stdout
>
Add a CLI argument that takes fnmatch(3)-style patterns as value and can
be specified many times. Only tests that match the pattern will be
executed. This argument is passed to unittest.main which takes the same
argument.
Signed-off-by: Manos Pitsidianakis
---
tests/functional/qemu_test
Pitsidianakis
---
Manos Pitsidianakis (3):
tests/functional: add --keep-scratch CLI arg
tests/functional: add --list-tests CLI arg
tests/functional: add -k TEST_NAME_PATTERN CLI arg
tests/functional/qemu_test/testcase.py | 45 +-
1 file changed
Add CLI arg to keep scratch files after test execution, equivalent to
setting QEMU_TEST_KEEP_SCRATCH env var.
Suggested-by: Alex Bennée
Signed-off-by: Manos Pitsidianakis
---
tests/functional/qemu_test/testcase.py | 15 ++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff
ned-off-by: Manos Pitsidianakis
---
tests/functional/qemu_test/testcase.py | 16
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/tests/functional/qemu_test/testcase.py
b/tests/functional/qemu_test/testcase.py
index
24f0b452964012532530a92018b2c4
The split was a relic of early development and is not necessary.
Signed-off-by: Manos Pitsidianakis
---
rust/hw/char/pl011/src/device.rs | 103 ++---
rust/hw/char/pl011/src/device_class.rs | 103 -
rust/hw/char/pl011/src/lib.rs
Add a section about b4, an actively maintained and widely packaged CLI
tool for contributing to patch-based development projects.
Reviewed-by: Gustavo Romero
Signed-off-by: Manos Pitsidianakis
---
Changes in v2:
- s/later/letter and add review trailers (thanks Gustavo)
- Link to v1:
https
On Thu, Jul 17, 2025 at 9:48 PM Gustavo Romero
wrote:
>
> Hi Manos,
>
> Nice, I use a lot b4 and I think many QEMU devs use it as well :)
>
> On 7/17/25 10:53, Manos Pitsidianakis wrote:
> > Add a section about b4, an actively maintained and widely packaged CLI
> >
x27; igvmIndependent Guest Virtual Machine (IGVM)
> file support'
>printf "%s\n" ' jackJACK sound support'
>printf "%s\n" ' keyring Linux keyring support'
>printf "%s\n" ' kvm KVM acceleration support'
> --
> 2.50.1
>
>
Reviewed-by: Manos Pitsidianakis
Add a section about b4, an actively maintained and widely packaged CLI
tool for contributing to patch-based development projects.
Signed-off-by: Manos Pitsidianakis
---
docs/devel/submitting-a-patch.rst | 40 +--
1 file changed, 38 insertions(+), 2 deletions
elp show this help message and exit
-d, --debug Also print test and console logs on stdout. This will
make the TAP output invalid and is meant for debugging
only.
Signed-off-by: Manos Pitsidianakis
---
Changes in v2:
- Store stdout handler in `self` obje
On Thu, Jul 17, 2025 at 1:04 PM Alex Bennée wrote:
>
> Manos Pitsidianakis writes:
>
> > On Thu, Jul 17, 2025 at 11:42 AM Alex Bennée wrote:
> >>
> >> Manos Pitsidianakis writes:
> >>
> >> > Add argument parsing to functional tests to impro
On Thu, Jul 17, 2025 at 12:39 PM Daniel P. Berrangé wrote:
>
> On Thu, Jul 17, 2025 at 12:27:08PM +0300, Manos Pitsidianakis wrote:
> > On Thu, Jul 17, 2025 at 12:22 PM Daniel P. Berrangé
> > wrote:
> > >
> > > On Wed, Jul 16, 2025 at 09:08:00AM +0300, Ma
fa94f50a2cf82fa9e582a7c/serde_derive/src/internals/attr.rs#L276
I'm not against dependencies mind you, but this replaces just a few
lines of code.
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
On Thu, Jul 17, 2025 at 12:22 PM Daniel P. Berrangé wrote:
>
> On Wed, Jul 16, 2025 at 09:08:00AM +0300, Manos Pitsidianakis wrote:
> > Add argument parsing to functional tests to improve developer experience
> > when running individual tests. All logs are printed to stdout
>
On Thu, Jul 17, 2025 at 11:42 AM Alex Bennée wrote:
>
> Manos Pitsidianakis writes:
>
> > Add argument parsing to functional tests to improve developer experience
> > when running individual tests. All logs are printed to stdout
> > interspersed with TAP output.
>
options:
-h, --help show this help message and exit
-d, --debug Also print test and console logs on stdout. This will
make the TAP output invalid and is meant for debugging
only.
Signed-off-by: Manos Pitsidianakis
---
docs/devel/testing
# This tests the FEAT_RME cpu implementation, by booting a VM supporting
> it,
> # and launching a nested VM using it.
> @@ -66,7 +67,7 @@ def test_aarch64_rme_virt(self):
> stack_path_tar_gz = self.ASSET_RME_STACK_VIRT.fetch()
> self.archive_extract(stack_pa
196d')
> +('https://fileserver.linaro.org/s/bz9cjSGPgWJ2iQT/'
> + 'download/device_passthrough_v2.tar.xz'),
> + '5e892ee9ea4d1348e673524485ecfb960f748dfdd76dbc396347b1781a4f4252')
>
> # This tests the device passthrough implementation, by booting a VM
> # supporting it with two nvme disks attached, and launching a nested VM
> --
> 2.47.2
>
>
Reviewed-by: Manos Pitsidianakis
Tested-by: Manos Pitsidianakis
el-ops-rr.c
> @@ -302,8 +302,6 @@ static void *rr_cpu_thread_fn(void *arg)
> rr_deal_with_unplugged_cpus();
> }
>
> -rcu_unregister_thread();
> -
> g_assert_not_reached();
> }
>
> --
> 2.49.0
>
Reviewed-by: Manos Pitsidianakis
&error_fatal);
> @@ -207,9 +206,9 @@ static void dump_exec_info(GString *buf)
> tcg_dump_flush_info(buf);
> }
>
> -void tcg_dump_stats(GString *buf)
> +void tcg_dump_stats(AccelState *accel, GString *buf)
> {
> -dump_accel_info(buf);
> +dump_accel_info(accel, buf);
> dump_exec_info(buf);
> dump_drift_info(buf);
> }
> --
> 2.49.0
>
Reviewed-by: Manos Pitsidianakis
bject,
> return true;
> }
>
> -bool qemu_socket_unselect(int sockfd, Error **errp)
> +bool qemu_socket_unselect(int sockfd)
> {
> -return qemu_socket_select(sockfd, NULL, 0, errp);
> +return qemu_socket_select(sockfd, NULL, 0, NULL);
> }
>
> int qemu_socketpair(int domain, int type, int protocol, int sv[2])
> --
> 2.49.0
>
>
Reviewed-by: Manos Pitsidianakis
et_select(int sockfd, WSAEVENT hEventObject,
>
> bool qemu_socket_unselect(int sockfd)
> {
> -return qemu_socket_select(sockfd, NULL, 0, NULL);
> +return qemu_socket_select(sockfd, NULL, 0);
> }
>
> int qemu_socketpair(int domain, int type, int protocol, int sv[2])
> --
> 2.49.0
>
>
Reviewed-by: Manos Pitsidianakis
--- a/hw/arm/xen-pvh.c
> +++ b/hw/arm/xen-pvh.c
> @@ -10,7 +10,6 @@
> #include "hw/boards.h"
> #include "system/system.h"
> #include "hw/xen/xen-pvh-common.h"
> -#include "hw/xen/arch_hvm.h"
>
> #define TYPE_XEN_ARM MACHINE_TYPE_NAME("xenpvh")
>
> --
> 2.49.0
>
>
Reviewed-by: Manos Pitsidianakis
afety_doc
> + clippy::missing_safety_doc,
> +clippy::too_many_arguments
> )]
>
> //! `bindgen`-generated declarations.
> --
> MST
>
Reviewed-by: Manos Pitsidianakis
aken, either directly or via `BqlCell` and `BqlRefCell`.
> --
> MST
>
Hi Michael,
This patch does not seem to have been reviewed.
The clippy allows are in the top of the file, not above the
`include!`. This should be a one line change and the `mod gen` wrap is
unnecessary.
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
il/vhost-user-server.c
> +F: net/vhost*
>
> vhost-shadow-virtqueue
> R: Eugenio Pérez
> --
> 2.50.1
>
>
Reviewed-by: Manos Pitsidianakis
dev, const
> char *name,
>
> queue_pairs = vhost_vdpa_get_max_queue_pairs(vdpa_device_fd, features,
> &has_cvq, errp);
> -if (queue_pairs < 0) {
> -qemu_close(vdpa_device_fd);
> -return queue_pairs;
> +if (queue_pairs <= 0)
` attribute above the field declaration will generate
a `qemu_api::bindings::Property` array member in the device's property
list.
Signed-off-by: Manos Pitsidianakis
---
This patch depends on patches that haven't been merged yet to master, so
you can checkout this tree if you want to test i
On Thu, Jul 10, 2025 at 5:26 PM Paolo Bonzini wrote:
>
> On Thu, Jul 10, 2025 at 11:41 AM Manos Pitsidianakis
> wrote:
> > > Aside from that, I actually liked using Device for the macro name in
> > > your earlier versions. Yes, it's just for properties in practic
"TB hash avg chain %0.3f buckets. "
> - "Histogram: %s\n",
> - qdist_avg(&hst.chain), hgram);
> +avg = qdist_avg(&hst.chain);
> +if (!isnan(avg)) {
> +g_string_append_printf(buf, "TB hash avg chain %0.3f buckets. "
> +"Histogram: %s\n",
> + avg, hgram);
> +}
> g_free(hgram);
> }
>
> --
> 2.49.0
>
Reviewed-by: Manos Pitsidianakis
n state wait-unplug was added for this feature. If
> +failover primary devices are present in the configuration, migration
> +will go into this state. It will wait until the device unplug is
> +completed in the guest and then move into active state. On the target
> +system the primary devices will be automatically hotplugged when the
> +feature bit was negotiated for the virtio-net standby device.
> --
> 2.47.2
>
>
Reviewed-by: Manos Pitsidianakis
le_commands.json")
> +parser.add_argument("-n", type=int, default=20,
> +help="Dump the top entries")
>
FYI this defaults to n=20 always, even if -n isn't given.
Either way LGTM:
Reviewed-by: Manos Pitsidianakis
> args =
_OK):
> -units = extract_build_units(cc_path)
> +if path.isfile(args.cc_path) and access(args.cc_path, R_OK):
> +units = extract_build_units(args.cc_path)
> analyse_units(units)
> exit(0)
> else:
> -print(f"{cc_path} doesn't exist or isn't readable")
> +print(f"{args.cc_path} doesn't exist or isn't readable")
> exit(1)
> --
> 2.47.2
>
>
Reviewed-by: Manos Pitsidianakis
On Thu, Jul 10, 2025 at 12:51 PM Thomas Huth wrote:
>
> This patch tackles two issues. First, the tests/functional folder has
> become quite crowded already, some restructuring would be helpful here.
> Second, we currently encode the target architecture twice in the test
> names since a lot of the
Thanks for the comments, I am preparing a new version with all
problems/suggestions fixed.
On Tue, Jul 8, 2025 at 12:48 PM Paolo Bonzini wrote:
>
> On 7/3/25 16:37, Manos Pitsidianakis wrote:
> > Add derive macro for declaring qdev properties directly above the field
> > defin
.
Signed-off-by: Manos Pitsidianakis
---
Changes in v2:
- Formatted multiplexer key list as a table (suggested by Alex)
- Link to v1:
https://lore.kernel.org/qemu-devel/20250703-docs_rst_improvements-v1-1-0dbbc5eb5...@linaro.org
---
docs/devel/testing/main.rst | 4 ++--
docs/system/images.rst
al_hi);
> -g_byte_array_append(buf, (uint8_t *) &to_quad, 8);
> -#endif
> +uint64_t tmp[2];
> +if (target_big_endian()) {
> +tmp[0] = cpu_to_be64(val_hi);
> +tmp[1] = cpu_to_be64(val_lo);
> +} else {
> +tmp[0] = cpu_to_le64(val_lo);
> +tmp[1] = cpu_to_le64(val_hi);
> +}
> +g_byte_array_append(buf, (uint8_t *)&tmp, 16);
> return 16;
> }
>
> --
> 2.49.0
>
Reviewed-by: Manos Pitsidianakis
Hi Bernhard,
Thanks for your patch!
There was an identical patch last week on the list:
https://lore.kernel.org/qemu-rust/20250703-rust_bindings_allow_unnecessary_transmutes-v1-1-692ca210d...@linaro.org/
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
Reviewed-by: Manos Pitsidianakis
On Tue, Jul 8, 2025 at 1:17 PM Philippe Mathieu-Daudé wrote:
>
> (Forgot to Cc Manos)
>
> On 7/7/25 19:20, Philippe Mathieu-Daudé wrote:
> > Now than various VirtIO files don't use target specific
> > API anymore, we can move t
gt;in_index++] = val;
> if (s->in_index == s->needed_bytes) {
> s->needed_bytes = 0;
> @@ -1032,8 +1017,7 @@ static uint32_t dsp_read(void *opaque, uint32_t nport)
> if (s->out_data_len) {
> retval = s->out_data[--s->out_data_len];
> s->last_read_byte = retval;
> -}
> -else {
> +} else {
> if (s->cmd != -1) {
> dolog ("empty output buffer for command %#x\n",
> s->cmd);
> @@ -1255,8 +1239,7 @@ static int SB_read_DMA (void *opaque, int nchan, int
> dma_pos, int dma_len)
> release_DREQ(s, nchan);
> return dma_pos;
> }
> -}
> -else {
> +} else {
> free = dma_len;
> }
>
> --
> 2.43.0
>
>
Reviewed-by: Manos Pitsidianakis
x27;s
> similar to the above. I'm not sure of its value, either: if the size is
> not 1/2/4/8, memory.c/physmem.c must have screwed up big. It's not a
> safety concern, either, since the size is not used in any unsafe code.
Yep it's more of a guard rail since we can't have refined integer types.
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
this series via `make check`.
>
>
>
>
Sounds like it used your global meson installation instead of the one
from the virtual environment of your build directory.
Thank you for testing!
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
Remove extraneous `;` and add missing trailing comma to TryInto derive
macro to match rustfmt style. We will add a test in the followup commit
and we would like the inlined output in the test body to be properly
formatted as well.
No functional changes intended.
Signed-off-by: Manos
ectly with this meson command:
meson test rust-qemu-api-macros-tests
Signed-off-by: Manos Pitsidianakis
---
Manos Pitsidianakis (2):
rust/qemu-api-macros: normalize TryInto output
rust/qemu-api-macros: add unit tests
rust/qemu-api-macros/meson.build | 3 +
rust/qemu-api-macros/
Add unit tests to check Derive macro output for expected error messages,
or for expected correct codegen output.
Signed-off-by: Manos Pitsidianakis
---
rust/qemu-api-macros/meson.build | 3 +
rust/qemu-api-macros/src/lib.rs | 3 +
rust/qemu-api-macros/src/tests.rs | 135
` attribute above the field declaration will generate
a `qemu_api::bindings::Property` array member in the device's property
list.
Signed-off-by: Manos Pitsidianakis
---
TODOs:
- Update hpet code to use the derive macro
- Change MacroError use to syn::Error use if changed in upstream too
Chang
ote: `-D unnecessary-transmutes` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(unnecessary_transmutes)]`
Allow this lint, which even though it does not exist in previous
versions, it works because we allow for `unknown_lints` in
rust/Cargo.toml.
Signed-off-by: Ma
Bits enum that has only the
allowed byte sizes as variants and has a u32 representation so that it
can be fed back into C as well.
Signed-off-by: Manos Pitsidianakis
---
rust/hw/char/pl011/src/device.rs | 8
rust/hw/timer/hpet/src/device.rs | 14 +++---
rust/qemu-api/src
-off-by: Manos Pitsidianakis
---
Manos Pitsidianakis (3):
rust/memory: replace size arg with Bits enum
memattrs.h: make MemTxAttrs into enum
rust: add *_with_attrs methods to MemoryRegionOps
include/exec/memattrs.h | 11 ++---
rust/hw/char/pl011/src/device.rs | 8
MemoryRegionOps (and its builder type) only support read/write
callbacks.
Add the ability to define {read,write}_with_attrs callbacks for devices
that need them.
Signed-off-by: Manos Pitsidianakis
---
rust/qemu-api/meson.build | 1 +
rust/qemu-api/src/memory.rs | 52
Convert MemTxResult defines into an enum. This will allow bindgen to
generate a bitflag using the enum variants as its domain of values.
Signed-off-by: Manos Pitsidianakis
---
include/exec/memattrs.h | 11 ++-
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/include/exec
Our MacroError type wraps syn::Error as a variant, and uses another
variant for custom errors. Fortunately syn::Error can be used directly,
avoiding extra code on our side, so change the proc macro crate to use
it.
Signed-off-by: Manos Pitsidianakis
---
docs/devel/rust.rst | 11
.
Signed-off-by: Manos Pitsidianakis
---
docs/devel/testing/main.rst | 4 ++--
docs/system/images.rst | 2 +-
docs/system/keys.rst.inc| 22 +++---
docs/system/linuxboot.rst | 2 +-
docs/system/mux-chardev.rst.inc | 16
5 files changed
::qemu_api::log::LogGuard::log_fmt(
> +let _ = ::qemu_api::log::LogGuard::log_fmt(
> format_args!("{}\n", format_args!($fmt $($args)*)));
> }
> }};
Just `_ = ::qemu_api::log::LogGuard::log_fmt(...);` is sufficient, no
`let` needed.
Paolo: I haven't tested it to see the warning Zhao did (busy
lately...), but LGTM, as well. With that fixed,
Reviewed-by: Manos Pitsidianakis
et formatted_string = format!($fmt $($args)*);
> + let c_string = std::ffi::CString::new(formatted_string).unwrap();
> +
> +unsafe {
> +::qemu_api::bindings::qemu_log(c_string.as_ptr());
> +}
> +}
> +}};
> +}
> --
> 2.49.0
>
Maybe we could take this chance to remove the requirement for trailing
newline? Not urgent, and also something we could change afterwards
anyway. We could also introduce log_mask_ln! macro but now I'm just
bikeshedding.
Besides that, I think it'd be useful to have the macro re-exported in
rust/qemu-api/src/prelude.rs as well. Please add it for the next
version.
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
On Wed, Jun 11, 2025 at 2:05 PM Paolo Bonzini wrote:
>
> On Wed, Jun 11, 2025 at 12:57 PM Manos Pitsidianakis
> wrote:
>
> > Maybe we could take this chance to remove the requirement for trailing
> > newline? Not urgent, and also something we could change afterwards
&
}
> Ok(field) => {
> @@ -570,7 +571,10 @@ fn write(&self, offset: hwaddr, value: u64, _size: u32) {
> .borrow_mut()
> .write(field, value as u32, &self.char_backend);
> } else {
> -eprintln!("write bad o
On Fri, May 23, 2025 at 4:06 PM Paolo Bonzini wrote:
>
>
>
> Il gio 22 mag 2025, 10:12 Manos Pitsidianakis
> ha scritto:
>>
>> This is unnecessary though, because once we have the
>> const_refs_to_static feature we can introduce a QdevProp trait that
&
- a register description from gdbstub
> */
> --
> 2.49.0
>
>
FYI there's another patch in the list that does this
https://lore.kernel.org/qemu-devel/20250430052741.21145-17-mario.fleischm...@lauterbach.com/
Letting you know so you can track each other's series if need be.
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
o = unsafe {
&bindings::qdev_prop_uint64 };
}
// etc.. for all basic types
So, this patch is not for merging yet, I will wait until we upgrade the
Rust version and re-spin it with a proper trait-based implementation (and
also split it into individual steps/patches).
Signed-off-by: Manos Pi
On Thu, May 22, 2025 at 10:03 AM Akihiko Odaki wrote:
>
> On 2025/05/22 15:45, Alex Bennée wrote:
> > Akihiko Odaki writes:
> >
> >> On 2025/05/22 1:42, Alex Bennée wrote:
> >>> From: Manos Pitsidianakis
> >>> This commit fixes an indef
quot; . $fileinfo->{filenew} .
> "' requires 'SPDX-License-Identifier'");
> --
> 2.49.0
>
Reviewed-by: Manos Pitsidianakis
Into)]
> > pub enum Parity {
> > Odd = 0,
> > Even = 1,
> > }
> >
> > -#[bitsize(1)]
> > -#[derive(Clone, Copy, Debug, Eq, FromBits, PartialEq)]
> > +#[repr(u8)]
> > +#[derive(Clone, Copy, Debug, Eq, PartialEq, qemu_api_macro
On Wed, May 21, 2025 at 12:21 PM Manos Pitsidianakis
wrote:
>
> On Wed, May 21, 2025 at 11:19 AM Paolo Bonzini wrote:
> >
> > The bilge crate, while very nice and espressive, is heavily reliant on
> > traits; because trait functions are never const, bilge and const mix
&g
e of QEMU's internals
being fluid over time and "private"/unstable.
Personal anecdote: I tried using vm-memory on a personal TCG-like
emulator I am writing for fun, and I found it a daunting task as new
rust-vmm concepts appeared into my codebase as "scope creep". And I
wasn't even adapting an existing API to vm-memory, but designing a new
one based on it. I gave it up after a few days.
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
| 441 +++
> > rust/meson.build | 1 +
> > rust/qemu-api-macros/src/bits.rs | 227
> > rust/qemu-api-macros/src/lib.rs | 12 +
> > 8 files changed, 720 insertions(+)
> > create mode 100644 rust/bits/Cargo.toml
> > create mode 100644 rust/bits/meson.build
> > create mode 100644 rust/bits/src/lib.rs
> > create mode 100644 rust/qemu-api-macros/src/bits.rs
>
> > diff --git a/rust/bits/src/lib.rs b/rust/bits/src/lib.rs
> > new file mode 100644
> > index 000..d80a6263f1e
> > --- /dev/null
> > +++ b/rust/bits/src/lib.rs
> > @@ -0,0 +1,441 @@
>
> This (and other new .rs files) needs SPDX-License-Identifier
We should probably lint for this in .rs files.
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
not model this.
> pub enable_sir: bool,
> /// `SIRLP` SIR low-power IrDA mode. QEMU does not model this.
> -pub sir_lowpower_irda_mode: u1,
> +pub sir_lowpower_irda_mode: bool,
> /// Reserved, do not modify, read as zero.
> - _reserved_zero_no_modify
On Mon, 19 May 2025 15:55, Alex Bennée wrote:
>Manos Pitsidianakis writes:
>
>> Update aarch64-core.xml to include field definitions for PSTATE, which
>> in gdb is modelled in the cpsr (current program status register)
>> pseudo-register, named after the actua
few others.
If we align QEMU's general logging to use log levels, we can convert
guest error logs to "Error" level logs of type: "guest", and unimp
logs to "Error" logs of type "unimplemented". Or, "Warn" instead of
"Error". Then, all trace_* items become straightforwardly Trace level
log items.
Then, all we have to do in the Rust side is implement a `tracing`
subscriber that consumes these traces and pushes them into QEMU's C
implementation.
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
https://sourceware.org/git/?p=binutils-gdb.git;a=tree;h=9f4dc0b137c86f6ff2098cb1ab69442c69d6023d
Signed-off-by: Manos Pitsidianakis
---
gdb-xml/aarch64-core.xml | 52 ++--
1 file changed, 50 insertions(+), 2 deletions(-)
diff --git a/gdb-xml/aa
lude/exec/gdbstub.h
>@@ -16,11 +16,17 @@ typedef struct GDBFeatureBuilder {
> int base_reg;
> } GDBFeatureBuilder;
>
>-
Accidental line deletion here?
With that fixed,
Reviewed-by: Manos Pitsidianakis
> /* Get or set a register. Returns the size of the register. */
> typedef int (*gd
fer that the register will be written from.
I think this is more explanatory:
"The buffer holding the bytes value that will be written to the register."
Either way,
Reviewed-by: Manos Pitsidianakis
>+ * @reg: The register's number returned by gdb_find_feature_register().
&
e_args = {
>+ .core_con_info = core_con_info,
>+};
>+MCDOpenCoreResult *open_core_result =
>+qtest_mcd_open_core(&qts, &open_core_args);
>+g_assert(open_core_result->return_status == MCD_RET_ACT_NONE);
>+g_assert(open_core_result->has_core_uid);
>+
>+if (verbose) {
>+fprintf(stderr, "[INFO]\tCore %s #%d\n",
>+core_con_info->core,
>+core_con_info->core_id);
>+}
>+
>+qry_mem_spaces_args = (q_obj_mcd_qry_mem_spaces_arg) {
>+.core_uid = open_core_result->core_uid,
>+.start_index = 0,
>+.num_mem_spaces = 0,
>+};
>+
>+qry_mem_spaces_result = qtest_mcd_qry_mem_spaces(&qts,
>+
>&qry_mem_spaces_args);
>+g_assert(qry_mem_spaces_result->return_status == MCD_RET_ACT_NONE);
>+g_assert(qry_mem_spaces_result->has_num_mem_spaces);
>+g_assert(qry_mem_spaces_result->num_mem_spaces > 0);
>+
>+qry_mem_spaces_args.num_mem_spaces =
>+qry_mem_spaces_result->num_mem_spaces;
>+qapi_free_MCDQryMemSpacesResult(qry_mem_spaces_result);
>+qry_mem_spaces_result = qtest_mcd_qry_mem_spaces(&qts,
>+
>&qry_mem_spaces_args);
>+g_assert(qry_mem_spaces_result->return_status == MCD_RET_ACT_NONE);
>+g_assert(qry_mem_spaces_result->has_num_mem_spaces);
>+
>+if (verbose) {
>+MCDMemspaceList *ms_head = qry_mem_spaces_result->mem_spaces;
>+for (uint32_t i = 0;
>+ i < qry_mem_spaces_result->num_mem_spaces; i++) {
>+MCDMemspace *ms = ms_head->value;
>+if (verbose) {
>+fprintf(stderr, "\tMemory Space: %s (#%d)\n"
>+"\t Type: 0x%x\n",
>+ms->mem_space_name,
>+ms->mem_space_id,
>+ms->mem_type);
>+}
>+ms_head = ms_head->next;
>+}
>+}
>+
>+qapi_free_MCDQryMemSpacesResult(qry_mem_spaces_result);
>+close_core_args.core_uid = open_core_result->core_uid;
>+close_core_result = qtest_mcd_close_core(&qts, &close_core_args);
>+g_assert(close_core_result->return_status == MCD_RET_ACT_NONE);
>+
>+qapi_free_MCDCloseCoreResult(close_core_result);
>+qapi_free_MCDOpenCoreResult(open_core_result);
>+core_head = core_head->next;
>+}
>+
>+qapi_free_MCDQryCoresResult(cores_query);
>+qtest_mcd_exit(&qts);
>+mcdtest_quit(&qts);
>+}
>+
> int main(int argc, char *argv[])
> {
> char *v_env = getenv("V");
>@@ -411,5 +489,6 @@ int main(int argc, char *argv[])
> qtest_add_func("mcd/open-server", test_open_server);
> qtest_add_func("mcd/qry-cores", test_qry_cores);
> qtest_add_func("mcd/open-core", test_open_core);
>+qtest_add_func("mcd/qry-core-info", test_qry_core_info);
> return g_test_run();
> }
>diff --git a/tests/qtest/mcd-util.c b/tests/qtest/mcd-util.c
>index 53694d9..225cbad 100644
>--- a/tests/qtest/mcd-util.c
>+++ b/tests/qtest/mcd-util.c
>@@ -269,3 +269,23 @@ MCDCloseCoreResult *qtest_mcd_close_core(QTestStateMCD
>*qts,
>
> return unmarshal;
> }
>+
>+MCDQryMemSpacesResult *qtest_mcd_qry_mem_spaces(
>+QTestStateMCD *qts, q_obj_mcd_qry_mem_spaces_arg *args)
>+{
>+Visitor *v;
>+QObject *marshal;
>+QDict *arg, *resp;
>+QObject *ret;
>+bool ok;
>+MCDQryMemSpacesResult *unmarshal;
>+
>+MARSHAL_ARGS(q_obj_mcd_qry_mem_spaces_arg);
>+
>+resp = qtest_mcd(qts, "{'execute': 'mcd-qry-mem-spaces',"
>+ "'arguments': %p}", arg);
>+
>+UNMARSHAL_RESULT(MCDQryMemSpacesResult);
>+
>+return unmarshal;
>+}
>diff --git a/tests/qtest/mcd-util.h b/tests/qtest/mcd-util.h
>index 5e7c3ca..bff9600 100644
>--- a/tests/qtest/mcd-util.h
>+++ b/tests/qtest/mcd-util.h
>@@ -51,4 +51,7 @@ MCDOpenCoreResult *qtest_mcd_open_core(QTestStateMCD *qts,
> MCDCloseCoreResult *qtest_mcd_close_core(QTestStateMCD *qts,
> q_obj_mcd_close_core_arg *args);
>
>+MCDQryMemSpacesResult *qtest_mcd_qry_mem_spaces(QTestStateMCD *qts,
>+q_obj_mcd_qry_mem_spaces_arg *args);
>+
> #endif /* TEST_MCD_UTILS_H */
>--
>2.34.1
>
>
--
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd
On Mon, May 5, 2025 at 4:45 PM Paolo Bonzini wrote:
>
> On 5/5/25 14:26, Manos Pitsidianakis wrote:
> >> Something I do notice is that there's some inconsistency in
> >> how we've structured things between the two devices, e.g.:
> >>
> >>
On Fri, May 2, 2025 at 3:13 PM Paolo Bonzini wrote:
>
> It's been roughly three months since my previous update on the Rust in
> QEMU project. Support for Rust remains experimental, with most of the
> past three months spent cleaning up the bindings and making more
> functionality available from
On Mon, May 5, 2025 at 12:05 PM Paolo Bonzini wrote:
>
> Remove leftover notes for Rust changes between 1.63.0 and 1.77.0.
>
> Signed-off-by: Paolo Bonzini
> ---
> docs/devel/rust.rst | 15 +--
> 1 file changed, 1 insertion(+), 14 deletions(-)
>
Reviewed-by: Manos Pitsidianakis
insertions(+), 239 deletions(-)
> delete mode 100644 rust/qemu-api/src/offset_of.rs
>
Reviewed-by: Manos Pitsidianakis
y be possible to add an unsafe trait that
> checks
> +/// that all fields *after the parent class* (but not the parent class
> +/// itself) are Zeroable. This unsafe trait can be added via a derive
> +/// macro.
> const CLASS_INIT: fn(&mut Self::Class);
> }
>
> --
> 2.49.0
>
Reviewed-by: Manos Pitsidianakis
tps://gitlab.com/qemu-project/qemu/";
> -rust-version = "1.63.0"
> +rust-version = "1.77.0"
>
> [workspace.lints.rust]
> unexpected_cfgs = { level = "deny", check-cfg = [
> diff --git a/rust/clippy.toml b/rust/clippy.toml
> index 5d190f91dec..933e46a2ffb 100644
> --- a/rust/clippy.toml
> +++ b/rust/clippy.toml
> @@ -1,2 +1,2 @@
> doc-valid-idents = ["PrimeCell", ".."]
> -msrv = "1.63.0"
> +msrv = "1.77.0"
> --
> 2.49.0
>
Reviewed-by: Manos Pitsidianakis
On Fri, May 2, 2025 at 3:23 PM Paolo Bonzini wrote:
>
> On 5/2/25 13:01, Manos Pitsidianakis wrote:
> > On Fri, 02 May 2025 13:23, Paolo Bonzini wrote:
> >> Signed-off-by: Paolo Bonzini
> >> ---
> >> docs/devel/rust.rst | 4 --
>
e changed, 40 insertions(+), 44 deletions(-)
>
Reviewed-by: Manos Pitsidianakis
files changed, 50 deletions(-)
> delete mode 100644 subprojects/packagefiles/bilge-impl-1.63.0.patch
>
Reviewed-by: Manos Pitsidianakis
lib]
> proc-macro = true
>diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml
>index c5b7b2464e9..be00ef1ae9b 100644
>--- a/rust/qemu-api/Cargo.toml
>+++ b/rust/qemu-api/Cargo.toml
>@@ -12,7 +12,7 @@ resolver = "2"
> publish = false
> keywords = []
> categories = []
>-rust-version = "1.63.0"
>+rust-version = "1.77.0"
>
> [dependencies]
> qemu_api_macros = { path = "../qemu-api-macros" }
msrv/rust-version bumps could instead go in the patch that also updates
meson.build version.
Otherwise,
Reviewed-by: Manos Pitsidianakis
s(+), 96 deletions(-)
Reviewed-by: Manos Pitsidianakis
BTW There's this TODO in qom.rs, ObjectImpl trait
> /// `&mut T`. TODO: add a bound of
> //[`Zeroable`](crate::zeroable::Zeroable)
> /// to T; this is more easily done once Zeroable does not require a manual
| 3 +--
> rust/qemu-api/src/timer.rs | 2 +-
> rust/qemu-api/src/vmstate.rs | 2 +-
> rust/qemu-api/tests/vmstate_tests.rs | 7 ++-
> 12 files changed, 20 insertions(+), 18 deletions(-)
>
Reviewed-by: Manos Pitsidianakis
Hey Paolo,
We should update the version check in the root meson.build in the first
patch of this series:
> if have_rust
> rustc = meson.get_compiler('rust')
> if rustc.version().version_compare('<1.63.0')
> if get_option('rust').enabled()
> error('rustc version ' + rustc.version()
qemu_api_macros",
>- "version_check",
> ]
This looks like it should go in the previous patch ("rust: remove
offset_of replacement")
Otherwise,
Reviewed-by: Manos Pitsidianakis
ly EL1. Note we still
>+ * set everything up as if we were at EL1.
>+ */
>+at_testel:
> /* Installs a table of exception vectors to catch and handle all
> exceptions by terminating the process with a diagnostic. */
> adr x0, vector_table
>@@ -100,7 +220,7 @@ __start:
>* maps RAM to the first Gb. The stage2 tables have two 2mb
>* translation block entries covering a series of adjacent
>* 4k pages.
>- */
>+ */
Accidental space
>
> /* Stage 1 entry: indexed by IA[38:30] */
> adr x1, . /* phys address */
>@@ -233,6 +353,11 @@ __sys_outc:
> ret
>
> .data
>+
>+ .align 8
>+cmdline:
>+ .space 128, 0
>+
> .align 12
>
> /* Translation table
>--
>2.39.5
Otherwise,
Reviewed-by: Manos Pitsidianakis
On Mon, 28 Apr 2025 17:20, Peter Maydell wrote:
>On Mon, 28 Apr 2025 at 15:02, Thomas Huth wrote:
>>
>> On 28/04/2025 14.59, Alex Bennée wrote:
>> > Our default build enables debug info which adds hugely to the size of
>> > the builds as well as the size of cached objects. Disable debug info
>> >
nakis/virtio-tests/-/tree/8c0ebe9395827e24aa5711186d499bf5de87cf63/virtio-test-suite
v1 to v2:
- Add patch by Alex to prevent double-free when FlatView is destroyed
from RCU thread.
Alex Bennée (1):
hw/display: re-arrange memory region tracking
Manos Pitsidianakis (2):
virtio-gpu: fix hang under TCG when unmapping blob
v
1 - 100 of 934 matches
Mail list logo