CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Thu Jun 10 07:48:01 UTC 2021 Modified Files: src/sys/dev/hyperv: hvs.c Log Message: hvs(4): Pass correct pointer of scsibus device to scsi_probe_bus(). To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/dev/hyperv/hvs.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/dev/hyperv/hvs.c diff -u src/sys/dev/hyperv/hvs.c:1.5 src/sys/dev/hyperv/hvs.c:1.6 --- src/sys/dev/hyperv/hvs.c:1.5 Sat Apr 24 23:36:54 2021 +++ src/sys/dev/hyperv/hvs.c Thu Jun 10 07:48:00 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: hvs.c,v 1.5 2021/04/24 23:36:54 thorpej Exp $ */ +/* $NetBSD: hvs.c,v 1.6 2021/06/10 07:48:00 nonaka Exp $ */ /* $OpenBSD: hvs.c,v 1.17 2017/08/10 17:22:48 mikeb Exp $ */ /*- @@ -37,7 +37,7 @@ /* #define HVS_DEBUG_IO */ #include -__KERNEL_RCSID(0, "$NetBSD: hvs.c,v 1.5 2021/04/24 23:36:54 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hvs.c,v 1.6 2021/06/10 07:48:00 nonaka Exp $"); #include #include @@ -833,7 +833,7 @@ hvs_scsi_probe(void *arg) struct hvs_softc *sc = arg; if (sc->sc_scsibus != NULL) - scsi_probe_bus((void *)sc->sc_scsibus, -1, -1); + scsi_probe_bus(device_private(sc->sc_scsibus), -1, -1); } static void
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Fri Jan 29 04:38:49 UTC 2021 Modified Files: src/sys/dev/hyperv: if_hvn.c Log Message: hvn(4): Don't wait forever. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/dev/hyperv/if_hvn.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/dev/hyperv/if_hvn.c diff -u src/sys/dev/hyperv/if_hvn.c:1.19 src/sys/dev/hyperv/if_hvn.c:1.20 --- src/sys/dev/hyperv/if_hvn.c:1.19 Fri Dec 11 08:13:08 2020 +++ src/sys/dev/hyperv/if_hvn.c Fri Jan 29 04:38:49 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: if_hvn.c,v 1.19 2020/12/11 08:13:08 nonaka Exp $ */ +/* $NetBSD: if_hvn.c,v 1.20 2021/01/29 04:38:49 nonaka Exp $ */ /* $OpenBSD: if_hvn.c,v 1.39 2018/03/11 14:31:34 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.19 2020/12/11 08:13:08 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.20 2021/01/29 04:38:49 nonaka Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1070,7 +1070,8 @@ hvn_nvs_cmd(struct hvn_softc *sc, void * if (cold) delay(1000); else -tsleep(cmd, PRIBIO, "nvsout", mstohz(1)); +tsleep(cmd, PRIBIO, "nvsout", +uimax(1, mstohz(1))); } else if (rv) { DPRINTF("%s: NVSP operation %u send error %d\n", device_xname(sc->sc_dev), hdr->nvs_type, rv); @@ -1095,7 +1096,7 @@ hvn_nvs_cmd(struct hvn_softc *sc, void * splx(s); } else tsleep(sc->sc_nvsrsp, PRIBIO | PCATCH, "nvscmd", - mstohz(1)); + uimax(1, mstohz(1))); } while (--timo > 0 && sc->sc_nvsdone != 1); if (timo == 0 && sc->sc_nvsdone != 1) { @@ -1393,7 +1394,8 @@ hvn_rndis_cmd(struct hvn_softc *sc, stru if (cold) delay(1000); else -tsleep(rc, PRIBIO, "rndisout", mstohz(1)); +tsleep(rc, PRIBIO, "rndisout", +uimax(1, mstohz(1))); } else if (rv) { DPRINTF("%s: RNDIS operation %u send error %d\n", device_xname(sc->sc_dev), hdr->rm_type, rv); @@ -1422,7 +1424,8 @@ hvn_rndis_cmd(struct hvn_softc *sc, stru hvn_nvs_intr(sc); splx(s); } else - tsleep(rc, PRIBIO | PCATCH, "rndiscmd", mstohz(1)); + tsleep(rc, PRIBIO | PCATCH, "rndiscmd", + uimax(1, mstohz(1))); } while (--timo > 0 && rc->rc_done != 1); bus_dmamap_sync(sc->sc_dmat, rc->rc_dmap, 0, PAGE_SIZE,
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Fri Jan 29 04:38:34 UTC 2021 Modified Files: src/sys/dev/hyperv: vmbus.c Log Message: vmbus(4): Don't wait forever. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/dev/hyperv/vmbus.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/dev/hyperv/vmbus.c diff -u src/sys/dev/hyperv/vmbus.c:1.11 src/sys/dev/hyperv/vmbus.c:1.12 --- src/sys/dev/hyperv/vmbus.c:1.11 Tue May 26 16:08:55 2020 +++ src/sys/dev/hyperv/vmbus.c Fri Jan 29 04:38:34 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: vmbus.c,v 1.11 2020/05/26 16:08:55 nonaka Exp $ */ +/* $NetBSD: vmbus.c,v 1.12 2021/01/29 04:38:34 nonaka Exp $ */ /* $OpenBSD: hyperv.c,v 1.43 2017/06/27 13:56:15 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.11 2020/05/26 16:08:55 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.12 2021/01/29 04:38:34 nonaka Exp $"); #include #include @@ -608,7 +608,8 @@ vmbus_start(struct vmbus_softc *sc, stru hyperv_intr(); splx(s); } else - tsleep(wchan, PRIBIO, wchan, mstohz(delays[i])); + tsleep(wchan, PRIBIO, wchan, + uimax(1, mstohz(delays[i] / 1000))); } if (status != HYPERCALL_STATUS_SUCCESS) { device_printf(sc->sc_dev,
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Fri Jan 29 04:38:18 UTC 2021 Modified Files: src/sys/dev/hyperv: hvkbd.c Log Message: hvkbd(4): Don't wait forever. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/dev/hyperv/hvkbd.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/dev/hyperv/hvkbd.c diff -u src/sys/dev/hyperv/hvkbd.c:1.6 src/sys/dev/hyperv/hvkbd.c:1.7 --- src/sys/dev/hyperv/hvkbd.c:1.6 Fri Nov 22 12:40:07 2019 +++ src/sys/dev/hyperv/hvkbd.c Fri Jan 29 04:38:18 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: hvkbd.c,v 1.6 2019/11/22 12:40:07 nonaka Exp $ */ +/* $NetBSD: hvkbd.c,v 1.7 2021/01/29 04:38:18 nonaka Exp $ */ /*- * Copyright (c) 2017 Microsoft Corp. @@ -36,7 +36,7 @@ #endif /* _KERNEL_OPT */ #include -__KERNEL_RCSID(0, "$NetBSD: hvkbd.c,v 1.6 2019/11/22 12:40:07 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hvkbd.c,v 1.7 2021/01/29 04:38:18 nonaka Exp $"); #include #include @@ -350,7 +350,8 @@ hvkbd_connect(struct hvkbd_softc *sc) hvkbd_intr(sc); splx(s); } else - tsleep(sc, PRIBIO | PCATCH, "hvkbdcon", mstohz(1)); + tsleep(sc, PRIBIO | PCATCH, "hvkbdcon", + uimax(1, mstohz(1))); } while (--timo > 0 && sc->sc_connected == 0); if (timo == 0 && sc->sc_connected == 0) {
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Fri Dec 11 08:13:08 UTC 2020 Modified Files: src/sys/dev/hyperv: if_hvn.c Log Message: hvn(4): fix unable to ifconfig up/down. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/dev/hyperv/if_hvn.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/dev/hyperv/if_hvn.c diff -u src/sys/dev/hyperv/if_hvn.c:1.18 src/sys/dev/hyperv/if_hvn.c:1.19 --- src/sys/dev/hyperv/if_hvn.c:1.18 Sun May 24 10:31:59 2020 +++ src/sys/dev/hyperv/if_hvn.c Fri Dec 11 08:13:08 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_hvn.c,v 1.18 2020/05/24 10:31:59 nonaka Exp $ */ +/* $NetBSD: if_hvn.c,v 1.19 2020/12/11 08:13:08 nonaka Exp $ */ /* $OpenBSD: if_hvn.c,v 1.39 2018/03/11 14:31:34 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.18 2020/05/24 10:31:59 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.19 2020/12/11 08:13:08 nonaka Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -387,26 +387,7 @@ hvn_ioctl(struct ifnet *ifp, u_long comm s = splnet(); - switch (command) { - case SIOCSIFFLAGS: - if (ifp->if_flags & IFF_UP) { - if (ifp->if_flags & IFF_RUNNING) -error = ENETRESET; - else { -error = hvn_init(ifp); -if (error) - ifp->if_flags &= ~IFF_UP; - } - } else { - if (ifp->if_flags & IFF_RUNNING) -hvn_stop(ifp, 1); - } - break; - default: - error = ether_ioctl(ifp, command, data); - break; - } - + error = ether_ioctl(ifp, command, data); if (error == ENETRESET) { if (ifp->if_flags & IFF_RUNNING) hvn_iff(sc);
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Tue May 26 16:08:55 UTC 2020 Modified Files: src/sys/dev/hyperv: vmbus.c vmbusvar.h Log Message: vmbus(4): Do not call hyperv_dma_alloc() in interrupt context. The channel offer and rescind process is performed on another context. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/dev/hyperv/vmbus.c cvs rdiff -u -r1.4 -r1.5 src/sys/dev/hyperv/vmbusvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/hyperv/vmbus.c diff -u src/sys/dev/hyperv/vmbus.c:1.10 src/sys/dev/hyperv/vmbus.c:1.11 --- src/sys/dev/hyperv/vmbus.c:1.10 Tue May 26 16:00:06 2020 +++ src/sys/dev/hyperv/vmbus.c Tue May 26 16:08:55 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: vmbus.c,v 1.10 2020/05/26 16:00:06 nonaka Exp $ */ +/* $NetBSD: vmbus.c,v 1.11 2020/05/26 16:08:55 nonaka Exp $ */ /* $OpenBSD: hyperv.c,v 1.43 2017/06/27 13:56:15 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.10 2020/05/26 16:00:06 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.11 2020/05/26 16:08:55 nonaka Exp $"); #include #include @@ -103,10 +103,14 @@ static void vmbus_channel_detach(struct static void vmbus_channel_pause(struct vmbus_channel *); static uint32_t vmbus_channel_unpause(struct vmbus_channel *); static uint32_t vmbus_channel_ready(struct vmbus_channel *); +static void vmbus_chevq_enqueue(struct vmbus_softc *, int, void *); +static void vmbus_process_chevq(void *); +static void vmbus_chevq_thread(void *); static void vmbus_devq_enqueue(struct vmbus_softc *, int, struct vmbus_channel *); static void vmbus_process_devq(void *); static void vmbus_devq_thread(void *); +static void vmbus_subchannel_devq_thread(void *); static struct vmbus_softc *vmbus_sc; @@ -841,15 +845,33 @@ vmbus_channel_response(struct vmbus_soft static void vmbus_channel_offer(struct vmbus_softc *sc, struct vmbus_chanmsg_hdr *hdr) { + struct vmbus_chanmsg_choffer *co; - vmbus_process_offer(sc, (struct vmbus_chanmsg_choffer *)hdr); + co = kmem_intr_alloc(sizeof(*co), KM_NOSLEEP); + if (co == NULL) { + device_printf(sc->sc_dev, + "failed to allocate an offer object\n"); + return; + } + + memcpy(co, hdr, sizeof(*co)); + vmbus_chevq_enqueue(sc, VMBUS_CHEV_TYPE_OFFER, co); } static void vmbus_channel_rescind(struct vmbus_softc *sc, struct vmbus_chanmsg_hdr *hdr) { + struct vmbus_chanmsg_chrescind *cr; + + cr = kmem_intr_alloc(sizeof(*cr), KM_NOSLEEP); + if (cr == NULL) { + device_printf(sc->sc_dev, + "failed to allocate an rescind object\n"); + return; + } - vmbus_process_rescind(sc, (struct vmbus_chanmsg_chrescind *)hdr); + memcpy(cr, hdr, sizeof(*cr)); + vmbus_chevq_enqueue(sc, VMBUS_CHEV_TYPE_RESCIND, cr); } static void @@ -906,16 +928,48 @@ vmbus_channel_scan(struct vmbus_softc *s struct vmbus_chanmsg_hdr hdr; struct vmbus_chanmsg_choffer rsp; + TAILQ_INIT(&sc->sc_prichans); + mutex_init(&sc->sc_prichan_lock, MUTEX_DEFAULT, IPL_NET); TAILQ_INIT(&sc->sc_channels); mutex_init(&sc->sc_channel_lock, MUTEX_DEFAULT, IPL_NET); + /* + * This queue serializes vmbus channel offer and rescind messages. + */ + SIMPLEQ_INIT(&sc->sc_chevq); + mutex_init(&sc->sc_chevq_lock, MUTEX_DEFAULT, IPL_NET); + cv_init(&sc->sc_chevq_cv, "hvchevcv"); + if (kthread_create(PRI_NONE, KTHREAD_MPSAFE, NULL, + vmbus_chevq_thread, sc, NULL, "hvchevq") != 0) { + DPRINTF("%s: failed to create prich chevq thread\n", + device_xname(sc->sc_dev)); + return -1; + } + + /* + * This queue serializes vmbus devices' attach and detach + * for channel offer and rescind messages. + */ SIMPLEQ_INIT(&sc->sc_devq); mutex_init(&sc->sc_devq_lock, MUTEX_DEFAULT, IPL_NET); cv_init(&sc->sc_devq_cv, "hvdevqcv"); + if (kthread_create(PRI_NONE, KTHREAD_MPSAFE, NULL, + vmbus_devq_thread, sc, NULL, "hvdevq") != 0) { + DPRINTF("%s: failed to create prich devq thread\n", + device_xname(sc->sc_dev)); + return -1; + } + /* + * This queue handles sub-channel detach, so that vmbus + * device's detach running in sc_devq can drain its sub-channels. + */ + SIMPLEQ_INIT(&sc->sc_subch_devq); + mutex_init(&sc->sc_subch_devq_lock, MUTEX_DEFAULT, IPL_NET); + cv_init(&sc->sc_subch_devq_cv, "hvsdvqcv"); if (kthread_create(PRI_NONE, KTHREAD_MPSAFE, NULL, - vmbus_devq_thread, sc, NULL, "hvoffer") != 0) { - DPRINTF("%s: failed to create offer thread\n", + vmbus_subchannel_devq_thread, sc, NULL, "hvsdevq") != 0) { + DPRINTF("%s: failed to create subch devq thread\n", device_xname(sc->sc_dev)); return -1; } @@ -932,6 +986,9 @@ vmbus_channel_scan(struct vmbus_softc *s while (!ISSET(sc->sc_flags, VMBUS_SCFLAG_OFFERS_DELIVERED)) tsleep(&sc->sc_devq, PRIBIO, "hvscan", 1); + mutex_enter(&sc->sc_chevq_lock); + vmbus_process_chevq(sc); + mutex_exit(&sc->sc_chevq_lock); mutex_enter(&sc->sc_devq_lock
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Tue May 26 16:00:06 UTC 2020 Modified Files: src/sys/dev/hyperv: vmbus.c Log Message: vmbus(4): Fixed incorrect use of vmbus_wait() in vmbus_channel_scan(). Found by kUBSan. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/dev/hyperv/vmbus.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/dev/hyperv/vmbus.c diff -u src/sys/dev/hyperv/vmbus.c:1.9 src/sys/dev/hyperv/vmbus.c:1.10 --- src/sys/dev/hyperv/vmbus.c:1.9 Mon May 25 10:14:58 2020 +++ src/sys/dev/hyperv/vmbus.c Tue May 26 16:00:06 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: vmbus.c,v 1.9 2020/05/25 10:14:58 nonaka Exp $ */ +/* $NetBSD: vmbus.c,v 1.10 2020/05/26 16:00:06 nonaka Exp $ */ /* $OpenBSD: hyperv.c,v 1.43 2017/06/27 13:56:15 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.9 2020/05/25 10:14:58 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.10 2020/05/26 16:00:06 nonaka Exp $"); #include #include @@ -76,9 +76,6 @@ static int vmbus_cmd(struct vmbus_softc int); static int vmbus_start(struct vmbus_softc *, struct vmbus_msg *, paddr_t); static int vmbus_reply(struct vmbus_softc *, struct vmbus_msg *); -static void vmbus_wait(struct vmbus_softc *, - int (*done)(struct vmbus_softc *, struct vmbus_msg *), - struct vmbus_msg *, void *, const char *); static uint16_t vmbus_intr_signal(struct vmbus_softc *, paddr_t); static void vmbus_event_proc(void *, struct cpu_info *); static void vmbus_event_proc_compat(void *, struct cpu_info *); @@ -642,36 +639,26 @@ vmbus_reply_done(struct vmbus_softc *sc, static int vmbus_reply(struct vmbus_softc *sc, struct vmbus_msg *msg) { + int s; if (msg->msg_flags & MSGF_NOQUEUE) return 0; - vmbus_wait(sc, vmbus_reply_done, msg, msg, "hvreply"); - - mutex_enter(&sc->sc_rsp_lock); - TAILQ_REMOVE(&sc->sc_rsps, msg, msg_entry); - mutex_exit(&sc->sc_rsp_lock); - - return 0; -} - -static void -vmbus_wait(struct vmbus_softc *sc, -int (*cond)(struct vmbus_softc *, struct vmbus_msg *), -struct vmbus_msg *msg, void *wchan, const char *wmsg) -{ - int s; - - while (!cond(sc, msg)) { + while (!vmbus_reply_done(sc, msg)) { if (msg->msg_flags & MSGF_NOSLEEP) { delay(1000); s = splnet(); hyperv_intr(); splx(s); } else - tsleep(wchan, PRIBIO, wmsg ? wmsg : "hvwait", - mstohz(1)); + tsleep(msg, PRIBIO, "hvreply", 1); } + + mutex_enter(&sc->sc_rsp_lock); + TAILQ_REMOVE(&sc->sc_rsps, msg, msg_entry); + mutex_exit(&sc->sc_rsp_lock); + + return 0; } static uint16_t @@ -914,13 +901,6 @@ hyperv_guid_sprint(struct hyperv_guid *g } static int -vmbus_channel_scan_done(struct vmbus_softc *sc, struct vmbus_msg *msg __unused) -{ - - return ISSET(sc->sc_flags, VMBUS_SCFLAG_OFFERS_DELIVERED); -} - -static int vmbus_channel_scan(struct vmbus_softc *sc) { struct vmbus_chanmsg_hdr hdr; @@ -949,8 +929,8 @@ vmbus_channel_scan(struct vmbus_softc *s return -1; } - vmbus_wait(sc, vmbus_channel_scan_done, (struct vmbus_msg *)&hdr, - &sc->sc_devq, "hvscan"); + while (!ISSET(sc->sc_flags, VMBUS_SCFLAG_OFFERS_DELIVERED)) + tsleep(&sc->sc_devq, PRIBIO, "hvscan", 1); mutex_enter(&sc->sc_devq_lock); vmbus_process_devq(sc);
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Mon May 25 10:14:58 UTC 2020 Modified Files: src/sys/dev/hyperv: hvs.c vmbus.c Log Message: Use howmany() macro. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/dev/hyperv/hvs.c cvs rdiff -u -r1.8 -r1.9 src/sys/dev/hyperv/vmbus.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/dev/hyperv/hvs.c diff -u src/sys/dev/hyperv/hvs.c:1.3 src/sys/dev/hyperv/hvs.c:1.4 --- src/sys/dev/hyperv/hvs.c:1.3 Mon Nov 25 08:53:39 2019 +++ src/sys/dev/hyperv/hvs.c Mon May 25 10:14:58 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: hvs.c,v 1.3 2019/11/25 08:53:39 nonaka Exp $ */ +/* $NetBSD: hvs.c,v 1.4 2020/05/25 10:14:58 nonaka Exp $ */ /* $OpenBSD: hvs.c,v 1.17 2017/08/10 17:22:48 mikeb Exp $ */ /*- @@ -37,7 +37,7 @@ /* #define HVS_DEBUG_IO */ #include -__KERNEL_RCSID(0, "$NetBSD: hvs.c,v 1.3 2019/11/25 08:53:39 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hvs.c,v 1.4 2020/05/25 10:14:58 nonaka Exp $"); #include #include @@ -180,7 +180,7 @@ union hvs_cmd { #define HVS_RING_SIZE (20 * PAGE_SIZE) #define HVS_MAX_CCB 128 -#define HVS_MAX_SGE (MAXPHYS / PAGE_SIZE + 1) +#define HVS_MAX_SGE (howmany(MAXPHYS, PAGE_SIZE) + 1) struct hvs_softc; Index: src/sys/dev/hyperv/vmbus.c diff -u src/sys/dev/hyperv/vmbus.c:1.8 src/sys/dev/hyperv/vmbus.c:1.9 --- src/sys/dev/hyperv/vmbus.c:1.8 Tue Dec 10 12:20:20 2019 +++ src/sys/dev/hyperv/vmbus.c Mon May 25 10:14:58 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: vmbus.c,v 1.8 2019/12/10 12:20:20 nonaka Exp $ */ +/* $NetBSD: vmbus.c,v 1.9 2020/05/25 10:14:58 nonaka Exp $ */ /* $OpenBSD: hyperv.c,v 1.43 2017/06/27 13:56:15 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.8 2019/12/10 12:20:20 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.9 2020/05/25 10:14:58 nonaka Exp $"); #include #include @@ -1911,7 +1911,7 @@ vmbus_handle_alloc(struct vmbus_channel /* Allocate additional gpadl_body structures if required */ if (left > 0) { - ncmds = MAX(1, left / VMBUS_NPFNBODY + left % VMBUS_NPFNBODY); + ncmds = howmany(left, VMBUS_NPFNBODY); bodylen = ncmds * VMBUS_MSG_DSIZE_MAX; body = kmem_zalloc(bodylen, kmemflags); if (body == NULL) {
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Sun May 24 10:32:00 UTC 2020 Modified Files: src/sys/dev/hyperv: if_hvn.c Log Message: hvn(4): Prevent from occur panic when acquiring the media status. hvn(4) sleeps during hvn_media_status(), and thus requires an adaptive mutex for the media lock. Taken from recent iwm(4) change. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/dev/hyperv/if_hvn.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/dev/hyperv/if_hvn.c diff -u src/sys/dev/hyperv/if_hvn.c:1.17 src/sys/dev/hyperv/if_hvn.c:1.18 --- src/sys/dev/hyperv/if_hvn.c:1.17 Tue Feb 4 05:25:38 2020 +++ src/sys/dev/hyperv/if_hvn.c Sun May 24 10:31:59 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_hvn.c,v 1.17 2020/02/04 05:25:38 thorpej Exp $ */ +/* $NetBSD: if_hvn.c,v 1.18 2020/05/24 10:31:59 nonaka Exp $ */ /* $OpenBSD: if_hvn.c,v 1.39 2018/03/11 14:31:34 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.17 2020/02/04 05:25:38 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.18 2020/05/24 10:31:59 nonaka Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -133,6 +133,7 @@ struct hvn_softc { struct ethercom sc_ec; struct ifmedia sc_media; + kmutex_t sc_media_lock; /* XXX */ struct if_percpuq *sc_ipq; intsc_link_state; intsc_promisc; @@ -294,8 +295,10 @@ hvn_attach(device_t parent, device_t sel /* Initialize ifmedia structures. */ sc->sc_ec.ec_ifmedia = &sc->sc_media; - ifmedia_init(&sc->sc_media, IFM_IMASK, hvn_media_change, - hvn_media_status); + /* XXX media locking needs revisiting */ + mutex_init(&sc->sc_media_lock, MUTEX_DEFAULT, IPL_SOFTNET); + ifmedia_init_with_lock(&sc->sc_media, IFM_IMASK, + hvn_media_change, hvn_media_status, &sc->sc_media_lock); ifmedia_add(&sc->sc_media, IFM_ETHER | IFM_MANUAL, 0, NULL); ifmedia_set(&sc->sc_media, IFM_ETHER | IFM_MANUAL); @@ -341,7 +344,9 @@ hvn_attach(device_t parent, device_t sel fail4: hvn_rndis_detach(sc); if_percpuq_destroy(sc->sc_ipq); -fail3: hvn_tx_ring_destroy(sc); +fail3: ifmedia_fini(&sc->sc_media); + mutex_destroy(&sc->sc_media_lock); + hvn_tx_ring_destroy(sc); fail2: hvn_rx_ring_destroy(sc); fail1: hvn_nvs_detach(sc); } @@ -363,6 +368,7 @@ hvn_detach(device_t self, int flags) ether_ifdetach(ifp); if_detach(ifp); ifmedia_fini(&sc->sc_media); + mutex_destroy(&sc->sc_media_lock); if_percpuq_destroy(sc->sc_ipq); hvn_rndis_detach(sc);
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: thorpej Date: Wed Jan 29 05:55:16 UTC 2020 Modified Files: src/sys/dev/hyperv: if_hvn.c Log Message: Adopt . To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/dev/hyperv/if_hvn.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/dev/hyperv/if_hvn.c diff -u src/sys/dev/hyperv/if_hvn.c:1.15 src/sys/dev/hyperv/if_hvn.c:1.16 --- src/sys/dev/hyperv/if_hvn.c:1.15 Fri Dec 27 05:59:53 2019 +++ src/sys/dev/hyperv/if_hvn.c Wed Jan 29 05:55:16 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_hvn.c,v 1.15 2019/12/27 05:59:53 nonaka Exp $ */ +/* $NetBSD: if_hvn.c,v 1.16 2020/01/29 05:55:16 thorpej Exp $ */ /* $OpenBSD: if_hvn.c,v 1.39 2018/03/11 14:31:34 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.15 2019/12/27 05:59:53 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.16 2020/01/29 05:55:16 thorpej Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -498,7 +498,7 @@ hvn_start(struct ifnet *ifp) if (hvn_encap(sc, m, &txd)) { /* the chain is too large */ - ifp->if_oerrors++; + if_statinc(ifp, if_oerrors); m_freem(m); continue; } @@ -507,7 +507,7 @@ hvn_start(struct ifnet *ifp) if (hvn_rndis_output(sc, txd)) { hvn_decap(sc, txd); - ifp->if_oerrors++; + if_statinc(ifp, if_oerrors); m_freem(m); continue; } @@ -678,7 +678,7 @@ hvn_txeof(struct hvn_softc *sc, uint64_t BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); bus_dmamap_unload(sc->sc_dmat, txd->txd_dmap); m_freem(m); - ifp->if_opackets++; + if_statinc(ifp, if_opackets); txd->txd_ready = 1; @@ -1560,7 +1560,7 @@ hvn_rxeof(struct hvn_softc *sc, uint8_t if ((m = hvn_devget(sc, buf + RNDIS_HEADER_OFFSET + pkt->rm_dataoffset, pkt->rm_datalen)) == NULL) { - ifp->if_ierrors++; + if_statinc(ifp, if_ierrors); return; }
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Fri Dec 27 05:59:53 UTC 2019 Modified Files: src/sys/dev/hyperv: if_hvn.c Log Message: hvn(4): Handle CFI field of VLAN. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/dev/hyperv/if_hvn.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/dev/hyperv/if_hvn.c diff -u src/sys/dev/hyperv/if_hvn.c:1.14 src/sys/dev/hyperv/if_hvn.c:1.15 --- src/sys/dev/hyperv/if_hvn.c:1.14 Fri Dec 27 05:56:42 2019 +++ src/sys/dev/hyperv/if_hvn.c Fri Dec 27 05:59:53 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_hvn.c,v 1.14 2019/12/27 05:56:42 nonaka Exp $ */ +/* $NetBSD: if_hvn.c,v 1.15 2019/12/27 05:59:53 nonaka Exp $ */ /* $OpenBSD: if_hvn.c,v 1.39 2018/03/11 14:31:34 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.14 2019/12/27 05:56:42 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.15 2019/12/27 05:59:53 nonaka Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -67,6 +67,9 @@ __KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1 #ifndef EVL_PRIO_BITS #define EVL_PRIO_BITS 13 #endif +#ifndef EVL_CFI_BITS +#define EVL_CFI_BITS 12 +#endif #define HVN_NVS_MSGSIZE 32 #define HVN_NVS_BUFSIZE PAGE_SIZE @@ -584,7 +587,7 @@ hvn_encap(struct hvn_softc *sc, struct m tag = vlan_get_tag(m); vlan = NDIS_VLAN_INFO_MAKE(EVL_VLANOFTAG(tag), - EVL_PRIOFTAG(tag), 0); + EVL_PRIOFTAG(tag), EVL_CFIOFTAG(tag)); cp = hvn_rndis_pktinfo_append(pkt, HVN_RNDIS_PKT_LEN, NDIS_VLAN_INFO_SIZE, NDIS_PKTINFO_TYPE_VLAN); memcpy(cp, &vlan, NDIS_VLAN_INFO_SIZE); @@ -1593,6 +1596,7 @@ hvn_rxeof(struct hvn_softc *sc, uint8_t if (vlan != 0x) { uint16_t t = NDIS_VLAN_INFO_ID(vlan); t |= NDIS_VLAN_INFO_PRI(vlan) << EVL_PRIO_BITS; +t |= NDIS_VLAN_INFO_CFI(vlan) << EVL_CFI_BITS; vlan_set_tag(m, t); } break;
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Fri Dec 27 05:56:42 UTC 2019 Modified Files: src/sys/dev/hyperv: if_hvn.c Log Message: hvn(4): Use vlan_{get,set,has}_tag(). To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/dev/hyperv/if_hvn.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/dev/hyperv/if_hvn.c diff -u src/sys/dev/hyperv/if_hvn.c:1.13 src/sys/dev/hyperv/if_hvn.c:1.14 --- src/sys/dev/hyperv/if_hvn.c:1.13 Tue Dec 10 12:20:20 2019 +++ src/sys/dev/hyperv/if_hvn.c Fri Dec 27 05:56:42 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_hvn.c,v 1.13 2019/12/10 12:20:20 nonaka Exp $ */ +/* $NetBSD: if_hvn.c,v 1.14 2019/12/27 05:56:42 nonaka Exp $ */ /* $OpenBSD: if_hvn.c,v 1.39 2018/03/11 14:31:34 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.13 2019/12/10 12:20:20 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.14 2019/12/27 05:56:42 nonaka Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -577,13 +577,14 @@ hvn_encap(struct hvn_softc *sc, struct m } txd->txd_buf = m; - if (m->m_flags & M_VLANTAG) { + if (vlan_has_tag(m)) { uint32_t vlan; char *cp; + uint16_t tag; - vlan = NDIS_VLAN_INFO_MAKE( - EVL_VLANOFTAG(m->m_pkthdr.ether_vtag), - EVL_PRIOFTAG(m->m_pkthdr.ether_vtag), 0); + tag = vlan_get_tag(m); + vlan = NDIS_VLAN_INFO_MAKE(EVL_VLANOFTAG(tag), + EVL_PRIOFTAG(tag), 0); cp = hvn_rndis_pktinfo_append(pkt, HVN_RNDIS_PKT_LEN, NDIS_VLAN_INFO_SIZE, NDIS_PKTINFO_TYPE_VLAN); memcpy(cp, &vlan, NDIS_VLAN_INFO_SIZE); @@ -1590,10 +1591,9 @@ hvn_rxeof(struct hvn_softc *sc, uint8_t case NDIS_PKTINFO_TYPE_VLAN: memcpy(&vlan, pi->rm_data, sizeof(vlan)); if (vlan != 0x) { -m->m_pkthdr.ether_vtag = -NDIS_VLAN_INFO_ID(vlan) | -(NDIS_VLAN_INFO_PRI(vlan) << EVL_PRIO_BITS); -m->m_flags |= M_VLANTAG; +uint16_t t = NDIS_VLAN_INFO_ID(vlan); +t |= NDIS_VLAN_INFO_PRI(vlan) << EVL_PRIO_BITS; +vlan_set_tag(m, t); } break; default:
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Tue Dec 10 12:20:20 UTC 2019 Modified Files: src/sys/dev/hyperv: hyperv_common.c hypervvar.h if_hvn.c vmbus.c vmbusvar.h Log Message: hvn(4) can be added and deleted dynamically. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/dev/hyperv/hyperv_common.c cvs rdiff -u -r1.3 -r1.4 src/sys/dev/hyperv/hypervvar.h \ src/sys/dev/hyperv/vmbusvar.h cvs rdiff -u -r1.12 -r1.13 src/sys/dev/hyperv/if_hvn.c cvs rdiff -u -r1.7 -r1.8 src/sys/dev/hyperv/vmbus.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/dev/hyperv/hyperv_common.c diff -u src/sys/dev/hyperv/hyperv_common.c:1.4 src/sys/dev/hyperv/hyperv_common.c:1.5 --- src/sys/dev/hyperv/hyperv_common.c:1.4 Sat Dec 7 11:45:45 2019 +++ src/sys/dev/hyperv/hyperv_common.c Tue Dec 10 12:20:20 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: hyperv_common.c,v 1.4 2019/12/07 11:45:45 nonaka Exp $ */ +/* $NetBSD: hyperv_common.c,v 1.5 2019/12/10 12:20:20 nonaka Exp $ */ /*- * Copyright (c) 2009-2012,2016-2017 Microsoft Corp. @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: hyperv_common.c,v 1.4 2019/12/07 11:45:45 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hyperv_common.c,v 1.5 2019/12/10 12:20:20 nonaka Exp $"); #include "hyperv.h" @@ -111,17 +111,18 @@ hyperv_guid2str(const struct hyperv_guid */ void * hyperv_dma_alloc(bus_dma_tag_t dmat, struct hyperv_dma *dma, bus_size_t size, -bus_size_t alignment, bus_size_t boundary, int nsegs) +bus_size_t alignment, bus_size_t boundary, int nsegs, int flags) { - const int kmemflags = cold ? KM_NOSLEEP : KM_SLEEP; - const int dmaflags = cold ? BUS_DMA_NOWAIT : BUS_DMA_WAITOK; + const int waitok = (flags & HYPERV_DMA_NOSLEEP) != HYPERV_DMA_NOSLEEP; + const int kmemflags = waitok ? KM_SLEEP: KM_NOSLEEP; + const int dmaflags = waitok ? BUS_DMA_WAITOK : BUS_DMA_NOWAIT; int rseg, error; KASSERT(dma != NULL); KASSERT(dma->segs == NULL); KASSERT(nsegs > 0); - dma->segs = kmem_zalloc(sizeof(*dma->segs) * nsegs, kmemflags); + dma->segs = kmem_intr_zalloc(sizeof(*dma->segs) * nsegs, kmemflags); if (dma->segs == NULL) return NULL; Index: src/sys/dev/hyperv/hypervvar.h diff -u src/sys/dev/hyperv/hypervvar.h:1.3 src/sys/dev/hyperv/hypervvar.h:1.4 --- src/sys/dev/hyperv/hypervvar.h:1.3 Sat Dec 7 11:45:45 2019 +++ src/sys/dev/hyperv/hypervvar.h Tue Dec 10 12:20:20 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: hypervvar.h,v 1.3 2019/12/07 11:45:45 nonaka Exp $ */ +/* $NetBSD: hypervvar.h,v 1.4 2019/12/10 12:20:20 nonaka Exp $ */ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD @@ -108,8 +108,10 @@ hyperv_dma_get_paddr(struct hyperv_dma * return dma->map->dm_segs[0].ds_addr; } +#define HYPERV_DMA_SLEEPOK 0 +#define HYPERV_DMA_NOSLEEP __BIT(0) void *hyperv_dma_alloc(bus_dma_tag_t, struct hyperv_dma *, bus_size_t, -bus_size_t, bus_size_t, int); +bus_size_t, bus_size_t, int, int); void hyperv_dma_free(bus_dma_tag_t, struct hyperv_dma *); #endif /* _KERNEL */ Index: src/sys/dev/hyperv/vmbusvar.h diff -u src/sys/dev/hyperv/vmbusvar.h:1.3 src/sys/dev/hyperv/vmbusvar.h:1.4 --- src/sys/dev/hyperv/vmbusvar.h:1.3 Sat Dec 7 11:45:45 2019 +++ src/sys/dev/hyperv/vmbusvar.h Tue Dec 10 12:20:20 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: vmbusvar.h,v 1.3 2019/12/07 11:45:45 nonaka Exp $ */ +/* $NetBSD: vmbusvar.h,v 1.4 2019/12/10 12:20:20 nonaka Exp $ */ /* $OpenBSD: hypervvar.h,v 1.13 2017/06/23 19:05:42 mikeb Exp $ */ /* @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -43,6 +44,7 @@ typedef void (*vmbus_channel_callback_t)(void *); struct vmbus_softc; +struct vmbus_channel; struct vmbus_msg { uint64_t msg_flags; @@ -57,11 +59,14 @@ struct vmbus_msg { __CTASSERT((offsetof(struct vmbus_msg, msg_req) % 8) == 0); TAILQ_HEAD(vmbus_queue, vmbus_msg); -struct vmbus_offer { - struct vmbus_chanmsg_choffer co_chan; - SIMPLEQ_ENTRY(vmbus_offer) co_entry; +struct vmbus_dev { + int vd_type; +#define VMBUS_DEV_TYPE_ATTACH 0 +#define VMBUS_DEV_TYPE_DETACH 1 + struct vmbus_channel *vd_chan; + SIMPLEQ_ENTRY(vmbus_dev) vd_entry; }; -SIMPLEQ_HEAD(vmbus_offers, vmbus_offer); +SIMPLEQ_HEAD(vmbus_devq, vmbus_dev); struct vmbus_ring_data { struct vmbus_bufring *rd_ring; @@ -72,7 +77,6 @@ struct vmbus_ring_data { uint32_t rd_dsize; }; -struct vmbus_channel; TAILQ_HEAD(vmbus_channels, vmbus_channel); struct vmbus_channel { @@ -111,6 +115,7 @@ struct vmbus_channel { uint32_t ch_flags; #define CHF_BATCHED __BIT(0) #define CHF_MONITOR __BIT(1) +#define CHF_REVOKED __BIT(2) uint8_tch_mgroup; uint8_tch_mindex; @@ -137,12 +142,6 @@ struct vmbus_attach_args { bus_space_tag_t aa_memt; }; -struct vmbus_dev { - struct vmbus_attach_args dv_aa; - SLIST_ENTRY(vmbus_dev) dv_entry; -}; -SLIST_HEAD(vmbus_devices, vmbus_d
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Tue Dec 10 11:19:25 UTC 2019 Modified Files: src/sys/dev/hyperv: if_hvn.c Log Message: hvn(4): Handle VMBUS_CHANPKT_TYPE_INBAND packet type. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/dev/hyperv/if_hvn.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/dev/hyperv/if_hvn.c diff -u src/sys/dev/hyperv/if_hvn.c:1.11 src/sys/dev/hyperv/if_hvn.c:1.12 --- src/sys/dev/hyperv/if_hvn.c:1.11 Tue Nov 26 01:46:31 2019 +++ src/sys/dev/hyperv/if_hvn.c Tue Dec 10 11:19:25 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_hvn.c,v 1.11 2019/11/26 01:46:31 nonaka Exp $ */ +/* $NetBSD: if_hvn.c,v 1.12 2019/12/10 11:19:25 nonaka Exp $ */ /* $OpenBSD: if_hvn.c,v 1.39 2018/03/11 14:31:34 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.11 2019/11/26 01:46:31 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.12 2019/12/10 11:19:25 nonaka Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1040,6 +1040,16 @@ hvn_nvs_intr(void *arg) "on receive\n", nvs->nvs_type); break; } + } else if (cph->cph_type == VMBUS_CHANPKT_TYPE_INBAND) { + switch (nvs->nvs_type) { + case HVN_NVS_TYPE_TXTBL_NOTE: +/* Useless; ignore */ +break; + default: +device_printf(sc->sc_dev, +"got notify, nvs type %u\n", nvs->nvs_type); +break; + } } else device_printf(sc->sc_dev, "unknown NVSP packet type %u\n", cph->cph_type);
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Fri Dec 6 12:46:06 UTC 2019 Modified Files: src/sys/dev/hyperv: hyperv_common.c vmbus.c Log Message: Clear the allocated memory in hyperv_dma_alloc(). To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/dev/hyperv/hyperv_common.c cvs rdiff -u -r1.5 -r1.6 src/sys/dev/hyperv/vmbus.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/dev/hyperv/hyperv_common.c diff -u src/sys/dev/hyperv/hyperv_common.c:1.2 src/sys/dev/hyperv/hyperv_common.c:1.3 --- src/sys/dev/hyperv/hyperv_common.c:1.2 Fri May 31 04:23:19 2019 +++ src/sys/dev/hyperv/hyperv_common.c Fri Dec 6 12:46:06 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: hyperv_common.c,v 1.2 2019/05/31 04:23:19 nonaka Exp $ */ +/* $NetBSD: hyperv_common.c,v 1.3 2019/12/06 12:46:06 nonaka Exp $ */ /*- * Copyright (c) 2009-2012,2016-2017 Microsoft Corp. @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: hyperv_common.c,v 1.2 2019/05/31 04:23:19 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hyperv_common.c,v 1.3 2019/12/06 12:46:06 nonaka Exp $"); #include "hyperv.h" @@ -155,6 +155,10 @@ hyperv_dma_alloc(bus_dma_tag_t dmat, str goto fail4; } + memset(dma->addr, 0, dma->map->dm_mapsize); + bus_dmamap_sync(dmat, dma->map, 0, dma->map->dm_mapsize, + BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); + return dma->addr; fail4: bus_dmamap_destroy(dmat, dma->map); Index: src/sys/dev/hyperv/vmbus.c diff -u src/sys/dev/hyperv/vmbus.c:1.5 src/sys/dev/hyperv/vmbus.c:1.6 --- src/sys/dev/hyperv/vmbus.c:1.5 Fri Nov 22 12:30:32 2019 +++ src/sys/dev/hyperv/vmbus.c Fri Dec 6 12:46:06 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: vmbus.c,v 1.5 2019/11/22 12:30:32 nonaka Exp $ */ +/* $NetBSD: vmbus.c,v 1.6 2019/12/06 12:46:06 nonaka Exp $ */ /* $OpenBSD: hyperv.c,v 1.43 2017/06/27 13:56:15 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.5 2019/11/22 12:30:32 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.6 2019/12/06 12:46:06 nonaka Exp $"); #include #include @@ -985,7 +985,6 @@ vmbus_channel_alloc(struct vmbus_softc * kmem_free(ch, sizeof(*ch)); return NULL; } - memset(ch->ch_monprm, 0, sizeof(*ch->ch_monprm)); ch->ch_refs = 1; ch->ch_sc = sc; @@ -1264,7 +1263,6 @@ vmbus_channel_ring_create(struct vmbus_c "failed to allocate channel ring\n"); return ENOMEM; } - memset(ch->ch_ring, 0, ch->ch_ring_size); memset(&ch->ch_wrd, 0, sizeof(ch->ch_wrd)); ch->ch_wrd.rd_ring = (struct vmbus_bufring *)ch->ch_ring;
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: nonaka Date: Fri Mar 1 10:02:33 UTC 2019 Modified Files: src/sys/dev/hyperv: vmbusicreg.h Log Message: Remove unused definition. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/dev/hyperv/vmbusicreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/dev/hyperv/vmbusicreg.h diff -u src/sys/dev/hyperv/vmbusicreg.h:1.1 src/sys/dev/hyperv/vmbusicreg.h:1.2 --- src/sys/dev/hyperv/vmbusicreg.h:1.1 Fri Feb 15 08:54:02 2019 +++ src/sys/dev/hyperv/vmbusicreg.h Fri Mar 1 10:02:33 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: vmbusicreg.h,v 1.1 2019/02/15 08:54:02 nonaka Exp $ */ +/* $NetBSD: vmbusicreg.h,v 1.2 2019/03/01 10:02:33 nonaka Exp $ */ /* $OpenBSD: hypervicreg.h,v 1.6 2017/11/07 16:49:42 mikeb Exp $ */ /*- @@ -32,8 +32,6 @@ #ifndef _VMBUSICREG_H_ #define _VMBUSICREG_H_ -#define VMBUS_IC_BUFRINGSIZE (4 * PAGE_SIZE) - #define VMBUS_ICMSG_TYPE_NEGOTIATE 0 #define VMBUS_ICMSG_TYPE_HEARTBEAT 1 #define VMBUS_ICMSG_TYPE_KVP 2
CVS commit: src/sys/dev/hyperv
Module Name:src Committed By: hannken Date: Fri Feb 15 16:37:54 UTC 2019 Modified Files: src/sys/dev/hyperv: vmbus.c Log Message: Add __diagused. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/dev/hyperv/vmbus.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/dev/hyperv/vmbus.c diff -u src/sys/dev/hyperv/vmbus.c:1.1 src/sys/dev/hyperv/vmbus.c:1.2 --- src/sys/dev/hyperv/vmbus.c:1.1 Fri Feb 15 08:54:01 2019 +++ src/sys/dev/hyperv/vmbus.c Fri Feb 15 16:37:54 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: vmbus.c,v 1.1 2019/02/15 08:54:01 nonaka Exp $ */ +/* $NetBSD: vmbus.c,v 1.2 2019/02/15 16:37:54 hannken Exp $ */ /* $OpenBSD: hyperv.c,v 1.43 2017/06/27 13:56:15 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.1 2019/02/15 08:54:01 nonaka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vmbus.c,v 1.2 2019/02/15 16:37:54 hannken Exp $"); #include #include @@ -1020,7 +1020,7 @@ vmbus_channel_add(struct vmbus_channel * { struct vmbus_softc *sc = nch->ch_sc; struct vmbus_channel *ch; - u_int refs; + u_int refs __diagused; if (nch->ch_id == 0) { device_printf(sc->sc_dev, "got channel 0 offer, discard\n");