Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Feb 2009 14:43:57 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        Marcel Moolenaar <xcllnt@mac.com>
Cc:        ia64@freebsd.org
Subject:   Re: Change ia64 mca sysctls to use standard dynamic sysctls
Message-ID:  <200902031443.57824.jhb@freebsd.org>
In-Reply-To: <FD8030B6-5D14-4B77-A5D2-7C1A288B2731@mac.com>
References:  <200902021344.19249.jhb@freebsd.org> <200902031107.52507.jhb@freebsd.org> <FD8030B6-5D14-4B77-A5D2-7C1A288B2731@mac.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 03 February 2009 2:09:35 pm Marcel Moolenaar wrote:
> 
> On Feb 3, 2009, at 8:07 AM, John Baldwin wrote:
> 
> > On Monday 02 February 2009 7:59:11 pm Marcel Moolenaar wrote:
> >>
> >> On Feb 2, 2009, at 10:44 AM, John Baldwin wrote:
> >>
> >>> While working on the locking for the sysctl tree, I ran into the
> >>> pseudo-dynamic machine check sysctls in ia64.  It is not really a
> >>> good idea
> >>> to call sysctl_register_oid() with a spin lock held and once I add
> >>> locking to
> >>> sysctl it becomes a bad LOR.  This changes the code to use the
> >>> public API for
> >>> adding dynamic sysctls outside of the spin lock.  Please test this
> >>> as it is a
> >>> prerequisite for finishing the locking of the sysctl tree.
> >>
> >> This won't be a solution, because eventually this code gets called
> >> for machine checks, which means that locks can be held (which is
> >> then the least of our worries :-)
> >>
> >> In any case: malloc(M_WAITOK) cannot be used. We should probably
> >> delay updating the sysctl tree and do it in a more controlled
> >> environment. If you can implement a simple linked list to store
> >> the saved state and remove the call to SYSCTL_ADD_OID, then I'll
> >> work on that part after you're done. Does that sound like a plan?
> >
> > Ok.  Checking for failures from M_NOWAIT is important, too. :)  Here's
> > an updated patch that uses the queue.  I haven't implemented the stuff
> > to schedule calls to the populate routine to drain the queue though.
> > Would you be able to do that?
> 
> Yes, I will. Getting everything right takes some careful
> testing and probably requires deliberate error injection.
> I can't ask that of you :-)

Heh, is it ok with you if I commit this patch for now (after cross-compiling 
it) so I can commit the sysctl locking?

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200902031443.57824.jhb>