Received: by 10.223.164.202 with SMTP id h10csp510340wrb; Wed, 8 Nov 2017 21:48:08 -0800 (PST) X-Google-Smtp-Source: ABhQp+TMaNro8RaI79s0Q+N9vdepK8J2RvgJw7xRgEyTiPBq10Xiw6DU8lhyED2jqVpW18a7h4Fn X-Received: by 10.99.95.70 with SMTP id t67mr2756529pgb.409.1510206488740; Wed, 08 Nov 2017 21:48:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510206488; cv=none; d=google.com; s=arc-20160816; b=ADK896nxlf9as8pbmXDZZOKTYSk35D4EuXyQzJFDRbcJyIFMa+QivbtWtw66gCCa36 6BAajSaA+07jkuav2fBbzkgZEtgLyDBRZSwnrnRcZDC2pQEmR6S4yvhtnunhok8aRGHZ Az5NZBE5cavYoGo5hYh8rGsvejkewUNwdiEgknOel3aHV8LwRmnSVfhLAYnIViBHUlFj 3rhegnCHbkgoDYcqyobtN/kwIHJZC2oZtpiJsF+R+BEyAn8QgOgqF+ogqy+J91CZsz+a X7Avhxn9B7RdWjTixVS/w6ABW2+iEy+eySyzWT/NxWgAZnIrhE7RPd8zK2ZJqJWon0R0 084w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:arc-authentication-results; bh=xm1kyRyvfNogh0OJe8OltEqxeQt8dXuGC/YEFUkA+oc=; b=jfmzLZxWxq+/ZZ5mFksvztWywRajluQeVVKIxAlp/vijN6CH3o5SrSFR1SSsIaMUM7 xmEghlsZKWX7UTIXLrGLYMBZAF5mmyfEwMG17n931U6gKdaYg3eQuISbkHemDgkd4fn0 ig+qA+Gxcdy1tzJsJ3iGwOVbuhD173B1vMuJk9UOAAqr9OQMn2aAk1Yugv32ciezT7mz OR9TEkT8Qf4+HMjKLymJmrkEa1WSzBj+5yfcMkqVFAhQsiDx3JE0Dfwo0exxNSTWsj4r ulEWZlMS9wNP4eFAoLSvLHECoIuI8ajm8yrcrY8gNG98viaqIcu1XaysYX2K1A3+dNSH 4V9A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=rFst0J5Z; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n12si5251891pgq.423.2017.11.08.21.47.57; Wed, 08 Nov 2017 21:48:08 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=rFst0J5Z; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751544AbdKIFrR (ORCPT + 82 others); Thu, 9 Nov 2017 00:47:17 -0500 Received: from mail-oi0-f68.google.com ([209.85.218.68]:47912 "EHLO mail-oi0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751135AbdKIFrP (ORCPT ); Thu, 9 Nov 2017 00:47:15 -0500 Received: by mail-oi0-f68.google.com with SMTP id y206so2404297oiy.4; Wed, 08 Nov 2017 21:47:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=xm1kyRyvfNogh0OJe8OltEqxeQt8dXuGC/YEFUkA+oc=; b=rFst0J5ZTRMPgENqOZowifAeFfDZuWvzaxFnx8mG2b1Ri+/GbDgWGsBRRyGRClouKJ ahmevnyeLYp2RgieIlKoaD6NQCu0YGzbMMaBT31jgOCfg4Ri0W30Ou2JTF0CtYEnqCkh NI2ID2YkrAs+mLeNWBuKXL0+f7TdvQAUR1gwMB0fN9C18DyU146IGjd8MrcctNCte98H Ukd0zm3wAIyU9D62q/r4nd/j+LmcXxoPZ6f9PsmMkH8wcJj295S1DxxhW7dZlEZGP1c1 E+9mK5eeaJxfQQfYyj2VVigg/pVvAQ1Hx5u6vooG+h7Phq3ooXS1rglAS0XGGVvBDp6o iXJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=xm1kyRyvfNogh0OJe8OltEqxeQt8dXuGC/YEFUkA+oc=; b=VYY5+SdWT36ngw2wJ8R7ga6jcTZr9V/hxMDI9WCeDKXlMOvNbN5Pbr6iHXlmGSHjXd MbXRr2ZiS0l7ttXQhupIxWUN7sOFgZyvGCvCc/mEgNK6h9wG3teHOA//S+j3AgVCQmVc 6SlMHkYus39MGVUkIiRZ77wnnswy6PXPufZPUhnbAdU8If4yDN67elnVuiul3gJc946S GgXnqFFzKRZO4VBMe9Ar32+VamBLl7S8UmV4syLR9ZISa2ZFz+bVv/1N+0Cs8qZa4KPS GdwJ1RGzjMo5cVXW3vUeEkbIRJU7/HakJPYHisbvxQMfSVHwTBSnZ3M3lRDOZsYNrIXj CkSw== X-Gm-Message-State: AJaThX77XO4dF99b4LxKGnCcvOp2lVTNeOGW8SJf+WGRI9KphBIg9LDd Y5UIdtnpYJ5XtN7fJOjkBfxlwGP8vONzpZ1ljes= X-Received: by 10.202.196.132 with SMTP id u126mr1411040oif.51.1510206434230; Wed, 08 Nov 2017 21:47:14 -0800 (PST) MIME-Version: 1.0 Received: by 10.74.53.27 with HTTP; Wed, 8 Nov 2017 21:47:13 -0800 (PST) In-Reply-To: <20171109043924.GA13674@char.us.oracle.com> References: <1510195932-6232-1-git-send-email-wanpeng.li@hotmail.com> <20171109043924.GA13674@char.us.oracle.com> From: Wanpeng Li Date: Thu, 9 Nov 2017 13:47:13 +0800 Message-ID: Subject: Re: [PATCH v3] KVM: X86: Fix softlockup when get the current kvmclock To: Konrad Rzeszutek Wilk Cc: "linux-kernel@vger.kernel.org" , kvm , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Wanpeng Li Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2017-11-09 12:39 GMT+08:00 Konrad Rzeszutek Wilk : > On Wed, Nov 08, 2017 at 06:52:12PM -0800, Wanpeng Li wrote: >> From: Wanpeng Li >> >> watchdog: BUG: soft lockup - CPU#6 stuck for 22s! [qemu-system-x86:1018= 5] >> CPU: 6 PID: 10185 Comm: qemu-system-x86 Tainted: G OE 4.14.= 0-rc4+ #4 >> RIP: 0010:kvm_get_time_scale+0x4e/0xa0 [kvm] >> Call Trace: >> ? get_kvmclock_ns+0xa3/0x140 [kvm] >> get_time_ref_counter+0x5a/0x80 [kvm] >> kvm_hv_process_stimers+0x120/0x5f0 [kvm] >> ? kvm_hv_process_stimers+0x120/0x5f0 [kvm] >> ? preempt_schedule+0x27/0x30 >> ? ___preempt_schedule+0x16/0x18 >> kvm_arch_vcpu_ioctl_run+0x4b4/0x1690 [kvm] >> ? kvm_arch_vcpu_load+0x47/0x230 [kvm] >> kvm_vcpu_ioctl+0x33a/0x620 [kvm] >> ? kvm_vcpu_ioctl+0x33a/0x620 [kvm] >> ? kvm_vm_ioctl_check_extension_generic+0x3b/0x40 [kvm] >> ? kvm_dev_ioctl+0x279/0x6c0 [kvm] >> do_vfs_ioctl+0xa1/0x5d0 >> ? __fget+0x73/0xa0 >> SyS_ioctl+0x79/0x90 >> entry_SYSCALL_64_fastpath+0x1e/0xa9 >> >> This can be reproduced when running kvm-unit-tests/hyperv_stimer.flat an= d >> cpu-hotplug stress simultaneously. __this_cpu_read(cpu_tsc_khz) returns = 0 >> (set in kvmclock_cpu_down_prep()) when the pCPU is unhotplug which resul= ts >> in kvm_get_time_scale() gets into an infinite loop. >> >> This patch fixes it by treating the unhotplug pCPU as not using master c= lock. >> >> Cc: Paolo Bonzini >> Cc: Radim Kr=C4=8Dm=C3=A1=C5=99 >> Signed-off-by: Wanpeng Li >> --- >> arch/x86/kvm/x86.c | 11 +++++++---- >> 1 file changed, 7 insertions(+), 4 deletions(-) > > Could you include the v1, v2, and v3 changes? I kind got lost > why the earlier versions were incorrect. > > Usually one does it by saying: > v1: New version > v2: Changed xyz , etc.. Yeah, I forgot to add this: v2 -> v3: * treat the unhotplug pCPU as not using master clock v1 -> v2: * avoid infinite loop in kvm_get_time_scale() Regards, Wanpeng Li > >> >> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c >> index 03869eb..d61dcce3 100644 >> --- a/arch/x86/kvm/x86.c >> +++ b/arch/x86/kvm/x86.c >> @@ -1795,10 +1795,13 @@ u64 get_kvmclock_ns(struct kvm *kvm) >> /* both __this_cpu_read() and rdtsc() should be on the same cpu */ >> get_cpu(); >> >> - kvm_get_time_scale(NSEC_PER_SEC, __this_cpu_read(cpu_tsc_khz) * 10= 00LL, >> - &hv_clock.tsc_shift, >> - &hv_clock.tsc_to_system_mul); >> - ret =3D __pvclock_read_cycles(&hv_clock, rdtsc()); >> + if (__this_cpu_read(cpu_tsc_khz)) { >> + kvm_get_time_scale(NSEC_PER_SEC, __this_cpu_read(cpu_tsc_k= hz) * 1000LL, >> + &hv_clock.tsc_shift, >> + &hv_clock.tsc_to_system_mul); >> + ret =3D __pvclock_read_cycles(&hv_clock, rdtsc()); >> + } else >> + ret =3D ktime_get_boot_ns() + ka->kvmclock_offset; >> >> put_cpu(); >> >> -- >> 2.7.4 >> From 1583562016105299718@xxx Thu Nov 09 04:40:23 +0000 2017 X-GM-THRID: 1583555269032973391 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread