[RCAR] Enable Linux-based hypervisor execution in AGL 69/17669/2
authorRonan Le Martret <ronan.lemartret@iot.bzh>
Tue, 28 Aug 2018 06:52:13 +0000 (06:52 +0000)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tue, 13 Nov 2018 13:57:43 +0000 (13:57 +0000)
The upstream version of AGL boots Linux in EL1. This mode is not
privileged enough to put in place the correct configuration of
an hypervisor (e.g., KVM).

This patch leverages the ATF rcar platform configuration variables to
boot the Linux kernel in EL2, instead of EL1, allowing Linux-based
hypervisors such as KVM to configure all the necessary stubs to
properly run virtual machines.

This patch has been successfully tested with ATF, KVM and AGL rootfs
on the Renesas R-Car M3.

Changelog:
- Added arm-trusted-firmware patch, which makes this work easy
  to be tested by the community
- This patch version does not contain Linux kernel modifications.
  In fact, these resulted not necessary with the proposed ATF patch
  and a recent kernel (higher than 4.6)

Bug-AGL: SPEC-497
Bug-AGL: SPEC-1571
Signed-off-by: Michele Paolino <m.paolino@virtualopensystems.com>
Signed-off-by: Ronan Le Martret <ronan.lemartret@iot.bzh>
Change-Id: I8d20e36a09be1dba35b10193643ea00e4f388e95
Signed-off-by: Ronan Le Martret <ronan.lemartret@iot.bzh>
meta-agl-bsp/meta-rcar-gen3/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_git.bbappend [new file with mode: 0644]
meta-agl-bsp/meta-rcar-gen3/recipes-bsp/arm-trusted-firmware/files/0001-Boot-Normal-World-in-EL2.patch [new file with mode: 0644]

diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_git.bbappend b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_git.bbappend
new file mode 100644 (file)
index 0000000..cdfb3cb
--- /dev/null
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+SRC_URI_append = " \
+    file://0001-Boot-Normal-World-in-EL2.patch \
+"
diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/arm-trusted-firmware/files/0001-Boot-Normal-World-in-EL2.patch b/meta-agl-bsp/meta-rcar-gen3/recipes-bsp/arm-trusted-firmware/files/0001-Boot-Normal-World-in-EL2.patch
new file mode 100644 (file)
index 0000000..6ce9c0f
--- /dev/null
@@ -0,0 +1,28 @@
+From c97f38b09f8b7d9c57a6e6f500c6ba8f7abd9914 Mon Sep 17 00:00:00 2001
+From: Michele Paolino <m.paolino@virtualopensystems.com>
+Date: Fri, 19 May 2017 14:50:55 +0200
+Subject: [PATCH] Boot Normal World in EL2
+
+This patch configures ATF (SPSR register) to boot BL33 in EL2.
+
+Signed-off-by: Michele Paolino <m.paolino@virtualopensystems.com>
+---
+ plat/renesas/rcar/platform.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plat/renesas/rcar/platform.mk b/plat/renesas/rcar/platform.mk
+index ef7bf0f..06bc592 100644
+--- a/plat/renesas/rcar/platform.mk
++++ b/plat/renesas/rcar/platform.mk
+@@ -186,7 +186,7 @@ $(eval $(call add_define,RCAR_DRAM_SPLIT))
+ # Process RCAR_BL33_EXECUTION_EL flag
+ ifndef RCAR_BL33_EXECUTION_EL
+-RCAR_BL33_EXECUTION_EL := 0
++RCAR_BL33_EXECUTION_EL := 1
+ endif
+ $(eval $(call add_define,RCAR_BL33_EXECUTION_EL))
+-- 
+2.7.4
+