[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] MMIO ioremap() error with PCI passthrough



On 1/7/08 14:16, "Andy Burns" <lists.xensource.com@xxxxxxxxxxxxxx> wrote:

>> 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?

Well, your analysis is correct, and the size argument to __ioremap() is
bogus. It shouldn't have been rounded up to 4096 without also rounding down
the base address. I don't think this would happen with out linux-2.6.18-xen
tree. In there, ioremap() is defined in include/asm-x86_64/mach-xen/io.h as
a thin wrapper around __ioremap() which does not modify the size parameter.

So, could be a bug specific to the FC8 kernel. I don't have its sources to
hand to pinpoint where the size is getting changed from 0x400 to 0x1000. You
should be able to dig up that detail pretty easily though.

 -- Keir



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.