On Mon, May 13, 2002 at 06:01:14PM -0700, Mike Mestnik wrote:
> 
> --- Micah Galizia <[EMAIL PROTECTED]> wrote:
> > Which source should i be modifying.  The source available online at 
> > http://www.xfree86.org/~alanh/ has radeon 1.1.1; however, when I made my 
> > patch, it was against 1.2.0.  I'm a little confused!
> > 
> > Micah
> > 
> I don't think at this time it would be a good idea to release the TCL branch. 
> Howerver It would be nice if it where buildable on all post 2.4 kernels.  If I
> where you I'd post my patch on dri-patch and hopefully It will, once it builds
> on pre 2.5 kernels be applied to CVS.  This would also let other ppl like me
> build a 2.5 kernel.

Apply the following attached patch to radeon-tcl*.tar.bz2 (it also
contains other than radeon drivers) and build against 2.5.x ...

ps.
I don't see why the same patch couldn't be applied to trunk in order to
compile against 2.5.x ... :) I was more interested in TCL drivers ... :)

-- 
Zilvinas Valinskas
--- drm_drv.h   Mon May 13 01:23:49 2002
+++ ../drm/drm_drv.h    Sat May  4 15:22:30 2002
@@ -705,7 +705,7 @@
        int i;
 
        for (i = 0; i < DRM(numdevs); i++) {
-               if (MINOR(inode->i_rdev) == DRM(minor)[i]) {
+               if (minor(inode->i_rdev) == DRM(minor)[i]) {
                        dev = &(DRM(device)[i]);
                        break;
                }
--- drm_fops.h  Mon May 13 01:23:49 2002
+++ ../drm/drm_fops.h   Sat May  4 15:23:25 2002
@@ -38,13 +38,13 @@
 
 int DRM(open_helper)(struct inode *inode, struct file *filp, drm_device_t *dev)
 {
-       kdev_t       minor = MINOR(inode->i_rdev);
+       kdev_t       minor = inode->i_rdev;
        drm_file_t   *priv;
 
        if (filp->f_flags & O_EXCL)   return -EBUSY; /* No exclusive opens */
        if (!DRM(cpu_valid)())        return -EINVAL;
 
-       DRM_DEBUG("pid = %d, minor = %d\n", current->pid, minor);
+       DRM_DEBUG("pid = %d, minor = %d\n", current->pid, minor(minor));
 
        priv                = DRM(alloc)(sizeof(*priv), DRM_MEM_FILES);
        if(!priv) return -ENOMEM;
@@ -53,7 +53,7 @@
        filp->private_data  = priv;
        priv->uid           = current->euid;
        priv->pid           = current->pid;
-       priv->minor         = minor;
+       priv->minor         = minor(minor);
        priv->dev           = dev;
        priv->ioctl_count   = 0;
        priv->authenticated = capable(CAP_SYS_ADMIN);
--- drm_scatter.h       Mon May 13 01:23:49 2002
+++ ../drm/drm_scatter.h        Sat May  4 15:43:24 2002
@@ -68,7 +68,7 @@
        unsigned long pages, i, j;
        pgd_t *pgd;
        pmd_t *pmd;
-       pte_t *pte;
+       pte_t *pte, pte_entry;
 
        DRM_DEBUG( "%s\n", __FUNCTION__ );
 
@@ -145,11 +145,16 @@
                if ( !pmd_present( *pmd ) )
                        goto failed;
 
-               pte = pte_offset( pmd, i );
-               if ( !pte_present( *pte ) )
+               preempt_disable();
+               pte = pte_offset_map( pmd, i );
+               pte_entry = *pte;
+               pte_unmap(pte);
+               preempt_enable();
+
+               if (!pte_present(pte_entry))
                        goto failed;
 
-               entry->pagelist[j] = pte_page( *pte );
+               entry->pagelist[j] = pte_page(pte_entry);
 
                SetPageReserved( entry->pagelist[j] );
        }
--- drm_stub.h  Mon May 13 01:23:49 2002
+++ ../drm/drm_stub.h   Sat May  4 15:25:18 2002
@@ -49,7 +49,7 @@
 
 static int DRM(stub_open)(struct inode *inode, struct file *filp)
 {
-       int                    minor = MINOR(inode->i_rdev);
+       int                    minor = minor(inode->i_rdev);
        int                    err   = -ENODEV;
        struct file_operations *old_fops;
 
--- drm_vm.h    Mon May 13 01:23:49 2002
+++ ../drm/drm_vm.h     Sat May  4 15:39:28 2002
@@ -132,7 +132,7 @@
        unsigned long    i;
        pgd_t            *pgd;
        pmd_t            *pmd;
-       pte_t            *pte;
+       pte_t            *pte, entry;
        struct page      *page;
 
        if (address > vma->vm_end) return NOPAGE_SIGBUS; /* Disallow mremap */
@@ -144,17 +144,28 @@
         * they need to be virtually contiguous in kernel space.
         */
        pgd = pgd_offset_k( i );
-       if( !pgd_present( *pgd ) ) return NOPAGE_OOM;
+       if (!pgd_present(*pgd))
+               goto oom;
        pmd = pmd_offset( pgd, i );
-       if( !pmd_present( *pmd ) ) return NOPAGE_OOM;
-       pte = pte_offset( pmd, i );
-       if( !pte_present( *pte ) ) return NOPAGE_OOM;
+       if (!pmd_present(*pmd ))
+               goto oom;
+       
+       preempt_disable();
+       pte = pte_offset_map(pmd, i);
+       entry = *pte;
+       pte_unmap(pte);
+       preempt_enable();
 
-       page = pte_page(*pte);
+       if (!pte_present(entry))
+               goto oom;
+
+       page = pte_page(entry);
        get_page(page);
 
        DRM_DEBUG("shm_nopage 0x%lx\n", address);
        return page;
+oom:
+       return NOPAGE_OOM;
 }
 
 /* Special close routine which deletes map information if we are the last
@@ -462,12 +473,12 @@
                }
                offset = DRIVER_GET_REG_OFS();
 #ifdef __sparc__
-               if (io_remap_page_range(vma->vm_start,
+               if (io_remap_page_range(vma,vma->vm_start,
                                        VM_OFFSET(vma) + offset,
                                        vma->vm_end - vma->vm_start,
                                        vma->vm_page_prot, 0))
 #else
-               if (remap_page_range(vma->vm_start,
+               if (remap_page_range(vma,vma->vm_start,
                                     VM_OFFSET(vma) + offset,
                                     vma->vm_end - vma->vm_start,
                                     vma->vm_page_prot))
--- i810_dma.c  Mon May 13 01:23:49 2002
+++ ../drm/i810_dma.c   Mon May 13 20:47:19 2002
@@ -157,7 +157,7 @@
        buf_priv->currently_mapped = I810_BUF_MAPPED;
        unlock_kernel();
 
-       if (remap_page_range(vma->vm_start,
+       if (remap_page_range(vma,vma->vm_start,
                             VM_OFFSET(vma),
                             vma->vm_end - vma->vm_start,
                             vma->vm_page_prot)) return -EAGAIN;

Reply via email to