Hello,

We have inherited an older driver that uses kmalloc() and vtophys (which 
resolves to
the __pa() macro) to create memory accessible by an external PCI device doing 
bus
master read/writes.  The driver works Ok on several x86 machines, but is 
failing on a
PPC board (MPC7447/8) running Gentoo Linux 2.6.9.  After looking at PCI bus 
analyzer
captures, it seems the physical address the driver is giving to the PCI device 
is
invalid, so the device ends up reading/writing incorrect memory areas.

What are the up-to-date APIs we should be using for DMA memory allocation and
virtual-to-physical address translation?  We have another driver for another 
device
that's working fine on this board and it uses pci_alloc_consistent().  What 
about
bus_space_vaddr()?  I'm hoping to get a recommendation for what's currently
appropriate and most future-proof for drivers that depend on external PCI DMA.

Any suggestions welcome.  Thanks.

-Jeff
_______________________________________________
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded

Reply via email to