Date: Mon, 02 Feb 2009 16:59:11 -0800 From: Marcel Moolenaar <xcllnt@mac.com> To: John Baldwin <jhb@freebsd.org> Cc: ia64@freebsd.org Subject: Re: Change ia64 mca sysctls to use standard dynamic sysctls Message-ID: <5396BD91-541F-4EDF-9034-106477C99B7F@mac.com> In-Reply-To: <200902021344.19249.jhb@freebsd.org> References: <200902021344.19249.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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@mac.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5396BD91-541F-4EDF-9034-106477C99B7F>