Re: [Dri-devel] PPC Lockup (ati-pcigart-branch)
From: Michel D�nzer <hidden>
Date: 2001-01-22 09:44:04
Come on, someone has to know what's going on here... :) For the Linux/PPC developers: the purpose of this code is to walk a virtual memory range and look up the page struct for each page. I spent some time on the train this morning trying to figure out what might be wrong but couldn't find anything obvious.
I've narrowed down the problem by modifying the code like this:
for ( i = entry->handle, j = 0 ; j < pages ; i += PAGE_SIZE, j++ ) {
printk("i: %08lx\n", i);
pgd = pgd_offset_k( i );
printk("pgd: %08lx\n", pgd);
pmd = pmd_offset( pgd, i );
printk("pmd: %08lx\n", pmd);
pte = pte_offset( pmd, i );
printk("pte: %08lx\n", pte);
entry->pagelist[j]= pte_page( *pte );
printk("Checkpoint 5\n");
SetPageReserved( entry->pagelist[j] );
printk("Checkpoint 6\n");
if ( j < 16 ) {
DRM_DEBUG("0x%08lx (page %lu) => 0x%08lx\n",
i, j,
(unsigned
long)entry->pagelist[j]->virtual);
}
}[...]
[drm] drm_sg_alloc i: ca292000 pgd: c014dca0 pmd: c014dca0 pte: 00000a48 Oops: kernel access of bad area, sig: 11
Looking at pgd/pmd, pte seems fishy for a pointer. Any reason why this code shouldn't work on PPC? Michel -- Earthling Michel Dänzer (MrCooper) \ Debian GNU/Linux (powerpc) developer CS student, Free Software enthusiast \ XFree86 and DRI project member ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/