On Mon, Sep 18, 2023 at 11:40:28AM +0300, Vitaliy Makkoveev wrote: > Context switch looks fine here.
OK bluhm@ > Index: sys/dev/pv/hypervic.c > =================================================================== > RCS file: /cvs/src/sys/dev/pv/hypervic.c,v > retrieving revision 1.19 > diff -u -p -r1.19 hypervic.c > --- sys/dev/pv/hypervic.c 11 Apr 2023 00:45:08 -0000 1.19 > +++ sys/dev/pv/hypervic.c 18 Sep 2023 08:35:02 -0000 > @@ -846,7 +846,7 @@ kvp_get_ip_info(struct hv_kvp *kvp, cons > struct sockaddr_in6 *sin6, sa6; > uint8_t enaddr[ETHER_ADDR_LEN]; > uint8_t ipaddr[INET6_ADDRSTRLEN]; > - int i, j, lo, hi, s, af; > + int i, j, lo, hi, af; > > /* Convert from the UTF-16LE string format to binary */ > for (i = 0, j = 0; j < ETHER_ADDR_LEN; i += 6) { > @@ -870,16 +870,14 @@ kvp_get_ip_info(struct hv_kvp *kvp, cons > return (-1); > } > > - KERNEL_LOCK(); > - s = splnet(); > + NET_LOCK_SHARED(); > > TAILQ_FOREACH(ifp, &ifnetlist, if_list) { > if (!memcmp(LLADDR(ifp->if_sadl), enaddr, ETHER_ADDR_LEN)) > break; > } > if (ifp == NULL) { > - splx(s); > - KERNEL_UNLOCK(); > + NET_UNLOCK_SHARED(); > return (-1); > } > > @@ -919,8 +917,7 @@ kvp_get_ip_info(struct hv_kvp *kvp, cons > else if (ifa6ll != NULL) > ifa = ifa6ll; > else { > - splx(s); > - KERNEL_UNLOCK(); > + NET_UNLOCK_SHARED(); > return (-1); > } > } > @@ -956,8 +953,7 @@ kvp_get_ip_info(struct hv_kvp *kvp, cons > break; > } > > - splx(s); > - KERNEL_UNLOCK(); > + NET_UNLOCK_SHARED(); > > return (0); > }