Re: [PATCH] gpu: nova-core: fix three clippy::precedence warnings

From: Alexandre Courbot

Date: Sat Apr 04 2026 - 01:47:48 EST


On Sat Apr 4, 2026 at 11:58 AM JST, John Hubbard wrote:
> Clippy warns when shifts and bitwise-OR are mixed without parentheses,
> because the relative precedence of << and | is easy to misread. This was
> causing 3 warnings in drm-rust-next.

These don't manifest for me (rustc 1.94.1), can you share more about the
build context?

>
> For read_sysmem_flush_page_ga100(), add explicit parentheses.
>
> For the PCI ROM header parsing, replace the manual byte-shifting with
> u32::from_le_bytes(), which both fixes the warning and is clearer about
> the intended byte order.
>
> Signed-off-by: John Hubbard <jhubbard@xxxxxxxxxx>
> ---
> drivers/gpu/nova-core/fb/hal/ga100.rs | 7 ++++---
> drivers/gpu/nova-core/vbios.rs | 7 +------
> 2 files changed, 5 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/nova-core/fb/hal/ga100.rs b/drivers/gpu/nova-core/fb/hal/ga100.rs
> index 1c03783cddef..b5d0f04198f0 100644
> --- a/drivers/gpu/nova-core/fb/hal/ga100.rs
> +++ b/drivers/gpu/nova-core/fb/hal/ga100.rs
> @@ -17,9 +17,10 @@
> struct Ga100;
>
> pub(super) fn read_sysmem_flush_page_ga100(bar: &Bar0) -> u64 {
> - u64::from(bar.read(regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR).adr_39_08()) << FLUSH_SYSMEM_ADDR_SHIFT
> - | u64::from(bar.read(regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR_HI).adr_63_40())
> - << FLUSH_SYSMEM_ADDR_SHIFT_HI
> + (u64::from(bar.read(regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR).adr_39_08())
> + << FLUSH_SYSMEM_ADDR_SHIFT)
> + | (u64::from(bar.read(regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR_HI).adr_63_40())
> + << FLUSH_SYSMEM_ADDR_SHIFT_HI)
> }
>
> pub(super) fn write_sysmem_flush_page_ga100(bar: &Bar0, addr: u64) {
> diff --git a/drivers/gpu/nova-core/vbios.rs b/drivers/gpu/nova-core/vbios.rs
> index 3e3fa5b72524..ebda28e596c5 100644
> --- a/drivers/gpu/nova-core/vbios.rs
> +++ b/drivers/gpu/nova-core/vbios.rs
> @@ -507,12 +507,7 @@ fn new(dev: &device::Device, data: &[u8]) -> Result<Self> {
>
> if data.len() >= 30 {
> // Read size_of_block at offset 0x1A.
> - size_of_block = Some(
> - u32::from(data[29]) << 24
> - | u32::from(data[28]) << 16
> - | u32::from(data[27]) << 8
> - | u32::from(data[26]),
> - );
> + size_of_block = Some(u32::from_le_bytes([data[26], data[27], data[28], data[29]]));

This chunk looks like it should be its own patch as it is valuable
regardless of the clippy warnings.