はじめに
Google Tensor G1/G2用の Android 13 の kernel を眺めていたら、Trustyなるデバイスドライバを見つけました。Linuxのdriversの下には trusty は無いので Android 独自なのかな?と思っていました。
色々とGoogle君に聞いたら、下記のGoogle Blogを見つけました。この中で、Google Tensor G1 (Pixel 6 & Android 12) にて、Private Compute Core/Arm TrustZone/Trusty OS/Tensor Security Coreというものを導入したようです。
下図は上のブログにあるものです。説明のために引用します。
通常は、Android OS が Tensor SoC (G1/G2) の中の Main Application Processor (Cortex-X1/A76/A55) にて動いています。これに、
- Priate Compute Core
- Secure (TrustZone) にて動作する Trusty OS
- Tensor Security Core
が追加された感じです。
Trusty
Trusty は、ここ に説明があります。下図は、Trustyのサイトから説明のために引用します。
Trusty そのものは、ここ にあります。
Arm版だけでなく、Intel版は Intel のサイトにあります。
Private Compute Core
- Android Private Compute Core Architecture (公式論文)
- Introducing Android’s Private Compute Services
- Private Compute Service
どこに使われているのか?
どうらや、gsa というデバイスドライバが関係しているっぽい。Kconfig の 中で pKVM が使われている。
config GSA tristate "GSA driver" default n config GSA_PKVM bool "Support pKVM" depends on GSA depends on PKVM_S2MPU default n config GSA_GSC tristate "GSC Proxy" depends on GSA default n
gsa_tz.c では、TrustZone へのアクセスをしている。また、trusty のコードもあります。
#include <linux/trusty/trusty_ipc.h>
このコードの中で、trusty なるものがある。
#define HWMGR_TPU_PORT "com.android.trusty.gsa.hwmgr.tpu" #define HWMGR_AOC_PORT "com.android.trusty.gsa.hwmgr.aoc"