Module Name: src
Committed By: riastradh
Date: Wed Jul 24 03:05:41 UTC 2013
Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [riastradh-drm2]: i915_dma.c
intel_ringbuffer.c intel_ringbuffer.h
Log Message:
Add bool virtual_start_mapped to struct intel_ring_buffer.
The nullable pointer virtual_start was replaced by a struct
drm_local_map, which can't be null (well, perhaps we could abuse one
of the fields in it for that purpose, but this is cleaner), so
virtual_start_mapped will be maintained in the place of the
possibility of a null virtual_start to indicate whether the mapping
is present.
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1.2.6 -r1.1.1.1.2.7 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c
cvs rdiff -u -r1.1.1.1.2.3 -r1.1.1.1.2.4 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c
cvs rdiff -u -r1.1.1.1.2.4 -r1.1.1.1.2.5 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.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/i915/i915_dma.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.1.1.1.2.6 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.1.1.1.2.7
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.1.1.1.2.6 Wed Jul 24 03:05:24 2013
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c Wed Jul 24 03:05:41 2013
@@ -239,11 +239,19 @@ static int i915_dma_resume(struct drm_de
DRM_DEBUG_DRIVER("%s\n", __func__);
+#ifdef __NetBSD__
+ if (!ring->virtual_start_mapped) {
+ DRM_ERROR("can not ioremap virtual address for"
+ " ring buffer\n");
+ return -ENOMEM;
+ }
+#else
if (ring->virtual_start == NULL) {
DRM_ERROR("can not ioremap virtual address for"
" ring buffer\n");
return -ENOMEM;
}
+#endif
/* Program Hardware Status Page */
if (!ring->status_page.page_addr) {
@@ -820,10 +828,17 @@ static int i915_irq_emit(struct drm_devi
if (drm_core_check_feature(dev, DRIVER_MODESET))
return -ENODEV;
+#ifdef __NetBSD__
+ if (!dev_priv || !LP_RING(dev_priv)->virtual_start_mapped) {
+ DRM_ERROR("called with no initialization\n");
+ return -EINVAL;
+ }
+#else
if (!dev_priv || !LP_RING(dev_priv)->virtual_start) {
DRM_ERROR("called with no initialization\n");
return -EINVAL;
}
+#endif
RING_LOCK_TEST_WITH_RETURN(dev, file_priv);
Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.1.1.1.2.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.1.1.1.2.4
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.1.1.1.2.3 Wed Jul 24 02:59:46 2013
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c Wed Jul 24 03:05:41 2013
@@ -1195,6 +1195,7 @@ static int intel_init_ring_buffer(struct
DRM_ERROR("failed to map ring buffer\n");
goto err_unpin;
}
+ ring->virtual_start_mapped = true;
#else
ring->virtual_start =
ioremap_wc(dev_priv->mm.gtt->gma_bus_addr + obj->gtt_offset,
@@ -1223,6 +1224,7 @@ static int intel_init_ring_buffer(struct
err_unmap:
#ifdef __NetBSD__
drm_iounmap(dev, &ring->virtual_start_map);
+ ring->virtual_start_mapped = false;
#else
iounmap(ring->virtual_start);
#endif
@@ -1255,6 +1257,7 @@ void intel_cleanup_ring_buffer(struct in
#ifdef __NetBSD__
drm_iounmap(dev, &ring->virtual_start_map);
+ ring->virtual_start_mapped = false;
#else
iounmap(ring->virtual_start);
#endif
@@ -1760,6 +1763,7 @@ int intel_render_ring_init_dri(struct dr
DRM_ERROR("cannot ioremap virtual address for ring buffer\n");
return ret;
}
+ ring->virtual_start_mapped = true;
#else
ring->virtual_start = ioremap_wc(start, size);
if (ring->virtual_start == NULL) {
Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.1.1.1.2.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.1.1.1.2.5
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.1.1.1.2.4 Wed Jul 24 02:59:46 2013
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h Wed Jul 24 03:05:41 2013
@@ -50,6 +50,7 @@ struct intel_ring_buffer {
u32 mmio_base;
#ifdef __NetBSD__
struct drm_local_map virtual_start_map;
+ bool virtual_start_mapped;
#else
void __iomem *virtual_start;
#endif