[PATCH] drm/nouveau/mmu/nv4a: use nv04 mmu rather than the nv44 one
Ben Skeggs
skeggsb at gmail.com
Sun Mar 26 22:14:32 UTC 2017
On 03/19/2017 06:23 AM, Ilia Mirkin wrote:
> The NV4A (aka NV44A) is an oddity in the family. It only comes in AGP
> and PCI varieties, rather than a core PCIE chip with a bridge for
> AGP/PCI as necessary. As a result, it appears that the MMU is also
> non-functional. For AGP cards, the vast majority of the NV4A lineup,
> this worked out since we force AGP cards to use the nv04 mmu. However
> for PCI variants, this did not work.
>
> Switching to the NV04 MMU makes it work like a charm. Thanks to mwk for
> the suggestion. This should be a no-op for NV4A AGP boards, as they were
> using it already.
This is probably fine for NV4A in that case (more below).
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70388
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Cc: stable at vger.kernel.org
> ---
>
> OK, so I'm not 100% sure about my claims, but I don't have the necessary
> hardware to test it out. Right now, AGP nv41+ boards are getting the nv04
> mmu, while PCI nv41+ boards are getting the PCIE one. Perhaps this works
> for them, however such boards are rare, and I don't have one. Perhaps all
> PCI boards should be routed to the nv04 mmu, not just the NV4A ones.
I wonder if it wouldn't be useful to also change the checks in nv41/nv44
implementations to be "if (device->type != NVKM_DEVICE_PCIE ..." too?
Ben.
>
> drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
> index 273562d..0fc41db 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
> @@ -714,7 +714,7 @@ nv4a_chipset = {
> .i2c = nv04_i2c_new,
> .imem = nv40_instmem_new,
> .mc = nv44_mc_new,
> - .mmu = nv44_mmu_new,
> + .mmu = nv04_mmu_new,
> .pci = nv40_pci_new,
> .therm = nv40_therm_new,
> .timer = nv41_timer_new,
>
More information about the dri-devel
mailing list