Module Name: src Committed By: palle Date: Sun Feb 23 20:48:43 UTC 2025
Modified Files: src/sys/arch/sparc64/dev: vdsk.c Log Message: sun4v: Ensure that the ldc map table entries are properly cleared. It has been observed that the inner while loop in vdsk_submit_cmd() may encounter stale entries resulting in an endless loop To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/arch/sparc64/dev/vdsk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/sparc64/dev/vdsk.c diff -u src/sys/arch/sparc64/dev/vdsk.c:1.18 src/sys/arch/sparc64/dev/vdsk.c:1.19 --- src/sys/arch/sparc64/dev/vdsk.c:1.18 Thu Jun 20 18:41:45 2024 +++ src/sys/arch/sparc64/dev/vdsk.c Sun Feb 23 20:48:43 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: vdsk.c,v 1.18 2024/06/20 18:41:45 palle Exp $ */ +/* $NetBSD: vdsk.c,v 1.19 2025/02/23 20:48:43 palle Exp $ */ /* $OpenBSD: vdsk.c,v 1.46 2015/01/25 21:42:13 kettenis Exp $ */ /* * Copyright (c) 2009, 2011 Mark Kettenis @@ -717,6 +717,8 @@ vdsk_rx_vio_rdx(struct vdsk_softc *sc, s sc->sc_tx_cnt = 0; sc->sc_lm->lm_next = 1; sc->sc_lm->lm_count = 1; + for (int i = sc->sc_lm->lm_next; i < sc->sc_lm->lm_nentries; i++) + sc->sc_lm->lm_slot[i].entry = 0; while (sc->sc_tx_prod != prod) vdsk_submit_cmd(sc, sc->sc_vsd[sc->sc_tx_prod].vsd_xs); break;