Re: [RFC] Fix NMI watchdog documentation

From: Valdis . Kletnieks (Valdis.Kletnieks@vt.edu)
Date: Mon May 26 2003 - 22:23:13 EST


On Mon, 26 May 2003 11:21:38 +0200, mikpe@xxxxxxxxx said:

> --- linux-2.5.69/arch/i386/kernel/apic.c.~1~ 2003-04-20 13:08:15.000000000 +
0200
> +++ linux-2.5.69/arch/i386/kernel/apic.c 2003-05-26 11:11:19.000000000 +
0200
> @@ -617,7 +617,7 @@
> goto no_apic;
> case X86_VENDOR_INTEL:
> if (boot_cpu_data.x86 == 6 ||
> - (boot_cpu_data.x86 == 15 && cpu_has_apic) ||
> + (boot_cpu_data.x86 == 15) ||

OK, there's good news and bad news. After doing that and lopping out the
dmi_scan.c blacklist entry, we get these msgs on boot (diffing against
a dmesg from before the above:

1c1
< Linux version 2.5.69 (valdis@xxxxxxxxxxxxxxxxxxxxxxx) (gcc version 3.2.3 20030422 (Red Hat Linux 3.2.3-4)) #4 Sun May 25 16:22:44 EDT 2003
---
> Linux version 2.5.69 (valdis@xxxxxxxxxxxxxxxxxxxxxxx) (gcc version 3.2.3 20030422 (Red Hat Linux 3.2.3-4)) #5 Mon May 26 20:03:44 EDT 2003
24c24,25
< No local APIC present or hardware disabled
---
> Local APIC disabled by BIOS -- reenabling.
> Found and enabled local APIC!
27c28
< Detected 1595.314 MHz processor.
---
> Detected 1595.413 MHz processor.
30c31
< Memory: 254416k/262024k available (2520k kernel code, 6888k reserved, 969k data, 144k init, 0k highmem)
---
> Memory: 254416k/262024k available (2520k kernel code, 6880k reserved, 969k data, 144k init, 0k highmem)
40c41
< CPU: After generic, caps: 3febf9ff 00000000 00000000 00000080
---
> CPU: After generic, caps: 3febfbff 00000000 00000000 00000080
48a50,56
> enabled ExtINT on CPU#0
> ESR value before enabling vector: 00000000
> ESR value after enabling vector: 00000000
> Using local APIC timer interrupts.
> calibrating APIC timer ...
> ..... CPU clock speed is 1595.0017 MHz.
> ..... host bus clock speed is 99.0688 MHz.

So yes Virginia, there is a local APIC on the C840.

Now the bad news - out of 7 or 8 tries, the above was the only boot that lived
long enough for me to get a single-user prompt and do a dmesg into a file.
That try hung about 10 seconds later. It never hung at the same place twice,
and always hung hard enough to require the "power button for 5 seconds to
poweroff" sledgehammer. The common factor seemed to be hangs while talking
to the IDE drive - while mounting /, while checking the partition table,
etc.

One question - in apic.c, I see where clear_local_APIC() is called in
init_bsp_APIC(), connect_bsp_APIC(), and disable_local_APIC(). I however
don't see where/how it's called in the init_local_APIC() codepath, nor can
I convince myself that it obviously *shouldn't* be called...

Attachment: pgp00001.pgp
Description: PGP signature