From owner-svn-src-projects@FreeBSD.ORG Sun Sep 9 19:23:27 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 29E43106564A; Sun, 9 Sep 2012 19:23:27 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from mail-lpp01m010-f54.google.com (mail-lpp01m010-f54.google.com [209.85.215.54]) by mx1.freebsd.org (Postfix) with ESMTP id 0EFD28FC08; Sun, 9 Sep 2012 19:23:25 +0000 (UTC) Received: by lage12 with SMTP id e12so1060213lag.13 for ; Sun, 09 Sep 2012 12:23:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=Q6nWUZEwqZICqzqtjXhfXPSQ+GZ66bNtzTUIaUlr7SM=; b=qnFfZwbN/+156BkJzC9UZjqHRJsbvFmWdxFba+NZI+vpBVBdvCwe8h+FPjQ0+Kkms/ a+AOPhAWMQPeg4WsbMUAZeGu49XiQVGgq4H4LPUCAUQd5eGSSZFEMLqo0kBXhD/X8ngk eLqL3R5L4TzhcC25KMGFlyIKAVZrVCCal3WJcnvAefvjNaG0PEvOOWO6d2GIgWuMXztW e/f0IDE2aGcq+xyDbQb4OYiTLuFsUT5rNDQncKKevkXV+3NOTAx7y8b/skldf6mrZDyt tkys6BV/JhMpJyiYD/MpZiUbK1hPsxOoeiBCAjAIBLiuIVMaHmlLnRIcVkndib6n5LEs ClIA== MIME-Version: 1.0 Received: by 10.112.103.71 with SMTP id fu7mr4000988lbb.21.1347218599070; Sun, 09 Sep 2012 12:23:19 -0700 (PDT) Sender: asmrookie@gmail.com Received: by 10.112.102.39 with HTTP; Sun, 9 Sep 2012 12:23:18 -0700 (PDT) In-Reply-To: <504CEAE0.704@FreeBSD.org> References: <201207301350.q6UDobCI099069@svn.freebsd.org> <201207301732.33474.jhb@freebsd.org> <504CEAE0.704@FreeBSD.org> Date: Sun, 9 Sep 2012 20:23:18 +0100 X-Google-Sender-Auth: NbGfNhgDyTm3_b5Fg-E0wohsRN0 Message-ID: From: Attilio Rao To: John Baldwin Content-Type: text/plain; charset=UTF-8 Cc: Konstantin Belousov , Davide Italiano , src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: Re: svn commit: r238907 - projects/calloutng/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: attilio@FreeBSD.org List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Sep 2012 19:23:27 -0000 On Sun, Sep 9, 2012 at 8:15 PM, John Baldwin wrote: > On 9/9/12 11:03 AM, Attilio Rao wrote: >> On 8/2/12, Attilio Rao wrote: >>> On 7/30/12, John Baldwin wrote: >> >> [ trimm ] >> >>>> --- //depot/projects/smpng/sys/kern/subr_turnstile.c 2012-06-04 >>>> 18:27:32.000000000 0000 >>>> +++ //depot/user/jhb/lock/kern/subr_turnstile.c 2012-06-05 >>>> 00:27:57.000000000 0000 >>>> @@ -684,6 +684,7 @@ >>>> if (owner) >>>> MPASS(owner->td_proc->p_magic == P_MAGIC); >>>> MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE); >>>> + KASSERT(!TD_IS_IDLETHREAD(td), ("idle threads cannot block on locks")); >>>> >>>> /* >>>> * If the lock does not already have a turnstile, use this thread's >>> >>> I'm wondering if we should also use similar checks in places doing >>> adaptive spinning (including the TD_NO_SLEEPING check). Likely yes. >> >> So what do you think about this? > > This is isn't really good enough then. An idle thread should not > acquire any lock that isn't a spin lock. Instead, you would be > better off removing the assert I added above and adding an assert to > mtx_lock(), rw_{rw}lock(), sx_{sx}lock(), lockmgr(), rm_{rw}lock() and > all the try variants of those. While this is true, I thought about this route but I didn't want to go for it because it would pollute much more code than the current approach + patch I proposed, which would enough to find offending cases. I'm not sure I want to pollute all the kernel locking with checks for idlethread, yet I think the current code is not complete and thus I still think my patch is a reasonable compromise. Attilio -- Peace can only be achieved by understanding - A. Einstein