From patchwork Fri Jan 20 00:16:52 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Kernel panic when reading mtd device Date: Thu, 19 Jan 2012 14:16:52 -0000 From: "Shawn J. Goff" X-Patchwork-Id: 136928 Message-Id: To: linux-mtd@lists.infradead.org I believe the problem is in drivers/spi/atmel_spi.c. It looks like it needs to break the transfer down into chunks that can fit in the buffer. It seems that this driver as it exists in the Linux4SAM tree ( https://github.com/linux4sam/linux-at91/tree/linus2639_5series_1.x ) is unfinished(?) As a quick workaround, I did the following, which allows me to function for now. diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c index ca9dab5..825371f 100644 --- a/drivers/spi/atmel_spi.c +++ b/drivers/spi/atmel_spi.c @@ -463,7 +463,7 @@ static void atmel_spi_next_xfer(struct spi_master *master, as->current_transfer = xfer; - if (atmel_spi_use_dma(xfer)) { + if (atmel_spi_use_dma(xfer) && xfer->len <= BUFFER_SIZE) { if (!atmel_spi_next_xfer_dma(master, xfer)) return; else