packages: kernel-desktop/kernel-gpu-drm-mach64-2.6.31.patch (NEW), kernel-d...

hawk hawk at pld-linux.org
Sat Nov 28 00:04:16 CET 2009


Author: hawk                         Date: Fri Nov 27 23:04:16 2009 GMT
Module: packages                      Tag: HEAD
---- Log message:
- fixes for ATI Mach64 DRM to build on new kernels

---- Files affected:
packages/kernel-desktop:
   kernel-gpu-drm-mach64-2.6.31.patch (NONE -> 1.1)  (NEW), kernel-gpu-drm-mach64-fixes.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/kernel-desktop/kernel-gpu-drm-mach64-2.6.31.patch
diff -u /dev/null packages/kernel-desktop/kernel-gpu-drm-mach64-2.6.31.patch:1.1
--- /dev/null	Sat Nov 28 00:04:16 2009
+++ packages/kernel-desktop/kernel-gpu-drm-mach64-2.6.31.patch	Sat Nov 28 00:04:10 2009
@@ -0,0 +1,100 @@
+Adapt mach64 to build with 2.6.31 series kernels
+
+Signed-off-by: Thomas Backlund <tmb at mandriva.org>
+
+diff -urp linux-2.6.31-rc3-git5-mnb1/drivers/gpu/drm/mach64/mach64_dma.c linux-2.6.31-rc3-git5-mnb1/drivers/gpu/drm/mach64.fixed/mach64_dma.c
+--- linux-2.6.31-rc3-git5-mnb1/drivers/gpu/drm/mach64/mach64_dma.c	2009-07-23 00:24:12.000000000 +0300
++++ linux-2.6.31-rc3-git5-mnb1/drivers/gpu/drm/mach64.fixed/mach64_dma.c	2009-07-23 02:28:21.000000000 +0300
+@@ -1006,7 +1006,7 @@ static int mach64_do_dma_init(struct drm
+ 
+ 	DRM_DEBUG("\n");
+ 
+-	dev_priv = drm_alloc(sizeof(drm_mach64_private_t), DRM_MEM_DRIVER);
++	dev_priv = kmalloc(sizeof(drm_mach64_private_t), GFP_KERNEL);
+ 	if (dev_priv == NULL)
+ 		return -ENOMEM;
+ 
+@@ -1386,8 +1386,7 @@ int mach64_do_cleanup_dma(struct drm_dev
+ 
+ 		mach64_destroy_freelist(dev);
+ 
+-		drm_free(dev_priv, sizeof(drm_mach64_private_t),
+-			 DRM_MEM_DRIVER);
++		kfree(dev_priv);
+ 		dev->dev_private = NULL;
+ 	}
+ 
+@@ -1476,8 +1475,8 @@ int mach64_init_freelist(struct drm_devi
+ 	for (i = 0; i < dma->buf_count; i++) {
+ 		if ((entry =
+ 		     (drm_mach64_freelist_t *)
+-		     drm_alloc(sizeof(drm_mach64_freelist_t),
+-			       DRM_MEM_BUFLISTS)) == NULL)
++		     kmalloc(sizeof(drm_mach64_freelist_t),
++			       GFP_KERNEL)) == NULL)
+ 			return -ENOMEM;
+ 		memset(entry, 0, sizeof(drm_mach64_freelist_t));
+ 		entry->buf = dma->buflist[i];
+@@ -1500,18 +1499,18 @@ void mach64_destroy_freelist(struct drm_
+ 	list_for_each_safe(ptr, tmp, &dev_priv->pending) {
+ 		list_del(ptr);
+ 		entry = list_entry(ptr, drm_mach64_freelist_t, list);
+-		drm_free(entry, sizeof(*entry), DRM_MEM_BUFLISTS);
++		kfree(entry);
+ 	}
+ 	list_for_each_safe(ptr, tmp, &dev_priv->placeholders) {
+ 		list_del(ptr);
+ 		entry = list_entry(ptr, drm_mach64_freelist_t, list);
+-		drm_free(entry, sizeof(*entry), DRM_MEM_BUFLISTS);
++		kfree(entry);
+ 	}
+ 
+ 	list_for_each_safe(ptr, tmp, &dev_priv->free_list) {
+ 		list_del(ptr);
+ 		entry = list_entry(ptr, drm_mach64_freelist_t, list);
+-		drm_free(entry, sizeof(*entry), DRM_MEM_BUFLISTS);
++		kfree(entry);
+ 	}
+ }
+ 
+diff -urp linux-2.6.31-rc3-git5-mnb1/drivers/gpu/drm/mach64/mach64_state.c linux-2.6.31-rc3-git5-mnb1/drivers/gpu/drm/mach64.fixed/mach64_state.c
+--- linux-2.6.31-rc3-git5-mnb1/drivers/gpu/drm/mach64/mach64_state.c	2009-07-23 00:24:12.000000000 +0300
++++ linux-2.6.31-rc3-git5-mnb1/drivers/gpu/drm/mach64.fixed/mach64_state.c	2009-07-23 02:29:24.000000000 +0300
+@@ -490,12 +490,12 @@ static __inline__ int copy_from_user_ver
+ 	unsigned long n = bytes;	/* dwords remaining in buffer */
+ 	u32 *from, *orig_from;
+ 
+-	from = drm_alloc(bytes, DRM_MEM_DRIVER);
++	from = kmalloc(bytes, GFP_KERNEL);
+ 	if (from == NULL)
+ 		return -ENOMEM;
+ 
+ 	if (DRM_COPY_FROM_USER(from, ufrom, bytes)) {
+-		drm_free(from, bytes, DRM_MEM_DRIVER);
++		kfree(from);
+ 		return -EFAULT;
+ 	}
+ 	orig_from = from; /* we'll be modifying the "from" ptr, so save it */
+@@ -526,19 +526,19 @@ static __inline__ int copy_from_user_ver
+ 				to += count;
+ 			} else {
+ 				DRM_ERROR("Got bad command: 0x%04x\n", reg);
+-				drm_free(orig_from, bytes, DRM_MEM_DRIVER);
++				kfree(orig_from);
+ 				return -EACCES;
+ 			}
+ 		} else {
+ 			DRM_ERROR
+ 			    ("Got bad command count(=%u) dwords remaining=%lu\n",
+ 			     count, n);
+-			drm_free(orig_from, bytes, DRM_MEM_DRIVER);
++			kfree(orig_from);
+ 			return -EINVAL;
+ 		}
+ 	}
+ 
+-	drm_free(orig_from, bytes, DRM_MEM_DRIVER);
++	kfree(orig_from);
+ 	if (n == 0)
+ 		return 0;
+ 	else {

================================================================
Index: packages/kernel-desktop/kernel-gpu-drm-mach64-fixes.patch
diff -u /dev/null packages/kernel-desktop/kernel-gpu-drm-mach64-fixes.patch:1.1
--- /dev/null	Sat Nov 28 00:04:16 2009
+++ packages/kernel-desktop/kernel-gpu-drm-mach64-fixes.patch	Sat Nov 28 00:04:10 2009
@@ -0,0 +1,97 @@
+Fix/cleanup mach64 drm module for building with current kernel.
+
+Signed-off-by: Herton Ronaldo Krzesinski <herton at mandriva.com.br>
+
+---
+ drivers/gpu/drm/mach64/mach64_dma.c   |    9 +--------
+ drivers/gpu/drm/mach64/mach64_drv.c   |   11 +----------
+ drivers/gpu/drm/mach64/mach64_state.c |    4 ++--
+ 3 files changed, 4 insertions(+), 20 deletions(-)
+
+diff -p -up linux-2.6.28/drivers/gpu/drm/mach64/mach64_dma.c.orig linux-2.6.28/drivers/gpu/drm/mach64/mach64_dma.c
+--- linux-2.6.28/drivers/gpu/drm/mach64/mach64_dma.c.orig	2008-12-10 12:19:14.000000000 -0500
++++ linux-2.6.28/drivers/gpu/drm/mach64/mach64_dma.c	2008-12-10 13:34:19.000000000 -0500
+@@ -834,14 +834,8 @@ static int mach64_bm_dma_test(struct drm
+ 
+ 	/* FIXME: get a dma buffer from the freelist here */
+ 	DRM_DEBUG("Allocating data memory ...\n");
+-#ifdef __FreeBSD__
+-	DRM_UNLOCK();
+-#endif
+ 	cpu_addr_dmah =
+ 	    drm_pci_alloc(dev, 0x1000, 0x1000, 0xfffffffful);
+-#ifdef __FreeBSD__
+-	DRM_LOCK();
+-#endif
+ 	if (!cpu_addr_dmah) {
+ 		DRM_INFO("data-memory allocation failed!\n");
+ 		return -ENOMEM;
+@@ -1375,8 +1369,7 @@ int mach64_do_cleanup_dma(struct drm_dev
+ 	 * may not have been called from userspace and after dev_private
+ 	 * is freed, it's too late.
+ 	 */
+-	if (dev->irq)
+-		drm_irq_uninstall(dev);
++	drm_irq_uninstall(dev);
+ 
+ 	if (dev->dev_private) {
+ 		drm_mach64_private_t *dev_priv = dev->dev_private;
+diff -p -up linux-2.6.28/drivers/gpu/drm/mach64/mach64_drv.c.orig linux-2.6.28/drivers/gpu/drm/mach64/mach64_drv.c
+--- linux-2.6.28/drivers/gpu/drm/mach64/mach64_drv.c.orig	2008-12-10 12:13:13.000000000 -0500
++++ linux-2.6.28/drivers/gpu/drm/mach64/mach64_drv.c	2008-12-10 12:16:54.000000000 -0500
+@@ -38,7 +38,6 @@ static struct pci_device_id pciidlist[] 
+ 	mach64_PCI_IDS
+ };
+ 
+-static int probe(struct pci_dev *pdev, const struct pci_device_id *ent);
+ static struct drm_driver driver = {
+ 	.driver_features =
+ 	    DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | DRIVER_HAVE_DMA
+@@ -68,8 +67,6 @@ static struct drm_driver driver = {
+ 	.pci_driver = {
+ 		.name = DRIVER_NAME,
+ 		.id_table = pciidlist,
+-		.probe = probe,
+-		.remove = __devexit_p(drm_cleanup_pci),
+ 	},
+ 
+ 	.name = DRIVER_NAME,
+@@ -80,16 +77,10 @@ static struct drm_driver driver = {
+ 	.patchlevel = DRIVER_PATCHLEVEL,
+ };
+ 
+-static int probe(struct pci_dev *pdev, const struct pci_device_id *ent)
+-{
+-	return drm_get_dev(pdev, ent, &driver);
+-}
+-
+-
+ static int __init mach64_init(void)
+ {
+ 	driver.num_ioctls = mach64_max_ioctl;
+-	return drm_init(&driver, pciidlist);
++	return drm_init(&driver);
+ }
+ 
+ static void __exit mach64_exit(void)
+diff -p -up linux-2.6.28/drivers/gpu/drm/mach64/mach64_state.c.orig linux-2.6.28/drivers/gpu/drm/mach64/mach64_state.c
+--- linux-2.6.28/drivers/gpu/drm/mach64/mach64_state.c.orig	2008-12-10 12:13:13.000000000 -0500
++++ linux-2.6.28/drivers/gpu/drm/mach64/mach64_state.c	2008-12-10 13:38:54.000000000 -0500
+@@ -455,7 +455,7 @@ static int mach64_do_get_frames_queued(d
+ 	head = ring->head;
+ 
+ 	start = (MACH64_MAX_QUEUED_FRAMES -
+-		 DRM_MIN(MACH64_MAX_QUEUED_FRAMES, sarea_priv->frames_queued));
++		 min(MACH64_MAX_QUEUED_FRAMES, sarea_priv->frames_queued));
+ 
+ 	if (head == tail) {
+ 		sarea_priv->frames_queued = 0;
+@@ -895,7 +895,7 @@ int mach64_get_param(struct drm_device *
+ 		value = mach64_do_get_frames_queued(dev_priv);
+ 		break;
+ 	case MACH64_PARAM_IRQ_NR:
+-		value = dev->irq;
++		value = drm_dev_to_irq(dev);
+ 		break;
+ 	default:
+ 		return -EINVAL;
================================================================


More information about the pld-cvs-commit mailing list