iMX: adding parsing to hab_status command
PATCH 1/1 iMX: adding parsing to hab_status command
From: Ulises Cardenas <[email protected]>
hab_status command returns a memory dump of the hab event log. But the raw data is not human-readable. Parsing such data into readable event will help to minimize debbuging time.
---
arch/arm/cpu/armv7/mx6/hab.c | 228 +++++++++++++++++++++++++++++++++++- arch/arm/include/asm/arch-mx6/hab.h | 85 ++++++++++++-- 2 files changed, 300 insertions(+), 13 deletions(-)
arch/arm/cpu/armv7/mx6/hab.c +227 -1
@@ -1,5 +1,5 @@/* -* Copyright (C) 2010-2014 Freescale Semiconductor, Inc. +* Copyright (C) 2010-2015 Freescale Semiconductor, Inc. * * SPDX-License-Identifier: GPL-2.0+ */
@@ -111,6 +111,220 @@* +------------+ + CSF_PAD_SIZE */ +#define MAX_RECORD_BYTES (8*1024)/* 4 kbytes */ + +struct record { +uint8_t tag;/* Tag */ +uint8_t len[2 ];/* Length */ +uint8_t par;/* Version */ +uint8_t contents[MAX_RECORD_BYTES ];/* Record Data */ +bool any_rec_flag; +}; + +char *rsn_str[] = {"RSN = HAB_RSN_ANY (0x00)\n" , +"RSN = HAB_ENG_FAIL (0x30)\n" , +"RSN = HAB_INV_ADDRESS (0x22)\n" , +"RSN = HAB_INV_ASSERTION (0x0C)\n" , +"RSN = HAB_INV_CALL (0x28)\n" , +"RSN = HAB_INV_CERTIFICATE (0x21)\n" , +"RSN = HAB_INV_COMMAND (0x06)\n" , +"RSN = HAB_INV_CSF (0x11)\n" , +"RSN = HAB_INV_DCD (0x27)\n" , +"RSN = HAB_INV_INDEX (0x0F)\n" , +"RSN = HAB_INV_IVT (0x05)\n" , +"RSN = HAB_INV_KEY (0x1D)\n" , +"RSN = HAB_INV_RETURN (0x1E)\n" , +"RSN = HAB_INV_SIGNATURE (0x18)\n" , +"RSN = HAB_INV_SIZE (0x17)\n" , +"RSN = HAB_MEM_FAIL (0x2E)\n" , +"RSN = HAB_OVR_COUNT (0x2B)\n" , +"RSN = HAB_OVR_STORAGE (0x2D)\n" , +"RSN = HAB_UNS_ALGORITHM (0x12)\n" , +"RSN = HAB_UNS_COMMAND (0x03)\n" , +"RSN = HAB_UNS_ENGINE (0x0A)\n" , +"RSN = HAB_UNS_ITEM (0x24)\n" , +"RSN = HAB_UNS_KEY (0x1B)\n" , +"RSN = HAB_UNS_PROTOCOL (0x14)\n" , +"RSN = HAB_UNS_STATE (0x09)\n" , +"RSN = INVALID\n" }; + +char *sts_str[] = {"STS = HAB_SUCCESS (0xF0)\n" , +"STS = HAB_FAILURE (0x33)\n" , +"STS = HAB_WARNING (0x69)\n" , +"STS = INVALID\n" }; + +char *eng_str[] = {"ENG = HAB_ENG_ANY (0x00)\n" , +"ENG = HAB_ENG_SCC (0x03)\n" , +"ENG = HAB_ENG_RTIC (0x05)\n" , +"ENG = HAB_ENG_SAHARA (0x06)\n" , +"ENG = HAB_ENG_CSU (0x0A)\n" , +"ENG = HAB_ENG_SRTC (0x0C)\n" , +"ENG = HAB_ENG_DCP (0x1B)\n" , +"ENG = HAB_ENG_CAAM (0x1D)\n" , +"ENG = HAB_ENG_SNVS (0x1E)\n" , +"ENG = HAB_ENG_OCOTP (0x21)\n" , +"ENG = HAB_ENG_DTCP (0x22)\n" , +"ENG = HAB_ENG_ROM (0x36)\n" , +"ENG = HAB_ENG_HDCP (0x24)\n" , +"ENG = HAB_ENG_RTL (0x77)\n" , +"ENG = HAB_ENG_SW (0xFF)\n" , +"ENG = INVALID\n" }; + +char *ctx_str[] = {"CTX = HAB_CTX_ANY(0x00)\n" , +"CTX = HAB_CTX_FAB (0xFF)\n" , +"CTX = HAB_CTX_ENTRY (0xE1)\n" , +"CTX = HAB_CTX_TARGET (0x33)\n" , +"CTX = HAB_CTX_AUTHENTICATE (0x0A)\n" , +"CTX = HAB_CTX_DCD (0xDD)\n" , +"CTX = HAB_CTX_CSF (0xCF)\n" , +"CTX = HAB_CTX_COMMAND (0xC0)\n" , +"CTX = HAB_CTX_AUT_DAT (0xDB)\n" , +"CTX = HAB_CTX_ASSERT (0xA0)\n" , +"CTX = HAB_CTX_EXIT (0xEE)\n" , +"CTX = INVALID\n" }; + +static inline uint8_t get_rsn_idx (uint8_t rsn) +{ +uint8_t result; +if (rsn ==HAB_RSN_ANY ) + result =0 ; +else if (rsn ==HAB_ENG_FAIL ) + result =1 ; +else if (rsn ==HAB_INV_ADDRESS ) + result =2 ; +else if (rsn ==HAB_INV_ASSERTION ) + result =3 ; +else if (rsn ==HAB_INV_CALL ) + result =4 ; +else if (rsn ==HAB_INV_CERTIFICATE ) + result =5 ; +else if (rsn ==HAB_INV_COMMAND ) + result =6 ; +else if (rsn ==HAB_INV_CSF ) + result =7 ; +else if (rsn ==HAB_INV_DCD ) + result =8 ; +else if (rsn ==HAB_INV_INDEX ) + result =9 ; +else if (rsn ==HAB_INV_IVT ) + result =10 ; +else if (rsn ==HAB_INV_KEY ) + result =11 ; +else if (rsn ==HAB_INV_RETURN ) + result =12 ; +else if (rsn ==HAB_INV_SIGNATURE ) + result =13 ; +else if (rsn ==HAB_INV_SIZE ) + result =14 ; +else if (rsn ==HAB_MEM_FAIL ) + result =15 ; +else if (rsn ==HAB_OVR_COUNT ) + result =16 ; +else if (rsn ==HAB_OVR_STORAGE ) + result =17 ; +else if (rsn ==HAB_UNS_ALGORITHM ) + result =18 ; +else if (rsn ==HAB_UNS_COMMAND ) + result =19 ; +else if (rsn ==HAB_UNS_ENGINE ) + result =20 ; +else if (rsn ==HAB_UNS_ITEM ) + result =21 ; +else if (rsn ==HAB_UNS_KEY ) + result =22 ; +else if (rsn ==HAB_UNS_PROTOCOL ) + result =23 ; +else if (rsn ==HAB_UNS_STATE ) + result =24 ; +else + result =25 ; + +return result; +} + +static inline uint8_t get_sts_idx (uint8_t sts) +{ +uint8_t result; +if (sts ==HAB_SUCCESS ) + result =0 ; +else if (sts ==HAB_FAILURE ) + result =1 ; +else if (sts ==HAB_WARNING ) + result =2 ; +else + result =3 ; + +return result; +} + +static inline uint8_t get_eng_idx (uint8_t eng) +{ +uint8_t result; +if (eng ==HAB_ENG_ANY ) + result =0 ; +else if (eng ==HAB_ENG_SCC ) + result =1 ; +else if (eng ==HAB_ENG_RTIC ) + result =2 ; +else if (eng ==HAB_ENG_SAHARA ) + result =3 ; +else if (eng ==HAB_ENG_CSU ) + result =4 ; +else if (eng ==HAB_ENG_SRTC ) + result =5 ; +else if (eng ==HAB_ENG_DCP ) + result =6 ; +else if (eng ==HAB_ENG_CAAM ) + result =7 ; +else if (eng ==HAB_ENG_SNVS ) + result =8 ; +else if (eng ==HAB_ENG_OCOTP ) + result =9 ; +else if (eng ==HAB_ENG_DTCP ) + result =10 ; +else if (eng ==HAB_ENG_ROM ) + result =11 ; +else if (eng ==HAB_ENG_HDCP ) + result =12 ; +else if (eng ==HAB_ENG_RTL ) + result =13 ; +else if (eng ==HAB_ENG_SW ) + result =14 ; +else + result =9 ; +return result; +} + +static inline uint8_t get_ctx_idx (uint8_t ctx) +{ +uint8_t result; +if (ctx ==HAB_CTX_ANY ) + result =0 ; +else if (ctx ==HAB_CTX_FAB ) + result =1 ; +else if (ctx ==HAB_CTX_ENTRY ) + result =2 ; +else if (ctx ==HAB_CTX_TARGET ) + result =3 ; +else if (ctx ==HAB_CTX_AUTHENTICATE ) + result =4 ; +else if (ctx ==HAB_CTX_DCD ) + result =5 ; +else if (ctx ==HAB_CTX_CSF ) + result =6 ; +else if (ctx ==HAB_CTX_COMMAND ) + result =7 ; +else if (ctx ==HAB_CTX_AUT_DAT ) + result =8 ; +else if (ctx ==HAB_CTX_ASSERT ) + result =9 ; +else if (ctx ==HAB_CTX_EXIT ) + result =10 ; +else + result =11 ; +return result; +} +bool is_hab_enabled (void ) {struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR ;
@@ -122,6 +336,16 @@ bool is_hab_enabled(void)return (reg &0x2 ) ==0x2 ; } +void process_event_record (uint8_t *event_data,size_t bytes) +{ +struct record *rec = (struct record *)event_data; + +printf ("\n\n%s" , sts_str[get_sts_idx (rec->contents[0 ])]); +printf ("%s" , rsn_str[get_rsn_idx (rec->contents[1 ])]); +printf ("%s" , ctx_str[get_ctx_idx (rec->contents[2 ])]); +printf ("%s" , eng_str[get_eng_idx (rec->contents[3 ])]); +} +void display_event (uint8_t *event_data,size_t bytes) {uint32_t i;
@@ -137,6 +361,8 @@ void display_event(uint8_t *event_data, size_t bytes)else printf (" 0x%02x" , event_data[i]); } + +process_event_record (event_data, bytes); }int get_hab_status (void )
arch/arm/include/asm/arch-mx6/hab.h +73 -12
114 lines not on this page · raw message
Signature · 1 line
2.3.2
PATCH 1/1 iMX: adding parsing to hab_status command
Hi
On Jul 2, 2015 10:47 PM, <Ulises.
Quoted 10 lines · @freescale.com> wrote:
From: Ulises Cardenas <[email protected]>
hab_statuscommand returns a memory dump of the hab event log. But the raw data is not human-readable. Parsing such data into readable event will help to minimize debbuging time.Signed-off-by Ulises Cardenas <[email protected]>---
Please remove all those if else and then make sense to review
Michael
Quoted 1 line
arch/arm/cpu/armv7/mx6/hab.c | 228
+++++++++++++++++++++++++++++++++++-
Quoted 15 lines
arch/arm/include/asm/arch-mx6/hab.h | 85 ++++++++++++-- 2 files changed, 300 insertions(+), 13 deletions(-)arch/arm/cpu/armv7/mx6/hab.c +1
-1@@ -1,5 +1,5 @@/* -* Copyright (C) 2010-2014 Freescale Semiconductor, Inc. +* Copyright (C) 2010-2015 Freescale Semiconductor, Inc. * * SPDX-License-Identifier: GPL-2.0+ */
arch/arm/cpu/armv7/mx6/hab.c line 118
Quoted 8 lines
arch/arm/cpu/armv7/mx6/hab.c +5
-0@@ -111,6 +111,220 @@* +------------+ + CSF_PAD_SIZE */ +#define MAX_RECORD_BYTES (8*1024)/* 4 kbytes */ + +struct record { +uint8_t tag;/* Tag */ +uint8_t len[2 ];/* Length
*/
arch/arm/cpu/armv7/mx6/hab.c line 119
Quoted 1 line
arch/arm/cpu/armv7/mx6/hab.c +1
-0+uint8_t par;/*
Version */
Review
Quoted 238 lines
arch/arm/cpu/armv7/mx6/hab.c +220
-0+uint8_t contents[MAX_RECORD_BYTES ];/* Record Data */ +bool any_rec_flag; +}; + +char *rsn_str[] = {"RSN = HAB_RSN_ANY (0x00)\n" , +"RSN = HAB_ENG_FAIL (0x30)\n" , +"RSN = HAB_INV_ADDRESS (0x22)\n" , +"RSN = HAB_INV_ASSERTION (0x0C)\n" , +"RSN = HAB_INV_CALL (0x28)\n" , +"RSN = HAB_INV_CERTIFICATE (0x21)\n" , +"RSN = HAB_INV_COMMAND (0x06)\n" , +"RSN = HAB_INV_CSF (0x11)\n" , +"RSN = HAB_INV_DCD (0x27)\n" , +"RSN = HAB_INV_INDEX (0x0F)\n" , +"RSN = HAB_INV_IVT (0x05)\n" , +"RSN = HAB_INV_KEY (0x1D)\n" , +"RSN = HAB_INV_RETURN (0x1E)\n" , +"RSN = HAB_INV_SIGNATURE (0x18)\n" , +"RSN = HAB_INV_SIZE (0x17)\n" , +"RSN = HAB_MEM_FAIL (0x2E)\n" , +"RSN = HAB_OVR_COUNT (0x2B)\n" , +"RSN = HAB_OVR_STORAGE (0x2D)\n" , +"RSN = HAB_UNS_ALGORITHM (0x12)\n" , +"RSN = HAB_UNS_COMMAND (0x03)\n" , +"RSN = HAB_UNS_ENGINE (0x0A)\n" , +"RSN = HAB_UNS_ITEM (0x24)\n" , +"RSN = HAB_UNS_KEY (0x1B)\n" , +"RSN = HAB_UNS_PROTOCOL (0x14)\n" , +"RSN = HAB_UNS_STATE (0x09)\n" , +"RSN = INVALID\n" }; + +char *sts_str[] = {"STS = HAB_SUCCESS (0xF0)\n" , +"STS = HAB_FAILURE (0x33)\n" , +"STS = HAB_WARNING (0x69)\n" , +"STS = INVALID\n" }; + +char *eng_str[] = {"ENG = HAB_ENG_ANY (0x00)\n" , +"ENG = HAB_ENG_SCC (0x03)\n" , +"ENG = HAB_ENG_RTIC (0x05)\n" , +"ENG = HAB_ENG_SAHARA (0x06)\n" , +"ENG = HAB_ENG_CSU (0x0A)\n" , +"ENG = HAB_ENG_SRTC (0x0C)\n" , +"ENG = HAB_ENG_DCP (0x1B)\n" , +"ENG = HAB_ENG_CAAM (0x1D)\n" , +"ENG = HAB_ENG_SNVS (0x1E)\n" , +"ENG = HAB_ENG_OCOTP (0x21)\n" , +"ENG = HAB_ENG_DTCP (0x22)\n" , +"ENG = HAB_ENG_ROM (0x36)\n" , +"ENG = HAB_ENG_HDCP (0x24)\n" , +"ENG = HAB_ENG_RTL (0x77)\n" , +"ENG = HAB_ENG_SW (0xFF)\n" , +"ENG = INVALID\n" }; + +char *ctx_str[] = {"CTX = HAB_CTX_ANY(0x00)\n" , +"CTX = HAB_CTX_FAB (0xFF)\n" , +"CTX = HAB_CTX_ENTRY (0xE1)\n" , +"CTX = HAB_CTX_TARGET (0x33)\n" , +"CTX = HAB_CTX_AUTHENTICATE (0x0A)\n" , +"CTX = HAB_CTX_DCD (0xDD)\n" , +"CTX = HAB_CTX_CSF (0xCF)\n" , +"CTX = HAB_CTX_COMMAND (0xC0)\n" , +"CTX = HAB_CTX_AUT_DAT (0xDB)\n" , +"CTX = HAB_CTX_ASSERT (0xA0)\n" , +"CTX = HAB_CTX_EXIT (0xEE)\n" , +"CTX = INVALID\n" }; + +static inline uint8_t get_rsn_idx (uint8_t rsn) +{ +uint8_t result; +if (rsn ==HAB_RSN_ANY ) + result =0 ; +else if (rsn ==HAB_ENG_FAIL ) + result =1 ; +else if (rsn ==HAB_INV_ADDRESS ) + result =2 ; +else if (rsn ==HAB_INV_ASSERTION ) + result =3 ; +else if (rsn ==HAB_INV_CALL ) + result =4 ; +else if (rsn ==HAB_INV_CERTIFICATE ) + result =5 ; +else if (rsn ==HAB_INV_COMMAND ) + result =6 ; +else if (rsn ==HAB_INV_CSF ) + result =7 ; +else if (rsn ==HAB_INV_DCD ) + result =8 ; +else if (rsn ==HAB_INV_INDEX ) + result =9 ; +else if (rsn ==HAB_INV_IVT ) + result =10 ; +else if (rsn ==HAB_INV_KEY ) + result =11 ; +else if (rsn ==HAB_INV_RETURN ) + result =12 ; +else if (rsn ==HAB_INV_SIGNATURE ) + result =13 ; +else if (rsn ==HAB_INV_SIZE ) + result =14 ; +else if (rsn ==HAB_MEM_FAIL ) + result =15 ; +else if (rsn ==HAB_OVR_COUNT ) + result =16 ; +else if (rsn ==HAB_OVR_STORAGE ) + result =17 ; +else if (rsn ==HAB_UNS_ALGORITHM ) + result =18 ; +else if (rsn ==HAB_UNS_COMMAND ) + result =19 ; +else if (rsn ==HAB_UNS_ENGINE ) + result =20 ; +else if (rsn ==HAB_UNS_ITEM ) + result =21 ; +else if (rsn ==HAB_UNS_KEY ) + result =22 ; +else if (rsn ==HAB_UNS_PROTOCOL ) + result =23 ; +else if (rsn ==HAB_UNS_STATE ) + result =24 ; +else + result =25 ; + +return result; +} + +static inline uint8_t get_sts_idx (uint8_t sts) +{ +uint8_t result; +if (sts ==HAB_SUCCESS ) + result =0 ; +else if (sts ==HAB_FAILURE ) + result =1 ; +else if (sts ==HAB_WARNING ) + result =2 ; +else + result =3 ; + +return result; +} + +static inline uint8_t get_eng_idx (uint8_t eng) +{ +uint8_t result; +if (eng ==HAB_ENG_ANY ) + result =0 ; +else if (eng ==HAB_ENG_SCC ) + result =1 ; +else if (eng ==HAB_ENG_RTIC ) + result =2 ; +else if (eng ==HAB_ENG_SAHARA ) + result =3 ; +else if (eng ==HAB_ENG_CSU ) + result =4 ; +else if (eng ==HAB_ENG_SRTC ) + result =5 ; +else if (eng ==HAB_ENG_DCP ) + result =6 ; +else if (eng ==HAB_ENG_CAAM ) + result =7 ; +else if (eng ==HAB_ENG_SNVS ) + result =8 ; +else if (eng ==HAB_ENG_OCOTP ) + result =9 ; +else if (eng ==HAB_ENG_DTCP ) + result =10 ; +else if (eng ==HAB_ENG_ROM ) + result =11 ; +else if (eng ==HAB_ENG_HDCP ) + result =12 ; +else if (eng ==HAB_ENG_RTL ) + result =13 ; +else if (eng ==HAB_ENG_SW ) + result =14 ; +else + result =9 ; +return result; +} + +static inline uint8_t get_ctx_idx (uint8_t ctx) +{ +uint8_t result; +if (ctx ==HAB_CTX_ANY ) + result =0 ; +else if (ctx ==HAB_CTX_FAB ) + result =1 ; +else if (ctx ==HAB_CTX_ENTRY ) + result =2 ; +else if (ctx ==HAB_CTX_TARGET ) + result =3 ; +else if (ctx ==HAB_CTX_AUTHENTICATE ) + result =4 ; +else if (ctx ==HAB_CTX_DCD ) + result =5 ; +else if (ctx ==HAB_CTX_CSF ) + result =6 ; +else if (ctx ==HAB_CTX_COMMAND ) + result =7 ; +else if (ctx ==HAB_CTX_AUT_DAT ) + result =8 ; +else if (ctx ==HAB_CTX_ASSERT ) + result =9 ; +else if (ctx ==HAB_CTX_EXIT ) + result =10 ; +else + result =11 ; +return result; +} +bool is_hab_enabled (void ) {struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR ;@@ -122,6 +336,16 @@ bool is_hab_enabled(void)return (reg &0x2 ) ==0x2 ; } +void process_event_record (uint8_t *event_data,size_t bytes) +{ +struct record *rec = (struct record *)event_data; + +printf ("\n\n%s" , sts_str[get_sts_idx (rec->contents[0 ])]); +printf ("%s" , rsn_str[get_rsn_idx (rec->contents[1 ])]); +printf ("%s" , ctx_str[get_ctx_idx (rec->contents[2 ])]); +printf ("%s" , eng_str[get_eng_idx (rec->contents[3 ])]); +} +void display_event (uint8_t *event_data,size_t bytes) {uint32_t i;@@ -137,6 +361,8 @@ void display_event(uint8_t *event_data, size_t bytes)else printf (" 0x%02x" , event_data[i]); } + +process_event_record (event_data, bytes); }int get_hab_status (void )(quoted diff) +0
-0
b/arch/arm/include/asm/arch-mx6/hab.h
arch/arm/include/asm/arch-mx6/hab.h line 2
Quoted 7 lines
index c9e5318..6b043a9 100644
arch/arm/include/asm/arch-mx6/hab.h +1
-1@@ -1,5 +1,5 @@/* -* Copyright (C) 2012 Freescale Semiconductor, Inc. All Rights Reserved. +* Copyright (C) 2012-2015 Freescale Semiconductor, Inc. All Rights
Reserved.
Quoted 16 lines
arch/arm/include/asm/arch-mx6/hab.h +3
-3* * SPDX-License-Identifier: GPL-2.0+ * @@ -23,24 +23,68 @@ enum hab_status {/* Security Configuration definitions */ enum hab_config { -HAB_CFG_RETURN =0x33 ,/**< Field Return IC */ -HAB_CFG_OPEN =0xf0 ,/**< Non-secure IC */ -HAB_CFG_CLOSED =0xcc /**< Secure IC */ +HAB_CFG_RETURN =0x33 ,/* < Field Return IC */ +HAB_CFG_OPEN =0xf0 ,/* < Non-secure IC */ +HAB_CFG_CLOSED =0xcc /* < Secure IC */ };/* State definitions */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 33
Quoted 10 lines
arch/arm/include/asm/arch-mx6/hab.h +1
-8enum hab_state { -HAB_STATE_INITIAL =0x33 ,/**< Initialising state (transitory) */ -HAB_STATE_CHECK =0x55 ,/**< Check state (non-secure) */ -HAB_STATE_NONSECURE =0x66 ,/**< Non-secure state */ -HAB_STATE_TRUSTED =0x99 ,/**< Trusted state */ -HAB_STATE_SECURE =0xaa ,/**< Secure state */ -HAB_STATE_FAIL_SOFT =0xcc ,/**< Soft fail state */ -HAB_STATE_FAIL_HARD =0xff ,/**< Hard fail state (terminal) */ -HAB_STATE_NONE =0xf0 ,/**< No security state machine */ +HAB_STATE_INITIAL =0x33 ,/* Initialising state
(transitory) */
Quoted 4 lines
arch/arm/include/asm/arch-mx6/hab.h +4
-0+HAB_STATE_CHECK =0x55 ,/* Check state (non-secure) */ +HAB_STATE_NONSECURE =0x66 ,/* Non-secure state */ +HAB_STATE_TRUSTED =0x99 ,/* Trusted state */ + HAB_STATE_SECURE = 0xaa, /* Secure state */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status {
Quoted 10 lines
arch/arm/include/asm/arch-mx6/hab.h +7
-0+HAB_STATE_FAIL_SOFT =0xcc ,/* Soft fail state */ +HAB_STATE_FAIL_HARD =0xff ,/* Hard fail state (terminal) */ +HAB_STATE_NONE =0xf0 ,/* No security state machine */ HAB_STATE_MAX }; +enum hab_reason { +HAB_RSN_ANY =0x00 ,/* Match any reason */ +HAB_ENG_FAIL =0x30 ,/* Engine failure */ +HAB_INV_ADDRESS =0x22 ,/* Invalid address: access denied
*/
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 49
Quoted 2 lines
arch/arm/include/asm/arch-mx6/hab.h +2
-0+HAB_INV_ASSERTION =0x0c ,/* Invalid assertion */ + HAB_INV_CALL = 0x28, /* Function called out of
sequence */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 51
Quoted 2 lines
arch/arm/include/asm/arch-mx6/hab.h +2
-0+HAB_INV_CERTIFICATE =0x21 ,/* Invalid certificate */ + HAB_INV_COMMAND = 0x06, /* Invalid command: command malformed
*/
Quoted 5 lines
arch/arm/include/asm/arch-mx6/hab.h +5
-0+HAB_INV_CSF =0x11 ,/* Invalid csf */ +HAB_INV_DCD =0x27 ,/* Invalid dcd */ +HAB_INV_INDEX =0x0f ,/* Invalid index: access denied */ +HAB_INV_IVT =0x05 ,/* Invalid ivt */ + HAB_INV_KEY = 0x1d, /* Invalid key */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status {
Quoted 10 lines
arch/arm/include/asm/arch-mx6/hab.h +10
-0+HAB_INV_RETURN =0x1e ,/* Failed callback function */ +HAB_INV_SIGNATURE =0x18 ,/* Invalid signature */ +HAB_INV_SIZE =0x17 ,/* Invalid data size */ +HAB_MEM_FAIL =0x2e ,/* Memory failure */ +HAB_OVR_COUNT =0x2b ,/* Expired poll count */ +HAB_OVR_STORAGE =0x2d ,/* Exhausted storage region */ +HAB_UNS_ALGORITHM =0x12 ,/* Unsupported algorithm */ +HAB_UNS_COMMAND =0x03 ,/* Unsupported command */ +HAB_UNS_ENGINE =0x0a ,/* Unsupported engine */ +HAB_UNS_ITEM =0x24 ,/* Unsupported configuration item
*/
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 67
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_UNS_KEY = 0x1b, /* Unsupported key
type/parameters */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status {
Quoted 8 lines
arch/arm/include/asm/arch-mx6/hab.h +8
-0+HAB_UNS_PROTOCOL =0x14 ,/* Unsupported protocol */ +HAB_UNS_STATE =0x09 ,/* Unsuitable state */ + HAB_RSN_MAX +} hab_reason_t; + +enum hab_context { +HAB_CTX_ANY =0x00 ,/* Match any context */ +HAB_CTX_FAB =0xff ,/* Event logged in
hab_fab_test() */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 76
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_ENTRY = 0xe1, /* Event logged in
hab_rvt.entry() */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 77
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_TARGET = 0x33, /* Event logged in
hab_rvt.check_target() */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 78
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_AUTHENTICATE = 0x0a,/* Logged in
hab_rvt.authenticate_image() */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 79
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_DCD = 0xdd, /* Event logged in hab_rvt.run_dcd()
*/
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 80
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_CSF = 0xcf, /* Event logged in hab_rvt.run_csf()
*/
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 81
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_COMMAND = 0xc0, /* Event logged executing csf/dcd
command */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 83
Quoted 2 lines
arch/arm/include/asm/arch-mx6/hab.h +2
-0+HAB_CTX_AUT_DAT =0xdb ,/* Authenticated data block */ + HAB_CTX_ASSERT = 0xa0, /* Event logged in
hab_rvt.assert() */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 84
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_EXIT = 0xee, /* Event logged in hab_rvt.exit()
*/
arch/arm/include/asm/arch-mx6/hab.h typedef void *hab_rvt_authenticate_image_t(uint8_t,
Quoted 7 lines
arch/arm/include/asm/arch-mx6/hab.h +3
-0+ HAB_CTX_MAX +} hab_context_t; +/*Function prototype description*/ typedef enum hab_status hab_rvt_report_event_t (enum hab_status ,uint32_t ,uint8_t * ,size_t *);@@ -53,6 +97,22 @@ typedef void *hab_rvt_authenticate_image_t(uint8_t,
ptrdiff_t,
arch/arm/include/asm/arch-mx6/hab.h typedef void *hab_rvt_authenticate_image_t(uint8_t, ptrdiff_t,
Quoted 4 lines
arch/arm/include/asm/arch-mx6/hab.h +1
-0void **, size_t *, hab_loader_callback_f_t);typedef void hapi_clock_init_t (void ); +#define HAB_ENG_ANY 0x00/* Select first compatible engine
*/
Quoted 33 lines
arch/arm/include/asm/arch-mx6/hab.h +16
-1+#define HAB_ENG_SCC 0x03/* Security controller */ +#define HAB_ENG_RTIC 0x05/* Run-time integrity checker */ +#define HAB_ENG_SAHARA 0x06/* Crypto accelerator */ +#define HAB_ENG_CSU 0x0a/* Central Security Unit */ +#define HAB_ENG_SRTC 0x0c/* Secure clock */ +#define HAB_ENG_DCP 0x1b/* Data Co-Processor */ +#define HAB_ENG_CAAM 0x1d/* CAAM */ +#define HAB_ENG_SNVS 0x1e/* Secure Non-Volatile Storage */ +#define HAB_ENG_OCOTP 0x21/* Fuse controller */ +#define HAB_ENG_DTCP 0x22/* DTCP co-processor */ +#define HAB_ENG_ROM 0x36/* Protected ROM area */ +#define HAB_ENG_HDCP 0x24/* HDCP co-processor */ +#define HAB_ENG_RTL 0x77/* RTL simulation engine */ +#define HAB_ENG_SW 0xff/* Software engine */ +#ifdef CONFIG_MX6SX #define HAB_RVT_BASE 0x00000100#else @@ -73,6 +133,7 @@ typedef void hapi_clock_init_t(void);#define HAB_CID_ROM 0/**< ROM Caller ID */ #define HAB_CID_UBOOT 1/**< UBOOT Caller ID*/ +/* ----------- end of HAB API updates ------------*/ #endif --2.3.2
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot
PATCH 1/1 iMX: adding parsing to hab_status command
Hi Michael,
Quoted 14 lines · Michael Trimarchi
Hi
On Jul 2, 2015 10:47 PM, <Ulises.
Quoted 2 lines · @freescale.com <http://freescale.com>> wrote:
From: Ulises Cardenas <[email protected]
<mailto:[email protected]>>
Quoted 5 lines
hab_statuscommand returns a memory dump of the hab event log. But the raw data is not human-readable. Parsing such data into readable event will help to minimize debbuging time.
Quoted 9 lines
Quoted 1 line
Signed-off-by Ulises Cardenas <[email protected]<mailto:[email protected]>>
Quoted 2 lines
---
Please remove all those if else and then make sense to review
Michael
This was a port of a external parser. And we wanted to keep a similiar structure.
However, I understand your point. I think the problem that the original programmer had
was the trasversal of enums with a non-increasing order. I submitted another version of
it addressing the issue.
Thanks,
Ulises
Quoted 419 lines
Quoted 2 lines
arch/arm/cpu/armv7/mx6/hab.c | 228+++++++++++++++++++++++++++++++++++-
Quoted 72 lines
arch/arm/include/asm/arch-mx6/hab.h | 85 ++++++++++++-- 2 files changed, 300 insertions(+), 13 deletions(-)arch/arm/cpu/armv7/mx6/hab.c +55
-1@@ -1,5 +1,5 @@/* -* Copyright (C) 2010-2014 Freescale Semiconductor, Inc. +* Copyright (C) 2010-2015 Freescale Semiconductor, Inc. * * SPDX-License-Identifier: GPL-2.0+ */ @@ -111,6 +111,220 @@* +------------+ + CSF_PAD_SIZE */ +#define MAX_RECORD_BYTES (8*1024)/* 4 kbytes */ + +struct record { +uint8_t tag;/* Tag */ +uint8_t len[2 ];/* Length */ +uint8_t par;/* Version */ +uint8_t contents[MAX_RECORD_BYTES ];/* Record Data */ +bool any_rec_flag; +}; + +char *rsn_str[] = {"RSN = HAB_RSN_ANY (0x00)\n" , +"RSN = HAB_ENG_FAIL (0x30)\n" , +"RSN = HAB_INV_ADDRESS (0x22)\n" , +"RSN = HAB_INV_ASSERTION (0x0C)\n" , +"RSN = HAB_INV_CALL (0x28)\n" , +"RSN = HAB_INV_CERTIFICATE (0x21)\n" , +"RSN = HAB_INV_COMMAND (0x06)\n" , +"RSN = HAB_INV_CSF (0x11)\n" , +"RSN = HAB_INV_DCD (0x27)\n" , +"RSN = HAB_INV_INDEX (0x0F)\n" , +"RSN = HAB_INV_IVT (0x05)\n" , +"RSN = HAB_INV_KEY (0x1D)\n" , +"RSN = HAB_INV_RETURN (0x1E)\n" , +"RSN = HAB_INV_SIGNATURE (0x18)\n" , +"RSN = HAB_INV_SIZE (0x17)\n" , +"RSN = HAB_MEM_FAIL (0x2E)\n" , +"RSN = HAB_OVR_COUNT (0x2B)\n" , +"RSN = HAB_OVR_STORAGE (0x2D)\n" , +"RSN = HAB_UNS_ALGORITHM (0x12)\n" , +"RSN = HAB_UNS_COMMAND (0x03)\n" , +"RSN = HAB_UNS_ENGINE (0x0A)\n" , +"RSN = HAB_UNS_ITEM (0x24)\n" , +"RSN = HAB_UNS_KEY (0x1B)\n" , +"RSN = HAB_UNS_PROTOCOL (0x14)\n" , +"RSN = HAB_UNS_STATE (0x09)\n" , +"RSN = INVALID\n" }; + +char *sts_str[] = {"STS = HAB_SUCCESS (0xF0)\n" , +"STS = HAB_FAILURE (0x33)\n" , +"STS = HAB_WARNING (0x69)\n" , +"STS = INVALID\n" }; + +char *eng_str[] = {"ENG = HAB_ENG_ANY (0x00)\n" , +"ENG = HAB_ENG_SCC (0x03)\n" , +"ENG = HAB_ENG_RTIC (0x05)\n" , +"ENG = HAB_ENG_SAHARA (0x06)\n" , +"ENG = HAB_ENG_CSU (0x0A)\n" , +"ENG = HAB_ENG_SRTC (0x0C)\n" , +"ENG = HAB_ENG_DCP (0x1B)\n" , +"ENG = HAB_ENG_CAAM (0x1D)\n" , +"ENG = HAB_ENG_SNVS (0x1E)\n" , +"ENG = HAB_ENG_OCOTP (0x21)\n" , +"ENG = HAB_ENG_DTCP (0x22)\n" , +"ENG = HAB_ENG_ROM (0x36)\n" ,arch/arm/cpu/armv7/mx6/hab.c line 177
Quoted 10 lines
arch/arm/cpu/armv7/mx6/hab.c +10
-0+ "ENG = HAB_ENG_HDCP (0x24)\n", + "ENG = HAB_ENG_RTL (0x77)\n", + "ENG = HAB_ENG_SW (0xFF)\n", + "ENG = INVALID\n"}; + +char *ctx_str[] = {"CTX = HAB_CTX_ANY(0x00)\n" , +"CTX = HAB_CTX_FAB (0xFF)\n" , +"CTX = HAB_CTX_ENTRY (0xE1)\n" , +"CTX = HAB_CTX_TARGET (0x33)\n" , + "CTX = HAB_CTX_AUTHENTICATE(0x0A)\n",
arch/arm/cpu/armv7/mx6/hab.c void display_event(uint8_t *event_data, size_t
Quoted 171 lines
arch/arm/cpu/armv7/mx6/hab.c +160
-0+"CTX = HAB_CTX_DCD (0xDD)\n" , +"CTX = HAB_CTX_CSF (0xCF)\n" , +"CTX = HAB_CTX_COMMAND (0xC0)\n" , +"CTX = HAB_CTX_AUT_DAT (0xDB)\n" , +"CTX = HAB_CTX_ASSERT (0xA0)\n" , +"CTX = HAB_CTX_EXIT (0xEE)\n" , + "CTX = INVALID\n"}; + +static inline uint8_t get_rsn_idx (uint8_t rsn) +{ +uint8_t result; +if (rsn ==HAB_RSN_ANY ) + result =0 ; +else if (rsn ==HAB_ENG_FAIL ) + result =1 ; +else if (rsn ==HAB_INV_ADDRESS ) + result =2 ; +else if (rsn ==HAB_INV_ASSERTION ) + result =3 ; +else if (rsn ==HAB_INV_CALL ) + result =4 ; +else if (rsn ==HAB_INV_CERTIFICATE ) + result =5 ; +else if (rsn ==HAB_INV_COMMAND ) + result =6 ; +else if (rsn ==HAB_INV_CSF ) + result =7 ; +else if (rsn ==HAB_INV_DCD ) + result =8 ; +else if (rsn ==HAB_INV_INDEX ) + result =9 ; +else if (rsn ==HAB_INV_IVT ) + result =10 ; +else if (rsn ==HAB_INV_KEY ) + result =11 ; +else if (rsn ==HAB_INV_RETURN ) + result =12 ; +else if (rsn ==HAB_INV_SIGNATURE ) + result =13 ; +else if (rsn ==HAB_INV_SIZE ) + result =14 ; +else if (rsn ==HAB_MEM_FAIL ) + result =15 ; +else if (rsn ==HAB_OVR_COUNT ) + result =16 ; +else if (rsn ==HAB_OVR_STORAGE ) + result =17 ; +else if (rsn ==HAB_UNS_ALGORITHM ) + result =18 ; +else if (rsn ==HAB_UNS_COMMAND ) + result =19 ; +else if (rsn ==HAB_UNS_ENGINE ) + result =20 ; +else if (rsn ==HAB_UNS_ITEM ) + result =21 ; +else if (rsn ==HAB_UNS_KEY ) + result =22 ; +else if (rsn ==HAB_UNS_PROTOCOL ) + result =23 ; +else if (rsn ==HAB_UNS_STATE ) + result =24 ; +else + result =25 ; + +return result; +} + +static inline uint8_t get_sts_idx (uint8_t sts) +{ +uint8_t result; +if (sts ==HAB_SUCCESS ) + result =0 ; +else if (sts ==HAB_FAILURE ) + result =1 ; +else if (sts ==HAB_WARNING ) + result =2 ; +else + result =3 ; + +return result; +} + +static inline uint8_t get_eng_idx (uint8_t eng) +{ +uint8_t result; +if (eng ==HAB_ENG_ANY ) + result =0 ; +else if (eng ==HAB_ENG_SCC ) + result =1 ; +else if (eng ==HAB_ENG_RTIC ) + result =2 ; +else if (eng ==HAB_ENG_SAHARA ) + result =3 ; +else if (eng ==HAB_ENG_CSU ) + result =4 ; +else if (eng ==HAB_ENG_SRTC ) + result =5 ; +else if (eng ==HAB_ENG_DCP ) + result =6 ; +else if (eng ==HAB_ENG_CAAM ) + result =7 ; +else if (eng ==HAB_ENG_SNVS ) + result =8 ; +else if (eng ==HAB_ENG_OCOTP ) + result =9 ; +else if (eng ==HAB_ENG_DTCP ) + result =10 ; +else if (eng ==HAB_ENG_ROM ) + result =11 ; +else if (eng ==HAB_ENG_HDCP ) + result =12 ; +else if (eng ==HAB_ENG_RTL ) + result =13 ; +else if (eng ==HAB_ENG_SW ) + result =14 ; +else + result =9 ; +return result; +} + +static inline uint8_t get_ctx_idx (uint8_t ctx) +{ +uint8_t result; +if (ctx ==HAB_CTX_ANY ) + result =0 ; +else if (ctx ==HAB_CTX_FAB ) + result =1 ; +else if (ctx ==HAB_CTX_ENTRY ) + result =2 ; +else if (ctx ==HAB_CTX_TARGET ) + result =3 ; +else if (ctx ==HAB_CTX_AUTHENTICATE ) + result =4 ; +else if (ctx ==HAB_CTX_DCD ) + result =5 ; +else if (ctx ==HAB_CTX_CSF ) + result =6 ; +else if (ctx ==HAB_CTX_COMMAND ) + result =7 ; +else if (ctx ==HAB_CTX_AUT_DAT ) + result =8 ; +else if (ctx ==HAB_CTX_ASSERT ) + result =9 ; +else if (ctx ==HAB_CTX_EXIT ) + result =10 ; +else + result =11 ; +return result; +} +bool is_hab_enabled (void ) {struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR ;@@ -122,6 +336,16 @@ bool is_hab_enabled(void)return (reg &0x2 ) ==0x2 ; } +void process_event_record (uint8_t *event_data,size_t bytes) +{ +struct record *rec = (struct record *)event_data; + +printf ("\n\n%s" , sts_str[get_sts_idx (rec->contents[0 ])]); +printf ("%s" , rsn_str[get_rsn_idx (rec->contents[1 ])]); +printf ("%s" , ctx_str[get_ctx_idx (rec->contents[2 ])]); +printf ("%s" , eng_str[get_eng_idx (rec->contents[3 ])]); +} +void display_event (uint8_t *event_data,size_t bytes) {uint32_t i;@@ -137,6 +361,8 @@ void display_event(uint8_t *event_data, size_tbytes)
Review
Quoted 9 lines
arch/arm/cpu/armv7/mx6/hab.c +2
-0else printf (" 0x%02x" , event_data[i]); } + +process_event_record (event_data, bytes); }int get_hab_status (void )(quoted diff) +0
-0
b/arch/arm/include/asm/arch-mx6/hab.harch/arm/include/asm/arch-mx6/hab.h line 2
Quoted 6 lines
index c9e5318..6b043a9 100644
arch/arm/include/asm/arch-mx6/hab.h +0
-1@@ -1,5 +1,5 @@/* -* Copyright (C) 2012 Freescale Semiconductor, Inc. All Rights Reserved.
arch/arm/include/asm/arch-mx6/hab.h line 2
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+* Copyright (C) 2012-2015 Freescale Semiconductor, Inc. All Rights Reserved.
Quoted 8 lines
arch/arm/include/asm/arch-mx6/hab.h +0
-1* * SPDX-License-Identifier: GPL-2.0+ * @@ -23,24 +23,68 @@ enum hab_status {/* Security Configuration definitions */ enum hab_config { -HAB_CFG_RETURN =0x33 ,/**< Field Return IC */ arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 33
Quoted 10 lines
arch/arm/include/asm/arch-mx6/hab.h +3
-3-HAB_CFG_OPEN =0xf0 ,/**< Non-secure IC */ -HAB_CFG_CLOSED =0xcc /**< Secure IC */ +HAB_CFG_RETURN =0x33 ,/* < Field Return IC */ +HAB_CFG_OPEN =0xf0 ,/* < Non-secure IC */ +HAB_CFG_CLOSED =0xcc /* < Secure IC */ };/* State definitions */ enum hab_state { -HAB_STATE_INITIAL =0x33 ,/**< Initialising state (transitory) */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status {
Quoted 8 lines
arch/arm/include/asm/arch-mx6/hab.h +1
-7-HAB_STATE_CHECK =0x55 ,/**< Check state (non-secure) */ -HAB_STATE_NONSECURE =0x66 ,/**< Non-secure state */ -HAB_STATE_TRUSTED =0x99 ,/**< Trusted state */ -HAB_STATE_SECURE =0xaa ,/**< Secure state */ -HAB_STATE_FAIL_SOFT =0xcc ,/**< Soft fail state */ -HAB_STATE_FAIL_HARD =0xff ,/**< Hard fail state (terminal) */ - HAB_STATE_NONE = 0xf0, /**< No security state machine */ + HAB_STATE_INITIAL = 0x33, /* Initialising state(transitory) */
Quoted 4 lines
arch/arm/include/asm/arch-mx6/hab.h +4
-0+HAB_STATE_CHECK =0x55 ,/* Check state (non-secure) */ +HAB_STATE_NONSECURE =0x66 ,/* Non-secure state */ +HAB_STATE_TRUSTED =0x99 ,/* Trusted state */ + HAB_STATE_SECURE = 0xaa, /* Secure state */arch/arm/include/asm/arch-mx6/hab.h enum hab_status {
Quoted 10 lines
arch/arm/include/asm/arch-mx6/hab.h +7
-0+HAB_STATE_FAIL_SOFT =0xcc ,/* Soft fail state */ +HAB_STATE_FAIL_HARD =0xff ,/* Hard fail state (terminal) */ +HAB_STATE_NONE =0xf0 ,/* No security state machine */ HAB_STATE_MAX }; +enum hab_reason { +HAB_RSN_ANY =0x00 ,/* Match any reason */ +HAB_ENG_FAIL =0x30 ,/* Engine failure */ +HAB_INV_ADDRESS =0x22 ,/* Invalid address: access denied */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 49
Quoted 2 lines
arch/arm/include/asm/arch-mx6/hab.h +2
-0+HAB_INV_ASSERTION =0x0c ,/* Invalid assertion */ + HAB_INV_CALL = 0x28, /* Function called out ofsequence */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 51
Quoted 2 lines
arch/arm/include/asm/arch-mx6/hab.h +2
-0+HAB_INV_CERTIFICATE =0x21 ,/* Invalid certificate */ + HAB_INV_COMMAND = 0x06, /* Invalid command: commandmalformed */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status {
Quoted 3 lines
arch/arm/include/asm/arch-mx6/hab.h +3
-0+HAB_INV_CSF =0x11 ,/* Invalid csf */ +HAB_INV_DCD =0x27 ,/* Invalid dcd */ + HAB_INV_INDEX = 0x0f, /* Invalid index: accessdenied */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status {
Quoted 12 lines
arch/arm/include/asm/arch-mx6/hab.h +12
-0+HAB_INV_IVT =0x05 ,/* Invalid ivt */ +HAB_INV_KEY =0x1d ,/* Invalid key */ +HAB_INV_RETURN =0x1e ,/* Failed callback function */ +HAB_INV_SIGNATURE =0x18 ,/* Invalid signature */ +HAB_INV_SIZE =0x17 ,/* Invalid data size */ +HAB_MEM_FAIL =0x2e ,/* Memory failure */ +HAB_OVR_COUNT =0x2b ,/* Expired poll count */ +HAB_OVR_STORAGE =0x2d ,/* Exhausted storage region */ +HAB_UNS_ALGORITHM =0x12 ,/* Unsupported algorithm */ +HAB_UNS_COMMAND =0x03 ,/* Unsupported command */ +HAB_UNS_ENGINE =0x0a ,/* Unsupported engine */ +HAB_UNS_ITEM =0x24 ,/* Unsupported configuration item */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 67
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_UNS_KEY = 0x1b, /* Unsupported keytype/parameters */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status {
Quoted 8 lines
arch/arm/include/asm/arch-mx6/hab.h +8
-0+HAB_UNS_PROTOCOL =0x14 ,/* Unsupported protocol */ +HAB_UNS_STATE =0x09 ,/* Unsuitable state */ + HAB_RSN_MAX +} hab_reason_t; + +enum hab_context { +HAB_CTX_ANY =0x00 ,/* Match any context */ +HAB_CTX_FAB =0xff ,/* Event logged in
hab_fab_test()*/arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 76
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_ENTRY = 0xe1, /* Event logged in
hab_rvt.entry()*/arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 77
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_TARGET = 0x33, /* Event logged in
hab_rvt.check_target()*/arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 78
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_AUTHENTICATE = 0x0a,/* Logged in
hab_rvt.authenticate_image()*/arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 79
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_DCD = 0xdd, /* Event logged in
hab_rvt.run_dcd()*/arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 80
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_CSF = 0xcf, /* Event logged in
hab_rvt.run_csf()*/arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 81
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_COMMAND = 0xc0, /* Event logged executingcsf/dcd command */
arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 83
Quoted 2 lines
arch/arm/include/asm/arch-mx6/hab.h +2
-0+HAB_CTX_AUT_DAT =0xdb ,/* Authenticated data block */ + HAB_CTX_ASSERT = 0xa0, /* Event logged in
hab_rvt.assert()*/arch/arm/include/asm/arch-mx6/hab.h enum hab_status { · line 84
Quoted 1 line
arch/arm/include/asm/arch-mx6/hab.h +1
-0+ HAB_CTX_EXIT = 0xee, /* Event logged in
hab_rvt.exit()*/arch/arm/include/asm/arch-mx6/hab.h enum hab_status {
Quoted 5 lines
arch/arm/include/asm/arch-mx6/hab.h +3
-0+HAB_CTX_MAX +} hab_context_t; +/*Function prototype description*/ typedef enum hab_status hab_rvt_report_event_t(enum hab_status,
uint32_t,arch/arm/include/asm/arch-mx6/hab.h typedef void
Quoted 2 lines
arch/arm/include/asm/arch-mx6/hab.h +0
-0uint8_t* , size_t*);@@ -53,6 +97,22 @@ typedef void*hab_rvt_authenticate_image_t(uint8_t,
ptrdiff_t,arch/arm/include/asm/arch-mx6/hab.h typedef void *hab_rvt_authenticate_image_t(uint8_t, ptrdiff_t,
Quoted 4 lines
arch/arm/include/asm/arch-mx6/hab.h +1
-0void **, size_t *, hab_loader_callback_f_t);typedef void hapi_clock_init_t (void ); +#define HAB_ENG_ANY 0x00/* Select first compatible engine */
Quoted 33 lines
arch/arm/include/asm/arch-mx6/hab.h +16
-1+#define HAB_ENG_SCC 0x03/* Security controller */ +#define HAB_ENG_RTIC 0x05/* Run-time integrity checker */ +#define HAB_ENG_SAHARA 0x06/* Crypto accelerator */ +#define HAB_ENG_CSU 0x0a/* Central Security Unit */ +#define HAB_ENG_SRTC 0x0c/* Secure clock */ +#define HAB_ENG_DCP 0x1b/* Data Co-Processor */ +#define HAB_ENG_CAAM 0x1d/* CAAM */ +#define HAB_ENG_SNVS 0x1e/* Secure Non-Volatile Storage */ +#define HAB_ENG_OCOTP 0x21/* Fuse controller */ +#define HAB_ENG_DTCP 0x22/* DTCP co-processor */ +#define HAB_ENG_ROM 0x36/* Protected ROM area */ +#define HAB_ENG_HDCP 0x24/* HDCP co-processor */ +#define HAB_ENG_RTL 0x77/* RTL simulation engine */ +#define HAB_ENG_SW 0xff/* Software engine */ +#ifdef CONFIG_MX6SX #define HAB_RVT_BASE 0x00000100#else @@ -73,6 +133,7 @@ typedef void hapi_clock_init_t(void);#define HAB_CID_ROM 0/**< ROM Caller ID */ #define HAB_CID_UBOOT 1/**< UBOOT Caller ID*/ +/* ----------- end of HAB API updates ------------*/ #endif --2.3.2
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de <mailto:[email protected]>
http://lists.denx.de/mailman/listinfo/u-boot