All of lore.kernel.org
 help / color / mirror / Atom feed
* BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
@ 2007-03-19 17:10 Stefan Prechtel
  2007-03-19 17:36 ` Thomas Gleixner
  0 siblings, 1 reply; 31+ messages in thread
From: Stefan Prechtel @ 2007-03-19 17:10 UTC (permalink / raw)
  To: linux-kernel; +Cc: tglx, mingo

Hi!

If the ac-cable is plugged in, I can start my Notebook (HP nx6325)
without any problems.
On battery the kernel hanging around and it takes "hours" to boot the
kernel and the system is *very* slow. For example an init-skript takes
very long until it's started.

I did a git-bisect and found out that this is the first bad commit:
commit e9e2cdb412412326c4827fc78ba27f410d837e6e
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Feb 16 01:28:04 2007 -0800

    [PATCH] clockevents: i386 drivers

    Add clockevent drivers for i386: lapic (local) and PIT/HPET
(global).  Update
    the timer IRQ to call into the PIT/HPET driver's event handler and the
    lapic-timer IRQ to call into the lapic clockevent driver.  The
assignement of
    timer functionality is delegated to the core framework code and replaces the
    compile and runtime evalution in do_timer_interrupt_hook()

    Use the clockevents broadcast support and implement the lapic_broadcast
    function for ACPI.

    No changes to existing functionality.

So I tried to boot with nolapic on battery and with this option the
kernel (and system) starts as it should.
If you need more information, I will send it to you.

Regards,
Stefan Prechtel

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-19 17:10 BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4}) Stefan Prechtel
@ 2007-03-19 17:36 ` Thomas Gleixner
  2007-03-19 17:48   ` Thomas Gleixner
  0 siblings, 1 reply; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-19 17:36 UTC (permalink / raw)
  To: Stefan Prechtel; +Cc: linux-kernel, mingo

On Mon, 2007-03-19 at 18:10 +0100, Stefan Prechtel wrote:
> So I tried to boot with nolapic on battery and with this option the
> kernel (and system) starts as it should.
> If you need more information, I will send it to you.

Can you please provide your .config and a bootlog from a boot with
"nolapic" and without. Also please add apic=verbose to the commandline.

Can you please use Linus' latest git snaphost
http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.21-rc4-git4.bz2

or pull from Linus' git repository.

You can please open a new bug (Category: Timers, Component: Other) on
http://bugzilla.kernel.org and upload the files there, so we avoid
distributing them via LKML.

Thanks,

	tglx



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-19 17:36 ` Thomas Gleixner
@ 2007-03-19 17:48   ` Thomas Gleixner
  2007-03-19 18:53     ` Stefan Prechtel
  0 siblings, 1 reply; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-19 17:48 UTC (permalink / raw)
  To: Stefan Prechtel; +Cc: linux-kernel, mingo

On Mon, 2007-03-19 at 18:36 +0100, Thomas Gleixner wrote:
> On Mon, 2007-03-19 at 18:10 +0100, Stefan Prechtel wrote:
> > So I tried to boot with nolapic on battery and with this option the
> > kernel (and system) starts as it should.
> > If you need more information, I will send it to you.
> 
> Can you please provide your .config and a bootlog from a boot with
> "nolapic" and without. Also please add apic=verbose to the commandline.
> 
> Can you please use Linus' latest git snaphost
> http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.21-rc4-git4.bz2
> 
> or pull from Linus' git repository.
> 
> You can please open a new bug (Category: Timers, Component: Other) on
> http://bugzilla.kernel.org and upload the files there, so we avoid
> distributing them via LKML.

Oh, a bootlog with ac plugged in would be great too. 

Also can you please enable CONFIG_SYSRQ and hit SysRq-Q once, when the
slowness kicks in.

Thanks,

	tglx



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-19 17:48   ` Thomas Gleixner
@ 2007-03-19 18:53     ` Stefan Prechtel
  2007-03-19 19:17       ` Stefan Prechtel
  2007-03-19 19:27       ` Thomas Gleixner
  0 siblings, 2 replies; 31+ messages in thread
From: Stefan Prechtel @ 2007-03-19 18:53 UTC (permalink / raw)
  To: tglx; +Cc: linux-kernel, mingo

You can find the files here:
http://bugzilla.kernel.org/show_bug.cgi?id=8235

Regards,
Stefan Prechtel


2007/3/19, Thomas Gleixner <tglx@linutronix.de>:
> On Mon, 2007-03-19 at 18:36 +0100, Thomas Gleixner wrote:
> Oh, a bootlog with ac plugged in would be great too.
>
> Also can you please enable CONFIG_SYSRQ and hit SysRq-Q once, when the
> slowness kicks in.
>
> Thanks,
>
>         tglx

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-19 18:53     ` Stefan Prechtel
@ 2007-03-19 19:17       ` Stefan Prechtel
  2007-03-19 19:27       ` Thomas Gleixner
  1 sibling, 0 replies; 31+ messages in thread
From: Stefan Prechtel @ 2007-03-19 19:17 UTC (permalink / raw)
  To: tglx; +Cc: linux-kernel, mingo, johnstul

> (Bugzilla)
> Does booting w/ clocksource=acpi_pm avoid the problem?
No, it doesn't.
I hope it's ok that I added your email to CC.


2007/3/19, Stefan Prechtel <stefan.prechtel@googlemail.com>:
> Hi!
>
> If the ac-cable is plugged in, I can start my Notebook (HP nx6325)
> without any problems.
> On battery the kernel hanging around and it takes "hours" to boot the
> kernel and the system is *very* slow. For example an init-skript takes
> very long until it's started.
>
> I did a git-bisect and found out that this is the first bad commit:
> commit e9e2cdb412412326c4827fc78ba27f410d837e6e
> Author: Thomas Gleixner <tglx@linutronix.de>
> Date:   Fri Feb 16 01:28:04 2007 -0800
>
>     [PATCH] clockevents: i386 drivers
>
>     Add clockevent drivers for i386: lapic (local) and PIT/HPET
> (global).  Update
>     the timer IRQ to call into the PIT/HPET driver's event handler and the
>     lapic-timer IRQ to call into the lapic clockevent driver.  The
> assignement of
>     timer functionality is delegated to the core framework code and replaces the
>     compile and runtime evalution in do_timer_interrupt_hook()
>
>     Use the clockevents broadcast support and implement the lapic_broadcast
>     function for ACPI.
>
>     No changes to existing functionality.
>
> So I tried to boot with nolapic on battery and with this option the
> kernel (and system) starts as it should.
> If you need more information, I will send it to you.
>
> Regards,
> Stefan Prechtel
>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-19 18:53     ` Stefan Prechtel
  2007-03-19 19:17       ` Stefan Prechtel
@ 2007-03-19 19:27       ` Thomas Gleixner
  2007-03-19 19:49         ` Stefan Prechtel
  1 sibling, 1 reply; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-19 19:27 UTC (permalink / raw)
  To: Stefan Prechtel; +Cc: linux-kernel, mingo, Len Brown, Andi Kleen, john stultz

Stefan,

On Mon, 2007-03-19 at 19:53 +0100, Stefan Prechtel wrote:
> You can find the files here:
> http://bugzilla.kernel.org/show_bug.cgi?id=8235

thanks for providing the data. Your ACPI tables don't provide
information about the power states (C-States), but your BIOS seems to
switch the CPUs into deeper power states, when it runs on battery. In
those deeper power states the local APIC timers and the TSC are stopped.
So the machine waits for ever on the next timer interrupt.

We have a broadcast mechanism for this, which gets activated from ACPI,
but the broadcast mechanism is not activated:

[    3.798000] Clock Event Device: pit
....
[    3.798000] tick_broadcast_mask: 00000000

Can you please boot with 2.6.20 or earlier and check the output
of /proc/interrupts ?

IRQ#0 and the LOC (local APIC timer) Interrupts should increment in the
same frequency.

	tglx



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-19 19:27       ` Thomas Gleixner
@ 2007-03-19 19:49         ` Stefan Prechtel
  2007-03-19 20:04           ` Thomas Gleixner
  0 siblings, 1 reply; 31+ messages in thread
From: Stefan Prechtel @ 2007-03-19 19:49 UTC (permalink / raw)
  To: tglx; +Cc: linux-kernel, mingo, Len Brown, Andi Kleen, john stultz

2007/3/19, Thomas Gleixner <tglx@linutronix.de>:
> We have a broadcast mechanism for this, which gets activated from ACPI,
> but the broadcast mechanism is not activated:
>
> [    3.798000] Clock Event Device: pit
> ....
> [    3.798000] tick_broadcast_mask: 00000000
>
> Can you please boot with 2.6.20 or earlier and check the output
> of /proc/interrupts ?
>
> IRQ#0 and the LOC (local APIC timer) Interrupts should increment in the
> same frequency.
>
>         tglx

Here is the output of /proc/interrupts on 2.6.20:
           CPU0       CPU1
  0:       7089          0  local-APIC-edge-fasteio   timer
....
and this on 2.6.21-rc*:
           CPU0       CPU1
  0:        255          0  local-APIC-edge-fasteoi   timer
....

on 2.6.21-rc* the number "255" doesn't change.

But if it is ACPI relevant, shouldn't it boot with acpi=off?
I've tried with acpi=off and noapic but only with nolapic it started.

And the content of /proc/acpi/processor/C000/power shows only one
c-state; shouldn't it show more C-states? (please correct me if I'm
wrong)

 # cat /proc/acpi/processor/C000/power
active state:            C1
max_cstate:              C8
bus master activity:     00000000
maximum allowed latency: 2000 usec
states:
   *C1:                  type[C1] promotion[--] demotion[--]
latency[000] usage[00000000] duration[00000000000000000000]


