From 27ed18abdec9987f4a22e4b8eb40f2a1af548e72 Mon Sep 17 00:00:00 2001 From: tsutsui Date: Sun, 23 Jun 2019 06:29:22 +0000 Subject: Fix "mvsata:0:0:1: buffer load failed: error=27" failure. PR/54205 Ok'ed by jdolecek@. Should be pulled up to netbsd-8. --- sys/dev/ic/mvsata.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'sys/dev') diff --git a/sys/dev/ic/mvsata.c b/sys/dev/ic/mvsata.c index 2834f0ab6b9..23968c434fb 100644 --- a/sys/dev/ic/mvsata.c +++ b/sys/dev/ic/mvsata.c @@ -1,4 +1,4 @@ -/* $NetBSD: mvsata.c,v 1.46 2018/11/12 20:54:03 jdolecek Exp $ */ +/* $NetBSD: mvsata.c,v 1.47 2019/06/23 06:29:22 tsutsui Exp $ */ /* * Copyright (c) 2008 KIYOHARA Takashi * All rights reserved. @@ -26,7 +26,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: mvsata.c,v 1.46 2018/11/12 20:54:03 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mvsata.c,v 1.47 2019/06/23 06:29:22 tsutsui Exp $"); #include "opt_mvsata.h" @@ -113,7 +113,8 @@ int mvsata_debug = 0; sending a cmd */ #define ATAPI_MODE_DELAY 1000 /* 1s, timeout for SET_FEATURE cmds */ -#define MVSATA_EPRD_MAX_SIZE (sizeof(struct eprd) * (MAXPHYS / PAGE_SIZE)) +#define MVSATA_MAX_SEGS (MAXPHYS / PAGE_SIZE + 1) +#define MVSATA_EPRD_MAX_SIZE (sizeof(struct eprd) * MVSATA_MAX_SEGS) static void mvsata_probe_drive(struct ata_channel *); @@ -3110,7 +3111,7 @@ mvsata_port_init(struct mvsata_hc *mvhc, int port) } for (i = 0; i < MVSATA_EDMAQ_LEN; i++) { rv = bus_dmamap_create(mvport->port_dmat, MAXPHYS, - MAXPHYS / PAGE_SIZE, MAXPHYS, 0, BUS_DMA_NOWAIT, + MVSATA_MAX_SEGS, MAXPHYS, 0, BUS_DMA_NOWAIT, &mvport->port_reqtbl[i].data_dmamap); if (rv != 0) { aprint_error("%s:%d:%d:" -- cgit