From: freddy77@gmail.com (Frediano Ziglio)
To: linux-arm-kernel@lists.infradead.org
Subject: Kexec and KVM not working gracefully together
Date: Tue, 27 Jan 2015 15:07:53 +0000 [thread overview]
Message-ID: <CAHt6W4cuRi3bfj5mryFouhOLGAAWuNXKVvz4K-rAjQnwiegL-Q@mail.gmail.com> (raw)
Hi,
I was trying to make kexec (software reset) work on an ARM platform
and I realized that the kernel launched with kexec cannot use KVM.
Looking for message I get from kernel and code the situation is this:
1- kernel start in HYP mode but then kvm code switch to SVC mode and
initialize HYP mode with its code;
2- kexec call reboot with LINUX_REBOOT_CMD_KEXEC
3- kernel call kernel_exec;
4- kernel_exec calls machine_kexec;
5- machine_kexec calls soft_restart passing physical entry point for
next in memory kernel;
6- soft_restart calls __soft_restart changing stack;
7- __soft_restart calls cpu_reset (which in my case is defined as cpu_v7_reset);
8- cpu_v7_reset just disable MMU (it's in an identity memory) and
calls next kernel entry point.
>From point 3 to 8 kernel is always in SVC mode so next kernel is
launched in SVC mode too but initial kernel was launched in HYP mode.
I used kernel 3.14 but looking at 3.19 rc code there is the same issue
(code didn't change).
Using hvc instruction you can execute arbitrary functions however
these function must be in a very restricted range as HYP code MMU has
very limited paged configured and cpu_v7_reset is not one of these
functions.
My idea to fix the issue is before calling cpu_reset call a new
kvm_exit or similar that turn into HYP mode with MMU set as SVC mode.
Is this a known issue? Should I try to fix the problem or somebody can
easily fix it?
Regards,
Frediano
next reply other threads:[~2015-01-27 15:07 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-27 15:07 Frediano Ziglio [this message]
2015-01-27 15:25 ` Kexec and KVM not working gracefully together Marc Zyngier
2015-02-05 6:17 ` AKASHI Takahiro
2015-02-05 9:43 ` Marc Zyngier
2015-02-05 10:27 ` AKASHI Takahiro
2015-02-05 10:51 ` Frediano Ziglio
2015-02-05 13:32 ` Marc Zyngier
2015-02-05 14:27 ` Frediano Ziglio
2015-02-05 16:56 ` Frediano Ziglio
2015-02-06 4:13 ` AKASHI Takahiro
2015-02-06 9:50 ` Frediano Ziglio
2015-02-06 10:56 ` AKASHI Takahiro
2015-02-06 12:14 ` Frediano Ziglio
2015-02-06 14:09 ` Marc Zyngier
2015-02-09 3:54 ` Geoff Levand
2015-02-09 15:51 ` Frediano Ziglio
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=CAHt6W4cuRi3bfj5mryFouhOLGAAWuNXKVvz4K-rAjQnwiegL-Q@mail.gmail.com \
--to=freddy77@gmail.com \
--cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).