From: Wei Chen <wei.chen@arm.com>
To: <xen-devel@lists.xenproject.org>
Cc: <nd@arm.com>, Wei Chen <wei.chen@arm.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Julien Grall <julien@xen.org>,
Bertrand Marquis <bertrand.marquis@arm.com>,
Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v6 00/11] xen/arm: Add Armv8-R64 MPU support to Xen - Part#1
Date: Fri, 4 Nov 2022 18:07:30 +0800 [thread overview]
Message-ID: <20221104100741.2176307-1-wei.chen@arm.com> (raw)
The Armv-R architecture profile was designed to support use cases
that have a high sensitivity to deterministic execution. (e.g.
Fuel Injection, Brake control, Drive trains, Motor control etc)
Arm announced Armv8-R in 2013, it is the latest generation Arm
architecture targeted at the Real-time profile. It introduces
virtualization at the highest security level while retaining the
Protected Memory System Architecture (PMSA) based on a Memory
Protection Unit (MPU). In 2020, Arm announced Cortex-R82,
which is the first Arm 64-bit Cortex-R processor based on Armv8-R64.
The latest Armv8-R64 document can be found [1]. And the features of
Armv8-R64 architecture:
- An exception model that is compatible with the Armv8-A model
- Virtualization with support for guest operating systems
- PMSA virtualization using MPUs In EL2.
- Adds support for the 64-bit A64 instruction set.
- Supports up to 48-bit physical addressing.
- Supports three Exception Levels (ELs)
- Secure EL2 - The Highest Privilege
- Secure EL1 - RichOS (MMU) or RTOS (MPU)
- Secure EL0 - Application Workloads
- Supports only a single Security state - Secure.
- MPU in EL1 & EL2 is configurable, MMU in EL1 is configurable.
These patch series are implementing the Armv8-R64 MPU support
for Xen, which are based on the discussion of
"Proposal for Porting Xen to Armv8-R64 - DraftC" [1].
We will implement the Armv8-R64 and MPU support in three stages:
1. Boot Xen itself to idle thread, do not create any guests on it.
2. Support to boot MPU and MMU domains on Armv8-R64 Xen.
3. SMP and other advanced features of Xen support on Armv8-R64.
We will split these patches to several parts, this series is the
part#1, the full PoC can be found in [3]. More software for
Armv8-R64 can be found in [4];
[1] https://developer.arm.com/documentation/ddi0600/latest
[2] https://lists.xenproject.org/archives/html/xen-devel/2022-05/msg00643.html
[3] https://gitlab.com/xen-project/people/bmarquis/xen-arm-poc/-/tree/poc/r82-mpu-v2
[4] https://armv8r64-refstack.docs.arm.com/en/v4.0/
Penny Zheng (3):
xen/arm64: create boot-time MPU protection regions
xen/arm64: introduce helpers for MPU enable/disable
xen/arm64: add setup_fixmap and remove_identity_mapping for MPU
Wei Chen (8):
xen/arm: remove xen_phys_start and xenheap_phys_end from config.h
xen/arm: add iounmap after initrd has been loaded in domain_build
xen/arm: disable EFI boot services for MPU systems
xen/arm: adjust Xen TLB helpers for Armv8-R64 PMSA
xen/arm: define Xen start address for FVP BaseR platform
xen/arm: split MMU and MPU config files from config.h
xen/arm: implement FIXMAP_ADDR for MPU systems
xen/arm64: move MMU related code from head.S to head_mmu.S
xen/arch/arm/Kconfig | 15 +-
xen/arch/arm/arm64/Makefile | 5 +
xen/arch/arm/arm64/head.S | 429 ++----------------
xen/arch/arm/arm64/head_mmu.S | 364 +++++++++++++++
xen/arch/arm/arm64/head_mpu.S | 154 +++++++
xen/arch/arm/domain_build.c | 2 +
xen/arch/arm/include/asm/arm64/flushtlb.h | 25 +
xen/arch/arm/include/asm/arm64/macros.h | 52 ++-
xen/arch/arm/include/asm/arm64/mpu.h | 13 +
xen/arch/arm/include/asm/arm64/sysregs.h | 89 ++++
xen/arch/arm/include/asm/config.h | 99 +---
xen/arch/arm/include/asm/config_mmu.h | 119 +++++
xen/arch/arm/include/asm/config_mpu.h | 29 ++
xen/arch/arm/include/asm/fixmap.h | 25 +
xen/arch/arm/include/asm/flushtlb.h | 22 +
.../arm/include/asm/platforms/fvp_baser.h | 18 +
xen/arch/arm/platforms/Kconfig | 16 +-
17 files changed, 976 insertions(+), 500 deletions(-)
create mode 100644 xen/arch/arm/arm64/head_mmu.S
create mode 100644 xen/arch/arm/arm64/head_mpu.S
create mode 100644 xen/arch/arm/include/asm/arm64/mpu.h
create mode 100644 xen/arch/arm/include/asm/config_mmu.h
create mode 100644 xen/arch/arm/include/asm/config_mpu.h
create mode 100644 xen/arch/arm/include/asm/platforms/fvp_baser.h
--
2.25.1
next reply other threads:[~2022-11-04 10:08 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-04 10:07 Wei Chen [this message]
2022-11-04 10:07 ` [PATCH v6 01/11] xen/arm: remove xen_phys_start and xenheap_phys_end from config.h Wei Chen
2022-11-06 18:42 ` Julien Grall
2022-11-04 10:07 ` [PATCH v6 02/11] xen/arm: add iounmap after initrd has been loaded in domain_build Wei Chen
2022-11-06 18:55 ` Julien Grall
2022-11-07 1:33 ` Henry Wang
2022-11-07 9:09 ` Julien Grall
2022-11-07 9:11 ` Henry Wang
2022-11-07 19:00 ` Julien Grall
2022-11-08 2:14 ` Wei Chen
2022-11-08 2:24 ` Wei Chen
2022-11-04 10:07 ` [PATCH v6 03/11] xen/arm: disable EFI boot services for MPU systems Wei Chen
2022-11-06 19:12 ` Julien Grall
2022-11-06 19:13 ` Julien Grall
2022-11-08 3:02 ` Wei Chen
2022-11-15 8:21 ` Wei Chen
2022-11-04 10:07 ` [PATCH v6 04/11] xen/arm: adjust Xen TLB helpers for Armv8-R64 PMSA Wei Chen
2022-11-04 10:07 ` [PATCH v6 05/11] xen/arm: define Xen start address for FVP BaseR platform Wei Chen
2022-11-06 19:19 ` Julien Grall
2022-11-09 4:55 ` Wei Chen
2022-11-09 18:24 ` Julien Grall
2022-11-10 22:12 ` Stefano Stabellini
2022-11-11 10:13 ` Wei Chen
2022-11-11 20:15 ` Stefano Stabellini
2022-12-05 10:17 ` Wei Chen
2022-12-05 11:02 ` Julien Grall
2022-11-14 18:52 ` Ayan Kumar Halder
2022-11-15 5:42 ` Wei Chen
2022-11-04 10:07 ` [PATCH v6 06/11] xen/arm: split MMU and MPU config files from config.h Wei Chen
2022-11-04 10:07 ` [PATCH v6 07/11] xen/arm: implement FIXMAP_ADDR for MPU systems Wei Chen
2022-11-06 19:44 ` Julien Grall
2022-11-09 6:46 ` Wei Chen
2022-11-09 18:30 ` Julien Grall
2022-11-11 7:56 ` Wei Chen
2022-11-11 9:40 ` Julien Grall
2022-11-04 10:07 ` [PATCH v6 08/11] xen/arm64: move MMU related code from head.S to head_mmu.S Wei Chen
2022-11-06 20:06 ` Julien Grall
2022-11-07 9:34 ` Julien Grall
2022-11-09 7:36 ` Wei Chen
2022-11-09 18:33 ` Julien Grall
2022-11-13 21:42 ` Julien Grall
2022-11-14 5:36 ` Wei Chen
2022-11-04 10:07 ` [PATCH v6 09/11] xen/arm64: create boot-time MPU protection regions Wei Chen
2022-11-06 20:46 ` Julien Grall
2022-11-07 6:59 ` Penny Zheng
2022-11-07 9:29 ` Julien Grall
2022-11-07 10:17 ` Penny Zheng
2022-11-04 10:07 ` [PATCH v6 10/11] xen/arm64: introduce helpers for MPU enable/disable Wei Chen
2022-11-06 20:56 ` Julien Grall
2022-11-07 9:57 ` Penny Zheng
2022-11-07 10:38 ` Julien Grall
2022-11-08 3:01 ` Penny Zheng
2022-11-04 10:07 ` [PATCH v6 11/11] xen/arm64: add setup_fixmap and remove_identity_mapping for MPU Wei Chen
2022-11-06 21:02 ` Julien Grall
2022-11-07 8:13 ` Penny Zheng
2022-11-07 9:32 ` Julien Grall
2022-11-04 10:29 ` [PATCH v6 00/11] xen/arm: Add Armv8-R64 MPU support to Xen - Part#1 Wei Chen
2022-11-06 19:02 ` Julien Grall
2022-11-07 9:52 ` Wei Chen
2022-11-07 10:16 ` Julien Grall
2022-11-07 10:30 ` Wei Chen
2022-11-10 22:25 ` Stefano Stabellini
2022-11-11 10:41 ` Wei Chen
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=20221104100741.2176307-1-wei.chen@arm.com \
--to=wei.chen@arm.com \
--cc=Volodymyr_Babchuk@epam.com \
--cc=bertrand.marquis@arm.com \
--cc=julien@xen.org \
--cc=nd@arm.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.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.