On Wed, Aug 28, 2024 at 6:12 AM Manos Pitsidianakis
<manos.pitsidiana...@linaro.org> wrote:
> - Addressed v8 review comment: removed rustfmt.toml symlink (Junjie Mao)
> - Addressed v8 review comment: removed unused cstr files (Junjie Mao)
> - Addressed v8 review comment: added HAVE_GLIB_WITH_ALIGNED_ALLOC config
>   host def to check whether glib's aligned alloc functions are available 
> (Junjie Mao)
> - qemu_api: Changed default alignment condition in allocator (alignment
>   is always nonzero)
> - qemu_api: Enabled allocator by default in builds
> - pl011: fixed invalid cast of byte buffer to u32 in pl011_receive()
>   leading to misaligned read

Looks generally good, the main sticky issue is the clang/libclang path
consistency (but good job finding LIBCLANG_PATH by the way!).

As mentioned in the individual review, I would remove the allocator
completely (and if you really wanted it, you should implement
alloc_zeroed and realloc too because the default implementations in
GlobalAlloc are inefficient).

For the cross compilation patch, if you want you can include in v10
what is at https://paste.debian.net/1328408/.

Paolo

> - Link to v8: 
> https://lore.kernel.org/r/20240823-rust-pl011-v8-0-b9f5746bd...@linaro.org
>
> Changes in v8:
> - Allow for compilation of more than one Rust-based component in Meson
>   by compiling all Rust static libraries into one "root" library before
>   linking it to each target emulation executable.
> - Added a qemu_api_macros procedural macro library.
> - (minor) Moved generated bindings.rs to qemu_api crate using meson's
>   structured_source() instead of compiling it as a standalone crate
>   which was unnecessary.
> - (minor) Removed unnecessary rustc optimization/debug flags (should be 
> handled
>   by meson instead).
> - (minor) Moved build scripts under scripts/rust/
> - (minor) Fixed license issues
>
> Previous version was: <20240815-rust-pl011-v7-0-975135e98...@linaro.org>
>
> https://lore.kernel.org/qemu-devel/20240815-rust-pl011-v7-0-975135e98...@linaro.org/
>
> Outstanding issues that are not blocking for merge are:
>
> - Cross-compilation for aarch64 is not possible out-of-the-box because of 
> this bug:
>   <https://github.com/rust-lang/rust/issues/125619> in llvm which when
>   fixed, must be ported to upstream rust's llvm fork. Since the problem
>   is an extraneous symbol we could strip it with objcopy -N|--strip-symbol
>   Update since last version: Fix is in upstream llvm, we're awaiting for
>   rust upstream to pick it up.
>
> ---
> Manos Pitsidianakis (7):
>       build-sys: Add rust feature option
>       rust: add bindgen step as a meson dependency
>       .gitattributes: add Rust diff and merge attributes
>       meson.build: add HAVE_GLIB_WITH_ALIGNED_ALLOC flag
>       rust: add crate to expose bindings and interfaces
>       rust: add utility procedural macro crate
>       rust: add PL011 device model
>
> Paolo Bonzini (2):
>       Require meson version 1.5.0
>       configure, meson: detect Rust toolchain
>
>  MAINTAINERS                                        |  21 +
>  configure                                          |  50 +-
>  meson.build                                        |  87 ++-
>  rust/wrapper.h                                     |  39 ++
>  .gitattributes                                     |   3 +
>  Kconfig                                            |   1 +
>  Kconfig.host                                       |   3 +
>  hw/arm/Kconfig                                     |  33 +-
>  meson_options.txt                                  |   3 +
>  python/scripts/vendor.py                           |   4 +-
>  python/wheels/meson-1.2.3-py3-none-any.whl         | Bin 964928 -> 0 bytes
>  python/wheels/meson-1.5.0-py3-none-any.whl         | Bin 0 -> 959846 bytes
>  pythondeps.toml                                    |   2 +-
>  rust/.gitignore                                    |   3 +
>  rust/Kconfig                                       |   1 +
>  rust/hw/Kconfig                                    |   2 +
>  rust/hw/char/Kconfig                               |   3 +
>  rust/hw/char/meson.build                           |   1 +
>  rust/hw/char/pl011/.gitignore                      |   2 +
>  rust/hw/char/pl011/Cargo.lock                      | 134 +++++
>  rust/hw/char/pl011/Cargo.toml                      |  26 +
>  rust/hw/char/pl011/README.md                       |  31 ++
>  rust/hw/char/pl011/meson.build                     |  26 +
>  rust/hw/char/pl011/src/definitions.rs              |  20 +
>  rust/hw/char/pl011/src/device.rs                   | 594 
> +++++++++++++++++++++
>  rust/hw/char/pl011/src/device_class.rs             |  59 ++
>  rust/hw/char/pl011/src/lib.rs                      | 585 ++++++++++++++++++++
>  rust/hw/char/pl011/src/memory_ops.rs               |  57 ++
>  rust/hw/meson.build                                |   1 +
>  rust/meson.build                                   |   4 +
>  rust/qemu-api-macros/Cargo.lock                    |  47 ++
>  rust/qemu-api-macros/Cargo.toml                    |  25 +
>  rust/qemu-api-macros/README.md                     |   1 +
>  rust/qemu-api-macros/meson.build                   |  25 +
>  rust/qemu-api-macros/src/lib.rs                    |  43 ++
>  rust/qemu-api/.gitignore                           |   2 +
>  rust/qemu-api/Cargo.lock                           |   7 +
>  rust/qemu-api/Cargo.toml                           |  26 +
>  rust/qemu-api/README.md                            |  17 +
>  rust/qemu-api/build.rs                             |  14 +
>  rust/qemu-api/meson.build                          |  24 +
>  rust/qemu-api/src/definitions.rs                   | 109 ++++
>  rust/qemu-api/src/device_class.rs                  | 128 +++++
>  rust/qemu-api/src/lib.rs                           | 154 ++++++
>  rust/qemu-api/src/tests.rs                         |  49 ++
>  rust/rustfmt.toml                                  |   7 +
>  scripts/archive-source.sh                          |   5 +-
>  scripts/make-release                               |   5 +-
>  scripts/meson-buildoptions.sh                      |   3 +
>  scripts/rust/rust_root_crate.sh                    |  13 +
>  scripts/rust/rustc_args.py                         |  84 +++
>  subprojects/.gitignore                             |  11 +
>  subprojects/arbitrary-int-1-rs.wrap                |   7 +
>  subprojects/bilge-0.2-rs.wrap                      |   7 +
>  subprojects/bilge-impl-0.2-rs.wrap                 |   7 +
>  subprojects/either-1-rs.wrap                       |   7 +
>  subprojects/itertools-0.11-rs.wrap                 |   7 +
>  .../packagefiles/arbitrary-int-1-rs/meson.build    |  19 +
>  subprojects/packagefiles/bilge-0.2-rs/meson.build  |  29 +
>  .../packagefiles/bilge-impl-0.2-rs/meson.build     |  45 ++
>  subprojects/packagefiles/either-1-rs/meson.build   |  24 +
>  .../packagefiles/itertools-0.11-rs/meson.build     |  30 ++
>  .../packagefiles/proc-macro-error-1-rs/meson.build |  40 ++
>  .../proc-macro-error-attr-1-rs/meson.build         |  32 ++
>  .../packagefiles/proc-macro2-1-rs/meson.build      |  31 ++
>  subprojects/packagefiles/quote-1-rs/meson.build    |  29 +
>  subprojects/packagefiles/syn-2-rs/meson.build      |  40 ++
>  .../packagefiles/unicode-ident-1-rs/meson.build    |  20 +
>  subprojects/proc-macro-error-1-rs.wrap             |   7 +
>  subprojects/proc-macro-error-attr-1-rs.wrap        |   7 +
>  subprojects/proc-macro2-1-rs.wrap                  |   7 +
>  subprojects/quote-1-rs.wrap                        |   7 +
>  subprojects/syn-2-rs.wrap                          |   7 +
>  subprojects/unicode-ident-1-rs.wrap                |   7 +
>  tests/lcitool/mappings.yml                         |   2 +-
>  75 files changed, 2991 insertions(+), 21 deletions(-)
> ---
> base-commit: a733f37aef3b7d1d33bfe2716af88cdfd67ba64e
> change-id: 20240814-rust-pl011-v7
>
> Best regards,
> --
> γαῖα πυρί μιχθήτω
>


Reply via email to