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