From owner-svn-src-user@FreeBSD.ORG Wed May 18 20:50:06 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 89908106566C; Wed, 18 May 2011 20:50:06 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id C2C118FC0A; Wed, 18 May 2011 20:50:05 +0000 (UTC) Received: by vws18 with SMTP id 18so1957739vws.13 for ; Wed, 18 May 2011 13:50:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=vcK58+Y+qbAIIheYXBXGHrhsVjQkyhNRolsYhAHU1mc=; b=ES2kuAsXOg8W1TZYiGFz693WEi569zi1Zcxo+wQRYiEQEhbu5ySndMjMFHKU+qF41o +L5QJ7+qoOV5LmzuV5DvhwIidDh0ioR7eluweI2HL67Spha+n5yMX5pq/yubWIPhnNlK 1c7FLHkUIig+sZY3BAZcpMVtTc75L6V6F28EA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=L7Hoy1NqFTWsCe/9BIMtcy3bSKA40OeFnBQbb5Bkud5jL5xfZzBVqmQ7qTgKoo/iHd bUjJbhremHTxWJR+9FOI8jIERJ1KIQFeG15vzWyc91OCYuvzh79DdVN8Utybxs/edcNH ZaifLxULiVkI34g7KET8J3KSPF14wBwW7HT/8= MIME-Version: 1.0 Received: by 10.52.95.203 with SMTP id dm11mr3346933vdb.213.1305751804891; Wed, 18 May 2011 13:50:04 -0700 (PDT) Sender: asmrookie@gmail.com Received: by 10.220.201.3 with HTTP; Wed, 18 May 2011 13:50:04 -0700 (PDT) In-Reply-To: References: <201105181508.p4IF8UoS096841@svn.freebsd.org> <20110518182441.GB2273@garage.freebsd.pl> <4DD4243C.4070301@FreeBSD.org> Date: Wed, 18 May 2011 16:50:04 -0400 X-Google-Sender-Auth: f5EM_A1hn1QAbt7oE0NrK8E6sUo Message-ID: From: Attilio Rao To: mdf@freebsd.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: src-committers@freebsd.org, Pawel Jakub Dawidek , Andriy Gapon , svn-src-user@freebsd.org Subject: Re: svn commit: r222060 - in user/avg/xcpu/sys: kern sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 May 2011 20:50:06 -0000 2011/5/18 : > On Wed, May 18, 2011 at 1:06 PM, Attilio Rao wrote: >> 2011/5/18 Andriy Gapon : >>> on 18/05/2011 21:24 Pawel Jakub Dawidek said the following: >>>> On Wed, May 18, 2011 at 03:08:30PM +0000, Andriy Gapon wrote: >>>> [...] >>>>> --- user/avg/xcpu/sys/sys/proc.h =C2=A0 =C2=A0 Wed May 18 15:07:36 20= 11 =C2=A0 =C2=A0 =C2=A0 =C2=A0(r222059) >>>>> +++ user/avg/xcpu/sys/sys/proc.h =C2=A0 =C2=A0 Wed May 18 15:08:30 20= 11 =C2=A0 =C2=A0 =C2=A0 =C2=A0(r222060) >>>>> @@ -781,7 +781,7 @@ MALLOC_DECLARE(M_SUBPROC); >>>>> =C2=A0 * Otherwise, the kernel will deadlock since the scheduler isn'= t >>>>> =C2=A0 * going to run the thread that holds the lock we need. >>>>> =C2=A0 */ >>>>> -#define =C2=A0 =C2=A0 THREAD_PANICED() =C2=A0 =C2=A0 =C2=A0 =C2=A0\ >>>>> +#define =C2=A0 =C2=A0 TD_IS_INPANIC() \ >>>>> =C2=A0 =C2=A0 =C2=A0(panicstr !=3D NULL && (curthread->td_flags & TDF= _INPANIC) !=3D 0) >>>> >>>> Does TDF_INPANIC make sense without panicstr being set? >>> >>> Very good observation. =C2=A0It seems that TDF_INPANIC can never be set= unless >>> panicstr is set. =C2=A0So, I guess it should be OK to simplify the macr= o further. >>> Thank you. >> >> However I think that TDF_INPANIC handling is not optimal. >> You should really acquire thread_lock otherwise you are going to break >> choosethread() concurrency. >> >> I would prefer to make TDF_INPANIC a private flag and just use it with >> curthread, if possible, but I still don't have a good way to resolve >> choosethread() (I would dig the runqueue adding path and resolve the >> problem later in the codeflow, I think). > > I know it's almost required now (sync on reboot?!?!), but I would > strongly question, from an architectural standpoint, why the scheduler > should be running at all in panic. =C2=A0Once a thread pulls the panic > trigger, nothing else should run except ddb in that thread's context. Yes, I mostly agree, so for avg's purpose he should maybe assert choosethread() doesn't pickup the TDF_INPANIC threads (or just skip the check at all, as it should be made private). Attilio --=20 Peace can only be achieved by understanding - A. Einstein