Date: Wed, 18 May 2011 16:50:04 -0400 From: Attilio Rao <attilio@freebsd.org> To: mdf@freebsd.org Cc: src-committers@freebsd.org, Pawel Jakub Dawidek <pjd@freebsd.org>, Andriy Gapon <avg@freebsd.org>, svn-src-user@freebsd.org Subject: Re: svn commit: r222060 - in user/avg/xcpu/sys: kern sys Message-ID: <BANLkTinn7ttBxKDDsj35Tmib=1f=O8Fy-A@mail.gmail.com> In-Reply-To: <BANLkTikmxbsCV_A-zD7XdkWyOEBzy67iZQ@mail.gmail.com> References: <201105181508.p4IF8UoS096841@svn.freebsd.org> <20110518182441.GB2273@garage.freebsd.pl> <4DD4243C.4070301@FreeBSD.org> <BANLkTikAnB-3XbvDwGHgyqyJquH9BhqzOQ@mail.gmail.com> <BANLkTikmxbsCV_A-zD7XdkWyOEBzy67iZQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
2011/5/18 <mdf@freebsd.org>: > On Wed, May 18, 2011 at 1:06 PM, Attilio Rao <attilio@freebsd.org> wrote: >> 2011/5/18 Andriy Gapon <avg@freebsd.org>: >>> 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 Wed May 18 15:07:36 2011 (r222059) >>>>> +++ user/avg/xcpu/sys/sys/proc.h Wed May 18 15:08:30 2011 (r222060) >>>>> @@ -781,7 +781,7 @@ MALLOC_DECLARE(M_SUBPROC); >>>>> * Otherwise, the kernel will deadlock since the scheduler isn't >>>>> * going to run the thread that holds the lock we need. >>>>> */ >>>>> -#define THREAD_PANICED() \ >>>>> +#define TD_IS_INPANIC() \ >>>>> (panicstr != NULL && (curthread->td_flags & TDF_INPANIC) != 0) >>>> >>>> Does TDF_INPANIC make sense without panicstr being set? >>> >>> Very good observation. It seems that TDF_INPANIC can never be set unless >>> panicstr is set. So, I guess it should be OK to simplify the macro 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. Once 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 -- Peace can only be achieved by understanding - A. Einstein
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTinn7ttBxKDDsj35Tmib=1f=O8Fy-A>
