From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: Zhenzhong Duan <zhenzhong.duan@oracle.com>, linux-kernel@vger.kernel.org
Cc: linux-hyperv@vger.kernel.org, kvm@vger.kernel.org,
kys@microsoft.com, haiyangz@microsoft.com,
sthemmin@microsoft.com, sashal@kernel.org, tglx@linutronix.de,
mingo@redhat.com, bp@alien8.de, pbonzini@redhat.com,
rkrcmar@redhat.com, sean.j.christopherson@intel.com,
wanpengli@tencent.com, jmattson@google.com, joro@8bytes.org,
boris.ostrovsky@oracle.com, jgross@suse.com,
sstabellini@kernel.org, peterz@infradead.org,
Jonathan Corbet <corbet@lwn.net>,
"H. Peter Anvin" <hpa@zytor.com>, Will Deacon <will@kernel.org>
Subject: Re: [PATCH v5 3/5] x86/kvm: Add "nopvspin" parameter to disable PV spinlocks
Date: Mon, 14 Oct 2019 11:18:38 +0200 [thread overview]
Message-ID: <878spn65xt.fsf@vitty.brq.redhat.com> (raw)
In-Reply-To: <4e1ef1d3-527b-bb70-5536-d9daeb50b7c7@oracle.com>
Zhenzhong Duan <zhenzhong.duan@oracle.com> writes:
> On 2019/10/13 17:02, Vitaly Kuznetsov wrote:
>> Zhenzhong Duan <zhenzhong.duan@oracle.com> writes:
> ...snip
>> diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
>> index ef836d6..6e14bd4 100644
>> --- a/arch/x86/kernel/kvm.c
>> +++ b/arch/x86/kernel/kvm.c
>> @@ -825,18 +825,31 @@ __visible bool __kvm_vcpu_is_preempted(long cpu)
>> */
>> void __init kvm_spinlock_init(void)
>> {
>> - /* Does host kernel support KVM_FEATURE_PV_UNHALT? */
>> - if (!kvm_para_has_feature(KVM_FEATURE_PV_UNHALT))
>> + /*
>> + * Disable PV qspinlocks if host kernel doesn't support
>> + * KVM_FEATURE_PV_UNHALT feature or there is only 1 vCPU.
>> + * virt_spin_lock_key is enabled to avoid lock holder
>> + * preemption issue.
>> + */
>> + if (!kvm_para_has_feature(KVM_FEATURE_PV_UNHALT) ||
>> + num_possible_cpus() == 1) {
>> + pr_info("PV spinlocks disabled\n");
>> Why don't we need static_branch_disable(&virt_spin_lock_key) here?
>
> Thanks for review.
>
> I have a brief explanation in above comment area.
>
> Boris also raised the same question in v4 and see my detailed explanation
>
> in https://lkml.org/lkml/2019/10/6/39
>
>>
>> Also, as you're printing the exact reason for PV spinlocks disablement
>> in other cases, I'd suggest separating "no host support" and "single
>> CPU" cases.
>
> Will do after reaching a consensus on your first question.
Oh, sorry I missed v4 discussion. As I'm not the first to ask why we
don't do static_branch_disable(&virt_spin_lock_key) here I suggest we do
the followin:
- Split !kvm_para_has_feature(KVM_FEATURE_PV_UNHALT) and
num_possible_cpus() == 1 cases
- Do static_branch_disable(&virt_spin_lock_key) for UP case (just for
consistency).
- Add a comment why we don't do that for
!kvm_para_has_feature(KVM_FEATURE_PV_UNHALT) case (basically, what you
replied to Boris)
This will also allow us to print the exact reason.
>
>>
>>> return;
>>> + }
>>>
>>> if (kvm_para_has_hint(KVM_HINTS_REALTIME)) {
>>> + pr_info("PV spinlocks disabled with KVM_HINTS_REALTIME hints.\n");
>>> static_branch_disable(&virt_spin_lock_key);
>>> return;
>>> }
>>>
>>> - /* Don't use the pvqspinlock code if there is only 1 vCPU. */
>>> - if (num_possible_cpus() == 1)
>>> + if (nopvspin) {
>>> + pr_info("PV spinlocks disabled forced by \"nopvspin\" parameter.\n");
>> Nit: to make it sound better a comma is missing between 'disabled' and
>> 'forced', or
>>
>> "PV spinlocks forcefully disabled by ..." if you prefer.
>
> Will do.
>
> Zhenzhong
>
>
--
Vitaly
next prev parent reply other threads:[~2019-10-14 9:18 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-07 9:04 [PATCH v5 0/5] Add a unified parameter "nopvspin" Zhenzhong Duan
2019-10-07 9:04 ` [PATCH v5 1/5] Revert "KVM: X86: Fix setup the virt_spin_lock_key before static key get initialized" Zhenzhong Duan
2019-10-13 9:08 ` Vitaly Kuznetsov
2019-10-07 9:04 ` [PATCH v5 2/5] x86/kvm: Change print code to use pr_*() format Zhenzhong Duan
2019-10-13 9:06 ` Vitaly Kuznetsov
2019-10-14 1:38 ` Zhenzhong Duan
2019-10-07 9:04 ` [PATCH v5 3/5] x86/kvm: Add "nopvspin" parameter to disable PV spinlocks Zhenzhong Duan
2019-10-13 9:02 ` Vitaly Kuznetsov
2019-10-14 1:52 ` Zhenzhong Duan
2019-10-14 9:18 ` Vitaly Kuznetsov [this message]
2019-10-07 9:04 ` [PATCH v5 4/5] xen: Mark "xen_nopvspin" parameter obsolete Zhenzhong Duan
2019-10-07 9:04 ` [PATCH v5 5/5] x86/hyperv: Mark "hv_nopvspin" " Zhenzhong Duan
2019-10-12 8:40 ` [PATCH v5 0/5] Add a unified parameter "nopvspin" Zhenzhong Duan
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=878spn65xt.fsf@vitty.brq.redhat.com \
--to=vkuznets@redhat.com \
--cc=boris.ostrovsky@oracle.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=haiyangz@microsoft.com \
--cc=hpa@zytor.com \
--cc=jgross@suse.com \
--cc=jmattson@google.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=rkrcmar@redhat.com \
--cc=sashal@kernel.org \
--cc=sean.j.christopherson@intel.com \
--cc=sstabellini@kernel.org \
--cc=sthemmin@microsoft.com \
--cc=tglx@linutronix.de \
--cc=wanpengli@tencent.com \
--cc=will@kernel.org \
--cc=zhenzhong.duan@oracle.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.