All of lore.kernel.org
 help / color / mirror / Atom feed
From: john stultz <johnstul@us.ibm.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: "Kirill A. Shutemov" <kirill@shutemov.name>,
	Jeremy Fitzhardinge <jeremy@goop.org>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Ian Campbell <Ian.Campbell@eu.citrix.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	mingo@redhat.com, hpa@zytor.com, linux-kernel@vger.kernel.org,
	andi@firstfloor.org, williams@redhat.com, schwidefsky@de.ibm.com,
	mingo@elte.hu, linux-tip-commits@vger.kernel.org
Subject: Re: [tip:x86/tsc] x86: Improve TSC calibration using a delayed workqueue
Date: Thu, 13 Jan 2011 10:01:38 -0800	[thread overview]
Message-ID: <1294941698.5617.12.camel@work-vm> (raw)
In-Reply-To: <20110113174909.GA28738@dumpdata.com>

On Thu, 2011-01-13 at 12:49 -0500, Konrad Rzeszutek Wilk wrote:
> On Tue, Jan 11, 2011 at 11:56:40AM +0200, Kirill A. Shutemov wrote:
> > On Tue, Jan 11, 2011 at 09:37:15AM +0100, Thomas Gleixner wrote:
> > > On Tue, 11 Jan 2011, Kirill A. Shutemov wrote:
> > > 
> > > > On Tue, Jan 11, 2011 at 09:26:48AM +0100, Thomas Gleixner wrote:
> > > > > On Tue, 11 Jan 2011, Kirill A. Shutemov wrote:
> > > > > 
> > > > > > On Sun, Dec 05, 2010 at 11:18:53AM +0000, tip-bot for John Stultz wrote:
> > > > > > > Commit-ID:  08ec0c58fb8a05d3191d5cb6f5d6f81adb419798
> > > > > > > Gitweb:     http://git.kernel.org/tip/08ec0c58fb8a05d3191d5cb6f5d6f81adb419798
> > > > > > > Author:     John Stultz <johnstul@us.ibm.com>
> > > > > > > AuthorDate: Tue, 27 Jul 2010 17:00:00 -0700
> > > > > > > Committer:  John Stultz <john.stultz@linaro.org>
> > > > > > > CommitDate: Thu, 2 Dec 2010 16:48:37 -0800
> > > > > > > 
> > > > > > > x86: Improve TSC calibration using a delayed workqueue
> > > > > > 
> > > > > > This commit breaks booting the kernel in qemu with enabled KVM on my machine.
> > > > > > .config attached.
> > > > > > 
> > > > > > [    0.424013] divide error: 0000 [#1] 
> > > > > 
> > > > > Got fixed by a8760ec (x86: Check tsc available/disabled in the delayed
> > > > > init function)
> > > > 
> > > > No, it didn't. :(
> > > > 
> > > > I am able to reproduce it on current Linus' tree (v2.6.37-4700-g8adbf8d).
> > > 
> > > Does the patch below fix it ? We can end up with tsc_khz=0 there :(
> > 
> > Yes, it does.
> 
> Interestingly enough, when you run Linux under Xen (as Domain 0) you
> get the same stack-trace. With both patches (a8760ec, and the patch
> posted earlier) I still get the failure.
> 
> I've traced it down to the fact that when we boot under Xen we do
> not have the HPET enabled nor the ACPI PM timer setup. The 
> hpet_enable() is never called (b/c xen_time_init is called), and
> for calibration of tsc_khz (calibrate_tsc == xen_tsc_khz) we
> get a valid value.
> 
> So 'tsc_read_refs' tries to read the ACPI PM timer (acpi_pm_read_early),
> however that is disabled under Xen:
> 
> [    1.099272] calling  init_acpi_pm_clocksource+0x0/0xdc @ 1
> [    1.140186] PM-Timer failed consistency check  (0x0xffffff) - aborting.
> 
> So the tsc_calibrate_check gets called, it can't do HPET, and reading
> from ACPI PM timer results in getting 0xffffff.. .. and
> (0xffff..-0xffff..)/some other value results in div_zero.
> 
> There is a check in 'tsc_refine_calibration_work' for invalid
> values:
> 
>    /* hpet or pmtimer available ? */
>          if (!hpet && !ref_start && !ref_stop)
>                   goto out;
> 
> But since ref_start and ref_stop have 0xffffff it does not trigger.

Oof. Thanks for hunting this down!

> This little fix does it however. Thought it will of course not
> recalibrate the tsc - is that a horrible thing? Should we look
> at making tsc_read_refs also use the pv-ops in case both hpet and
> acpi pm timer are disabled?

The recalibration is not a necessary thing. Its only an improvement over
what the standard calibration we have always done is. Since xen provides
its own xen_tsc_khz value, I suspect the timer based
calibration-refinement might not improve over what xen provides.


> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

Acked-by: John Stultz <johnstul@us.ibm.com>

> diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c
> index cfb0f52..84ff897 100644
> --- a/drivers/clocksource/acpi_pm.c
> +++ b/drivers/clocksource/acpi_pm.c
> @@ -207,6 +208,7 @@ static int __init init_acpi_pm_clocksource(void)
>  		if (i == ACPI_PM_READ_CHECKS) {
>  			printk(KERN_INFO "PM-Timer failed consistency check "
>  			       " (0x%#llx) - aborting.\n", value1);
> +			pmtmr_ioport = 0;
>  			return -ENODEV;
>  		}
>  	}



  reply	other threads:[~2011-01-13 18:01 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-06  0:39 [PATCH] Greatly improve TSC calibration using a delayed workqueue John Stultz
2010-11-07 20:41 ` Andi Kleen
2010-11-08 22:04   ` john stultz
2010-11-09 13:43     ` Andi Kleen
2010-11-09 21:41       ` john stultz
2010-11-10 13:47         ` Andi Kleen
2010-12-05 11:18 ` [tip:x86/tsc] x86: Improve " tip-bot for John Stultz
2011-01-11  8:13   ` Kirill A. Shutemov
2011-01-11  8:26     ` Thomas Gleixner
2011-01-11  8:30       ` Kirill A. Shutemov
2011-01-11  8:37         ` Thomas Gleixner
2011-01-11  9:56           ` Kirill A. Shutemov
2011-01-11 10:26             ` Thomas Gleixner
2011-01-13 17:49             ` Konrad Rzeszutek Wilk
2011-01-13 18:01               ` john stultz [this message]
2011-01-13 21:40                 ` [PATCH] acpi/pm: If failed at validating ACPI PM timer, inhibit future reads Konrad Rzeszutek Wilk
2011-01-13 22:15                   ` Thomas Gleixner
2011-01-14 14:09                     ` Konrad Rzeszutek Wilk
2011-01-14 15:44                       ` john stultz
2011-01-14 15:54                         ` john stultz
2011-01-14 16:02                           ` Thomas Gleixner
2011-01-14 16:33                             ` john stultz
2011-01-14 16:28                           ` Konrad Rzeszutek Wilk

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=1294941698.5617.12.camel@work-vm \
    --to=johnstul@us.ibm.com \
    --cc=Ian.Campbell@eu.citrix.com \
    --cc=andi@firstfloor.org \
    --cc=hpa@zytor.com \
    --cc=jeremy@goop.org \
    --cc=kirill@shutemov.name \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=mingo@redhat.com \
    --cc=schwidefsky@de.ibm.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tglx@linutronix.de \
    --cc=williams@redhat.com \
    /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 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.