From bfa9feb452371a3627399a9c40f4521732d143e6 Mon Sep 17 00:00:00 2001 From: Dietmar Eggemann Date: Mon, 12 Mar 2012 17:48:04 +0000 Subject: Update release notes and docs subdirectory to v2.3. Signed-off-by: Dietmar Eggemann --- Release_Notes.txt | 53 ++++++++++++++++++++++++++++++++++++++---- docs/01-Usage.txt | 11 +++++++++ docs/02-Code-layout.txt | 25 ++++++++++++++++---- docs/03-Linux-kernel-build.txt | 8 +++---- 4 files changed, 83 insertions(+), 14 deletions(-) diff --git a/Release_Notes.txt b/Release_Notes.txt index 3c48778..5e87ac9 100644 --- a/Release_Notes.txt +++ b/Release_Notes.txt @@ -52,7 +52,7 @@ Release notes d. Product status - ARM Virtualizer for Cortex-A15/Cortex-A7 Task Migration v2.2 + ARM Virtualizer for Cortex-A15/Cortex-A7 Task Migration v2.3 e. Web address @@ -70,11 +70,11 @@ Release notes a. Product release status - v2.2 + v2.3 - b. ARM Virtualizer software release v2.2 + b. ARM Virtualizer software release v2.3 - This software release is a v2.2 snapshot of the ARM + This software release is a v2.3 snapshot of the ARM Virtualizer software. The ARM Virtualizer software is example code that demonstrates @@ -128,7 +128,27 @@ Release notes e. New features - Release v2.2 is a bug fix only release. + 1. It is possible to hotplug a cpu using the mechanisms provided + by the Linux 3.x cpu hotplug implementation e.g. + + To offline cpu1: + echo 0 > /sys/devices/system/cpu/cpu1/online + + To bring cpu1 online: + echo 1 > /sys/devices/system/cpu/cpu1/online + + This feature is supported only when the Virtualizer software + has been built to support synchronous switching. It is not + possible to hotplug cpu0. + + 2. Context of the registers specified by the v7.1 Debug architecture + is saved and restored during a cluster context switch operation. + + 3. Use of inter-processor interrupts for HYP mode communication has + been made generic. It is possible to use an IPI for a particular + type of HYP mode operation. Requesting a cluster switch and + completing a virtual irq migration operation are the two types of + HYP mode operations that are currently supported. f. Known issues @@ -147,6 +167,17 @@ Release notes Cortex-A7 and Cortex-A15 are not hidden through the use of Virtualization extensions by the Virtualizer. + 5. Save & Restore of Debug context is done only when the memory mapped + interface is supported. Doing the same using the cp14 interface is + currently not supported. + + 6. Save & Restore of Debug context is still being tested. + + 7. Bug fix to support migration of virtual interrupts is still being + tested. [Please see 'v2.2 to v2.3' in Section g.] + + 8. Support for cpu hotplug is still being subject to stress tests + g. Issues resolved since last release 1. Bug fixes @@ -190,6 +221,15 @@ Release notes case where cpus1-3 start restoring the saved context without taking part in CCI based coherency for a brief period of time. + v2.2 to v2.3: + + 1. When a physical interrupt is migrated from one cpu interface to + another on any cluster, it is possible that its virtual interrupt + is in a pending state in the HYP view interface list registers. + It is now ensured that the virtual interrupt is also migrated by + requesting it to be added to the queue of virtual interrupts on + the destination cpu interface. + h. Test cases and results In accordance with the delivery’s status as example code, testing is @@ -203,6 +243,9 @@ Release notes 2. This release has been tested using a select subset of an ARM internal Linux based stress testing suite. + 3. The Linux Test Project (LTP) cpu hotplug tests have been run while + cluster switching was performed simultaneously. All tests passed. + i. Other information Not applicable. diff --git a/docs/01-Usage.txt b/docs/01-Usage.txt index 39d3b7f..ff1b689 100644 --- a/docs/01-Usage.txt +++ b/docs/01-Usage.txt @@ -59,6 +59,17 @@ Usage suitably configured linux kernel image and a root filesystem image. + The Virtualizer software image supports asynchronous switching + by default. This means that an interrupt causes a cluster + switch approx. every 12 million cycles. The payload software + can request the Virtualizer software to invoke a switch + explicitly. This can be done using the "HVC #1" ARM assembler + instruction from the payload software. This is the synchronous + method of switching. The two methods are mutually exclusive. + The Virtualizer software can be built with support for + synchronous switching by setting the ASYNC environment variable + to FALSE prior to building it. + Look at docs/03-Linux-kernel-build.txt for instructions on building a suitable Linux kernel. diff --git a/docs/02-Code-layout.txt b/docs/02-Code-layout.txt index ba1690e..9e49fa8 100644 --- a/docs/02-Code-layout.txt +++ b/docs/02-Code-layout.txt @@ -251,6 +251,8 @@ B Code layout overview 5. Cache maintenance, Stack manipulation and Locking routines. + 6. Use of IPIs for HYP mode communication. + 4. big-little/include 1. This directory contains the headers specific to HYP @@ -272,11 +274,18 @@ B Code layout overview 1. Contains top level routines to save and restore the Non-secure world context. - 2. It requests the secure world to save its own - context and bring the inbound cluster out of - reset. It also uses events to synchronise - the switching process between the inbound - and outbound clusters. + 2. If the type of operation is a cluster + switch it requests the secure world to save + its own context and bring the inbound + cluster out of reset. It also uses events to + synchronise the switching process between + the inbound and outbound clusters. + + 3. If the type of operation is a cpu hotplug + it requests the secure world to save + its own context and then saves only the + relevant HYP mode context before placing the + cpu in reset. 2. gic.c @@ -441,6 +450,12 @@ B Code layout overview 1. Generic function that handles trapped accesses to the shared vGIC. + 7. kfscb_trap_handler.c + + 1. Generic function that handles trapped accesses + to the Kingfisher System Control Block. This is + usually done to start a cpu hotplug operation. + 7. include/ Header files specific to the Virtualisor code. diff --git a/docs/03-Linux-kernel-build.txt b/docs/03-Linux-kernel-build.txt index 876cce3..a35b5c4 100644 --- a/docs/03-Linux-kernel-build.txt +++ b/docs/03-Linux-kernel-build.txt @@ -9,10 +9,10 @@ $ tar -jxf arm-virtualizer-v2_2-160212.tar.bz2 $ cd arm-virtualizer-v2_2-160212/bootwrapper $ make clean $ pushd /tmp -$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git arm-platforms.git -$ cd arm-platforms.git -$ git checkout -b ael-11.06 origin/ael-11.06 -$ yes | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress-new_defconfig +$ git clone git://linux-arm.org/linux-2.6-lp.git linux-2.6-lp.git +$ cd linux-2.6-lp.git +$ git checkout -b a15-hotplug origin/a15-hotplug +$ yes | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_a15_virt_defconfig $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 $ popd $ cp $OLDPWD/arch/arm/boot/Image payload/kernel -- cgit v1.2.3