On 01/07/2008 10:45, Keir Fraser wrote:
 
If you're
happy changing kernel code, you might try adding printk() instrumentation to
 __ioremap() 
 
printk(KERN_DEBUG "REMAP: phys=0x%lx, len=%lu\n",
       phys_addr, size);
and __direct_remap_pfn_range() in arch/i386/mm/ioremap-xen.c.
printk(KERN_DEBUG "REMAPPFN: addr=0x%lx, mfn=0x%lx, size=%lu\n",
       address, mfn, size);
The functions look like they should map the correct range of pages (in this
case only the page covering FEBFF000-FEBFFFFF)
 
 
 Built and installed kernel/modules/initrd, rebooted, when it loads the 
saa7134 driver I see this
REMAP: phys=0xfebffc00, len=4096
REMAPPFN: addr=0xffffc20000038000, mfn=0xfebff, size=8192
 So the 1K mapping has been rounded up to 4K (x86_64 page size?) before 
passing to __ioremap() and then rounded up again to 8K by the time it 
gets passed to __direct_remap_pfn_range() is that right?
 I can manage to build a kernel, but I'm out of my depth in terms of 
knowing what would be good or bad with physical addresses and page 
mappings ...
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 |