diff options
-rw-r--r-- | Release_Notes.txt | 33 | ||||
-rw-r--r-- | docs/01-Usage.txt | 10 | ||||
-rw-r--r-- | docs/02-Code-layout.txt | 16 | ||||
-rw-r--r-- | docs/03-Linux-kernel-build.txt | 12 | ||||
-rw-r--r--[-rwxr-xr-x] | docs/07-Linux-cpu-hotplug-howto.txt | 44 |
5 files changed, 63 insertions, 52 deletions
diff --git a/Release_Notes.txt b/Release_Notes.txt index cca1528..8a82c46 100644 --- a/Release_Notes.txt +++ b/Release_Notes.txt @@ -24,7 +24,8 @@ Release notes b. License details - Copyright (c) 2009-12, ARM Limited. All rights reserved. + Copyright (c) 2009-2012, ARM Limited. All rights + reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the @@ -96,7 +97,7 @@ Release notes This release contains the following file: - 1. arm-virtualizer-v2_2-160212.tar.bz2 + 1. arm-virtualizer-v2_3-130312.tar.bz2 - Contains source code for a basic boot wrapper. @@ -169,7 +170,8 @@ Release notes 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 + 8. Support for cpu hotplug is still being subject to + stress tests. g. Issues resolved since last release @@ -188,11 +190,13 @@ Release notes trap_cp15_mrc_mcr_handle (big-little/virtualisor/virt_handle.c). A DCCISW (Data Cache clean and invalidate by set/way) operation - was being implemented as a DCCSW (Data Cache clean by set/way) + was being incorrectly implemented as a DCCSW + (Data Cache clean by set/way) operation by the Virtualizer. 2. Calculate l2_desc correctly in CreateL3PageTable - (big-little/common/pagetable_setup.c) for level equal 2. + (big-little/common/pagetable_setup.c) for level + equals 2. Correct index into Level-2 page table of the 2nd Stage translations is being calculated when CreateL3PageTable() is @@ -209,10 +213,12 @@ Release notes 4. Fix race condition during enabling CCI coherency in warm_reset (big-little/secure_world/monmode_vectors.s). - A race condition existed while enabling CCI coherency after a - warm reset in the Secure world code. This could have lead to a - case where cpus1-3 start restoring the saved context without - taking part in CCI based coherency for a brief period of time. + A race condition existed while enabling CCI + coherency after a warm reset in the Secure world + code. This could have led to a 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: @@ -236,8 +242,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. + 3. The Linux Test Project (LTP) cpu hotplug tests have + been run while cluster switching was performed + simultaneously. All tests passed. i. Other information @@ -264,6 +271,9 @@ Release notes 06-Optional-rootfs-build.txt: Instructions for building and using rootfilesystems with the virtualizer. + 07-Linux-cpu-hotplug-howto.txt: Instructions & guidelines to + use Linux CPU hotplug. + 4. Tools a. Tools @@ -286,4 +296,3 @@ Release notes constructive feedback and at it's discretion, will endeavour to incorporate any feedback in subsequent releases of this example software. - diff --git a/docs/01-Usage.txt b/docs/01-Usage.txt index ff1b689..15e4f06 100644 --- a/docs/01-Usage.txt +++ b/docs/01-Usage.txt @@ -30,15 +30,15 @@ Usage location then this must be reflected in the first line of the following file: - arm-virtualizer-v2_2-160212/bootwrapper/makemap + arm-virtualizer-v2_3-130312/bootwrapper/makemap Failure to make this modification will result in a build failure. To build the software: - $ tar -jxf arm-virtualizer-v2_2-160212.tar.bz2 - $ cd arm-virtualizer-v2_2-160212/bootwrapper + $ tar -jxf arm-virtualizer-v2_3-130312.tar.bz2 + $ cd arm-virtualizer-v2_3-130312/bootwrapper $ make clean && make The resulting file is 'img.axf'. @@ -48,12 +48,12 @@ Usage Note that the pre-built stub kernel image is located at: - arm-virtualizer-v2_2-160212/bootwrapper/payload/kernel + arm-virtualizer-v2_3-130312/bootwrapper/payload/kernel .. and the placeholder dummy root filesystem image is located at: - arm-virtualizer-v2_2-160212/bootwrapper/payload/fsimg + arm-virtualizer-v2_3-130312/bootwrapper/payload/fsimg These may be replaced with custom built images such as a suitably configured linux kernel image and a root filesystem diff --git a/docs/02-Code-layout.txt b/docs/02-Code-layout.txt index 9e49fa8..32a2a9a 100644 --- a/docs/02-Code-layout.txt +++ b/docs/02-Code-layout.txt @@ -145,8 +145,8 @@ B Code layout overview 1. Simple perl script that takes an ELF image of the Virtualizer, parses through the relevant sections & adds those sections to the scatter - file so that a consolidated image can be - created. + file so that a consolidated image can be + created. 2. big-little/common @@ -322,11 +322,11 @@ B Code layout overview 1. Contains code to handle an HVC instructions executed by the payload software: - a. to initiate a synchronous switchover. - ("HVC #1") + a. to initiate a synchronous switchover. + ("HVC #1"). - b. to find the id of the cluster on which its - currently executing. ("HVC #2") + b. to find the id of the cluster on which + its currently executing. ("HVC #2"). 3. handle_switchover.s @@ -498,8 +498,8 @@ B Code layout overview initialise the Secure world stacks, coherency, pagetables, to configure some coprocessor and memory mapped peripheral - (Coherent interconnect & shared vGIC) - registers for use of these features by + (Coherent interconnect & shared vGIC) + registers for use of these features by the Non-secure world. 2. SMC_SEC_SAVE diff --git a/docs/03-Linux-kernel-build.txt b/docs/03-Linux-kernel-build.txt index a35b5c4..9252859 100644 --- a/docs/03-Linux-kernel-build.txt +++ b/docs/03-Linux-kernel-build.txt @@ -5,8 +5,8 @@ A suitable Linux kernel image for use with the virtualizer can be built as follows (GCC toolchain used for these steps is: CodeSourcery Sourcery G++ Lite 2010.09 v4.5.1) -$ tar -jxf arm-virtualizer-v2_2-160212.tar.bz2 -$ cd arm-virtualizer-v2_2-160212/bootwrapper +$ tar -jxf arm-virtualizer-v2_3-130312.tar.bz2 +$ cd arm-virtualizer-v2_3-130312/bootwrapper $ make clean $ pushd /tmp $ git clone git://linux-arm.org/linux-2.6-lp.git linux-2.6-lp.git @@ -24,10 +24,10 @@ $ make clean && make .. in the top bootwrapper directory. This will result in a file called img.axf located at -arm-virtualizer-v2_2-160212/bootwrapper/img.axf. +arm-virtualizer-v2_3-130312/bootwrapper/img.axf. To launch the ARM FastModel with the virtualizer, first modify -arm-virtualizer-v2_2-160212/bootwrapper/big-little-MP<x>.mxscript +arm-virtualizer-v2_3-130312/bootwrapper/big-little-MP<x>.mxscript as usual to fill in paths to the model binary and the img.axf files. The mxscript file is adequately commented to assist with this. @@ -44,11 +44,11 @@ string model = "/home/working_dir/models/RTSM_VE_Cortex-A15x4-A7x4"; The path to the img.axf file is specified using the app directive as follows: -string app = "arm-virtualizer-v2_2-160212/bootwrapper/img.axf"; +string app = "arm-virtualizer-v2_3-130312/bootwrapper/img.axf"; The model can then be launched using: -modeldebugger -s arm-virtualizer-v2_2-160212/bootwrapper/big-little-MP<x>.mxscript +modeldebugger -s arm-virtualizer-v2_3-130312/bootwrapper/big-little-MP<x>.mxscript Where 'x' is the 1 or 4 respectively in the case of an MP1 model run or an MP4 model run. diff --git a/docs/07-Linux-cpu-hotplug-howto.txt b/docs/07-Linux-cpu-hotplug-howto.txt index 873a88c..90343eb 100755..100644 --- a/docs/07-Linux-cpu-hotplug-howto.txt +++ b/docs/07-Linux-cpu-hotplug-howto.txt @@ -1,43 +1,46 @@ -Instructions & Guidelines to use Linux cpu hotplug +Instructions & guidelines to use Linux CPU hotplug ================================================== A Introduction This note describes how the Virtualizer software should - be configured for use with the Linux cpu hotplug + be configured for use with the Linux CPU hotplug subsystem. It also mentions conditions that both Linux and the Virtualizer software should fulfil for cpu hotplug to work. B Guidelines - A cpu hotplug operation involves migration of all tasks - and interrupts from the cpu in question before flushing - the relevant cache level(s) and shutting down the cpu. - A cpu is shutdown by programming the relevant RST_HOLDx + A CPU hotplug operation involves migration of all tasks + and interrupts from the CPU in question before flushing + the relevant cache level(s) and shutting down the CPU. + A CPU is shutdown by programming the relevant RST_HOLDx register in the KingFisher System Control Block (KFSCB). The Virtualizer software traps accesses to the KFSCB made - by Linux to shutdown a cpu to save its HYP mode context + by Linux to shutdown a CPU to save its HYP mode context and request the Secure world to save its own context. It then proceeds with the shutdown operation as Linux originally intended. The key assumption made here is that Linux will access the KFSCB RST_HOLDx registers only - during a cpu hotplug operation. + during a CPU hotplug operation. - It is also assumed that its not possible hotplug cpu0. - Hence, Linux cpu hotplug will work only with the MPx4 - variant of the big.LITTLE FastModels. + It is also assumed that its not possible to hotplug CPU0. + Hence, Linux CPU hotplug will work only with the MPx4 + variant of the big.LITTLE FastModels. The CPU choice here + isn't prescriptive and does not imply that CPU0 should + always be the last man standing CPU in a hotplug capable + system. It was chosen for simplicity. The Virtualizer software is built to switch the payload software between clusters asynchronously. There is a - possibility of unpredictable behaviour happenning if a - cluster switch is initiated when a cpu hotplug operation + possibility of unpredictable behaviour happening if a + cluster switch is initiated when a CPU hotplug operation is in progress. Hence the following two conditions need to be met to be able to use the Virtualizer software in - conjunction with Linux cpu hotplug: + conjunction with Linux CPU hotplug: - 1. The Virtualizer software should be built to support + 1. The Virtualizer software must be built to support synchronous switching by setting the ASYNC environment variable to FALSE prior to building it. For example with the tcsh shell: @@ -45,7 +48,7 @@ B Guidelines setenv ASYNC FALSE; make 2. Linux should invoke a cluster switch explicitly - after ensuring that no cpu hotplug operation is in + after ensuring that no CPU hotplug operation is in progress and vice versa. It can invoke a cluster switch by using the "HVC #1" assembler instruction from the relevant code. @@ -54,7 +57,7 @@ C Instructions 1. Build a linux kernel as per the steps listed in "docs/03-Linux-kernel-build.txt". - The configuration includes support for cpu + The configuration includes support for CPU hotplug by default. 2. Use an existing root filesystem or build a new @@ -71,12 +74,11 @@ C Instructions 4. Boot the resulting "bootwrapper/img.axf" file using the "bootwrapper/big-little-mp4.mxscript" file. At the command prompt, the Linux cpu - hotplug commands to hotplug cpus should work - as expected. For example, to hotplug cpu1 do: + hotplug commands to hotplug CPUs should work + as expected. For example, to hotplug CPU1 do: echo 0 > /sys/devices/system/cpu/cpu1/online - To bring cpu1 online do: + To bring CPU1 online do: echo 1 > /sys/devices/system/cpu/cpu1/online - |