SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
ARM Cortex-A53 errata on
Android
@hidenorly
Official ARM Cortex-A53 information
Summary of the errata
● There are critical errata on early verson of
Cortex-A53.
○ The errata are only caused in AArch64.
■ Erratum 835769
■ Erratum 843419
○ These are for A53 only, not on A57/Denver (nVIDIA).
● The solution for the errata is workaround to
avoid the condition by changing the native
code sequence.
Errata description from AOSP commit
Erratum 835769.
● https://android-review.googlesource.
com/#/c/113144/
● AArch64: Addressing Cortex-A53 erratum
835769.
● Some early revisions of the Cortex-A53
have an erratum (835769) whereby
● it is possible for a 64-bit multiply-
accumulate instruction in AArch64 state to
generate an incorrect result.
Erratum 843419
● https://android-review.googlesource.
com/#/c/144580/
● [AArch64] Workaround for cortex-a53
erratum 843419
● Some early revisions of the Cortex-A53
have an erratum (843419).
● The details of the erratum are quite
complex and involve dynamic conditions.
For the purposes of the workaround we
have simplified the static conditions to an
ADRP in the last two instructions of a
4KByte page, followed within four
instructions by a load/store dependent on
the ADRP.
Default 64bit Andoid device configuration
brings the ARM errata problematic situation
● Most of 64bit Android devices configure with
init.zygote64_32.rc
● And ABI list are configured as
○ [ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,
armeabi] (from Nexus 9)
Pure Java app will be executing in AArch64 with ART.
Execution mode on abilist=armv8, armeabiv7
Executing mode 32bit native library 64bit native library Render Script
64bit none none none
32bit exist none none
32bit none none exist
32bit exist exist exist
64bit exist exist none
Currently, if the apk has 32bit only native libary or the app uses render script, the application will
be executing in 32bit. But the RenderScript limitation might be changed future platform.
The errata might be affected to most of applications on 64bit ARM system.
Cases to hit the errata
Type of code Why? Workaround? Availablity @
25 April 2015
Pure Java code ART compiles dex to AArch64
machine code
Require to patch workaround for
ART by device manufacture side
Depends on
device
Native library for
lib/arm64/
Old toolchain generates the
problematic code for the errata
Recompile with workaround
enabled toolchain (NDK) by app
developer side.
Partially but
not fully
available on
NDK
Java Script with
ChromiumWebView
ChromiumWebView is executing
in AArch64 mode if your app is
running in AArch64.
Accept to use updated version of
System WebView through
Google Play
Not available
Java Script with
Chrome
Chrome is executing in AArch64
on 64bit system
Accept to use updated version of
Chrome through Google Play
Not available
Workaround on ART for device FW
platform/art
erratum 835769 https://android-review.googlesource.com/#/c/113144/
https://android-review.googlesource.com/#/c/118930/
erratum 843419 https://android-review.googlesource.com/#/c/145099/
https://android-review.googlesource.com/#/c/144632/
Please note that ADRP is not used on L MR0 / MR1.
And then patches for 843419 are not needed.
Tool chain to build device FW
binutils
erratum 835769 https://android-review.googlesource.com/#/c/112784/
https://android-review.googlesource.com/#/c/116841/
https://android-review.googlesource.com/#/c/144561/
https://android-review.googlesource.com/#/c/144568/
https://android-review.googlesource.com/#/c/144574/
https://android-review.googlesource.com/#/c/144576/
erratum 843419 https://android-review.googlesource.com/#/c/144580/
https://android-review.googlesource.com/#/c/147414/
Basically we can expect them by prebuilt binaries.
And it’s regarding ld.bfd.
Tool chain to build device FW
platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9
erratum 835769 https://android-review.googlesource.com/117420
erratum 843419 https://android-review.googlesource.com/145972
Please note that the option is NOT set as default (but will be enabled on NDK, not on platform build).
(https://android-review.googlesource.com/#/c/145066/1/build/tools/toolchain-patches/gcc/0013-Modify-LINK_SPEC-to-pass-fix-cortex-a53-843419-as-de.patch)
ldflags:= ¥
-Wl --fix-cortex-a53-835769 ¥
-Wl --fix-cortex-a53-843419 ¥
Tool chain to build device FW
clang, llvm
erratum 835769 https://android-review.googlesource.com/#/c/111240/ (clang)
https://android-review.googlesource.com/#/c/111230/ (llvm)
erratum 843419 Not available...
Basically platform build is by gcc and then it should be optional.
But NDK supports clang/LLVM. And then without the support,
NDK will not be released...
NDK : Native libraries for AArch64
Workaround for 835769 is enabled as default on
NDK10d.
And then what application developers need to do is
to ensure workaround for 843419.
But the supported NDK is not released.
JavaScript Engine V8 in Chromium
https://code.google.com/p/chromium/issues/list?
can=1&q=Cortex+53+errata&colspec=ID+Pri+M+Week+ReleaseBlock+Cr+Status+Owner+Summary+
OS+Modified&cells=tiles
https://code.google.com/p/chromium/issues/list?
can=1&q=Cortex+53+erratum&colspec=ID+Pri+M+Week+ReleaseBlock+Cr+Status+Owner+Summar
y+OS+Modified&x=m&y=releaseblock&cells=tiles
But “JavaScriptCore” used in WebKit has already the workaround for 835769 but not for 843419
http://code.metager.de/source/xref/WebKit/Source/JavaScriptCore/offlineasm/arm64.rb
Based on my investigation, there is no workaround solution for the errata as
of now.
Summary
● For manufacturers/custom ROM developers
○ Build FW with the workaround enabled toolchain
○ Don’t forget to ensure the binary released SW too.
○ Please keep watching not only AOSP but also
chromium’s V8.
● For application developers
○ Build your native library with workaround enabed
NDK and re-release your app with the library.

Más contenido relacionado

La actualidad más candente

How To Access Code In Large w/ Vim
How To Access Code In Large w/ VimHow To Access Code In Large w/ Vim
How To Access Code In Large w/ VimCheng Hsien Chen
 
LAS16-106: GNU Toolchain Development Lifecycle
LAS16-106: GNU Toolchain Development LifecycleLAS16-106: GNU Toolchain Development Lifecycle
LAS16-106: GNU Toolchain Development LifecycleLinaro
 
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLinaro
 
ELC North America 2021 Introduction to pin muxing and gpio control under linux
ELC  North America 2021 Introduction to pin muxing and gpio control under linuxELC  North America 2021 Introduction to pin muxing and gpio control under linux
ELC North America 2021 Introduction to pin muxing and gpio control under linuxNeil Armstrong
 
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The UglyMin-Yih Hsu
 
Digging for Android Kernel Bugs
Digging for Android Kernel BugsDigging for Android Kernel Bugs
Digging for Android Kernel BugsJiahong Fang
 
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...Linaro
 
Kernel Recipes 2015: Anatomy of an atomic KMS driver
Kernel Recipes 2015: Anatomy of an atomic KMS driverKernel Recipes 2015: Anatomy of an atomic KMS driver
Kernel Recipes 2015: Anatomy of an atomic KMS driverAnne Nicolas
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VIOpersys inc.
 
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?Embedded Recipes 2019 - RT is about to make it to mainline. Now what?
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?Anne Nicolas
 
Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstAnne Nicolas
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!Mr. Vengineer
 
HackLU 2018 Make ARM Shellcode Great Again
HackLU 2018 Make ARM Shellcode Great AgainHackLU 2018 Make ARM Shellcode Great Again
HackLU 2018 Make ARM Shellcode Great AgainSaumil Shah
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialAnne Nicolas
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaAnne Nicolas
 
BKK16-213 Where's the Hardware?
BKK16-213 Where's the Hardware?BKK16-213 Where's the Hardware?
BKK16-213 Where's the Hardware?Linaro
 
ELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bspELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bspNeil Armstrong
 

La actualidad más candente (20)

How To Access Code In Large w/ Vim
How To Access Code In Large w/ VimHow To Access Code In Large w/ Vim
How To Access Code In Large w/ Vim
 
LAS16-106: GNU Toolchain Development Lifecycle
LAS16-106: GNU Toolchain Development LifecycleLAS16-106: GNU Toolchain Development Lifecycle
LAS16-106: GNU Toolchain Development Lifecycle
 
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
 
ELC North America 2021 Introduction to pin muxing and gpio control under linux
ELC  North America 2021 Introduction to pin muxing and gpio control under linuxELC  North America 2021 Introduction to pin muxing and gpio control under linux
ELC North America 2021 Introduction to pin muxing and gpio control under linux
 
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
 
FPGA MiSTer (July 2019)
FPGA MiSTer (July 2019)FPGA MiSTer (July 2019)
FPGA MiSTer (July 2019)
 
Digging for Android Kernel Bugs
Digging for Android Kernel BugsDigging for Android Kernel Bugs
Digging for Android Kernel Bugs
 
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
 
Kernel Recipes 2015: Anatomy of an atomic KMS driver
Kernel Recipes 2015: Anatomy of an atomic KMS driverKernel Recipes 2015: Anatomy of an atomic KMS driver
Kernel Recipes 2015: Anatomy of an atomic KMS driver
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VI
 
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?Embedded Recipes 2019 - RT is about to make it to mainline. Now what?
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?
 
Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Zedroid - Android (5.0 and later) on Zedboard
Zedroid - Android (5.0 and later) on ZedboardZedroid - Android (5.0 and later) on Zedboard
Zedroid - Android (5.0 and later) on Zedboard
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
 
HackLU 2018 Make ARM Shellcode Great Again
HackLU 2018 Make ARM Shellcode Great AgainHackLU 2018 Make ARM Shellcode Great Again
HackLU 2018 Make ARM Shellcode Great Again
 
Next Stop, Android
Next Stop, AndroidNext Stop, Android
Next Stop, Android
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
BKK16-213 Where's the Hardware?
BKK16-213 Where's the Hardware?BKK16-213 Where's the Hardware?
BKK16-213 Where's the Hardware?
 
ELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bspELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bsp
 

Destacado

About kitakat
About kitakatAbout kitakat
About kitakathidenorly
 
Update from android kk to android l
Update from android kk to android lUpdate from android kk to android l
Update from android kk to android lBin Yang
 
GCC for ARMv8 Aarch64
GCC for ARMv8 Aarch64GCC for ARMv8 Aarch64
GCC for ARMv8 Aarch64Yi-Hsiu Hsu
 
Introduction to armv8 aarch64
Introduction to armv8 aarch64Introduction to armv8 aarch64
Introduction to armv8 aarch64Yi-Hsiu Hsu
 
android architecture
android architectureandroid architecture
android architectureAashita Gupta
 
Cisco Packet Tracer 6.0.x errata
Cisco Packet Tracer 6.0.x errataCisco Packet Tracer 6.0.x errata
Cisco Packet Tracer 6.0.x errataSon Trinh
 

Destacado (8)

About kitakat
About kitakatAbout kitakat
About kitakat
 
Update from android kk to android l
Update from android kk to android lUpdate from android kk to android l
Update from android kk to android l
 
ARM 64bit has come!
ARM 64bit has come!ARM 64bit has come!
ARM 64bit has come!
 
GCC for ARMv8 Aarch64
GCC for ARMv8 Aarch64GCC for ARMv8 Aarch64
GCC for ARMv8 Aarch64
 
Android Platform Architecture
Android Platform ArchitectureAndroid Platform Architecture
Android Platform Architecture
 
Introduction to armv8 aarch64
Introduction to armv8 aarch64Introduction to armv8 aarch64
Introduction to armv8 aarch64
 
android architecture
android architectureandroid architecture
android architecture
 
Cisco Packet Tracer 6.0.x errata
Cisco Packet Tracer 6.0.x errataCisco Packet Tracer 6.0.x errata
Cisco Packet Tracer 6.0.x errata
 

Similar a ARM Cortex-A53 Errata on Andoid

Android OS Porting: Introduction
Android OS Porting: IntroductionAndroid OS Porting: Introduction
Android OS Porting: IntroductionJollen Chen
 
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...ryancox
 
Summit 16: OPNFV on ARM - Hardware Freedom of Choice Has Arrived!
Summit 16: OPNFV on ARM - Hardware Freedom of Choice Has Arrived!Summit 16: OPNFV on ARM - Hardware Freedom of Choice Has Arrived!
Summit 16: OPNFV on ARM - Hardware Freedom of Choice Has Arrived!OPNFV
 
©LWTAOB© 2013 Cisco andLab – O.docx
©LWTAOB© 2013 Cisco andLab – O.docx©LWTAOB© 2013 Cisco andLab – O.docx
©LWTAOB© 2013 Cisco andLab – O.docxLynellBull52
 
Rtos ameba
Rtos amebaRtos ameba
Rtos amebaJou Neo
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardJian-Hong Pan
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011pundiramit
 
LCU14 209- LLVM Linux
LCU14 209- LLVM LinuxLCU14 209- LLVM Linux
LCU14 209- LLVM LinuxLinaro
 
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...BeMyApp
 
AI Hardware Landscape 2021
AI Hardware Landscape 2021AI Hardware Landscape 2021
AI Hardware Landscape 2021Grigory Sapunov
 
0xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp020xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp02chon2010
 
HKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewHKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewLinaro
 

Similar a ARM Cortex-A53 Errata on Andoid (20)

Android OS Porting: Introduction
Android OS Porting: IntroductionAndroid OS Porting: Introduction
Android OS Porting: Introduction
 
C programming session10
C programming  session10C programming  session10
C programming session10
 
Embedded C programming session10
Embedded C programming  session10Embedded C programming  session10
Embedded C programming session10
 
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
 
Cuda debugger
Cuda debuggerCuda debugger
Cuda debugger
 
Summit 16: OPNFV on ARM - Hardware Freedom of Choice Has Arrived!
Summit 16: OPNFV on ARM - Hardware Freedom of Choice Has Arrived!Summit 16: OPNFV on ARM - Hardware Freedom of Choice Has Arrived!
Summit 16: OPNFV on ARM - Hardware Freedom of Choice Has Arrived!
 
©LWTAOB© 2013 Cisco andLab – O.docx
©LWTAOB© 2013 Cisco andLab – O.docx©LWTAOB© 2013 Cisco andLab – O.docx
©LWTAOB© 2013 Cisco andLab – O.docx
 
Rtos ameba
Rtos amebaRtos ameba
Rtos ameba
 
ARM Processor Tutorial
ARM Processor Tutorial ARM Processor Tutorial
ARM Processor Tutorial
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development Board
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011
 
LCU14 209- LLVM Linux
LCU14 209- LLVM LinuxLCU14 209- LLVM Linux
LCU14 209- LLVM Linux
 
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
 
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
 
AI Hardware Landscape 2021
AI Hardware Landscape 2021AI Hardware Landscape 2021
AI Hardware Landscape 2021
 
Debugging 2013- Jesper Brouer
Debugging 2013- Jesper BrouerDebugging 2013- Jesper Brouer
Debugging 2013- Jesper Brouer
 
0xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp020xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp02
 
Basic Linux kernel
Basic Linux kernelBasic Linux kernel
Basic Linux kernel
 
HKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewHKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overview
 

Último

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 

Último (20)

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 

ARM Cortex-A53 Errata on Andoid

  • 1. ARM Cortex-A53 errata on Android @hidenorly
  • 3. Summary of the errata ● There are critical errata on early verson of Cortex-A53. ○ The errata are only caused in AArch64. ■ Erratum 835769 ■ Erratum 843419 ○ These are for A53 only, not on A57/Denver (nVIDIA). ● The solution for the errata is workaround to avoid the condition by changing the native code sequence.
  • 4. Errata description from AOSP commit Erratum 835769. ● https://android-review.googlesource. com/#/c/113144/ ● AArch64: Addressing Cortex-A53 erratum 835769. ● Some early revisions of the Cortex-A53 have an erratum (835769) whereby ● it is possible for a 64-bit multiply- accumulate instruction in AArch64 state to generate an incorrect result. Erratum 843419 ● https://android-review.googlesource. com/#/c/144580/ ● [AArch64] Workaround for cortex-a53 erratum 843419 ● Some early revisions of the Cortex-A53 have an erratum (843419). ● The details of the erratum are quite complex and involve dynamic conditions. For the purposes of the workaround we have simplified the static conditions to an ADRP in the last two instructions of a 4KByte page, followed within four instructions by a load/store dependent on the ADRP.
  • 5. Default 64bit Andoid device configuration brings the ARM errata problematic situation ● Most of 64bit Android devices configure with init.zygote64_32.rc ● And ABI list are configured as ○ [ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a, armeabi] (from Nexus 9) Pure Java app will be executing in AArch64 with ART.
  • 6. Execution mode on abilist=armv8, armeabiv7 Executing mode 32bit native library 64bit native library Render Script 64bit none none none 32bit exist none none 32bit none none exist 32bit exist exist exist 64bit exist exist none Currently, if the apk has 32bit only native libary or the app uses render script, the application will be executing in 32bit. But the RenderScript limitation might be changed future platform. The errata might be affected to most of applications on 64bit ARM system.
  • 7. Cases to hit the errata Type of code Why? Workaround? Availablity @ 25 April 2015 Pure Java code ART compiles dex to AArch64 machine code Require to patch workaround for ART by device manufacture side Depends on device Native library for lib/arm64/ Old toolchain generates the problematic code for the errata Recompile with workaround enabled toolchain (NDK) by app developer side. Partially but not fully available on NDK Java Script with ChromiumWebView ChromiumWebView is executing in AArch64 mode if your app is running in AArch64. Accept to use updated version of System WebView through Google Play Not available Java Script with Chrome Chrome is executing in AArch64 on 64bit system Accept to use updated version of Chrome through Google Play Not available
  • 8. Workaround on ART for device FW platform/art erratum 835769 https://android-review.googlesource.com/#/c/113144/ https://android-review.googlesource.com/#/c/118930/ erratum 843419 https://android-review.googlesource.com/#/c/145099/ https://android-review.googlesource.com/#/c/144632/ Please note that ADRP is not used on L MR0 / MR1. And then patches for 843419 are not needed.
  • 9. Tool chain to build device FW binutils erratum 835769 https://android-review.googlesource.com/#/c/112784/ https://android-review.googlesource.com/#/c/116841/ https://android-review.googlesource.com/#/c/144561/ https://android-review.googlesource.com/#/c/144568/ https://android-review.googlesource.com/#/c/144574/ https://android-review.googlesource.com/#/c/144576/ erratum 843419 https://android-review.googlesource.com/#/c/144580/ https://android-review.googlesource.com/#/c/147414/ Basically we can expect them by prebuilt binaries. And it’s regarding ld.bfd.
  • 10. Tool chain to build device FW platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9 erratum 835769 https://android-review.googlesource.com/117420 erratum 843419 https://android-review.googlesource.com/145972 Please note that the option is NOT set as default (but will be enabled on NDK, not on platform build). (https://android-review.googlesource.com/#/c/145066/1/build/tools/toolchain-patches/gcc/0013-Modify-LINK_SPEC-to-pass-fix-cortex-a53-843419-as-de.patch) ldflags:= ¥ -Wl --fix-cortex-a53-835769 ¥ -Wl --fix-cortex-a53-843419 ¥
  • 11. Tool chain to build device FW clang, llvm erratum 835769 https://android-review.googlesource.com/#/c/111240/ (clang) https://android-review.googlesource.com/#/c/111230/ (llvm) erratum 843419 Not available... Basically platform build is by gcc and then it should be optional. But NDK supports clang/LLVM. And then without the support, NDK will not be released...
  • 12. NDK : Native libraries for AArch64 Workaround for 835769 is enabled as default on NDK10d. And then what application developers need to do is to ensure workaround for 843419. But the supported NDK is not released.
  • 13. JavaScript Engine V8 in Chromium https://code.google.com/p/chromium/issues/list? can=1&q=Cortex+53+errata&colspec=ID+Pri+M+Week+ReleaseBlock+Cr+Status+Owner+Summary+ OS+Modified&cells=tiles https://code.google.com/p/chromium/issues/list? can=1&q=Cortex+53+erratum&colspec=ID+Pri+M+Week+ReleaseBlock+Cr+Status+Owner+Summar y+OS+Modified&x=m&y=releaseblock&cells=tiles But “JavaScriptCore” used in WebKit has already the workaround for 835769 but not for 843419 http://code.metager.de/source/xref/WebKit/Source/JavaScriptCore/offlineasm/arm64.rb Based on my investigation, there is no workaround solution for the errata as of now.
  • 14. Summary ● For manufacturers/custom ROM developers ○ Build FW with the workaround enabled toolchain ○ Don’t forget to ensure the binary released SW too. ○ Please keep watching not only AOSP but also chromium’s V8. ● For application developers ○ Build your native library with workaround enabed NDK and re-release your app with the library.