tech-kern archive

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

Re: bus_dmamap_sync() for uhci(4)



On Mon, Jun 09, 2008 at 05:44:18PM -0400, Michael Lorenz wrote:
> >>>BTW, I suspect the lack of memory read/write barrier are the  
> >>>cause of
> >>>the issues I'm seeing on x86 too (this is why I started this work).
> >>
> >>Hmm, I need to read sgimips' bus_dma stuff again but since other
> >>drivers work it can't be all that borked.
> >
> >Sure it was not my point. It's most probably an issue with the
> >_sync() calls I added. But as the memory referred to by these calls  
> >should be
> >mapped uncached anyway, I don't understand how they could make a  
> >difference.
> 
> Something's weird here - I added the KASSERT you asked for, didn't  
> add ehci back but the kernel found the USB disk this time. It did  
> hang while probing a low speed device though ( sat there for a minute  
> or so ), when I unplugged it the machine booted normally and so far  
> bonnie's been working for about 10 minutes without any trouble. For  
> some reason it took a lot longer than on my other machines to find  
> the USB disk ( ~15 seconds vs. less than one )

So the KASSERT didn't fire, which means that the memory here is mapped
uncached. In this case, the bus_dmamap_sync() should just add a wmb() in
the path, which should make things really worse (it's _bus_dmamap_sync_mips3()
which is used on the O2, right ?).

when using BUS_DMAMAP_COHERENT, is the memory region completely uncached
on sgimips, or do we still need to invalidate the cache line before a
read ?

-- 
Manuel Bouyer, LIP6, Universite Paris VI.           
Manuel.Bouyer%lip6.fr@localhost
     NetBSD: 26 ans d'experience feront toujours la difference
--


Home | Main Index | Thread Index | Old Index