From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: Geoff Levand <geoff@infradead.org>
Cc: Mark Rutland <mark.rutland@arm.com>,
Marc Zyngier <marc.zyngier@arm.com>,
Catalin Marinas <Catalin.Marinas@arm.com>,
Will Deacon <Will.Deacon@arm.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"grant.likely@linaro.org" <grant.likely@linaro.org>,
"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
"christoffer.dall@linaro.org" <christoffer.dall@linaro.org>
Subject: Re: [PATCH 7/8] arm64/kexec: Add checks for KVM
Date: Mon, 02 Feb 2015 17:18:19 +0900 [thread overview]
Message-ID: <54CF32CB.1060507@linaro.org> (raw)
In-Reply-To: <1422647304.21823.31.camel@infradead.org>
Geoff,
On 01/31/2015 04:48 AM, Geoff Levand wrote:
> Hi Takahiro.
>
> On Fri, 2015-01-30 at 15:10 +0900, AKASHI Takahiro wrote:
>> Initially, I thought that we would define kvm_arch_exit() and call it
>> somewhere in the middle of kexec path (no idea yet).
>> But Geoff suggested me to implement a new hvc call, HVC_CPU_SHUTDOWN(??),
>> and make it called via cpu_notifier(CPU_DYING_FROZEN) initiated by
>> machine_shutdown() from kernel_kexec().
>
> As an initial implementation we can hook into the CPU_DYING_FROZEN
> notifier sent to hyp_init_cpu_notify(). The longer term solution
> should use kvm_arch_hardware_enable() and kvm_arch_hardware_disable().
Are these two different approaches? I mean,
kexec will initiate cpu hotplug:
kernel_exec() -> machine_shutdown() -> disable_nonboot_cpu()
-> _cpu_down() -> cpu_notify_nofail(CPU_DEAD|...)
On the other hand, kvm already has a hook into kvm_arch_hardware_disable():
(ignoring kvm_usage_count here)
kvm_cpu_hotplug(CPU_DYING) -> hardware_disable()
-> hardware_disable_nolock() -> kvm_arch_hardware_disable()
So it seems that we don't have to add a new hook at hyp_init_cpu_notify()
if kvm_arch_hardware_disable() is properly implemented.
disable_nonboot_cpu() will not inovke cpu hotplug on *boot* cpu, and
we should handle it in a separate way though.
Do I misunderstand anything here?
-Takahiro AKASHI
> The calls to cpu_notifier(CPU_DYING_FROZEN) are part of cpu hot
> plug, and independent of kexec. If someone were to add spin-table
> cpu un-plug, then it would be used for that also. It seems we should
> be able to test without kexec by using cpu hot plug.
>
> To tear down KVM you need to get back to hyp mode, and hence
> the need for HVC_CPU_SHUTDOWN. The sequence I envisioned would
> be like this:
>
> cpu_notifier(CPU_DYING_FROZEN)
> -> kvm_cpu_shutdown()
> prepare for hvc
> -> HVC_CPU_SHUTDOWN
> now in hyp mode, do KVM tear down, restore default exception vectors
>
> Once the default exception vectors are restored soft_restart()
> can then execute the cpu_reset routine in EL2.
>
> Some notes are here for those with access: https://cards.linaro.org/browse/KWG-611
>
> -Geoff
>
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: takahiro.akashi@linaro.org (AKASHI Takahiro)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 7/8] arm64/kexec: Add checks for KVM
Date: Mon, 02 Feb 2015 17:18:19 +0900 [thread overview]
Message-ID: <54CF32CB.1060507@linaro.org> (raw)
In-Reply-To: <1422647304.21823.31.camel@infradead.org>
Geoff,
On 01/31/2015 04:48 AM, Geoff Levand wrote:
> Hi Takahiro.
>
> On Fri, 2015-01-30 at 15:10 +0900, AKASHI Takahiro wrote:
>> Initially, I thought that we would define kvm_arch_exit() and call it
>> somewhere in the middle of kexec path (no idea yet).
>> But Geoff suggested me to implement a new hvc call, HVC_CPU_SHUTDOWN(??),
>> and make it called via cpu_notifier(CPU_DYING_FROZEN) initiated by
>> machine_shutdown() from kernel_kexec().
>
> As an initial implementation we can hook into the CPU_DYING_FROZEN
> notifier sent to hyp_init_cpu_notify(). The longer term solution
> should use kvm_arch_hardware_enable() and kvm_arch_hardware_disable().
Are these two different approaches? I mean,
kexec will initiate cpu hotplug:
kernel_exec() -> machine_shutdown() -> disable_nonboot_cpu()
-> _cpu_down() -> cpu_notify_nofail(CPU_DEAD|...)
On the other hand, kvm already has a hook into kvm_arch_hardware_disable():
(ignoring kvm_usage_count here)
kvm_cpu_hotplug(CPU_DYING) -> hardware_disable()
-> hardware_disable_nolock() -> kvm_arch_hardware_disable()
So it seems that we don't have to add a new hook at hyp_init_cpu_notify()
if kvm_arch_hardware_disable() is properly implemented.
disable_nonboot_cpu() will not inovke cpu hotplug on *boot* cpu, and
we should handle it in a separate way though.
Do I misunderstand anything here?
-Takahiro AKASHI
> The calls to cpu_notifier(CPU_DYING_FROZEN) are part of cpu hot
> plug, and independent of kexec. If someone were to add spin-table
> cpu un-plug, then it would be used for that also. It seems we should
> be able to test without kexec by using cpu hot plug.
>
> To tear down KVM you need to get back to hyp mode, and hence
> the need for HVC_CPU_SHUTDOWN. The sequence I envisioned would
> be like this:
>
> cpu_notifier(CPU_DYING_FROZEN)
> -> kvm_cpu_shutdown()
> prepare for hvc
> -> HVC_CPU_SHUTDOWN
> now in hyp mode, do KVM tear down, restore default exception vectors
>
> Once the default exception vectors are restored soft_restart()
> can then execute the cpu_reset routine in EL2.
>
> Some notes are here for those with access: https://cards.linaro.org/browse/KWG-611
>
> -Geoff
>
next prev parent reply other threads:[~2015-02-02 8:18 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1415926876.git.geoff@infradead.orgg>
2015-01-17 0:23 ` [PATCH 0/8] arm64 kexec kernel patches V7 Geoff Levand
2015-01-17 0:23 ` Geoff Levand
2015-01-17 0:23 ` [PATCH 5/8] arm64/kexec: Add core kexec support Geoff Levand
2015-01-17 0:23 ` Geoff Levand
2015-01-26 19:16 ` Mark Rutland
2015-01-26 19:16 ` Mark Rutland
2015-01-17 0:23 ` [PATCH 4/8] arm64: Add EL2 switch to soft_restart Geoff Levand
2015-01-17 0:23 ` Geoff Levand
2015-01-26 19:02 ` Mark Rutland
2015-01-26 19:02 ` Mark Rutland
2015-01-26 21:48 ` Geoff Levand
2015-01-26 21:48 ` Geoff Levand
2015-01-27 16:46 ` Mark Rutland
2015-01-27 16:46 ` Mark Rutland
2015-01-27 18:34 ` Geoff Levand
2015-01-27 18:34 ` Geoff Levand
2015-01-27 17:57 ` Catalin Marinas
2015-01-27 17:57 ` Catalin Marinas
2015-01-30 21:47 ` Geoff Levand
2015-01-30 21:47 ` Geoff Levand
2015-01-17 0:23 ` [PATCH 2/8] arm64: Convert hcalls to use ISS field Geoff Levand
2015-01-17 0:23 ` Geoff Levand
2015-01-26 18:26 ` Catalin Marinas
2015-01-26 18:26 ` Catalin Marinas
2015-01-30 23:31 ` Geoff Levand
2015-01-30 23:31 ` Geoff Levand
2015-02-02 16:04 ` Catalin Marinas
2015-02-02 16:04 ` Catalin Marinas
2015-01-30 23:33 ` [PATCH v2 " Geoff Levand
2015-01-30 23:33 ` Geoff Levand
2015-02-19 20:57 ` Christoffer Dall
2015-02-19 20:57 ` Christoffer Dall
2015-02-25 22:09 ` Geoff Levand
2015-02-25 22:09 ` Geoff Levand
2015-03-02 22:13 ` Christoffer Dall
2015-03-02 22:13 ` Christoffer Dall
2015-03-02 23:22 ` Geoff Levand
2015-03-02 23:22 ` Geoff Levand
2015-03-03 21:47 ` Christopher Covington
2015-03-03 21:47 ` Christopher Covington
2015-03-03 22:35 ` Geoff Levand
2015-03-03 22:35 ` Geoff Levand
2015-01-17 0:23 ` [PATCH 3/8] arm64: Add new hcall HVC_CALL_FUNC Geoff Levand
2015-01-17 0:23 ` Geoff Levand
2015-01-27 17:39 ` Catalin Marinas
2015-01-27 17:39 ` Catalin Marinas
2015-01-27 18:00 ` Mark Rutland
2015-01-27 18:00 ` Mark Rutland
2015-01-30 21:52 ` Geoff Levand
2015-01-30 21:52 ` Geoff Levand
2015-01-17 0:23 ` [PATCH 7/8] arm64/kexec: Add checks for KVM Geoff Levand
2015-01-17 0:23 ` Geoff Levand
2015-01-26 19:19 ` Mark Rutland
2015-01-26 19:19 ` Mark Rutland
2015-01-26 20:39 ` Christoffer Dall
2015-01-26 20:39 ` Christoffer Dall
2015-01-26 20:58 ` Geoff Levand
2015-01-26 20:58 ` Geoff Levand
2015-01-26 21:00 ` Geoff Levand
2015-01-26 21:00 ` Geoff Levand
2015-01-29 9:36 ` AKASHI Takahiro
2015-01-29 9:36 ` AKASHI Takahiro
2015-01-29 9:57 ` AKASHI Takahiro
2015-01-29 9:57 ` AKASHI Takahiro
2015-01-29 10:59 ` Marc Zyngier
2015-01-29 10:59 ` Marc Zyngier
2015-01-29 18:47 ` Mark Rutland
2015-01-29 18:47 ` Mark Rutland
2015-01-30 6:10 ` AKASHI Takahiro
2015-01-30 6:10 ` AKASHI Takahiro
2015-01-30 12:14 ` Mark Rutland
2015-01-30 12:14 ` Mark Rutland
2015-01-30 19:48 ` Geoff Levand
2015-01-30 19:48 ` Geoff Levand
2015-02-02 8:18 ` AKASHI Takahiro [this message]
2015-02-02 8:18 ` AKASHI Takahiro
2015-02-06 0:11 ` Geoff Levand
2015-02-06 0:11 ` Geoff Levand
2015-02-06 4:18 ` AKASHI Takahiro
2015-02-06 4:18 ` AKASHI Takahiro
2015-02-06 7:06 ` Geoff Levand
2015-02-06 7:06 ` Geoff Levand
2015-01-17 0:23 ` [PATCH 1/8] arm64: Move proc-macros.S to include/asm Geoff Levand
2015-01-17 0:23 ` Geoff Levand
2015-01-26 17:45 ` Catalin Marinas
2015-01-26 17:45 ` Catalin Marinas
2015-01-27 19:33 ` [PATCH V2 1/8] arm64: Fold proc-macros.S into assembler.h Geoff Levand
2015-01-27 19:33 ` Geoff Levand
2015-01-17 0:23 ` [PATCH 6/8] arm64/kexec: Add pr_devel output Geoff Levand
2015-01-17 0:23 ` Geoff Levand
2015-01-17 0:23 ` [PATCH 8/8] arm64/kexec: Enable kexec in the arm64 defconfig Geoff Levand
2015-01-17 0:23 ` Geoff Levand
2015-01-26 17:44 ` [PATCH 0/8] arm64 kexec kernel patches V7 Catalin Marinas
2015-01-26 17:44 ` Catalin Marinas
2015-01-26 18:37 ` Grant Likely
2015-01-26 18:37 ` Grant Likely
2015-01-26 18:55 ` Mark Rutland
2015-01-26 18:55 ` Mark Rutland
2015-01-26 20:57 ` Geoff Levand
2015-01-26 20:57 ` Geoff Levand
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=54CF32CB.1060507@linaro.org \
--to=takahiro.akashi@linaro.org \
--cc=Catalin.Marinas@arm.com \
--cc=Will.Deacon@arm.com \
--cc=christoffer.dall@linaro.org \
--cc=geoff@infradead.org \
--cc=grant.likely@linaro.org \
--cc=kexec@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=marc.zyngier@arm.com \
--cc=mark.rutland@arm.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.