On Sat, Jun 01, 2013 at 03:06:24AM +0400, Sergei Shtylyov wrote: > Hello. > > On 06/01/2013 02:38 AM, Sergei Shtylyov wrote: > > >The driver's interrupt handling code is too picky in deciding whether it should > >handle an interrupt or not which causes completely unneeded spurious interrupts. > >Thus make sata_rcar_{ata|serr}_interrupt() *void*; add ATA status register read > >to sata_rcar_ata_interrupt() to clear an unexpected ATA interrupt -- it doesn't > >get cleared by writing to the SATAINTSTAT register in the interrupt mode we use. > > > >Also, in sata_rcar_ata_interrupt() we should check SATAINTSTAT register only for > >enabled interrupts and we should clear only those interrupts that we have read > >as active first time around, because else we have a race and risk clearing an > >interrupt that can occur between read and write of the SATAINTSTAT register > >and never registering it... > > > >Signed-off-by: Sergei Shtylyov <sergei.shtylyov@xxxxxxxxxxxxxxxxxx> > > Darn, I forgot to Cc: stable@xxxxxxxxxxxxxxx again. Applied to libata/for-3.10-fixes w/ stable cc'd. BTW, the driver generates the following compile warning. CC drivers/ata/sata_rcar.o drivers/ata/sata_rcar.c: In function ‘sata_rcar_thaw’: drivers/ata/sata_rcar.c:183:2: warning: large integer implicitly truncated to unsigned type [-Woverflow] Care to fix it? Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html