From owner-svn-src-head@FreeBSD.ORG Fri Sep 14 14:27:11 2012 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AFF5A106564A; Fri, 14 Sep 2012 14:27:11 +0000 (UTC) (envelope-from bryanv@daemoninthecloset.org) Received: from torment.daemoninthecloset.org (torment.daemoninthecloset.org [94.242.209.234]) by mx1.freebsd.org (Postfix) with ESMTP id 37E4F8FC15; Fri, 14 Sep 2012 14:27:10 +0000 (UTC) X-Virus-Scanned: amavisd-new at daemoninthecloset.org Received: from sage.daemoninthecloset.org (sage.daemoninthecloset.org [127.0.1.1]) by sage.daemoninthecloset.org (Postfix) with ESMTP id 886EA6754F; Fri, 14 Sep 2012 09:26:52 -0500 (CDT) Date: Fri, 14 Sep 2012 09:26:52 -0500 (CDT) From: Bryan Venteicher To: John Baldwin Message-ID: <2051018874.3102.1347632812362.JavaMail.root@daemoninthecloset.org> In-Reply-To: <201209140817.54376.jhb@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [192.168.10.20] X-Mailer: Zimbra 7.2.0_GA_2669 (ZimbraWebClient - GC20 ([unknown])/7.2.0_GA_2669) Cc: svn-src-head@freebsd.org, Konstantin Belousov , svn-src-all@freebsd.org, src-committers@freebsd.org, Peter Grehan Subject: Re: svn commit: r240427 - head/sys/dev/virtio X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Sep 2012 14:27:11 -0000 Hi, ----- Original Message ----- > From: "John Baldwin" > To: "Konstantin Belousov" > Cc: "Bryan Venteicher" , svn-src-head@freebsd.org, svn-src-all@freebsd.org, > src-committers@freebsd.org, "Peter Grehan" > Sent: Friday, September 14, 2012 7:17:54 AM > Subject: Re: svn commit: r240427 - head/sys/dev/virtio > > On Friday, September 14, 2012 3:55:20 am Konstantin Belousov wrote: > > On Fri, Sep 14, 2012 at 12:47:52AM -0500, Bryan Venteicher wrote: > > > > > I also found myself wanting an atomic_load_rel_*() type > > > > > function. > > > > > > > > That would be odd I think. _rel barriers only affect stores, > > > > so > > > > there would be no defined ordering between the load and the > > > > subsequent stores. (With our current definitions of _acq and > > > > _rel.) If you need a full fence for some reason, than a plain > > > > mb() may be the best thing in that case. > > > > > > > > > > I'm able to batch add descriptors (via vq_ring_update_avail()), > > > but when checking if I must notify the host, I need to make sure > > > the latest avail->idx is visible before checking the flag from > > > the host on whether notifications are disabled. Gratuitous > > > notifications are fine, but skipping one is not. > > > > > > In the patch, I kludge this with: > > > atomic_add_rel_16(&flags, 0); > > > foo = flags; > > Don't you need > > atomic_store_rel_16(&foo, flags); > > instead ? > > > > You might do a cas_rel over the containing 32bit word as well. > > Yes, the right barrier here would be to use the barrier on the > assignment > to foo. That ensures all other writes post before the write to > 'foo'. >From reading between the lines of atomic(9), I wasn't totally sure where the load of flags is guaranteed to occur with respect to the previous loads/stores. Bryan > > -- > John Baldwin >