qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 7416c5: qdev: make properties array "const"


From: Peter Maydell
Subject: [Qemu-commits] [qemu/qemu] 7416c5: qdev: make properties array "const"
Date: Wed, 06 Nov 2024 03:23:21 -0800

  Branch: refs/heads/staging
  Home:   https://github.com/qemu/qemu
  Commit: 7416c5573bedf98ef054228096b5f0f86369b82c
      
https://github.com/qemu/qemu/commit/7416c5573bedf98ef054228096b5f0f86369b82c
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M hw/core/qdev-properties.c
    M include/hw/qdev-core.h
    M include/hw/qdev-properties.h
    M system/qdev-monitor.c

  Log Message:
  -----------
  qdev: make properties array "const"

Constify all accesses to qdev properties, except for the
ObjectPropertyAccessor itself.  This makes it possible to place them in
read-only memory, and also lets Rust bindings switch from "static mut"
arrays to "static"; which is advantageous, because mutable statics are
highly discouraged.

Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 83b80705b7da0be23aa51beca301f1e4d61a801a
      
https://github.com/qemu/qemu/commit/83b80705b7da0be23aa51beca301f1e4d61a801a
  Author: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/wrapper.h

  Log Message:
  -----------
  rust/wrapper.h: define memory_order enum

Add stub definition of memory_order enum in wrapper.h.

Creating Rust bindings from C code is done by passing the wrapper.h
header to `bindgen`. This fails when library dependencies that use
compiler headers are enabled, and the libclang that bindgen detects does
not match the expected clang version. So far this has only been observed
with the memory_order enum symbols from stdatomic.h. If we add the enum
definition to wrapper.h ourselves, the error does not happen.

Before this commit, if the mismatch happened the following error could
come up:

  /usr/include/liburing/barrier.h:72:10: error: use of undeclared identifier 
'memory_order_release'
  /usr/include/liburing/barrier.h:75:9: error: use of undeclared identifier 
'memory_order_acquire'
  /usr/include/liburing/barrier.h:75:9: error: use of undeclared identifier 
'memory_order_acquire'
  /usr/include/liburing/barrier.h:68:9: error: use of undeclared identifier 
'memory_order_relaxed'
  /usr/include/liburing/barrier.h:65:17: error: use of undeclared identifier 
'memory_order_relaxed'
  /usr/include/liburing/barrier.h:75:9: error: use of undeclared identifier 
'memory_order_acquire'
  /usr/include/liburing/barrier.h:75:9: error: use of undeclared identifier 
'memory_order_acquire'
  /usr/include/liburing/barrier.h:72:10: error: use of undeclared identifier 
'memory_order_release'
  panicked at 
[..]/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bindgen-cli-0.70.1/main.rs:45:36:
  Unable to generate bindings

To fix this (on my system) I would have to export CLANG_PATH and
LIBCLANG_PATH:

  export CLANG_PATH=/bin/clang-17
  export LIBCLANG_PATH=/usr/lib/llvm-17/lib

With these changes applied, bindgen is successful with both the
environment variables set and unset.

Since we're not using those symbols in the bindings (they are only used
by dependencies) this does not affect the generated bindings in any way.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Link: 
https://lore.kernel.org/r/20241027-rust-wrapper-stdatomic-v2-1-dab27bbf93ea@linaro.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: bc9954293fcaa78a83fee6f4d60b1f5eb29521fc
      
https://github.com/qemu/qemu/commit/bc9954293fcaa78a83fee6f4d60b1f5eb29521fc
  Author: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M MAINTAINERS
    M hw/arm/Kconfig
    M meson.build
    M rust/Kconfig
    R rust/hw/Kconfig
    R rust/hw/char/Kconfig
    R rust/hw/char/meson.build
    R rust/hw/char/pl011/.gitignore
    R rust/hw/char/pl011/Cargo.lock
    R rust/hw/char/pl011/Cargo.toml
    R rust/hw/char/pl011/README.md
    R rust/hw/char/pl011/meson.build
    R rust/hw/char/pl011/src/device.rs
    R rust/hw/char/pl011/src/device_class.rs
    R rust/hw/char/pl011/src/lib.rs
    R rust/hw/char/pl011/src/memory_ops.rs
    R rust/hw/meson.build
    M rust/meson.build
    M scripts/archive-source.sh
    M scripts/make-release
    R scripts/rust/rust_root_crate.sh
    M subprojects/.gitignore
    R subprojects/arbitrary-int-1-rs.wrap
    R subprojects/bilge-0.2-rs.wrap
    R subprojects/bilge-impl-0.2-rs.wrap
    R subprojects/either-1-rs.wrap
    R subprojects/itertools-0.11-rs.wrap
    R subprojects/packagefiles/arbitrary-int-1-rs/meson.build
    R subprojects/packagefiles/bilge-0.2-rs/meson.build
    R subprojects/packagefiles/bilge-impl-0.2-rs/meson.build
    R subprojects/packagefiles/either-1-rs/meson.build
    R subprojects/packagefiles/itertools-0.11-rs/meson.build
    R subprojects/packagefiles/proc-macro-error-1-rs/meson.build
    R subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.build
    R subprojects/packagefiles/unicode-ident-1-rs/meson.build
    R subprojects/proc-macro-error-1-rs.wrap
    R subprojects/proc-macro-error-attr-1-rs.wrap

  Log Message:
  -----------
  Revert "rust: add PL011 device model"

