NVIDIA GPU driver infrastructure
 help / color / mirror / Atom feed
* [PATCH] gpu: nova-core: Use bar1_resource_index() in NovaCoreApi::bar1_size()
@ 2026-10-01  0:56 Alistair Popple
  2026-10-03  1:31 ` Alexandre Courbot
  2026-10-05 19:54 ` Danilo Krummrich
  0 siblings, 2 replies; 3+ messages in thread
From: Alistair Popple @ 2026-10-01  0:56 UTC (permalink / raw)
  To: nova-gpu, Danilo Krummrich, Alexandre Courbot
  Cc: John Hubbard, Alistair Popple

bar1_size() reports the length of PCI resource 1 as the size of BAR1.
That is only correct when BAR0 is a 32-bit BAR. On Blackwell, and on some
Ampere GA100 and Hopper SKUs, BAR0 is 64-bit and takes resource slots 0
and 1, pushing BAR1 to slot 2. Slot 1 is then the upper half of BAR0
rather than a BAR of its own, so NOVA_GETPARAM_VRAM_BAR_SIZE reports the
wrong size on those GPUs.

Probe handles this with the new bar1_resource_index(), which it uses to
map BAR1, so use the same lookup here.

Fixes: 7edc491f6fca ("drm: nova: Use nova-core to read VRAM_BAR_SIZE parameter")
Signed-off-by: Alistair Popple <apopple@nvidia.com>

---

Danilo,

Not sure how you want to take this, you could either take it as a
standalone patch or fold it into my series as the pre-requisite change
that introduced bar1_resource_index() 159427b21352 ("gpu: nova-core: mm:
Add BAR1 user interface") comes before my series in drm-rust-next.

 - Alistair
---
 drivers/gpu/nova-core/api.rs | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/nova-core/api.rs b/drivers/gpu/nova-core/api.rs
index f02c6c7c7e51..cc1d936b002c 100644
--- a/drivers/gpu/nova-core/api.rs
+++ b/drivers/gpu/nova-core/api.rs
@@ -44,7 +44,9 @@ pub fn spec(&self) -> &Spec {
     /// Returns the size of the PCIe BAR used for accessing VRAM, typically
     /// BAR1.
     pub fn bar1_size(&self) -> Result<u64> {
-        self.pdev.resource_len(1)
+        let bar1 = crate::driver::bar1_resource_index(self.pdev)?;
+
+        self.pdev.resource_len(bar1)
     }
 }
 
-- 
2.54.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] gpu: nova-core: Use bar1_resource_index() in NovaCoreApi::bar1_size()
  2026-10-01  0:56 [PATCH] gpu: nova-core: Use bar1_resource_index() in NovaCoreApi::bar1_size() Alistair Popple
@ 2026-10-03  1:31 ` Alexandre Courbot
  2026-10-05 19:54 ` Danilo Krummrich
  1 sibling, 0 replies; 3+ messages in thread
From: Alexandre Courbot @ 2026-10-03  1:31 UTC (permalink / raw)
  To: Alistair Popple; +Cc: nova-gpu, Danilo Krummrich, John Hubbard

On Thu Oct 1, 2026 at 9:56 AM JST, Alistair Popple wrote:
> bar1_size() reports the length of PCI resource 1 as the size of BAR1.
> That is only correct when BAR0 is a 32-bit BAR. On Blackwell, and on some
> Ampere GA100 and Hopper SKUs, BAR0 is 64-bit and takes resource slots 0
> and 1, pushing BAR1 to slot 2. Slot 1 is then the upper half of BAR0
> rather than a BAR of its own, so NOVA_GETPARAM_VRAM_BAR_SIZE reports the
> wrong size on those GPUs.
>
> Probe handles this with the new bar1_resource_index(), which it uses to
> map BAR1, so use the same lookup here.
>
> Fixes: 7edc491f6fca ("drm: nova: Use nova-core to read VRAM_BAR_SIZE parameter")
> Signed-off-by: Alistair Popple <apopple@nvidia.com>
>
> ---
>
> Danilo,
>
> Not sure how you want to take this, you could either take it as a
> standalone patch or fold it into my series as the pre-requisite change
> that introduced bar1_resource_index() 159427b21352 ("gpu: nova-core: mm:
> Add BAR1 user interface") comes before my series in drm-rust-next.
>
>  - Alistair
> ---
>  drivers/gpu/nova-core/api.rs | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/nova-core/api.rs b/drivers/gpu/nova-core/api.rs
> index f02c6c7c7e51..cc1d936b002c 100644
> --- a/drivers/gpu/nova-core/api.rs
> +++ b/drivers/gpu/nova-core/api.rs
> @@ -44,7 +44,9 @@ pub fn spec(&self) -> &Spec {
>      /// Returns the size of the PCIe BAR used for accessing VRAM, typically
>      /// BAR1.
>      pub fn bar1_size(&self) -> Result<u64> {
> -        self.pdev.resource_len(1)
> +        let bar1 = crate::driver::bar1_resource_index(self.pdev)?;
> +
> +        self.pdev.resource_len(bar1)

I guess at some point we will want an iterator on `pci::Device` that
returns a `BarInfo` type or something? Zhi has some similar logic in his
SR-IOV series (method `vf_bars` of [1]) and this seems to be a common
mistake code makes when iterating BARs.

Just an idea for a future patch, this one is of course correct.

Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>

[1] https://lore.kernel.org/all/20260906060404.3336193-2-zhiw@nvidia.com/

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] gpu: nova-core: Use bar1_resource_index() in NovaCoreApi::bar1_size()
  2026-10-01  0:56 [PATCH] gpu: nova-core: Use bar1_resource_index() in NovaCoreApi::bar1_size() Alistair Popple
  2026-10-03  1:31 ` Alexandre Courbot
@ 2026-10-05 19:54 ` Danilo Krummrich
  1 sibling, 0 replies; 3+ messages in thread
From: Danilo Krummrich @ 2026-10-05 19:54 UTC (permalink / raw)
  To: Alistair Popple
  Cc: nova-gpu, Danilo Krummrich, Alexandre Courbot, John Hubbard

On Thu,  1 Oct 2026 10:56:15 +1000, Alistair Popple wrote:
> [PATCH] gpu: nova-core: Use bar1_resource_index() in NovaCoreApi::bar1_size()

Applied, thanks!

  Branch: drm-rust-next
  Tree:   https://gitlab.freedesktop.org/drm/rust/kernel.git

[1/1] gpu: nova-core: Use bar1_resource_index() in NovaCoreApi::bar1_size()
      commit: e56059016a87

      [ Import the driver module. - Danilo ]

The patch will appear in the next linux-next integration (typically within 24
hours on weekdays).

The patch is queued up for the upcoming merge window for the next major kernel
release.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-10-05 19:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-01  0:56 [PATCH] gpu: nova-core: Use bar1_resource_index() in NovaCoreApi::bar1_size() Alistair Popple
2026-10-03  1:31 ` Alexandre Courbot
2026-10-05 19:54 ` Danilo Krummrich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox