From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: Jork Loeser <Jork.Loeser@microsoft.com>
Cc: "x86\@kernel.org" <x86@kernel.org>,
"devel\@linuxdriverproject.org" <devel@linuxdriverproject.org>,
"linux-kernel\@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"KY Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Stephen Hemminger <sthemmin@microsoft.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
Steven Rostedt <rostedt@goodmis.org>,
Simon Xiao <sixiao@microsoft.com>,
Andy Lutomirski <luto@kernel.org>,
Andy Shevchenko <andy.shevchenko@gmail.com>
Subject: Re: [PATCH v5 09/10] x86/hyper-v: support extended CPU ranges for TLB flush hypercalls
Date: Wed, 31 May 2017 17:06:38 +0200 [thread overview]
Message-ID: <8737bl12wx.fsf@vitty.brq.redhat.com> (raw)
In-Reply-To: <CY4PR21MB063170DF2D525366EA272795F1F00@CY4PR21MB0631.namprd21.prod.outlook.com> (Jork Loeser's message of "Tue, 30 May 2017 19:13:23 +0000")
Jork Loeser <Jork.Loeser@microsoft.com> writes:
>> -----Original Message-----
>> From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com]
>> Sent: Tuesday, May 30, 2017 04:34
>> To: x86@kernel.org; devel@linuxdriverproject.org
>> Cc: linux-kernel@vger.kernel.org; KY Srinivasan <kys@microsoft.com>; Haiyang
>> Zhang <haiyangz@microsoft.com>; Stephen Hemminger
>> <sthemmin@microsoft.com>; Thomas Gleixner <tglx@linutronix.de>; Ingo
>> Molnar <mingo@redhat.com>; H. Peter Anvin <hpa@zytor.com>; Steven
>> Rostedt <rostedt@goodmis.org>; Jork Loeser <Jork.Loeser@microsoft.com>;
>> Simon Xiao <sixiao@microsoft.com>; Andy Lutomirski <luto@kernel.org>; Andy
>> Shevchenko <andy.shevchenko@gmail.com>
>> Subject: [PATCH v5 09/10] x86/hyper-v: support extended CPU ranges for TLB
>> flush hypercalls
>>
>> Hyper-V hosts may support more than 64 vCPUs, we need to use
>> HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE_EX/LIST_EX hypercalls in this case.
>
>> +static inline int cpumask_to_vp_set(struct hv_flush_pcpu_ex *flush,
>> + const struct cpumask *cpus)
>> +{
>> + int cpu, vcpu, vcpu_bank, vcpu_offset, cur_bank, nr_bank = 0;
>> + bool has_cpus;
>> +
>> + /*
>> + * We can't be sure that translated vCPU numbers will always be
>> + * in ascending order, so iterate over all possible banks and
>> + * check all vCPUs in it instead.
>> + */
>> + for (cur_bank = 0; cur_bank < ms_hyperv.max_vp_index/64;
>> cur_bank++) {
>> + has_cpus = false;
>> + for_each_cpu(cpu, cpus) {
>> + vcpu = hv_cpu_number_to_vp_number(cpu);
>> + vcpu_bank = vcpu / 64;
>> + vcpu_offset = vcpu % 64;
>> +
>> + if (vcpu_bank != cur_bank)
>> + continue;
>> + __set_bit(vcpu_offset, (unsigned long *)
>> + &flush->hv_vp_set.bank_contents[nr_bank]);
>> + if (!has_cpus) {
>> + __set_bit(vcpu_bank, (unsigned long *)
>> + &flush->hv_vp_set.valid_bank_mask);
>> + has_cpus = true;
>> + }
>> + }
>> + if (has_cpus)
>> + nr_bank++;
>> + }
>> +
>> + return nr_bank;
>> +}
>
> Note that the HV_VP_SET may contain empty banks. As such, consider
> enabling all (5) bits in the valid_bank_mask, and a single
> for_each(cpu, cpus) pass - setting the bits as per
> hv_cpu_number_to_vp_number(cpu).
>
Oh, I didn't know that! I'll switch to doing a single
pass. Unfortunately I have no Hyper-V setup with > 64 vCPUs so I can't
really test if it works or not (I mean empty banks, *_EX hypercalls
work).
--
Vitaly
next prev parent reply other threads:[~2017-05-31 15:06 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-30 11:34 [PATCH v5 00/10] Hyper-V: praravirtualized remote TLB flushing and hypercall improvements Vitaly Kuznetsov
2017-05-30 11:34 ` [PATCH v5 01/10] x86/hyper-v: include hyperv/ only when CONFIG_HYPERV is set Vitaly Kuznetsov
2017-05-30 16:24 ` Andy Shevchenko
2017-05-31 14:37 ` Vitaly Kuznetsov
2017-05-31 14:51 ` Andy Shevchenko
2017-05-30 11:34 ` [PATCH v5 02/10] x86/hyper-v: stash the max number of virtual/logical processor Vitaly Kuznetsov
2017-05-30 16:59 ` Stephen Hemminger
2017-05-31 14:38 ` Vitaly Kuznetsov
2017-05-30 11:34 ` [PATCH v5 03/10] x86/hyper-v: make hv_do_hypercall() inline Vitaly Kuznetsov
2017-05-30 16:29 ` Andy Shevchenko
2017-05-30 11:34 ` [PATCH v5 04/10] x86/hyper-v: fast hypercall implementation Vitaly Kuznetsov
2017-05-30 16:31 ` Andy Shevchenko
2017-05-30 11:34 ` [PATCH v5 05/10] hyper-v: use fast hypercall for HVCALL_SIGNAL_EVENT Vitaly Kuznetsov
2017-05-30 11:34 ` [PATCH v5 06/10] x86/hyper-v: implement rep hypercalls Vitaly Kuznetsov
2017-05-30 16:33 ` Andy Shevchenko
2017-05-30 11:34 ` [PATCH v5 07/10] hyper-v: globalize vp_index Vitaly Kuznetsov
2017-05-30 16:38 ` Andy Shevchenko
2017-05-30 11:34 ` [PATCH v5 08/10] x86/hyper-v: use hypercall for remote TLB flush Vitaly Kuznetsov
2017-05-30 16:52 ` Andy Shevchenko
2017-05-30 19:17 ` Jork Loeser
2017-05-30 19:19 ` Andy Shevchenko
2017-05-30 23:04 ` Stephen Hemminger
2017-05-30 11:34 ` [PATCH v5 09/10] x86/hyper-v: support extended CPU ranges for TLB flush hypercalls Vitaly Kuznetsov
2017-05-30 17:02 ` Andy Shevchenko
2017-05-30 19:13 ` Jork Loeser
2017-05-31 15:06 ` Vitaly Kuznetsov [this message]
2017-05-30 11:34 ` [PATCH v5 10/10] tracing/hyper-v: trace hyperv_mmu_flush_tlb_others() Vitaly Kuznetsov
2017-05-30 17:05 ` [PATCH v5 00/10] Hyper-V: praravirtualized remote TLB flushing and hypercall improvements Andy Shevchenko
2017-05-31 14:29 ` Vitaly Kuznetsov
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=8737bl12wx.fsf@vitty.brq.redhat.com \
--to=vkuznets@redhat.com \
--cc=Jork.Loeser@microsoft.com \
--cc=andy.shevchenko@gmail.com \
--cc=devel@linuxdriverproject.org \
--cc=haiyangz@microsoft.com \
--cc=hpa@zytor.com \
--cc=kys@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=rostedt@goodmis.org \
--cc=sixiao@microsoft.com \
--cc=sthemmin@microsoft.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/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.