Patch was applied with invalid authorship by accident, which confuses
git tooling that look at git blame for contributors etc.

Patch will be re-applied with correct authorship right after this
commit.

This reverts commit d0f0cd5b1f7e9780753344548e17ad4df9fcf5d8.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Link: 
https://lore.kernel.org/r/20241024-rust-round-2-v1-1-051e7a25b978@linaro.org


  Commit: 2c690003cb665a1dac22e0be83cb443c5401c6d8
      
https://github.com/qemu/qemu/commit/2c690003cb665a1dac22e0be83cb443c5401c6d8
  Author: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M MAINTAINERS
    M hw/arm/Kconfig
    M meson.build
    M rust/Kconfig
    A rust/hw/Kconfig
    A rust/hw/char/Kconfig
    A rust/hw/char/meson.build
    A rust/hw/char/pl011/.gitignore
    A rust/hw/char/pl011/Cargo.lock
    A rust/hw/char/pl011/Cargo.toml
    A rust/hw/char/pl011/README.md
    A rust/hw/char/pl011/meson.build
    A rust/hw/char/pl011/src/device.rs
    A rust/hw/char/pl011/src/device_class.rs
    A rust/hw/char/pl011/src/lib.rs
    A rust/hw/char/pl011/src/memory_ops.rs
    A rust/hw/meson.build
    M rust/meson.build
    M scripts/archive-source.sh
    M scripts/make-release
    A scripts/rust/rust_root_crate.sh
    M subprojects/.gitignore
    A subprojects/arbitrary-int-1-rs.wrap
    A subprojects/bilge-0.2-rs.wrap
    A subprojects/bilge-impl-0.2-rs.wrap
    A subprojects/either-1-rs.wrap
    A subprojects/itertools-0.11-rs.wrap
    A subprojects/packagefiles/arbitrary-int-1-rs/meson.build
    A subprojects/packagefiles/bilge-0.2-rs/meson.build
    A subprojects/packagefiles/bilge-impl-0.2-rs/meson.build
    A subprojects/packagefiles/either-1-rs/meson.build
    A subprojects/packagefiles/itertools-0.11-rs/meson.build
    A subprojects/packagefiles/proc-macro-error-1-rs/meson.build
    A subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.build
    A subprojects/packagefiles/unicode-ident-1-rs/meson.build
    A subprojects/proc-macro-error-1-rs.wrap
    A subprojects/proc-macro-error-attr-1-rs.wrap

  Log Message:
  -----------
  rust: add PL011 device model

This commit adds a re-implementation of hw/char/pl011.c in Rust.

How to build:

1. Configure a QEMU build with:
   --enable-system --target-list=aarch64-softmmu --enable-rust
2. Launching a VM with qemu-system-aarch64 should use the Rust version
   of the pl011 device

Co-authored-by: Junjie Mao <junjie.mao@intel.com>
Co-authored-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Junjie Mao <junjie.mao@intel.com>
Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Link: 
https://lore.kernel.org/r/20241024-rust-round-2-v1-2-051e7a25b978@linaro.org


  Commit: 757590bf0fb072c96fc26f2a15bb8e330e32021c
      
https://github.com/qemu/qemu/commit/757590bf0fb072c96fc26f2a15bb8e330e32021c
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M meson.build
    M rust/qemu-api-macros/meson.build

  Log Message:
  -----------
  meson: import rust module into a global variable

Tested-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: a389c1b0fffc86baaebf9d0cd43792d656cb5007
      
https://github.com/qemu/qemu/commit/a389c1b0fffc86baaebf9d0cd43792d656cb5007
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M meson.build

  Log Message:
  -----------
  meson: remove repeated search for rust_root_crate.sh

Avoid repeated lines of the form

Program scripts/rust/rust_root_crate.sh found: YES 
(/home/pbonzini/work/upstream/qemu/scripts/rust/rust_root_crate.sh)

in the meson logs.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 93b946719547ab29344f92dda8d0bdb288cecb0d
      
