From owner-svn-src-all@freebsd.org Wed Jun 8 07:47:23 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6A487B6EF12; Wed, 8 Jun 2016 07:47:23 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 46F10102F; Wed, 8 Jun 2016 07:47:23 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u587lMk7011487; Wed, 8 Jun 2016 07:47:22 GMT (envelope-from sephe@FreeBSD.org) Received: (from sephe@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u587lMe6011482; Wed, 8 Jun 2016 07:47:22 GMT (envelope-from sephe@FreeBSD.org) Message-Id: <201606080747.u587lMe6011482@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sephe set sender to sephe@FreeBSD.org using -f From: Sepherosa Ziehau Date: Wed, 8 Jun 2016 07:47:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r301588 - head/sys/dev/hyperv/vmbus X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jun 2016 07:47:23 -0000 Author: sephe Date: Wed Jun 8 07:47:21 2016 New Revision: 301588 URL: https://svnweb.freebsd.org/changeset/base/301588 Log: hyperv/vmbus: Change tx_evtflags type to u_long to match vmbus_evtflags MFC after: 1 week Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D6745 Modified: head/sys/dev/hyperv/vmbus/hv_channel.c head/sys/dev/hyperv/vmbus/hv_connection.c head/sys/dev/hyperv/vmbus/vmbus.c head/sys/dev/hyperv/vmbus/vmbus_reg.h head/sys/dev/hyperv/vmbus/vmbus_var.h Modified: head/sys/dev/hyperv/vmbus/hv_channel.c ============================================================================== --- head/sys/dev/hyperv/vmbus/hv_channel.c Wed Jun 8 07:39:55 2016 (r301587) +++ head/sys/dev/hyperv/vmbus/hv_channel.c Wed Jun 8 07:47:21 2016 (r301588) @@ -37,12 +37,16 @@ __FBSDID("$FreeBSD$"); #include #include #include + +#include #include + #include #include #include #include +#include #include static int vmbus_channel_create_gpadl_header( @@ -65,11 +69,11 @@ vmbus_channel_set_event(hv_vmbus_channel if (channel->offer_msg.monitor_allocated) { struct vmbus_softc *sc = vmbus_get_softc(); hv_vmbus_monitor_page *monitor_page; + uint32_t chanid = channel->offer_msg.child_rel_id; - /* Each uint32_t represents 32 channels */ - synch_set_bit((channel->offer_msg.child_rel_id & 31), - ((uint32_t *)sc->vmbus_tx_evtflags - + ((channel->offer_msg.child_rel_id >> 5)))); + atomic_set_long( + &sc->vmbus_tx_evtflags[chanid >> VMBUS_EVTFLAG_SHIFT], + 1UL << (chanid & VMBUS_EVTFLAG_MASK)); monitor_page = sc->vmbus_mnf2; synch_set_bit(channel->monitor_bit, Modified: head/sys/dev/hyperv/vmbus/hv_connection.c ============================================================================== --- head/sys/dev/hyperv/vmbus/hv_connection.c Wed Jun 8 07:39:55 2016 (r301587) +++ head/sys/dev/hyperv/vmbus/hv_connection.c Wed Jun 8 07:47:21 2016 (r301588) @@ -353,12 +353,10 @@ hv_vmbus_set_event(hv_vmbus_channel *cha { struct vmbus_softc *sc = vmbus_get_softc(); int ret = 0; - uint32_t child_rel_id = channel->offer_msg.child_rel_id; + uint32_t chanid = channel->offer_msg.child_rel_id; - /* Each uint32_t represents 32 channels */ - - synch_set_bit(child_rel_id & 31, - (((uint32_t *)sc->vmbus_tx_evtflags + (child_rel_id >> 5)))); + atomic_set_long(&sc->vmbus_tx_evtflags[chanid >> VMBUS_EVTFLAG_SHIFT], + 1UL << (chanid & VMBUS_EVTFLAG_MASK)); ret = hv_vmbus_signal_event(channel->signal_event_param); return (ret); Modified: head/sys/dev/hyperv/vmbus/vmbus.c ============================================================================== --- head/sys/dev/hyperv/vmbus/vmbus.c Wed Jun 8 07:39:55 2016 (r301587) +++ head/sys/dev/hyperv/vmbus/vmbus.c Wed Jun 8 07:47:21 2016 (r301588) @@ -340,7 +340,7 @@ vmbus_dma_alloc(struct vmbus_softc *sc) if (evtflags == NULL) return ENOMEM; sc->vmbus_rx_evtflags = (u_long *)evtflags; - sc->vmbus_tx_evtflags = evtflags + (PAGE_SIZE / 2); + sc->vmbus_tx_evtflags = (u_long *)(evtflags + (PAGE_SIZE / 2)); sc->vmbus_evtflags = evtflags; sc->vmbus_mnf1 = hyperv_dmamem_alloc(parent_dtag, PAGE_SIZE, 0, Modified: head/sys/dev/hyperv/vmbus/vmbus_reg.h ============================================================================== --- head/sys/dev/hyperv/vmbus/vmbus_reg.h Wed Jun 8 07:39:55 2016 (r301587) +++ head/sys/dev/hyperv/vmbus/vmbus_reg.h Wed Jun 8 07:47:21 2016 (r301588) @@ -66,6 +66,7 @@ CTASSERT(sizeof(struct vmbus_message) == #define VMBUS_EVTFLAG_SHIFT 5 #endif #define VMBUS_EVTFLAG_LEN (1 << VMBUS_EVTFLAG_SHIFT) +#define VMBUS_EVTFLAG_MASK (VMBUS_EVTFLAG_LEN - 1) #define VMBUS_EVTFLAGS_SIZE 256 struct vmbus_evtflags { Modified: head/sys/dev/hyperv/vmbus/vmbus_var.h ============================================================================== --- head/sys/dev/hyperv/vmbus/vmbus_var.h Wed Jun 8 07:39:55 2016 (r301587) +++ head/sys/dev/hyperv/vmbus/vmbus_var.h Wed Jun 8 07:47:21 2016 (r301588) @@ -63,7 +63,7 @@ struct vmbus_pcpu_data { struct vmbus_softc { void (*vmbus_event_proc)(struct vmbus_softc *, int); - void *vmbus_tx_evtflags; + u_long *vmbus_tx_evtflags; /* event flags to host */ void *vmbus_mnf2; /* monitored by host */