From: Marcelo Tosatti <mtosatti@redhat.com>
To: Arjan Koers <0h61vkll2ly8@xutrox.com>
Cc: kvm@vger.kernel.org, Michael Tokarev <mjt@tls.msk.ru>,
Zachary Amsden <zamsden@redhat.com>, Avi Kivity <avi@redhat.com>,
Glauber Costa <glommer@redhat.com>,
Andre Przywara <andre.przywara@amd.com>
Subject: Re: 2.6.35-rc1 regression with pvclock and smp guests
Date: Thu, 30 Sep 2010 16:05:07 -0300 [thread overview]
Message-ID: <20100930190507.GA1111@amt.cnet> (raw)
In-Reply-To: <4CA4DBC8.6070606@xutrox.com>
On Thu, Sep 30, 2010 at 08:49:44PM +0200, Arjan Koers wrote:
> On 2010-09-30 17:32, Zachary Amsden wrote:
> > On 09/30/2010 05:12 AM, Michael Tokarev wrote:
> >> 30.09.2010 17:54, Zachary Amsden wrote:
> >> []
> >>
> >>> The printk movement is just a bandaid patch, correct? Anything which
> >>> does printk before kvmclock is registered could trigger the same bug.
> >>>
> >> Well, I'd not say it's just a bandaid patch, it's real bug -- either
> >> we can read kvmclock (so it's initialized), or we don't touch it (at
> >> least before registration).
> >>
> >
> > Yes, that's the bug, but moving the printk doesn't fix that, it just
> > hides it.
>
> Correct. It's just luck that it works for my 64-bit 2.6.34.* and
> 2.6.35.* kernels. The working kernels will break when compiled to
> print additional debug information.
>
> Here's a partial boot log of 2.6.32.23 with smpboot.c compiled
> with DEBUG define. I modified printk to display the CPU# (printk_cpu).
> All lines on CPU 1 up to 0.136487 are using the invalid clock and
> will cause the kernel to hang later (if I hadn't patched pvclock
> to correct the clock backwards).
> ...
> [0: 0.124221] Booting processor 1 APIC 0x1 ip 0x6000
> [0: 0.124579] Setting warm reset code and vector.
> [0: 0.124585] 1.
> [0: 0.124587] 2.
> [0: 0.124588] 3.
> [0: 0.124601] Asserting INIT.
> [0: 0.124613] Waiting for send to finish...
> [0: 0.134490] Deasserting INIT.
> [0: 0.134497] Waiting for send to finish...
> [0: 0.134501] #startup loops: 2.
> [0: 0.134503] Sending STARTUP #1.
> [0: 0.134508] After apic_write.
> [1: 0.008000] Initializing CPU#1
> [1: 0.008000] CPU#1 (phys ID: 1) waiting for CALLOUT
> [0: 0.134826] Startup point 1.
> [0: 0.135133] Waiting for send to finish...
> [0: 0.135340] Sending STARTUP #2.
> [0: 0.135346] After apic_write.
> [0: 0.135650] Startup point 1.
> [0: 0.135651] Waiting for send to finish...
> [0: 0.135858] After Startup.
> [0: 0.135859] Before Callout 1.
> [0: 0.135861] After Callout 1.
> [1: 0.008000] CALLIN, before setup_local_APIC().
> [1: 0.008000] Stack at about ffff88001f889f44
> [1: 0.008000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
> [1: 0.008000] CPU: L2 Cache: 512K (64 bytes/line)
> [1: 0.008000] kvm-clock: cpu 1, msr 0:1511601, secondary cpu clock
> [0: 0.136461] OK.
> [0: 0.136463] CPU1: AMD Athlon(tm) II X2 240 Processor stepping 02
> [0: 0.136465] CPU has booted.
> [0: 0.136488] Brought up 2 CPUs
> [0: 0.136489] Boot done.
> [0: 0.136490] Before bogomips.
> [0: 0.136491] Total of 2 processors activated (11202.17 BogoMIPS).
> [0: 0.136493] Before bogocount - setting activated=1.
> [1: 0.136487] x86 PAT enabled: cpu 1, old 0x0, new 0x7010600070106
> [0: 0.144007] CPU0 attaching sched-domain:
> [0: 0.144010] domain 0: span 0-1 level CPU
> [0: 0.144012] groups: 0 1
> [0: 0.144016] CPU1 attaching sched-domain:
> [0: 0.144018] domain 0: span 0-1 level CPU
> [0: 0.144020] groups: 1 0
> [0: 0.144219] NET: Registered protocol family 16
> [0: 0.148091] PCI: Using configuration type 1 for base access
> [0: 0.148451] PCI: Using configuration type 1 for extended access
> [0: 0.148870] mtrr: your CPUs had inconsistent variable MTRR settings
> [0: 0.148870] mtrr: your CPUs had inconsistent MTRRdefType settings
> [0: 0.148870] mtrr: probably your BIOS does not setup all CPUs.
> [0: 0.149185] mtrr: corrected configuration.
> [0: 0.156112] bio: create slab <bio-0> at 0
> [0: 0.156635] vgaarb: loaded
> [0: 0.156635] PCI: Probing PCI hardware
> [0: 0.156635] PCI: Probing PCI hardware (bus 00)
> [0: 0.156635] pci 0000:00:01.1: reg 20 io port: [0xc000-0xc00f]
> [0: 0.156773] pci 0000:00:01.3: quirk: region b000-b03f claimed by PIIX4 ACPI
> [0: 0.160012] pci 0000:00:01.3: quirk: region b100-b10f claimed by PIIX4 SMB
> [0: 0.163379] pci 0000:00:02.0: reg 10 32bit mmio pref: [0xf0000000-0xf1ffffff]
> [0: 0.164660] pci 0000:00:02.0: reg 14 32bit mmio: [0xf2000000-0xf2000fff]
> [0: 0.170537] pci 0000:00:03.0: reg 10 io port: [0xc020-0xc03f]
> [0: 0.170629] pci 0000:00:03.0: reg 14 32bit mmio: [0xf2001000-0xf2001fff]
> [0: 0.171037] pci 0000:00:04.0: reg 10 io port: [0xc040-0xc05f]
> [0: 0.171373] pci 0000:00:05.0: reg 10 io port: [0xc080-0xc0bf]
> [0: 0.172273] pci 0000:00:06.0: reg 10 io port: [0xc0c0-0xc0ff]
> [0: 0.173099] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
> [0: 0.176131] pci 0000:00:01.0: PIIX/ICH IRQ router [8086:7000]
> [0: 0.177112] Switching to clocksource kvm-clock
> [1: 0.181401] pci_bus 0000:00: resource 0 io: [0x00-0xffff]
> [1: 0.181412] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffffffffffff]
> [1: 0.181825] NET: Registered protocol family 2
> ...
>
>
> >>> Can you try with printk timing disabled and see if the bug disappears?
> >>>
> >> Yes it disappears so far, at last I can't trigger it anymore, tried
> >> numerous boots including the 2.6.35.6 32bit kernel (patched with the
> >> printk registration patch!) which shows the prob in almost every boot.
> >>
> >
> > So, looks like we need to do the real fix.
>
> Your ideas to zero hv_clock or to use an initialized flag may be usable.
Arjan, Michael, can you try the following:
>From 3823c018162dc708b543cbdc680a4c7d63533fee Mon Sep 17 00:00:00 2001
From: Zachary Amsden <zamsden@redhat.com>
Date: Sat, 29 May 2010 17:52:46 -1000
Subject: [KVM V2 04/25] Fix SVM VMCB reset
Cc: Avi Kivity <avi@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
Glauber Costa <glommer@redhat.com>,
linux-kernel@vger.kernel.org
On reset, VMCB TSC should be set to zero. Instead, code was setting
tsc_offset to zero, which passes through the underlying TSC.
Signed-off-by: Zachary Amsden <zamsden@redhat.com>
---
arch/x86/kvm/svm.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 760c86e..46856d2 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -781,7 +781,7 @@ static void init_vmcb(struct vcpu_svm *svm)
control->iopm_base_pa = iopm_base;
control->msrpm_base_pa = __pa(svm->msrpm);
- control->tsc_offset = 0;
+ guest_write_tsc(&svm->vcpu, 0);
control->int_ctl = V_INTR_MASKING_MASK;
init_seg(&save->es);
--
1.7.1
next prev parent reply other threads:[~2010-09-30 19:07 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-22 12:53 2.6.35-rc1 regression with pvclock and smp guests Andre Przywara
2010-07-25 8:44 ` Avi Kivity
2010-07-26 8:47 ` Andre Przywara
2010-07-26 18:59 ` Arjan Koers
2010-07-27 21:00 ` Arjan Koers
2010-07-28 10:37 ` Avi Kivity
2010-07-31 0:34 ` Arjan Koers
2010-07-31 1:38 ` Zachary Amsden
2010-07-31 11:50 ` Arjan Koers
2010-07-31 2:39 ` Zachary Amsden
2010-07-31 11:53 ` Arjan Koers
2010-07-31 16:36 ` Arjan Koers
2010-07-31 19:45 ` Arjan Koers
2010-07-31 23:55 ` Zachary Amsden
2010-08-02 14:43 ` Glauber Costa
2010-08-02 16:16 ` Arjan Koers
2010-08-02 18:07 ` Glauber Costa
2010-08-02 20:26 ` Zachary Amsden
2010-08-02 21:10 ` Glauber Costa
2010-08-02 21:35 ` Arjan Koers
2010-08-03 0:00 ` Zachary Amsden
2010-09-28 11:16 ` Michael Tokarev
2010-09-29 8:12 ` Michael Tokarev
2010-09-29 8:28 ` Avi Kivity
2010-09-29 9:17 ` Michael Tokarev
2010-09-29 9:19 ` Michael Tokarev
2010-09-29 19:26 ` Arjan Koers
2010-09-30 7:55 ` Michael Tokarev
2010-09-30 9:59 ` Michael Tokarev
2010-09-30 13:54 ` Zachary Amsden
2010-09-30 15:12 ` Michael Tokarev
2010-09-30 15:32 ` Zachary Amsden
2010-09-30 18:49 ` Arjan Koers
2010-09-30 19:05 ` Marcelo Tosatti [this message]
2010-09-30 20:16 ` Arjan Koers
2010-09-30 23:02 ` Michael Tokarev
2010-09-30 23:07 ` Michael Tokarev
2010-10-01 1:13 ` Zachary Amsden
2010-10-02 5:35 ` Zachary Amsden
2010-10-02 7:35 ` Michael Tokarev
2010-10-02 7:40 ` Michael Tokarev
2010-10-02 7:50 ` Michael Tokarev
2010-10-02 16:10 ` Arjan Koers
2010-10-02 20:26 ` Michael Tokarev
2010-10-02 23:42 ` Zachary Amsden
2010-10-03 8:27 ` Michael Tokarev
2010-10-08 0:12 ` Arjan Koers
2010-10-08 2:47 ` Zachary Amsden
2010-10-08 22:06 ` Marcelo Tosatti
2010-10-09 1:10 ` Arjan Koers
2010-10-09 2:27 ` Zachary Amsden
2010-10-09 6:29 ` Michael Tokarev
2010-10-09 8:59 ` Arjan Koers
2010-10-11 20:47 ` Zachary Amsden
2010-10-13 12:18 ` Glauber Costa
2010-10-10 1:20 ` Arjan Koers
2010-10-11 17:53 ` Anthony Liguori
2010-10-11 18:36 ` Marcelo Tosatti
2010-10-09 2:29 ` Zachary Amsden
2010-10-10 1:26 ` Arjan Koers
2010-10-20 20:47 ` Arjan Koers
2010-10-09 7:59 ` Michael Tokarev
2010-10-09 8:31 ` Michael Tokarev
2010-10-02 21:55 ` Zachary Amsden
2010-10-03 8:16 ` Michael Tokarev
2010-10-03 8:22 ` Avi Kivity
2010-10-03 8:30 ` Michael Tokarev
2010-07-27 10:03 ` Avi Kivity
2010-07-27 11:49 ` Andre Przywara
2010-07-27 12:06 ` Avi Kivity
2010-07-27 12:21 ` Andre Przywara
2010-07-27 12:34 ` Avi Kivity
2010-07-27 13:48 ` Andre Przywara
2010-07-27 13:58 ` Avi Kivity
2010-07-27 14:55 ` Andre Przywara
2010-07-27 21:51 ` Andre Przywara
2010-07-28 3:00 ` Zachary Amsden
2010-07-28 7:55 ` Andre Przywara
2010-07-28 12:25 ` Andre Przywara
2010-07-30 22:54 ` Zachary Amsden
2010-08-02 10:12 ` Andre Przywara
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=20100930190507.GA1111@amt.cnet \
--to=mtosatti@redhat.com \
--cc=0h61vkll2ly8@xutrox.com \
--cc=andre.przywara@amd.com \
--cc=avi@redhat.com \
--cc=glommer@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mjt@tls.msk.ru \
--cc=zamsden@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox