* [PATCH v2 1/2] gpu: nova-core: check for overflow to DMATRFBASE1
@ 2026-01-07 20:16 Timur Tabi
2026-01-07 20:16 ` [PATCH v2 2/2] gpu: nova-core: add missing newlines to several print strings Timur Tabi
2026-01-22 23:44 ` [PATCH v2 1/2] gpu: nova-core: check for overflow to DMATRFBASE1 Timur Tabi
0 siblings, 2 replies; 8+ messages in thread
From: Timur Tabi @ 2026-01-07 20:16 UTC (permalink / raw)
To: Danilo Krummrich, Alexandre Courbot, Joel Fernandes, John Hubbard,
Miguel Ojeda, nouveau, rust-for-linux
The NV_PFALCON_FALCON_DMATRFBASE/1 register pair supports DMA addresses
up to 49 bits only, but the write to DMATRFBASE1 could exceed that.
To mitigate, check first that the DMA address will fit.
Reviewed-by: John Hubbard <jhubbard@nvidia.com>
Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com>
Fixes: 69f5cd67ce41 ("gpu: nova-core: add falcon register definitions and base code")
Signed-off-by: Timur Tabi <ttabi@nvidia.com>
---
v2: Improved comment and moved check earlier in function
drivers/gpu/nova-core/falcon.rs | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/gpu/nova-core/falcon.rs b/drivers/gpu/nova-core/falcon.rs
index 82c661aef594..6ae0490caffa 100644
--- a/drivers/gpu/nova-core/falcon.rs
+++ b/drivers/gpu/nova-core/falcon.rs
@@ -472,6 +472,12 @@ fn dma_wr<F: FalconFirmware<Target = E>>(
return Err(EINVAL);
}
+ // The DMATRFBASE/1 register pair only supports a 49-bit address.
+ if dma_start > kernel::dma::DmaMask::new::<49>().value() {
+ dev_err!(self.dev, "DMA address {:#x} exceeds 49 bits\n", dma_start);
+ return Err(ERANGE);
+ }
+
// DMA transfers can only be done in units of 256 bytes. Compute how many such transfers we
// need to perform.
let num_transfers = load_offsets.len.div_ceil(DMA_LEN);
base-commit: 2d7b4a44fb768e1887e7e4cdd8b86817ccd9c3bf
--
2.52.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v2 2/2] gpu: nova-core: add missing newlines to several print strings 2026-01-07 20:16 [PATCH v2 1/2] gpu: nova-core: check for overflow to DMATRFBASE1 Timur Tabi @ 2026-01-07 20:16 ` Timur Tabi 2026-01-07 20:48 ` John Hubbard 2026-01-22 23:44 ` [PATCH v2 1/2] gpu: nova-core: check for overflow to DMATRFBASE1 Timur Tabi 1 sibling, 1 reply; 8+ messages in thread From: Timur Tabi @ 2026-01-07 20:16 UTC (permalink / raw) To: Danilo Krummrich, Alexandre Courbot, Joel Fernandes, John Hubbard, Miguel Ojeda, nouveau, rust-for-linux Although the dev_xx!() macro calls do not technically require terminating newlines for the format strings, they should be added anyway to maintain consistency, both within Rust code and with the C versions. Signed-off-by: Timur Tabi <ttabi@nvidia.com> --- v2: added some more strings that were missed drivers/gpu/nova-core/falcon.rs | 6 +++--- drivers/gpu/nova-core/falcon/hal/ga102.rs | 4 ++-- drivers/gpu/nova-core/fb.rs | 2 +- drivers/gpu/nova-core/gpu.rs | 2 +- drivers/gpu/nova-core/gsp/boot.rs | 2 +- drivers/gpu/nova-core/gsp/cmdq.rs | 2 +- drivers/gpu/nova-core/gsp/sequencer.rs | 10 +++++----- drivers/gpu/nova-core/vbios.rs | 2 +- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/nova-core/falcon.rs b/drivers/gpu/nova-core/falcon.rs index 6ae0490caffa..4e1da0b9cf4f 100644 --- a/drivers/gpu/nova-core/falcon.rs +++ b/drivers/gpu/nova-core/falcon.rs @@ -466,7 +466,7 @@ fn dma_wr<F: FalconFirmware<Target = E>>( if dma_start % DmaAddress::from(DMA_LEN) > 0 { dev_err!( self.dev, - "DMA transfer start addresses must be a multiple of {}", + "DMA transfer start addresses must be a multiple of {}\n", DMA_LEN ); return Err(EINVAL); @@ -489,11 +489,11 @@ fn dma_wr<F: FalconFirmware<Target = E>>( .and_then(|size| size.checked_add(load_offsets.src_start)) { None => { - dev_err!(self.dev, "DMA transfer length overflow"); + dev_err!(self.dev, "DMA transfer length overflow\n"); return Err(EOVERFLOW); } Some(upper_bound) if usize::from_safe_cast(upper_bound) > fw.size() => { - dev_err!(self.dev, "DMA transfer goes beyond range of DMA object"); + dev_err!(self.dev, "DMA transfer goes beyond range of DMA object\n"); return Err(EINVAL); } Some(_) => (), diff --git a/drivers/gpu/nova-core/falcon/hal/ga102.rs b/drivers/gpu/nova-core/falcon/hal/ga102.rs index 69a7a95cac16..0bdfe45a2d03 100644 --- a/drivers/gpu/nova-core/falcon/hal/ga102.rs +++ b/drivers/gpu/nova-core/falcon/hal/ga102.rs @@ -52,7 +52,7 @@ fn signature_reg_fuse_version_ga102( let ucode_idx = match usize::from(ucode_id) { ucode_id @ 1..=regs::NV_FUSE_OPT_FPF_SIZE => ucode_id - 1, _ => { - dev_err!(dev, "invalid ucode id {:#x}", ucode_id); + dev_err!(dev, "invalid ucode id {:#x}\n", ucode_id); return Err(EINVAL); } }; @@ -66,7 +66,7 @@ fn signature_reg_fuse_version_ga102( } else if engine_id_mask & 0x0400 != 0 { regs::NV_FUSE_OPT_FPF_GSP_UCODE1_VERSION::read(bar, ucode_idx).data() } else { - dev_err!(dev, "unexpected engine_id_mask {:#x}", engine_id_mask); + dev_err!(dev, "unexpected engine_id_mask {:#x}\n", engine_id_mask); return Err(EINVAL); }; diff --git a/drivers/gpu/nova-core/fb.rs b/drivers/gpu/nova-core/fb.rs index 3c9cf151786c..c62abcaed547 100644 --- a/drivers/gpu/nova-core/fb.rs +++ b/drivers/gpu/nova-core/fb.rs @@ -80,7 +80,7 @@ pub(crate) fn unregister(&self, bar: &Bar0) { let _ = hal.write_sysmem_flush_page(bar, 0).inspect_err(|e| { dev_warn!( &self.device, - "failed to unregister sysmem flush page: {:?}", + "failed to unregister sysmem flush page: {:?}\n", e ) }); diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index 50d76092fbdd..9b042ef1a308 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -268,7 +268,7 @@ pub(crate) fn new<'a>( // We must wait for GFW_BOOT completion before doing any significant setup on the GPU. _: { gfw::wait_gfw_boot_completion(bar) - .inspect_err(|_| dev_err!(pdev.as_ref(), "GFW boot did not complete"))?; + .inspect_err(|_| dev_err!(pdev.as_ref(), "GFW boot did not complete\n"))?; }, sysmem_flush: SysmemFlush::register(pdev.as_ref(), bar, spec.chipset)?, diff --git a/drivers/gpu/nova-core/gsp/boot.rs b/drivers/gpu/nova-core/gsp/boot.rs index a53d80620468..da21447be663 100644 --- a/drivers/gpu/nova-core/gsp/boot.rs +++ b/drivers/gpu/nova-core/gsp/boot.rs @@ -82,7 +82,7 @@ fn run_fwsec_frts( if frts_status != 0 { dev_err!( dev, - "FWSEC-FRTS returned with error code {:#x}", + "FWSEC-FRTS returned with error code {:#x}\n", frts_status ); diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/cmdq.rs index 6f946d14868a..3c01fc6e6b6a 100644 --- a/drivers/gpu/nova-core/gsp/cmdq.rs +++ b/drivers/gpu/nova-core/gsp/cmdq.rs @@ -615,7 +615,7 @@ fn wait_for_msg(&self, timeout: Delta) -> Result<GspMessage<'_>> { { dev_err!( self.dev, - "GSP RPC: receive: Call {} - bad checksum", + "GSP RPC: receive: Call {} - bad checksum\n", header.sequence() ); return Err(EIO); diff --git a/drivers/gpu/nova-core/gsp/sequencer.rs b/drivers/gpu/nova-core/gsp/sequencer.rs index d78a30fbb70f..d6c489c39092 100644 --- a/drivers/gpu/nova-core/gsp/sequencer.rs +++ b/drivers/gpu/nova-core/gsp/sequencer.rs @@ -121,7 +121,7 @@ pub(crate) fn new(data: &[u8], dev: &device::Device) -> Result<(Self, usize)> { }; if data.len() < size { - dev_err!(dev, "Data is not enough for command"); + dev_err!(dev, "Data is not enough for command\n"); return Err(EINVAL); } @@ -320,7 +320,7 @@ fn next(&mut self) -> Option<Self::Item> { cmd_result.map_or_else( |_err| { - dev_err!(self.dev, "Error parsing command at offset {}", offset); + dev_err!(self.dev, "Error parsing command at offset {}\n", offset); None }, |(cmd, size)| { @@ -382,7 +382,7 @@ pub(crate) fn run(cmdq: &mut Cmdq, params: GspSequencerParams<'a>) -> Result { dev: params.dev, }; - dev_dbg!(sequencer.dev, "Running CPU Sequencer commands"); + dev_dbg!(sequencer.dev, "Running CPU Sequencer commands\n"); for cmd_result in sequencer.iter() { match cmd_result { @@ -390,7 +390,7 @@ pub(crate) fn run(cmdq: &mut Cmdq, params: GspSequencerParams<'a>) -> Result { Err(e) => { dev_err!( sequencer.dev, - "Error running command at index {}", + "Error running command at index {}\n", sequencer.seq_info.cmd_index ); return Err(e); @@ -400,7 +400,7 @@ pub(crate) fn run(cmdq: &mut Cmdq, params: GspSequencerParams<'a>) -> Result { dev_dbg!( sequencer.dev, - "CPU Sequencer commands completed successfully" + "CPU Sequencer commands completed successfully\n" ); Ok(()) } diff --git a/drivers/gpu/nova-core/vbios.rs b/drivers/gpu/nova-core/vbios.rs index 7c26e4a2d61c..e4eae9385f47 100644 --- a/drivers/gpu/nova-core/vbios.rs +++ b/drivers/gpu/nova-core/vbios.rs @@ -790,7 +790,7 @@ fn falcon_data_ptr(&self) -> Result<u32> { // read the 4 bytes at the offset specified in the token let offset = usize::from(token.data_offset); let bytes: [u8; 4] = self.base.data[offset..offset + 4].try_into().map_err(|_| { - dev_err!(self.base.dev, "Failed to convert data slice to array"); + dev_err!(self.base.dev, "Failed to convert data slice to array\n"); EINVAL })?; -- 2.52.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] gpu: nova-core: add missing newlines to several print strings 2026-01-07 20:16 ` [PATCH v2 2/2] gpu: nova-core: add missing newlines to several print strings Timur Tabi @ 2026-01-07 20:48 ` John Hubbard 2026-01-08 23:12 ` John Hubbard 0 siblings, 1 reply; 8+ messages in thread From: John Hubbard @ 2026-01-07 20:48 UTC (permalink / raw) To: Timur Tabi, Danilo Krummrich, Alexandre Courbot, Joel Fernandes, Miguel Ojeda, nouveau, rust-for-linux On 1/7/26 12:16 PM, Timur Tabi wrote: > Although the dev_xx!() macro calls do not technically require terminating > newlines for the format strings, they should be added anyway to maintain > consistency, both within Rust code and with the C versions. > > Signed-off-by: Timur Tabi <ttabi@nvidia.com> > --- > v2: added some more strings that were missed > > drivers/gpu/nova-core/falcon.rs | 6 +++--- > drivers/gpu/nova-core/falcon/hal/ga102.rs | 4 ++-- > drivers/gpu/nova-core/fb.rs | 2 +- > drivers/gpu/nova-core/gpu.rs | 2 +- > drivers/gpu/nova-core/gsp/boot.rs | 2 +- > drivers/gpu/nova-core/gsp/cmdq.rs | 2 +- > drivers/gpu/nova-core/gsp/sequencer.rs | 10 +++++----- > drivers/gpu/nova-core/vbios.rs | 2 +- > 8 files changed, 15 insertions(+), 15 deletions(-) OK, looks like you got them all: Codebase WITH \n WITHOUT \n % with \n ------------------------------------------------------------------- nova-core (dev_*!) 73 0 100% Reviewed-by: John Hubbard <jhubbard@nvidia.com> thanks, -- John Hubbard > > diff --git a/drivers/gpu/nova-core/falcon.rs b/drivers/gpu/nova-core/falcon.rs > index 6ae0490caffa..4e1da0b9cf4f 100644 > --- a/drivers/gpu/nova-core/falcon.rs > +++ b/drivers/gpu/nova-core/falcon.rs > @@ -466,7 +466,7 @@ fn dma_wr<F: FalconFirmware<Target = E>>( > if dma_start % DmaAddress::from(DMA_LEN) > 0 { > dev_err!( > self.dev, > - "DMA transfer start addresses must be a multiple of {}", > + "DMA transfer start addresses must be a multiple of {}\n", > DMA_LEN > ); > return Err(EINVAL); > @@ -489,11 +489,11 @@ fn dma_wr<F: FalconFirmware<Target = E>>( > .and_then(|size| size.checked_add(load_offsets.src_start)) > { > None => { > - dev_err!(self.dev, "DMA transfer length overflow"); > + dev_err!(self.dev, "DMA transfer length overflow\n"); > return Err(EOVERFLOW); > } > Some(upper_bound) if usize::from_safe_cast(upper_bound) > fw.size() => { > - dev_err!(self.dev, "DMA transfer goes beyond range of DMA object"); > + dev_err!(self.dev, "DMA transfer goes beyond range of DMA object\n"); > return Err(EINVAL); > } > Some(_) => (), > diff --git a/drivers/gpu/nova-core/falcon/hal/ga102.rs b/drivers/gpu/nova-core/falcon/hal/ga102.rs > index 69a7a95cac16..0bdfe45a2d03 100644 > --- a/drivers/gpu/nova-core/falcon/hal/ga102.rs > +++ b/drivers/gpu/nova-core/falcon/hal/ga102.rs > @@ -52,7 +52,7 @@ fn signature_reg_fuse_version_ga102( > let ucode_idx = match usize::from(ucode_id) { > ucode_id @ 1..=regs::NV_FUSE_OPT_FPF_SIZE => ucode_id - 1, > _ => { > - dev_err!(dev, "invalid ucode id {:#x}", ucode_id); > + dev_err!(dev, "invalid ucode id {:#x}\n", ucode_id); > return Err(EINVAL); > } > }; > @@ -66,7 +66,7 @@ fn signature_reg_fuse_version_ga102( > } else if engine_id_mask & 0x0400 != 0 { > regs::NV_FUSE_OPT_FPF_GSP_UCODE1_VERSION::read(bar, ucode_idx).data() > } else { > - dev_err!(dev, "unexpected engine_id_mask {:#x}", engine_id_mask); > + dev_err!(dev, "unexpected engine_id_mask {:#x}\n", engine_id_mask); > return Err(EINVAL); > }; > > diff --git a/drivers/gpu/nova-core/fb.rs b/drivers/gpu/nova-core/fb.rs > index 3c9cf151786c..c62abcaed547 100644 > --- a/drivers/gpu/nova-core/fb.rs > +++ b/drivers/gpu/nova-core/fb.rs > @@ -80,7 +80,7 @@ pub(crate) fn unregister(&self, bar: &Bar0) { > let _ = hal.write_sysmem_flush_page(bar, 0).inspect_err(|e| { > dev_warn!( > &self.device, > - "failed to unregister sysmem flush page: {:?}", > + "failed to unregister sysmem flush page: {:?}\n", > e > ) > }); > diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs > index 50d76092fbdd..9b042ef1a308 100644 > --- a/drivers/gpu/nova-core/gpu.rs > +++ b/drivers/gpu/nova-core/gpu.rs > @@ -268,7 +268,7 @@ pub(crate) fn new<'a>( > // We must wait for GFW_BOOT completion before doing any significant setup on the GPU. > _: { > gfw::wait_gfw_boot_completion(bar) > - .inspect_err(|_| dev_err!(pdev.as_ref(), "GFW boot did not complete"))?; > + .inspect_err(|_| dev_err!(pdev.as_ref(), "GFW boot did not complete\n"))?; > }, > > sysmem_flush: SysmemFlush::register(pdev.as_ref(), bar, spec.chipset)?, > diff --git a/drivers/gpu/nova-core/gsp/boot.rs b/drivers/gpu/nova-core/gsp/boot.rs > index a53d80620468..da21447be663 100644 > --- a/drivers/gpu/nova-core/gsp/boot.rs > +++ b/drivers/gpu/nova-core/gsp/boot.rs > @@ -82,7 +82,7 @@ fn run_fwsec_frts( > if frts_status != 0 { > dev_err!( > dev, > - "FWSEC-FRTS returned with error code {:#x}", > + "FWSEC-FRTS returned with error code {:#x}\n", > frts_status > ); > > diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/cmdq.rs > index 6f946d14868a..3c01fc6e6b6a 100644 > --- a/drivers/gpu/nova-core/gsp/cmdq.rs > +++ b/drivers/gpu/nova-core/gsp/cmdq.rs > @@ -615,7 +615,7 @@ fn wait_for_msg(&self, timeout: Delta) -> Result<GspMessage<'_>> { > { > dev_err!( > self.dev, > - "GSP RPC: receive: Call {} - bad checksum", > + "GSP RPC: receive: Call {} - bad checksum\n", > header.sequence() > ); > return Err(EIO); > diff --git a/drivers/gpu/nova-core/gsp/sequencer.rs b/drivers/gpu/nova-core/gsp/sequencer.rs > index d78a30fbb70f..d6c489c39092 100644 > --- a/drivers/gpu/nova-core/gsp/sequencer.rs > +++ b/drivers/gpu/nova-core/gsp/sequencer.rs > @@ -121,7 +121,7 @@ pub(crate) fn new(data: &[u8], dev: &device::Device) -> Result<(Self, usize)> { > }; > > if data.len() < size { > - dev_err!(dev, "Data is not enough for command"); > + dev_err!(dev, "Data is not enough for command\n"); > return Err(EINVAL); > } > > @@ -320,7 +320,7 @@ fn next(&mut self) -> Option<Self::Item> { > > cmd_result.map_or_else( > |_err| { > - dev_err!(self.dev, "Error parsing command at offset {}", offset); > + dev_err!(self.dev, "Error parsing command at offset {}\n", offset); > None > }, > |(cmd, size)| { > @@ -382,7 +382,7 @@ pub(crate) fn run(cmdq: &mut Cmdq, params: GspSequencerParams<'a>) -> Result { > dev: params.dev, > }; > > - dev_dbg!(sequencer.dev, "Running CPU Sequencer commands"); > + dev_dbg!(sequencer.dev, "Running CPU Sequencer commands\n"); > > for cmd_result in sequencer.iter() { > match cmd_result { > @@ -390,7 +390,7 @@ pub(crate) fn run(cmdq: &mut Cmdq, params: GspSequencerParams<'a>) -> Result { > Err(e) => { > dev_err!( > sequencer.dev, > - "Error running command at index {}", > + "Error running command at index {}\n", > sequencer.seq_info.cmd_index > ); > return Err(e); > @@ -400,7 +400,7 @@ pub(crate) fn run(cmdq: &mut Cmdq, params: GspSequencerParams<'a>) -> Result { > > dev_dbg!( > sequencer.dev, > - "CPU Sequencer commands completed successfully" > + "CPU Sequencer commands completed successfully\n" > ); > Ok(()) > } > diff --git a/drivers/gpu/nova-core/vbios.rs b/drivers/gpu/nova-core/vbios.rs > index 7c26e4a2d61c..e4eae9385f47 100644 > --- a/drivers/gpu/nova-core/vbios.rs > +++ b/drivers/gpu/nova-core/vbios.rs > @@ -790,7 +790,7 @@ fn falcon_data_ptr(&self) -> Result<u32> { > // read the 4 bytes at the offset specified in the token > let offset = usize::from(token.data_offset); > let bytes: [u8; 4] = self.base.data[offset..offset + 4].try_into().map_err(|_| { > - dev_err!(self.base.dev, "Failed to convert data slice to array"); > + dev_err!(self.base.dev, "Failed to convert data slice to array\n"); > EINVAL > })?; > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] gpu: nova-core: add missing newlines to several print strings 2026-01-07 20:48 ` John Hubbard @ 2026-01-08 23:12 ` John Hubbard 2026-01-08 23:22 ` Danilo Krummrich 0 siblings, 1 reply; 8+ messages in thread From: John Hubbard @ 2026-01-08 23:12 UTC (permalink / raw) To: Timur Tabi, Danilo Krummrich, Alexandre Courbot, Joel Fernandes, Miguel Ojeda, nouveau, rust-for-linux On 1/7/26 12:48 PM, John Hubbard wrote: > On 1/7/26 12:16 PM, Timur Tabi wrote: >> Although the dev_xx!() macro calls do not technically require terminating >> newlines for the format strings, they should be added anyway to maintain >> consistency, both within Rust code and with the C versions. >> >> Signed-off-by: Timur Tabi <ttabi@nvidia.com> >> --- >> v2: added some more strings that were missed ... > Reviewed-by: John Hubbard <jhubbard@nvidia.com> > Hi Danilo, Are you comfortable merging these two patches to drm-rust-next? I think they are ready to go at this point. thanks, -- John Hubbard ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] gpu: nova-core: add missing newlines to several print strings 2026-01-08 23:12 ` John Hubbard @ 2026-01-08 23:22 ` Danilo Krummrich 2026-01-12 14:15 ` Danilo Krummrich 0 siblings, 1 reply; 8+ messages in thread From: Danilo Krummrich @ 2026-01-08 23:22 UTC (permalink / raw) To: John Hubbard Cc: Timur Tabi, Alexandre Courbot, Joel Fernandes, Miguel Ojeda, nouveau, rust-for-linux On 1/9/26 12:12 AM, John Hubbard wrote: > Are you comfortable merging these two patches to drm-rust-next? I think > they are ready to go at this point. Yes, they are already on my apply list. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] gpu: nova-core: add missing newlines to several print strings 2026-01-08 23:22 ` Danilo Krummrich @ 2026-01-12 14:15 ` Danilo Krummrich 0 siblings, 0 replies; 8+ messages in thread From: Danilo Krummrich @ 2026-01-12 14:15 UTC (permalink / raw) To: John Hubbard Cc: Timur Tabi, Alexandre Courbot, Joel Fernandes, Miguel Ojeda, nouveau, rust-for-linux On Fri Jan 9, 2026 at 12:22 AM CET, Danilo Krummrich wrote: > On 1/9/26 12:12 AM, John Hubbard wrote: >> Are you comfortable merging these two patches to drm-rust-next? I think >> they are ready to go at this point. > > Yes, they are already on my apply list. Applied to drm-rust-next, thanks! ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] gpu: nova-core: check for overflow to DMATRFBASE1 2026-01-07 20:16 [PATCH v2 1/2] gpu: nova-core: check for overflow to DMATRFBASE1 Timur Tabi 2026-01-07 20:16 ` [PATCH v2 2/2] gpu: nova-core: add missing newlines to several print strings Timur Tabi @ 2026-01-22 23:44 ` Timur Tabi 2026-01-23 16:23 ` Danilo Krummrich 1 sibling, 1 reply; 8+ messages in thread From: Timur Tabi @ 2026-01-22 23:44 UTC (permalink / raw) To: ojeda@kernel.org, Alexandre Courbot, dakr@kernel.org, nouveau@lists.freedesktop.org, Joel Fernandes, John Hubbard, rust-for-linux@vger.kernel.org On Wed, 2026-01-07 at 14:16 -0600, Timur Tabi wrote: > The NV_PFALCON_FALCON_DMATRFBASE/1 register pair supports DMA addresses > up to 49 bits only, but the write to DMATRFBASE1 could exceed that. > To mitigate, check first that the DMA address will fit. > > Reviewed-by: John Hubbard <jhubbard@nvidia.com> > Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com> > Fixes: 69f5cd67ce41 ("gpu: nova-core: add falcon register definitions and base code") > Signed-off-by: Timur Tabi <ttabi@nvidia.com> Danilo, is it too late to make 6.20 with this patch? ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] gpu: nova-core: check for overflow to DMATRFBASE1 2026-01-22 23:44 ` [PATCH v2 1/2] gpu: nova-core: check for overflow to DMATRFBASE1 Timur Tabi @ 2026-01-23 16:23 ` Danilo Krummrich 0 siblings, 0 replies; 8+ messages in thread From: Danilo Krummrich @ 2026-01-23 16:23 UTC (permalink / raw) To: Timur Tabi Cc: ojeda@kernel.org, Alexandre Courbot, nouveau@lists.freedesktop.org, Joel Fernandes, John Hubbard, rust-for-linux@vger.kernel.org On Fri Jan 23, 2026 at 12:44 AM CET, Timur Tabi wrote: > On Wed, 2026-01-07 at 14:16 -0600, Timur Tabi wrote: >> The NV_PFALCON_FALCON_DMATRFBASE/1 register pair supports DMA addresses >> up to 49 bits only, but the write to DMATRFBASE1 could exceed that. >> To mitigate, check first that the DMA address will fit. >> >> Reviewed-by: John Hubbard <jhubbard@nvidia.com> >> Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com> >> Fixes: 69f5cd67ce41 ("gpu: nova-core: add falcon register definitions and base code") >> Signed-off-by: Timur Tabi <ttabi@nvidia.com> > > Danilo, is it too late to make 6.20 with this patch? This patch is already in drm-rust-next. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-01-23 16:23 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-01-07 20:16 [PATCH v2 1/2] gpu: nova-core: check for overflow to DMATRFBASE1 Timur Tabi 2026-01-07 20:16 ` [PATCH v2 2/2] gpu: nova-core: add missing newlines to several print strings Timur Tabi 2026-01-07 20:48 ` John Hubbard 2026-01-08 23:12 ` John Hubbard 2026-01-08 23:22 ` Danilo Krummrich 2026-01-12 14:15 ` Danilo Krummrich 2026-01-22 23:44 ` [PATCH v2 1/2] gpu: nova-core: check for overflow to DMATRFBASE1 Timur Tabi 2026-01-23 16:23 ` Danilo Krummrich
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox