Ok,
 I just did another kernel merge to pick up the i810 compatibility bits, 
and decided it is time to try to merge back some of the stuff that has 
accumulated in the standard kernel and that makes it more painful than 
necessary to examine the diffs for differences.

This is mostly whitespace changes (some of it new from Dave Jones, some of
it quite old), and some other minor things: moving some counter and lock
initializations slightly earlier to where the data structure they are in
are allocated and initialized, so that interrupts can't even by mistake 
see them partially done.

It also removes the printk() for the AGP version, since that is actually 
done by the AGP layer anyway.

I'd appreciate it if all (or even most) of this could find itself back 
into the DRI CVS tree, to make it easier to read the code and merge it 
(some of the whitespace fixes are literally broken whitespace in the DRI 
tree - comments that end up being in strange columns etc).

Apart from moving some initializations around and the aforementioned 
printk removal, this should not actually affect semantics at all.

Oh, and the thing will apply with a few offsets, since I edited the patch 
to remove stuff that you don't want at this point. My tree doesn't contain 
all of the 2.4.x compatibility crud etc.

You can apply (or not apply) everything independently, so feel free to 
cherry-pick the patches. I did edit out anything that looked even remotely 
like it could cause discussion (ie this does _not_ contain the 
"cpu_relax()" stuff that I have in my tree, for example).

Thanks,

                        Linus
-----
diff -u --recursive /home/torvalds/dri-kernel/Kconfig ./Kconfig
--- /home/torvalds/dri-kernel/Kconfig   2003-04-22 14:30:23.000000000 -0700
+++ ./Kconfig   2003-08-14 13:05:45.137737925 -0700
@@ -24,10 +24,10 @@
 
 config DRM_GAMMA
        tristate "3dlabs GMX 2000"
-       depends on DRM && n
+       depends on DRM
        help
-         This is the old gamma driver, disabled for now unless somebody
-         tells me it actually might work.
+         This is the old gamma driver, please tell me if it might actually
+         work.
 
 config DRM_R128
        tristate "ATI Rage 128"
@@ -49,7 +49,7 @@
 
 config DRM_I810
        tristate "Intel I810"
-       depends on DRM && AGP
+       depends on DRM && AGP && AGP_INTEL
        help
          Choose this option if you have an Intel I810 graphics card.  If M is
          selected, the module will be called i810.  AGP support is required
@@ -57,7 +57,7 @@
 
 config DRM_I830
        tristate "Intel 830M, 845G, 852GM, 855GM, 865G"
-       depends on DRM && AGP
+       depends on DRM && AGP && AGP_INTEL
        help
          Choose this option if you have a system that has Intel 830M, 845G,
          852GM, 855GM or 865G integrated graphics.  If M is selected, the
@@ -72,3 +72,12 @@
          Choose this option if you have a Matrox G200, G400 or G450 graphics
          card.  If M is selected, the module will be called mga.  AGP
          support is required for this driver to work.
+
+config DRM_SIS
+       tristate "SiS video cards"
+       depends on DRM && AGP && FB_SIS
+       help
+         Choose this option if you have a SiS 630 or compatibel video 
+          chipset. If M is selected the module will be called sis. AGP
+          and SiS FB support is required for this driver to work.
+
diff -u --recursive /home/torvalds/dri-kernel/drm_agpsupport.h ./drm_agpsupport.h
--- /home/torvalds/dri-kernel/drm_agpsupport.h  2003-07-25 20:04:22.000000000 -0700
+++ ./drm_agpsupport.h  2003-08-14 13:05:45.361704630 -0700
@@ -106,7 +105,8 @@
        if ( dev->agp->cant_use_aperture )
                return -EINVAL;
 #endif
-       if ((retcode = drm_agp->acquire())) return retcode;
+       if ((retcode = drm_agp->acquire()))
+               return retcode;
        dev->agp->acquired = 1;
        return 0;
 }
@@ -147,7 +143,8 @@
  */
 void DRM(agp_do_release)(void)
 {
-       if (drm_agp->release) drm_agp->release();
+       if (drm_agp->release)
+               drm_agp->release();
 }
 
 /**
@@ -201,7 +198,8 @@
        unsigned long    pages;
        u32              type;
 
-       if (!dev->agp || !dev->agp->acquired) return -EINVAL;
+       if (!dev->agp || !dev->agp->acquired)
+               return -EINVAL;
        if (copy_from_user(&request, (drm_agp_buffer_t *)arg, sizeof(request)))
                return -EFAULT;
        if (!(entry = DRM(alloc)(sizeof(*entry), DRM_MEM_AGPLISTS)))
@@ -227,11 +225,12 @@
        entry->pages     = pages;
        entry->prev      = NULL;
        entry->next      = dev->agp->memory;
-       if (dev->agp->memory) dev->agp->memory->prev = entry;
+       if (dev->agp->memory)
+               dev->agp->memory->prev = entry;
        dev->agp->memory = entry;
 
        request.handle   = entry->handle;
-        request.physical = memory->physical;
+       request.physical = memory->physical;
 
        if (copy_to_user((drm_agp_buffer_t *)arg, &request, sizeof(request))) {
                dev->agp->memory       = entry->next;
@@ -258,7 +257,8 @@
        drm_agp_mem_t *entry;
 
        for (entry = dev->agp->memory; entry; entry = entry->next) {
-               if (entry->handle == handle) return entry;
+               if (entry->handle == handle)
+                       return entry;
        }
        return NULL;
 }
@@ -284,12 +284,14 @@
        drm_agp_mem_t     *entry;
        int ret;
 
-       if (!dev->agp || !dev->agp->acquired) return -EINVAL;
+       if (!dev->agp || !dev->agp->acquired)
+               return -EINVAL;
        if (copy_from_user(&request, (drm_agp_binding_t *)arg, sizeof(request)))
                return -EFAULT;
        if (!(entry = DRM(agp_lookup_entry)(dev, request.handle)))
                return -EINVAL;
-       if (!entry->bound) return -EINVAL;
+       if (!entry->bound)
+               return -EINVAL;
        ret = DRM(unbind_agp)(entry->memory);
        if (ret == 0)
            entry->bound = 0;
@@ -325,9 +327,11 @@
                return -EFAULT;
        if (!(entry = DRM(agp_lookup_entry)(dev, request.handle)))
                return -EINVAL;
-       if (entry->bound) return -EINVAL;
+       if (entry->bound)
+               return -EINVAL;
        page = (request.offset + PAGE_SIZE - 1) / PAGE_SIZE;
-       if ((retcode = DRM(bind_agp)(entry->memory, page))) return retcode;
+       if ((retcode = DRM(bind_agp)(entry->memory, page)))
+               return retcode;
        entry->bound = dev->agp->base + (page << PAGE_SHIFT);
        DRM_DEBUG("base = 0x%lx entry->bound = 0x%lx\n",
                  dev->agp->base, entry->bound);
@@ -356,16 +360,23 @@
        drm_agp_buffer_t request;
        drm_agp_mem_t    *entry;
 
-       if (!dev->agp || !dev->agp->acquired) return -EINVAL;
+       if (!dev->agp || !dev->agp->acquired)
+               return -EINVAL;
        if (copy_from_user(&request, (drm_agp_buffer_t *)arg, sizeof(request)))
                return -EFAULT;
        if (!(entry = DRM(agp_lookup_entry)(dev, request.handle)))
                return -EINVAL;
-       if (entry->bound) DRM(unbind_agp)(entry->memory);
+       if (entry->bound)
+               DRM(unbind_agp)(entry->memory);
+
+       if (entry->prev)
+               entry->prev->next = entry->next;
+       else
+               dev->agp->memory = entry->next;
+
+       if (entry->next)
+               entry->next->prev = entry->prev;
 
-       if (entry->prev) entry->prev->next = entry->next;
-       else             dev->agp->memory  = entry->next;
-       if (entry->next) entry->next->prev = entry->prev;
        DRM(free_agp)(entry->memory, entry->pages);
        DRM(free)(entry, sizeof(*entry), DRM_MEM_AGPLISTS);
        return 0;
@@ -402,12 +413,6 @@
                head->cant_use_aperture = head->agp_info.cant_use_aperture;
                head->page_mask = head->agp_info.page_mask;
 #endif
-
-               DRM_INFO("AGP %d.%d aperture @ 0x%08lx %ZuMB\n",
-                        head->agp_info.version.major,
-                        head->agp_info.version.minor,
-                        head->agp_info.aper_base,
-                        head->agp_info.aper_size);
        }
        return head;
 }
@@ -426,14 +431,16 @@
 /** Calls drm_agp->allocate_memory() */
 DRM_AGP_MEM *DRM(agp_allocate_memory)(size_t pages, u32 type)
 {
-       if (!drm_agp->allocate_memory) return NULL;
+       if (!drm_agp->allocate_memory)
+               return NULL;
        return drm_agp->allocate_memory(pages, type);
 }
 
 /** Calls drm_agp->free_memory() */
 int DRM(agp_free_memory)(DRM_AGP_MEM *handle)
 {
-       if (!handle || !drm_agp->free_memory) return 0;
+       if (!handle || !drm_agp->free_memory)
+               return 0;
        drm_agp->free_memory(handle);
        return 1;
 }
@@ -441,14 +448,16 @@
 /** Calls drm_agp->bind_memory() */
 int DRM(agp_bind_memory)(DRM_AGP_MEM *handle, off_t start)
 {
-       if (!handle || !drm_agp->bind_memory) return -EINVAL;
+       if (!handle || !drm_agp->bind_memory)
+               return -EINVAL;
        return drm_agp->bind_memory(handle, start);
 }
 
 /** Calls drm_agp->unbind_memory() */
 int DRM(agp_unbind_memory)(DRM_AGP_MEM *handle)
 {
-       if (!handle || !drm_agp->unbind_memory) return -EINVAL;
+       if (!handle || !drm_agp->unbind_memory)
+               return -EINVAL;
        return drm_agp->unbind_memory(handle);
 }
 
diff -u --recursive /home/torvalds/dri-kernel/drm_dma.h ./drm_dma.h
--- /home/torvalds/dri-kernel/drm_dma.h 2003-06-02 11:13:17.000000000 -0700
+++ ./drm_dma.h 2003-08-14 13:05:45.142737181 -0700
@@ -239,7 +238,7 @@
 
        down( &dev->struct_sem );
 
-                               /* Driver must have been initialized */
+       /* Driver must have been initialized */
        if ( !dev->dev_private ) {
                up( &dev->struct_sem );
                return -EINVAL;
diff -u --recursive /home/torvalds/dri-kernel/drm_drv.h ./drm_drv.h
--- /home/torvalds/dri-kernel/drm_drv.h 2003-08-06 20:04:30.000000000 -0700
+++ ./drm_drv.h 2003-08-14 13:05:45.142737181 -0700
@@ -344,7 +344,6 @@
        dev->last_context = 0;
        dev->last_switch = 0;
        dev->last_checked = 0;
-       init_timer( &dev->timer );
        init_waitqueue_head( &dev->context_wait );
 
        dev->ctx_start = 0;
@@ -624,6 +623,7 @@
                dev = &(DRM(device)[i]);
                memset( (void *)dev, 0, sizeof(*dev) );
                dev->count_lock = SPIN_LOCK_UNLOCKED;
+               init_timer( &dev->timer );
                sema_init( &dev->struct_sem, 1 );
 
                if ((DRM(minor)[i] = DRM(stub_register)(DRIVER_NAME, &DRM(fops),dev)) 
< 0)
diff -u --recursive /home/torvalds/dri-kernel/drm_vm.h ./drm_vm.h
--- /home/torvalds/dri-kernel/drm_vm.h  2003-06-02 11:13:18.000000000 -0700
+++ ./drm_vm.h  2003-08-14 13:05:45.143737033 -0700
@@ -510,7 +509,7 @@
        if (map->size != vma->vm_end - vma->vm_start) return -EINVAL;
 
        if (!capable(CAP_SYS_ADMIN) && (map->flags & _DRM_READ_ONLY)) {
-               vma->vm_flags &= (VM_READ | VM_MAYREAD);
+               vma->vm_flags &= ~(VM_WRITE | VM_MAYWRITE);
 #if defined(__i386__) || defined(__x86_64__)
                pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW;
 #else
diff -u --recursive /home/torvalds/dri-kernel/i810_dma.c ./i810_dma.c
--- /home/torvalds/dri-kernel/i810_dma.c        2003-08-13 20:04:10.000000000 -0700
+++ ./i810_dma.c        2003-08-14 13:05:45.146736587 -0700
@@ -62,7 +55,7 @@
 {
        drm_device_dma_t *dma = dev->dma;
        drm_i810_private_t *dev_priv = dev->dev_private;
-       u32 *temp = (u32 *)dev_priv->hw_status_page;
+       u32 *temp = dev_priv->hw_status_page;
        int i;
 
        DRM_DEBUG(  "hw_status: Interrupt Status : %x\n", temp[0]);
@@ -465,7 +458,7 @@
 {
 
        /* Get v1.1 init data */
-       if(copy_from_user(init, (drm_i810_pre12_init_t *)arg,
+       if (copy_from_user(init, (drm_i810_pre12_init_t *)arg,
                          sizeof(drm_i810_pre12_init_t))) {
                return -EFAULT;
        }
@@ -503,9 +496,8 @@
        int retcode = 0;
 
        /* Get only the init func */
-       if (copy_from_user(&init, (void *)arg, sizeof(drm_i810_init_func_t))) {
+       if (copy_from_user(&init, (void *)arg, sizeof(drm_i810_init_func_t)))
                return -EFAULT;
-       }
 
        switch(init.func) {
                case I810_INIT_DMA:
@@ -515,30 +507,34 @@
                         * It will someday go away.
                         */
                        retcode = i810_dma_init_compat(&init, arg);
-                       if(retcode) {
+                       if (retcode)
                                return retcode;
-                       }
+
                        dev_priv = DRM(alloc)(sizeof(drm_i810_private_t),
                                             DRM_MEM_DRIVER);
-                       if(dev_priv == NULL) return -ENOMEM;
+                       if (dev_priv == NULL)
+                               return -ENOMEM;
                        retcode = i810_dma_initialize(dev, dev_priv, &init);
-               break;
+                       break;
+
                default:
                case I810_INIT_DMA_1_4:
                        DRM_INFO("Using v1.4 init.\n");
-                       if(copy_from_user(&init, (drm_i810_init_t *)arg,
+                       if (copy_from_user(&init, (drm_i810_init_t *)arg,
                                          sizeof(drm_i810_init_t))) {
                                return -EFAULT;
                        }
                        dev_priv = DRM(alloc)(sizeof(drm_i810_private_t),
                                             DRM_MEM_DRIVER);
-                       if(dev_priv == NULL) return -ENOMEM;
+                       if (dev_priv == NULL)
+                               return -ENOMEM;
                        retcode = i810_dma_initialize(dev, dev_priv, &init);
-               break;
+                       break;
+
                case I810_CLEANUP_DMA:
                        DRM_INFO("DMA Cleanup\n");
                        retcode = i810_dma_cleanup(dev);
-               break;
+                       break;
        }
 
        return retcode;
@@ -1052,7 +1048,7 @@
        drm_device_t *dev = priv->dev;
        drm_device_dma_t *dma = dev->dma;
        drm_i810_private_t *dev_priv = (drm_i810_private_t *)dev->dev_private;
-       u32 *hw_status = (u32 *)dev_priv->hw_status_page;
+       u32 *hw_status = dev_priv->hw_status_page;
        drm_i810_sarea_t *sarea_priv = (drm_i810_sarea_t *)
                                        dev_priv->sarea_priv;
        drm_i810_vertex_t vertex;
@@ -1133,7 +1129,7 @@
        drm_file_t        *priv     = filp->private_data;
        drm_device_t      *dev      = priv->dev;
        drm_i810_private_t *dev_priv = (drm_i810_private_t *)dev->dev_private;
-       u32 *hw_status = (u32 *)dev_priv->hw_status_page;
+       u32 *hw_status = dev_priv->hw_status_page;
        drm_i810_sarea_t *sarea_priv = (drm_i810_sarea_t *)
                                        dev_priv->sarea_priv;
 
@@ -1149,7 +1145,7 @@
        int               retcode   = 0;
        drm_i810_dma_t    d;
        drm_i810_private_t *dev_priv = (drm_i810_private_t *)dev->dev_private;
-       u32 *hw_status = (u32 *)dev_priv->hw_status_page;
+       u32 *hw_status = dev_priv->hw_status_page;
        drm_i810_sarea_t *sarea_priv = (drm_i810_sarea_t *)
                                        dev_priv->sarea_priv;
 
@@ -1261,7 +1257,7 @@
        drm_device_t *dev = priv->dev;
        drm_device_dma_t *dma = dev->dma;
        drm_i810_private_t *dev_priv = (drm_i810_private_t *)dev->dev_private;
-       u32 *hw_status = (u32 *)dev_priv->hw_status_page;
+       u32 *hw_status = dev_priv->hw_status_page;
        drm_i810_sarea_t *sarea_priv = (drm_i810_sarea_t *)
                dev_priv->sarea_priv;
        drm_i810_mc_t mc;
diff -u --recursive /home/torvalds/dri-kernel/i830_irq.c ./i830_irq.c
--- /home/torvalds/dri-kernel/i830_irq.c        2003-07-29 20:05:12.000000000 -0700
+++ ./i830_irq.c        2003-08-14 13:05:45.148736290 -0700
@@ -186,6 +185,9 @@
        I830_WRITE16( I830REG_HWSTAM, 0xffff );
        I830_WRITE16( I830REG_INT_MASK_R, 0x0 );
        I830_WRITE16( I830REG_INT_ENABLE_R, 0x0 );
+       atomic_set(&dev_priv->irq_received, 0);
+       atomic_set(&dev_priv->irq_emitted, 0);
+       init_waitqueue_head(&dev_priv->irq_queue);
 }
 
 void DRM(driver_irq_postinstall)( drm_device_t *dev ) {
@@ -193,9 +195,6 @@
                (drm_i830_private_t *)dev->dev_private;
 
        I830_WRITE16( I830REG_INT_ENABLE_R, 0x2 );
-       atomic_set(&dev_priv->irq_received, 0);
-       atomic_set(&dev_priv->irq_emitted, 0);
-       init_waitqueue_head(&dev_priv->irq_queue);
 }
 
 void DRM(driver_irq_uninstall)( drm_device_t *dev ) {



-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to