Re: [patch 06/38] mips: dec: Convert to new irq_chip functions

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

 



On Thu, 24 Mar 2011, Thomas Gleixner wrote:

> >  The ack used to be made in clear_ioasic_irq(), that was called from 
> > end_ioasic_dma_irq(), that was used as the .end handler.  This semantics 
> > has to be preserved or hardware won't work anymore as expected.  This is a 
> > regression.
> 
> Then that code was broken before. Since MIPS was converted to the flow
> handlers nothing ever called .end(). I seem to miss something.

 Hmm, me too then.  Whoever did the conversion failed to adjust this piece 
or at least notify responsible people that such a change is needed -- if 
.end was going away, then all users should have been checked and the 
respective maintainers queried.  And given these DMA interrupts are really 
only in regular use by Linux with the onboard SCSI driver, chances are the 
breakage could be left unnoticed for a long time (I tend to run these 
systems NFS-rooted for once).

 Note these effectively are edge-triggered interrupts and may only be 
acked in hardware once all higher-level processing has been done as 
otherwise a DMA transfer will resume prematurely and all the hell will 
break loose.  I don't particularly like this double purpose these bits 
have, but there you go -- I can understand the hw engineers saw no reason 
to waste silicon for separate interrupt-ack and DMA-inhibit bits.

 I'll see what I can do about it, but I need a pointer to the offending 
change -- Ralf or anyone, can you provide me with one?

  Maciej



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux