Re: [PATCH] local_irq_disable removal

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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]
  Powered by Linux