This patch series introduces the dma::Coherent API Gary worked out in the context of his I/O projection work.
Additionally, introduce dma::CoherentInit, a type that encapsulates a dma::Coherent object before its DMA address is exposed to the device. dma::CoherentInit can guarantee exclusive access to the inner dma::Coherent object and implement Deref and DerefMut. Also add Coherent::init() and Coherent::init_with_attrs() so we can directly initialize a new dma::Coherent object through an impl Init<T, E>. Danilo Krummrich (5): rust: dma: use "kernel vertical" style for imports rust: dma: introduce dma::CoherentInit for memory initialization rust: dma: add Coherent:init() and Coherent::init_with_attrs() gpu: nova-core: use Coherent::init to initialize GspFwWprMeta gpu: nova-core: convert Gsp::new() to use CoherentInit Gary Guo (3): rust: dma: add generalized container for types other than slices rust: dma: add zeroed constructor to `Coherent` gpu: nova-core: convert to new dma::Coherent API drivers/gpu/nova-core/dma.rs | 19 +- drivers/gpu/nova-core/falcon.rs | 7 +- drivers/gpu/nova-core/firmware.rs | 10 +- drivers/gpu/nova-core/gsp.rs | 65 ++-- drivers/gpu/nova-core/gsp/boot.rs | 7 +- drivers/gpu/nova-core/gsp/cmdq.rs | 55 +-- drivers/gpu/nova-core/gsp/fw.rs | 82 ++-- rust/kernel/device.rs | 4 +- rust/kernel/dma.rs | 626 +++++++++++++++++++++++------- samples/rust/rust_dma.rs | 8 +- 10 files changed, 619 insertions(+), 264 deletions(-) base-commit: 1195fcbda62f12108dc9be56fa4173897905b90c -- 2.53.0
