diff --git a/common/board_r.c b/common/board_r.c index f9cd2e2..9444bc1 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -654,7 +654,7 @@ static int initr_kbd(void) } #endif -#ifdef AVB_RPMB +#if defined(AVB_RPMB) && !defined(CONFIG_SPL) extern int init_avbkey(void); static int initr_avbkey(void) { @@ -899,7 +899,7 @@ static init_fnc_t init_sequence_r[] = { #ifdef CONFIG_PS2KBD initr_kbd, #endif -#ifdef AVB_RPMB +#if defined(AVB_RPMB) && !defined(CONFIG_SPL) initr_avbkey, #endif #ifdef CONFIG_IMX_TRUSTY_OS diff --git a/include/configs/imx8qm_mek_android_auto.h b/include/configs/imx8qm_mek_android_auto.h index 9c71f01..63ede93 100644 --- a/include/configs/imx8qm_mek_android_auto.h +++ b/include/configs/imx8qm_mek_android_auto.h @@ -102,8 +102,11 @@ #include "imx8qm_mek_android_auto_xen.h" #endif -#ifdef CONFIG_SPL_BUILD +#ifdef CONFIG_IMX_TRUSTY_OS #define AVB_RPMB +#endif + +#ifdef CONFIG_SPL_BUILD #undef CONFIG_BLK #endif diff --git a/include/configs/imx8qxp_mek_android_auto.h b/include/configs/imx8qxp_mek_android_auto.h index 76dcb7d..6d472ff 100644 --- a/include/configs/imx8qxp_mek_android_auto.h +++ b/include/configs/imx8qxp_mek_android_auto.h @@ -94,8 +94,11 @@ #undef CONFIG_USB_HOST_ETHER #undef CONFIG_USB_FUNCTION_MASS_STORAGE -#ifdef CONFIG_SPL_BUILD +#ifdef CONFIG_IMX_TRUSTY_OS #define AVB_RPMB +#endif + +#ifdef CONFIG_SPL_BUILD #undef CONFIG_BLK #endif diff --git a/lib/avb/fsl/fsl_avb.c b/lib/avb/fsl/fsl_avb.c index a1c56b1..ee9f34f 100644 --- a/lib/avb/fsl/fsl_avb.c +++ b/lib/avb/fsl/fsl_avb.c @@ -631,8 +631,16 @@ AvbIOResult fsl_write_rollback_index_rpmb(AvbOps* ops, size_t rollback_index_slo AvbIOResult ret; #ifdef CONFIG_IMX_TRUSTY_OS if (trusty_write_rollback_index(rollback_index_slot, rollback_index)) { - ERR("write rollback from Trusty error!"); - ret = AVB_IO_RESULT_ERROR_IO; + ERR("write rollback from Trusty error!\n"); +#ifdef CONFIG_ANDROID_AUTO_SUPPORT + /* Read/write rollback index from rpmb will fail if the rpmb + * key hasn't been set, return AVB_IO_RESULT_OK in this case. + */ + if (!rpmbkey_is_set()) + ret = AVB_IO_RESULT_OK; + else +#endif + ret = AVB_IO_RESULT_ERROR_IO; } else { ret = AVB_IO_RESULT_OK; } @@ -720,8 +728,14 @@ AvbIOResult fsl_read_rollback_index_rpmb(AvbOps* ops, size_t rollback_index_slot AvbIOResult ret; #ifdef CONFIG_IMX_TRUSTY_OS if (trusty_read_rollback_index(rollback_index_slot, out_rollback_index)) { - ERR("read rollback from Trusty error!"); - ret = AVB_IO_RESULT_ERROR_IO; + ERR("read rollback from Trusty error!\n"); +#ifdef CONFIG_ANDROID_AUTO_SUPPORT + if (!rpmbkey_is_set()) { + *out_rollback_index = 0; + ret = AVB_IO_RESULT_OK; + } else +#endif + ret = AVB_IO_RESULT_ERROR_IO; } else { ret = AVB_IO_RESULT_OK; } diff --git a/lib/avb/fsl/fsl_avbkey.c b/lib/avb/fsl/fsl_avbkey.c index 56adf44..890ff71 100644 --- a/lib/avb/fsl/fsl_avbkey.c +++ b/lib/avb/fsl/fsl_avbkey.c @@ -572,7 +572,6 @@ fail: } int init_avbkey(void) { -#ifndef CONFIG_ARM64 struct keyslot_package kp; read_keyslot_package(&kp); if (strcmp(kp.magic, KEYPACK_MAGIC)) { @@ -588,7 +587,6 @@ int init_avbkey(void) { return RESULT_ERROR; #endif fill_secure_keyslot_package(&kp); -#endif return RESULT_OK; }