Messages in this thread |  | | | Date | Tue, 24 Aug 2004 15:51:22 -0400 | | Subject | Re: [patch] PPC/PPC64 port of voluntary preempt patch | | From | Scott Wood <> |
| |
On Mon, Aug 23, 2004 at 06:18:16PM -0400, Scott Wood wrote: > I have attached a port of the voluntary preempt patch to PPC and > PPC64. The patch is against P7, but it applies against P8 as well. > > I've tested it on a dual G5 Mac, both in uniprocessor and SMP. > > Some notes on changes to the generic part of the patch/existing > generic code:
Another thing that I forgot to mention is that I have some doubts as to the current generic_synchronize_irq() implementation. Given that IRQs are now preemptible, a higher priority RT thread calling synchronize_irq can't just spin waiting for the IRQ to complete, as it never will (and it wouldn't be a great idea for non-RT tasks either). I see that a do_hardirq() call was added, presumably to hurry completion of the interrupt, but is that really safe? It looks like that could end up re-entering handlers, and you'd still have a partially executed handler after synchronize_irq() finishes (causing not only an extra end() call, but possibly code being executed after it's been unloaded, and other synchronization violations).
If I'm missing something, please let me know, but I don't see a good way to implement it without blocking for the IRQ thread's completion (such as with the per-IRQ waitqueues in M5).
-Scott - 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/
|  |