* [U-Boot] [PATCH 1/5][v5] armv8: define usec2ticks function
@ 2015-12-08 8:24 Aneesh Bansal
2015-12-08 8:24 ` [U-Boot] [PATCH 2/5][v5] armv8: Make SEC read/write as snoopable for LS1043 Aneesh Bansal
` (4 more replies)
0 siblings, 5 replies; 14+ messages in thread
From: Aneesh Bansal @ 2015-12-08 8:24 UTC (permalink / raw)
To: u-boot
usec2ticks() function has been defined for ARMv8 which will
be used by SEC Driver.
Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
---
Changes in v5:
- Commit Subject modified
Changes in v4: None
Changes in v3: None
Changes in v2: None (New Patch set created with an additional patch)
arch/arm/cpu/armv8/generic_timer.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/arch/arm/cpu/armv8/generic_timer.c b/arch/arm/cpu/armv8/generic_timer.c
index 8e60bae..8f47a82 100644
--- a/arch/arm/cpu/armv8/generic_timer.c
+++ b/arch/arm/cpu/armv8/generic_timer.c
@@ -40,3 +40,14 @@ unsigned long timer_read_counter(void)
#endif
return cntpct;
}
+
+unsigned long usec2ticks(unsigned long usec)
+{
+ ulong ticks;
+ if (usec < 1000)
+ ticks = ((usec * (get_tbclk()/1000)) + 500) / 1000;
+ else
+ ticks = ((usec / 10) * (get_tbclk() / 100000));
+
+ return ticks;
+}
--
1.8.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 2/5][v5] armv8: Make SEC read/write as snoopable for LS1043
2015-12-08 8:24 [U-Boot] [PATCH 1/5][v5] armv8: define usec2ticks function Aneesh Bansal
@ 2015-12-08 8:24 ` Aneesh Bansal
2015-12-15 1:07 ` York Sun
2015-12-08 8:24 ` [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t Aneesh Bansal
` (3 subsequent siblings)
4 siblings, 1 reply; 14+ messages in thread
From: Aneesh Bansal @ 2015-12-08 8:24 UTC (permalink / raw)
To: u-boot
For LS1043, SEC read/writes are made snoopable by setting
the corresponding bits in SCFG to avoid coherency issues.
Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
---
Changes in v5: None
Changes in v4: None
Changes in v3: None
Changes in v2:
New Patch set created with an additional patch
Commit Subject modified
arch/arm/cpu/armv8/fsl-layerscape/soc.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/soc.c b/arch/arm/cpu/armv8/fsl-layerscape/soc.c
index 8896b70..85d8df8 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/soc.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/soc.c
@@ -124,11 +124,16 @@ void fsl_lsch3_early_init_f(void)
void fsl_lsch2_early_init_f(void)
{
struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR;
+ struct ccsr_scfg *scfg = (struct ccsr_scfg *)CONFIG_SYS_FSL_SCFG_ADDR;
#ifdef CONFIG_FSL_IFC
init_early_memctl_regs(); /* tighten IFC timing */
#endif
+ /* Make SEC reads and writes snoopable */
+ setbits_be32(&scfg->snpcnfgcr, SCFG_SNPCNFGCR_SECRDSNP |
+ SCFG_SNPCNFGCR_SECWRSNP);
+
/*
* Enable snoop requests and DVM message requests for
* Slave insterface S4 (A53 core cluster)
--
1.8.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t
2015-12-08 8:24 [U-Boot] [PATCH 1/5][v5] armv8: define usec2ticks function Aneesh Bansal
2015-12-08 8:24 ` [U-Boot] [PATCH 2/5][v5] armv8: Make SEC read/write as snoopable for LS1043 Aneesh Bansal
@ 2015-12-08 8:24 ` Aneesh Bansal
2015-12-08 16:45 ` York Sun
` (2 more replies)
2015-12-08 8:24 ` [U-Boot] [PATCH 4/5][v5] armv8/ls1043ardb: add SECURE BOOT target for NOR Aneesh Bansal
` (2 subsequent siblings)
4 siblings, 3 replies; 14+ messages in thread
From: Aneesh Bansal @ 2015-12-08 8:24 UTC (permalink / raw)
To: u-boot
uintptr_t which is a typdef for unsigned long is needed for creating
pointers (32 or 64 bit depending on Core) from 32 bit variables
storing the address.
If a 32 bit variable (u32) is typecasted to a pointer (void *),
compiler gives a warning in case size of pointer on the core is 64 bit.
The typdef has been moved from include/compiler.h to include/linux/types.h
Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
---
Changes in v5:
New patch instead of http://patchwork.ozlabs.org/patch/546319/
Changes in v4: None
Changes in v3: None
Changes in v2: None
include/compiler.h | 3 ---
include/linux/types.h | 1 +
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/include/compiler.h b/include/compiler.h
index 47c296e..f853ed4 100644
--- a/include/compiler.h
+++ b/include/compiler.h
@@ -115,9 +115,6 @@ typedef unsigned int uint;
#ifdef CONFIG_USE_STDINT
/* Provided by gcc. */
#include <stdint.h>
-#else
-/* Type for `void *' pointers. */
-typedef unsigned long int uintptr_t;
#endif
#include <linux/string.h>
diff --git a/include/linux/types.h b/include/linux/types.h
index 6f75be4..c7e8fdb 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -124,6 +124,7 @@ typedef __UINT64_TYPE__ u_int64_t;
typedef __INT64_TYPE__ int64_t;
#endif
+typedef unsigned long uintptr_t;
/*
* Below are truly Linux-specific types that should never collide with
* any application/library that wants linux/types.h.
--
1.8.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 4/5][v5] armv8/ls1043ardb: add SECURE BOOT target for NOR
2015-12-08 8:24 [U-Boot] [PATCH 1/5][v5] armv8: define usec2ticks function Aneesh Bansal
2015-12-08 8:24 ` [U-Boot] [PATCH 2/5][v5] armv8: Make SEC read/write as snoopable for LS1043 Aneesh Bansal
2015-12-08 8:24 ` [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t Aneesh Bansal
@ 2015-12-08 8:24 ` Aneesh Bansal
2015-12-15 1:10 ` York Sun
2015-12-08 8:24 ` [U-Boot] [PATCH 5/5][v5] drivers/crypto/fsl: fix endianness issue in RNG Aneesh Bansal
2015-12-15 1:06 ` [U-Boot] [PATCH 1/5][v5] armv8: define usec2ticks function York Sun
4 siblings, 1 reply; 14+ messages in thread
From: Aneesh Bansal @ 2015-12-08 8:24 UTC (permalink / raw)
To: u-boot
LS1043ARDB Secure Boot Target from NOR has been added.
- Configs defined to enable esbc_validate.
- ESBC Address in header is made 64 bit.
- SMMU is re-configured in Bypass mode.
Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
---
Changes in v5:
- Commit Subject modified
- Call to sec_init() placed under CONFIG_FSL_CAAM
Changes in v4:
- Fixed compilation break for LS1021AQDS
Changes in v3:
- Enabled CONFIG_SYS_NS16550=y, CONFIF_DM=y and other options
similar to ls1043ardb_defconfig.
- fsl_secure_boot.h is included outside of ifdef in file
include/configs/ls1043ardb.h
Changes in v2:
- New Patch set created with an additional patch
- Pointers typecasted to uintptr_t to remove compiler warnings
arch/arm/include/asm/arch-fsl-layerscape/config.h | 4 +--
.../include/asm/arch-fsl-layerscape/immap_lsch2.h | 2 +-
arch/arm/include/asm/fsl_secure_boot.h | 6 +++-
board/freescale/common/fsl_validate.c | 34 ++++++++++++++--------
board/freescale/ls1043ardb/MAINTAINERS | 5 ++++
board/freescale/ls1043ardb/ls1043ardb.c | 18 +++++++++++-
common/cmd_blob.c | 6 ++--
configs/ls1043ardb_SECURE_BOOT_defconfig | 9 ++++++
include/configs/ls1043ardb.h | 10 +++++++
include/fsl_validate.h | 9 +++++-
10 files changed, 82 insertions(+), 21 deletions(-)
create mode 100644 configs/ls1043ardb_SECURE_BOOT_defconfig
diff --git a/arch/arm/include/asm/arch-fsl-layerscape/config.h b/arch/arm/include/asm/arch-fsl-layerscape/config.h
index b5a2d28..6f4773a 100644
--- a/arch/arm/include/asm/arch-fsl-layerscape/config.h
+++ b/arch/arm/include/asm/arch-fsl-layerscape/config.h
@@ -147,8 +147,8 @@
#define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.4"
#define CONFIG_SYS_FSL_SFP_VER_3_2
-#define CONFIG_SYS_FSL_SNVS_LE
-#define CONFIG_SYS_FSL_SEC_LE
+#define CONFIG_SYS_FSL_SEC_MON_BE
+#define CONFIG_SYS_FSL_SEC_BE
#define CONFIG_SYS_FSL_SFP_BE
#define CONFIG_SYS_FSL_SRK_LE
#define CONFIG_KEY_REVOCATION
diff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h
index 83caa91..e7def3a 100644
--- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h
+++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h
@@ -38,7 +38,7 @@
#define CONFIG_SYS_PCIE3_ADDR (CONFIG_SYS_IMMR + 0x2600000)
#define CONFIG_SYS_FSL_SEC_ADDR (CONFIG_SYS_IMMR + 0x700000)
#define CONFIG_SYS_FSL_JR0_ADDR (CONFIG_SYS_IMMR + 0x710000)
-#define CONFIG_SYS_SNVS_ADDR (CONFIG_SYS_IMMR + 0xe90000)
+#define CONFIG_SYS_SEC_MON_ADDR (CONFIG_SYS_IMMR + 0xe90000)
#define CONFIG_SYS_SFP_ADDR (CONFIG_SYS_IMMR + 0xe80200)
#define CONFIG_SYS_FSL_TIMER_ADDR 0x02b00000
diff --git a/arch/arm/include/asm/fsl_secure_boot.h b/arch/arm/include/asm/fsl_secure_boot.h
index f2d4c3c..806302b 100644
--- a/arch/arm/include/asm/fsl_secure_boot.h
+++ b/arch/arm/include/asm/fsl_secure_boot.h
@@ -11,13 +11,17 @@
#define CONFIG_CMD_ESBC_VALIDATE
#define CONFIG_FSL_SEC_MON
#define CONFIG_SHA_PROG_HW_ACCEL
-#define CONFIG_DM
#define CONFIG_RSA
#define CONFIG_RSA_FREESCALE_EXP
+
#ifndef CONFIG_FSL_CAAM
#define CONFIG_FSL_CAAM
#endif
+#ifndef CONFIG_DM
+#define CONFIG_DM
+#endif
+
#define CONFIG_KEY_REVOCATION
#ifndef CONFIG_SYS_RAMBOOT
/* The key used for verification of next level images
diff --git a/board/freescale/common/fsl_validate.c b/board/freescale/common/fsl_validate.c
index 73b6718..b510c71 100644
--- a/board/freescale/common/fsl_validate.c
+++ b/board/freescale/common/fsl_validate.c
@@ -15,7 +15,7 @@
#include <u-boot/rsa-mod-exp.h>
#include <hash.h>
#include <fsl_secboot_err.h>
-#ifndef CONFIG_MPC85xx
+#ifdef CONFIG_LS102XA
#include <asm/arch/immap_ls102xa.h>
#endif
@@ -99,7 +99,8 @@ int get_csf_base_addr(u32 *csf_addr, u32 *flash_base_addr)
struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
u32 csf_hdr_addr = in_be32(&gur->scratchrw[0]);
- if (memcmp((u8 *)csf_hdr_addr, barker_code, ESBC_BARKER_LEN))
+ if (memcmp((u8 *)(uintptr_t)csf_hdr_addr,
+ barker_code, ESBC_BARKER_LEN))
return -1;
*csf_addr = csf_hdr_addr;
@@ -117,7 +118,7 @@ static int get_ie_info_addr(u32 *ie_addr)
if (get_csf_base_addr(&csf_addr, &flash_base_addr))
return -1;
- hdr = (struct fsl_secboot_img_hdr *)csf_addr;
+ hdr = (struct fsl_secboot_img_hdr *)(uintptr_t)csf_addr;
/* For SoC's with Trust Architecture v1 with corenet bus
* the sg table field in CSF header has absolute address
@@ -130,7 +131,7 @@ static int get_ie_info_addr(u32 *ie_addr)
(((u32)hdr->psgtable & ~(CONFIG_SYS_PBI_FLASH_BASE)) +
flash_base_addr);
#else
- sg_tbl = (struct fsl_secboot_sg_table *)(csf_addr +
+ sg_tbl = (struct fsl_secboot_sg_table *)(uintptr_t)(csf_addr +
(u32)hdr->psgtable);
#endif
@@ -379,8 +380,8 @@ static int calc_img_key_hash(struct fsl_secboot_img_priv *img)
#ifdef CONFIG_KEY_REVOCATION
if (check_srk(img)) {
ret = algo->hash_update(algo, ctx,
- (u8 *)(img->ehdrloc + img->hdr.srk_tbl_off),
- img->hdr.len_kr.num_srk * sizeof(struct srk_table), 1);
+ (u8 *)(uintptr_t)(img->ehdrloc + img->hdr.srk_tbl_off),
+ img->hdr.len_kr.num_srk * sizeof(struct srk_table), 1);
srk = 1;
}
#endif
@@ -438,8 +439,8 @@ static int calc_esbchdr_esbc_hash(struct fsl_secboot_img_priv *img)
#ifdef CONFIG_KEY_REVOCATION
if (check_srk(img)) {
ret = algo->hash_update(algo, ctx,
- (u8 *)(img->ehdrloc + img->hdr.srk_tbl_off),
- img->hdr.len_kr.num_srk * sizeof(struct srk_table), 0);
+ (u8 *)(uintptr_t)(img->ehdrloc + img->hdr.srk_tbl_off),
+ img->hdr.len_kr.num_srk * sizeof(struct srk_table), 0);
key_hash = 1;
}
#endif
@@ -454,8 +455,13 @@ static int calc_esbchdr_esbc_hash(struct fsl_secboot_img_priv *img)
return ret;
/* Update hash for actual Image */
+#ifdef CONFIG_ESBC_ADDR_64BIT
ret = algo->hash_update(algo, ctx,
- (u8 *)img->hdr.pimg, img->hdr.img_size, 1);
+ (u8 *)(uintptr_t)img->hdr.pimg64, img->hdr.img_size, 1);
+#else
+ ret = algo->hash_update(algo, ctx,
+ (u8 *)(uintptr_t)img->hdr.pimg, img->hdr.img_size, 1);
+#endif
if (ret)
return ret;
@@ -533,7 +539,7 @@ static int read_validate_esbc_client_header(struct fsl_secboot_img_priv *img)
{
char buf[20];
struct fsl_secboot_img_hdr *hdr = &img->hdr;
- void *esbc = (u8 *)img->ehdrloc;
+ void *esbc = (u8 *)(uintptr_t)img->ehdrloc;
u8 *k, *s;
#ifdef CONFIG_KEY_REVOCATION
u32 ret;
@@ -549,7 +555,11 @@ static int read_validate_esbc_client_header(struct fsl_secboot_img_priv *img)
if (memcmp(hdr->barker, barker_code, ESBC_BARKER_LEN))
return ERROR_ESBC_CLIENT_HEADER_BARKER;
+#ifdef CONFIG_ESBC_ADDR_64BIT
+ sprintf(buf, "%llx", hdr->pimg64);
+#else
sprintf(buf, "%x", hdr->pimg);
+#endif
setenv("img_addr", buf);
if (!hdr->img_size)
@@ -594,7 +604,7 @@ static int read_validate_esbc_client_header(struct fsl_secboot_img_priv *img)
if (!key_found && check_ie(img)) {
if (get_ie_info_addr(&img->ie_addr))
return ERROR_IE_TABLE_NOT_FOUND;
- ie_info = (struct ie_key_info *)img->ie_addr;
+ ie_info = (struct ie_key_info *)(uintptr_t)img->ie_addr;
if (ie_info->num_keys == 0 || ie_info->num_keys > 32)
return ERROR_ESBC_CLIENT_HEADER_INVALID_IE_NUM_ENTRY;
@@ -748,7 +758,7 @@ int fsl_secboot_validate(cmd_tbl_t *cmdtp, int flag, int argc,
hdr = &img->hdr;
img->ehdrloc = addr;
- esbc = (u8 *)img->ehdrloc;
+ esbc = (u8 *)(uintptr_t)img->ehdrloc;
memcpy(hdr, esbc, sizeof(struct fsl_secboot_img_hdr));
diff --git a/board/freescale/ls1043ardb/MAINTAINERS b/board/freescale/ls1043ardb/MAINTAINERS
index efca5bf..84ffb63 100644
--- a/board/freescale/ls1043ardb/MAINTAINERS
+++ b/board/freescale/ls1043ardb/MAINTAINERS
@@ -7,3 +7,8 @@ F: include/configs/ls1043ardb.h
F: configs/ls1043ardb_defconfig
F: configs/ls1043ardb_nand_defconfig
F: configs/ls1043ardb_sdcard_defconfig
+
+LS1043A_SECURE_BOOT BOARD
+M: Aneesh Bansal <aneesh.bansal@freescale.com>
+S: Maintained
+F: configs/ls1043ardb_SECURE_BOOT_defconfig
diff --git a/board/freescale/ls1043ardb/ls1043ardb.c b/board/freescale/ls1043ardb/ls1043ardb.c
index cdd50d6..4b4a08d 100644
--- a/board/freescale/ls1043ardb/ls1043ardb.c
+++ b/board/freescale/ls1043ardb/ls1043ardb.c
@@ -18,6 +18,8 @@
#include <fsl_csu.h>
#include <fsl_esdhc.h>
#include <fsl_ifc.h>
+#include <environment.h>
+#include <fsl_sec.h>
#include "cpld.h"
DECLARE_GLOBAL_DATA_PTR;
@@ -123,7 +125,21 @@ int config_board_mux(void)
int misc_init_r(void)
{
config_board_mux();
-
+#ifdef CONFIG_SECURE_BOOT
+ /* In case of Secure Boot, the IBR configures the SMMU
+ * to allow only Secure transactions.
+ * SMMU must be reset in bypass mode.
+ * Set the ClientPD bit and Clear the USFCFG Bit
+ */
+ u32 val;
+ val = (in_le32(SMMU_SCR0) | SCR0_CLIENTPD_MASK) & ~(SCR0_USFCFG_MASK);
+ out_le32(SMMU_SCR0, val);
+ val = (in_le32(SMMU_NSCR0) | SCR0_CLIENTPD_MASK) & ~(SCR0_USFCFG_MASK);
+ out_le32(SMMU_NSCR0, val);
+#endif
+#ifdef CONFIG_FSL_CAAM
+ return sec_init();
+#endif
return 0;
}
#endif
diff --git a/common/cmd_blob.c b/common/cmd_blob.c
index d3f22a1..ac8b268 100644
--- a/common/cmd_blob.c
+++ b/common/cmd_blob.c
@@ -73,9 +73,9 @@ static int do_blob(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
len = simple_strtoul(argv[4], NULL, 16);
key_addr = simple_strtoul(argv[5], NULL, 16);
- km_ptr = (uint8_t *)key_addr;
- src_ptr = (uint8_t *)src_addr;
- dst_ptr = (uint8_t *)dst_addr;
+ km_ptr = (uint8_t *)(uintptr_t)key_addr;
+ src_ptr = (uint8_t *)(uintptr_t)src_addr;
+ dst_ptr = (uint8_t *)(uintptr_t)dst_addr;
if (enc)
ret = blob_encap(km_ptr, src_ptr, dst_ptr, len);
diff --git a/configs/ls1043ardb_SECURE_BOOT_defconfig b/configs/ls1043ardb_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..d9d6c97
--- /dev/null
+++ b/configs/ls1043ardb_SECURE_BOOT_defconfig
@@ -0,0 +1,9 @@
+CONFIG_ARM=y
+CONFIG_TARGET_LS1043ARDB=y
+CONFIG_SYS_EXTRA_OPTIONS="SYS_FSL_DDR4, SECURE_BOOT"
+CONFIG_SYS_NS16550=y
+CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-rdb"
+CONFIG_OF_CONTROL=y
+CONFIG_DM=y
+CONFIG_SPI_FLASH=y
+CONFIG_DM_SPI=y
\ No newline at end of file
diff --git a/include/configs/ls1043ardb.h b/include/configs/ls1043ardb.h
index 7d113a0..5d82cf3 100644
--- a/include/configs/ls1043ardb.h
+++ b/include/configs/ls1043ardb.h
@@ -291,4 +291,14 @@
#define CONFIG_CMD_EXT2
#endif
+#ifdef CONFIG_SECURE_BOOT
+#define CONFIG_CMD_HASH
+#define CONFIG_SHA_HW_ACCEL
+#define CONFIG_CMD_BLOB
+/* For LS1043 (ARMv8), ESBC image Address in Header is 64 bit */
+#define CONFIG_ESBC_ADDR_64BIT
+#endif
+
+#include <asm/fsl_secure_boot.h>
+
#endif /* __LS1043ARDB_H__ */
diff --git a/include/fsl_validate.h b/include/fsl_validate.h
index 92dd98b..a62dc74 100644
--- a/include/fsl_validate.h
+++ b/include/fsl_validate.h
@@ -83,7 +83,9 @@ struct fsl_secboot_img_hdr {
u32 sign_len; /* length of the signature in bytes */
union {
u32 psgtable; /* ptr to SG table */
+#ifndef CONFIG_ESBC_ADDR_64BIT
u32 pimg; /* ptr to ESBC client image */
+#endif
};
union {
u32 sg_entries; /* no of entries in SG table */
@@ -97,7 +99,12 @@ struct fsl_secboot_img_hdr {
u32 reserved1[2];
u32 fsl_uid_1;
u32 oem_uid_1;
- u32 reserved2[2];
+ union {
+ u32 reserved2[2];
+#ifdef CONFIG_ESBC_ADDR_64BIT
+ u64 pimg64; /* 64 bit pointer to ESBC Image */
+#endif
+ };
u32 ie_flag;
u32 ie_key_sel;
};
--
1.8.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 5/5][v5] drivers/crypto/fsl: fix endianness issue in RNG
2015-12-08 8:24 [U-Boot] [PATCH 1/5][v5] armv8: define usec2ticks function Aneesh Bansal
` (2 preceding siblings ...)
2015-12-08 8:24 ` [U-Boot] [PATCH 4/5][v5] armv8/ls1043ardb: add SECURE BOOT target for NOR Aneesh Bansal
@ 2015-12-08 8:24 ` Aneesh Bansal
2015-12-15 1:12 ` York Sun
2015-12-15 1:06 ` [U-Boot] [PATCH 1/5][v5] armv8: define usec2ticks function York Sun
4 siblings, 1 reply; 14+ messages in thread
From: Aneesh Bansal @ 2015-12-08 8:24 UTC (permalink / raw)
To: u-boot
For Setting and clearing the bits in SEC Block registers
sec_clrbits32() and sec_setbits32() are used which work as
per endianness of CAAM block.
So these must be used with SEC register address as argument.
If the value is read in a local variable, then the functions
will not behave correctly where endianness of CAAM and core is
different.
Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
CC: Alex Porosanu <alexandru.porosanu@freescale.com>
---
Changes in v5: None
Changes in v4: None
Changes in v3: None
Changes in v2: None (New Patch set created with an additional patch)
drivers/crypto/fsl/jr.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/crypto/fsl/jr.c b/drivers/crypto/fsl/jr.c
index f63eacb..b553e3c 100644
--- a/drivers/crypto/fsl/jr.c
+++ b/drivers/crypto/fsl/jr.c
@@ -470,17 +470,13 @@ static void kick_trng(int ent_delay)
sec_out32(&rng->rtfreqmin, ent_delay >> 2);
/* disable maximum frequency count */
sec_out32(&rng->rtfreqmax, RTFRQMAX_DISABLE);
- /* read the control register */
- val = sec_in32(&rng->rtmctl);
/*
* select raw sampling in both entropy shifter
* and statistical checker
*/
- sec_setbits32(&val, RTMCTL_SAMP_MODE_RAW_ES_SC);
+ sec_setbits32(&rng->rtmctl, RTMCTL_SAMP_MODE_RAW_ES_SC);
/* put RNG4 into run mode */
- sec_clrbits32(&val, RTMCTL_PRGM);
- /* write back the control register */
- sec_out32(&rng->rtmctl, val);
+ sec_clrbits32(&rng->rtmctl, RTMCTL_PRGM);
}
static int rng_init(void)
--
1.8.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t
2015-12-08 8:24 ` [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t Aneesh Bansal
@ 2015-12-08 16:45 ` York Sun
2015-12-14 2:08 ` York Sun
2015-12-14 2:10 ` York Sun
2015-12-15 1:07 ` York Sun
2015-12-16 3:48 ` York Sun
2 siblings, 2 replies; 14+ messages in thread
From: York Sun @ 2015-12-08 16:45 UTC (permalink / raw)
To: u-boot
On 12/08/2015 12:24 AM, Aneesh Bansal wrote:
> uintptr_t which is a typdef for unsigned long is needed for creating
> pointers (32 or 64 bit depending on Core) from 32 bit variables
> storing the address.
> If a 32 bit variable (u32) is typecasted to a pointer (void *),
> compiler gives a warning in case size of pointer on the core is 64 bit.
>
> The typdef has been moved from include/compiler.h to include/linux/types.h
>
> Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
> ---
> Changes in v5:
> New patch instead of http://patchwork.ozlabs.org/patch/546319/
>
> Changes in v4: None
>
> Changes in v3: None
>
> Changes in v2: None
>
> include/compiler.h | 3 ---
> include/linux/types.h | 1 +
> 2 files changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/include/compiler.h b/include/compiler.h
> index 47c296e..f853ed4 100644
> --- a/include/compiler.h
> +++ b/include/compiler.h
> @@ -115,9 +115,6 @@ typedef unsigned int uint;
> #ifdef CONFIG_USE_STDINT
> /* Provided by gcc. */
> #include <stdint.h>
> -#else
> -/* Type for `void *' pointers. */
> -typedef unsigned long int uintptr_t;
> #endif
>
> #include <linux/string.h>
> diff --git a/include/linux/types.h b/include/linux/types.h
> index 6f75be4..c7e8fdb 100644
> --- a/include/linux/types.h
> +++ b/include/linux/types.h
> @@ -124,6 +124,7 @@ typedef __UINT64_TYPE__ u_int64_t;
> typedef __INT64_TYPE__ int64_t;
> #endif
>
> +typedef unsigned long uintptr_t;
> /*
> * Below are truly Linux-specific types that should never collide with
> * any application/library that wants linux/types.h.
>
Tom,
Please help review this change. I can compile test for power and arm but I don't
have the setup for other platforms.
York
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t
2015-12-08 16:45 ` York Sun
@ 2015-12-14 2:08 ` York Sun
2015-12-14 2:10 ` York Sun
1 sibling, 0 replies; 14+ messages in thread
From: York Sun @ 2015-12-14 2:08 UTC (permalink / raw)
To: u-boot
I would like to merge this one if no objection.
York
On 12/08/2015 08:45 AM, York Sun wrote:
>
>
> On 12/08/2015 12:24 AM, Aneesh Bansal wrote:
>> uintptr_t which is a typdef for unsigned long is needed for creating
>> pointers (32 or 64 bit depending on Core) from 32 bit variables
>> storing the address.
>> If a 32 bit variable (u32) is typecasted to a pointer (void *),
>> compiler gives a warning in case size of pointer on the core is 64 bit.
>>
>> The typdef has been moved from include/compiler.h to include/linux/types.h
>>
>> Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
>> ---
>> Changes in v5:
>> New patch instead of http://patchwork.ozlabs.org/patch/546319/
>>
>> Changes in v4: None
>>
>> Changes in v3: None
>>
>> Changes in v2: None
>>
>> include/compiler.h | 3 ---
>> include/linux/types.h | 1 +
>> 2 files changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git a/include/compiler.h b/include/compiler.h
>> index 47c296e..f853ed4 100644
>> --- a/include/compiler.h
>> +++ b/include/compiler.h
>> @@ -115,9 +115,6 @@ typedef unsigned int uint;
>> #ifdef CONFIG_USE_STDINT
>> /* Provided by gcc. */
>> #include <stdint.h>
>> -#else
>> -/* Type for `void *' pointers. */
>> -typedef unsigned long int uintptr_t;
>> #endif
>>
>> #include <linux/string.h>
>> diff --git a/include/linux/types.h b/include/linux/types.h
>> index 6f75be4..c7e8fdb 100644
>> --- a/include/linux/types.h
>> +++ b/include/linux/types.h
>> @@ -124,6 +124,7 @@ typedef __UINT64_TYPE__ u_int64_t;
>> typedef __INT64_TYPE__ int64_t;
>> #endif
>>
>> +typedef unsigned long uintptr_t;
>> /*
>> * Below are truly Linux-specific types that should never collide with
>> * any application/library that wants linux/types.h.
>>
>
> Tom,
>
> Please help review this change. I can compile test for power and arm but I don't
> have the setup for other platforms.
>
> York
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t
2015-12-08 16:45 ` York Sun
2015-12-14 2:08 ` York Sun
@ 2015-12-14 2:10 ` York Sun
1 sibling, 0 replies; 14+ messages in thread
From: York Sun @ 2015-12-14 2:10 UTC (permalink / raw)
To: u-boot
Resend with my freescale id.
I would like to merge this patch if no objection.
York
On 12/08/2015 08:45 AM, York Sun wrote:
>
>
> On 12/08/2015 12:24 AM, Aneesh Bansal wrote:
>> uintptr_t which is a typdef for unsigned long is needed for creating
>> pointers (32 or 64 bit depending on Core) from 32 bit variables
>> storing the address.
>> If a 32 bit variable (u32) is typecasted to a pointer (void *),
>> compiler gives a warning in case size of pointer on the core is 64 bit.
>>
>> The typdef has been moved from include/compiler.h to include/linux/types.h
>>
>> Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
>> ---
>> Changes in v5:
>> New patch instead of http://patchwork.ozlabs.org/patch/546319/
>>
>> Changes in v4: None
>>
>> Changes in v3: None
>>
>> Changes in v2: None
>>
>> include/compiler.h | 3 ---
>> include/linux/types.h | 1 +
>> 2 files changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git a/include/compiler.h b/include/compiler.h
>> index 47c296e..f853ed4 100644
>> --- a/include/compiler.h
>> +++ b/include/compiler.h
>> @@ -115,9 +115,6 @@ typedef unsigned int uint;
>> #ifdef CONFIG_USE_STDINT
>> /* Provided by gcc. */
>> #include <stdint.h>
>> -#else
>> -/* Type for `void *' pointers. */
>> -typedef unsigned long int uintptr_t;
>> #endif
>>
>> #include <linux/string.h>
>> diff --git a/include/linux/types.h b/include/linux/types.h
>> index 6f75be4..c7e8fdb 100644
>> --- a/include/linux/types.h
>> +++ b/include/linux/types.h
>> @@ -124,6 +124,7 @@ typedef __UINT64_TYPE__ u_int64_t;
>> typedef __INT64_TYPE__ int64_t;
>> #endif
>>
>> +typedef unsigned long uintptr_t;
>> /*
>> * Below are truly Linux-specific types that should never collide with
>> * any application/library that wants linux/types.h.
>>
>
> Tom,
>
> Please help review this change. I can compile test for power and arm but I don't
> have the setup for other platforms.
>
> York
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 1/5][v5] armv8: define usec2ticks function
2015-12-08 8:24 [U-Boot] [PATCH 1/5][v5] armv8: define usec2ticks function Aneesh Bansal
` (3 preceding siblings ...)
2015-12-08 8:24 ` [U-Boot] [PATCH 5/5][v5] drivers/crypto/fsl: fix endianness issue in RNG Aneesh Bansal
@ 2015-12-15 1:06 ` York Sun
4 siblings, 0 replies; 14+ messages in thread
From: York Sun @ 2015-12-15 1:06 UTC (permalink / raw)
To: u-boot
On 12/08/2015 04:24 PM, Aneesh Bansal wrote:
> usec2ticks() function has been defined for ARMv8 which will
> be used by SEC Driver.
>
> Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
> ---
> Changes in v5:
> - Commit Subject modified
>
> Changes in v4: None
>
> Changes in v3: None
>
> Changes in v2: None (New Patch set created with an additional patch)
>
Applied to fsl-qoriq master. Awaiting upstream.
York
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 2/5][v5] armv8: Make SEC read/write as snoopable for LS1043
2015-12-08 8:24 ` [U-Boot] [PATCH 2/5][v5] armv8: Make SEC read/write as snoopable for LS1043 Aneesh Bansal
@ 2015-12-15 1:07 ` York Sun
0 siblings, 0 replies; 14+ messages in thread
From: York Sun @ 2015-12-15 1:07 UTC (permalink / raw)
To: u-boot
On 12/08/2015 04:24 PM, Aneesh Bansal wrote:
> For LS1043, SEC read/writes are made snoopable by setting
> the corresponding bits in SCFG to avoid coherency issues.
>
> Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
> ---
> Changes in v5: None
>
> Changes in v4: None
>
> Changes in v3: None
>
> Changes in v2:
> New Patch set created with an additional patch
> Commit Subject modified
Applied to fsl-qoriq master. Awaiting upstream.
York
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t
2015-12-08 8:24 ` [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t Aneesh Bansal
2015-12-08 16:45 ` York Sun
@ 2015-12-15 1:07 ` York Sun
2015-12-16 3:48 ` York Sun
2 siblings, 0 replies; 14+ messages in thread
From: York Sun @ 2015-12-15 1:07 UTC (permalink / raw)
To: u-boot
On 12/08/2015 04:24 PM, Aneesh Bansal wrote:
> uintptr_t which is a typdef for unsigned long is needed for creating
> pointers (32 or 64 bit depending on Core) from 32 bit variables
> storing the address.
> If a 32 bit variable (u32) is typecasted to a pointer (void *),
> compiler gives a warning in case size of pointer on the core is 64 bit.
>
> The typdef has been moved from include/compiler.h to include/linux/types.h
>
> Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
> ---
> Changes in v5:
> New patch instead of http://patchwork.ozlabs.org/patch/546319/
>
> Changes in v4: None
>
> Changes in v3: None
>
> Changes in v2: None
>
Applied to fsl-qoriq master. Awaiting upstream.
York
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 4/5][v5] armv8/ls1043ardb: add SECURE BOOT target for NOR
2015-12-08 8:24 ` [U-Boot] [PATCH 4/5][v5] armv8/ls1043ardb: add SECURE BOOT target for NOR Aneesh Bansal
@ 2015-12-15 1:10 ` York Sun
0 siblings, 0 replies; 14+ messages in thread
From: York Sun @ 2015-12-15 1:10 UTC (permalink / raw)
To: u-boot
On 12/08/2015 04:24 PM, Aneesh Bansal wrote:
> LS1043ARDB Secure Boot Target from NOR has been added.
> - Configs defined to enable esbc_validate.
> - ESBC Address in header is made 64 bit.
> - SMMU is re-configured in Bypass mode.
>
> Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
> ---
> Changes in v5:
> - Commit Subject modified
> - Call to sec_init() placed under CONFIG_FSL_CAAM
>
> Changes in v4:
> - Fixed compilation break for LS1021AQDS
>
> Changes in v3:
> - Enabled CONFIG_SYS_NS16550=y, CONFIF_DM=y and other options
> similar to ls1043ardb_defconfig.
> - fsl_secure_boot.h is included outside of ifdef in file
> include/configs/ls1043ardb.h
>
> Changes in v2:
> - New Patch set created with an additional patch
> - Pointers typecasted to uintptr_t to remove compiler warnings
>
Applied to fsl-qoriq master. Awaiting upstream.
York
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 5/5][v5] drivers/crypto/fsl: fix endianness issue in RNG
2015-12-08 8:24 ` [U-Boot] [PATCH 5/5][v5] drivers/crypto/fsl: fix endianness issue in RNG Aneesh Bansal
@ 2015-12-15 1:12 ` York Sun
0 siblings, 0 replies; 14+ messages in thread
From: York Sun @ 2015-12-15 1:12 UTC (permalink / raw)
To: u-boot
On 12/08/2015 04:24 PM, Aneesh Bansal wrote:
> For Setting and clearing the bits in SEC Block registers
> sec_clrbits32() and sec_setbits32() are used which work as
> per endianness of CAAM block.
> So these must be used with SEC register address as argument.
> If the value is read in a local variable, then the functions
> will not behave correctly where endianness of CAAM and core is
> different.
>
> Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
> CC: Alex Porosanu <alexandru.porosanu@freescale.com>
> ---
> Changes in v5: None
>
> Changes in v4: None
>
> Changes in v3: None
>
> Changes in v2: None (New Patch set created with an additional patch)
Applied to fsl-qoriq master. Awaiting upstream.
York
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t
2015-12-08 8:24 ` [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t Aneesh Bansal
2015-12-08 16:45 ` York Sun
2015-12-15 1:07 ` York Sun
@ 2015-12-16 3:48 ` York Sun
2 siblings, 0 replies; 14+ messages in thread
From: York Sun @ 2015-12-16 3:48 UTC (permalink / raw)
To: u-boot
On 12/08/2015 04:24 PM, Aneesh Bansal wrote:
> uintptr_t which is a typdef for unsigned long is needed for creating
> pointers (32 or 64 bit depending on Core) from 32 bit variables
> storing the address.
> If a 32 bit variable (u32) is typecasted to a pointer (void *),
> compiler gives a warning in case size of pointer on the core is 64 bit.
>
> The typdef has been moved from include/compiler.h to include/linux/types.h
>
> Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
> ---
> Changes in v5:
> New patch instead of http://patchwork.ozlabs.org/patch/546319/
>
> Changes in v4: None
>
> Changes in v3: None
>
> Changes in v2: None
>
> include/compiler.h | 3 ---
> include/linux/types.h | 1 +
> 2 files changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/include/compiler.h b/include/compiler.h
> index 47c296e..f853ed4 100644
> --- a/include/compiler.h
> +++ b/include/compiler.h
> @@ -115,9 +115,6 @@ typedef unsigned int uint;
> #ifdef CONFIG_USE_STDINT
> /* Provided by gcc. */
> #include <stdint.h>
> -#else
> -/* Type for `void *' pointers. */
> -typedef unsigned long int uintptr_t;
> #endif
>
> #include <linux/string.h>
> diff --git a/include/linux/types.h b/include/linux/types.h
> index 6f75be4..c7e8fdb 100644
> --- a/include/linux/types.h
> +++ b/include/linux/types.h
> @@ -124,6 +124,7 @@ typedef __UINT64_TYPE__ u_int64_t;
> typedef __INT64_TYPE__ int64_t;
> #endif
>
> +typedef unsigned long uintptr_t;
> /*
> * Below are truly Linux-specific types that should never collide with
> * any application/library that wants linux/types.h.
>
Aneesh,
This change is tested OK on 64-bit hosts, but failed on 32-bit hosts.
A second thought, is this change needed? I reverted this one and still passed
tests for all aarch64 targets, including ls1043ardb_SECURE_BOOT. I didn't boot
it though.
York
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2015-12-16 3:48 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-08 8:24 [U-Boot] [PATCH 1/5][v5] armv8: define usec2ticks function Aneesh Bansal
2015-12-08 8:24 ` [U-Boot] [PATCH 2/5][v5] armv8: Make SEC read/write as snoopable for LS1043 Aneesh Bansal
2015-12-15 1:07 ` York Sun
2015-12-08 8:24 ` [U-Boot] [PATCH 3/5][v5] include/linux: move typdef for uintptr_t Aneesh Bansal
2015-12-08 16:45 ` York Sun
2015-12-14 2:08 ` York Sun
2015-12-14 2:10 ` York Sun
2015-12-15 1:07 ` York Sun
2015-12-16 3:48 ` York Sun
2015-12-08 8:24 ` [U-Boot] [PATCH 4/5][v5] armv8/ls1043ardb: add SECURE BOOT target for NOR Aneesh Bansal
2015-12-15 1:10 ` York Sun
2015-12-08 8:24 ` [U-Boot] [PATCH 5/5][v5] drivers/crypto/fsl: fix endianness issue in RNG Aneesh Bansal
2015-12-15 1:12 ` York Sun
2015-12-15 1:06 ` [U-Boot] [PATCH 1/5][v5] armv8: define usec2ticks function York Sun
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox