aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/altera
diff options
context:
space:
mode:
authorScott Long <scottl@FreeBSD.org>2020-02-07 09:22:08 +0000
committerScott Long <scottl@FreeBSD.org>2020-02-07 09:22:08 +0000
commitd176b8039e91164cd25271ff6191a4fb1a03fe97 (patch)
treed1382f2fb54cb240d3aeda803ae80070bf8ecf13 /sys/dev/altera
parenta2abae8dc92a5778b3405cfbc1f20eaf7a067074 (diff)
Notes
Diffstat (limited to 'sys/dev/altera')
-rw-r--r--sys/dev/altera/avgen/altera_avgen.c10
-rw-r--r--sys/dev/altera/sdcard/altera_sdcard_io.c22
2 files changed, 17 insertions, 15 deletions
diff --git a/sys/dev/altera/avgen/altera_avgen.c b/sys/dev/altera/avgen/altera_avgen.c
index 86f45ea42f4a..d7dd7d29b1e0 100644
--- a/sys/dev/altera/avgen/altera_avgen.c
+++ b/sys/dev/altera/avgen/altera_avgen.c
@@ -252,11 +252,13 @@ altera_avgen_disk_strategy(struct bio *bp)
void *data;
long bcount;
daddr_t pblkno;
+ int error;
sc = bp->bio_disk->d_drv1;
data = bp->bio_data;
bcount = bp->bio_bcount;
pblkno = bp->bio_pblkno;
+ error = 0;
/*
* Serialize block reads / writes.
@@ -265,7 +267,7 @@ altera_avgen_disk_strategy(struct bio *bp)
switch (bp->bio_cmd) {
case BIO_READ:
if (!(sc->avg_flags & ALTERA_AVALON_FLAG_GEOM_READ)) {
- biofinish(bp, NULL, EIO);
+ error = EROFS;
break;
}
switch (sc->avg_width) {
@@ -324,11 +326,11 @@ altera_avgen_disk_strategy(struct bio *bp)
break;
default:
- panic("%s: unsupported I/O operation %d", __func__,
- bp->bio_cmd);
+ error = EOPNOTSUPP;
+ break;
}
mtx_unlock(&sc->avg_disk_mtx);
- biofinish(bp, NULL, 0);
+ biofinish(bp, NULL, error);
}
static int
diff --git a/sys/dev/altera/sdcard/altera_sdcard_io.c b/sys/dev/altera/sdcard/altera_sdcard_io.c
index dc1b615bd60a..546e0af2b907 100644
--- a/sys/dev/altera/sdcard/altera_sdcard_io.c
+++ b/sys/dev/altera/sdcard/altera_sdcard_io.c
@@ -293,27 +293,27 @@ recheck:
}
static void
-altera_sdcard_io_start_internal(struct altera_sdcard_softc *sc, struct bio *bp)
+altera_sdcard_io_start_internal(struct altera_sdcard_softc *sc, struct bio **bp)
{
- switch (bp->bio_cmd) {
+ switch (*bp->bio_cmd) {
case BIO_READ:
- altera_sdcard_write_cmd_arg(sc, bp->bio_pblkno *
+ altera_sdcard_write_cmd_arg(sc, *bp->bio_pblkno *
ALTERA_SDCARD_SECTORSIZE);
altera_sdcard_write_cmd(sc, ALTERA_SDCARD_CMD_READ_BLOCK);
break;
case BIO_WRITE:
- altera_sdcard_write_rxtx_buffer(sc, bp->bio_data,
- bp->bio_bcount);
- altera_sdcard_write_cmd_arg(sc, bp->bio_pblkno *
+ altera_sdcard_write_rxtx_buffer(sc, *bp->bio_data,
+ *bp->bio_bcount);
+ altera_sdcard_write_cmd_arg(sc, *bp->bio_pblkno *
ALTERA_SDCARD_SECTORSIZE);
altera_sdcard_write_cmd(sc, ALTERA_SDCARD_CMD_WRITE_BLOCK);
break;
default:
- panic("%s: unsupported I/O operation %d", __func__,
- bp->bio_cmd);
+ biofinish(*bp, NULL, EOPNOTSUPP);
+ *bp = NULL;
}
}
@@ -332,8 +332,8 @@ altera_sdcard_io_start(struct altera_sdcard_softc *sc, struct bio *bp)
*/
KASSERT(bp->bio_bcount == ALTERA_SDCARD_SECTORSIZE,
("%s: I/O size not %d", __func__, ALTERA_SDCARD_SECTORSIZE));
- altera_sdcard_io_start_internal(sc, bp);
- sc->as_currentbio = bp;
+ altera_sdcard_io_start_internal(sc, &bp);
+ sc->as_currentbio = *bp;
sc->as_retriesleft = ALTERA_SDCARD_RETRY_LIMIT;
}
@@ -406,7 +406,7 @@ altera_sdcard_io_complete(struct altera_sdcard_softc *sc, uint16_t asr)
*/
if (sc->as_retriesleft != 0) {
sc->as_flags |= ALTERA_SDCARD_FLAG_IOERROR;
- altera_sdcard_io_start_internal(sc, bp);
+ altera_sdcard_io_start_internal(sc, &bp);
return (0);
}
sc->as_flags &= ~ALTERA_SDCARD_FLAG_IOERROR;