Skip to content

Commit

Permalink
nouveau: fix devinit paths to only handle display on GSP.
Browse files Browse the repository at this point in the history
[ Upstream commit 718c4fb ]

This reverts:
nouveau/gsp: don't check devinit disable on GSP.
and applies a further fix.

It turns out the open gpu driver, checks this register,
but only for display.

Match that behaviour and in the turing path only disable
the display block. (ampere already only does displays).

Fixes: 5d4e8ae ("nouveau/gsp: don't check devinit disable on GSP.")
Reviewed-by: Danilo Krummrich <dakr@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240408064243.2219527-1-airlied@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
airlied authored and gregkh committed Apr 13, 2024
1 parent 96e08fb commit 4d5ee18
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
12 changes: 8 additions & 4 deletions drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm107.c
Expand Up @@ -25,6 +25,7 @@

#include <subdev/bios.h>
#include <subdev/bios/init.h>
#include <subdev/gsp.h>

void
gm107_devinit_disable(struct nvkm_devinit *init)
Expand All @@ -33,10 +34,13 @@ gm107_devinit_disable(struct nvkm_devinit *init)
u32 r021c00 = nvkm_rd32(device, 0x021c00);
u32 r021c04 = nvkm_rd32(device, 0x021c04);

if (r021c00 & 0x00000001)
nvkm_subdev_disable(device, NVKM_ENGINE_CE, 0);
if (r021c00 & 0x00000004)
nvkm_subdev_disable(device, NVKM_ENGINE_CE, 2);
/* gsp only wants to enable/disable display */
if (!nvkm_gsp_rm(device->gsp)) {
if (r021c00 & 0x00000001)
nvkm_subdev_disable(device, NVKM_ENGINE_CE, 0);
if (r021c00 & 0x00000004)
nvkm_subdev_disable(device, NVKM_ENGINE_CE, 2);
}
if (r021c04 & 0x00000001)
nvkm_subdev_disable(device, NVKM_ENGINE_DISP, 0);
}
Expand Down
1 change: 1 addition & 0 deletions drivers/gpu/drm/nouveau/nvkm/subdev/devinit/r535.c
Expand Up @@ -41,6 +41,7 @@ r535_devinit_new(const struct nvkm_devinit_func *hw,

rm->dtor = r535_devinit_dtor;
rm->post = hw->post;
rm->disable = hw->disable;

ret = nv50_devinit_new_(rm, device, type, inst, pdevinit);
if (ret)
Expand Down

0 comments on commit 4d5ee18

Please sign in to comment.