r6xx-r7xx drm patch and stuff

Robert Noland rnoland at FreeBSD.org
Sun Feb 22 20:32:50 PST 2009


On Sun, 2009-02-22 at 17:18 -0800, vehemens wrote:
> Have drm running with my R630, but there is some type of performance problem 
> (i.e. slow windows).
> 
> Given that I don't have the time to work the issue right now, here is my 
> summary for those that want to give it a try.
> 
> If you start with drm git master 1) incorporate the local freebsd updates, 2) 
> incorporate the radeon updates from drm git r6xx-r7xx-support, and 3) add the 
> attached patch, you will have what I have.
> 
> For the video drivers, I have only tried the xf86-video-ati r6xx-r7xx-support 
> branch and not the xf86-video-radeonhd r6xx-r7xx-support branch.
> 
> There was a comment on radeonhd irc about backing out drm git 
> r6xx-r7xx-support commit for "R6xx/R7xx: pad VB age submission to 8 dwords", 
> for the performance problem but that didn't help me with xf86-video-ati.

I'll have to look at this more closely, but this is similar to the local
changes that I have in my tree.  I think that you aren't actually
mapping the gart with this patch.  Until I get my hands on hardware it
is a little hard for me to finish it fixing it up.  What really needs to
happen here is that the new gart mapping code needs to get merged into
the linux ati_pcigart as we already have equivalent code in our
ati_pcigart.  That should really be the only outstanding issue with the
current code base.  I've been hoping the the amd/linux folks would go
ahead and fix that up, which should make our code just work.

robert.

> --- r600_cp.c.orig	2009-02-19 23:07:23.000000000 -0800
> +++ r600_cp.c	2009-02-21 23:57:49.000000000 -0800
> @@ -429,13 +429,15 @@
>  
>  static void r600_page_table_cleanup(struct drm_device *dev, struct 
> drm_ati_pcigart_info *gart_info)
>  {
> +#ifdef __linux__
>  	struct drm_sg_mem *entry = dev->sg;
>  	int max_pages;
>  	int pages;
>  	int i;
> +#endif
>  
>  	if (gart_info->bus_addr) {
> -
> +#ifdef __linux__
>  		max_pages = (gart_info->table_size / sizeof(u32));
>  		pages = (entry->pages <= max_pages)
>  		  ? entry->pages : max_pages;
> @@ -446,7 +448,7 @@
>  			pci_unmap_single(dev->pdev, entry->busaddr[i],
>  					 PAGE_SIZE, PCI_DMA_TODEVICE);
>  		}
> -
> +#endif
>  		if (gart_info->gart_table_location == DRM_ATI_GART_MAIN)
>  			gart_info->bus_addr = 0;
>  	}
> @@ -475,6 +477,7 @@
>  	memset(pci_gart, 0, max_pages * sizeof(u64));
>  
>  	for (i = 0; i < pages; i++) {
> +#ifdef __linux__
>  		entry->busaddr[i] = pci_map_single(dev->pdev,
>  						   page_address(entry->
>  								pagelist[i]),
> @@ -485,7 +488,7 @@
>  			ret = -EINVAL;
>  			goto done;
>  		}
> -
> +#endif
>  		entry_addr = entry->busaddr[i];
>  		for (j = 0; j < (PAGE_SIZE / ATI_PCIGART_PAGE_SIZE); j++) {
>  			page_base = (u64) entry_addr & ATI_PCIGART_PAGE_MASK;
> @@ -495,13 +498,15 @@
>  			*pci_gart = page_base;
>  
>  			if ((i % 128) == 0)
> -				DRM_DEBUG("page entry %d: 0x%016llx\n", i, page_base);
> +				DRM_DEBUG("page entry %d: 0x%016lx\n", i, page_base);
>  			pci_gart++;
>  			entry_addr += ATI_PCIGART_PAGE_SIZE;
>  		}
>  	}
>  
> +#ifdef __linux__
>  done:
> +#endif
>  	return ret;
>  }
>  
> 
> 
> _______________________________________________
> freebsd-x11 at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-x11
> To unsubscribe, send any mail to "freebsd-x11-unsubscribe at freebsd.org"
-- 
Robert Noland <rnoland at FreeBSD.org>
FreeBSD
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-x11/attachments/20090223/ec9ece5c/attachment.pgp


More information about the freebsd-x11 mailing list