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;