Messages in this thread | | | Date | Wed, 30 Jun 2004 15:31:20 -0500 | From | linas@austin ... | Subject | [PATCH] 2.6 PPC64: lockfix for rtas error log (third-times-a-charm?) |
| |
On Wed, Jun 30, 2004 at 01:47:29PM -0500, Benjamin Herrenschmidt wrote: > > > Well, the problem was that there is no lock that is protecting the > > use of the single, global buffer. Adding yet another lock is bad; > > it makes hunting for deadlocks that much more tedious and difficult; > > already, finding deadlocks is error-prone, and subject to bit-rot as > > future hackers update the code. So instead, the problem can be easily > > avoided by not using a global buffer. The code below mallocs/frees. > > Its not perf-critcal, so I don't mind malloc overhead. Would this > > work for you? Patch attached below. > > I prefer that, but couldn't we move the kmalloc outside of the spinlock > and so use GFP_KERNEL instead ?
OK,
Upon closer analysis of the code, I see that log_rtas_error() was incorrectly named, and was being used incorrectly. The solution is to get rid of it entirely; see patch below. So:
-- In one case kmalloc must be GFP_ATOMIC because rtas_call() can happen in any context, incl. irqs. -- In the other case, I turned it into GFP_KENREL, at the cost of doing a needless malloc/free in the vast majority of cases where there is no error. Small price, as I beleive that this routine is very rarely called.
Patch below, Signed-off-by: Linas Vepstas <linas@linas.org>
--linas
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |