2008-01-07 21:23:50

by Hiroshi Shimamoto

[permalink] [raw]
Subject: [PATCH] x86_64: enable irq in default_idle

Hi Ingo,

I think local_irq_enable() is missing in default_idle() on x86_64.
It's for recent x86 tree.

From: Hiroshi Shimamoto <[email protected]>
Subject: [PATCH] x86_64: enable irq in default_idle

local_irq_enable() is missing after sched_clock_idle_wakeup_event().

Signed-off-by: Hiroshi Shimamoto <[email protected]>
---
arch/x86/kernel/process_64.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index c6ad1a0..93ce4f3 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -119,8 +119,8 @@ void default_idle(void)
t1 = ktime_get();
t1n = ktime_to_ns(t1);
sched_clock_idle_wakeup_event(t1n - t0n);
- } else
- local_irq_enable();
+ }
+ local_irq_enable();
current_thread_info()->status |= TS_POLLING;
}

--
1.5.3.6


2008-01-08 08:04:52

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] x86_64: enable irq in default_idle


* Hiroshi Shimamoto <[email protected]> wrote:

> Hi Ingo,
>
> I think local_irq_enable() is missing in default_idle() on x86_64.
> It's for recent x86 tree.
>
> From: Hiroshi Shimamoto <[email protected]>
> Subject: [PATCH] x86_64: enable irq in default_idle
>
> local_irq_enable() is missing after sched_clock_idle_wakeup_event().

thanks Hiroshi, applied.

The effects of this bug should be increased latencies on 64-bit. Did you
notice these latencies, or did you find the bug in some other way (code
review)?

Ingo

2008-01-08 17:17:18

by Hiroshi Shimamoto

[permalink] [raw]
Subject: Re: [PATCH] x86_64: enable irq in default_idle

Ingo Molnar wrote:
> * Hiroshi Shimamoto <[email protected]> wrote:
>
>> Hi Ingo,
>>
>> I think local_irq_enable() is missing in default_idle() on x86_64.
>> It's for recent x86 tree.
>>
>> From: Hiroshi Shimamoto <[email protected]>
>> Subject: [PATCH] x86_64: enable irq in default_idle
>>
>> local_irq_enable() is missing after sched_clock_idle_wakeup_event().
>
> thanks Hiroshi, applied.
>
> The effects of this bug should be increased latencies on 64-bit. Did you
> notice these latencies, or did you find the bug in some other way (code
> review)?

I found this when I was comparing 32-bit and 64-bit source code
for x86 unification.

Thanks,
Hiroshi Shimamoto

2008-01-08 22:13:09

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] x86_64: enable irq in default_idle


* Hiroshi Shimamoto <[email protected]> wrote:

> >> local_irq_enable() is missing after
> >> sched_clock_idle_wakeup_event().
> >
> > thanks Hiroshi, applied.
> >
> > The effects of this bug should be increased latencies on 64-bit. Did
> > you notice these latencies, or did you find the bug in some other
> > way (code review)?
>
> I found this when I was comparing 32-bit and 64-bit source code for
> x86 unification.

cool :) Indeed even for other code, a number of times we got bugfixes
when unifying 32-bit and 64-bit files.

Ingo