android_kernel_xiaomi_sm7250/arch/i386/kernel
Steven Rostedt cd3716ab40 [PATCH] Mobil Pentium 4 HT and the NMI
I'm trying to get the nmi working with my laptop (IBM ThinkPad G41) and after
debugging it a while, I found that the nmi code doesn't want to set it up for
this particular CPU.

Here I have:

$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Mobile Intel(R) Pentium(R) 4 CPU 3.33GHz
stepping        : 1
cpu MHz         : 3320.084
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 3
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pni
monitor ds_cpl est tm2 cid xtpr
bogomips        : 6642.39

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Mobile Intel(R) Pentium(R) 4 CPU 3.33GHz
stepping        : 1
cpu MHz         : 3320.084
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 3
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pni
monitor ds_cpl est tm2 cid xtpr
bogomips        : 6637.46

And the following code shows:

$ cat linux-2.6.13-rc6/arch/i386/kernel/nmi.c

[...]

void setup_apic_nmi_watchdog (void)
{
        switch (boot_cpu_data.x86_vendor) {
        case X86_VENDOR_AMD:
                if (boot_cpu_data.x86 != 6 && boot_cpu_data.x86 != 15)
                        return;
                setup_k7_watchdog();
                break;
        case X86_VENDOR_INTEL:
                 switch (boot_cpu_data.x86) {
                case 6:
                        if (boot_cpu_data.x86_model > 0xd)
                                return;

                        setup_p6_watchdog();
                        break;
                case 15:
                        if (boot_cpu_data.x86_model > 0x3)
                                return;

Here I get boot_cpu_data.x86_model == 0x4.  So I decided to change it and
reboot.  I now seem to have a working NMI.  So, unless there's something know
to be bad about this processor and the NMI.  I'm submitting the following
patch.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Acked-by: Zwane Mwaikambo <zwane@arm.linux.org.uk>
Acked-by: Mikael Pettersson <mikpe@csd.uu.se>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-08-19 18:44:56 -07:00
..
acpi [ACPI] merge acpi-2.6.12 branch into latest Linux 2.6.13-rc... 2005-07-12 17:21:56 -04:00
cpu [PATCH] transmeta: CONFIG_PROC_FS=n build fix 2005-08-01 21:38:00 -07:00
timers [PATCH] mostly_read data section 2005-07-07 18:23:46 -07:00
apic.c [PATCH] x86: Remove obsolete get_cpu_vendor call 2005-08-18 12:53:59 -07:00
apm.c [PATCH] APM: Remove redundant call to set_cpus_allowed 2005-07-26 14:35:45 -07:00
asm-offsets.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bootflag.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpuid.c [PATCH] class: convert arch/* to use the new class api instead of class_simple 2005-06-20 15:15:09 -07:00
crash.c [PATCH] kexec code cleanup 2005-06-25 16:24:55 -07:00
dmi_scan.c [PATCH] dmi: spring cleanup 2005-06-25 16:24:28 -07:00
doublefault.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
early_printk.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi_stub.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi.c [PATCH] crashdump: x86 crashkernel option 2005-06-25 16:24:50 -07:00
entry.S [PATCH] uml: fix syscall table by including $(SUBARCH)'s one, for i386 2005-05-01 08:58:55 -07:00
head.S [PATCH] variable overflow after hundreds round of hotplug CPU 2005-06-25 16:24:28 -07:00
i386_ksyms.c [PATCH] Remove i386_ksyms.c, almost. 2005-06-23 09:45:11 -07:00
i387.c x86: make restore_fpu() use alternative assembler instructions 2005-07-22 16:06:16 -04:00
i8259.c [PATCH] kexec: x86: i8259 shutdown: disable interrupts 2005-06-25 16:24:46 -07:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io_apic.c [PATCH] x86: i8253/i8259A lock cleanup 2005-06-30 08:45:10 -07:00
ioport.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq.c [PATCH] cpu state clean after hot remove 2005-06-25 16:24:30 -07:00
kprobes.c [PATCH] kprobes: fix namespace problem and sparc64 build 2005-07-05 19:19:00 -07:00
ldt.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
machine_kexec.c [PATCH] i386 machine_kexec: Cleanup inline assembly 2005-07-29 12:17:26 -07:00
Makefile [PATCH] kexec: x86 kexec core 2005-06-25 16:24:49 -07:00
mca.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
microcode.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
module.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mpparse.c [PATCH] x86: avoid wasting IRQs patch update 2005-07-29 15:01:13 -07:00
msr.c [PATCH] class: convert arch/* to use the new class api instead of class_simple 2005-06-20 15:15:09 -07:00
nmi.c [PATCH] Mobil Pentium 4 HT and the NMI 2005-08-19 18:44:56 -07:00
numaq.c [PATCH] re-disable TSC on NUMAQ 2005-07-28 21:46:05 -07:00
pci-dma.c [PATCH] Remove i386_ksyms.c, almost. 2005-06-23 09:45:11 -07:00
process.c [PATCH] sys_get_thread_area does not clear the returned argument 2005-07-27 16:26:08 -07:00
ptrace.c [PATCH] xen: x86: Rename usermode macro 2005-06-23 09:45:14 -07:00
quirks.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
reboot_fixups.c [PATCH] x86 reboot: Add reboot fixup for gx1/cs5530a 2005-05-01 08:58:49 -07:00
reboot.c [PATCH] i386 machine_power_off cleanup 2005-07-26 14:35:44 -07:00
relocate_kernel.S [PATCH] kexec: x86 kexec core 2005-06-25 16:24:49 -07:00
scx200.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
semaphore.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.c Remove "noreplacement" kernel command line option. 2005-07-22 18:29:40 -04:00
sigframe.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
signal.c Fix up try_to_freeze() usage in arch/i386/kernel/signal.c 2005-06-25 20:09:12 -07:00
smp.c [PATCH] sep initializing rework 2005-06-25 16:24:29 -07:00
smpboot.c [PATCH] mostly_read data section 2005-07-07 18:23:46 -07:00
srat.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
summit.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_i386.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
syscall_table.S [PATCH] remove sys_set_zone_reclaim() 2005-08-01 10:03:56 -07:00
sysenter.c [PATCH] sep initializing rework 2005-06-25 16:24:29 -07:00
time_hpet.c [PATCH] CPU hotplug: fix hpet sectioning 2005-06-25 16:24:28 -07:00
time.c [PATCH] mostly_read data section 2005-07-07 18:23:46 -07:00
trampoline.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
traps.c [PATCH] arch/i386/kernel/traps.c: fix sparse warnings 2005-06-25 16:24:58 -07:00
vm86.c [PATCH] misc verify_area cleanups 2005-05-01 08:59:08 -07:00
vmlinux.lds.S [PATCH] mostly_read data section 2005-07-07 18:23:46 -07:00
vsyscall-int80.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall-note.S [PATCH] i386 vDSO: add PT_NOTE segment 2005-04-16 15:24:48 -07:00
vsyscall-sigreturn.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall-sysenter.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall.lds.S [PATCH] i386 vDSO: add PT_NOTE segment 2005-04-16 15:24:48 -07:00
vsyscall.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00