Date: Thu, 19 Mar 2009 22:32:19 -0500 (CDT) From: Greg Rivers <gcr+freebsd-stable@tharned.org> To: Robert Noland <rnoland@FreeBSD.org> Cc: freebsd-x11 <freebsd-x11@FreeBSD.org>, freebsd-stable <freebsd-stable@FreeBSD.org> Subject: Re: [HEADS UP] drm merged to -STABLE Message-ID: <alpine.BSF.2.00.0903192221540.1006@packrat.tharned.org> In-Reply-To: <1237499597.1732.329.camel@balrog.2hip.net> References: <1231599679.1837.13.camel@wombat.2hip.net> <alpine.BSF.2.00.0903171011540.30152@roadkill.tharned.org> <1237318671.1728.7.camel@balrog.2hip.net> <alpine.BSF.2.00.0903171801250.34773@roadkill.tharned.org> <1237395643.1738.3.camel@balrog.2hip.net> <alpine.BSF.2.00.0903181749330.47320@roadkill.tharned.org> <1237429357.1738.61.camel@balrog.2hip.net> <alpine.BSF.2.00.0903191419320.58165@roadkill.tharned.org> <1237499597.1732.329.camel@balrog.2hip.net>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On Thu, 19 Mar 2009, Robert Noland wrote: > On Thu, 2009-03-19 at 15:01 -0500, Greg Rivers wrote: >> On Wed, 18 Mar 2009, Robert Noland wrote: >> >>> Ok, so it isn't the gart caching... Can you get me a pointer to a >>> screenshot? >>> >> >> fetch http://www.tharned.org/rv380-drm-issue.tbz >> This archive contains various logs and system configuration files as well >> as screen shot images. Look at the README file for a description of the >> images. >> >> >>> What is garbled exactly? Is the damage constrained to specific windows >>> or it it the entire framebuffer? >>> >> >> The entire frame buffer is garbled; switching to syscons and back seems to >> change the way it's garbled. However, the interior of an xterm window is >> never garbled. I'm running a dual-head configuration with the frame >> buffer spanning both monitors. > > Ok, I thought that I had already fixed this up, but I missed this > spot... Please try this patch. > It's still garbled with this patch too. Any other ideas? Just let me know when it's time for me to buy a different video card. :-) -- Greg Rivers [-- Attachment #2 --] Index: dev/drm/ati_pcigart.c =================================================================== --- dev/drm/ati_pcigart.c (revision 190096) +++ dev/drm/ati_pcigart.c (working copy) @@ -75,18 +75,15 @@ NULL, NULL, /* filtfunc, filtfuncargs */ gart_info->table_size, 1, /* maxsize, nsegs */ gart_info->table_size, /* maxsegsize */ - BUS_DMA_ALLOCNOW, NULL, NULL, /* flags, lockfunc, lockfuncargs */ + 0, NULL, NULL, /* flags, lockfunc, lockfuncargs */ &dmah->tag); if (ret != 0) { free(dmah, DRM_MEM_DMA); return ENOMEM; } - flags = BUS_DMA_NOWAIT | BUS_DMA_ZERO; - if (gart_info->gart_reg_if == DRM_ATI_GART_IGP) - flags |= BUS_DMA_NOCACHE; - - ret = bus_dmamem_alloc(dmah->tag, &dmah->vaddr, flags, &dmah->map); + ret = bus_dmamem_alloc(dmah->tag, &dmah->vaddr, + BUS_DMA_WAITOK | BUS_DMA_ZERO, &dmah->map); if (ret != 0) { bus_dma_tag_destroy(dmah->tag); free(dmah, DRM_MEM_DMA); @@ -94,8 +91,12 @@ } DRM_LOCK(); + flags = BUS_DMA_NOWAIT; + if (gart_info->gart_reg_if == DRM_ATI_GART_IGP) + flags |= BUS_DMA_NOCACHE; + ret = bus_dmamap_load(dmah->tag, dmah->map, dmah->vaddr, - gart_info->table_size, drm_ati_alloc_pcigart_table_cb, dmah, 0); + gart_info->table_size, drm_ati_alloc_pcigart_table_cb, dmah, flags); if (ret != 0) { bus_dmamem_free(dmah->tag, dmah->vaddr, dmah->map); bus_dma_tag_destroy(dmah->tag);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.0903192221540.1006>
