On Sat, Dec 22, 2012 at 1:20 PM, Bruce Evans <b...@optusnet.com.au> wrote:
> On Sat, 22 Dec 2012, Attilio Rao wrote:
>
>> On Sat, Dec 22, 2012 at 10:51 AM, Bruce Evans <b...@optusnet.com.au>
>> wrote:
>>>
>>> On Sat, 22 Dec 2012, Attilio Rao wrote:
>>>
>>>> Log:
>>>>  Fixup r240424: On entering KDB backends, the hijacked thread to run
>>>>  interrupt context can still be idlethread. At that point, without the
>>>>  panic condition, it can still happen that idlethread then will try to
>>>>  acquire some locks to carry on some operations.
>>>>
>>>>  Skip the idlethread check on block/sleep lock operations when KDB is
>>>>  active.
>>>
>>>
>>> This seems backwards to me.  It is an error to go near normal locking
>>> code when kdb is active.
>>
>>
>> I completely agree, but this is not what happens nowadays with FreeBSD
>> kernel.
>> In my view, KDB should not call into normal code, but in special
>> wrappers which skip locking entirely, in particular because other cpus
>> are stopped, so there is no race going on.
>> However, this requires a big change and as long as this doesn't happen
>> we need to stuck with similar hacks.
>
>
> But this sort of hack only breaks accidental detection of a bug (maybe
> the bug causes deadlock or data corruption soon).  The type of hack
> that helps is 'if (kdb_active) skip_locking();' deep in code that
> shouldn't even be called if kdb is active.  Here it is 'if (kdb_active)
> skip_checking();'

I agree, but our kernel relies on this stuff for kdb heavily (see all
the duplicate checks around). We need to change that all together. We
need to provide lockless version for KDB command.

>>
>>
>> I do not understand. For kdb_active == 0 it still checks for
>> IDLETHREAD if it is not idlethread it doesn't panic, it panics
>> otherwise, which seems the right to me.
>
>
> I just mean that the correct kdb_active KASSERT() is independent of the
> idlethread one.  It should also have a different message.  I forgot to
> provide a message.

If you want to use a better message, be my guest.

Attilio


-- 
Peace can only be achieved by understanding - A. Einstein
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to