Regards,
Stefan Prechtel

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-19 19:49         ` Stefan Prechtel
@ 2007-03-19 20:04           ` Thomas Gleixner
  2007-03-19 20:35             ` Stefan Prechtel
  0 siblings, 1 reply; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-19 20:04 UTC (permalink / raw)
  To: Stefan Prechtel; +Cc: linux-kernel, mingo, Len Brown, Andi Kleen, john stultz

On Mon, 2007-03-19 at 20:49 +0100, Stefan Prechtel wrote:
> > Can you please boot with 2.6.20 or earlier and check the output
> > of /proc/interrupts ?
> >
> > IRQ#0 and the LOC (local APIC timer) Interrupts should increment in the
> > same frequency.
> >
> >         tglx
> 
> Here is the output of /proc/interrupts on 2.6.20:
>            CPU0       CPU1
>   0:       7089          0  local-APIC-edge-fasteio   timer
> ....

Can you provide the numbers for LOC too ?
  0:   29801420   29793520    IO-APIC-edge  timer
...
LOC:  119180305  119180039

And please do a sleep 10; between two reads, so I can see the deltas.

> and this on 2.6.21-rc*:
>            CPU0       CPU1
>   0:        255          0  local-APIC-edge-fasteoi   timer
> ....
> 
> on 2.6.21-rc* the number "255" doesn't change.

Yes. I know. We rely on the local APIC, if the ACPI code does us not
tell to use the PIT broadcast, sigh.

> But if it is ACPI relevant, shouldn't it boot with acpi=off?
> I've tried with acpi=off and noapic but only with nolapic it started.
> 
> And the content of /proc/acpi/processor/C000/power shows only one
> c-state; shouldn't it show more C-states? (please correct me if I'm
> wrong)
> 
>  # cat /proc/acpi/processor/C000/power
> active state:            C1
> max_cstate:              C8
> bus master activity:     00000000
> maximum allowed latency: 2000 usec
> states:
>    *C1:                  type[C1] promotion[--] demotion[--]
> latency[000] usage[00000000] duration[00000000000000000000]

Yup. It should.

Thanks,

	tglx



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-19 20:04           ` Thomas Gleixner
@ 2007-03-19 20:35             ` Stefan Prechtel
  2007-03-19 20:56               ` Thomas Gleixner
  0 siblings, 1 reply; 31+ messages in thread
From: Stefan Prechtel @ 2007-03-19 20:35 UTC (permalink / raw)
  To: tglx; +Cc: linux-kernel, mingo, Len Brown, Andi Kleen, john stultz

2007/3/19, Thomas Gleixner <tglx@linutronix.de>:
> > Here is the output of /proc/interrupts on 2.6.20:
> >            CPU0       CPU1
> >   0:       7089          0  local-APIC-edge-fasteio   timer
> > ....
>
> Can you provide the numbers for LOC too ?
>   0:   29801420   29793520    IO-APIC-edge  timer
> ...
> LOC:  119180305  119180039
>
> And please do a sleep 10; between two reads, so I can see the deltas.

Ah sorry. I forgot it..
           CPU0       CPU1
 0:      28289          0  local-APIC-edge-fasteio   timer
...
LOC:      28237      28236

after a read: (I hope that is this what you want :-)
           CPU0       CPU1
  0:      30344          0  local-APIC-edge-fasteio   timer
...
LOC:      30292      30291


- Stefan Prechtel

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-19 20:35             ` Stefan Prechtel
@ 2007-03-19 20:56               ` Thomas Gleixner
  2007-03-19 21:51                 ` Stefan Prechtel
  0 siblings, 1 reply; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-19 20:56 UTC (permalink / raw)
  To: Stefan Prechtel; +Cc: linux-kernel, mingo, Len Brown, Andi Kleen, john stultz

On Mon, 2007-03-19 at 21:35 +0100, Stefan Prechtel wrote:
>            CPU0       CPU1
>  0:      28289          0  local-APIC-edge-fasteio   timer
> ...
> LOC:      28237      28236
> 
> after a read: (I hope that is this what you want :-)
>            CPU0       CPU1
>   0:      30344          0  local-APIC-edge-fasteio   timer
> ...
> LOC:      30292      30291

Is this with AC plugged in ? If yes, please provide the same numbers for
battery mode.

What's the output of 
cat /proc/acpi/processor/C000/power

for 2.6.20 and 2.6.21-rc4-latest-git with and w/o AC ?

Can you also please upload a bootlog with and without AC of 2.6.20 to
bugzilla ?

Thanks,

	tglx



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-19 20:56               ` Thomas Gleixner
@ 2007-03-19 21:51                 ` Stefan Prechtel
  2007-03-20  1:15                   ` Thomas Gleixner
  0 siblings, 1 reply; 31+ messages in thread
From: Stefan Prechtel @ 2007-03-19 21:51 UTC (permalink / raw)
  To: tglx; +Cc: linux-kernel, mingo, Len Brown, Andi Kleen, john stultz

2007/3/19, Thomas Gleixner <tglx@linutronix.de>:
> On Mon, 2007-03-19 at 21:35 +0100, Stefan Prechtel wrote:
> >            CPU0       CPU1
> >  0:      28289          0  local-APIC-edge-fasteio   timer
> > ...
> > LOC:      28237      28236
> >
> > after a read: (I hope that is this what you want :-)
> >            CPU0       CPU1
> >   0:      30344          0  local-APIC-edge-fasteio   timer
> > ...
> > LOC:      30292      30291
>
> Is this with AC plugged in ? If yes, please provide the same numbers for
> battery mode.

Yes. And here is the output for battery mode (2.6.20):
           CPU0       CPU1
  0:     292153          0  local-APIC-edge-fasteio   timer
LOC:     292114     292113

           CPU0       CPU1
  0:     293263          0  local-APIC-edge-fasteio   timer
LOC:     293224     293223



> What's the output of
> cat /proc/acpi/processor/C000/power
>
> for 2.6.20 and 2.6.21-rc4-latest-git with and w/o AC ?

2.6.20 / 2.6.21: (both the same)
battery / ac (both the same)
# cat /proc/acpi/processor/C000/power
active state:            C1
max_cstate:              C8
bus master activity:     00000000
maximum allowed latency: 2000 usec
states:
   *C1:                  type[C1] promotion[--] demotion[--] latency[000] usage[
00000000] duration[00000000000000000000]
# cat /proc/acpi/processor/C001/power
active state:            C1
max_cstate:              C8
bus master activity:     00000000
maximum allowed latency: 2000 usec
states:
   *C1:                  type[C1] promotion[--] demotion[--] latency[000] usage[
00000000] duration[00000000000000000000]



> Can you also please upload a bootlog with and without AC of 2.6.20 to
> bugzilla ?
Yes, one moment please. I will upload files..

> Thanks,
>
>         tglx

Thanks too ;)
- Stefan Prechtel

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-19 21:51                 ` Stefan Prechtel
@ 2007-03-20  1:15                   ` Thomas Gleixner
  2007-03-20  8:23                     ` Stefan Prechtel
  0 siblings, 1 reply; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-20  1:15 UTC (permalink / raw)
  To: Stefan Prechtel; +Cc: linux-kernel, mingo, Len Brown, Andi Kleen, john stultz

On Mon, 2007-03-19 at 22:51 +0100, Stefan Prechtel wrote:
> 2007/3/19, Thomas Gleixner <tglx@linutronix.de>:
> > On Mon, 2007-03-19 at 21:35 +0100, Stefan Prechtel wrote:
> > >            CPU0       CPU1
> > >  0:      28289          0  local-APIC-edge-fasteio   timer
> > > ...
> > > LOC:      28237      28236
> > >
> > > after a read: (I hope that is this what you want :-)
> > >            CPU0       CPU1
> > >   0:      30344          0  local-APIC-edge-fasteio   timer
> > > ...
> > > LOC:      30292      30291
> >
> > Is this with AC plugged in ? If yes, please provide the same numbers for
> > battery mode.
> 
> Yes. And here is the output for battery mode (2.6.20):
>            CPU0       CPU1
>   0:     292153          0  local-APIC-edge-fasteio   timer
> LOC:     292114     292113
> 
>            CPU0       CPU1
>   0:     293263          0  local-APIC-edge-fasteio   timer
> LOC:     293224     293223

Hmm. Can you please apply the following patch on top of 2.6.20 and
check, if the WARN_ON_ONCE triggers when you boot w/o AC plugged ?

Thanks,

	tglx

Index: linux-2.6.20/arch/i386/kernel/apic.c
===================================================================
--- linux-2.6.20.orig/arch/i386/kernel/apic.c
+++ linux-2.6.20/arch/i386/kernel/apic.c
@@ -1174,6 +1174,8 @@ void switch_APIC_timer_to_ipi(void *cpum
 	cpumask_t mask = *(cpumask_t *)cpumask;
 	int cpu = smp_processor_id();
 
+	WARN_ON_ONCE(1);
+
 	if (cpu_isset(cpu, mask) &&
 	    !cpu_isset(cpu, timer_bcast_ipi)) {
 		disable_APIC_timer();



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-20  1:15                   ` Thomas Gleixner
@ 2007-03-20  8:23                     ` Stefan Prechtel
  2007-03-20 16:47                       ` Grzegorz Chwesewicz
  0 siblings, 1 reply; 31+ messages in thread
From: Stefan Prechtel @ 2007-03-20  8:23 UTC (permalink / raw)
  To: tglx; +Cc: linux-kernel, mingo, Len Brown, Andi Kleen, john stultz

2007/3/20, Thomas Gleixner <tglx@linutronix.de>:
> On Mon, 2007-03-19 at 22:51 +0100, Stefan Prechtel wrote:
> > 2007/3/19, Thomas Gleixner <tglx@linutronix.de>:
> > > On Mon, 2007-03-19 at 21:35 +0100, Stefan Prechtel wrote:
> > > >            CPU0       CPU1
> > > >  0:      28289          0  local-APIC-edge-fasteio   timer
> > > > ...
> > > > LOC:      28237      28236
> > > >
> > > > after a read: (I hope that is this what you want :-)
> > > >            CPU0       CPU1
> > > >   0:      30344          0  local-APIC-edge-fasteio   timer
> > > > ...
> > > > LOC:      30292      30291
> > >
> > > Is this with AC plugged in ? If yes, please provide the same numbers for
> > > battery mode.
> >
> > Yes. And here is the output for battery mode (2.6.20):
> >            CPU0       CPU1
> >   0:     292153          0  local-APIC-edge-fasteio   timer
> > LOC:     292114     292113
> >
> >            CPU0       CPU1
> >   0:     293263          0  local-APIC-edge-fasteio   timer
> > LOC:     293224     293223
>
> Hmm. Can you please apply the following patch on top of 2.6.20 and
> check, if the WARN_ON_ONCE triggers when you boot w/o AC plugged ?
>
> Thanks,
>
>         tglx

Good morning!

The WARN_ON / WARN_ON_ONCE didn't trigger on boot.

- Stefan Prechtel

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-20  8:23                     ` Stefan Prechtel
@ 2007-03-20 16:47                       ` Grzegorz Chwesewicz
  2007-03-21  9:24                         ` Thomas Gleixner
  0 siblings, 1 reply; 31+ messages in thread
From: Grzegorz Chwesewicz @ 2007-03-20 16:47 UTC (permalink / raw)
  To: Stefan Prechtel, tglx
  Cc: linux-kernel, mingo, Len Brown, Andi Kleen, john stultz

I have HP nx6325. I've tried to use WARN_ON_ONCE patch, but I don't see
nothing special in dmesg. Just in case I'm posting my
dmesg_2.6.20_WARN_ON_ONCE_on_battery log on
http://bugzilla.kernel.org/show_bug.cgi?id=8235 .

Below I post output of my /proc interrupts (10 sec. delay between reads).

#########################

2.6.20_ac:

           CPU0       CPU1
  0:      73190          0  local-APIC-edge-fasteio   timer
LOC:      72967      72966

           CPU0       CPU1
  0:      83196          0  local-APIC-edge-fasteio   timer

LOC:      82974      82973

#########################

2.6.20_battery:

           CPU0       CPU1
  0:     468590          0  local-APIC-edge-fasteio   timer
LOC:     468410     468409

           CPU0       CPU1
  0:     478596          0  local-APIC-edge-fasteio   timer
LOC:     478417     478416

#########################

2.6-git_ac:

           CPU0       CPU1
  0:        262          0  local-APIC-edge-fasteoi   timer
LOC:      66041      66041

           CPU0       CPU1
  0:        262          0  local-APIC-edge-fasteoi   timer
LOC:      76067      76067

#########################

2.6-git_battery:

           CPU0       CPU1
  0:        261          0  local-APIC-edge-fasteoi   timer
LOC:      29007      29015

           CPU0       CPU1
  0:        261          0  local-APIC-edge-fasteoi   timer
LOC:      29189      29200

#########################

Other interesting thing on 2.6-git is that when I press a key on keyboard it
doesn't repeat (on battery), but it repeats on 2.6-git on ac.

--
Greetings - Grzegorz Chwesewicz

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-20 16:47                       ` Grzegorz Chwesewicz
@ 2007-03-21  9:24                         ` Thomas Gleixner
  2007-03-21  9:46                           ` Andi Kleen
  0 siblings, 1 reply; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-21  9:24 UTC (permalink / raw)
  To: Grzegorz Chwesewicz
  Cc: Stefan Prechtel, linux-kernel, mingo, Len Brown, Andi Kleen, john stultz

On Tue, 2007-03-20 at 17:47 +0100, Grzegorz Chwesewicz wrote:
> I have HP nx6325. I've tried to use WARN_ON_ONCE patch, but I don't see
> nothing special in dmesg. Just in case I'm posting my
> dmesg_2.6.20_WARN_ON_ONCE_on_battery log on
> http://bugzilla.kernel.org/show_bug.cgi?id=8235 .
> 
> Below I post output of my /proc interrupts (10 sec. delay between reads).
>
> Other interesting thing on 2.6-git is that when I press a key on keyboard it
> doesn't repeat (on battery), but it repeats on 2.6-git on ac.

Sigh. The periodic PIT interrupt pampers over the problem in <2.6.21-rc.
It prevents the BIOS to switch the CPU in lower power states.

I'm working on a detect LAPIC / BIOS madness check.

	tglx



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-21  9:24                         ` Thomas Gleixner
@ 2007-03-21  9:46                           ` Andi Kleen
  2007-03-21 10:10                             ` Thomas Gleixner
  0 siblings, 1 reply; 31+ messages in thread
From: Andi Kleen @ 2007-03-21  9:46 UTC (permalink / raw)
  To: tglx
  Cc: Grzegorz Chwesewicz, Stefan Prechtel, linux-kernel, mingo,
	Len Brown, john stultz

On Wednesday 21 March 2007 10:24, Thomas Gleixner wrote:
> On Tue, 2007-03-20 at 17:47 +0100, Grzegorz Chwesewicz wrote:
> > I have HP nx6325. I've tried to use WARN_ON_ONCE patch, but I don't see
> > nothing special in dmesg. Just in case I'm posting my
> > dmesg_2.6.20_WARN_ON_ONCE_on_battery log on
> > http://bugzilla.kernel.org/show_bug.cgi?id=8235 .
> >
> > Below I post output of my /proc interrupts (10 sec. delay between reads).
> >
> > Other interesting thing on 2.6-git is that when I press a key on keyboard
> > it doesn't repeat (on battery), but it repeats on 2.6-git on ac.
>
> Sigh. The periodic PIT interrupt pampers over the problem in <2.6.21-rc.
> It prevents the BIOS to switch the CPU in lower power states.

I think I ran into the same problem with my initial noidletick patch.
I don't have that test machine anymore though.

Normally the "use PIT when AMD && Cstate >= 2" check should
have caught that though. Why did it here?

-Andi


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-21  9:46                           ` Andi Kleen
@ 2007-03-21 10:10                             ` Thomas Gleixner
  2007-03-21 10:37                               ` Andi Kleen
  0 siblings, 1 reply; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-21 10:10 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Grzegorz Chwesewicz, Stefan Prechtel, linux-kernel, mingo,
	Len Brown, john stultz

On Wed, 2007-03-21 at 10:46 +0100, Andi Kleen wrote:
> On Wednesday 21 March 2007 10:24, Thomas Gleixner wrote:
> > On Tue, 2007-03-20 at 17:47 +0100, Grzegorz Chwesewicz wrote:
> > > I have HP nx6325. I've tried to use WARN_ON_ONCE patch, but I don't see
> > > nothing special in dmesg. Just in case I'm posting my
> > > dmesg_2.6.20_WARN_ON_ONCE_on_battery log on
> > > http://bugzilla.kernel.org/show_bug.cgi?id=8235 .
> > >
> > > Below I post output of my /proc interrupts (10 sec. delay between reads).
> > >
> > > Other interesting thing on 2.6-git is that when I press a key on keyboard
> > > it doesn't repeat (on battery), but it repeats on 2.6-git on ac.
> >
> > Sigh. The periodic PIT interrupt pampers over the problem in <2.6.21-rc.
> > It prevents the BIOS to switch the CPU in lower power states.
> 
> I think I ran into the same problem with my initial noidletick patch.
> I don't have that test machine anymore though.
> 
> Normally the "use PIT when AMD && Cstate >= 2" check should
> have caught that though. Why did it here?

The BIOS/ACPI is broken and does only expose C1, which should not switch
off LAPIC. The BIOS is switching into deeper C-States behind the kernels
back somehow.

	tglx



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-21 10:10                             ` Thomas Gleixner
@ 2007-03-21 10:37                               ` Andi Kleen
  2007-03-21 11:14                                 ` Thomas Gleixner
  0 siblings, 1 reply; 31+ messages in thread
From: Andi Kleen @ 2007-03-21 10:37 UTC (permalink / raw)
  To: tglx
  Cc: Grzegorz Chwesewicz, Stefan Prechtel, linux-kernel, mingo,
	Len Brown, john stultz


> The BIOS/ACPI is broken and does only expose C1, which should not switch
> off LAPIC. The BIOS is switching into deeper C-States behind the kernels
> back somehow.

Hmm, perhaps we can check AMD && (cstate >= 2 || has a battery) ? 
Should be doable by looking up the battery object in ACPI

-Andi

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-21 10:37                               ` Andi Kleen
@ 2007-03-21 11:14                                 ` Thomas Gleixner
  2007-03-21 12:15                                   ` Thomas Gleixner
  2007-03-21 12:42                                   ` Andi Kleen
  0 siblings, 2 replies; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-21 11:14 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Grzegorz Chwesewicz, Stefan Prechtel, linux-kernel, mingo,
	Len Brown, john stultz

On Wed, 2007-03-21 at 11:37 +0100, Andi Kleen wrote:
> > The BIOS/ACPI is broken and does only expose C1, which should not switch
> > off LAPIC. The BIOS is switching into deeper C-States behind the kernels
> > back somehow.
> 
> Hmm, perhaps we can check AMD && (cstate >= 2 || has a battery) ? 
> Should be doable by looking up the battery object in ACPI

Which makes us rely on another ACPI feature. What guarantees that the
ACPI tables are correct for this one ?

	tglx



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-21 11:14                                 ` Thomas Gleixner
@ 2007-03-21 12:15                                   ` Thomas Gleixner
  2007-03-21 12:33                                     ` Thomas Gleixner
  2007-03-21 12:42                                   ` Andi Kleen
  1 sibling, 1 reply; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-21 12:15 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Grzegorz Chwesewicz, Stefan Prechtel, linux-kernel, mingo,
	Len Brown, john stultz

Stefan, Grzegorz

On Wed, 2007-03-21 at 12:14 +0100, Thomas Gleixner wrote:
> On Wed, 2007-03-21 at 11:37 +0100, Andi Kleen wrote:
> > > The BIOS/ACPI is broken and does only expose C1, which should not switch
> > > off LAPIC. The BIOS is switching into deeper C-States behind the kernels
> > > back somehow.
> > 
> > Hmm, perhaps we can check AMD && (cstate >= 2 || has a battery) ? 
> > Should be doable by looking up the battery object in ACPI
> 
> Which makes us rely on another ACPI feature. What guarantees that the
> ACPI tables are correct for this one ?

Can you please apply the patch below and add "nolapic_timer" to the
kernel command line ?

Please provide also the output of

# dmidecode

on your laptops.

Thanks,

	tglx

diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c
index 5cff797..67f8d9f 100644
--- a/arch/i386/kernel/apic.c
+++ b/arch/i386/kernel/apic.c
@@ -61,6 +61,8 @@ static int enable_local_apic __initdata = 0;
 
 /* Local APIC timer verification ok */
 static int local_apic_timer_verify_ok;
+/* Disable local APIC timer from the kernel commandline */
+static int local_apic_timer_disabled;
 
 /*
  * Debug level, exported for io_apic.c
@@ -340,6 +342,13 @@ void __init setup_boot_APIC_clock(void)
 	long delta, deltapm;
 	int pm_referenced = 0;
 
+	if (local_apic_timer_disabled) {
+		/* No broadcast on UP ! */
+		if (num_possible_cpus() > 1)
+			setup_APIC_timer();
+		return;
+	}}
+
 	apic_printk(APIC_VERBOSE, "Using local APIC timer interrupts.\n"
 		    "calibrating APIC timer ...\n");
 
@@ -1179,6 +1188,13 @@ static int __init parse_nolapic(char *arg)
 }
 early_param("nolapic", parse_nolapic);
 
+static int __init parse_disable_lapic_timer(char *arg)
+{
+	local_apic_timer_disabled = 1;
+	return 0;
+}
+early_param("nolapic_timer", parse_disable_lapic_timer);
+
 static int __init apic_set_verbosity(char *str)
 {
 	if (strcmp("debug", str) == 0)



^ permalink raw reply related	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-21 12:15                                   ` Thomas Gleixner
@ 2007-03-21 12:33                                     ` Thomas Gleixner
  0 siblings, 0 replies; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-21 12:33 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Grzegorz Chwesewicz, Stefan Prechtel, linux-kernel, mingo,
	Len Brown, john stultz

On Wed, 2007-03-21 at 13:15 +0100, Thomas Gleixner wrote:
> +		return;
> +	}}
> +

Ooops, sorry. Did not quilt refresh before sending it out. Correct
version below.

	tglx

diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c
index 5cff797..83cf98d 100644
--- a/arch/i386/kernel/apic.c
+++ b/arch/i386/kernel/apic.c
@@ -61,6 +61,8 @@ static int enable_local_apic __initdata = 0;
 
 /* Local APIC timer verification ok */
 static int local_apic_timer_verify_ok;
+/* Disable local APIC timer from the kernel commandline */
+static int local_apic_timer_disabled;
 
 /*
  * Debug level, exported for io_apic.c
@@ -340,6 +342,13 @@ void __init setup_boot_APIC_clock(void)
 	long delta, deltapm;
 	int pm_referenced = 0;
 
+	if (local_apic_timer_disabled) {
+		/* No broadcast on UP ! */
+		if (num_possible_cpus() > 1)
+			setup_APIC_timer();
+		return;
+	}
+
 	apic_printk(APIC_VERBOSE, "Using local APIC timer interrupts.\n"
 		    "calibrating APIC timer ...\n");
 
@@ -1179,6 +1188,13 @@ static int __init parse_nolapic(char *arg)
 }
 early_param("nolapic", parse_nolapic);
 
+static int __init parse_disable_lapic_timer(char *arg)
+{
+	local_apic_timer_disabled = 1;
+	return 0;
+}
+early_param("nolapic_timer", parse_disable_lapic_timer);
+
 static int __init apic_set_verbosity(char *str)
 {
 	if (strcmp("debug", str) == 0)



^ permalink raw reply related	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-21 11:14                                 ` Thomas Gleixner
  2007-03-21 12:15                                   ` Thomas Gleixner
@ 2007-03-21 12:42                                   ` Andi Kleen
  2007-03-21 13:04                                     ` Stefan Prechtel
  1 sibling, 1 reply; 31+ messages in thread
From: Andi Kleen @ 2007-03-21 12:42 UTC (permalink / raw)
  To: tglx
  Cc: Grzegorz Chwesewicz, Stefan Prechtel, linux-kernel, mingo,
	Len Brown, john stultz

On Wednesday 21 March 2007 12:14, Thomas Gleixner wrote:
> On Wed, 2007-03-21 at 11:37 +0100, Andi Kleen wrote:
> > > The BIOS/ACPI is broken and does only expose C1, which should not
> > > switch off LAPIC. The BIOS is switching into deeper C-States behind the
> > > kernels back somehow.
> >
> > Hmm, perhaps we can check AMD && (cstate >= 2 || has a battery) ?
> > Should be doable by looking up the battery object in ACPI
>
> Which makes us rely on another ACPI feature. What guarantees that the
> ACPI tables are correct for this one ?

Nothing, but wrong C2 and wrong battery state together seems unlikely.

-Andi

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-21 12:42                                   ` Andi Kleen
@ 2007-03-21 13:04                                     ` Stefan Prechtel
  2007-03-21 13:15                                       ` Thomas Gleixner
  2007-03-21 14:14                                       ` [PATCH] i386: disable local apic timer via command line or dmi quirk Thomas Gleixner
  0 siblings, 2 replies; 31+ messages in thread
From: Stefan Prechtel @ 2007-03-21 13:04 UTC (permalink / raw)
  To: Andi Kleen
  Cc: tglx, Grzegorz Chwesewicz, linux-kernel, mingo, Len Brown, john stultz

2007/3/21, Andi Kleen <ak@suse.de>:
> On Wednesday 21 March 2007 12:14, Thomas Gleixner wrote:
> > On Wed, 2007-03-21 at 11:37 +0100, Andi Kleen wrote:
> > > > The BIOS/ACPI is broken and does only expose C1, which should not
> > > > switch off LAPIC. The BIOS is switching into deeper C-States behind the
> > > > kernels back somehow.
> > >
> > > Hmm, perhaps we can check AMD && (cstate >= 2 || has a battery) ?
> > > Should be doable by looking up the battery object in ACPI
> >
> > Which makes us rely on another ACPI feature. What guarantees that the
> > ACPI tables are correct for this one ?
>
> Nothing, but wrong C2 and wrong battery state together seems unlikely.
>
> -Andi
>

Hello

I uploaded the output of dmesg (kernel 2.6.21-rc4-git5) (battery / ac)
and dmidecode
I can boot on battery with nolapic_timer and the second core is online, too.
/proc/acpi/processor/C000/ shows the same as before but
/proc/interrupts has changed:

(battery)
           CPU0       CPU1
  0:      47131          0  local-APIC-edge-fasteoi   timer
LOC:          0      46978

(ac)
           CPU0       CPU1
  0:      59137          0  local-APIC-edge-fasteoi   timer
LOC:          0      58984


- Stefan Prechtel

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4})
  2007-03-21 13:04                                     ` Stefan Prechtel
@ 2007-03-21 13:15                                       ` Thomas Gleixner
  2007-03-21 14:14                                       ` [PATCH] i386: disable local apic timer via command line or dmi quirk Thomas Gleixner
  1 sibling, 0 replies; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-21 13:15 UTC (permalink / raw)
  To: Stefan Prechtel
  Cc: Andi Kleen, Grzegorz Chwesewicz, linux-kernel, mingo, Len Brown,
	john stultz

On Wed, 2007-03-21 at 14:04 +0100, Stefan Prechtel wrote:
> I uploaded the output of dmesg (kernel 2.6.21-rc4-git5) (battery / ac)
> and dmidecode
> I can boot on battery with nolapic_timer and the second core is online, too.
> /proc/acpi/processor/C000/ shows the same as before but
> /proc/interrupts has changed:
> 
> (battery)
>            CPU0       CPU1
>   0:      47131          0  local-APIC-edge-fasteoi   timer
> LOC:          0      46978
> 
> (ac)
>            CPU0       CPU1
>   0:      59137          0  local-APIC-edge-fasteoi   timer
> LOC:          0      58984

That's correct. We keep the PIT alive and trigger the lapic timer
interrupt via an IPI.

	tglx



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH] i386: disable local apic timer via command line or dmi quirk
  2007-03-21 14:14                                       ` [PATCH] i386: disable local apic timer via command line or dmi quirk Thomas Gleixner
@ 2007-03-21 14:09                                         ` Ingo Molnar
  2007-03-21 15:14                                           ` Grzegorz Chwesewicz
  2007-03-28  3:28                                         ` Len Brown
  1 sibling, 1 reply; 31+ messages in thread
From: Ingo Molnar @ 2007-03-21 14:09 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Stefan Prechtel, Andi Kleen, Grzegorz Chwesewicz, linux-kernel,
	Len Brown, john stultz, Andrew Morton, Adrian Bunk,
	Arjan van de Ven


* Thomas Gleixner <tglx@linutronix.de> wrote:

> The local APIC timer stops to work in deeper C-States. This is handled 
> by the ACPI code and a broadcast mechanism in the clockevents / tick 
> managment code.
> 
> Some systems do not expose the deeper C-States to the kernel, but 
> switch into deeper C-States behind the kernels back. This delays the 
> local apic timer interrupts for ever and makes the systems unusable.
> 
> Add a command line option to disable the local apic timer and a dmi 
> quirk for known broken systems.
> 
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

Acked-by: Ingo Molnar <mingo@elte.hu>

nice work!

	Ingo

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH] i386: disable local apic timer via command line or dmi quirk
  2007-03-21 13:04                                     ` Stefan Prechtel
  2007-03-21 13:15                                       ` Thomas Gleixner
