RE: [PATCH] atmel_spi: fix hang due to missed interrupt

From: Gerard Kam
Date: Fri Aug 01 2008 - 16:14:20 EST


Hi there

> -----Original Message-----
> From: Haavard Skinnemoen [mailto:haavard.skinnemoen@xxxxxxxxx]
> Sent: Friday, August 01, 2008 6:50 AM
>
> Haavard Skinnemoen <haavard.skinnemoen@xxxxxxxxx> wrote:
> > spi_writel(as, RNCR, 0);
> > spi_writel(as, TNCR, 0);

> These writes are also completely pointless -- RNCR is zeroed
> automatically after it gets shifted into RCR.

While looking at the patch yesterday I was thinking the same thing. Now it
bugs me that this observation didn't occur when I was working on this
problem. Maybe the code symmetry makes it look "correct".

> Actually, I think the real bug happens right here

You're probably correct. A race condition that intermittently clears a
pending interrupt fits the observed symptom.


> As for the overruns, I'm beginning to suspect that the only way to get
> rid of those and still maintain a reasonable transfer rate is to use
> bounce buffers in faster RAM (e.g. on-chip SRAM).

For my at91sam9260 board, I eliminated one cause of SPI overruns by lowering
the interrupt priorities of the six USARTs (default was 5, changed to 4)
relative to the two SPI controllers (default is 5). The test I used for
this issue is 'ls -lR' on the flash filesystem.

Regards -- Gerard

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/