diff options
author | Nico Huber <nico.huber@secunet.com> | 2018-03-08 16:14:15 +0100 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2018-03-20 10:01:20 +0000 |
commit | 22418428ed28d803bfca151623bbf017d1ba6bfc (patch) | |
tree | 6fbf0e0bd0ce3dd315c849309f4f62139a933756 /linux_spi.c | |
parent | a3ab6c6c3ae7ec62944aad580bbfc1701b3a8581 (diff) | |
download | flashrom-22418428ed28d803bfca151623bbf017d1ba6bfc.tar.gz flashrom-22418428ed28d803bfca151623bbf017d1ba6bfc.tar.bz2 flashrom-22418428ed28d803bfca151623bbf017d1ba6bfc.zip |
linux_spi: Reduce maximum read chunksize
It turned out that older kernels use a single buffer of `bufsiz` bytes
for combined input and output data. So we have to account for the read
command + max 4 address bytes.
Change-Id: Ide50db38af1004fde09a70b15938e77f5e1285ac
Signed-off-by: Nico Huber <nico.huber@secunet.com>
Tested-by: Julian von Mendel <git@jinvent.de>
Reviewed-on: https://review.coreboot.org/25149
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julian von Mendel <git@jinvent.de>
Reviewed-by: David Hendricks <david.hendricks@gmail.com>
Diffstat (limited to 'linux_spi.c')
-rw-r--r-- | linux_spi.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/linux_spi.c b/linux_spi.c index 1d3605aae..714e612eb 100644 --- a/linux_spi.c +++ b/linux_spi.c @@ -221,8 +221,9 @@ static int linux_spi_send_command(struct flashctx *flash, unsigned int writecnt, static int linux_spi_read(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len) { - /* Read buffer is fully utilized for data. */ - return spi_read_chunked(flash, buf, start, len, max_kernel_buf_size); + /* Older kernels use a single buffer for combined input and output + data. So account for longest possible command + address, too. */ + return spi_read_chunked(flash, buf, start, len, max_kernel_buf_size - 5); } static int linux_spi_write_256(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len) |