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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]