File 0128-drm-nouveau-bar-gf100-fix-access-to-upper-half-of-BA.patch of Package drm.openSUSE_Leap_42.3_Update

From ae8faca6e2e727105f8ed485783ea25a25a425ee Mon Sep 17 00:00:00 2001
From: Ben Skeggs <>
Date: Tue, 25 Jul 2017 11:06:47 +1000
Subject: [PATCH] drm/nouveau/bar/gf100: fix access to upper half of BAR2
Git-commit: 38bcb208f60924a031b9f809f7cd252ea4a94e5f
Patch-mainline: 4.13-rc3
References: bsc#1041744

commit 38bcb208f60924a031b9f809f7cd252ea4a94e5f upstream.

Bit 30 being set causes the upper half of BAR2 to stay in physical mode,
mapped over the end of VRAM, even when the rest of the BAR has been set
to virtual mode.

We inherited our initial value from RM, but I'm not aware of any reason
we need to keep it that way.

This fixes severe GPU hang/lockup issues revealed by Wayland on F26.

Shout-out to NVIDIA for the quick response with the potential cause!

Signed-off-by: Ben Skeggs <>
Signed-off-by: Greg Kroah-Hartman <>
Acked-by: Takashi Iwai <>

 drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c
@@ -129,7 +129,7 @@ gf100_bar_init(struct nvkm_bar *base)
 	if (bar->bar[0].mem) {
 		addr = nvkm_memory_addr(bar->bar[0].mem) >> 12;
-		nvkm_wr32(device, 0x001714, 0xc0000000 | addr);
+		nvkm_wr32(device, 0x001714, 0x80000000 | addr);
 	return 0;