[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v6 00/11] xen/arm: Add Armv8-R64 MPU support to Xen - Part#1


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Wei Chen <wei.chen@xxxxxxx>
  • Date: Fri, 4 Nov 2022 18:07:30 +0800
  • Arc-authentication-results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com])
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none
  • Arc-message-signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=f3/EW3sqniXruvG4u4S9qwToDsD3nZPuOvy+sp1yapw=; b=h9A3raMbZ2FdwDRWpOCX4I3r/8oP/umeW/1P8q7SA6rhPUwv+fidKHKf9hWXHJxFe+yVo5HMfQvYDyvnQpoT1ENIg41W+aICJKim6ViwTJK5sMd2iUczJO178RWGtE2bidLBx92hD1oaoXUVW4MgFu/jR5U76dPxlfUHDCCpe8y6AIRAL2IIH8pi3dVuGA8ZSZwkg6bfKav1nRZ/MoMsIvfB355JDZVtkGcEVY4Qb7bqmMFJxiK46iuxA8yogEI+n71K2cDFSE4FzTXnbBcazUEGicQ/zAFDv7fuY/aV10S7hNM6fmy5YfIRFu3QPlyOIs2385tsNhmXwAOT8+l3cg==
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=f3/EW3sqniXruvG4u4S9qwToDsD3nZPuOvy+sp1yapw=; b=GjH84YH4XoZ7DYGu9Qw/8PMiCPiqMVS3oITLzvq3mx1EAlt7geI4oNEA8CkI45E/jjnylL85QNOJcd3IuxH5h7umV1e9cegbs0ecvlL0Ej4u7UyQi2B1lfw23gJ+npd6ErgQh4AEzXd5LhFqkDrKCDa6tEor7XrUNV8smPG05HKZNue5iuxrd+bR6VVoQb03qcbyoCAzbuI08x14X+9mguRqnkKnyE8u4gZ0IvLQjWAAtZa2Fz/ayI9s48/dLmBAzBERbXIfv21m8bc2bo5nUVBNOeJCJgRJ7bwxQpwJsZdhysxsVp8Mfa2wKcV67/4vQeGt1evXBdnjwtinCq8MzA==
  • Arc-seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Vz/C8dLkKThIRElyaEJBWmdwRjzpTF3tTSI6dSMJgV9MbHMZqIJ72sWv3Ny+6RDri7mNtyjItTds6W8wLpw/vP+bASvytnCkfjMHl8guMgXx/vQ8QKujQV0aggEf7WIAnWh1TAHk5VP1NEl1ZEtxfftP0W1CURgIlaQxIaGef58diraHtWGwZlAimRcTrr3tyV/J+L1WdnqhR1AwY6wbAOVvbYJF3pYTBI0oFqib4o9P3APlgE0WGuPUMqWfPhl2k/IGj5H1xt+o6rlPgfrcgNvTToj70h5a+HsP6v87gy+ZQgWueYh6FXr7LSYADn+PemqM9CwlzTk13t7/vkHfag==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SmQzWu7zKl2yaT1rL+LKWL3AKwM+vyPrrzEGdzRJk3ZuMK41GlFIKtwgUss/tj7f64xC9AD8p1wzjmfUUbEQcbgwHSJLLjRxMUTLLnEGZ0EEJ6V0vwGNhQyglW0UxHQQanLj9PvrDw1mBsRk5pxNFRqvzKR1kpRWGQSVd1vGk/xL3IapOASA08WRIcOlF95cf3a/6wbPBNubgLf9ge+6bIPGKddbNDjNXaQS5o6Y6oWOipXNxZaMqxfDxbfnpjXX7NxTnNSlEBgDn52KomiyFdIfd+VRdTG0v6g+/Qf/WJJsM+baaiwywvffzFGlQTw63n3A2Kf2osWFuRWQtQczKw==
  • Cc: <nd@xxxxxxx>, Wei Chen <wei.chen@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Fri, 04 Nov 2022 10:08:29 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true

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




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.