@ 2007-03-21 14:14                                       ` Thomas Gleixner
  2007-03-21 14:09                                         ` Ingo Molnar
  2007-03-28  3:28                                         ` Len Brown
  1 sibling, 2 replies; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-21 14:14 UTC (permalink / raw)
  To: Stefan Prechtel
  Cc: Andi Kleen, Grzegorz Chwesewicz, linux-kernel, mingo, Len Brown,
	john stultz, Andrew Morton, Adrian Bunk, Arjan van de Ven

The local APIC timer stops to work in deeper C-States. This is handled
by the ACPI code and a broadcast mechanism in the clockevents / tick
managment code.

Some systems do not expose the deeper C-States to the kernel, but switch
into deeper C-States behind the kernels back. This delays the local apic
timer interrupts for ever and makes the systems unusable.

Add a command line option to disable the local apic timer and a dmi
quirk for known broken systems.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 856c8b1..06377c7 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1117,6 +1117,8 @@ and is between 256 and 4096 characters. It is defined in the file
 
 	nolapic		[IA-32,APIC] Do not enable or use the local APIC.
 
+	nolapic_timer	[IA-32,APIC] Do not use the local APIC timer.
+
 	noltlbs		[PPC] Do not use large page/tlb entries for kernel
 			lowmem mapping on PPC40x.
 
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c
index 5cff797..3682511 100644
--- a/arch/i386/kernel/apic.c
+++ b/arch/i386/kernel/apic.c
@@ -28,6 +28,7 @@
 #include <linux/clockchips.h>
 #include <linux/acpi_pmtmr.h>
 #include <linux/module.h>
+#include <linux/dmi.h>
 
 #include <asm/atomic.h>
 #include <asm/smp.h>
@@ -61,6 +62,8 @@ static int enable_local_apic __initdata = 0;
 
 /* Local APIC timer verification ok */
 static int local_apic_timer_verify_ok;
+/* Disable local APIC timer from the kernel commandline or via dmi quirk */
+static int local_apic_timer_disabled;
 
 /*
  * Debug level, exported for io_apic.c
@@ -266,6 +269,32 @@ static void __devinit setup_APIC_timer(void)
 }
 
 /*
+ * Detect systems with known broken BIOS implementations
+ */
+static int __init lapic_check_broken_bios(struct dmi_system_id *d)
+{
+	printk(KERN_NOTICE "%s detected: disabling lapic timer.\n",
+		       d->ident);
+	local_apic_timer_disabled = 1;
+	return 0;
+}
+
+static struct dmi_system_id __initdata broken_bios_dmi_table[] = {
+	{
+		/*
+		 * BIOS exports only C1 state, but uses deeper power
+		 * modes behind the kernels back.
+		 */
+		  .callback = lapic_check_broken_bios,
+		  .ident = "HP nx6325",
+		  .matches = {
+			DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq nx6325"),
+		  },
+	 },
+	 {}
+};
+
+/*
  * In this functions we calibrate APIC bus clocks to the external timer.
  *
  * We want to do the calibration only once since we want to have local timer
@@ -340,6 +369,22 @@ void __init setup_boot_APIC_clock(void)
 	long delta, deltapm;
 	int pm_referenced = 0;
 
+	/* Detect know broken systems */
+	dmi_check_system(broken_bios_dmi_table);
+
+	/*
+	 * The local apic timer can be disabled via the kernel
+	 * commandline or from the dmi quirk above. Register the lapic
+	 * timer as a dummy clock event source on SMP systems, so the
+	 * broadcast mechanism is used. On UP systems simply ignore it.
+	 */
+	if (local_apic_timer_disabled) {
+		/* No broadcast on UP ! */
+		if (num_possible_cpus() > 1)
+			setup_APIC_timer();
+		return;
+	}
+
 	apic_printk(APIC_VERBOSE, "Using local APIC timer interrupts.\n"
 		    "calibrating APIC timer ...\n");
 
@@ -1179,6 +1224,13 @@ static int __init parse_nolapic(char *arg)
 }
 early_param("nolapic", parse_nolapic);
 
+static int __init parse_disable_lapic_timer(char *arg)
+{
+	local_apic_timer_disabled = 1;
+	return 0;
+}
+early_param("nolapic_timer", parse_disable_lapic_timer);
+
 static int __init apic_set_verbosity(char *str)
 {
 	if (strcmp("debug", str) == 0)



^ permalink raw reply related	[flat|nested] 31+ messages in thread

* Re: [PATCH] i386: disable local apic timer via command line or dmi quirk
  2007-03-21 14:09                                         ` Ingo Molnar
@ 2007-03-21 15:14                                           ` Grzegorz Chwesewicz
  2007-03-22 20:42                                             ` Stefan Prechtel
  0 siblings, 1 reply; 31+ messages in thread
From: Grzegorz Chwesewicz @ 2007-03-21 15:14 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner
  Cc: Stefan Prechtel, Andi Kleen, linux-kernel, Len Brown,
	john stultz, Andrew Morton, Adrian Bunk, Arjan van de Ven

On Wed, 21 Mar 2007 15:09:30 +0100, Ingo Molnar wrote
> * Thomas Gleixner <tglx@linutronix.de> wrote:
> 
> > The local APIC timer stops to work in deeper C-States. This is handled 
> > by the ACPI code and a broadcast mechanism in the clockevents / tick 
> > managment code.
> > 
> > Some systems do not expose the deeper C-States to the kernel, but 
> > switch into deeper C-States behind the kernels back. This delays the 
> > local apic timer interrupts for ever and makes the systems unusable.
> > 
> > Add a command line option to disable the local apic timer and a dmi 
> > quirk for known broken systems.

Confirming that my machine on 2.6-git with this patch works just like on
2.6.20. Great work.

--
Greetings - Grzegorz Chwesewicz


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH] i386: disable local apic timer via command line or dmi quirk
  2007-03-21 15:14                                           ` Grzegorz Chwesewicz
@ 2007-03-22 20:42                                             ` Stefan Prechtel
  0 siblings, 0 replies; 31+ messages in thread
From: Stefan Prechtel @ 2007-03-22 20:42 UTC (permalink / raw)
  To: Grzegorz Chwesewicz
  Cc: Ingo Molnar, Thomas Gleixner, Andi Kleen, linux-kernel,
	Len Brown, john stultz, Andrew Morton, Adrian Bunk,
	Arjan van de Ven

2007/3/21, Grzegorz Chwesewicz <grzegorz.chwesewicz@chilan.com>:
> On Wed, 21 Mar 2007 15:09:30 +0100, Ingo Molnar wrote
> > * Thomas Gleixner <tglx@linutronix.de> wrote:
> >
> > > The local APIC timer stops to work in deeper C-States. This is handled
> > > by the ACPI code and a broadcast mechanism in the clockevents / tick
> > > managment code.
> > >
> > > Some systems do not expose the deeper C-States to the kernel, but
> > > switch into deeper C-States behind the kernels back. This delays the
> > > local apic timer interrupts for ever and makes the systems unusable.
> > >
> > > Add a command line option to disable the local apic timer and a dmi
> > > quirk for known broken systems.
>
> Confirming that my machine on 2.6-git with this patch works just like on
> 2.6.20. Great work.
>
> --
> Greetings - Grzegorz Chwesewicz

Works here too, thx ;)

Kind regards,
Stefan Prechtel

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH] i386: disable local apic timer via command line or dmi quirk
  2007-03-21 14:14                                       ` [PATCH] i386: disable local apic timer via command line or dmi quirk Thomas Gleixner
  2007-03-21 14:09                                         ` Ingo Molnar
@ 2007-03-28  3:28                                         ` Len Brown
  2007-03-28  3:38                                           ` Len Brown
  2007-03-28  9:13                                           ` Thomas Gleixner
  1 sibling, 2 replies; 31+ messages in thread
From: Len Brown @ 2007-03-28  3:28 UTC (permalink / raw)
  To: tglx
  Cc: Stefan Prechtel, Andi Kleen, Grzegorz Chwesewicz, linux-kernel,
	mingo, john stultz, Andrew Morton, Adrian Bunk, Arjan van de Ven

[-- Attachment #1: Type: text/plain, Size: 2624 bytes --]

Thomas,

Is this failure specific to NO_HZ, and that is why the "nolapic_timer" fix is i386 only?
I'm running 2.6.21-rc5 an nx6325 here in 64-bit mode and I don't see the dramatic
boot failure described earlier in this thread.

However, I have observed that when running on battery,
the LOC falls behind the irq0 timer to the tune of about
2 interrupt/minute.  eg. when i booted my machine, LOC was
behind irq0 by 50, and now about a 20 minutes later it is behind
irq0 by 99.  However, the LOC for each processor remain at
a constant offset with respect to each other.

I do not see these this drift when running on AC.
Yes, the system exports just C1 in both cases.

Other oddities is the IRQ name on irq0 is garbled:

lenb@nx6325:~> uname -a; cat /proc/interrupts; sleep 100; cat /proc/interrupts
Linux nx6325 2.6.21-rc5 #37 SMP Tue Mar 27 22:26:00 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
           CPU0       CPU1
  0:     723812          0    <NULL>-edge      timer
  1:        716          0   IO-APIC-edge      i8042
  8:          0          0   IO-APIC-edge      rtc
 12:      30719          0   IO-APIC-edge      i8042
 14:      24318          0   IO-APIC-edge      ide0
 16:      18316          0   IO-APIC-fasteoi   libata
 19:         21          0   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3
 20:          1          0   IO-APIC-fasteoi   ohci1394
 21:       6736          0   IO-APIC-fasteoi   acpi
 23:      30358          0   IO-APIC-fasteoi   eth0
NMI:          0          0
LOC:     723675     723651
ERR:          0
           CPU0       CPU1
  0:     748812          0    <NULL>-edge      timer
  1:        716          0   IO-APIC-edge      i8042
  8:          0          0   IO-APIC-edge      rtc
 12:      30719          0   IO-APIC-edge      i8042
 14:      25164          0   IO-APIC-edge      ide0
 16:      18361          0   IO-APIC-fasteoi   libata
 19:         21          0   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3
 20:          1          0   IO-APIC-fasteoi   ohci1394
 21:       6960          0   IO-APIC-fasteoi   acpi
 23:      31385          0   IO-APIC-fasteoi   eth0
NMI:          0          0
LOC:     748673     748649
ERR:          0
lenb@nx6325:~> bc -l
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
748812-723812
25000
748673-723675
24998
723812-723675
137
748812-748673
139
lenb@nx6325:~> 

Further, in dmesg:
ATI board detected. Disabling timer routing over 8254.

..MP-BIOS bug: 8254 timer not connected to IO-APIC

-Len



[-- Attachment #2: dmesg --]
[-- Type: text/plain, Size: 19443 bytes --]

Linux version 2.6.21-rc5 (lenb@d975xbx2) (gcc version 4.1.2 20061115 (prerelease) (SUSE Linux)) #37 SMP Tue Mar 27 22:26:00 EDT 2007
Command line: root=/dev/sda2 debug
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
 BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000001bfd0000 (usable)
 BIOS-e820: 000000001bfd0000 - 000000001bfe5600 (reserved)
 BIOS-e820: 000000001bfe5600 - 000000001bff8000 (ACPI NVS)
 BIOS-e820: 000000001bff8000 - 0000000020000000 (reserved)
 BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
 BIOS-e820: 00000000fec00000 - 00000000fec02000 (reserved)
 BIOS-e820: 00000000ffbc0000 - 00000000ffcc0000 (reserved)
 BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved)
Entering add_active_range(0, 0, 159) 0 entries of 3200 used
Entering add_active_range(0, 256, 114640) 1 entries of 3200 used
end_pfn_map = 1048576
DMI 2.4 present.
ACPI: RSDP 000F7D30, 0024 (r2 HP    )
ACPI: XSDT 1BFE57B4, 0054 (r1 HP     0944      6070620 HP          1)
ACPI: FACP 1BFE5684, 00F4 (r4 HP     0944            3 HP          1)
ACPI: DSDT 1BFE58DC, EE7A (r1 HP        SB400    10000 MSFT  100000E)
ACPI: FACS 1BFF7E80, 0040
ACPI: APIC 1BFE5808, 0062 (r1 HP     0944            1 HP          1)
ACPI: MCFG 1BFE586C, 003C (r1 HP     0944            1 HP          1)
ACPI: TCPA 1BFE58A8, 0032 (r2 HP     0944            1 HP          1)
ACPI: SSDT 1BFF4756, 0059 (r1 HP       HPQNLP        1 MSFT  100000E)
ACPI: SSDT 1BFF47AF, 0182 (r1 HP     PSSTBLID        1 HP          1)
Scanning NUMA topology in Northbridge 24
Number of nodes 1
Node 0 MemBase 0000000000000000 Limit 000000001bfd0000
Entering add_active_range(0, 0, 159) 0 entries of 3200 used
Entering add_active_range(0, 256, 114640) 1 entries of 3200 used
NUMA: Using 63 for the hash shift.
Using node hash shift of 63
Bootmem setup node 0 0000000000000000-000000001bfd0000
No mptable found.
Zone PFN ranges:
  DMA             0 ->     4096
  DMA32        4096 ->  1048576
  Normal    1048576 ->  1048576
early_node_map[2] active PFN ranges
    0:        0 ->      159
    0:      256 ->   114640
On node 0 totalpages: 114543
  DMA zone: 56 pages used for memmap
  DMA zone: 1593 pages reserved
  DMA zone: 2350 pages, LIFO batch:0
  DMA32 zone: 1511 pages used for memmap
  DMA32 zone: 109033 pages, LIFO batch:31
  Normal zone: 0 pages used for memmap
ATI board detected. Disabling timer routing over 8254.
ACPI: PM-Timer IO Port: 0x8008
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
Processor #0 (Bootup-CPU)
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
Processor #1
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 21 low level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
Setting APIC routing to physical flat
Using ACPI (MADT) for SMP configuration information
Nosave address range: 000000000009f000 - 00000000000a0000
Nosave address range: 00000000000a0000 - 00000000000e0000
Nosave address range: 00000000000e0000 - 0000000000100000
Allocating PCI resources starting at 30000000 (gap: 20000000:c0000000)
SMP: Allowing 2 CPUs, 0 hotplug CPUs
PERCPU: Allocating 36992 bytes of per cpu data
Built 1 zonelists.  Total pages: 111383
Kernel command line: root=/dev/sda2 debug
Initializing CPU#0
PID hash table entries: 2048 (order: 11, 16384 bytes)
Extended CMOS year: 2000
time.c: Detected 1596.295 MHz processor.
Console: colour VGA+ 80x25
Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)
Checking aperture...
CPU 0: aperture @ 14b4000000 size 32 MB
Aperture too small (32 MB)
No AGP bridge found
Memory: 444360k/458560k available (3299k kernel code, 13812k reserved, 1848k data, 320k init)
Calibrating delay using timer specific routine.. 3197.82 BogoMIPS (lpj=6395653)
Mount-cache hash table entries: 256
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 256K (64 bytes/line)
CPU 0/0 -> Node 0
CPU: Physical Processor ID: 0
CPU: Processor Core ID: 0
SMP alternatives: switching to UP code
ACPI: Core revision 20070126
Parsing all Control Methods:
Table [DSDT](id 0001) - 1153 Objects with 113 Devices 337 Methods 33 Regions
Parsing all Control Methods:
Table [SSDT](id 0002) - 2 Objects with 0 Devices 2 Methods 0 Regions
Parsing all Control Methods:
Table [SSDT](id 0003) - 8 Objects with 0 Devices 0 Methods 0 Regions
 tbxface-0587 [02] tb_load_namespace     : ACPI Tables successfully acquired
evxfevnt-0091 [02] enable                : Transition to ACPI mode successful
..MP-BIOS bug: 8254 timer not connected to IO-APIC
Using local APIC timer interrupts.
result 12471066
Detected 12.471 MHz APIC timer.
SMP alternatives: switching to SMP code
Booting processor 1/2 APIC 0x1
Initializing CPU#1
Calibrating delay using timer specific routine.. 3192.24 BogoMIPS (lpj=6384480)
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 256K (64 bytes/line)
CPU 1/1 -> Node 0
CPU: Physical Processor ID: 0
CPU: Processor Core ID: 1
AMD Turion(tm) 64 X2 Mobile Technology TL-50 stepping 02
Brought up 2 CPUs
migration_cost=141
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: Using MMCONFIG at e0000000 - efffffff
PCI: No mmconfig possible on device 00:18
evgpeblk-0952 [04] ev_create_gpe_block   : GPE 00 to 1F [_GPE] 4 regs on int 0x15
evgpeblk-1049 [03] ev_initialize_gpe_bloc: Found 3 Wake, Enabled 11 Runtime GPEs in this block
Completing Region/Field/Buffer/Package initialization:..................................................................................................................................................................
Initialized 30/33 Regions 0/0 Fields 64/64 Buffers 68/78 Packages (1172 nodes)
Initializing Device/Processor/Thermal objects by executing _INI methods:.......
Executed 7 _INI methods requiring 2 _STA executions (examined 120 objects)
ACPI: Interpreter enabled
ACPI: (supports S0 S3 S4 S5)
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [C074] (0000:00)
PCI: Probing PCI hardware (bus 00)
0000:00:14.1: trying to change BAR0 from 0000 to 01F0
0000:00:14.1: trying to change BAR1 from 0000 to 03F4
0000:00:14.1: trying to change BAR2 from 0000 to 0170
0000:00:14.1: trying to change BAR3 from 0000 to 0374
Boot video device is 0000:01:05.0
PCI: Transparent bridge - 0000:00:14.4
PCI: Bus #03 (-#06) is hidden behind transparent bridge #02 (-#03) (try 'pci=assign-busses')
Please report the result to linux-kernel to fix this permanently
ACPI: PCI Interrupt Routing Table [\_SB_.C074._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.C074.C075._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.C074.C0DF._PRT]
ACPI: PCI Interrupt Link [C125] (IRQs 10 11) *0, disabled.
ACPI: PCI Interrupt Link [C126] (IRQs 10 11) *0, disabled.
ACPI: PCI Interrupt Link [C127] (IRQs 10 11) *0, disabled.
ACPI: PCI Interrupt Link [C128] (IRQs 10 11) *0, disabled.
ACPI: PCI Interrupt Link [C129] (IRQs 10 11) *0, disabled.
ACPI: PCI Interrupt Link [C12A] (IRQs 9) *0, disabled.
ACPI: PCI Interrupt Link [C12B] (IRQs 10 11) *0, disabled.
ACPI: PCI Interrupt Link [C12C] (IRQs *10 11)
ACPI: Power Resource [C223] (off)
ACPI: Power Resource [C1FE] (off)
ACPI: Power Resource [C217] (on)
ACPI: Power Resource [C34B] (off)
ACPI: Power Resource [C34C] (off)
ACPI: Power Resource [C34D] (off)
ACPI: Power Resource [C34E] (off)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: PnP ACPI: found 13 devices
SCSI subsystem initialized
libata version 2.20 loaded.
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
PCI: Cannot allocate resource region 0 of device 0000:00:14.2
pnp: 00:00: iomem range 0x0-0x9ffff could not be reserved
pnp: 00:00: iomem range 0xe0000-0xfffff could not be reserved
Time: tsc clocksource has been installed.
pnp: 00:00: iomem range 0x100000-0x1bffffff could not be reserved
pnp: 00:0a: ioport range 0x40b-0x40b has been reserved
pnp: 00:0a: ioport range 0x4d0-0x4d1 has been reserved
pnp: 00:0a: ioport range 0x4d6-0x4d6 has been reserved
pnp: 00:0a: iomem range 0xffb00000-0xffbfffff has been reserved
pnp: 00:0a: iomem range 0xfff00000-0xffffffff has been reserved
pnp: 00:0b: ioport range 0x8000-0x802f has been reserved
pnp: 00:0b: ioport range 0x8100-0x811f has been reserved
pnp: 00:0b: iomem range 0xe0000000-0xefffffff has been reserved
pnp: 00:0b: iomem range 0xfec00000-0xfec00fff has been reserved
pnp: 00:0c: iomem range 0xcf000-0xcffff has been reserved
pnp: 00:0c: iomem range 0x1c000000-0x1fffffff could not be reserved
pnp: 00:0c: iomem range 0xfee00000-0xfee00fff has been reserved
ACPI: PCI Interrupt 0000:02:04.1[A] -> GSI 20 (level, low) -> IRQ 20
ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[20]  MMIO=[d0011000-d00117ff]  Max Packet=[2048]  IR/IT contexts=[4/8]
PCI: Bridge: 0000:00:01.0
  IO window: 6000-6fff
  MEM window: d0300000-d03fffff
  PREFETCH window: c0000000-c3ffffff
PCI: Bridge: 0000:00:04.0
  IO window: 4000-5fff
  MEM window: cc000000-cfffffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:05.0
  IO window: 2000-3fff
  MEM window: c8000000-cbffffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:06.0
  IO window: disabled.
  MEM window: c4000000-c40fffff
  PREFETCH window: disabled.
PCI: Bus 3, cardbus bridge: 0000:02:04.0
Time: acpi_pm clocksource has been installed.
  IO window: 00001000-000010ff
  IO window: 00001400-000014ff
  PREFETCH window: 30000000-33ffffff
  MEM window: 38000000-3bffffff
PCI: Bridge: 0000:00:14.4
  IO window: 1000-1fff
  MEM window: d0000000-d02fffff
  PREFETCH window: 30000000-33ffffff
PCI: Setting latency timer of device 0000:00:04.0 to 64
PCI: Setting latency timer of device 0000:00:05.0 to 64
PCI: Setting latency timer of device 0000:00:06.0 to 64
ACPI: PCI Interrupt 0000:02:04.0[A] -> GSI 20 (level, low) -> IRQ 20
NET: Registered protocol family 2
IP route cache hash table entries: 4096 (order: 3, 32768 bytes)
TCP established hash table entries: 16384 (order: 6, 393216 bytes)
TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
TCP: Hash tables configured (established 16384 bind 16384)
TCP reno registered
Total HugeTLB memory allocated, 0
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
PCI: Setting latency timer of device 0000:00:04.0 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:04.0:pcie00]
Allocate Port Service[0000:00:04.0:pcie01]
Allocate Port Service[0000:00:04.0:pcie03]
PCI: Setting latency timer of device 0000:00:05.0 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:05.0:pcie00]
Allocate Port Service[0000:00:05.0:pcie01]
Allocate Port Service[0000:00:05.0:pcie03]
PCI: Setting latency timer of device 0000:00:06.0 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:06.0:pcie00]
Allocate Port Service[0000:00:06.0:pcie01]
Allocate Port Service[0000:00:06.0:pcie03]
Evaluate _OSC Set fails. Status = 0x0005
Evaluate _OSC Set fails. Status = 0x0005
aer_init: AER service init fails - Run ACPI _OSC fails
aer: probe of 0000:00:04.0:pcie01 failed with error 2
Evaluate _OSC Set fails. Status = 0x0005
Evaluate _OSC Set fails. Status = 0x0005
aer_init: AER service init fails - Run ACPI _OSC fails
aer: probe of 0000:00:05.0:pcie01 failed with error 2
Evaluate _OSC Set fails. Status = 0x0005
Evaluate _OSC Set fails. Status = 0x0005
aer_init: AER service init fails - Run ACPI _OSC fails
aer: probe of 0000:00:06.0:pcie01 failed with error 2
ACPI: AC Adapter [C1BD] (off-line)
ACPI: Battery Slot [C1BF] (battery present)
ACPI: Battery Slot [C1BE] (battery absent)
input: Power Button (FF) as /class/input/input0
ACPI: Power Button (FF) [PWRF]
input: Sleep Button (CM) as /class/input/input1
ACPI: Sleep Button (CM) [C25A]
input: Lid Switch as /class/input/input2
ACPI: Lid Switch [C25B]
ACPI: Processor [C000] (supports 8 throttling states)
ACPI: Processor [C001] (supports 8 throttling states)
ACPI: Thermal Zone [TZ1] (66 C)
ACPI: Thermal Zone [TZ2] (53 C)
ACPI: Thermal Zone [TZ3] (26 C)
Real Time Clock Driver v1.12ac
Linux agpgart interface v0.102 (c) Dave Jones
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
Floppy drive(s): fd0 is 1.44M
floppy0: no floppy controllers found
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
Intel(R) PRO/1000 Network Driver - version 7.3.20-k2
Copyright (c) 1999-2006 Intel Corporation.
e100: Intel(R) PRO/100 Network Driver, 3.5.17-k2-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
tg3.c:v3.74 (February 20, 2007)
ACPI: PCI Interrupt 0000:02:01.0[A] -> GSI 23 (level, low) -> IRQ 23
eth0: Tigon3 [partno(BCM95788A50) rev 3003 PHY(5705)] (PCI:33MHz:32-bit) 10/100/1000Base-T Ethernet 00:17:08:30:e4:ee
eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] Split[0] WireSpeed[0] TSOcap[1] 
eth0: dma_rwctrl[763f0000] dma_mask[32-bit]
forcedeth.c: Reverse Engineered nForce ethernet driver. Version 0.60.
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
netconsole: not configured, aborting
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
ATIIXP: IDE controller at PCI slot 0000:00:14.1
ACPI: PCI Interrupt 0000:00:14.1[A] -> GSI 16 (level, low) -> IRQ 16
ATIIXP: chipset revision 128
ATIIXP: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0x7040-0x7047, BIOS settings: hda:DMA, hdb:pio
ATIIXP: simplex device: DMA disabled
ide1: ATIIXP Bus-Master DMA disabled (BIOS)
Probing IDE interface ide0...
hda: TSSTcorpCDW/DVD TS-L462C, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
Probing IDE interface ide1...
hda: ATAPI 24X DVD-ROM CD-R/RW drive, 1536kB Cache, DMA
Uniform CD-ROM driver Revision: 3.20
megaraid cmm: 2.20.2.7 (Release Date: Sun Jul 16 00:01:03 EST 2006)
megaraid: 2.20.5.1 (Release Date: Thu Nov 16 15:32:35 EST 2006)
megasas: 00.00.03.10-rc1 Wed Feb 14 10:14:25 PST 2007
sata_sil 0000:00:12.0: version 2.1
ACPI: PCI Interrupt 0000:00:12.0[A] -> GSI 16 (level, low) -> IRQ 16
ata1: SATA max UDMA/100 cmd 0xffffc20000036080 ctl 0xffffc2000003608a bmdma 0xffffc20000036000 irq 16
ata2: SATA max UDMA/100 cmd 0xffffc200000360c0 ctl 0xffffc200000360ca bmdma 0xffffc20000036008 irq 16
scsi0 : sata_sil
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata1.00: ATA-7: FUJITSU MHT2040BH, 0000104A, max UDMA/100
ata1.00: 78140160 sectors, multi 16: LBA48 NCQ (depth 0/32)
ata1.00: configured for UDMA/100
scsi1 : sata_sil
ata2: SATA link down (SStatus 0 SControl 300)
scsi 0:0:0:0: Direct-Access     ATA      FUJITSU MHT2040B 0000 PQ: 0 ANSI: 5
SCSI device sda: 78140160 512-byte hdwr sectors (40008 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPO or FUA
SCSI device sda: 78140160 512-byte hdwr sectors (40008 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPO or FUA
 sda: sda1 sda2 sda3
sd 0:0:0:0: Attached scsi disk sda
sd 0:0:0:0: Attached scsi generic sg0 type 0
Fusion MPT base driver 3.04.04
Copyright (c) 1999-2007 LSI Logic Corporation
Fusion MPT SPI Host driver 3.04.04
Fusion MPT SAS Host driver 3.04.04
ieee1394: raw1394: /dev/raw1394 device initialized
ACPI: PCI Interrupt 0000:00:13.2[A] -> GSI 19 (level, low) -> IRQ 19
ehci_hcd 0000:00:13.2: EHCI Host Controller
ehci_hcd 0000:00:13.2: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:13.2: irq 19, io mem 0xd0403000
ehci_hcd 0000:00:13.2: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 8 ports detected
ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
ACPI: PCI Interrupt 0000:00:13.0[A] -> GSI 19 (level, low) -> IRQ 19
ohci_hcd 0000:00:13.0: OHCI Host Controller
ohci_hcd 0000:00:13.0: new USB bus registered, assigned bus number 2
ohci_hcd 0000:00:13.0: irq 19, io mem 0xd0401000
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 4 ports detected
ACPI: PCI Interrupt 0000:00:13.1[A] -> GSI 19 (level, low) -> IRQ 19
ohci_hcd 0000:00:13.1: OHCI Host Controller
ohci_hcd 0000:00:13.1: new USB bus registered, assigned bus number 3
ohci_hcd 0000:00:13.1: irq 19, io mem 0xd0402000
usb usb3: configuration #1 chosen from 1 choice
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 4 ports detected
USB Universal Host Controller Interface driver v3.0
usb 3-1: new full speed USB device using ohci_hcd and address 2
usb 3-1: configuration #1 chosen from 1 choice
usbcore: registered new interface driver usblp
drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver usbhid
drivers/usb/input/hid-core.c: v2.6:USB HID core driver
PNP: PS/2 Controller [PNP0303:C214,PNP0f13:C215] at 0x60,0x64 irq 1,12
i8042.c: Detected active multiplexing controller, rev 1.1.
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX0 port at 0x60,0x64 irq 12
serio: i8042 AUX1 port at 0x60,0x64 irq 12
serio: i8042 AUX2 port at 0x60,0x64 irq 12
serio: i8042 AUX3 port at 0x60,0x64 irq 12
mice: PS/2 mouse device common for all mice
input: AT Translated Set 2 keyboard as /class/input/input3
device-mapper: ioctl: 4.11.0-ioctl (2006-10-12) initialised: dm-devel@redhat.com
Intel 810 + AC97 Audio, version 1.01, 22:52:57 Mar 25 2007
oprofile: using NMI interrupt.
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
powernow-k8: Found 2 AMD Turion(tm) 64 X2 Mobile Technology TL-50 processors (version 2.00.00)
powernow-k8:    0 : fid 0x8 (1600 MHz), vid 0x13
powernow-k8:    1 : fid 0x0 (800 MHz), vid 0x1e
powernow-k8: ph2 null fid transition 0x8
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
synaptics reset failed
synaptics reset failed
synaptics reset failed
Synaptics Touchpad, model: 1, fw: 6.2, id: 0x25a0b1, caps: 0xa04793/0x300000
serio: Synaptics pass-through port at isa0060/serio4/input0
input: SynPS/2 Synaptics TouchPad as /class/input/input4
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 320k freed
rtc_cmos 00:07: rtc core: registered rtc_cmos as rtc0
rtc_cmos: probe of 00:07 failed with error -16
Adding 674688k swap on /dev/sda1.  Priority:-1 extents:1 across:674688k
EXT3 FS on sda2, internal journal
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda3, internal journal
EXT3-fs: mounted filesystem with ordered data mode.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH] i386: disable local apic timer via command line or dmi quirk
  2007-03-28  3:28                                         ` Len Brown
