search for: nouveau_bo_wr32

Displaying 20 results from an estimated 53 matches for "nouveau_bo_wr32".

Did you mean: nouveau_bo_rd32
2014 Sep 22
2
[PATCH] drm/nv84+: fix fence context seqno's
.../drivers/gpu/drm/nouveau/nv84_fence.c index 7b372a68aa4e..4138db4d8291 100644 --- a/drivers/gpu/drm/nouveau/nv84_fence.c +++ b/drivers/gpu/drm/nouveau/nv84_fence.c @@ -120,6 +120,7 @@ nv84_fence_context_del(struct nouveau_channel *chan) nouveau_bo_vma_del(bo, &fctx->dispc_vma[i]); } + nouveau_bo_wr32(priv->bo, chan->chid * 16 / 4, fctx->base.sequence); nouveau_bo_vma_del(priv->bo, &fctx->vma_gart); nouveau_bo_vma_del(priv->bo, &fctx->vma); nouveau_fence_context_del(&fctx->base); @@ -159,8 +160,6 @@ nv84_fence_context_new(struct nouveau_channel *chan)...
2013 Feb 19
1
[PATCH] drm/nouveau: fix suspend bug in nvc0 fence implementation
...d != NULL; @@ -177,10 +178,11 @@ nvc0_fence_resume(struct nouveau_drm *drm) struct nouveau_fifo *pfifo = nouveau_fifo(drm->device); struct nvc0_fence_priv *priv = drm->fence; int i; + u32 chan = pfifo->max + 1; if (priv->suspend) { - for (i = 0; i <= pfifo->max; i++) - nouveau_bo_wr32(priv->bo, i, priv->suspend[i]); + for (i = 0; i < chan; i++) + nouveau_bo_wr32(priv->bo, i * 16/4, priv->suspend[i]); vfree(priv->suspend); priv->suspend = NULL; }
2013 Sep 02
2
[PATCH] drm/nv84-: write fence value on exit, and restore value on init.
...-122,8 +122,11 @@ nv84_fence_context_del(struct nouveau_channel *chan) struct drm_device *dev = chan->drm->dev; struct nv84_fence_priv *priv = chan->drm->fence; struct nv84_fence_chan *fctx = chan->fence; + struct nouveau_fifo_chan *fifo = (void *)chan->object; int i; + nouveau_bo_wr32(priv->bo, fifo->chid * 16/4, fctx->base.sequence); + for (i = 0; i < dev->mode_config.num_crtc; i++) { struct nouveau_bo *bo = nv50_display_crtc_sema(dev, i); nouveau_bo_vma_del(bo, &fctx->dispc_vma[i]); @@ -168,7 +171,7 @@ nv84_fence_context_new(struct nouveau_channel...
2015 May 21
8
[Bug 90569] New: GUI freezes after startup of Ubuntu 15.04. on Aspire 7520p [BUG: unable to handle kernel paging request at f84c8000]
...ds of the clock with the log-entries and they match - always) ============================================================================ Apr 29 22:16:06 h kernel: [ 78.633151] BUG: unable to handle kernel paging request at f84c8000 Apr 29 22:16:06 h kernel: [ 78.633265] IP: [<f8fb6be9>] nouveau_bo_wr32+0x29/0x60 [nouveau] Apr 29 22:16:06 h kernel: [ 78.633430] *pdpt = 0000000001b79001 *pde = 0000000034c88067 *pte = 0000000000000000 Apr 29 22:16:06 h kernel: [ 78.633546] Oops: 0002 [#1] SMP Apr 29 22:16:06 h kernel: [ 78.633596] Modules linked in: ctr ccm rfcomm bnep snd_hda_codec_realtek...
2009 Aug 17
8
drm bo accessors etc. v2
Revised patch set v2. [PATCH 1/8] drm/nouveau: bo read/write wrappers for nv04_crtc.c [PATCH 2/8] drm/nouveau: use bo accessors for push buffers [PATCH 3/8] drm/nouveau: OUT_RINGp - optimize OUT_RING loops [PATCH 4/8] drm/nv50: proper notifier_bo access in nv50_display_vblank_crtc_handler() [PATCH 5/8] drm/nouveau: access fbcon notifier via bo accessors [PATCH 6/8] drm/nouveau: screen_base and
2010 Mar 01
6
[Bug 26813] New: Nouveau ioremap WARNING with current Linus' git tree
...[ 14.072435] [<c10b6e4b>] ? create_object+0x1fa/0x207 [ 14.072443] [<c101d464>] ioremap_wc+0x1e/0x28 [ 14.072455] [<f81a19d0>] ? ttm_mem_reg_ioremap+0x70/0x93 [ttm] [ 14.072467] [<f81a19d0>] ttm_mem_reg_ioremap+0x70/0x93 [ttm] [ 14.072498] [<f8217588>] ? nouveau_bo_wr32+0x3ab/0x735 [nouveau] [ 14.072510] [<f81a1f74>] ttm_bo_move_memcpy+0x63/0x257 [ttm] [ 14.072528] [<f8163619>] ? drm_mm_put_block+0x161/0x228 [drm] [ 14.072538] [<c10b3130>] ? kmem_cache_alloc_notrace+0xa5/0xb1 [ 14.072555] [<f8163807>] ? drm_mm_add_space_to_tail+...
2012 Dec 26
0
[PATCH] drm/nv17-50: restore fence buffer on resume
...7ae7f97..0619c02 100644 --- a/drivers/gpu/drm/nouveau/nv10_fence.c +++ b/drivers/gpu/drm/nouveau/nv10_fence.c @@ -162,6 +162,13 @@ nv10_fence_destroy(struct nouveau_drm *drm) kfree(priv); } +void nv17_fence_resume(struct nouveau_drm *drm) +{ + struct nv10_fence_priv *priv = drm->fence; + + nouveau_bo_wr32(priv->bo, 0, priv->sequence); +} + int nv10_fence_create(struct nouveau_drm *drm) { @@ -197,6 +204,8 @@ nv10_fence_create(struct nouveau_drm *drm) if (ret == 0) { nouveau_bo_wr32(priv->bo, 0x000, 0x00000000); priv->base.sync = nv17_fence_sync; + + priv->base.resume =...
2023 Aug 23
1
[PATCH drm-misc-next v2] drm/nouveau: uapi: don't pass NO_PREFETCH flag implicitly
...bool no_prefetch) { struct nvif_user *user = &chan->drm->client.device.user; struct nouveau_bo *pb = chan->push.buffer; int ip = (chan->dma.ib_put * 2) + chan->dma.ib_base; BUG_ON(chan->dma.ib_free < 1); + WARN_ON(length > NV50_DMA_PUSH_MAX_LENGTH); nouveau_bo_wr32(pb, ip++, lower_32_bits(offset)); - nouveau_bo_wr32(pb, ip++, upper_32_bits(offset) | length << 8); + nouveau_bo_wr32(pb, ip++, upper_32_bits(offset) | length << 8 | + (no_prefetch ? (1 << 31) : 0)); chan->dma.ib_put = (chan->dma.ib_put + 1) & chan->dma.ib_max;...
2023 Aug 23
1
[PATCH drm-misc-next] drm/nouveau: uapi: don't pass NO_PREFETCH flag implicitly
...han->drm->client.device.user; > struct nouveau_bo *pb = chan->push.buffer; > int ip = (chan->dma.ib_put * 2) + chan->dma.ib_base; > > BUG_ON(chan->dma.ib_free < 1); > + WARN_ON(length > NV50_DMA_PUSH_MAX_LENGTH); > > nouveau_bo_wr32(pb, ip++, lower_32_bits(offset)); > - nouveau_bo_wr32(pb, ip++, upper_32_bits(offset) | length << 8); > + nouveau_bo_wr32(pb, ip++, upper_32_bits(offset) | length << 8 | > + (prefetch ? 0 : (1 << 31))); > It feels a bit weird to be in...
2009 Aug 04
5
[PATCH 1/6] drm/nouveau: bo read/write wrappers for nv04_crtc.c
...gt;kmap); } +u32 +nouveau_bo_rd32(struct nouveau_bo *nvbo, unsigned index) +{ + bool is_iomem; + u32 *mem = ttm_kmap_obj_virtual(&nvbo->kmap, &is_iomem); + mem = &mem[index]; + if (is_iomem) + return ioread32_native((void __force __iomem *)mem); + else + return *mem; +} + +void +nouveau_bo_wr32(struct nouveau_bo *nvbo, unsigned index, u32 val) +{ + bool is_iomem; + u32 *mem = ttm_kmap_obj_virtual(&nvbo->kmap, &is_iomem); + mem = &mem[index]; + if (is_iomem) + iowrite32_native(val, (void __force __iomem *)mem); + else + *mem = val; +} static struct ttm_backend * nouveau_...
2023 Aug 22
2
[PATCH drm-misc-next] drm/nouveau: uapi: don't pass NO_PREFETCH flag implicitly
..., + bool prefetch) { struct nvif_user *user = &chan->drm->client.device.user; struct nouveau_bo *pb = chan->push.buffer; int ip = (chan->dma.ib_put * 2) + chan->dma.ib_base; BUG_ON(chan->dma.ib_free < 1); + WARN_ON(length > NV50_DMA_PUSH_MAX_LENGTH); nouveau_bo_wr32(pb, ip++, lower_32_bits(offset)); - nouveau_bo_wr32(pb, ip++, upper_32_bits(offset) | length << 8); + nouveau_bo_wr32(pb, ip++, upper_32_bits(offset) | length << 8 | + (prefetch ? 0 : (1 << 31))); chan->dma.ib_put = (chan->dma.ib_put + 1) & chan->dma.ib_max; d...
2010 Feb 20
2
[PATCH] drm/nouveau: fix missing spin_unlock in failure path
...uct drm_device *dev, spin_lock(&nvbo->bo.lock); ret = ttm_bo_wait(&nvbo->bo, false, false, false); + spin_unlock(&nvbo->bo.lock); if (ret) { NV_ERROR(dev, "reloc wait_idle failed: %d\n", ret); break; } - spin_unlock(&nvbo->bo.lock); nouveau_bo_wr32(nvbo, r->reloc_bo_offset >> 2, data); } -- 1.6.6.1.476.g01ddb
2013 Sep 04
0
[PATCH] drm/nv84-: write fence value on exit, and restore value on init.
...n) > struct drm_device *dev = chan->drm->dev; > struct nv84_fence_priv *priv = chan->drm->fence; > struct nv84_fence_chan *fctx = chan->fence; > + struct nouveau_fifo_chan *fifo = (void *)chan->object; > int i; > > + nouveau_bo_wr32(priv->bo, fifo->chid * 16/4, fctx->base.sequence); > + > for (i = 0; i < dev->mode_config.num_crtc; i++) { > struct nouveau_bo *bo = nv50_display_crtc_sema(dev, i); > nouveau_bo_vma_del(bo, &fctx->dispc_vma[i]); > @@ -168,...
2014 Sep 22
0
[PATCH] drm/nv84+: fix fence context seqno's
...t; index 7b372a68aa4e..4138db4d8291 100644 > --- a/drivers/gpu/drm/nouveau/nv84_fence.c > +++ b/drivers/gpu/drm/nouveau/nv84_fence.c > @@ -120,6 +120,7 @@ nv84_fence_context_del(struct nouveau_channel *chan) > nouveau_bo_vma_del(bo, &fctx->dispc_vma[i]); > } > > + nouveau_bo_wr32(priv->bo, chan->chid * 16 / 4, fctx->base.sequence); > nouveau_bo_vma_del(priv->bo, &fctx->vma_gart); > nouveau_bo_vma_del(priv->bo, &fctx->vma); > nouveau_fence_context_del(&fctx->base); > @@ -159,8 +160,6 @@ nv84_fence_context_new(struct nouve...
2014 May 19
3
[PATCH 4/4] drm/nouveau: introduce CPU cache flushing macro
...ouveau_bo *nvbo, unsigned index, u16 val) > mem = &mem[index]; > if (is_iomem) > iowrite16_native(val, (void __force __iomem *)mem); > - else > + else { > *mem = val; > + nv_cpu_cache_flush_area(mem, 2); > + } > } > > u32 > @@ -461,8 +463,10 @@ nouveau_bo_wr32(struct nouveau_bo *nvbo, unsigned index, u32 val) > mem = &mem[index]; > if (is_iomem) > iowrite32_native(val, (void __force __iomem *)mem); > - else > + else { > *mem = val; > + nv_cpu_cache_flush_area(mem, 4); > + } This looks rather like a sledgehammer to...
2009 Dec 25
1
[PATCH] drm/nv50: synchronize user channel after buffer object move on kernel channel
...*ref = NULL; + uint32_t offset = 0; + + nouveau_fence_update(kchan); + + if (nouveau_gpuobj_ref_find(chan, NvNotify1, &ref)) + return -ENOENT; + + if (nouveau_notifier_offset(ref->gpuobj, &offset)) + return -EINVAL; + + if (sequence > kchan->fence.sequence_ack) /* not done */ + nouveau_bo_wr32(chan->notifier_bo, offset >> 2, 0x22222222); + else /* done */ + nouveau_bo_wr32(chan->notifier_bo, offset >> 2, 0x11111111); + + return 0; +} + +int +nouveau_fence_semaphore_flush(struct nouveau_channel *chan, int channel) +{ + struct drm_device *dev = chan->dev; + struct drm...
2014 Sep 23
2
[PATCH] drm/nv84+: fix fence context seqno's
...t;> --- a/drivers/gpu/drm/nouveau/nv84_fence.c >> +++ b/drivers/gpu/drm/nouveau/nv84_fence.c >> @@ -120,6 +120,7 @@ nv84_fence_context_del(struct nouveau_channel *chan) >> nouveau_bo_vma_del(bo, &fctx->dispc_vma[i]); >> } >> >> + nouveau_bo_wr32(priv->bo, chan->chid * 16 / 4, fctx->base.sequence); >> nouveau_bo_vma_del(priv->bo, &fctx->vma_gart); >> nouveau_bo_vma_del(priv->bo, &fctx->vma); >> nouveau_fence_context_del(&fctx->base); >> @@ -159,8 +160,6 @@ nv84_fe...
2013 Sep 02
2
[PATCH] drm/nouveau: fix command submission to use vmalloc for big allocations
...c(size); if (!mem) return ERR_PTR(-ENOMEM); - if (DRM_COPY_FROM_USER(mem, userptr, nmemb * size)) { - kfree(mem); + if (DRM_COPY_FROM_USER(mem, userptr, size)) { + u_free(mem); return ERR_PTR(-EFAULT); } @@ -681,7 +697,7 @@ nouveau_gem_pushbuf_reloc_apply(struct nouveau_cli *cli, nouveau_bo_wr32(nvbo, r->reloc_bo_offset >> 2, data); } - kfree(reloc); + u_free(reloc); return ret; } @@ -743,7 +759,7 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data, bo = u_memcpya(req->buffers, req->nr_buffers, sizeof(*bo)); if (IS_ERR(bo)) { - kfree(push); + u_f...
2014 May 19
2
[PATCH 4/4] drm/nouveau: introduce CPU cache flushing macro
...t; > iowrite16_native(val, (void __force __iomem *)mem); > > > - else > > > + else { > > > *mem = val; > > > + nv_cpu_cache_flush_area(mem, 2); > > > + } > > > } > > > > > > u32 > > > @@ -461,8 +463,10 @@ nouveau_bo_wr32(struct nouveau_bo *nvbo, unsigned index, u32 val) > > > mem = &mem[index]; > > > if (is_iomem) > > > iowrite32_native(val, (void __force __iomem *)mem); > > > - else > > > + else { > > > *mem = val; > > > + nv_cpu_cache_f...
2009 Dec 27
3
[PATCH 1/2] drm/nv50: align size of buffer object to the right boundaries.
- Depth and stencil buffers are supposed to be large enough in general. Signed-off-by: Maarten Maathuis <madman2003 at gmail.com> --- drivers/gpu/drm/nouveau/nouveau_bo.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c index e342a41..9fc4bd6 100644 ---