|
From: Ken T. <ke...@we...> - 2001-10-08 14:24:24
|
Hello, For anyone following my exciting story about how turning on DEBUG in virgefb causes my kernel to hang initializing 53c7xx.c scsi, here is my latest episode. From dmesg of a successful boot, no virge DEBUG : SCSI subsystem driver Revision: 1.00 ioremap: 50000000 (01000000) -> c5018000 scsi-ncr53c7xx : NCR53c710 at memory 0xc5818000, io 0x0, irq 12 scsi : get_free_pages (virt) 0xc0340000 scsi : get_free_pages (phys) 0x08340000 scsi0: Revision 0x1 The physical address of the two pages returned by __get_free_pages is somewhere low in my 64 Meg of PPC memory. With virge DEBUG on : SCSI subsystem driver Revision: 1.00 ioremap: 50000000 (01000000) -> c5018000 scsi-ncr53c7xx : NCR53c710 at memory 0xc5818000, io 0x0, irq 12 scsi : get_free_pages (virt) 0xc3f7e000 scsi : get_free_pages (phys) 0x0bf7e000 (cache_push here) Oops: kernel access of bad area, sig: 11 The physical address of the two pages is now right at the very top of my 64 Meg. The cache_push pushes two pages and always the "trailing block", 32 bytes more, this causes the oops. Taking out the trailing block push stops the oops. Two questions, should the trailing block be pushed if it attempts to go beyond physical memory (not that there should be anything in the cache to push), and why does virge DEBUG make __get_free_pages return blocks at such a very different physical address ? Any suggestions ? Ken. |