@ 2007-03-28  3:38                                           ` Len Brown
  2007-03-28  9:13                                           ` Thomas Gleixner
  1 sibling, 0 replies; 31+ messages in thread
From: Len Brown @ 2007-03-28  3:38 UTC (permalink / raw)
  To: tglx
  Cc: Stefan Prechtel, Andi Kleen, Grzegorz Chwesewicz, linux-kernel,
	mingo, john stultz, Andrew Morton, Adrian Bunk, Arjan van de Ven

On Tuesday 27 March 2007 23:28, Len Brown wrote:
> Thomas,
> 
> Is this failure specific to NO_HZ, and that is why the "nolapic_timer" fix is i386 only?
> I'm running 2.6.21-rc5 an nx6325 here in 64-bit mode and I don't see the dramatic
> boot failure described earlier in this thread.
> 
> However, I have observed that when running on battery,
> the LOC falls behind the irq0 timer to the tune of about
> 2 interrupt/minute.  eg. when i booted my machine, LOC was
> behind irq0 by 50, and now about a 20 minutes later it is behind
> irq0 by 99.  However, the LOC for each processor remain at
> a constant offset with respect to each other.
> 
> I do not see these this drift when running on AC.

Correction.
I double-checked and the same drift is present between irq0
and LOC when on AC:

lenb@nx6325:/tmp/sut> uname -a; cat /proc/interrupts; sleep 100; cat /proc/interrupts
Linux nx6325 2.6.21-rc5 #37 SMP Tue Mar 27 22:26:00 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
           CPU0       CPU1
  0:    1000442          0    <NULL>-edge      timer
  1:        724          0   IO-APIC-edge      i8042
  8:          0          0   IO-APIC-edge      rtc
 12:      36299          0   IO-APIC-edge      i8042
 14:      33661          0   IO-APIC-edge      ide0
 16:      20676          0   IO-APIC-fasteoi   libata
 19:         21          0   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3
 20:          1          0   IO-APIC-fasteoi   ohci1394
 21:       9388          0   IO-APIC-fasteoi   acpi
 23:      43794          0   IO-APIC-fasteoi   eth0
NMI:          0          0
LOC:    1000271    1000247
ERR:          0
           CPU0       CPU1
  0:    1025442          0    <NULL>-edge      timer
  1:        724          0   IO-APIC-edge      i8042
  8:          0          0   IO-APIC-edge      rtc
 12:      39539          0   IO-APIC-edge      i8042
 14:      34506          0   IO-APIC-edge      ide0
 16:      22172          0   IO-APIC-fasteoi   libata
 19:         21          0   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3
 20:          1          0   IO-APIC-fasteoi   ohci1394
 21:       9630          0   IO-APIC-fasteoi   acpi
 23:      44826          0   IO-APIC-fasteoi   eth0
NMI:          0          0
LOC:    1025269    1025245
ERR:          0
lenb@nx6325:/tmp/sut> bc -l
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1025442-1000442
25000
1025269-1000271
24998
lenb@nx6325:/tmp/sut> cat /proc/acpi/ac_adapter/C1BD/state
state:                   on-line

-Len

> Yes, the system exports just C1 in both cases.
> 
> Other oddities is the IRQ name on irq0 is garbled:
> 
> lenb@nx6325:~> uname -a; cat /proc/interrupts; sleep 100; cat /proc/interrupts
> Linux nx6325 2.6.21-rc5 #37 SMP Tue Mar 27 22:26:00 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
>            CPU0       CPU1
>   0:     723812          0    <NULL>-edge      timer
>   1:        716          0   IO-APIC-edge      i8042
>   8:          0          0   IO-APIC-edge      rtc
>  12:      30719          0   IO-APIC-edge      i8042
>  14:      24318          0   IO-APIC-edge      ide0
>  16:      18316          0   IO-APIC-fasteoi   libata
>  19:         21          0   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3
>  20:          1          0   IO-APIC-fasteoi   ohci1394
>  21:       6736          0   IO-APIC-fasteoi   acpi
>  23:      30358          0   IO-APIC-fasteoi   eth0
> NMI:          0          0
> LOC:     723675     723651
> ERR:          0
>            CPU0       CPU1
>   0:     748812          0    <NULL>-edge      timer
>   1:        716          0   IO-APIC-edge      i8042
>   8:          0          0   IO-APIC-edge      rtc
>  12:      30719          0   IO-APIC-edge      i8042
>  14:      25164          0   IO-APIC-edge      ide0
>  16:      18361          0   IO-APIC-fasteoi   libata
>  19:         21          0   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3
>  20:          1          0   IO-APIC-fasteoi   ohci1394
>  21:       6960          0   IO-APIC-fasteoi   acpi
>  23:      31385          0   IO-APIC-fasteoi   eth0
> NMI:          0          0
> LOC:     748673     748649
> ERR:          0
> lenb@nx6325:~> bc -l
> bc 1.06
> Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
> This is free software with ABSOLUTELY NO WARRANTY.
> For details type `warranty'.
> 748812-723812
> 25000
> 748673-723675
> 24998
> 723812-723675
> 137
> 748812-748673
> 139
> lenb@nx6325:~> 
> 
> Further, in dmesg:
> ATI board detected. Disabling timer routing over 8254.
> 
> ..MP-BIOS bug: 8254 timer not connected to IO-APIC
> 
> -Len
> 
> 
> 

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH] i386: disable local apic timer via command line or dmi quirk
  2007-03-28  3:28                                         ` Len Brown
  2007-03-28  3:38                                           ` Len Brown
@ 2007-03-28  9:13                                           ` Thomas Gleixner
  1 sibling, 0 replies; 31+ messages in thread
From: Thomas Gleixner @ 2007-03-28  9:13 UTC (permalink / raw)
  To: Len Brown
  Cc: Stefan Prechtel, Andi Kleen, Grzegorz Chwesewicz, linux-kernel,
	mingo, john stultz, Andrew Morton, Adrian Bunk, Arjan van de Ven

Len,

On Tue, 2007-03-27 at 23:28 -0400, Len Brown wrote:
> Is this failure specific to NO_HZ, and that is why the "nolapic_timer" fix is i386 only?
> I'm running 2.6.21-rc5 an nx6325 here in 64-bit mode and I don't see the dramatic
> boot failure described earlier in this thread.

The difference between x86_64 and i386 is that on i386 we now switch off
the PIT and do the jiffies increment in the local apic timer interrupt.
This is necessary for NO_HZ and HIGH_RES_TIMERS. We just fall back to
the PIT in C3 (enforced to C2 now due to massive breakage).

You can see the same problem on x86_64 by adding "apicmaintimer" to the
kernel command line. This should make your box really slow.

> However, I have observed that when running on battery,
> the LOC falls behind the irq0 timer to the tune of about
> 2 interrupt/minute.  eg. when i booted my machine, LOC was
> behind irq0 by 50, and now about a 20 minutes later it is behind
> irq0 by 99.  However, the LOC for each processor remain at
> a constant offset with respect to each other.
> 
> I do not see these this drift when running on AC.
> Yes, the system exports just C1 in both cases.

Right, but it does bad magic when running on battery. The offsets you
observe are due to the LAPIC stops. The delta is rather small, because
you wake up via the PIT periodically, so the APICs start to run as well.
And they do it on both cores.

Someone should apply a huge clue stick to BIOS developers.

I have some experimental code to detect the LAPIC breakage during run
time, but this needs more thought and is definitely not 2.6.21 material.

> Other oddities is the IRQ name on irq0 is garbled:
> 
> lenb@nx6325:~> uname -a; cat /proc/interrupts; sleep 100; cat /proc/interrupts
> Linux nx6325 2.6.21-rc5 #37 SMP Tue Mar 27 22:26:00 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
>            CPU0       CPU1
>   0:     723812          0    <NULL>-edge      timer

Hrmpf. Ingo ???

	tglx



^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2007-03-28  9:13 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-03-19 17:10 BUG lapic: Can't boot on battery (2.6.21-rc{1,2,3,4}) Stefan Prechtel
2007-03-19 17:36 ` Thomas Gleixner
2007-03-19 17:48   ` Thomas Gleixner
2007-03-19 18:53     ` Stefan Prechtel
2007-03-19 19:17       ` Stefan Prechtel
2007-03-19 19:27       ` Thomas Gleixner
2007-03-19 19:49         ` Stefan Prechtel
2007-03-19 20:04           ` Thomas Gleixner
2007-03-19 20:35             ` Stefan Prechtel
2007-03-19 20:56               ` Thomas Gleixner
2007-03-19 21:51                 ` Stefan Prechtel
2007-03-20  1:15                   ` Thomas Gleixner
2007-03-20  8:23                     ` Stefan Prechtel
2007-03-20 16:47                       ` Grzegorz Chwesewicz
2007-03-21  9:24                         ` Thomas Gleixner
2007-03-21  9:46                           ` Andi Kleen
2007-03-21 10:10                             ` Thomas Gleixner
2007-03-21 10:37                               ` Andi Kleen
2007-03-21 11:14                                 ` Thomas Gleixner
2007-03-21 12:15                                   ` Thomas Gleixner
2007-03-21 12:33                                     ` Thomas Gleixner
2007-03-21 12:42                                   ` Andi Kleen
2007-03-21 13:04                                     ` Stefan Prechtel
2007-03-21 13:15                                       ` Thomas Gleixner
2007-03-21 14:14                                       ` [PATCH] i386: disable local apic timer via command line or dmi quirk Thomas Gleixner
2007-03-21 14:09                                         ` Ingo Molnar
2007-03-21 15:14                                           ` Grzegorz Chwesewicz
2007-03-22 20:42                                             ` Stefan Prechtel
2007-03-28  3:28                                         ` Len Brown
2007-03-28  3:38                                           ` Len Brown
2007-03-28  9:13                                           ` Thomas Gleixner

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.