summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Harkin <ryan.harkin@linaro.org>2014-09-24 09:56:46 +0100
committerRyan Harkin <ryan.harkin@linaro.org>2014-09-24 09:56:46 +0100
commit55e6d03b60c391fc87a2a6060606bce52c4bd3df (patch)
tree272eb08b1e909eb794d3e9327224063058767f93
parentdb8d14c5a03b9f6320c202a839ace1619bfa0387 (diff)
14.09: add IPA info
Change-Id: I335369505402b09a0f29a16c70b4d70d3e4e5c32 Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
-rw-r--r--members/arm/android/images/armv8-android-juno-lsk/HOWTO_install.txt31
-rw-r--r--members/arm/android/images/armv8-android-juno-lsk/HOWTO_releasenotes.txt57
2 files changed, 88 insertions, 0 deletions
diff --git a/members/arm/android/images/armv8-android-juno-lsk/HOWTO_install.txt b/members/arm/android/images/armv8-android-juno-lsk/HOWTO_install.txt
index 30b27b0..5dfed5c 100644
--- a/members/arm/android/images/armv8-android-juno-lsk/HOWTO_install.txt
+++ b/members/arm/android/images/armv8-android-juno-lsk/HOWTO_install.txt
@@ -395,3 +395,34 @@ The board will load the default configuration and boot up.
h2. Attaching ADB
ADB on Juno is supported over ethernet. Follow the instructions on "https://wiki.linaro.org/Platform/Android/SetupAdbOverTcp":https://wiki.linaro.org/Platform/Android/SetupAdbOverTcp to connect adb over the network.
+
+
+h2. Intelligent Power Allocation (IPA)
+
+Installing IPA into your Linaro release comprises of 2 main components: firmware and Android binaries. First you should update the firmware on your Juno board to version 0.8.2, then you should copy the boot and system files over to your 14.09 disk image.
+
+Following the instructions in the "Firmware update":https://releases.linaro.org/14.09/members/arm/android/images/armv8-android-juno-lsk#firmware section on this page, only replacing the recommended firmware with the version contained inside board_recovery_image_0.8.2.zip included in the "ipa-overlay-14.09.tar.bz2":link.
+
+Please note: the 0.8.2 firmware is only compatible with IPA kernels such as the ones contained in the IPA overlay archive. It will not work with the 14.09 release kernel or older versions. For non-IPA kernels, use firmware version 0.8.1.
+
+Create a disk image in the usual way described by the "Binary Image Installation tab":https://releases.linaro.org/14.09/members/arm/android/images/armv8-android-juno-lsk#tabs-2 in these release notes, then insert the disk into your host machine and type the following commands on the host machine:
+
+cd <your working directory>
+tar xvf <path-to>/ipa-overlay-14.09.tar.bz2
+cd ipa-overlay-14.09
+
+mkdir -p mnt/boot
+sudo mount /dev/disk/by-label/boot mnt/boot
+sudo cp -R boot mnt
+sudo umount mnt/boot
+
+mkdir -p mnt/system
+sudo mount /dev/disk/by-label/system mnt/system
+sudo cp -R system mnt
+sudo umount mnt/system
+
+Then safely eject the USB disk from your system and insert it into the Juno board. Follow the instructions to reconfigure UEFI as shown in the "Binary Image Installation tab":https://releases.linaro.org/14.09/members/arm/android/images/armv8-android-juno-lsk#tabs-2 and boot the image as per a normal Juno disk image.
+
+If you are booting the correct kernel, you should see the following message in your boot log:
+
+[ 0.000000] Linux version 3.10.52 (tixy@linaro1) (gcc version 4.9.2 20140811 (prerelease) (Linaro GCC 4.9-2014.08) ) #1 SMP Tue Sep 23 17:48:12 BST 2014
diff --git a/members/arm/android/images/armv8-android-juno-lsk/HOWTO_releasenotes.txt b/members/arm/android/images/armv8-android-juno-lsk/HOWTO_releasenotes.txt
index 49233e2..96471f4 100644
--- a/members/arm/android/images/armv8-android-juno-lsk/HOWTO_releasenotes.txt
+++ b/members/arm/android/images/armv8-android-juno-lsk/HOWTO_releasenotes.txt
@@ -16,6 +16,63 @@ The Android AOSP software provided in this release is functionally tested with C
The Linaro Android releases for Juno appear monthly. Sources are also made available so you can build your own images (see the "Building from Source tab":https://releases.linaro.org/14.08/members/arm/android/images/armv8-android-juno-lsk/#tabs-3). 
+h3. Intelligent Power Allocation (IPA)
+
+Intelligent Power Allocation (IPA) is a thermal governor that uses a PID (Proportional Integral Derivative) controller to control temperature.
+Based on the delta from the target temperature, the governor estimates the available power budget. This budget is intelligently allocated among the active actors (CPU cluster, GPUs, etc.) in the system to maximize performance while maintaining temperature control. The governor relies on actor power models which translate performance into power consumption and vice versa.
+
+This kernel contains the set of patches that introduce the power allocator governor, the power actor interface along with an implementation of a simple power model for the CPU cluster actors. The governor and the actor interfaces are used to create a platform thermal management solution for ARM Juno 64-bit Development Platform.
+
+This is a demonstration release highlighting the concept and implementation of IPA along with a sample platform integration. The code will continue to evolve based on discussions on the upstream mailing lists as well as partner feedback.
+
+h4. Kernel Documentation
+
+"power_allocator.txt" and "power_actor.txt" in the Documentation/thermal folder provide further details about the power allocator and the power actor interface respectively.
+
+h4. Upstream
+
+ARM is working with thermal subsystem maintainers for the inclusion of the power allocator governor and the associated components in mainline Linux since Q2'14. A number of RFCs have been posted to linux-pm mailing list as a result of this effort. The initial RFC describing the concept can be found at -
+
+"http://article.gmane.org/gmane.linux.power-management.general/43243":http://article.gmane.org/gmane.linux.power-management.general/43243
+
+The latest (v5) posting and discussions can be found at -
+
+"http://thread.gmane.org/gmane.linux.power-management.general/47189":http://thread.gmane.org/gmane.linux.power-management.general/47189
+
+h4. Installing IPA binaries into your 14.09 image
+
+The IPA section in the "Binary Image Installation tab":https://releases.linaro.org/14.09/members/arm/android/images/armv8-android-juno-lsk#tabs-2 contains instructions on how to overlay a set of IPA binaries onto an existing Linaro Android image for Juno.
+
+h4. Enabling IPA in your kernel build
+
+To enable IPA, make sure the following config options are turned on in the kernel build -
+
+CONFIG_THERMAL_GOV_POWER_ALLOCATOR # Enables power allocator governor
+CONFIG_THERMAL_POWER_ACTOR # Enables the power actor interface
+CONFIG_THERMAL_POWER_ACTOR_CPU # Enables CPU actor implementation
+CONFIG_SCPI_THERMAL # Enables the Juno Platform thermal integration
+
+CONFIG_DEVFREQ_THERMAL # Enables thermal management for devfreq devices (used by Mali Thermal driver)
+CONFIG_MALI_DEVFREQ # Enabled devfreq for Mali
+CONFIG_MALI_POWER_ACTOR # Enabled GPU actor implementation
+
+h4. Code
+
+The IPA kernel code can be found in the drivers/thermal folder. The following files contain the bulk of the implementation -
+
+* power_allocator.c
+* power_actor.c
+* cpu_actor.c
+* scpi-thermal.c
+
+The GPU IPA kernel code is located with the Mali GPU driver in the drivers/gpu/arm/midgard/ folder. The important files are:
+
+* mali_kbase_devfreq.c
+* mali_kbase_power_actor.c
+
+The GPU IPA relies on devfreq, and devfreq_cooling. Devfreq is already present upstream and is used in a pretty standard way. Devfreq_cooling was added to be the glue between the power actor and devfreq, see drivers/thermal/devfreq_cooling.c
+
+
h3. Linaro Android NDK
The build process for Linaro NDK has been completely revamped - instead of repackaging the latest upstream release with just a few components replaced, we're now building the NDK completely from source, allowing us to pick up changes more recent than the latest release. This has also given us the flexibility to merge ndk32 and ndk64 into one ndk that can target any supported processor.