SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
Presented by
Date
HKG15-409: ARM Hibernation
enablement on SoCs - a case study
Android Boot time Optimization
Grygorii Strashko
Linaro Mobile Group (LMG)
Feb 2015
Agenda
● Goals
● Preliminary analysis
● Working environment
● ARM hibernation basic support
● Hibernation sequence
● Android kernel - issues
● Debugging
● Time gain from hibernation
● To be done
● References
● code at:
https://git.linaro.org/people/grygorii.strashko/p-ti-linux-3.14.y-android-hib.git
Goals
● Reduce Android™ boot time using one of the snapshot
save/restore techniques:
○ DMTCP
○ suspend-to-disk (or hibernate)
● Prepare working prototype on TI BeagleBoard-X15 (AM572x) or J6
(DRA7xx) platform using the LSK/Android kernel for further
analysis and measurement
● Avoid or minimize changes to Google's AOSP
● security and RPMsg features descoped
● Target kernel: TI Android kernel 3.14 based on LSK Android 3.14
kernel
Preliminary analysis - DMTCP
● DMTCP: Distributed MultiThreaded CheckPointing
○ User space framework
○ AOSP needs to be patched heavily in many places
○ Link: http://dmtcp.sourceforge.net/index.html
● DMTCP is out of scope of this presentation
Preliminary analysis - Hibernation -
TuxOnIce
● TuxOnIce (formerly known as Suspend2, TOI) is an OpenSource
implementation of the suspend-to-disk (or hibernate)
○ Link: http://tuxonice.nigelcunningham.com.au/
● It supports a lot of advanced features
○ eg: “Support for saving a full image of memory”
● It requires basic hibernation support for ARM
● It’s good, !BUT! As is, It was rejected by LKML community see
○ http://lwn.net/Articles/333007/
“So this is an idea to replace our current hibernation implementation with TuxOnIce.
Which unfortunately I don't agree with.
I think we can get _one_ implementation out of the three, presumably keeping the user space interface that
will keep the current s2disk binaries happy, by merging TuxOnIce code _gradually_. No "all at once"
approach, please.
And by "merging" I mean _exactly_ that. Not adding new code and throwing away the old on”
Rafael J. Wysocky http://lwn.net/Articles/333090/
● LKML swsusp/uswsusp (s2disk) is a combination of Linux kernel and
userspace utilities
○ Link: http://suspend.sourceforge.net
● In general, it provides the same functionality as TOI
● It requires basic hibernation support for ARM
● The final choice for this exercise:
● LKML swsusp + basic ARM-hibernation support for ARM
Preliminary analysis - Hibernation - swsusp
Working environment
● HW: BeagleBoard-X15
● u-boot: http://git.ti.com/cgit/cgit.cgi/android-sdk/u-boot.git/
- branch: p-ti-u-boot-2014.07
● kernel: http://git.ti.com/cgit/cgit.cgi/android-sdk/kernel-omap.git/
- branch: p-ti-linux-3.14.y-android
● Android Lollipop:
- manifest: http://git.ti.com/cgit/cgit.cgi/android-sdk/platform-manifest.git/
- branch: d-lollipop-release
● Boot source: SD card
● Ref: https://cards.linaro.org/browse/CARD-1216
ARM hibernation basic support 1
● Initially available in LKML 3.16 (19583ca Linux 3.16)
○ Link: https://lkml.org/lkml/2014/3/11/486 (Sebastian Capella/Russ Dill)
● Patches backported from LKML 3.19 (no merge conflicts):
○ 7f8998c "nosave: consolidate _nosave{begin,end} in <asm/sections.h>"
○ 603fb42 ARM: 8011/1: ARM hibernation / suspend-to-disk
○ c7d442f ARM: 8010/1: avoid tracers in soft_restart
○ e26a9e0 ARM: Better virt_to_page() handling
■ This is a preparatory patch to avoid merges, and it is optional. Without this patch, pfn_is_nosave() has
to be implemented as in v7 of “ARM hibernation / suspend-to-disk” see https://lkml.
org/lkml/2014/3/5/916
ARM hibernation basic support 2
● Minimal kernel configuration with busybox rootfs
● Kernel Kconfig options:
CONFIG_HIBERNATION=y
CONFIG_SWAP=y
CONFIG_PM_TEST_SUSPEND=y
ARM hibernation basic support 3
● Test hibernation using swap partition on SD-card:
○ create swap partition on SD-card (512M) (can be done on regular PC)
○ boot your device
○ enable swap
■ # mkswap <swap partition> -- set up swap area
■ # swapon <swap partition> -- enable partition for swapping
○ run smth - memtester can be used
■ # memtester 256M &
○ hibernate
■ # echo disk > sys/power/state
○ Add resume parameters to Kernel boot cmd-line in u-boot before 'root=xxx'
■ 'resume=/dev/mmcblk1p2 resumewait' and it has to be done before 'root=xxx'
○ boot/reboot/poweron
Android kernel - hibernation sequence
u-boot kernel Android Lock screen
Screen off hibernate power off
power on
restore Lock screen
1 2 3 4 5
6 7 8
9 10 11
12 13
normal boot restorehibernate
Android kernel - issues 1
● Some devices do not configure hibernation callbacks properly (especially when dev_pm_ops is
used) as result such devices might be kept active during hibernation
static const struct dev_pm_ops leds_class_dev_pm_ops = {
.suspend = led_suspend,
.resume = led_resume,
};
● Fixed drivers:
○ drivers/led-class.c
○ net/ethernet/ti/davinci_mdio
○ mach-omap2/omap-device
○ drivers/net/ethernet/ti/cpsw.c
○ drivers/mmc/host/omap_hsmmc.c
○ drivers/hwmon/tmp102.c
○ drivers/gpu/drm/omapdrm/omap_dmm_tiler.c
○ drivers/gpu/drm/omapdrm/omap_drv.c
○
Android kernel - issues 2
● Hibernation PM events are not processed by PM notifier handlers
static int omap_dss_pm_notif(struct notifier_block *b, unsigned long v, void *d)
{
switch (v) {
case PM_SUSPEND_PREPARE:
DSSDBG("suspending displaysn");
return dss_suspend_all_devices();
case PM_POST_SUSPEND:
DSSDBG("resuming displaysn");
return dss_resume_all_devices();
default:
return 0;
}
};
● Fixed drivers:
○ drivers/video/fbdev/omap2/dss/core.c
○ work in progress
Android kernel - issues 3
● Contexts of DRA7xx/AM572x SoC’s specific HW modules do not saved restored
○ Control registers
○ PRCM - power and clock management registers
○ Clocks state
■ current implementation provided by TI isn’t working and has to be fixed to
support DRA7xx/AM572x SoC
■ The question is what is better - restore registers or set frequencies?
○ there are no visible issues, but only because of Step 11 of hibernation sequence -
boot kernel sets up SoC’s registers and restore process doesn’t touch them
Android kernel - issues 4
● PIN control registers:
○ Now most of TI drivers setup proper PIN states from their suspend/hibernation/PM runtime
callbacks
static int omap_hsmmc_suspend(struct device *dev)
{
...
pinctrl_pm_select_sleep_state(host->dev);
...
}
static int omap_hsmmc_resume(struct device *dev)
{
...
pinctrl_pm_select_default_state(host->dev);
...
}
○ Drivers which do not do that should be fixed or "default" PIN states should be added to Pin
controller devices.
Android kernel - issues 5
● It’s difficult to enable ”Platform” hibernation mode if we want to perform SoC specific actions and power off finally,
and our Power controller connected through I2C bus:
○ machine_power_off() will try to access I2C at time when everything is suspended (including System core and
timers) and IRQs are disabled as result huge amount of warnings
int hibernation_platform_enter(void) {
...
local_irq_disable();
syscore_suspend();
if (pm_wakeup_pending()) {
error = -EAGAIN;
goto Power_up;
}
hibernation_ops->enter(); --> machine_power_off() --> palmas_power_off() --> i2c
/* We should never get here */
while (1);
...
}
○ In general, we don’t need to implement full set platform callbacks, but only those which are needed for
saving/restoring of hibernation image and recovery - for discussion.
Debugging
● printk
○ sys/module/printk/parameters/console_suspend
○ no_console_suspend
● registers comparision before and after hibernation
● PM debug features
○ pm_test
[none] core processors platform devices freezer
○ pm_print_times
[ 3701.890011] calling 2-006f+ @ 3775, parent: i2c-2
[ 3701.898243] call 2-006f+ returned 0 after 3138 usecs
^^^^^^ if 0 or low, something is wrong
Time gain from hibernation
● Obtained with SD card (SD-HC-speed class 4)/eMMC
● Cold boot takes ~45 secs on BeagleBoard-X15
● Time gain from hibernation
U-Boot SPL 2015.01-rc1-00012-g5695f4a (Nov 12 2014 - 11:51:01)
...
[ 0.000000] Booting Linux on physical CPU 0x0
...
[ 3.130244] PM: Hibernation image partition 179:3 present
…
[ 3.295254] PM: Loading and decompressing image data (135396 pages)..
...
SD: [ 15.765606] PM: Read 541584 kbytes in 12.45 seconds (43.50 MB/s)
eMMC: [ 9.602019] PM: Read 567392 kbytes in 6.18 seconds (91.81 MB/s)
…
[ 147.381443] === func(c055e108)
…
[ 150.175764] Restarting tasks ... done.
+ 4-5 sec to enable screen
Total SD: ~ 24-28 secs
Total eMMC: ~18-20 secs
To be done
● Fix all issues ;P
● Collect more tests results and statistics
● Autosuspend support
● RPMsg
Adding support to other ARM SoCs
● Basic support is present already
● suspend-to-mem should be supported with assumption
that HW context will be lost completely
References
● Russell Dill “Extending the swsusp Hibernation Framework to ARM” http://elinux.org/images/0/0c/Slides.pdf
or https://docs.google.com/file/d/0B-JeSjLTabpdOFdwVlhVRjNTUUU/edit
code: https://github.com/russdill/linux/commits/arm-hibernation-am33xx
● Alexandre Belloni “Boot time optimizations” http://elinux.org/images/d/d1/Alexandre_Belloni_boottime_optimizations.
pdf
● Jim Huang, Dr. Shi-wu Lo “Shorten Device Boot Time for …” http://events.linuxfoundation.
org/sites/events/files/als13_huang.pdf
● Kan-Ru Chen “Android Boot Time Optimization” http://www.slideshare.net/kanru/android-boot-time-optimization
● TuxOnIce - http://tuxonice.nigelcunningham.com.au/
● DMTCP - http://dmtcp.sourceforge.net/
● swsusp - http://suspend.sourceforge.net/
● ARM hibernation / suspend-to-disk - (v9) https://lkml.org/lkml/2014/3/18/613
(v7) http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/238080.html
● 0xlab - https://github.com/0xlab, https://gitorious.org/0xlab-kernel
HKG15-409: ARM Hibernation enablement on SoCs - a case study

Más contenido relacionado

La actualidad más candente

BKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV PlatformBKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV PlatformLinaro
 
LAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLinaro
 
QEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded DevelopmentQEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded DevelopmentGlobalLogic Ukraine
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelSUSE Labs Taipei
 
Kernel Recipes 2015 - The Dronecode Project – A step in open source drones
Kernel Recipes 2015 - The Dronecode Project – A step in open source dronesKernel Recipes 2015 - The Dronecode Project – A step in open source drones
Kernel Recipes 2015 - The Dronecode Project – A step in open source dronesAnne Nicolas
 
Understand and optimize Linux I/O
Understand and optimize Linux I/OUnderstand and optimize Linux I/O
Understand and optimize Linux I/OAndrea Righi
 
ARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/SpectreARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/SpectreGlobalLogic Ukraine
 
Kernel debug log and console on openSUSE
Kernel debug log and console on openSUSEKernel debug log and console on openSUSE
Kernel debug log and console on openSUSESUSE Labs Taipei
 
Rloader, alternative tech to achieve fast boot time for ARM Linux
Rloader, alternative tech to achieve fast boot time for ARM LinuxRloader, alternative tech to achieve fast boot time for ARM Linux
Rloader, alternative tech to achieve fast boot time for ARM Linuxmatt_hsu
 
Linux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshopLinux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshopLubomir Rintel
 
Block I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBlock I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBabak Farrokhi
 
Linux Interrupts
Linux InterruptsLinux Interrupts
Linux InterruptsKernel TLV
 
YOW2021 Computing Performance
YOW2021 Computing PerformanceYOW2021 Computing Performance
YOW2021 Computing PerformanceBrendan Gregg
 
BKK16-317 How to generate power models for EAS and IPA
BKK16-317 How to generate power models for EAS and IPABKK16-317 How to generate power models for EAS and IPA
BKK16-317 How to generate power models for EAS and IPALinaro
 
LAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common Kernel
LAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common KernelLAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common Kernel
LAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common KernelLinaro
 
Known basic of NFV Features
Known basic of NFV FeaturesKnown basic of NFV Features
Known basic of NFV FeaturesRaul Leite
 
XPDDS18: Intel Processor Trace for Xen Hypervisor - Luwei Kang, Intel
XPDDS18: Intel Processor Trace for Xen Hypervisor - Luwei Kang, IntelXPDDS18: Intel Processor Trace for Xen Hypervisor - Luwei Kang, Intel
XPDDS18: Intel Processor Trace for Xen Hypervisor - Luwei Kang, IntelThe Linux Foundation
 
A short Intro. to Java Mission Control
A short Intro. to Java Mission ControlA short Intro. to Java Mission Control
A short Intro. to Java Mission ControlHaim Yadid
 
Kernel_Crash_Dump_Analysis
Kernel_Crash_Dump_AnalysisKernel_Crash_Dump_Analysis
Kernel_Crash_Dump_AnalysisBuland Singh
 

La actualidad más candente (20)

BKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV PlatformBKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV Platform
 
LAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel Awareness
 
QEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded DevelopmentQEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded Development
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux Kernel
 
Kernel Recipes 2015 - The Dronecode Project – A step in open source drones
Kernel Recipes 2015 - The Dronecode Project – A step in open source dronesKernel Recipes 2015 - The Dronecode Project – A step in open source drones
Kernel Recipes 2015 - The Dronecode Project – A step in open source drones
 
Understand and optimize Linux I/O
Understand and optimize Linux I/OUnderstand and optimize Linux I/O
Understand and optimize Linux I/O
 
ARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/SpectreARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/Spectre
 
Kernel debug log and console on openSUSE
Kernel debug log and console on openSUSEKernel debug log and console on openSUSE
Kernel debug log and console on openSUSE
 
Rloader, alternative tech to achieve fast boot time for ARM Linux
Rloader, alternative tech to achieve fast boot time for ARM LinuxRloader, alternative tech to achieve fast boot time for ARM Linux
Rloader, alternative tech to achieve fast boot time for ARM Linux
 
Linux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshopLinux Kernel Debugging Essentials workshop
Linux Kernel Debugging Essentials workshop
 
Block I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBlock I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktrace
 
Linux Interrupts
Linux InterruptsLinux Interrupts
Linux Interrupts
 
YOW2021 Computing Performance
YOW2021 Computing PerformanceYOW2021 Computing Performance
YOW2021 Computing Performance
 
Qemu Introduction
Qemu IntroductionQemu Introduction
Qemu Introduction
 
BKK16-317 How to generate power models for EAS and IPA
BKK16-317 How to generate power models for EAS and IPABKK16-317 How to generate power models for EAS and IPA
BKK16-317 How to generate power models for EAS and IPA
 
LAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common Kernel
LAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common KernelLAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common Kernel
LAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common Kernel
 
Known basic of NFV Features
Known basic of NFV FeaturesKnown basic of NFV Features
Known basic of NFV Features
 
XPDDS18: Intel Processor Trace for Xen Hypervisor - Luwei Kang, Intel
XPDDS18: Intel Processor Trace for Xen Hypervisor - Luwei Kang, IntelXPDDS18: Intel Processor Trace for Xen Hypervisor - Luwei Kang, Intel
XPDDS18: Intel Processor Trace for Xen Hypervisor - Luwei Kang, Intel
 
A short Intro. to Java Mission Control
A short Intro. to Java Mission ControlA short Intro. to Java Mission Control
A short Intro. to Java Mission Control
 
Kernel_Crash_Dump_Analysis
Kernel_Crash_Dump_AnalysisKernel_Crash_Dump_Analysis
Kernel_Crash_Dump_Analysis
 

Destacado

Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time OptimizationKan-Ru Chen
 
Debian & the BeagleBone Black
Debian & the BeagleBone BlackDebian & the BeagleBone Black
Debian & the BeagleBone BlackRaju Vindane
 
Hardware Abstraction Layer
Hardware Abstraction LayerHardware Abstraction Layer
Hardware Abstraction LayerTeh Kian Cheng
 
Diving inside Android Wifi
Diving inside Android WifiDiving inside Android Wifi
Diving inside Android WifiNanik Tolaram
 
COS: A Configurable OS for Embedded SoC Systems
COS: A Configurable OS for Embedded SoC SystemsCOS: A Configurable OS for Embedded SoC Systems
COS: A Configurable OS for Embedded SoC SystemsPrateek Anand
 
Connecting Hardware to the Web with the BeagleBone
Connecting Hardware to the Web with the BeagleBoneConnecting Hardware to the Web with the BeagleBone
Connecting Hardware to the Web with the BeagleBoneFrank Hunleth
 
Android booting sequece and setup and debugging
Android booting sequece and setup and debuggingAndroid booting sequece and setup and debugging
Android booting sequece and setup and debuggingUtkarsh Mankad
 
LAS16-306: Exploring the Open Trusted Protocol
LAS16-306: Exploring the Open Trusted ProtocolLAS16-306: Exploring the Open Trusted Protocol
LAS16-306: Exploring the Open Trusted ProtocolLinaro
 
BeagleBone Black Using Python
BeagleBone Black Using PythonBeagleBone Black Using Python
BeagleBone Black Using PythonSai Viswanath
 
Android HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacyAndroid HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacyJollen Chen
 
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessNanik Tolaram
 
Android device driver structure introduction
Android device driver structure introductionAndroid device driver structure introduction
Android device driver structure introductionWilliam Liang
 
LAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEELAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEELinaro
 
Accessing Hardware on Android
Accessing Hardware on AndroidAccessing Hardware on Android
Accessing Hardware on AndroidGary Bisson
 
LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLinaro
 
LAS16-504: Secure Storage updates in OP-TEE
LAS16-504: Secure Storage updates in OP-TEELAS16-504: Secure Storage updates in OP-TEE
LAS16-504: Secure Storage updates in OP-TEELinaro
 

Destacado (20)

Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time Optimization
 
Debian & the BeagleBone Black
Debian & the BeagleBone BlackDebian & the BeagleBone Black
Debian & the BeagleBone Black
 
Hardware Abstraction Layer
Hardware Abstraction LayerHardware Abstraction Layer
Hardware Abstraction Layer
 
Diving inside Android Wifi
Diving inside Android WifiDiving inside Android Wifi
Diving inside Android Wifi
 
COS: A Configurable OS for Embedded SoC Systems
COS: A Configurable OS for Embedded SoC SystemsCOS: A Configurable OS for Embedded SoC Systems
COS: A Configurable OS for Embedded SoC Systems
 
Connecting Hardware to the Web with the BeagleBone
Connecting Hardware to the Web with the BeagleBoneConnecting Hardware to the Web with the BeagleBone
Connecting Hardware to the Web with the BeagleBone
 
BeagleBone Workshop
BeagleBone WorkshopBeagleBone Workshop
BeagleBone Workshop
 
Android Custom Kernel/ROM design
Android Custom Kernel/ROM designAndroid Custom Kernel/ROM design
Android Custom Kernel/ROM design
 
Beagle board
Beagle boardBeagle board
Beagle board
 
How To Build Android for ARM Chip boards
How To Build Android for ARM Chip boardsHow To Build Android for ARM Chip boards
How To Build Android for ARM Chip boards
 
Android booting sequece and setup and debugging
Android booting sequece and setup and debuggingAndroid booting sequece and setup and debugging
Android booting sequece and setup and debugging
 
LAS16-306: Exploring the Open Trusted Protocol
LAS16-306: Exploring the Open Trusted ProtocolLAS16-306: Exploring the Open Trusted Protocol
LAS16-306: Exploring the Open Trusted Protocol
 
BeagleBone Black Using Python
BeagleBone Black Using PythonBeagleBone Black Using Python
BeagleBone Black Using Python
 
Android HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacyAndroid HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacy
 
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting Process
 
Android device driver structure introduction
Android device driver structure introductionAndroid device driver structure introduction
Android device driver structure introduction
 
LAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEELAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEE
 
Accessing Hardware on Android
Accessing Hardware on AndroidAccessing Hardware on Android
Accessing Hardware on Android
 
LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platform
 
LAS16-504: Secure Storage updates in OP-TEE
LAS16-504: Secure Storage updates in OP-TEELAS16-504: Secure Storage updates in OP-TEE
LAS16-504: Secure Storage updates in OP-TEE
 

Similar a HKG15-409: ARM Hibernation enablement on SoCs - a case study

SoC Idling for unconf COSCUP 2016
SoC Idling for unconf COSCUP 2016SoC Idling for unconf COSCUP 2016
SoC Idling for unconf COSCUP 2016Koan-Sin Tan
 
Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Jian-Hong Pan
 
SiteGround Tech TeamBuilding
SiteGround Tech TeamBuildingSiteGround Tech TeamBuilding
SiteGround Tech TeamBuildingMarian Marinov
 
Когда предрелизный не только софт
Когда предрелизный не только софтКогда предрелизный не только софт
Когда предрелизный не только софтCEE-SEC(R)
 
HKG18-TR14 - Postmortem Debugging with Coresight
HKG18-TR14 - Postmortem Debugging with CoresightHKG18-TR14 - Postmortem Debugging with Coresight
HKG18-TR14 - Postmortem Debugging with CoresightLinaro
 
When the OS gets in the way
When the OS gets in the wayWhen the OS gets in the way
When the OS gets in the wayMark Price
 
UWE Linux Boot Camp 2007: Hacking embedded Linux on the cheap
UWE Linux Boot Camp 2007: Hacking embedded Linux on the cheapUWE Linux Boot Camp 2007: Hacking embedded Linux on the cheap
UWE Linux Boot Camp 2007: Hacking embedded Linux on the cheapedlangley
 
Bsdtw17: ruslan bukin: free bsd/risc-v and device drivers
Bsdtw17: ruslan bukin: free bsd/risc-v and device driversBsdtw17: ruslan bukin: free bsd/risc-v and device drivers
Bsdtw17: ruslan bukin: free bsd/risc-v and device driversScott Tsai
 
CONFidence 2017: Escaping the (sand)box: The promises and pitfalls of modern ...
CONFidence 2017: Escaping the (sand)box: The promises and pitfalls of modern ...CONFidence 2017: Escaping the (sand)box: The promises and pitfalls of modern ...
CONFidence 2017: Escaping the (sand)box: The promises and pitfalls of modern ...PROIDEA
 
Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...
Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...
Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...Ron Munitz
 
建構嵌入式Linux系統於SD Card
建構嵌入式Linux系統於SD Card建構嵌入式Linux系統於SD Card
建構嵌入式Linux系統於SD Card艾鍗科技
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205Linaro
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBSamsung Open Source Group
 
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernelsMainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernelsDobrica Pavlinušić
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computingArka Ghosh
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computingArka Ghosh
 

Similar a HKG15-409: ARM Hibernation enablement on SoCs - a case study (20)

SoC Idling for unconf COSCUP 2016
SoC Idling for unconf COSCUP 2016SoC Idling for unconf COSCUP 2016
SoC Idling for unconf COSCUP 2016
 
Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021
 
SiteGround Tech TeamBuilding
SiteGround Tech TeamBuildingSiteGround Tech TeamBuilding
SiteGround Tech TeamBuilding
 
Когда предрелизный не только софт
Когда предрелизный не только софтКогда предрелизный не только софт
Когда предрелизный не только софт
 
HKG18-TR14 - Postmortem Debugging with Coresight
HKG18-TR14 - Postmortem Debugging with CoresightHKG18-TR14 - Postmortem Debugging with Coresight
HKG18-TR14 - Postmortem Debugging with Coresight
 
Kdump
KdumpKdump
Kdump
 
When the OS gets in the way
When the OS gets in the wayWhen the OS gets in the way
When the OS gets in the way
 
UWE Linux Boot Camp 2007: Hacking embedded Linux on the cheap
UWE Linux Boot Camp 2007: Hacking embedded Linux on the cheapUWE Linux Boot Camp 2007: Hacking embedded Linux on the cheap
UWE Linux Boot Camp 2007: Hacking embedded Linux on the cheap
 
printk() considered harmful
printk() considered harmfulprintk() considered harmful
printk() considered harmful
 
Linux boot-time
Linux boot-timeLinux boot-time
Linux boot-time
 
Bsdtw17: ruslan bukin: free bsd/risc-v and device drivers
Bsdtw17: ruslan bukin: free bsd/risc-v and device driversBsdtw17: ruslan bukin: free bsd/risc-v and device drivers
Bsdtw17: ruslan bukin: free bsd/risc-v and device drivers
 
