On 11/25/2025 6:47 PM, Paolo Bonzini wrote: > On Tue, Oct 28, 2025 at 11:18 AM chenmiao <[email protected]> wrote: >> We have implemented I2C and the first GPIO device in Rust for QEMU. >> Additionally, in the respective patches, we have shared our insights and >> experiences regarding the use of Rust for device modeling within QEMU. >> >> 1. The first patch implements the BusState for the I2CBus infrastructure. >> 2. The second patch implements the I2CBus and I2CSlave infrastructure, along >> with a discussion of the challenges encountered during the >> implementation. >> 3. The third patch moves the struct definition of the PCF8574 to the >> corresponding header file. >> 4. The fourth patch provides a set of necessary helper functions for the >> PCF8574 >> GPIO device. >> 5. The fifth patch implements the PCF8574 GPIO device, along with a >> discussion >> of the issues and considerations addressed during the implementation. >> >> Regarding this series of patches, we have found that Rust for QEMU is indeed >> still not mature enough and requires continuous iteration. Additionally, the >> lack of basic documentation also needs to be addressed. In this regard, I >> hope >> our team(HUST OpenAtom Open Source Club) can contribute to the documentation >> efforts for Rust for QEMU. >> >> Link: https://groups.google.com/g/hust-os-kernel-patches/c/z7vHWg3xvDc >> >> Signed-off-by: Chao Liu <[email protected]> >> Signed-off-by: Chen Miao <[email protected]> > Hi! Are you going to send v3? > > Thanks, > > Paolo
Hello, I've been a bit busy lately, but I believe we will complete V3 and send it out before mid-December. Regards, Chen Miao > >> --- >> Changes in V2: >> - According to Zhao's suggestions, some modifications were made to the >> first >> and second patches respectively, such as changing some bus names, adding >> some Safety comments, and adding callbacks for I2CSlave. >> - While we were making changes to the first PATCH, Chao Liu pointed out >> that >> the realize function was unnecessary in the bus. After discussion, we >> removed the bus::realize function. Since no other components are >> currently >> using the bus, we added a TODO comment for clarification. >> >> chenmiao (5): >> rust/hw/core: Add the BusState of rust version >> rust/hw/core: Add rust bindings/funcs for i2c bus >> hw/gpio: Move the pcf8574 struct to header >> rust/hw/core: Provide some interfaces for the GPIO device >> rust/hw/gpio: Add the the first gpio device pcf8574 >> >> hw/gpio/Kconfig | 5 + >> hw/gpio/meson.build | 2 +- >> hw/gpio/pcf8574.c | 32 -- >> include/hw/gpio/pcf8574.h | 36 +++ >> rust/Cargo.lock | 21 +- >> rust/Cargo.toml | 1 + >> rust/hw/Kconfig | 1 + >> rust/hw/core/meson.build | 2 + >> rust/hw/core/src/bus.rs | 44 +++ >> rust/hw/core/src/i2c.rs | 421 +++++++++++++++++++++++++++ >> rust/hw/core/src/irq.rs | 6 +- >> rust/hw/core/src/lib.rs | 6 + >> rust/hw/core/src/qdev.rs | 12 +- >> rust/hw/core/wrapper.h | 1 + >> rust/hw/gpio/Kconfig | 2 + >> rust/hw/gpio/meson.build | 1 + >> rust/hw/gpio/pcf8574/Cargo.toml | 31 ++ >> rust/hw/gpio/pcf8574/build.rs | 1 + >> rust/hw/gpio/pcf8574/meson.build | 50 ++++ >> rust/hw/gpio/pcf8574/src/bindings.rs | 29 ++ >> rust/hw/gpio/pcf8574/src/device.rs | 180 ++++++++++++ >> rust/hw/gpio/pcf8574/src/lib.rs | 4 + >> rust/hw/gpio/pcf8574/wrapper.h | 51 ++++ >> rust/hw/meson.build | 1 + >> 24 files changed, 902 insertions(+), 38 deletions(-) >> create mode 100644 rust/hw/core/src/bus.rs >> create mode 100644 rust/hw/core/src/i2c.rs >> create mode 100644 rust/hw/gpio/Kconfig >> create mode 100644 rust/hw/gpio/meson.build >> create mode 100644 rust/hw/gpio/pcf8574/Cargo.toml >> create mode 120000 rust/hw/gpio/pcf8574/build.rs >> create mode 100644 rust/hw/gpio/pcf8574/meson.build >> create mode 100644 rust/hw/gpio/pcf8574/src/bindings.rs >> create mode 100644 rust/hw/gpio/pcf8574/src/device.rs >> create mode 100644 rust/hw/gpio/pcf8574/src/lib.rs >> create mode 100644 rust/hw/gpio/pcf8574/wrapper.h >> >> -- >> 2.43.0 >>
