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