On Sun, 2006-10-01 at 09:50 +0200, Michael S. Tsirkin wrote:
> Quoting r. Tseng-Hui (Frank) Lin <[EMAIL PROTECTED]>:
> > Subject: RE: FW: Mstflint - not working on ppc64 andwhendriver is notloaded 
> > on AMD
> > 
> > The ppc64 problem is actually in pci_64.c. Here is the patch:
> > 
> > ============ cut here =============
> > diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
> > index 4c4449b..490403c 100644
> > --- a/arch/powerpc/kernel/pci_64.c
> > +++ b/arch/powerpc/kernel/pci_64.c
> > @@ -734,9 +734,7 @@ static struct resource *__pci_mmap_make_
> >     if (hose == 0)
> >             return NULL;            /* should never happen */
> >  
> > -   /* If memory, add on the PCI bridge address offset */
> >     if (mmap_state == pci_mmap_mem) {
> > -           *offset += hose->pci_mem_offset;
> >             res_bit = IORESOURCE_MEM;
> >     } else {
> >             io_offset = (unsigned long)hose->io_base_virt - pci_io_base;
> > ============= end cut =============
> > 
> > The mmap() system call on resource0 does not work on ppc64 without this
> > patch. PowerMAC G5 got away with this because its hose->pci_mem_offset
> > was set to 0.
> > 
> > The fix is made on 8/21. It may be able to make it into 2.6.19. But it
> > certainly won't get into SLES10, SLES9-SP3, or REHL4-U4 which have
> > already been released. 
> > 
> > To cover both cases with and without the fix, my patch try to
> > mmap /sys/bus/pci/..../resource0 first. It it failed it tries
> > mmap /proc/bus/pci/.... If it failed again, we have no choice but fall
> > back to use PCI config space.
> 
> OK, so for OFED just mmap from /proc/bus/pci/ should be sufficient 
> work-around - it will make things work when driver is loaded.
> Correct?
> 
Michael:

    No. Without the above patch for pci_64.c, mmap() is broken in ppc64
no matter mmap() from /sys/bus/pci/<pci location>/resource0
or /proc/bus/pci/<pci location>. The only way is "mstflint
-d /proc/bus/pci/<pci location>", which use pread() and pwrite() instaed
of mmap(). 

    With the patch, mmap() from /sys/bus/pci/<pci location>/resource0
and /proc/bus/pci/<pci location> both work when mthca driver is loaded.
No workaround is needed.

    Note that "-d <pci location>" uses mmap from /proc/bus/pci/<pci
location>. "-d /proc/bus/pci/<pci location>" uses pread() and pwrite(). 



_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to