From: Qais Yousef <email@example.com> To: Catalin Marinas <firstname.lastname@example.org>, Will Deacon <email@example.com>, Marc Zyngier <firstname.lastname@example.org>, "Peter Zijlstra (Intel)" <email@example.com> Cc: Morten Rasmussen <firstname.lastname@example.org>, Greg Kroah-Hartman <email@example.com>, Linus Torvalds <firstname.lastname@example.org>, email@example.com, firstname.lastname@example.org, Qais Yousef <email@example.com> Subject: [RFC PATCH 0/3] Add support for Asymmetric AArch32 systems Date: Thu, 8 Oct 2020 19:16:38 +0100 [thread overview] Message-ID: <firstname.lastname@example.org> (raw) This RFC series enables AArch32 EL0 support on systems where only a subset of CPUs implement it. AArch32 feature asymmetry comes with downsides, but it is likely that some vendors are willing to accept those to maintain AArch32 EL0 support on systems where some cores are AArch64 only. Enabling AArch32 when it isn't supported on all CPUs inevitably requires careful affinity management of AArch32 tasks. The bare minimum kernel support is offered by the second patch which put the burden of managing task affinity entirely on user-space. AAarch32 tasks receive SIGKILL if they try to run on a non-AArch32 CPU. The third patch is optional and overrides task affinity in some cases to prevent AArch32 tasks getting SIGKILL. We don't expose the asymmetry to userspace. If we want to delegate affinity management to user space we need to introduce a way to do that. /sys/devices/system/cpu/cpu*/regs/identification/midr_el1 contains the specific CPU ID. This could be extended to expose the other ID_* registers where the AArch32 feature can be detected. If the user hotplugs all 32bit capable CPUs, then all running 32bit tasks will be SIGKILLed if scheduled. Patch 1 ensures KVM handles such systems properly. Especially if the guest is misbehaving and tries to force run aarch32 regardless of what ID registers advertise. Patch 2 introduces basic asymetric aarch32 support. It will SIGKILL any task as soon as it scheduled on the wrong CPU even if its affinity allows it to migrate to a capable CPU. Patch 3 suggests how handling the affinity problem could be done in the kernel. It's not a generic solution, rather a demonstration of what could potentially be done. Qais Yousef (3): arm64: kvm: Handle Asymmetric AArch32 systems arm64: Add support for asymmetric AArch32 EL0 configurations arm64: Handle AArch32 tasks running on non AArch32 cpu arch/arm64/Kconfig | 14 +++++ arch/arm64/include/asm/cpu.h | 2 + arch/arm64/include/asm/cpucaps.h | 3 +- arch/arm64/include/asm/cpufeature.h | 22 +++++++- arch/arm64/include/asm/thread_info.h | 5 +- arch/arm64/kernel/cpufeature.c | 77 ++++++++++++++++++---------- arch/arm64/kernel/cpuinfo.c | 71 +++++++++++++++---------- arch/arm64/kernel/process.c | 17 ++++++ arch/arm64/kernel/signal.c | 33 ++++++++++++ arch/arm64/kvm/arm.c | 17 ++++++ arch/arm64/kvm/guest.c | 2 +- arch/arm64/kvm/sys_regs.c | 14 ++++- 12 files changed, 218 insertions(+), 59 deletions(-) -- 2.17.1
next reply other threads:[~2020-10-08 18:16 UTC|newest] Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-10-08 18:16 Qais Yousef [this message] 2020-10-08 18:16 ` [RFC PATCH 1/3] arm64: kvm: Handle " Qais Yousef 2020-10-09 8:12 ` Marc Zyngier 2020-10-09 9:58 ` Qais Yousef 2020-10-09 12:34 ` Marc Zyngier 2020-10-09 12:48 ` Qais Yousef 2020-10-12 15:32 ` James Morse 2020-10-13 10:32 ` Marc Zyngier 2020-10-13 11:51 ` James Morse 2020-10-13 11:59 ` Qais Yousef 2020-10-13 12:09 ` Marc Zyngier 2020-10-13 12:16 ` Qais Yousef 2020-10-08 18:16 ` [RFC PATCH 2/3] arm64: Add support for asymmetric AArch32 EL0 configurations Qais Yousef 2020-10-08 18:22 ` Randy Dunlap 2020-10-12 10:22 ` Qais Yousef 2020-10-09 6:13 ` Greg Kroah-Hartman 2020-10-09 8:40 ` Will Deacon 2020-10-09 8:50 ` Catalin Marinas 2020-10-09 9:39 ` Catalin Marinas 2020-10-12 12:46 ` Qais Yousef 2020-10-08 18:16 ` [RFC PATCH 3/3] arm64: Handle AArch32 tasks running on non AArch32 cpu Qais Yousef 2020-10-09 7:29 ` Peter Zijlstra 2020-10-09 8:13 ` Morten Rasmussen 2020-10-09 8:31 ` Will Deacon 2020-10-09 8:50 ` Morten Rasmussen 2020-10-09 9:33 ` Catalin Marinas 2020-10-09 9:42 ` Greg Kroah-Hartman 2020-10-09 11:31 ` Qais Yousef 2020-10-09 12:40 ` Catalin Marinas 2020-10-13 14:23 ` Qais Yousef 2020-10-09 9:25 ` Peter Zijlstra 2020-10-09 9:39 ` Qais Yousef 2020-10-09 9:51 ` Catalin Marinas
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 \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: [RFC PATCH 0/3] Add support for Asymmetric AArch32 systems' \ /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
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).