https://github.com/qemu/qemu/commit/93b946719547ab29344f92dda8d0bdb288cecb0d
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M meson.build
    M rust/qemu-api/meson.build
    M rust/qemu-api/src/device_class.rs

  Log Message:
  -----------
  meson: pass rustc_args when building all crates

rustc_args is needed to smooth the difference in warnings between the various
versions of rustc.  Always include those arguments.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 92b742c5047201efa9b77636dd595f1ce31b7d61
      
https://github.com/qemu/qemu/commit/92b742c5047201efa9b77636dd595f1ce31b7d61
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/Kconfig

  Log Message:
  -----------
  rust: do not always select X_PL011_RUST

Right now the Rust pl011 device is included in all QEMU system
emulator binaries if --enable-rust is passed.  This is not needed
since the board logic in hw/arm/Kconfig will pick it.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 08719f4d268ac1b4a7e3eea96281a5845c8356b3
      
https://github.com/qemu/qemu/commit/08719f4d268ac1b4a7e3eea96281a5845c8356b3
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M meson.build
    M rust/qemu-api/src/definitions.rs

  Log Message:
  -----------
  rust: do not use --no-size_t-is-usize

This is not necessary and makes it harder to write code that is
portable between 32- and 64-bit systems: it adds extra casts even
though size_of, align_of or offset_of already return the right type.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 8b62b491f6e1a4f32b520ceeaa960975303ce65a
      
https://github.com/qemu/qemu/commit/8b62b491f6e1a4f32b520ceeaa960975303ce65a
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/pl011/src/device.rs
    M rust/hw/char/pl011/src/device_class.rs
    M rust/hw/char/pl011/src/memory_ops.rs
    M rust/qemu-api/src/definitions.rs
    M rust/qemu-api/src/device_class.rs

  Log Message:
  -----------
  rust: remove uses of #[no_mangle]

Mangled symbols do not cause any issue; disabling mangling is only useful if
C headers reference the Rust function, which is not the case here.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: a2882cb16492037fd0f9fc24818431fc69aedc43
      
https://github.com/qemu/qemu/commit/a2882cb16492037fd0f9fc24818431fc69aedc43
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/qemu-api-macros/src/lib.rs
    M rust/qemu-api/src/definitions.rs

  Log Message:
  -----------
  rust: modernize link_section usage for ELF platforms

Some newer ABI implementations do not provide .ctors; and while
some linkers rewrite .ctors into .init_array, not all of them do.
Use the newer .init_array ABI, which works more reliably, and
apply it to all non-Apple, non-Windows platforms.

This is similar to how the ctor crate operates; without this change,
"#[derive(Object)]" does not work on Fedora 41.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: b2cf3f421ce2c87af2d361fc5f7358016d482ead
      
https://github.com/qemu/qemu/commit/b2cf3f421ce2c87af2d361fc5f7358016d482ead
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M meson.build
    M rust/qemu-api/meson.build
    M rust/qemu-api/src/lib.rs
    R rust/qemu-api/src/tests.rs
    A rust/qemu-api/tests/tests.rs

  Log Message:
  -----------
  rust: build integration test for the qemu_api crate

Adjust the integration test to compile with a subset of QEMU object
files, and make it actually create an object of the class it defines.

Follow the Rust filesystem conventions, where tests go in tests/ if
they use the library in the same way any other code would.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: da789447a9ed95c72576a1dca8c0d727c5f0d508
      
https://github.com/qemu/qemu/commit/da789447a9ed95c72576a1dca8c0d727c5f0d508
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/qemu-api-macros/src/lib.rs
    M rust/qemu-api/src/definitions.rs

  Log Message:
  -----------
  rust: cleanup module_init!, use it from #[derive(Object)]

Remove the duplicate code by using the module_init! macro; at the same time,
simplify how module_init! is used, by taking inspiration from the implementation
of #[derive(Object)].

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 248a2464cf48088e11046ad2f212a27edc783929
      
https://github.com/qemu/qemu/commit/248a2464cf48088e11046ad2f212a27edc783929
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/qemu-api/src/device_class.rs

  Log Message:
  -----------
  rust: clean up define_property macro

Use the "struct update" syntax to initialize most of the fields to zero,
and simplify the handmade type-checking of $name.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 12ad052771980f7e106b9c555fea1275e042ea7b
      
https://github.com/qemu/qemu/commit/12ad052771980f7e106b9c555fea1275e042ea7b
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/qemu-api/src/device_class.rs

  Log Message:
  -----------
  rust: make properties array immutable

Now that device_class_set_props() takes a const pointer, the only part of
"define_property!" that needs to be non-const is the call to try_into().
This in turn will only break if offset_of returns a value with the most
significant bit set (i.e. a struct size that is >=2^31 or >= 2^63,
respectively on 32- and 64-bit system), which is impossible.

