aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarol Herbst <karolherbst@gmail.com>2016-09-18 06:21:56 -0400
committerBen Skeggs <bskeggs@redhat.com>2016-09-22 03:33:30 -0400
commitbad3d80fd001d3b74ab8bb3d561bc4d1b08797d3 (patch)
treea7846936bf72ab6ea8817ce65b17aa0dfc7bee0c
parent666ca3d8f19082f40745d75f3cc7cc0200ee87e3 (diff)
drm/nouveau: Revert "bus: remove cpu_coherent flag"
This reverts commit aff51175cdbf345740ec9203eff88e772af88059. The commit caused fence timeouts within nvc0_screen_destroy and most likely other places as well. The most obvious effect is, that userspace processes take minutes to actually quit. Signed-off-by: Karol Herbst <karolherbst@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/core/device.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_bo.c3
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c1
4 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/device.h b/drivers/gpu/drm/nouveau/include/nvkm/core/device.h
index 7ea8aa7ca408..6bc712f32c8b 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/core/device.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/core/device.h
@@ -175,6 +175,7 @@ struct nvkm_device_func {
175 void (*fini)(struct nvkm_device *, bool suspend); 175 void (*fini)(struct nvkm_device *, bool suspend);
176 resource_size_t (*resource_addr)(struct nvkm_device *, unsigned bar); 176 resource_size_t (*resource_addr)(struct nvkm_device *, unsigned bar);
177 resource_size_t (*resource_size)(struct nvkm_device *, unsigned bar); 177 resource_size_t (*resource_size)(struct nvkm_device *, unsigned bar);
178 bool cpu_coherent;
178}; 179};
179 180
180struct nvkm_device_quirk { 181struct nvkm_device_quirk {
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
index 6190035edfea..864323b19cf7 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -209,7 +209,8 @@ nouveau_bo_new(struct drm_device *dev, int size, int align,
209 nvbo->tile_flags = tile_flags; 209 nvbo->tile_flags = tile_flags;
210 nvbo->bo.bdev = &drm->ttm.bdev; 210 nvbo->bo.bdev = &drm->ttm.bdev;
211 211
212 nvbo->force_coherent = flags & TTM_PL_FLAG_UNCACHED; 212 if (!nvxx_device(&drm->device)->func->cpu_coherent)
213 nvbo->force_coherent = flags & TTM_PL_FLAG_UNCACHED;
213 214
214 nvbo->page_shift = 12; 215 nvbo->page_shift = 12;
215 if (drm->client.vm) { 216 if (drm->client.vm) {
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c
index b1b693219db3..62ad0300cfa5 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c
@@ -1614,6 +1614,7 @@ nvkm_device_pci_func = {
1614 .fini = nvkm_device_pci_fini, 1614 .fini = nvkm_device_pci_fini,
1615 .resource_addr = nvkm_device_pci_resource_addr, 1615 .resource_addr = nvkm_device_pci_resource_addr,
1616 .resource_size = nvkm_device_pci_resource_size, 1616 .resource_size = nvkm_device_pci_resource_size,
1617 .cpu_coherent = !IS_ENABLED(CONFIG_ARM),
1617}; 1618};
1618 1619
1619int 1620int
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
index 939682f18788..9b638bd905ff 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
@@ -245,6 +245,7 @@ nvkm_device_tegra_func = {
245 .fini = nvkm_device_tegra_fini, 245 .fini = nvkm_device_tegra_fini,
246 .resource_addr = nvkm_device_tegra_resource_addr, 246 .resource_addr = nvkm_device_tegra_resource_addr,
247 .resource_size = nvkm_device_tegra_resource_size, 247 .resource_size = nvkm_device_tegra_resource_size,
248 .cpu_coherent = false,
248}; 249};
249 250
250int 251int