Commit 2c71fdf0 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'drm-fixes-2024-04-09' of https://gitlab.freedesktop.org/drm/kernel

Pull drm nouveau fix from Dave Airlie:
 "A previous fix to nouveau devinit on the GSP paths fixed the Turing
  but broke Ampere, I did some more digging and found the proper fix.
  Sending it early as I want to make sure it makes the next 6.8 stable
  kernels to fix the regression.

  Regular fixes will be at end of week as usual.

  nouveau:

   - regression fix for GSP display enable"

* tag 'drm-fixes-2024-04-09' of https://gitlab.freedesktop.org/drm/kernel:
  nouveau: fix devinit paths to only handle display on GSP.
parents d7a62d0a 718c4fb2
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include <subdev/bios.h> #include <subdev/bios.h>
#include <subdev/bios/init.h> #include <subdev/bios/init.h>
#include <subdev/gsp.h>
void void
gm107_devinit_disable(struct nvkm_devinit *init) gm107_devinit_disable(struct nvkm_devinit *init)
...@@ -33,10 +34,13 @@ gm107_devinit_disable(struct nvkm_devinit *init) ...@@ -33,10 +34,13 @@ gm107_devinit_disable(struct nvkm_devinit *init)
u32 r021c00 = nvkm_rd32(device, 0x021c00); u32 r021c00 = nvkm_rd32(device, 0x021c00);
u32 r021c04 = nvkm_rd32(device, 0x021c04); u32 r021c04 = nvkm_rd32(device, 0x021c04);
if (r021c00 & 0x00000001) /* gsp only wants to enable/disable display */
nvkm_subdev_disable(device, NVKM_ENGINE_CE, 0); if (!nvkm_gsp_rm(device->gsp)) {
if (r021c00 & 0x00000004) if (r021c00 & 0x00000001)
nvkm_subdev_disable(device, NVKM_ENGINE_CE, 2); nvkm_subdev_disable(device, NVKM_ENGINE_CE, 0);
if (r021c00 & 0x00000004)
nvkm_subdev_disable(device, NVKM_ENGINE_CE, 2);
}
if (r021c04 & 0x00000001) if (r021c04 & 0x00000001)
nvkm_subdev_disable(device, NVKM_ENGINE_DISP, 0); nvkm_subdev_disable(device, NVKM_ENGINE_DISP, 0);
} }
......
...@@ -41,6 +41,7 @@ r535_devinit_new(const struct nvkm_devinit_func *hw, ...@@ -41,6 +41,7 @@ r535_devinit_new(const struct nvkm_devinit_func *hw,
rm->dtor = r535_devinit_dtor; rm->dtor = r535_devinit_dtor;
rm->post = hw->post; rm->post = hw->post;
rm->disable = hw->disable;
ret = nv50_devinit_new_(rm, device, type, inst, pdevinit); ret = nv50_devinit_new_(rm, device, type, inst, pdevinit);
if (ret) if (ret)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment