Messages in this thread Patch in this message | | | Subject | Re: [PATCH] local_irq_disable removal | From | Daniel Walker <> | Date | Wed, 08 Jun 2005 13:33:38 -0700 |
| |
Great.
On Wed, 2005-06-08 at 13:21 +0200, Ingo Molnar wrote: > > i've attached below the delta relative to your patch. The changes are: > > - fixed a soft-local_irq_restore() bug: it didnt re-disable the IRQ > flag if the flags passed in had it set. > > - fixed SMP support - both the scheduler and the lowlevel SMP code was > not fully converted to the soft flag assumptions. The PREEMPT_RT > kernel now boots fine on a 2-way/4-way x86 box. > > - fixed the APIC code > > - fixed irq-latency tracing and other tracing assumptions > > - fixed DEBUG_RT_DEADLOCK_DETECT - we checked for the wrong irq flags > > - added debug code to find IRQ flag mismatches: mixing the CPU and soft > flags is lethal, but detectable. > > - simplified the code which should thus also be faster: introduced the > mask_preempt_count/unmask_preempt_count primitives and made the > soft-flag code use it. > > - cleaned up the interdependencies of the soft-flag functions - they > now dont call each other anymore, they all use inlined code for > maximum performance.
Should be macro's one day ...
> - made the soft IRQ flag an unconditional feature of PREEMPT_RT: once > it works properly there's no reason to ever disable it under > PREEMPT_RT. > > - renamed hard_ to raw_, to bring it in line with other constructs in > PREEMPT_RT. > > - cleaned up the system.h impact by creating linux/rt_irq.h. Made the > naming consistent all across. > > - cleaned up the preempt.h impact and updated the comments. > > - fixed smp_processor_id() debugging: we have to check for the CPU irq > flag too. >
Excellent .. I have one fix related to preempt_schedule_irq() below. There needs to be an ifdef , cause when PREEPMT_RT is off you would end up with interrupts enabled when exiting preempt_schedule_irq() ..
Index: linux-2.6.11/kernel/sched.c =================================================================== --- linux-2.6.11.orig/kernel/sched.c 2005-06-08 20:25:00.000000000 +0000 +++ linux-2.6.11/kernel/sched.c 2005-06-08 20:24:37.000000000 +0000 @@ -3245,7 +3245,9 @@ need_resched: __schedule(); raw_local_irq_disable(); +#ifdef CONFIG_PREEMPT_RT local_irq_enable_noresched(); +#endif #ifdef CONFIG_PREEMPT_BKL task->lock_depth = saved_lock_depth;
- 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/
| |