Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-7]: src/sys/external/bsd/drm2/dist/drm/i915 Pull up following rev...



details:   https://anonhg.NetBSD.org/src/rev/574aedbb3a93
branches:  netbsd-7
changeset: 799795:574aedbb3a93
user:      snj <snj%NetBSD.org@localhost>
date:      Thu Feb 11 23:23:11 2016 +0000

description:
Pull up following revision(s) (requested by riastradh in ticket #1091):
        sys/external/bsd/drm2/dist/drm/i915/i915_dma.c: revisions 1.17, 1.18
Zero out the guard for bus_space_unmap before calling i915_dma_cleanup() which
calls i915_free_hws(), which then tries to unmap. Perhaps this fixes PR/50060.
--
fix the same bug on the linux side, print the error, and return the -tive
error to mimick linux.

diffstat:

 sys/external/bsd/drm2/dist/drm/i915/i915_dma.c |  8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diffs (28 lines):

diff -r 6fb30c128176 -r 574aedbb3a93 sys/external/bsd/drm2/dist/drm/i915/i915_dma.c
--- a/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c    Thu Feb 11 23:20:11 2016 +0000
+++ b/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c    Thu Feb 11 23:23:11 2016 +0000
@@ -1137,11 +1137,11 @@
            BUS_SPACE_MAP_PREFETCHABLE,
            &dev_priv->dri1.gfx_hws_cpu_bsh);
        if (ret) {
+               ring->status_page.gfx_addr = 0;
                i915_dma_cleanup(dev);
-               ring->status_page.gfx_addr = 0;
                DRM_ERROR("can not ioremap virtual address for"
-                               " G33 hw status page\n");
-               return ret;
+                   " G33 hw status page, error %d\n", ret);
+               return -ret;
        }
 
        __CTASSERT(PAGE_SIZE == 4096);
@@ -1151,8 +1151,8 @@
        dev_priv->dri1.gfx_hws_cpu_addr =
                ioremap_wc(dev_priv->gtt.mappable_base + hws->addr, 4096);
        if (dev_priv->dri1.gfx_hws_cpu_addr == NULL) {
+               ring->status_page.gfx_addr = 0;
                i915_dma_cleanup(dev);
-               ring->status_page.gfx_addr = 0;
                DRM_ERROR("can not ioremap virtual address for"
                                " G33 hw status page\n");
                return -ENOMEM;



Home | Main Index | Thread Index | Old Index