[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 09:58, "Andy Burns" <lists.xensource.com@xxxxxxxxxxxxxx> wrote:

>> It looks like fec00000 is past the end of the device's mmio region.
> 
> 
> Well 0xFEBFFC00 + 1K = 0xFEC00000, is this some sort of off-by-one
> error, where it should only extend to 0xFEBFFFFF?
> 
> Is it worth me attempting a change in the driver code from
> 
>         dev->lmmio = ioremap(pci_resource_start(pci_dev,0), 0x1000);
> 
> to
> 
>         dev->lmmio = ioremap(pci_resource_start(pci_dev,0), 0xFFF);

It shouldn't be necessary, since the range specified to ioremap is by base
address and length and covers the inclusive range 'base' to 'base+length-1'.
It's rather odd that the kernel tries to map FEC00000 at all. If you're
happy changing kernel code, you might try adding printk() instrumentation to
__ioremap() and __direct_remap_pfn_range() in arch/i386/mm/ioremap-xen.c.
The functions look like they should map the correct range of pages (in this
case only the page covering FEBFF000-FEBFFFFF) but perhaps there is an
off-by-one error lurking. Or perhaps the mapping attempt of FEC00000 comes
from somewhere else in the kernel.

 -- 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®.