From owner-freebsd-bugs@FreeBSD.ORG  Sun Apr  6 21:39:20 2014
Return-Path: <owner-freebsd-bugs@FreeBSD.ORG>
Delivered-To: freebsd-bugs@smarthost.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by hub.freebsd.org (Postfix) with ESMTPS id 0EE31FA9;
 Sun,  6 Apr 2014 21:39:20 +0000 (UTC)
Received: from freefall.freebsd.org (freefall.freebsd.org
 [IPv6:2001:1900:2254:206c::16:87])
 (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 D523CEDD;
 Sun,  6 Apr 2014 21:39:19 +0000 (UTC)
Received: from freefall.freebsd.org (localhost [127.0.0.1])
 by freefall.freebsd.org (8.14.8/8.14.8) with ESMTP id s36LdJrA090283;
 Sun, 6 Apr 2014 21:39:19 GMT
 (envelope-from jilles@freefall.freebsd.org)
Received: (from jilles@localhost)
 by freefall.freebsd.org (8.14.8/8.14.8/Submit) id s36LdJ85090267;
 Sun, 6 Apr 2014 21:39:19 GMT (envelope-from jilles)
Date: Sun, 6 Apr 2014 21:39:19 GMT
Message-Id: <201404062139.s36LdJ85090267@freefall.freebsd.org>
To: John.Giacomoni@LineRateSystems.com, jilles@FreeBSD.org,
 freebsd-bugs@FreeBSD.org, jilles@FreeBSD.org
From: jilles@FreeBSD.org
Subject: Re: kern/149591: [kernel] struct callout:c_flags should be volatile
X-BeenThere: freebsd-bugs@freebsd.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Bug reports <freebsd-bugs.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/freebsd-bugs>,
 <mailto:freebsd-bugs-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/freebsd-bugs/>
List-Post: <mailto:freebsd-bugs@freebsd.org>
List-Help: <mailto:freebsd-bugs-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-bugs>,
 <mailto:freebsd-bugs-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 06 Apr 2014 21:39:20 -0000

Synopsis: [kernel] struct callout:c_flags should be volatile

State-Changed-From-To: open->closed
State-Changed-By: jilles
State-Changed-When: Sun Apr 6 21:34:16 UTC 2014
State-Changed-Why: 
Hi,

Thanks for your request. I think the volatile qualifier should
not be added.

callout_active() should only be called when the callout's lock
(Giant, given mutex or given rwlock) is held. The lock/unlock
operations will force the compiler and CPU to fetch a new value.

The volatile qualifier is not designed to protect against other
threads, even though it might appear to help with that.

In your example, note that DELAY is a busy-wait loop; it is
sometimes useful to wait for hardware, but not to wait for
software events.


Responsible-Changed-From-To: freebsd-bugs->jilles
Responsible-Changed-By: jilles
Responsible-Changed-When: Sun Apr 6 21:34:16 UTC 2014
Responsible-Changed-Why: 
Track replies.

http://www.freebsd.org/cgi/query-pr.cgi?pr=149591