History

drm/nouveau: fix regression on original nv50 board

Xorg (and any non-DRM client really) doesn't have permission to directly touch VRAM on nv50 and up, which the fence code prior to g84 depends on. It's less invasive to temporarily grant it premission to do so, as it previously did, than it is to rework fencenv50 to use the VM. That will come later on.

Ben Skeggs committed 12 years ago

Commit f2f9a2c1 parent 5838ae61 file · +6 −1Browse files

Unified · Split

drivers/gpu/drm/nouveau/nouveau_chan.c+6−1
@@ -285,6 +285,7 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart) · 284 unmodified lines
285285 struct nouveau_software_chan *swch;
286286 struct nv_dma_v0 args = {};
287287 int ret, i;
288+ bool save;
288289
289290 nvif_object_map(chan->object);
290291
@@ -386,7 +387,11 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart) · 95 unmodified lines
386387 }
387388
388389 /* initialise synchronisation */
389− return nouveau_fence(chan->drm)->context_new(chan);
390+ save = cli->base.super;
391+ cli->base.super = true; /* hack until fencenv50 fixed */
392+ ret = nouveau_fence(chan->drm)->context_new(chan);
393+ cli->base.super = save;
394+ return ret;
390395 }
391396
392397 int