* [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