Re: [patch sungem] improved locking
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2006-11-28 22:57:34
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2006-11-28 22:57:34
This looks mostly fine. I was thinking about the lockless stuff, and I wonder if there is a clever way you can get it back down to one PIO on the GREG_STAT register. I think you'd need to have the ->poll() clear gp->status, then do a smp_wb(), right before it re-enables interrupts. Then in the interrupt handler, you need to find a way to safely OR-in any unset bits in gp->status in a race-free manner.
Having it atomic might work at a slightly smaller cost than a lock, though atomics don't have strong ordering requirements so you'd still have to be a bit careful. Ben.