Re: EHCI PCI bug on PPC7448 platforms.

Dave Liu <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
On Wed, 2007-04-25 at 08:48 -0700, Dale Farnsworth wrote:
> sjhill wrote:
> > I have hit a bug using a PPC7448 processor with a PCI EHCI USB
> > controller. Atomic operations for reference counting are failing
> > and I am interested to hear what others have to say on this.
> > 
> > Looking in the MPC7450 RISC Microprocessor Family Reference Manual
> > (MPC7450UM, Rev. 5, 1/2005):
> > 
> >    http://www.freescale.com/files/32bit/doc/ref_manual/MPC7450UM.pdf
> > 
> > On Page 102 in Table 1-2, the DSI 0x300 exception can be caused by:
> > 
> >    "A lwarx or stwcx. instruction to memory with cache-inhibited
> >     or write-through memory/cache access atrributes."
> > 
> > For the functions qh_get/gh_put in drivers/usb/host/ehci-mem.c,
> > the kref_get/kref_put functions are called which perform atomic
> > operations using the PPC atomic assembly instructions.
> > 
> > The problem is that all of the ehci_qh and ehci_qtd blocks are
> > allocated through dma_pool_alloc which marks all of the pages
> > cache-inhibit. Thus, whenever the kref functions are called and
> > the PPC-specific atomic operations are performed, the lwarx and
> > stwcx instructions are executed causing kernel panics because of
> > the DSI 0x300 exception.
> > 
> > Currently, I comment out the ref-counting and the EHCI controller
> > performs perfectly on my 7448 platform. However, this is certainly
> > not the solution going forward. Is it truly necessary to have the
> > ref count be in DMA-able memory? I know it is convenient to allocate
> > the entire structure all at once, but this certainly will not work
> > for 7448 platforms. Comments? Thanks.
> 
> Good find Steve.  That's nasty and does need to get fixed.

It is really old problem, see the thread.

http://marc.info/?l=linux-usb-devel&m=115921549316531&w=2

-Dave



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.