summaryrefslogtreecommitdiff
authorTellen Yu <tellen.yu@amlogic.com>2019-07-23 07:04:09 (GMT)
committer Gerrit Code Review <gituser@droid04>2019-07-23 07:04:09 (GMT)
commit515d9eeab206172c1d44f242ebc38ebd28906d38 (patch)
tree5d24617b276e010ae41f31f89094302d6f9a5b26
parentb4e7cd61b89350000fe5f752fedd75a05a9687ae (diff)
parent89fbfa94dbac8167fec2fa669354db09ae934b5a (diff)
downloaduboot-515d9eeab206172c1d44f242ebc38ebd28906d38.zip
uboot-515d9eeab206172c1d44f242ebc38ebd28906d38.tar.gz
uboot-515d9eeab206172c1d44f242ebc38ebd28906d38.tar.bz2
Merge "sabrina: skip kernel & dtb sec boot check [2/6]" into p-tv-openlinux-nov
Diffstat
-rw-r--r--board/amlogic/configs/sm1_sabrina_v1.h2
-rw-r--r--common/aml_dt.c4
-rw-r--r--common/cmd_bootm.c5
-rw-r--r--common/cmd_imgread.c18
-rw-r--r--common/store_interface.c6
5 files changed, 28 insertions, 7 deletions
diff --git a/board/amlogic/configs/sm1_sabrina_v1.h b/board/amlogic/configs/sm1_sabrina_v1.h
index 31ca6a4..779d679 100644
--- a/board/amlogic/configs/sm1_sabrina_v1.h
+++ b/board/amlogic/configs/sm1_sabrina_v1.h
@@ -646,11 +646,13 @@
//unify build for generate encrypted bootloader "u-boot.bin.encrypt"
#define CONFIG_AML_CRYPTO_UBOOT 1
+#define CONFIG_AML_SIGNED_UBOOT 0
//unify build for generate encrypted kernel image
//SRC : "board/amlogic/(board)/boot.img"
//DST : "fip/boot.img.encrypt"
//#define CONFIG_AML_CRYPTO_IMG 1
+#define CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK
#endif //CONFIG_AML_SECURE_UBOOT
diff --git a/common/aml_dt.c b/common/aml_dt.c
index 54f08c9..100fe8b 100644
--- a/common/aml_dt.c
+++ b/common/aml_dt.c
@@ -269,14 +269,16 @@ int check_valid_dts(unsigned char *buffer)
memcpy(sbuffer, buffer, AML_DTB_IMG_MAX_SZ);
flush_cache((unsigned long)sbuffer, AML_DTB_IMG_MAX_SZ);
+ ulong nCheckOffset = 0;
+#ifndef CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK
ret = aml_sec_boot_check(AML_D_P_IMG_DECRYPT, (long unsigned)sbuffer, AML_DTB_IMG_MAX_SZ, 0);
if (ret) {
printf("\n %s() %d: Decrypt dtb: Sig Check %d\n", __func__, __LINE__, ret);
return -__LINE__;
}
- ulong nCheckOffset;
nCheckOffset = aml_sec_boot_check(AML_D_Q_IMG_SIG_HDR_SIZE,GXB_IMG_LOAD_ADDR,GXB_EFUSE_PATTERN_SIZE,GXB_IMG_DEC_ALL);
+#endif /*CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK*/
if (AML_D_Q_IMG_SIG_HDR_SIZE == (nCheckOffset & 0xFFFF))
nCheckOffset = (nCheckOffset >> 16) & 0xFFFF;
else
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 8fa2be7..4609cd1 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -168,6 +168,7 @@ int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
}
#ifndef CONFIG_SKIP_KERNEL_DTB_VERIFY
+#ifndef CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK
unsigned int nLoadAddr = GXB_IMG_LOAD_ADDR; //default load address
if (argc > 0)
@@ -183,6 +184,7 @@ int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
printf("\naml log : Sig Check %d\n",nRet);
return nRet;
}
+#endif /*CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK*/
#endif /* ! CONFIG_SKIP_KERNEL_DTB_VERIFY */
avb_s = getenv("avb2");
@@ -260,7 +262,10 @@ int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
* Only skip if secure boot so normal boot can use plain boot.img+ */
ulong img_addr,nCheckOffset;
img_addr = genimg_get_kernel_addr(argc < 1 ? NULL : argv[0]);
+ nCheckOffset = 0;
+#ifndef CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK
nCheckOffset = aml_sec_boot_check(AML_D_Q_IMG_SIG_HDR_SIZE,GXB_IMG_LOAD_ADDR,GXB_EFUSE_PATTERN_SIZE,GXB_IMG_DEC_ALL);
+#endif /*CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK*/
if (AML_D_Q_IMG_SIG_HDR_SIZE == (nCheckOffset & 0xFFFF))
nCheckOffset = (nCheckOffset >> 16) & 0xFFFF;
else
diff --git a/common/cmd_imgread.c b/common/cmd_imgread.c
index 736d590..618ffb3 100644
--- a/common/cmd_imgread.c
+++ b/common/cmd_imgread.c
@@ -126,8 +126,10 @@ static int _aml_get_secure_boot_kernel_size(const void* pLoadaddr, unsigned* pTo
if (isSecure)
{
- ulong nCheckOffset;
+ ulong nCheckOffset = 0;
+#ifndef CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK
nCheckOffset = aml_sec_boot_check(AML_D_Q_IMG_SIG_HDR_SIZE,GXB_IMG_LOAD_ADDR,GXB_EFUSE_PATTERN_SIZE,GXB_IMG_DEC_ALL);
+#endif /*CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK*/
if (AML_D_Q_IMG_SIG_HDR_SIZE == (nCheckOffset & 0xFFFF) &&
((nCheckOffset>>16) & 0xFFFF))
{
@@ -185,7 +187,6 @@ static int _aml_get_secure_boot_kernel_size(const void* pLoadaddr, unsigned* pTo
return 0;
}
-
static int do_image_read_dtb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
boot_img_hdr *hdr_addr = NULL;
@@ -252,11 +253,13 @@ static int do_image_read_dtb(cmd_tbl_t *cmdtp, int flag, int argc, char * const
//here must update the cache, otherwise nand will fail (eMMC is OK)
flush_cache((unsigned long)dtImgAddr,(unsigned long)nFlashLoadLen);
+#ifndef CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK
nReturn = aml_sec_boot_check(AML_D_P_IMG_DECRYPT,(unsigned long)loadaddr,GXB_IMG_SIZE,GXB_IMG_DEC_DTB);
if (nReturn) {
errorP("\n[dtb]aml log : Sig Check is %d\n",nReturn);
return __LINE__;
}
+#endif /*CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK*/
MsgP("Enc dtb sz 0x%x\n", nFlashLoadLen);
}
@@ -303,8 +306,10 @@ static int do_image_read_kernel(cmd_tbl_t *cmdtp, int flag, int argc, char * con
loadaddr = (unsigned char*)simple_strtoul(getenv("loadaddr"), NULL, 16);
}
- ulong nCheckOffset;
+ ulong nCheckOffset = 0;
+#ifndef CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK
nCheckOffset = aml_sec_boot_check(AML_D_Q_IMG_SIG_HDR_SIZE,GXB_IMG_LOAD_ADDR,GXB_EFUSE_PATTERN_SIZE,GXB_IMG_DEC_ALL);
+#endif /*CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK*/
if (AML_D_Q_IMG_SIG_HDR_SIZE == (nCheckOffset & 0xFFFF))
nCheckOffset = (nCheckOffset >> 16) & 0xFFFF;
else
@@ -331,12 +336,15 @@ static int do_image_read_kernel(cmd_tbl_t *cmdtp, int flag, int argc, char * con
}
//Check if encrypted image
- rc = _aml_get_secure_boot_kernel_size(loadaddr, &secureKernelImgSz);
+#ifndef CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK
+ rc = _aml_get_secure_boot_kernel_size(loadaddr, &secureKernelImgSz);
if (rc) {
errorP("Fail in _aml_get_secure_boot_kernel_size, rc=%d\n", rc);
return __LINE__;
}
- if (secureKernelImgSz)
+#endif /*CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK*/
+
+ if (secureKernelImgSz)
{
actualBootImgSz = secureKernelImgSz + nCheckOffset;
MsgP("secureKernelImgSz=0x%x\n", actualBootImgSz);
diff --git a/common/store_interface.c b/common/store_interface.c
index b13f8ce..20d6171 100644
--- a/common/store_interface.c
+++ b/common/store_interface.c
@@ -320,18 +320,22 @@ static int do_store_dtb_ops(cmd_tbl_t * cmdtp, int flag, int argc, char * const
if (!strcmp("read", argv[2]))
{
flush_cache(dtImgAddr, AML_DTB_IMG_MAX_SZ);
+#ifndef CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK
ret = aml_sec_boot_check(AML_D_P_IMG_DECRYPT, dtImgAddr, AML_DTB_IMG_MAX_SZ, 0);
if (ret) {
MsgP("decrypt dtb: Sig Check %d\n",ret);
return ret;
}
+#endif
}
}
if (!is_write && strcmp("iread", argv[2]))
{
- ulong nCheckOffset;
+ ulong nCheckOffset = 0;
+#ifndef CONFIG_SKIP_KERNEL_DTB_SECBOOT_CHECK
nCheckOffset = aml_sec_boot_check(AML_D_Q_IMG_SIG_HDR_SIZE,GXB_IMG_LOAD_ADDR,GXB_EFUSE_PATTERN_SIZE,GXB_IMG_DEC_ALL);
+#endif
if (AML_D_Q_IMG_SIG_HDR_SIZE == (nCheckOffset & 0xFFFF))
nCheckOffset = (nCheckOffset >> 16) & 0xFFFF;
else