lkml.org 
[lkml]   [2013]   [Nov]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [patch 4/6] ia64: Use preempt_schedule_irq
On Wed, 20 Nov 2013, Thomas Gleixner wrote:
> On Wed, 20 Nov 2013, Tony Luck wrote:
> > asmlinkage void __sched preempt_schedule_irq(void)
> > {
> > schedule();
> > }
> >
> > Or is life more complicated than that?
>
> Hmm, I think I fubared that and you decided to ignore my patch :)
>
> Let me look at it tomorrow morning with full awake brain cells.

Ok, wrapped my brain around it. I tripped over the magic asm foo which
has a single need_resched check and schedule point for both sys call
return and interrupt return.

So you need the schedule_preempt_irq() for kernel preemption from
interrupt return while on a normal syscall preemption a schedule would
be sufficient. But using schedule_preempt_irq() is not harmful here in
any way. It just sets the preempt_active bit also in cases where it
would not be required.

Even on preempt=n kernels adding the preempt_active bit is completely
harmless. So instead of having an extra function, moving the existing
one out of the ifdef PREEMPT looks like the sanest thing to do.

Peter, Ingo ?

Thanks,

tglx
------
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index c180860..0c59642 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -2660,6 +2660,7 @@ asmlinkage void __sched notrace preempt_schedule(void)
} while (need_resched());
}
EXPORT_SYMBOL(preempt_schedule);
+#endif /* CONFIG_PREEMPT */

/*
* this is the entry point to schedule() from kernel preemption
@@ -2693,8 +2694,6 @@ asmlinkage void __sched preempt_schedule_irq(void)
exception_exit(prev_state);
}

-#endif /* CONFIG_PREEMPT */
-
int default_wake_function(wait_queue_t *curr, unsigned mode, int wake_flags,
void *key)
{





\
 
 \ /
  Last update: 2013-11-21 13:41    [W:0.605 / U:0.132 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site