提交 e062a01e 编写于 作者: J Jon Hunter 提交者: Ben Skeggs

drm/nouveau/bar/gk20a: Avoid bar teardown during init

Commit bbb163e1 ("drm/nouveau/bar: implement bar1 teardown")
introduced add a teardown helper function for BAR1. During
initialisation of the Nouveau, initially all the teardown helpers are
called once, before calling their init counterparts. For gk20a, after
the BAR1 teardown function is called, the device is hanging during the
initialisation of the FB sub-device. At this point it is unclear why
this is happening and this is still under investigation. However, this
change is preventing Tegra124 devices from booting when Nouveau is
enabled. To allow Tegra124 to boot, remove the teardown helper for
gk20a.

This is based upon a previous patch by Guillaume Tucker but limits
the workaround to only gk20a GPUs.

Fixes: bbb163e1 ("drm/nouveau/bar: implement bar1 teardown")
Reported-by: NGuillaume Tucker <guillaume.tucker@collabora.com>
Signed-off-by: NJon Hunter <jonathanh@nvidia.com>
Signed-off-by: NBen Skeggs <bskeggs@redhat.com>
上级 b554b12a
...@@ -73,7 +73,8 @@ static int ...@@ -73,7 +73,8 @@ static int
nvkm_bar_fini(struct nvkm_subdev *subdev, bool suspend) nvkm_bar_fini(struct nvkm_subdev *subdev, bool suspend)
{ {
struct nvkm_bar *bar = nvkm_bar(subdev); struct nvkm_bar *bar = nvkm_bar(subdev);
bar->func->bar1.fini(bar); if (bar->func->bar1.fini)
bar->func->bar1.fini(bar);
return 0; return 0;
} }
......
...@@ -26,7 +26,6 @@ gk20a_bar_func = { ...@@ -26,7 +26,6 @@ gk20a_bar_func = {
.dtor = gf100_bar_dtor, .dtor = gf100_bar_dtor,
.oneinit = gf100_bar_oneinit, .oneinit = gf100_bar_oneinit,
.bar1.init = gf100_bar_bar1_init, .bar1.init = gf100_bar_bar1_init,
.bar1.fini = gf100_bar_bar1_fini,
.bar1.wait = gf100_bar_bar1_wait, .bar1.wait = gf100_bar_bar1_wait,
.bar1.vmm = gf100_bar_bar1_vmm, .bar1.vmm = gf100_bar_bar1_vmm,
.flush = g84_bar_flush, .flush = g84_bar_flush,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册