* [PATCH] Remove unnecessary irq disabling
@ 2007-05-01 21:30 Glauber de Oliveira Costa
2007-05-01 23:59 ` Mark Lord
0 siblings, 1 reply; 6+ messages in thread
From: Glauber de Oliveira Costa @ 2007-05-01 21:30 UTC (permalink / raw)
To: ak, akpm, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 316 bytes --]
RR asks us if it is really necessary to disable interrupts in
setup_secondary_APIC_clock(). The answer is no, since setup_APIC_timer()
starts by saving irq flags, which also disables them.
Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com>
--
Glauber de Oliveira Costa
Red Hat Inc.
"Free as in Freedom"
[-- Attachment #2: irq_disable.patch --]
[-- Type: text/plain, Size: 432 bytes --]
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c
index 124b2d2..7eacd5f 100644
--- a/arch/x86_64/kernel/apic.c
+++ b/arch/x86_64/kernel/apic.c
@@ -875,9 +875,7 @@ void __init setup_boot_APIC_clock (void)
void __cpuinit setup_secondary_APIC_clock(void)
{
- local_irq_disable(); /* FIXME: Do we need this? --RR */
setup_APIC_timer(calibration_result);
- local_irq_enable();
}
void disable_APIC_timer(void)
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH] Remove unnecessary irq disabling
2007-05-01 21:30 [PATCH] Remove unnecessary irq disabling Glauber de Oliveira Costa
@ 2007-05-01 23:59 ` Mark Lord
2007-05-02 4:44 ` Glauber de Oliveira Costa
0 siblings, 1 reply; 6+ messages in thread
From: Mark Lord @ 2007-05-01 23:59 UTC (permalink / raw)
To: Glauber de Oliveira Costa; +Cc: ak, akpm, linux-kernel
Glauber de Oliveira Costa wrote:
> RR asks us if it is really necessary to disable interrupts in
> setup_secondary_APIC_clock(). The answer is no, since setup_APIC_timer()
> starts by saving irq flags, which also disables them.
>
> Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com>
>
> --- a/arch/x86_64/kernel/apic.c
> +++ b/arch/x86_64/kernel/apic.c
> @@ -875,9 +875,7 @@ void __init setup_boot_APIC_clock (void)
>
> void __cpuinit setup_secondary_APIC_clock(void)
> {
> - local_irq_disable(); /* FIXME: Do we need this? --RR */
> setup_APIC_timer(calibration_result);
> - local_irq_enable();
> }
>
> void disable_APIC_timer(void)
Okay, I'll bite: before the patch, this code would exit
with interrupts *enabled*, always. Now it does not.
What does that break, or was it already broken and this fixes it?
Cheers
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] Remove unnecessary irq disabling
2007-05-01 23:59 ` Mark Lord
@ 2007-05-02 4:44 ` Glauber de Oliveira Costa
2007-05-02 9:58 ` Andi Kleen
0 siblings, 1 reply; 6+ messages in thread
From: Glauber de Oliveira Costa @ 2007-05-02 4:44 UTC (permalink / raw)
To: Mark Lord; +Cc: ak, akpm, linux-kernel
On Tue, May 01, 2007 at 07:59:21PM -0400, Mark Lord wrote:
> Glauber de Oliveira Costa wrote:
> >RR asks us if it is really necessary to disable interrupts in
> >setup_secondary_APIC_clock(). The answer is no, since setup_APIC_timer()
> >starts by saving irq flags, which also disables them.
> >
> >Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com>
> >
> >--- a/arch/x86_64/kernel/apic.c
> >+++ b/arch/x86_64/kernel/apic.c
> >@@ -875,9 +875,7 @@ void __init setup_boot_APIC_clock (void)
> >
> > void __cpuinit setup_secondary_APIC_clock(void)
> > {
> >- local_irq_disable(); /* FIXME: Do we need this? --RR */
> > setup_APIC_timer(calibration_result);
> >- local_irq_enable();
> > }
> >
> > void disable_APIC_timer(void)
>
> Okay, I'll bite: before the patch, this code would exit
> with interrupts *enabled*, always. Now it does not.
>
yeah, you have a point. The disable is unnecessary, but maybe
the enable is not. However,
> What does that break, or was it already broken and this fixes it?
I think neither. This function is only called at early bootup,
(start_secondary() ), and most of its callees have interrupts off anyway.
But maybe we do lose something. Andi, do you have a word on this?
--
Glauber de Oliveira Costa
Red Hat Inc.
"Free as in Freedom"
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] Remove unnecessary irq disabling
2007-05-02 4:44 ` Glauber de Oliveira Costa
@ 2007-05-02 9:58 ` Andi Kleen
2007-05-02 12:27 ` Mark Lord
2007-05-02 16:13 ` Glauber de Oliveira Costa
0 siblings, 2 replies; 6+ messages in thread
From: Andi Kleen @ 2007-05-02 9:58 UTC (permalink / raw)
To: Glauber de Oliveira Costa; +Cc: Mark Lord, akpm, linux-kernel
> > What does that break, or was it already broken and this fixes it?
> I think neither. This function is only called at early bootup,
> (start_secondary() ), and most of its callees have interrupts off anyway.
> But maybe we do lose something. Andi, do you have a word on this?
We need to enable them somewhere, but cpu_idle will do it in the end.
So it should be safe to drop it. I guess keeping them disabled the whole
time will be a little safer against potential races.
I added the patch, but might want some cooking in -mm first because this
is always fragile code.
-Andi
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Remove unnecessary irq disabling
2007-05-02 9:58 ` Andi Kleen
@ 2007-05-02 12:27 ` Mark Lord
2007-05-02 16:13 ` Glauber de Oliveira Costa
1 sibling, 0 replies; 6+ messages in thread
From: Mark Lord @ 2007-05-02 12:27 UTC (permalink / raw)
To: Andi Kleen; +Cc: Glauber de Oliveira Costa, akpm, linux-kernel
Andi Kleen wrote:
>>> What does that break, or was it already broken and this fixes it?
>> I think neither. This function is only called at early bootup,
>> (start_secondary() ), and most of its callees have interrupts off anyway.
>> But maybe we do lose something. Andi, do you have a word on this?
>
> We need to enable them somewhere, but cpu_idle will do it in the end.
> So it should be safe to drop it. I guess keeping them disabled the whole
> time will be a little safer against potential races.
>
> I added the patch, but might want some cooking in -mm first because this
> is always fragile code.
Okay, that would have it now match how i386 does it.
-ml
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Remove unnecessary irq disabling
2007-05-02 9:58 ` Andi Kleen
2007-05-02 12:27 ` Mark Lord
@ 2007-05-02 16:13 ` Glauber de Oliveira Costa
1 sibling, 0 replies; 6+ messages in thread
From: Glauber de Oliveira Costa @ 2007-05-02 16:13 UTC (permalink / raw)
To: Andi Kleen; +Cc: Mark Lord, akpm, linux-kernel
On Wed, May 02, 2007 at 11:58:17AM +0200, Andi Kleen wrote:
>
> > > What does that break, or was it already broken and this fixes it?
> > I think neither. This function is only called at early bootup,
> > (start_secondary() ), and most of its callees have interrupts off anyway.
> > But maybe we do lose something. Andi, do you have a word on this?
>
> We need to enable them somewhere, but cpu_idle will do it in the end.
> So it should be safe to drop it. I guess keeping them disabled the whole
> time will be a little safer against potential races.
yeah, that's exactly what I've thought. We enable interrupts (to disable
them afterwards) in smp_callin(), to avoid waking up Mr. Watchdog. I
guess it won't be a problem after that, will it?
--
Glauber de Oliveira Costa
Red Hat Inc.
"Free as in Freedom"
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2007-05-02 18:33 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-01 21:30 [PATCH] Remove unnecessary irq disabling Glauber de Oliveira Costa
2007-05-01 23:59 ` Mark Lord
2007-05-02 4:44 ` Glauber de Oliveira Costa
2007-05-02 9:58 ` Andi Kleen
2007-05-02 12:27 ` Mark Lord
2007-05-02 16:13 ` Glauber de Oliveira Costa
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.