From: tip-bot for Vitaly Kuznetsov <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: sthemmin@microsoft.com, linux-kernel@vger.kernel.org,
kys@microsoft.com, haiyangz@microsoft.com, hpa@zytor.com,
rkagan@virtuozzo.com, Michael.H.Kelley@microsoft.com,
mmorsy@redhat.com, pbonzini@redhat.com, tglx@linutronix.de,
luto@kernel.org, cavery@redhat.com, mingo@kernel.org,
rkrcmar@redhat.com, vkuznets@redhat.com
Subject: [tip:x86/hyperv] x86/hyperv: Redirect reenlightment notifications on CPU offlining
Date: Tue, 30 Jan 2018 15:02:01 -0800 [thread overview]
Message-ID: <tip-e7c4e36c447daca2b7df49024f6bf230871cb155@git.kernel.org> (raw)
In-Reply-To: <20180124132337.30138-5-vkuznets@redhat.com>
Commit-ID: e7c4e36c447daca2b7df49024f6bf230871cb155
Gitweb: https://git.kernel.org/tip/e7c4e36c447daca2b7df49024f6bf230871cb155
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
AuthorDate: Wed, 24 Jan 2018 14:23:34 +0100
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Tue, 30 Jan 2018 23:55:33 +0100
x86/hyperv: Redirect reenlightment notifications on CPU offlining
It is very unlikely for CPUs to get offlined when running on Hyper-V as
there is a protection in the vmbus module which prevents it when the guest
has any VMBus devices assigned. This, however, may change in future if an
option to reassign an already active channel will be added. It is also
possible to run without any Hyper-V devices or to have a CPU with no
assigned channels.
Reassign reenlightenment notifications to some other active CPU when the
CPU which is assigned to them goes offline.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Stephen Hemminger <sthemmin@microsoft.com>
Cc: kvm@vger.kernel.org
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: "Michael Kelley (EOSG)" <Michael.H.Kelley@microsoft.com>
Cc: Roman Kagan <rkagan@virtuozzo.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: devel@linuxdriverproject.org
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Cathy Avery <cavery@redhat.com>
Cc: Mohammed Gamal <mmorsy@redhat.com>
Link: https://lkml.kernel.org/r/20180124132337.30138-5-vkuznets@redhat.com
---
arch/x86/hyperv/hv_init.c | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c
index 712ac40..e4377e2 100644
--- a/arch/x86/hyperv/hv_init.c
+++ b/arch/x86/hyperv/hv_init.c
@@ -191,6 +191,26 @@ void clear_hv_tscchange_cb(void)
}
EXPORT_SYMBOL_GPL(clear_hv_tscchange_cb);
+static int hv_cpu_die(unsigned int cpu)
+{
+ struct hv_reenlightenment_control re_ctrl;
+ unsigned int new_cpu;
+
+ if (hv_reenlightenment_cb == NULL)
+ return 0;
+
+ rdmsrl(HV_X64_MSR_REENLIGHTENMENT_CONTROL, *((u64 *)&re_ctrl));
+ if (re_ctrl.target_vp == hv_vp_index[cpu]) {
+ /* Reassign to some other online CPU */
+ new_cpu = cpumask_any_but(cpu_online_mask, cpu);
+
+ re_ctrl.target_vp = hv_vp_index[new_cpu];
+ wrmsrl(HV_X64_MSR_REENLIGHTENMENT_CONTROL, *((u64 *)&re_ctrl));
+ }
+
+ return 0;
+}
+
/*
* This function is to be invoked early in the boot sequence after the
* hypervisor has been detected.
@@ -220,7 +240,7 @@ void hyperv_init(void)
return;
if (cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "x86/hyperv_init:online",
- hv_cpu_init, NULL) < 0)
+ hv_cpu_init, hv_cpu_die) < 0)
goto free_vp_index;
/*
next prev parent reply other threads:[~2018-01-30 23:03 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-24 13:23 [PATCH v4 0/7] x86/kvm/hyperv: stable clocksource for L2 guests when running nested KVM on Hyper-V Vitaly Kuznetsov
2018-01-24 13:23 ` Vitaly Kuznetsov
2018-01-24 13:23 ` [PATCH v4 1/7] x86/hyper-v: check for required priviliges in hyperv_init() Vitaly Kuznetsov
2018-01-24 13:23 ` Vitaly Kuznetsov
2018-01-30 23:00 ` [tip:x86/hyperv] x86/hyperv: Check " tip-bot for Vitaly Kuznetsov
2018-01-24 13:23 ` [PATCH v4 2/7] x86/hyper-v: add a function to read both TSC and TSC page value simulateneously Vitaly Kuznetsov
2018-01-24 13:23 ` Vitaly Kuznetsov
2018-01-30 23:01 ` [tip:x86/hyperv] x86/hyperv: Add " tip-bot for Vitaly Kuznetsov
2018-01-24 13:23 ` [PATCH v4 3/7] x86/hyper-v: reenlightenment notifications support Vitaly Kuznetsov
2018-01-24 13:23 ` Vitaly Kuznetsov
2018-01-30 23:01 ` [tip:x86/hyperv] x86/hyperv: Reenlightenment " tip-bot for Vitaly Kuznetsov
2018-01-24 13:23 ` [PATCH v4 4/7] x86/hyper-v: redirect reenlightment notifications on CPU offlining Vitaly Kuznetsov
2018-01-24 13:23 ` Vitaly Kuznetsov
2018-01-30 23:02 ` tip-bot for Vitaly Kuznetsov [this message]
2018-01-24 13:23 ` [PATCH v4 5/7] x86/irq: Count Hyper-V reenlightenment interrupts Vitaly Kuznetsov
2018-01-24 13:23 ` Vitaly Kuznetsov
2018-01-24 14:58 ` Radim Krčmář
2018-01-24 14:58 ` Radim Krčmář
2018-01-29 21:48 ` Thomas Gleixner
2018-01-29 21:48 ` Thomas Gleixner
2018-01-30 14:02 ` Radim Krčmář
2018-01-30 14:02 ` Radim Krčmář
2018-01-30 14:35 ` Thomas Gleixner
2018-01-30 23:48 ` Thomas Gleixner
2018-01-30 23:48 ` Thomas Gleixner
2018-01-30 23:02 ` [tip:x86/hyperv] " tip-bot for Vitaly Kuznetsov
2018-01-24 13:23 ` [PATCH v4 6/7] x86/kvm: pass stable clocksource to guests when running nested on Hyper-V Vitaly Kuznetsov
2018-01-24 13:23 ` Vitaly Kuznetsov
2018-01-30 23:02 ` [tip:x86/hyperv] x86/kvm: Pass " tip-bot for Vitaly Kuznetsov
2018-01-24 13:23 ` [PATCH v4 7/7] x86/kvm: support Hyper-V reenlightenment Vitaly Kuznetsov
2018-01-24 13:23 ` Vitaly Kuznetsov
2018-01-30 23:03 ` [tip:x86/hyperv] x86/kvm: Support " tip-bot for 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=tip-e7c4e36c447daca2b7df49024f6bf230871cb155@git.kernel.org \
--to=tipbot@zytor.com \
--cc=Michael.H.Kelley@microsoft.com \
--cc=cavery@redhat.com \
--cc=haiyangz@microsoft.com \
--cc=hpa@zytor.com \
--cc=kys@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@kernel.org \
--cc=mmorsy@redhat.com \
--cc=pbonzini@redhat.com \
--cc=rkagan@virtuozzo.com \
--cc=rkrcmar@redhat.com \
--cc=sthemmin@microsoft.com \
--cc=tglx@linutronix.de \
--cc=vkuznets@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.