From: Alexander Nyberg <alexn@dsv.su.se>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org, mikpe@csd.uu.se
Subject: Re: 2.6.12-rc2-mm3
Date: Mon, 18 Apr 2005 00:27:02 +0200 [thread overview]
Message-ID: <1113776822.348.11.camel@localhost.localdomain> (raw)
In-Reply-To: <20050411012532.58593bc1.akpm@osdl.org>
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.12-rc2/2.6.12-rc2-mm3/
>
>
[Mikael Pettersson on CC, would like your advice]
This patch fixes the NMI checking problems in -mm x64 for me. It
changes the perfctr selection to use RETIRED_UOPS instead
(makes both processors tick even on my box).
This makes the NMI tick once per second while running which is quite much,
I'd like to get it down to every fourth second and herein lies the problem.
Multiplying nmi_interval() in patch below with 4 does not help, still ticks
at about the same pace. I'm puzzled...
Index: x64_mm/arch/x86_64/kernel/nmi.c
===================================================================
--- x64_mm.orig/arch/x86_64/kernel/nmi.c 2005-04-17 14:34:09.000000000 +0200
+++ x64_mm/arch/x86_64/kernel/nmi.c 2005-04-18 02:11:37.000000000 +0200
@@ -58,7 +58,7 @@
int panic_on_timeout;
unsigned int nmi_watchdog = NMI_DEFAULT;
-static unsigned int nmi_hz = HZ;
+static unsigned long nmi_hz = HZ;
unsigned int nmi_perfctr_msr; /* the MSR to reset in NMI handler */
/* Note that these events don't tick when the CPU idles. This means
@@ -70,6 +70,7 @@
#define K7_EVNTSEL_USR (1 << 16)
#define K7_EVENT_CYCLES_PROCESSOR_IS_RUNNING 0x76
#define K7_NMI_EVENT K7_EVENT_CYCLES_PROCESSOR_IS_RUNNING
+#define K7_RETIRED_UOPS 0xC1 /* always running */
#define P6_EVNTSEL0_ENABLE (1 << 22)
#define P6_EVNTSEL_INT (1 << 20)
@@ -78,6 +79,11 @@
#define P6_EVENT_CPU_CLOCKS_NOT_HALTED 0x79
#define P6_NMI_EVENT P6_EVENT_CPU_CLOCKS_NOT_HALTED
+static inline unsigned long nmi_interval(void)
+{
+ return (((unsigned long)cpu_khz * 1000UL) / nmi_hz);
+}
+
/* Run after command line and cpu_init init, but before all other checks */
void __init nmi_watchdog_default(void)
{
@@ -129,8 +135,8 @@
for (cpu = 0; cpu < NR_CPUS; cpu++)
counts[cpu] = cpu_pda[cpu].__nmi_count;
- local_irq_enable();
- mdelay((10*1000)/nmi_hz); // wait 10 ticks
+
+ mdelay((10*1000) / nmi_hz); /* wait 10 NMI ticks */
for (cpu = 0; cpu < NR_CPUS; cpu++) {
if (cpu_pda[cpu].__nmi_count - counts[cpu] <= 5) {
@@ -305,9 +311,6 @@
int i;
unsigned int evntsel;
- /* No check, so can start with slow frequency */
- nmi_hz = 1;
-
/* XXX should check these in EFER */
nmi_perfctr_msr = MSR_K7_PERFCTR0;
@@ -322,10 +325,10 @@
evntsel = K7_EVNTSEL_INT
| K7_EVNTSEL_OS
| K7_EVNTSEL_USR
- | K7_NMI_EVENT;
+ | K7_RETIRED_UOPS;
wrmsr(MSR_K7_EVNTSEL0, evntsel, 0);
- wrmsrl(MSR_K7_PERFCTR0, -((u64)cpu_khz*1000) / nmi_hz);
+ wrmsrl(MSR_K7_PERFCTR0, -nmi_interval());
apic_write(APIC_LVTPC, APIC_DM_NMI);
evntsel |= K7_EVNTSEL_ENABLE;
wrmsr(MSR_K7_EVNTSEL0, evntsel, 0);
@@ -409,7 +412,7 @@
alert_counter[cpu] = 0;
}
if (nmi_perfctr_msr)
- wrmsr(nmi_perfctr_msr, -(cpu_khz/nmi_hz*1000), -1);
+ wrmsr(nmi_perfctr_msr, -nmi_interval(), -1);
}
static int dummy_nmi_callback(struct pt_regs * regs, int cpu)
next prev parent reply other threads:[~2005-04-17 22:27 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-11 8:25 2.6.12-rc2-mm3 Andrew Morton
2005-04-11 8:56 ` 2.6.12-rc2-mm3 J.A. Magallon
2005-04-11 9:43 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-11 21:59 ` 2.6.12-rc2-mm3 Borislav Petkov
2005-04-11 22:22 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-12 4:20 ` 2.6.12-rc2-mm3 Stas Sergeev
2005-04-12 4:27 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-12 19:37 ` [patch 0/3] 2.6.12-rc2-mm3 Stas Sergeev
2005-04-12 19:42 ` [patch 1/3]: move config option for BAD_SYSCALL_EXIT Stas Sergeev
2005-04-12 19:47 ` [patch 2/3]: entry.S trap return fixes Stas Sergeev
2005-04-13 2:09 ` Andrew Morton
2005-04-13 3:18 ` Stas Sergeev
2005-04-12 19:54 ` [patch 3/3]: fix BAD_SYSCALL_EXIT lockup Stas Sergeev
2005-04-12 12:22 ` 2.6.12-rc2-mm3 Borislav Petkov
2005-04-11 10:34 ` 2.6.12-rc2-mm3 Jan Dittmer
2005-04-11 17:33 ` 2.6.12-rc2-mm3 Benoit Boissinot
2005-04-11 19:11 ` 2.6.12-rc2-mm3 Jindrich Makovicka
2005-04-12 0:22 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-12 8:21 ` 2.6.12-rc2-mm3 Jindrich Makovicka
2005-04-11 20:46 ` 2.6.12-rc2-mm3 Martin J. Bligh
2005-04-11 22:24 ` 2.6.12-rc2-mm3 Benoit Boissinot
2005-04-12 22:32 ` 2.6.12-rc2-mm3 Martin J. Bligh
2005-04-11 21:05 ` 2.6.12-rc2-mm3: CONFIG_MODULES=n MTD compile error Adrian Bunk
2005-04-12 1:18 ` 2.6.12-rc2-mm3 Juergen Kreileder
2005-04-12 2:09 ` 2.6.12-rc2-mm3 Benjamin Herrenschmidt
2005-04-12 3:26 ` 2.6.12-rc2-mm3 Benjamin Herrenschmidt
2005-04-12 4:42 ` 2.6.12-rc2-mm3 Juergen Kreileder
2005-04-12 6:34 ` 2.6.12-rc2-mm3 Benjamin Herrenschmidt
2005-04-12 18:08 ` 2.6.12-rc2-mm3 Juergen Kreileder
2005-04-12 22:40 ` 2.6.12-rc2-mm3 Benjamin Herrenschmidt
2005-04-13 1:44 ` 2.6.12-rc2-mm3 Juergen Kreileder
2005-04-15 18:23 ` 2.6.12-rc2-mm3 Juergen Kreileder
2005-04-15 23:23 ` 2.6.12-rc2-mm3 Benjamin Herrenschmidt
2005-04-17 8:40 ` 2.6.12-rc2-mm3 Juergen Kreileder
2005-04-24 0:01 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-24 1:59 ` 2.6.12-rc2-mm3 Juergen Kreileder
2005-04-24 2:15 ` 2.6.12-rc2-mm3 Benjamin Herrenschmidt
2005-04-24 3:14 ` 2.6.12-rc2-mm3 Juergen Kreileder
2005-04-24 4:25 ` 2.6.12-rc2-mm3 Juergen Kreileder
2005-04-24 9:53 ` 2.6.12-rc2-mm3 Oleg Nesterov
2005-04-24 23:11 ` 2.6.12-rc2-mm3 Juergen Kreileder
2005-04-25 0:09 ` 2.6.12-rc2-mm3 Benjamin Herrenschmidt
2005-05-03 6:29 ` 2.6.12-rc2-mm3 Andrew Morton
2005-05-03 10:42 ` 2.6.12-rc2-mm3 Oleg Nesterov
2005-04-12 5:00 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-12 5:51 ` 2.6.12-rc2-mm3 Nick Piggin
2005-04-12 6:19 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-12 6:49 ` 2.6.12-rc2-mm3 Nick Piggin
2005-04-12 7:50 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-12 19:03 ` 2.6.12-rc2-mm3 Steven Pratt
2005-04-12 17:01 ` 2.6.12-rc2-mm3 Steven Pratt
2005-04-12 7:06 ` 2.6.12-rc2-mm3 Jens Axboe
2005-04-12 11:32 ` 2.6.12-rc2-mm3 Ed Tomlinson
2005-04-12 11:39 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-14 0:15 ` 2.6.12-rc2-mm3 Ed Tomlinson
2005-04-14 0:20 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-14 0:38 ` 2.6.12-rc2-mm3 Ed Tomlinson
2005-04-14 0:54 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-17 21:32 ` [-mm patch] fix "make mandocs" Adrian Bunk
2005-04-17 22:27 ` Alexander Nyberg [this message]
2005-04-17 22:36 ` 2.6.12-rc2-mm3 Alexander Nyberg
2005-04-19 2:03 ` 2.6.12-rc2-mm3: hostap: do not #include .c files Adrian Bunk
2005-04-19 2:12 ` Jouni Malinen
2005-04-26 0:49 ` 2.6.12-rc2-mm3 Randy.Dunlap
2005-04-26 1:06 ` 2.6.12-rc2-mm3 Andrew Morton
2005-04-26 3:17 ` 2.6.12-rc2-mm3 Greg KH
2005-04-26 16:15 ` 2.6.12-rc2-mm3 Randy.Dunlap
2005-04-27 10:41 ` 2.6.12-rc2-mm3 Alexander Nyberg
-- strict thread matches above, loose matches on Subject: below --
2005-04-13 18:36 2.6.12-rc2-mm3 Stas Sergeev
2005-04-13 20:04 ` 2.6.12-rc2-mm3 Ingo Molnar
2005-04-14 16:38 ` 2.6.12-rc2-mm3 Stas Sergeev
2005-04-17 23:39 2.6.12-rc2-mm3 Mikael Pettersson
2005-04-18 9:56 ` 2.6.12-rc2-mm3 Alexander Nyberg
2005-04-18 11:05 ` 2.6.12-rc2-mm3 Alexander Nyberg
2005-04-18 11:14 ` 2.6.12-rc2-mm3 Arjan van de Ven
2005-04-18 14:10 ` 2.6.12-rc2-mm3 Alexander Nyberg
2005-04-18 22:27 2.6.12-rc2-mm3 Mikael Pettersson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1113776822.348.11.camel@localhost.localdomain \
--to=alexn@dsv.su.se \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mikpe@csd.uu.se \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox