linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andreas Herrmann <andreas.herrmann3@amd.com>
To: Mark Hounschell <dmarkh@cfl.rr.com>
Cc: Borislav Petkov <borislav.petkov@amd.com>,
	Mark Hounschell <markh@compro.net>,
	john stultz <johnstul@us.ibm.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: PROBLEM: Can't boot a (HZ = 1000) kernel using an AMD Phenom-II processor
Date: Fri, 20 Feb 2009 12:53:57 +0100	[thread overview]
Message-ID: <20090220115357.GE4834@alberich.amd.com> (raw)
In-Reply-To: <499D80AB.3090408@cfl.rr.com>

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

On Thu, Feb 19, 2009 at 10:54:19AM -0500, Mark Hounschell wrote:
> Borislav Petkov wrote:
> > On Thu, Feb 19, 2009 at 10:16:40AM -0500, Mark Hounschell wrote:
> >> Andreas Herrmann wrote:
> >>> Hi Mark,
> >>>
> >>> Can you please provide us output of lspci -vvxxx.
> >>> (Please run this as root.)
> >>>
> 
> Attached...
> 
> 
> >>> Furthermore you can try booting your 1000HZ kernel
> >>> with following kernel command lines:
> >>>

Thanks for trying this out.
But nothing suspicious found. I.e. timer/hpet interrupt is enabled
and its routing seems to be ok.

Here's one more check that's worth trying: In one of your logs I've
seen that HPET id reports 3 timers but later on 4 timers were detected
for HPET.

To check what's going on I'd like to see the HPET configuration in the
course of booting your system.  Please apply attached patch and boot
with hpet=debug -- both with 250HZ and with 1000HZ -- and provide dmesg
output.


Regards,

Andreas

-- 
Operating | Advanced Micro Devices GmbH
  System  | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany
 Research | Geschäftsführer: Jochen Polster, Thomas M. McCoy, Giuliano Meroni
  Center  | Sitz: Dornach, Gemeinde Aschheim, Landkreis München
  (OSRC)  | Registergericht München, HRB Nr. 43632

[-- Attachment #2: hpet-debug.diff --]
[-- Type: text/plain, Size: 3890 bytes --]

diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 388254f..2a389d9 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -80,6 +80,7 @@ static inline void hpet_clear_mapping(void)
  */
 static int boot_hpet_disable;
 int hpet_force_user;
+static int hpet_debug;
 
 static int __init hpet_setup(char *str)
 {
@@ -88,6 +89,8 @@ static int __init hpet_setup(char *str)
 			boot_hpet_disable = 1;
 		if (!strncmp("force", str, 5))
 			hpet_force_user = 1;
+		if (!strncmp("debug", str, 5))
+			hpet_debug = 1;
 	}
 	return 1;
 }
@@ -119,6 +122,42 @@ int is_hpet_enabled(void)
 }
 EXPORT_SYMBOL_GPL(is_hpet_enabled);
 
+static void _hpet_print_config(const char *function, int line)
+{
+	u32 l, h;
+	printk(KERN_DEBUG "hpet: %s(%d):\n", function, line);
+	l = hpet_readl(HPET_ID); h = hpet_readl(HPET_PERIOD);
+	printk(KERN_DEBUG "hpet: ID: %x, PERIOD: %x\n", l, h);
+	l = hpet_readl(HPET_CFG); h = hpet_readl(HPET_STATUS);
+	printk(KERN_DEBUG "hpet: CFG: %x, STATUS: %x\n", l, h);
+	l = hpet_readl(HPET_COUNTER); h = hpet_readl(HPET_COUNTER+4);
+	printk(KERN_DEBUG "hpet: COUNTER_l: %x, COUNTER_h: %x\n", l, h);
+	l = hpet_readl(HPET_T0_CFG); h = hpet_readl(HPET_T0_CFG+4);
+	printk(KERN_DEBUG "hpet: T0_CFG_l: %x, T0_CFG_h: %x\n", l, h);
+	l = hpet_readl(HPET_T0_CMP); h = hpet_readl(HPET_T0_CMP+4);
+	printk(KERN_DEBUG "hpet: T0_CMP_l: %x, T0_CMP_h: %x\n", l, h);
+	l = hpet_readl(HPET_T0_ROUTE); h = hpet_readl(HPET_T0_ROUTE+4);
+	printk(KERN_DEBUG "hpet: T0_ROUTE_l: %x, T0_ROUTE_h: %x\n", l, h);
+	l = hpet_readl(HPET_T1_CFG); h = hpet_readl(HPET_T1_CFG+4);
+	printk(KERN_DEBUG "hpet: T1_CFG_l: %x, T1_CFG_h: %x\n", l, h);
+	l = hpet_readl(HPET_T1_CMP); h = hpet_readl(HPET_T1_CMP+4);
+	printk(KERN_DEBUG "hpet: T1_CMP_l: %x, T1_CMP_h: %x\n", l, h);
+	l = hpet_readl(HPET_T1_ROUTE); h = hpet_readl(HPET_T1_ROUTE+4);
+	printk(KERN_DEBUG "hpet: T1_ROUTE_l: %x, T1_ROUTE_h: %x\n", l, h);
+	l = hpet_readl(HPET_T2_CFG); h = hpet_readl(HPET_T2_CFG+4);
+	printk(KERN_DEBUG "hpet: T2_CFG_l: %x, T2_CFG_h: %x\n", l, h);
+	l = hpet_readl(HPET_T2_CMP); h = hpet_readl(HPET_T2_CMP+4);
+	printk(KERN_DEBUG "hpet: T2_CMP_l: %x, T2_CMP_h: %x\n", l, h);
+	l = hpet_readl(HPET_T2_ROUTE); h = hpet_readl(HPET_T2_ROUTE+4);
+	printk(KERN_DEBUG "hpet: T2_ROUTE_l: %x, T2_ROUTE_h: %x\n", l, h);
+}	
+
+#define hpet_print_config()					\
+do {								\
+	if (hpet_debug)						\
+		_hpet_print_config(__FUNCTION__, __LINE__);	\
+} while (0)
+
 /*
  * When the hpet driver (/dev/hpet) is enabled, we need to reserve
  * timer 0 and timer 1 in case of RTC emulation.
@@ -264,6 +303,7 @@ static void hpet_set_mode(enum clock_event_mode mode,
 
 	switch (mode) {
 	case CLOCK_EVT_MODE_PERIODIC:
+		hpet_print_config();
 		delta = ((uint64_t)(NSEC_PER_SEC/HZ)) * evt->mult;
 		delta >>= evt->shift;
 		now = hpet_readl(HPET_COUNTER);
@@ -280,6 +320,8 @@ static void hpet_set_mode(enum clock_event_mode mode,
 		hpet_writel(cmp, HPET_Tn_CMP(timer));
 		udelay(1);
 		hpet_writel((unsigned long) delta, HPET_Tn_CMP(timer));
+		WARN_ON(cmp <= hpet_readl(HPET_COUNTER));
+		hpet_print_config();
 		break;
 
 	case CLOCK_EVT_MODE_ONESHOT:
@@ -524,6 +566,7 @@ static void hpet_msi_capability_lookup(unsigned int start_timer)
 
 	num_timers = ((id & HPET_ID_NUMBER) >> HPET_ID_NUMBER_SHIFT);
 	num_timers++; /* Value read out starts from 0 */
+	hpet_print_config();
 
 	hpet_devs = kzalloc(sizeof(struct hpet_dev) * num_timers, GFP_KERNEL);
 	if (!hpet_devs)
@@ -791,6 +834,7 @@ int __init hpet_enable(void)
 	 * information and the number of channels
 	 */
 	id = hpet_readl(HPET_ID);
+	hpet_print_config();
 
 #ifdef CONFIG_HPET_EMULATE_RTC
 	/*
@@ -843,6 +887,7 @@ static __init int hpet_late_init(void)
 		return -ENODEV;
 
 	hpet_reserve_platform_timers(hpet_readl(HPET_ID));
+	hpet_print_config();
 
 	for_each_online_cpu(cpu) {
 		hpet_cpuhp_notify(NULL, CPU_ONLINE, (void *)(long)cpu);

  reply	other threads:[~2009-02-20 11:54 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-18 12:38 PROBLEM: Can't boot a (HZ = 1000) kernel using an AMD Phenom-II processor Mark Hounschell
2009-01-19  8:48 ` Mark Hounschell
2009-01-19 12:41   ` Bartlomiej Zolnierkiewicz
2009-01-19 14:45     ` Mark Hounschell
2009-01-19 23:05       ` Mark Hounschell
2009-01-19 14:22 ` Borislav Petkov
2009-01-19 14:54   ` Mark Hounschell
2009-01-19 23:14     ` Mark Hounschell
2009-01-20  0:25 ` john stultz
2009-01-20  9:08   ` Mark Hounschell
2009-01-20  9:37     ` Andreas Herrmann
2009-01-20 21:08       ` Mark Hounschell
2009-01-23  9:34         ` Mark Hounschell
2009-01-23 13:04           ` Andreas Herrmann
2009-01-23 14:47             ` Borislav Petkov
2009-01-23 22:24               ` Mark Hounschell
2009-01-23 22:46             ` Mark Hounschell
2009-01-26 18:26               ` Mark Hounschell
2009-01-27 16:38                 ` Borislav Petkov
2009-01-28  0:30                   ` Mark Hounschell
2009-01-28  0:33                     ` Mark Hounschell
2009-01-31  9:15                       ` Mark Hounschell
2009-02-02 17:05                         ` Borislav Petkov
2009-02-03  9:17                           ` Mark Hounschell
2009-02-03 15:11                             ` Borislav Petkov
2009-02-03 19:15                               ` Mark Hounschell
2009-02-05 17:19                                 ` Mark Hounschell
2009-02-06 13:52                                   ` Borislav Petkov
2009-02-06 14:11                                     ` Mark Hounschell
2009-02-06 17:55                                       ` Mark Hounschell
2009-02-06 22:20                                         ` Mark Hounschell
2009-02-09 14:18                                           ` Borislav Petkov
2009-02-09 15:29                                             ` Mark Hounschell
2009-02-18 13:11                                               ` Mark Hounschell
2009-02-18 14:18                                                 ` Borislav Petkov
2009-02-18 16:57                                                   ` Mark Hounschell
2009-02-18 17:42                                                     ` Borislav Petkov
2009-02-18 21:16                                                       ` Mark Hounschell
2009-02-19 10:37                                                         ` Mark Hounschell
2009-02-19 14:11                                                           ` Andreas Herrmann
2009-02-19 15:16                                                             ` Mark Hounschell
2009-02-19 15:19                                                               ` Borislav Petkov
2009-02-19 15:54                                                                 ` Mark Hounschell
2009-02-20 11:53                                                                   ` Andreas Herrmann [this message]
2009-02-20 12:34                                                                     ` Ingo Molnar
2009-02-20 21:51                                                                       ` Andreas Herrmann
2009-02-20 15:43                                                                     ` Mark Hounschell
2009-02-20 16:08                                                                       ` Andreas Herrmann
2009-02-20 16:38                                                                         ` Andreas Herrmann
2009-02-20 17:09                                                                           ` Mark Hounschell
2009-02-20 17:40                                                                             ` Mark Hounschell
2009-02-20 18:22                                                                               ` Andreas Herrmann
2009-02-20 18:28                                                                                 ` Mark Hounschell
2009-02-20 19:54                                                                                   ` Mark Hounschell
2009-02-20 20:27                                                                                     ` Mark Hounschell
2009-02-20 22:28                                                                                       ` Andreas Herrmann
2009-02-21  1:14                                                                                         ` Mark Hounschell
2009-02-21 13:20                                                                                           ` Mark Hounschell
2009-02-20 17:06                                                                         ` Mark Hounschell

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=20090220115357.GE4834@alberich.amd.com \
    --to=andreas.herrmann3@amd.com \
    --cc=borislav.petkov@amd.com \
    --cc=dmarkh@cfl.rr.com \
    --cc=johnstul@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markh@compro.net \
    --cc=tglx@linutronix.de \
    /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;
as well as URLs for NNTP newsgroup(s).