Just use a cast and clean everything up to remove the run-time
initialization.  This also removes a use of OnceLock, which was only
stabilized in 1.70.0.

Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 72fe2b9dd0deb25acd625a815f74cbcba022c35e
      
https://github.com/qemu/qemu/commit/72fe2b9dd0deb25acd625a815f74cbcba022c35e
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/pl011/src/device_class.rs
    M rust/hw/char/pl011/src/memory_ops.rs
    M rust/qemu-api/meson.build
    M rust/qemu-api/src/device_class.rs
    M rust/qemu-api/src/lib.rs
    A rust/qemu-api/src/zeroable.rs

  Log Message:
  -----------
  rust: provide safe wrapper for MaybeUninit::zeroed()

MaybeUninit::zeroed() is handy, but it introduces unsafe (and has a
pretty heavy syntax in general).  Introduce a trait that provides the
same functionality while staying within safe Rust.

In addition, MaybeUninit::zeroed() is not available as a "const"
function until Rust 1.75.0, so this also prepares for having handwritten
implementations of the trait until we can assume that version.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: eca576711b40e420e9c08860bf191b5234d212f5
      
https://github.com/qemu/qemu/commit/eca576711b40e420e9c08860bf191b5234d212f5
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/pl011/src/device.rs

  Log Message:
  -----------
  rust: do not use TYPE_CHARDEV unnecessarily

In the invocation of qdev_prop_set_chr(), "chardev" is the name of a
property rather than a type and has to match the name of the property
in device_class.rs.  Do not use TYPE_CHARDEV here, just like in the C
version of pl011_create.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 089c3aa40279c0064e71a667c5791f7b0dd208e1
      
https://github.com/qemu/qemu/commit/089c3aa40279c0064e71a667c5791f7b0dd208e1
  Author: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/qemu-api/meson.build
    M rust/qemu-api/src/device_class.rs
    M rust/qemu-api/src/lib.rs
    A rust/qemu-api/src/vmstate.rs
    M rust/qemu-api/tests/tests.rs

  Log Message:
  -----------
  rust: add definitions for vmstate

Add a new qemu_api module, `vmstate`. Declare a bunch of Rust
macros declared that are equivalent in spirit to the C macros in
include/migration/vmstate.h.

For example the Rust of equivalent of the C macro:

  VMSTATE_UINT32(field_name, struct_name)

is:

  vmstate_uint32!(field_name, StructName)

This breathtaking development will allow us to reach feature parity between
the Rust and C pl011 implementations.