CONFidence 2017: Escaping the (sand)box: The promises and pitfalls of modern ...
CONFidence 2017: Escaping the (sand)box: The promises and pitfalls of modern ...CONFidence 2017: Escaping the (sand)box: The promises and pitfalls of modern ...
CONFidence 2017: Escaping the (sand)box: The promises and pitfalls of modern ...
 
Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...
Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...
Bringing up Android on your favorite X86 Workstation or VM (AnDevCon Boston, ...
 
建構嵌入式Linux系統於SD Card
建構嵌入式Linux系統於SD Card建構嵌入式Linux系統於SD Card
建構嵌入式Linux系統於SD Card
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
 
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernelsMainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
 
BeagleBone Black Booting Process
BeagleBone Black Booting ProcessBeagleBone Black Booting Process
BeagleBone Black Booting Process
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computing
 
Vpu technology &gpgpu computing
Vpu technology &gpgpu computingVpu technology &gpgpu computing
Vpu technology &gpgpu computing
 

Más de Linaro

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloLinaro
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaLinaro
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraLinaro
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaLinaro
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018Linaro
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018Linaro
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...Linaro
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Linaro
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Linaro
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteLinaro
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopLinaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allLinaro
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorLinaro
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMULinaro
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MLinaro
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation Linaro
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootLinaro
 

Más de Linaro (20)

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
 

Último

ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfTobias Schneck
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기Chiwon Song
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxAutus Cyber Tech
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 
About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9Jürgen Gutsch
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Projectwajrcs
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024Mind IT Systems
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadIvo Andreev
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfBrain Inventory
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxPrakarsh -
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 

Último (20)

ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptx
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 
About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
Program with GUTs
Program with GUTsProgram with GUTs
Program with GUTs
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and Bad
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdf
 
Sustainable Web Design - Claire Thornewill
Sustainable Web Design - Claire ThornewillSustainable Web Design - Claire Thornewill
Sustainable Web Design - Claire Thornewill
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptx
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 

HKG15-409: ARM Hibernation enablement on SoCs - a case study

  • 1. Presented by Date HKG15-409: ARM Hibernation enablement on SoCs - a case study Android Boot time Optimization Grygorii Strashko Linaro Mobile Group (LMG) Feb 2015
  • 2. Agenda ● Goals ● Preliminary analysis ● Working environment ● ARM hibernation basic support ● Hibernation sequence ● Android kernel - issues ● Debugging ● Time gain from hibernation ● To be done ● References ● code at: https://git.linaro.org/people/grygorii.strashko/p-ti-linux-3.14.y-android-hib.git
  • 3. Goals ● Reduce Android™ boot time using one of the snapshot save/restore techniques: ○ DMTCP ○ suspend-to-disk (or hibernate) ● Prepare working prototype on TI BeagleBoard-X15 (AM572x) or J6 (DRA7xx) platform using the LSK/Android kernel for further analysis and measurement ● Avoid or minimize changes to Google's AOSP ● security and RPMsg features descoped ● Target kernel: TI Android kernel 3.14 based on LSK Android 3.14 kernel
  • 4. Preliminary analysis - DMTCP ● DMTCP: Distributed MultiThreaded CheckPointing ○ User space framework ○ AOSP needs to be patched heavily in many places ○ Link: http://dmtcp.sourceforge.net/index.html ● DMTCP is out of scope of this presentation
  • 5. Preliminary analysis - Hibernation - TuxOnIce ● TuxOnIce (formerly known as Suspend2, TOI) is an OpenSource implementation of the suspend-to-disk (or hibernate) ○ Link: http://tuxonice.nigelcunningham.com.au/ ● It supports a lot of advanced features ○ eg: “Support for saving a full image of memory” ● It requires basic hibernation support for ARM ● It’s good, !BUT! As is, It was rejected by LKML community see ○ http://lwn.net/Articles/333007/ “So this is an idea to replace our current hibernation implementation with TuxOnIce. Which unfortunately I don't agree with. I think we can get _one_ implementation out of the three, presumably keeping the user space interface that will keep the current s2disk binaries happy, by merging TuxOnIce code _gradually_. No "all at once" approach, please. And by "merging" I mean _exactly_ that. Not adding new code and throwing away the old on” Rafael J. Wysocky http://lwn.net/Articles/333090/
  • 6. ● LKML swsusp/uswsusp (s2disk) is a combination of Linux kernel and userspace utilities ○ Link: http://suspend.sourceforge.net ● In general, it provides the same functionality as TOI ● It requires basic hibernation support for ARM ● The final choice for this exercise: ● LKML swsusp + basic ARM-hibernation support for ARM Preliminary analysis - Hibernation - swsusp
  • 7. Working environment ● HW: BeagleBoard-X15 ● u-boot: http://git.ti.com/cgit/cgit.cgi/android-sdk/u-boot.git/ - branch: p-ti-u-boot-2014.07 ● kernel: http://git.ti.com/cgit/cgit.cgi/android-sdk/kernel-omap.git/ - branch: p-ti-linux-3.14.y-android ● Android Lollipop: - manifest: http://git.ti.com/cgit/cgit.cgi/android-sdk/platform-manifest.git/ - branch: d-lollipop-release ● Boot source: SD card ● Ref: https://cards.linaro.org/browse/CARD-1216
  • 8. ARM hibernation basic support 1 ● Initially available in LKML 3.16 (19583ca Linux 3.16) ○ Link: https://lkml.org/lkml/2014/3/11/486 (Sebastian Capella/Russ Dill) ● Patches backported from LKML 3.19 (no merge conflicts): ○ 7f8998c "nosave: consolidate _nosave{begin,end} in <asm/sections.h>" ○ 603fb42 ARM: 8011/1: ARM hibernation / suspend-to-disk ○ c7d442f ARM: 8010/1: avoid tracers in soft_restart ○ e26a9e0 ARM: Better virt_to_page() handling ■ This is a preparatory patch to avoid merges, and it is optional. Without this patch, pfn_is_nosave() has to be implemented as in v7 of “ARM hibernation / suspend-to-disk” see https://lkml. org/lkml/2014/3/5/916
  • 9. ARM hibernation basic support 2 ● Minimal kernel configuration with busybox rootfs ● Kernel Kconfig options: CONFIG_HIBERNATION=y CONFIG_SWAP=y CONFIG_PM_TEST_SUSPEND=y
  • 10. ARM hibernation basic support 3 ● Test hibernation using swap partition on SD-card: ○ create swap partition on SD-card (512M) (can be done on regular PC) ○ boot your device ○ enable swap ■ # mkswap <swap partition> -- set up swap area ■ # swapon <swap partition> -- enable partition for swapping ○ run smth - memtester can be used ■ # memtester 256M & ○ hibernate ■ # echo disk > sys/power/state ○ Add resume parameters to Kernel boot cmd-line in u-boot before 'root=xxx' ■ 'resume=/dev/mmcblk1p2 resumewait' and it has to be done before 'root=xxx' ○ boot/reboot/poweron
  • 11. Android kernel - hibernation sequence u-boot kernel Android Lock screen Screen off hibernate power off power on restore Lock screen 1 2 3 4 5 6 7 8 9 10 11 12 13 normal boot restorehibernate
  • 12. Android kernel - issues 1 ● Some devices do not configure hibernation callbacks properly (especially when dev_pm_ops is used) as result such devices might be kept active during hibernation static const struct dev_pm_ops leds_class_dev_pm_ops = { .suspend = led_suspend, .resume = led_resume, }; ● Fixed drivers: ○ drivers/led-class.c ○ net/ethernet/ti/davinci_mdio ○ mach-omap2/omap-device ○ drivers/net/ethernet/ti/cpsw.c ○ drivers/mmc/host/omap_hsmmc.c ○ drivers/hwmon/tmp102.c ○ drivers/gpu/drm/omapdrm/omap_dmm_tiler.c ○ drivers/gpu/drm/omapdrm/omap_drv.c ○
  • 13. Android kernel - issues 2 ● Hibernation PM events are not processed by PM notifier handlers static int omap_dss_pm_notif(struct notifier_block *b, unsigned long v, void *d) { switch (v) { case PM_SUSPEND_PREPARE: DSSDBG("suspending displaysn"); return dss_suspend_all_devices(); case PM_POST_SUSPEND: DSSDBG("resuming displaysn"); return dss_resume_all_devices(); default: return 0; } }; ● Fixed drivers: ○ drivers/video/fbdev/omap2/dss/core.c ○ work in progress
  • 14. Android kernel - issues 3 ● Contexts of DRA7xx/AM572x SoC’s specific HW modules do not saved restored ○ Control registers ○ PRCM - power and clock management registers ○ Clocks state ■ current implementation provided by TI isn’t working and has to be fixed to support DRA7xx/AM572x SoC ■ The question is what is better - restore registers or set frequencies? ○ there are no visible issues, but only because of Step 11 of hibernation sequence - boot kernel sets up SoC’s registers and restore process doesn’t touch them
  • 15. Android kernel - issues 4 ● PIN control registers: ○ Now most of TI drivers setup proper PIN states from their suspend/hibernation/PM runtime callbacks static int omap_hsmmc_suspend(struct device *dev) { ... pinctrl_pm_select_sleep_state(host->dev); ... } static int omap_hsmmc_resume(struct device *dev) { ... pinctrl_pm_select_default_state(host->dev); ... } ○ Drivers which do not do that should be fixed or "default" PIN states should be added to Pin controller devices.
  • 16. Android kernel - issues 5 ● It’s difficult to enable ”Platform” hibernation mode if we want to perform SoC specific actions and power off finally, and our Power controller connected through I2C bus: ○ machine_power_off() will try to access I2C at time when everything is suspended (including System core and timers) and IRQs are disabled as result huge amount of warnings int hibernation_platform_enter(void) { ... local_irq_disable(); syscore_suspend(); if (pm_wakeup_pending()) { error = -EAGAIN; goto Power_up; } hibernation_ops->enter(); --> machine_power_off() --> palmas_power_off() --> i2c /* We should never get here */ while (1); ... } ○ In general, we don’t need to implement full set platform callbacks, but only those which are needed for saving/restoring of hibernation image and recovery - for discussion.
  • 17. Debugging ● printk ○ sys/module/printk/parameters/console_suspend ○ no_console_suspend ● registers comparision before and after hibernation ● PM debug features ○ pm_test [none] core processors platform devices freezer ○ pm_print_times [ 3701.890011] calling 2-006f+ @ 3775, parent: i2c-2 [ 3701.898243] call 2-006f+ returned 0 after 3138 usecs ^^^^^^ if 0 or low, something is wrong
  • 18. Time gain from hibernation ● Obtained with SD card (SD-HC-speed class 4)/eMMC ● Cold boot takes ~45 secs on BeagleBoard-X15 ● Time gain from hibernation U-Boot SPL 2015.01-rc1-00012-g5695f4a (Nov 12 2014 - 11:51:01) ... [ 0.000000] Booting Linux on physical CPU 0x0 ... [ 3.130244] PM: Hibernation image partition 179:3 present … [ 3.295254] PM: Loading and decompressing image data (135396 pages).. ... SD: [ 15.765606] PM: Read 541584 kbytes in 12.45 seconds (43.50 MB/s) eMMC: [ 9.602019] PM: Read 567392 kbytes in 6.18 seconds (91.81 MB/s) … [ 147.381443] === func(c055e108) … [ 150.175764] Restarting tasks ... done. + 4-5 sec to enable screen Total SD: ~ 24-28 secs Total eMMC: ~18-20 secs
  • 19. To be done ● Fix all issues ;P ● Collect more tests results and statistics ● Autosuspend support ● RPMsg
  • 20. Adding support to other ARM SoCs ● Basic support is present already ● suspend-to-mem should be supported with assumption that HW context will be lost completely
  • 21. References ● Russell Dill “Extending the swsusp Hibernation Framework to ARM” http://elinux.org/images/0/0c/Slides.pdf or https://docs.google.com/file/d/0B-JeSjLTabpdOFdwVlhVRjNTUUU/edit code: https://github.com/russdill/linux/commits/arm-hibernation-am33xx ● Alexandre Belloni “Boot time optimizations” http://elinux.org/images/d/d1/Alexandre_Belloni_boottime_optimizations. pdf ● Jim Huang, Dr. Shi-wu Lo “Shorten Device Boot Time for …” http://events.linuxfoundation. org/sites/events/files/als13_huang.pdf ● Kan-Ru Chen “Android Boot Time Optimization” http://www.slideshare.net/kanru/android-boot-time-optimization ● TuxOnIce - http://tuxonice.nigelcunningham.com.au/ ● DMTCP - http://dmtcp.sourceforge.net/ ● swsusp - http://suspend.sourceforge.net/ ● ARM hibernation / suspend-to-disk - (v9) https://lkml.org/lkml/2014/3/18/613 (v7) http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/238080.html ● 0xlab - https://github.com/0xlab, https://gitorious.org/0xlab-kernel