Change ia64 mca sysctls to use standard dynamic sysctls
Marcel Moolenaar
xcllnt at mac.com
Mon Feb 2 17:59:25 PST 2009
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?
--
Marcel Moolenaar
xcllnt at mac.com
More information about the freebsd-ia64
mailing list