Extracted from a patch by Manos Pitsidianakis
(https://lore.kernel.org/qemu-devel/20241024-rust-round-2-v1-4-051e7a25b978@linaro.org/).

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 52a07e6587acce2799f725a86a5ece9a8960fe43
      
https://github.com/qemu/qemu/commit/52a07e6587acce2799f725a86a5ece9a8960fe43
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/pl011/src/device_class.rs

  Log Message:
  -----------
  rust/pl011: fix default value for migrate-clock

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 76e1e4afe42a0907bf7b16e77332f88833cdd19e
      
https://github.com/qemu/qemu/commit/76e1e4afe42a0907bf7b16e77332f88833cdd19e
  Author: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/pl011/src/device.rs
    M rust/hw/char/pl011/src/device_class.rs
    M rust/hw/char/pl011/src/lib.rs

  Log Message:
  -----------
  rust/pl011: add support for migration

Declare the vmstate description of the PL011 device.

Based on a patch by Manos Pitsidianakis
(https://lore.kernel.org/qemu-devel/20241024-rust-round-2-v1-4-051e7a25b978@linaro.org/).

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Link: 
https://lore.kernel.org/r/20241024-rust-round-2-v1-4-051e7a25b978@linaro.org


  Commit: 2d98b3eedff8eef01d0c4c1a3369455d21726160
      
https://github.com/qemu/qemu/commit/2d98b3eedff8eef01d0c4c1a3369455d21726160
  Author: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/pl011/src/device.rs

  Log Message:
  -----------
  rust/pl011: move CLK_NAME static to function scope

We do not need to have CLK_NAME public nor a static. No functional change.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Link: 
https://lore.kernel.org/r/20241024-rust-round-2-v1-5-051e7a25b978@linaro.org


  Commit: d742de8e1ca9dd0aec9f823d58088037217971a7
      
https://github.com/qemu/qemu/commit/d742de8e1ca9dd0aec9f823d58088037217971a7
  Author: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/pl011/src/device.rs
    M rust/hw/char/pl011/src/lib.rs

  Log Message:
  -----------
  rust/pl011: add TYPE_PL011_LUMINARY device

Add a device specialization for the Luminary UART device.

This commit adds a DeviceId enum that utilizes the Index trait to return
different bytes depending on what device id the UART has (Arm -default-
or Luminary)

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Tested-by: Zhao Liu <zhao1.liu@intel.com>
Link: 
https://lore.kernel.org/r/20241024-rust-round-2-v1-6-051e7a25b978@linaro.org


  Commit: 6bf03f73179f3e0dddddef2f1cb05a55704efa61
      
https://github.com/qemu/qemu/commit/6bf03f73179f3e0dddddef2f1cb05a55704efa61
  Author: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/pl011/src/device.rs

  Log Message:
  -----------
  rust/pl011: remove commented out C code

This code juxtaposed what should be happening according to the C device
model but is not needed now that this has been reviewed (I hope) and its
validity checked against what the C device does (I hope, again).

No functional change.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Link: 
https://lore.kernel.org/r/20241024-rust-round-2-v1-8-051e7a25b978@linaro.org


  Commit: c0c015e663b04407e16b31b957a40a8b6153d6e6
      
https://github.com/qemu/qemu/commit/c0c015e663b04407e16b31b957a40a8b6153d6e6
  Author: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/pl011/src/device.rs

  Log Message:
  -----------
  rust/pl011: Use correct masks for IBRD and FBRD

Port fix from commit cd247eae16ab1b9ce97fd34c000c1b883feeda45
"hw/char/pl011: Use correct masks for IBRD and FBRD"

Related issue: <https://gitlab.com/qemu-project/qemu/-/issues/2610>

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Link: 
https://lore.kernel.org/r/20241024-rust-round-2-v1-9-051e7a25b978@linaro.org


  Commit: 41bd0ff9605bfba267ba897ee0100231c4dfce12
      
https://github.com/qemu/qemu/commit/41bd0ff9605bfba267ba897ee0100231c4dfce12
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M .gitattributes
    M subprojects/bilge-impl-0.2-rs.wrap
    A subprojects/packagefiles/bilge-impl-1.63.0.patch

  Log Message:
  -----------
  rust: patch bilge-impl to allow compilation with 1.63.0

Apply a patch that removes "let ... else" constructs, replacing them with
"if let ... else" or "let ... = match ...".  "let ... else" was stabilized in
Rust 1.65.0.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 5824fd292936b0e680eae202379dd4dacd421716
      
https://github.com/qemu/qemu/commit/5824fd292936b0e680eae202379dd4dacd421716
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M subprojects/packagefiles/proc-macro2-1-rs/meson.build

  Log Message:
  -----------
  rust: fix cfgs of proc-macro2 for 1.63.0

Replay the configuration that would be computed by build.rs when compiling
on a 1.63.0 compiler.

Reviewed-by: Junjie Mao <junjie.mao@hotmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 3f46a53a55138f140e65163cdd78140a37fce2c0
      
https://github.com/qemu/qemu/commit/3f46a53a55138f140e65163cdd78140a37fce2c0
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M meson.build
    M rust/hw/char/pl011/src/device.rs
    M rust/hw/char/pl011/src/lib.rs
    M rust/hw/char/pl011/src/memory_ops.rs
    M rust/qemu-api/src/definitions.rs
    M rust/qemu-api/src/device_class.rs
    M rust/qemu-api/src/lib.rs
    M rust/qemu-api/src/vmstate.rs
    M rust/qemu-api/tests/tests.rs

  Log Message:
  -----------
  rust: use std::os::raw instead of core::ffi

core::ffi::c_* types were introduced in Rust 1.64.0.  Use the older types
in std::os::raw, which are now aliases of the types in core::ffi.  There is
no need to compile QEMU as no_std, so this is acceptable as long as we support
a version of Debian with Rust 1.63.0.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 16b465b6fc8e429b9fffbdcb916fd5cee08f2496
      
https://github.com/qemu/qemu/commit/16b465b6fc8e429b9fffbdcb916fd5cee08f2496
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/pl011/src/device.rs
    M rust/hw/char/pl011/src/device_class.rs
    M rust/hw/char/pl011/src/lib.rs
    M rust/qemu-api/meson.build
    A rust/qemu-api/src/c_str.rs
    M rust/qemu-api/src/lib.rs
    M rust/qemu-api/src/vmstate.rs
    M rust/qemu-api/tests/tests.rs

  Log Message:
  -----------
  rust: introduce a c_str macro

This allows CStr constants to be defined easily on Rust 1.63.0, while
checking that there are no embedded NULs.  c"" literals were only
stabilized in Rust 1.77.0.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 4ad1feece3ef3e689659ad24af288ad7fbbdb3be
      
https://github.com/qemu/qemu/commit/4ad1feece3ef3e689659ad24af288ad7fbbdb3be
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M .gitlab-ci.d/buildtest.yml
    M meson.build
    M meson_options.txt
    M scripts/meson-buildoptions.sh

  Log Message:
  -----------
  rust: silence unknown warnings for the sake of old compilers

Occasionally, we may need to silence warnings and clippy lints that
were only introduced in newer Rust compiler versions.  However, this
would fail when compiling with an older rustc:

error: unknown lint: `non_local_definitions`
   --> rust/qemu-api/rust-qemu-api-tests.p/structured/offset_of.rs:79:17

So by default we need to block the unknown_lints warning.  To avoid
misspelled lints or other similar issues, re-enable it in the CI job
that uses nightly rust.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 4b63960ebfccc5d3b8326b15bff87dbea0ca680a
      
https://github.com/qemu/qemu/commit/4b63960ebfccc5d3b8326b15bff87dbea0ca680a
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/hw/char/pl011/Cargo.lock
    M rust/qemu-api-macros/Cargo.lock
    M rust/qemu-api/Cargo.lock
    M rust/qemu-api/Cargo.toml

  Log Message:
  -----------
  rust: synchronize dependencies between subprojects and Cargo.lock

The next commit will introduce a new build.rs dependency for rust/qemu-api,
version_check.  Before adding it, ensure that all dependencies are
synchronized between the Meson- and cargo-based build systems.

Note that it's not clear whether in the long term we'll use Cargo for
anything; it seems that the three main uses (clippy, rustfmt, rustdoc)
can all be invoked manually---either via glue code in QEMU, or by
extending Meson to gain the relevant functionality.  However, for
the time being we're stuck with Cargo so it should at least look at
the same code as the rest of the build system.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: c2f261f7b28b6ccb8ba464abcb261920b94d6012
      
https://github.com/qemu/qemu/commit/c2f261f7b28b6ccb8ba464abcb261920b94d6012
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    A rust/Cargo.lock
    A rust/Cargo.toml
    R rust/hw/char/pl011/Cargo.lock
    M rust/hw/char/pl011/Cargo.toml
    R rust/qemu-api-macros/Cargo.lock
    M rust/qemu-api-macros/Cargo.toml
    R rust/qemu-api/Cargo.lock
    M rust/qemu-api/Cargo.toml

  Log Message:
  -----------
  rust: create a cargo workspace

Workspaces allows tracking dependencies for multiple crates at once,
by having a single Cargo.lock file at the top of the rust/ tree.
Because QEMU's Cargo.lock files have to be synchronized with the versions
of crates in subprojects/, using a workspace avoids the need to copy
over the Cargo.lock file when adding a new device (and thus a new crate)
under rust/hw/.

In addition, workspaces let cargo download and build dependencies just
once.  While right now we have one leaf crate (hw/char/pl011), this
will not be the case once more devices are added.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 9aa9d95cc0762caec89f741ced2dec066099b24c
      
https://github.com/qemu/qemu/commit/9aa9d95cc0762caec89f741ced2dec066099b24c
  Author: Junjie Mao <junjie.mao@hotmail.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/Cargo.lock
    M rust/hw/char/pl011/src/device.rs
    M rust/qemu-api-macros/Cargo.toml
    M rust/qemu-api-macros/src/lib.rs
    M rust/qemu-api/Cargo.toml
    M rust/qemu-api/build.rs
    M rust/qemu-api/meson.build
    M rust/qemu-api/src/device_class.rs
    M rust/qemu-api/src/lib.rs
    A rust/qemu-api/src/offset_of.rs
    M rust/qemu-api/src/vmstate.rs
    M rust/qemu-api/tests/tests.rs
    M subprojects/packagefiles/syn-2-rs/meson.build

  Log Message:
  -----------
  rust: introduce alternative implementation of offset_of!

offset_of! was stabilized in Rust 1.77.0.  Use an alternative implemenation
that was found on the Rust forums, and whose author agreed to license as
MIT for use in QEMU.

The alternative allows only one level of field access, but apart
from this can be used just by replacing core::mem::offset_of! with
qemu_api::offset_of!.

The actual implementation of offset_of! is done in a declarative macro,
but for simplicity and to avoid introducing an extra level of indentation,
the trigger is a procedural macro #[derive(offsets)].

The procedural macro is perhaps a bit overengineered, but it helps
introducing some idioms that will be useful in the future as well.

Signed-off-by: Junjie Mao <junjie.mao@hotmail.com>
Co-developed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 2ebd96a7c4ae139625a81b1c82e5a062fecc6a58
      
https://github.com/qemu/qemu/commit/2ebd96a7c4ae139625a81b1c82e5a062fecc6a58
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M rust/qemu-api/src/zeroable.rs

  Log Message:
  -----------
  rust: do not use MaybeUninit::zeroed()

MaybeUninit::zeroed() is handy but is not available as a "const" function
until Rust 1.75.0.

Remove the default implementation of Zeroable::ZERO, and write by hand
the definitions for those types that need it.  It may be possible to
add automatic implementation of the trait, via a procedural macro and/or
a trick similar to offset_of!, but do it the easy way for now.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: e5f075906d5d9837c5ff280a299674dc0b79320f
      
https://github.com/qemu/qemu/commit/e5f075906d5d9837c5ff280a299674dc0b79320f
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M meson.build

  Log Message:
  -----------
  rust: clean up detection of the language

Disable the detection code altogether if have_system == false.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: b22b7585314ec38d54fd6672da8f3fd11be7673b
      
https://github.com/qemu/qemu/commit/b22b7585314ec38d54fd6672da8f3fd11be7673b
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M meson.build

  Log Message:
  -----------
  rust: allow version 1.63.0 of rustc

All constructs introduced by newer versions of Rust have been removed.

Apart from Debian 12, all other supported Linux distributions have
rustc 1.75.0 or newer.  This means that they only lack c"" literals
and stable offset_of!.

Tested-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: f70b573297f488d3f17bc3551e54ff1aaf0239a7
      
https://github.com/qemu/qemu/commit/f70b573297f488d3f17bc3551e54ff1aaf0239a7
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M meson.build
    M rust/hw/char/pl011/src/device.rs
    M rust/qemu-api/src/device_class.rs
    M rust/qemu-api/tests/tests.rs

  Log Message:
  -----------
  rust: do not use --generate-cstr

--generate-cstr is a good idea and generally the right thing to do,
but it is not available in Debian 12 and Ubuntu 22.04.  Work around
the absence.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 58fe2b5e432276be359d68e8ee97d9d1b61defe0
      
https://github.com/qemu/qemu/commit/58fe2b5e432276be359d68e8ee97d9d1b61defe0
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M docs/about/build-platforms.rst
    M meson.build

  Log Message:
  -----------
  rust: allow older version of bindgen

Cope with the old version that is provided in Debian 12.

--size_t-is-usize is needed on bindgen <0.61.0, and it was removed in
bindgen 0.65.0, so check for it in meson.build.

--merge-extern-blocks was added in 0.61.0.

--formatter rustfmt was added in 0.65.0 and is the default, so remove it.

Apart from Debian 12 and Ubuntu 22.04, all other supported distros have
version 0.66.x of bindgen or newer (or do not have bindgen at all).

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: c2c2110addf658f3668a2a1d2540b472c653f4f1
      
https://github.com/qemu/qemu/commit/c2c2110addf658f3668a2a1d2540b472c653f4f1
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M meson.build

  Log Message:
  -----------
  rust: make rustfmt optional

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: c543a6b91ec7d55add4ed8a949c40e7d26bd0972
      
https://github.com/qemu/qemu/commit/c543a6b91ec7d55add4ed8a949c40e7d26bd0972
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml
    M scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml
    M tests/docker/dockerfiles/ubuntu2204.docker
    M tests/lcitool/mappings.yml
    M tests/lcitool/refresh

  Log Message:
  -----------
  dockerfiles: install bindgen from cargo on Ubuntu 22.04

Because Ubuntu 22.04 has a very old version of bindgen, that
does not have the important option --allowlist-file, it will
not be able to use --enable-rust out of the box.  Instead,
install the latest version of bindgen-cli via "cargo install"
in the container, following QEMU's own documentation.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: d20feaa9a5af597bd20630d041e5dc7808612be1
      
https://github.com/qemu/qemu/commit/d20feaa9a5af597bd20630d041e5dc7808612be1
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-10-31 (Thu, 31 Oct 2024)

  Changed paths:
    M .gitlab-ci.d/buildtest.yml

  Log Message:
  -----------
  ci: enable rust in the Debian and Ubuntu system build job

We have fixed all incompatibilities with older versions of rustc
and bindgen.  Enable Rust on Debian to check that the minimum
supported version of Rust is indeed 1.63.0, and 0.60.x for bindgen.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 33a389aa556838290dfc3a597996b2a9e73a0d8a
      
https://github.com/qemu/qemu/commit/33a389aa556838290dfc3a597996b2a9e73a0d8a
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2024-11-06 (Wed, 06 Nov 2024)

  Changed paths:
    M .gitattributes
    M .gitlab-ci.d/buildtest.yml
    M docs/about/build-platforms.rst
    M hw/core/qdev-properties.c
    M include/hw/qdev-core.h
    M include/hw/qdev-properties.h
    M meson.build
    M meson_options.txt
    A rust/Cargo.lock
    A rust/Cargo.toml
    M rust/hw/char/Kconfig
    R rust/hw/char/pl011/Cargo.lock
    M rust/hw/char/pl011/Cargo.toml
    M rust/hw/char/pl011/src/device.rs
    M rust/hw/char/pl011/src/device_class.rs
    M rust/hw/char/pl011/src/lib.rs
    M rust/hw/char/pl011/src/memory_ops.rs
    R rust/qemu-api-macros/Cargo.lock
    M rust/qemu-api-macros/Cargo.toml
    M rust/qemu-api-macros/meson.build
    M rust/qemu-api-macros/src/lib.rs
    R rust/qemu-api/Cargo.lock
    M rust/qemu-api/Cargo.toml
    M rust/qemu-api/build.rs
    M rust/qemu-api/meson.build
    A rust/qemu-api/src/c_str.rs
    M rust/qemu-api/src/definitions.rs
    M rust/qemu-api/src/device_class.rs
    M rust/qemu-api/src/lib.rs
    A rust/qemu-api/src/offset_of.rs
    R rust/qemu-api/src/tests.rs
    A rust/qemu-api/src/vmstate.rs
    A rust/qemu-api/src/zeroable.rs
    A rust/qemu-api/tests/tests.rs
    M rust/wrapper.h
    M scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml
    M scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml
    M scripts/meson-buildoptions.sh
    M subprojects/bilge-impl-0.2-rs.wrap
    A subprojects/packagefiles/bilge-impl-1.63.0.patch
    M subprojects/packagefiles/proc-macro2-1-rs/meson.build
    M subprojects/packagefiles/syn-2-rs/meson.build
    M system/qdev-monitor.c
    M tests/docker/dockerfiles/ubuntu2204.docker
    M tests/lcitool/mappings.yml
    M tests/lcitool/refresh

  Log Message:
  -----------
  Merge tag 'for-upstream-rust' of https://gitlab.com/bonzini/qemu into staging

* rust: cleanups
* rust: integration tests
* rust/pl011: add support for migration
* rust/pl011: add TYPE_PL011_LUMINARY device
* rust: add support for older compilers and bindgen
* rust: enable rust in the Debian, Fedora and Ubuntu system build job

# -----BEGIN PGP SIGNATURE-----
#
# iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmcjwPkUHHBib256aW5p
# QHJlZGhhdC5jb20ACgkQv/vSX3jHroNTHAf/V5dNvJNKlyTl+oaEFFCt0F+H8Pux
# b0wXKd0n1Ba5kQt2KFPGi8B5DX7mjUjLHZwK3Th141i6NcTxrEnNAfgjAKqwrLra
# bRd2hy5KezYW105kntRQSILEvwinlyhEBv4UIq2bDwDuNtBFJgLUHf2TxYBWcH7I
# BGLIUIEJJrYEW5AMTWovB4udPxDDqivyL7zutjw0BD3z9A1OwaJD1Q8Uz1mR0+wa
# LhdsT4VheEQf/YToaaefy0Yse7PJMAh9Lf8dtaQiFlfBpyRdH0vyZ6/vPoJ9SkoA
# 2yY3wuIFPrmdsO27mpVDijbmZrOHqJ+9i00HWjpH2W9UEthpiOte2EngVg==
# =Zq+R
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu 31 Oct 2024 17:40:09 GMT
# gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg:                issuer "pbonzini@redhat.com"
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [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-rust' of https://gitlab.com/bonzini/qemu: (40 commits)
  ci: enable rust in the Debian and Ubuntu system build job
  dockerfiles: install bindgen from cargo on Ubuntu 22.04
  rust: make rustfmt optional
  rust: allow older version of bindgen
  rust: do not use --generate-cstr
  rust: allow version 1.63.0 of rustc
  rust: clean up detection of the language
  rust: do not use MaybeUninit::zeroed()
  rust: introduce alternative implementation of offset_of!
  rust: create a cargo workspace
  rust: synchronize dependencies between subprojects and Cargo.lock
  rust: silence unknown warnings for the sake of old compilers
  rust: introduce a c_str macro
  rust: use std::os::raw instead of core::ffi
  rust: fix cfgs of proc-macro2 for 1.63.0
  rust: patch bilge-impl to allow compilation with 1.63.0
  rust/pl011: Use correct masks for IBRD and FBRD
  rust/pl011: remove commented out C code
  rust/pl011: add TYPE_PL011_LUMINARY device
  rust/pl011: move CLK_NAME static to function scope
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

# Conflicts:
#       .gitlab-ci.d/buildtest.yml


Compare: https://github.com/qemu/qemu/compare/f15f7273ea55...33a389aa5568

To unsubscribe from these emails, change your notification settings at 
https://github.com/qemu/qemu/settings/notifications



reply via email to

[Prev in Thread] Current Thread [Next in Thread]