Module Name: src
Committed By: riastradh
Date: Wed Feb 10 17:10:47 UTC 2016
Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo:
nouveau_engine_fifo_base.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/engine: fifo.h
Log Message:
dtor gets called if ctor fails. Make it work in that case.
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_base.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/engine/fifo.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_base.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_base.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_base.c:1.3 Sat Aug 23 08:03:33 2014
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_base.c Wed Feb 10 17:10:47 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_engine_fifo_base.c,v 1.3 2014/08/23 08:03:33 riastradh Exp $ */
+/* $NetBSD: nouveau_engine_fifo_base.c,v 1.4 2016/02/10 17:10:47 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_base.c,v 1.3 2014/08/23 08:03:33 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_base.c,v 1.4 2016/02/10 17:10:47 riastradh Exp $");
#include <core/client.h>
#include <core/object.h>
@@ -98,6 +98,7 @@ nouveau_fifo_channel_create_(struct nouv
addr + (chan->chid * size), size, 0, &chan->bsh);
if (ret)
return ret;
+ chan->mapped = true;
#else
chan->user = ioremap(nv_device_resource_start(device, bar) + addr +
(chan->chid * size), size);
@@ -118,7 +119,10 @@ nouveau_fifo_channel_destroy(struct nouv
unsigned long flags;
#ifdef __NetBSD__
- bus_space_unmap(chan->bst, chan->bsh, chan->size);
+ if (chan->mapped) {
+ bus_space_unmap(chan->bst, chan->bsh, chan->size);
+ chan->mapped = false;
+ }
#else
iounmap(chan->user);
#endif
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/engine/fifo.h
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/engine/fifo.h:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/engine/fifo.h:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/engine/fifo.h:1.3 Sun Oct 18 15:42:00 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/engine/fifo.h Wed Feb 10 17:10:47 2016
@@ -12,6 +12,7 @@ struct nouveau_fifo_chan {
#ifdef __NetBSD__
bus_space_tag_t bst;
bus_space_handle_t bsh;
+ bool mapped;
#else
void __iomem *user;
#endif