gpu: nova-core: miscellaneous improvements
Subsystems (4)
Alexandre Courbot
maintainerv3 cover gpu: nova-core: miscellaneous improvements
A few simple, loosely-related small improvements for nova-core, including reporting unprocessed data in GSP messages, removal of unnecessary code in GSP and the sequencer, and leveraging the Zeroable derive macro and core library's CStr. Probably nothing too controversial, so I plan on applying it soon after -rc1 gets released.
This revision is based on master.
---
Changes in v3:
- Use inspect() to warn about remaining data in the GSP command queue.
- Drop "firmware: fwsec: do not require bound device when unneeded".
- Drop "simplify str_from_null_terminated" as str_from_null_terminated has been removed.
- Derive Zeroable on the original GspStaticConfigInfo tuple struct.
- Link to v2: https://patch.msgid.link/[email protected]
Changes in v2:
- Rebase on drm-rust-next.
- Add a patch to reuse previously acquired reference to define in GSP boot sequence.
- Link to v1: https://patch.msgid.link/[email protected]
---
Alexandre Courbot (8):
gpu: nova-core: gsp: warn if data remains after processing a message
gpu: nova-core: gsp: remove unnecessary Display impls
gpu: nova-core: gsp: simplify sequencer opcode parsing
gpu: nova-core: gsp: remove unneeded sequencer trait
gpu: nova-core: gsp: derive Debug on more sequencer types
gpu: nova-core: gsp: derive Zeroable for GspStaticConfigInfo
gpu: nova-core: use core library's CStr instead of kernel one
gpu: nova-core: gsp: use available device reference
drivers/gpu/nova-core/firmware.rs | 2 +- drivers/gpu/nova-core/firmware/gsp.rs | 6 +- drivers/gpu/nova-core/gsp/boot.rs | 34 +++------- drivers/gpu/nova-core/gsp/cmdq.rs | 14 ++++- drivers/gpu/nova-core/gsp/fw.rs | 104 +++---------------------------- drivers/gpu/nova-core/gsp/fw/commands.rs | 5 +- drivers/gpu/nova-core/gsp/sequencer.rs | 18 +++--- drivers/gpu/nova-core/nova_core.rs | 2 +- 8 files changed, 45 insertions(+), 140 deletions(-)
---
base-commit: 9702969978695d9a699a1f34771580cdbb153b33
change-id: 20251208-nova-misc-1d797b5d64f2
Best regards,
Signature · 1 line
Alexandre Courbot <[email protected]>
Alexandre Courbot
maintainerPATCH v3 1/8 gpu: nova-core: gsp: warn if data remains after processing a message
Not processing the whole data from a received message is a strong indicator of a bug - emit a warning when such cases are detected.
--- drivers/gpu/nova-core/gsp/cmdq.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
drivers/gpu/nova-core/gsp/cmdq.rs +11 -1
@@ -661,7 +661,17 @@ pub(crate) fn receive_msg<M: MessageFromGsp>(&mut self, timeout: Delta) -> Resullet (cmd, contents_1) =M ::Message ::from_bytes_prefix (message.contents.0 ).ok_or (EIO )?;let mut sbuffer =SBufferIter ::new_reader ([contents_1, message.contents.1 ]); -M ::read (cmd, &mut sbuffer).map_err (|e| e.into ()) +M ::read (cmd, &mut sbuffer) + .map_err (|e| e.into ()) + .inspect (|_| { +if !sbuffer.is_empty () { +dev_warn! ( + &self.dev, +"GSP message {:?} has unprocessed data\n" , + function + ); + } + }) }else {Err (ERANGE ) };
Signature · 1 line
2.53.0
Alexandre Courbot
maintainerPATCH v3 2/8 gpu: nova-core: gsp: remove unnecessary Display impls
In reply to Alexandre CourbotWe only ever display these in debug context, for which the automatically derived Debug impls work just fine - so use them and remove these boilerplate-looking implementations.
--- drivers/gpu/nova-core/gsp/cmdq.rs | 2 +- drivers/gpu/nova-core/gsp/fw.rs | 54 --------------------------------------- 2 files changed, 1 insertion(+), 55 deletions(-)
drivers/gpu/nova-core/gsp/cmdq.rs +1 -1
@@ -531,7 +531,7 @@ pub(crate) fn send_command<M>(&mut self, bar: &Bar0, command: M) -> Resultdev_dbg! ( &self.dev, -"GSP RPC: send: seq# {}, function={}, length=0x{:x}\n" , +"GSP RPC: send: seq# {}, function={:?}, length=0x{:x}\n" , self.seq,M ::FUNCTION , dst.header.length (),
drivers/gpu/nova-core/gsp/fw.rs +0 -54
72 lines not on this page · raw message
Signature · 1 line
2.53.0
Alexandre Courbot
maintainerPATCH v3 3/8 gpu: nova-core: gsp: simplify sequencer opcode parsing
In reply to Alexandre CourbotThe opcodes are already the right type in the C union, so we can use them directly instead of converting them to a byte stream and back again using FromBytes.
--- drivers/gpu/nova-core/gsp/fw.rs | 40 +++++----------------------------------- 1 file changed, 5 insertions(+), 35 deletions(-)
drivers/gpu/nova-core/gsp/fw.rs +5 -35
@@ -472,13 +472,7 @@ pub(crate) fn reg_write_payload(&self) -> Result<RegWritePayload> {return Err (EINVAL ); }// SAFETY: Opcode is verified to be `RegWrite`, so union contains valid `RegWritePayload`. -let payload_bytes =unsafe { - core::slice::from_raw_parts ( - core::ptr::addr_of!(self.0 .payload.regWrite).cast ::<u8 >(), - core::mem::size_of ::<RegWritePayload >(), - ) - }; -Ok (*RegWritePayload ::from_bytes (payload_bytes).ok_or (EINVAL )?) +Ok (RegWritePayload (unsafe { self.0 .payload.regWrite })) }/// Returns the register modify payload by value.
@@ -489,13 +483,7 @@ pub(crate) fn reg_modify_payload(&self) -> Result<RegModifyPayload> {return Err (EINVAL ); }// SAFETY: Opcode is verified to be `RegModify`, so union contains valid `RegModifyPayload`. -let payload_bytes =unsafe { - core::slice::from_raw_parts ( - core::ptr::addr_of!(self.0 .payload.regModify).cast ::<u8 >(), - core::mem::size_of ::<RegModifyPayload >(), - ) - }; -Ok (*RegModifyPayload ::from_bytes (payload_bytes).ok_or (EINVAL )?) +Ok (RegModifyPayload (unsafe { self.0 .payload.regModify })) }/// Returns the register poll payload by value.
@@ -506,13 +494,7 @@ pub(crate) fn reg_poll_payload(&self) -> Result<RegPollPayload> {return Err (EINVAL ); }// SAFETY: Opcode is verified to be `RegPoll`, so union contains valid `RegPollPayload`. -let payload_bytes =unsafe { - core::slice::from_raw_parts ( - core::ptr::addr_of!(self.0 .payload.regPoll).cast ::<u8 >(), - core::mem::size_of ::<RegPollPayload >(), - ) - }; -Ok (*RegPollPayload ::from_bytes (payload_bytes).ok_or (EINVAL )?) +Ok (RegPollPayload (unsafe { self.0 .payload.regPoll })) }/// Returns the delay payload by value.
@@ -523,13 +505,7 @@ pub(crate) fn delay_us_payload(&self) -> Result<DelayUsPayload> {return Err (EINVAL ); }// SAFETY: Opcode is verified to be `DelayUs`, so union contains valid `DelayUsPayload`. -let payload_bytes =unsafe { - core::slice::from_raw_parts ( - core::ptr::addr_of!(self.0 .payload.delayUs).cast ::<u8 >(), - core::mem::size_of ::<DelayUsPayload >(), - ) - }; -Ok (*DelayUsPayload ::from_bytes (payload_bytes).ok_or (EINVAL )?) +Ok (DelayUsPayload (unsafe { self.0 .payload.delayUs })) }/// Returns the register store payload by value.
@@ -540,13 +516,7 @@ pub(crate) fn reg_store_payload(&self) -> Result<RegStorePayload> {return Err (EINVAL ); }// SAFETY: Opcode is verified to be `RegStore`, so union contains valid `RegStorePayload`. -let payload_bytes =unsafe { - core::slice::from_raw_parts ( - core::ptr::addr_of!(self.0 .payload.regStore).cast ::<u8 >(), - core::mem::size_of ::<RegStorePayload >(), - ) - }; -Ok (*RegStorePayload ::from_bytes (payload_bytes).ok_or (EINVAL )?) +Ok (RegStorePayload (unsafe { self.0 .payload.regStore })) } }
Signature · 1 line
2.53.0
Alexandre Courbot
maintainerPATCH v3 4/8 gpu: nova-core: gsp: remove unneeded sequencer trait
In reply to Alexandre CourbotThe GspSeqCmdRunner trait is never used as we never call the run methods from generic code. Remove it.
--- drivers/gpu/nova-core/gsp/sequencer.rs | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-)
drivers/gpu/nova-core/gsp/sequencer.rs +6 -11
@@ -144,12 +144,7 @@ pub(crate) struct GspSequencer<'a> { dev: ARef<device::Device>, } -/// Trait for running sequencer commands. -pub (crate )trait GspSeqCmdRunner { -fn run (&self, sequencer: &GspSequencer <'_>) ->Result ; -} - -impl GspSeqCmdRunner for fw::RegWritePayload { +impl fw::RegWritePayload {fn run (&self, sequencer: &GspSequencer <'_>) ->Result {let addr = usize::from_safe_cast (self.addr ());
@@ -157,7 +152,7 @@ fn run(&self, sequencer: &GspSequencer<'_>) -> Result { } } -impl GspSeqCmdRunner for fw::RegModifyPayload { +impl fw::RegModifyPayload {fn run (&self, sequencer: &GspSequencer <'_>) ->Result {let addr = usize::from_safe_cast (self.addr ());
@@ -169,7 +164,7 @@ fn run(&self, sequencer: &GspSequencer<'_>) -> Result { } } -impl GspSeqCmdRunner for fw::RegPollPayload { +impl fw::RegPollPayload {fn run (&self, sequencer: &GspSequencer <'_>) ->Result {let addr = usize::from_safe_cast (self.addr ());
@@ -194,14 +189,14 @@ fn run(&self, sequencer: &GspSequencer<'_>) -> Result { } } -impl GspSeqCmdRunner for fw::DelayUsPayload { +impl fw::DelayUsPayload {fn run (&self, _sequencer: &GspSequencer <'_>) ->Result {fsleep (Delta ::from_micros (i64::from (self.val ())));Ok (()) } } -impl GspSeqCmdRunner for fw::RegStorePayload { +impl fw::RegStorePayload {fn run (&self, sequencer: &GspSequencer <'_>) ->Result {let addr = usize::from_safe_cast (self.addr ());
@@ -209,7 +204,7 @@ fn run(&self, sequencer: &GspSequencer<'_>) -> Result { } } -impl GspSeqCmdRunner for GspSeqCmd { +impl GspSeqCmd {fn run (&self, seq: &GspSequencer <'_>) ->Result {match self {GspSeqCmd ::RegWrite (cmd) => cmd.run (seq),
Signature · 1 line
2.53.0
Alexandre Courbot
maintainerPATCH v3 5/8 gpu: nova-core: gsp: derive `Debug` on more sequencer types
In reply to Alexandre CourbotBeing able to print these is useful when debugging the sequencer.
--- drivers/gpu/nova-core/gsp/fw.rs | 10 +++++----- drivers/gpu/nova-core/gsp/sequencer.rs | 1 + 2 files changed, 6 insertions(+), 5 deletions(-)
drivers/gpu/nova-core/gsp/fw.rs +5 -5
@@ -330,7 +330,7 @@ fn from(value: SeqBufOpcode) -> Self {/// Wrapper for GSP sequencer register write payload. #[repr(transparent)] -#[derive( Copy , Clone )] +#[derive( Copy , Clone , Debug )] pub (crate )struct RegWritePayload (bindings::GSP_SEQ_BUF_PAYLOAD_REG_WRITE );impl RegWritePayload {
@@ -353,7 +353,7 @@ unsafe impl AsBytes for RegWritePayload {}/// Wrapper for GSP sequencer register modify payload. #[repr(transparent)] -#[derive( Copy , Clone )] +#[derive( Copy , Clone , Debug )] pub (crate )struct RegModifyPayload (bindings::GSP_SEQ_BUF_PAYLOAD_REG_MODIFY );impl RegModifyPayload {
@@ -381,7 +381,7 @@ unsafe impl AsBytes for RegModifyPayload {}/// Wrapper for GSP sequencer register poll payload. #[repr(transparent)] -#[derive( Copy , Clone )] +#[derive( Copy , Clone , Debug )] pub (crate )struct RegPollPayload (bindings::GSP_SEQ_BUF_PAYLOAD_REG_POLL );impl RegPollPayload {
@@ -414,7 +414,7 @@ unsafe impl AsBytes for RegPollPayload {}/// Wrapper for GSP sequencer delay payload. #[repr(transparent)] -#[derive( Copy , Clone )] +#[derive( Copy , Clone , Debug )] pub (crate )struct DelayUsPayload (bindings::GSP_SEQ_BUF_PAYLOAD_DELAY_US );impl DelayUsPayload {
@@ -432,7 +432,7 @@ unsafe impl AsBytes for DelayUsPayload {}/// Wrapper for GSP sequencer register store payload. #[repr(transparent)] -#[derive( Copy , Clone )] +#[derive( Copy , Clone , Debug )] pub (crate )struct RegStorePayload (bindings::GSP_SEQ_BUF_PAYLOAD_REG_STORE );impl RegStorePayload {
drivers/gpu/nova-core/gsp/sequencer.rs +1 -0
@@ -67,6 +67,7 @@ fn read(/// GSP Sequencer Command types with payload data. /// Commands have an opcode and an opcode-dependent struct. #[allow(clippy::enum_variant_names)] +#[derive( Debug )] pub (crate )enum GspSeqCmd {RegWrite (fw::RegWritePayload ),RegModify (fw::RegModifyPayload ),
Signature · 1 line
2.53.0
Alexandre Courbot
maintainerPATCH v3 6/8 gpu: nova-core: gsp: derive Zeroable for GspStaticConfigInfo
In reply to Alexandre CourbotWe can now derive Zeroable on tuple structs, so do this instead of providing our own implementation.
--- drivers/gpu/nova-core/gsp/fw/commands.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
drivers/gpu/nova-core/gsp/fw/commands.rs +1 -4
@@ -107,6 +107,7 @@ unsafe impl FromBytes for PackedRegistryTable {}/// Payload of the `GetGspStaticInfo` command and message. #[repr(transparent)] +#[derive( Zeroable )] pub (crate )struct GspStaticConfigInfo (bindings::GspStaticConfigInfo_t );impl GspStaticConfigInfo {
@@ -122,7 +123,3 @@ unsafe impl AsBytes for GspStaticConfigInfo {}// SAFETY: This struct only contains integer types for which all bit patterns // are valid. unsafe impl FromBytes for GspStaticConfigInfo {} - -// SAFETY: This struct only contains integer types and fixed-size arrays for which -// all bit patterns are valid. -unsafe impl Zeroable for GspStaticConfigInfo {}
Signature · 1 line
2.53.0
Alexandre Courbot
maintainerPATCH v3 7/8 gpu: nova-core: use core library's CStr instead of kernel one
In reply to Alexandre CourbotThe kernel's own CStr type has been replaced by the one in the core library, and is now an alias to the latter. Change our imports to directly reference the actual type.
--- drivers/gpu/nova-core/firmware.rs | 2 +- drivers/gpu/nova-core/firmware/gsp.rs | 6 +++++- drivers/gpu/nova-core/nova_core.rs | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-)
drivers/gpu/nova-core/firmware.rs +1 -1
@@ -424,7 +424,7 @@ const fn make_entry_chipset(self, chipset: &str) -> Self { }pub (crate )const fn create ( - module_name: &'static kernel::str::CStr , + module_name: &'static core::ffi::CStr , ) -> firmware::ModInfoBuilder <N > {let mut this =Self (firmware::ModInfoBuilder ::new (module_name));let mut i =0 ;
drivers/gpu/nova-core/firmware/gsp.rs +5 -1
@@ -32,9 +32,13 @@/// that scheme before nova-core becomes stable, which means this module will eventually be /// removed. mod elf { +use core::{ + ffi::CStr , + mem::size_of,// + }; +use kernel::{ bindings, - prelude::*, transmute::FromBytes ,// };
drivers/gpu/nova-core/nova_core.rs +1 -1
@@ -18,7 +18,7 @@mod sbuffer;mod vbios; -pub (crate )const MODULE_NAME : &kernel::str::CStr = <LocalModule as kernel::ModuleMetadata >::NAME ; +pub (crate )const MODULE_NAME : &core::ffi::CStr = <LocalModule as kernel::ModuleMetadata >::NAME ; kernel::module_pci_driver! {type :driver ::NovaCore ,
Signature · 1 line
2.53.0
Danilo Krummrich
maintainerRe: [PATCH v3 7/8] gpu: nova-core: use core library's CStr instead of kernel one
Quoted 34 lines · Alexandre Courbot
The kernel's own CStr type has been replaced by the one in the core library, and is now an alias to the latter. Change our imports to directly reference the actual type.
Reviewed-by Lyude Paul <[email protected]>Reviewed-by Gary Guo <[email protected]>Signed-off-by Alexandre Courbot <[email protected]>--- drivers/gpu/nova-core/firmware.rs | 2 +- drivers/gpu/nova-core/firmware/gsp.rs | 6 +++++- drivers/gpu/nova-core/nova_core.rs | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-)drivers/gpu/nova-core/firmware.rs +1
-1@@ -424,7 +424,7 @@ const fn make_entry_chipset(self, chipset: &str) -> Self { }pub (crate )const fn create ( - module_name: &'static kernel::str::CStr , + module_name: &'static core::ffi::CStr , ) -> firmware::ModInfoBuilder <N > {let mut this =Self (firmware::ModInfoBuilder ::new (module_name));let mut i =0 ;drivers/gpu/nova-core/firmware/gsp.rs +0
-0@@ -32,9 +32,13 @@/// that scheme before nova-core becomes stable, which means this module will eventually be /// removed. mod elf {
drivers/gpu/nova-core/firmware/gsp.rs line 43
Quoted 10 lines
drivers/gpu/nova-core/firmware/gsp.rs +5
-1+use core::{ + ffi::CStr , + mem::size_of,// + }; +use kernel::{ bindings, - prelude::*, transmute::FromBytes ,// };
What's the improvement in this change? Both of the ones factored out are already correctly imported through prelude. Let's keep it as is.
Quoted 16 lines
drivers/gpu/nova-core/nova_core.rs +1
-1@@ -18,7 +18,7 @@mod sbuffer;mod vbios; -pub (crate )const MODULE_NAME : &kernel::str::CStr = <LocalModule as kernel::ModuleMetadata >::NAME ; +pub (crate )const MODULE_NAME : &core::ffi::CStr = <LocalModule as kernel::ModuleMetadata >::NAME ; kernel::module_pci_driver! {type :driver ::NovaCore ,Signature · 2 lines
-- 2.53.0
Alexandre Courbot
maintainerRe: [PATCH v3 7/8] gpu: nova-core: use core library's CStr instead of kernel one
Quoted 40 lines · Danilo Krummrich
Quoted 39 lines · Alexandre Courbot
The kernel's own CStr type has been replaced by the one in the core library, and is now an alias to the latter. Change our imports to directly reference the actual type.
Reviewed-by Lyude Paul <[email protected]>Reviewed-by Gary Guo <[email protected]>Signed-off-by Alexandre Courbot <[email protected]>--- drivers/gpu/nova-core/firmware.rs | 2 +- drivers/gpu/nova-core/firmware/gsp.rs | 6 +++++- drivers/gpu/nova-core/nova_core.rs | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-)drivers/gpu/nova-core/firmware.rs +1
-1@@ -424,7 +424,7 @@ const fn make_entry_chipset(self, chipset: &str) -> Self { }pub (crate )const fn create ( - module_name: &'static kernel::str::CStr , + module_name: &'static core::ffi::CStr , ) -> firmware::ModInfoBuilder <N > {let mut this =Self (firmware::ModInfoBuilder ::new (module_name));let mut i =0 ;drivers/gpu/nova-core/firmware/gsp.rs +5
-0@@ -32,9 +32,13 @@/// that scheme before nova-core becomes stable, which means this module will eventually be /// removed. mod elf { +use core::{ + ffi::CStr , + mem::size_of,// + }; +
Quoted 8 lines
drivers/gpu/nova-core/firmware/gsp.rs line 43
Quoted 5 lines
drivers/gpu/nova-core/firmware/gsp.rs +0
-1use kernel::{ bindings, - prelude::*, transmute::FromBytes ,// };What's the improvement in this change? Both of the ones factored out are already correctly imported through prelude. Let's keep it as is.
Mmm, either they weren't at the time I initially wrote this patch, or I've been careless (the latter being more likely). I'll remove this.
Alexandre Courbot
maintainerPATCH v3 8/8 gpu: nova-core: gsp: use available device reference
In reply to Alexandre CourbotWe already have a regular reference to the Device, so we don't need to repeatedly acquire one in this method.
--- drivers/gpu/nova-core/gsp/boot.rs | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-)
drivers/gpu/nova-core/gsp/boot.rs +8 -26
@@ -170,15 +170,10 @@ pub(crate) fn boot( Some(libos_handle as u32), Some((libos_handle >> 32) as u32), )?; -dev_dbg! ( - pdev.as_ref (), -"GSP MBOX0: {:#x}, MBOX1: {:#x}\n" , - mbox0, - mbox1 - ); +dev_dbg! (dev,"GSP MBOX0: {:#x}, MBOX1: {:#x}\n" , mbox0, mbox1);dev_dbg! ( - pdev.as_ref (), + dev,"Using SEC2 to load and run the booter_load firmware...\n" );
@@ -190,19 +185,10 @@ pub(crate) fn boot( Some(wpr_handle as u32), Some((wpr_handle >> 32) as u32), )?; -dev_dbg! ( - pdev.as_ref (), -"SEC2 MBOX0: {:#x}, MBOX1{:#x}\n" , - mbox0, - mbox1 - ); +dev_dbg! (dev,"SEC2 MBOX0: {:#x}, MBOX1{:#x}\n" , mbox0, mbox1);if mbox0 !=0 { -dev_err! ( - pdev.as_ref (), -"Booter-load failed with error {:#x}\n" , - mbox0 - ); +dev_err! (dev,"Booter-load failed with error {:#x}\n" , mbox0);return Err (ENODEV ); }
@@ -216,11 +202,7 @@ pub(crate) fn boot( Delta::from_secs(5), )?; -dev_dbg! ( - pdev.as_ref (), -"RISC-V active? {}\n" , - gsp_falcon.is_riscv_active (bar), - ); +dev_dbg! (dev,"RISC-V active? {}\n" , gsp_falcon.is_riscv_active (bar),);// Create and run the GSP sequencer. let seq_params =GspSequencerParams {
@@ -228,7 +210,7 @@ pub(crate) fn boot( libos_dma_handle: libos_handle, gsp_falcon, sec2_falcon, - dev: pdev.as_ref().into(), + dev: dev.into(), bar, };GspSequencer ::run (&mut self.cmdq, seq_params)?;
@@ -239,8 +221,8 @@ pub(crate) fn boot(// Obtain and display basic GPU information. let info = commands::get_gsp_info (&mut self.cmdq, bar)?;match info.gpu_name () { -Ok (name) =>dev_info! (pdev.as_ref (),"GPU name: {}\n" , name), -Err (e) =>dev_warn! (pdev.as_ref (),"GPU name unavailable: {:?}\n" , e), +Ok (name) =>dev_info! (dev,"GPU name: {}\n" , name), +Err (e) =>dev_warn! (dev,"GPU name unavailable: {:?}\n" , e), }Ok (())
Signature · 1 line
2.53.0
Danilo Krummrich
maintainerRe: [PATCH v3 8/8] gpu: nova-core: gsp: use available device reference
Quoted 5 lines · Alexandre Courbot
We already have a regular reference to the
Device, so we don't need to repeatedly acquire one in this method.Reviewed-by Gary Guo <[email protected]>Signed-off-by Alexandre Courbot <[email protected]>
This conflicts with [1]. I think I will just drop [1] from my queue, since for nova-core specifically using the base Device here may be better, as eventually nova-core will work with both a pci::Device and a platform::Device.
(Which also reminds me that at some point we have to treat pci::Bar as generic I/O backend.)
I hope we can actually keep as many code paths in common as I imagine.
Quoted 9 lines · Alexandre Courbot
A few simple, loosely-related small improvements for nova-core, including reporting unprocessed data in GSP messages, removal of unnecessary code in GSP and the sequencer, and leveraging the Zeroable derive macro and core library's CStr. Probably nothing too controversial, so I plan on applying it soon after -rc1 gets released.
This revision is based on master.
Signed-off-by Alexandre Courbot <[email protected]>
With my comments in patch 7 addressed,
Alexandre Courbot
maintainerQuoted 7 lines · Danilo Krummrich
Quoted 6 lines · Alexandre Courbot
A few simple, loosely-related small improvements for nova-core, including reporting unprocessed data in GSP messages, removal of unnecessary code in GSP and the sequencer, and leveraging the Zeroable derive macro and core library's CStr. Probably nothing too controversial, so I plan on applying it soon after -rc1 gets released.
Quoted 7 lines
Quoted 3 lines
This revision is based on master.
Signed-off-by Alexandre Courbot <[email protected]>With my comments in patch 7 addressed,
Reviewed-by Danilo Krummrich <[email protected]>
Thanks! Staging for applying after -rc1 is released, with the comments on patch 7 addressed.
Alexandre Courbot
maintainerQuoted 10 lines · Alexandre Courbot
Quoted 9 lines · Danilo Krummrich
Quoted 8 lines · Alexandre Courbot
A few simple, loosely-related small improvements for nova-core, including reporting unprocessed data in GSP messages, removal of unnecessary code in GSP and the sequencer, and leveraging the Zeroable derive macro and core library's CStr. Probably nothing too controversial, so I plan on applying it soon after -rc1 gets released.
This revision is based on master.
Quoted 8 lines
Quoted 5 lines
Quoted 1 line
Signed-off-by Alexandre Courbot <[email protected]>With my comments in patch 7 addressed,
Reviewed-by Danilo Krummrich <[email protected]>Thanks! Staging for applying after -rc1 is released, with the comments on patch 7 addressed.
Pushed into drm-rust-next, with the exception of the last patch which has been superseeded by [1].