Revert "drivers/crypto/fsl: assign job-rings to non-TrustZone"
authorBreno Matheus Lima <breno.lima@nxp.com>
Tue, 4 Jun 2019 02:54:44 +0000 (02:54 +0000)
committerStefano Babic <sbabic@denx.de>
Tue, 11 Jun 2019 08:42:48 +0000 (10:42 +0200)
Commit 22191ac35344 ("drivers/crypto/fsl: assign job-rings to
 non-TrustZone") breaks HABv4 encrypted boot support in the
following i.MX devices:

- i.MX6UL
- i.MX7S
- i.MX7D
- i.MX7ULP

For preparing a HABv4 encrypted boot image it's necessary to
encapsulate the generated DEK in a blob. In devices listed
above the blob generation function takes into consideration
the Job Ring TrustZone ownership configuration (JROWN_NS)
and can be only decapsulated by the same configuration.

The ROM code expects DEK blobs encapsulated by the Secure World
environments which commonly have JROWN_NS = 0.

As U-Boot is running in Secure World we must have JROWN_NS = 0
so the blobs generated by dek_blob tool can be decapsulated
by the ROM code.

Job-rings assignment is now handled in OP-TEE OS, this commit can
be safely reverted.
https://github.com/OP-TEE/optee_os/pull/2986

This reverts commit 22191ac353445ad8fafc5a78aefcd94e78963041.

Signed-off-by: Breno Lima <breno.lima@nxp.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Acked-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
drivers/crypto/fsl/jr.c
drivers/crypto/fsl/jr.h

index cc8d3b02a5349b72586eabb0f5295c367463d743..31217623649f012ed6c6a9e5bed4ae01735eae12 100644 (file)
@@ -578,8 +578,6 @@ int sec_init_idx(uint8_t sec_idx)
 {
        ccsr_sec_t *sec = (void *)SEC_ADDR(sec_idx);
        uint32_t mcr = sec_in32(&sec->mcfgr);
-       uint32_t jrown_ns;
-       int i;
        int ret = 0;
 
 #ifdef CONFIG_FSL_CORENET
@@ -635,13 +633,6 @@ int sec_init_idx(uint8_t sec_idx)
 #endif
 #endif
 
-       /* Set ownership of job rings to non-TrustZone mode by default */
-       for (i = 0; i < ARRAY_SIZE(sec->jrliodnr); i++) {
-               jrown_ns = sec_in32(&sec->jrliodnr[i].ms);
-               jrown_ns |= JROWN_NS | JRMID_NS;
-               sec_out32(&sec->jrliodnr[i].ms, jrown_ns);
-       }
-
        ret = jr_init(sec_idx);
        if (ret < 0) {
                printf("SEC initialization failed\n");
index f6fbb4438382d6b62cb92b07ff750de69d033a0e..ffd3a1927385c58d1a212b244c8bd1a5fdec3011 100644 (file)
@@ -33,8 +33,6 @@
 #define JRNSLIODN_MASK         0x0fff0000
 #define JRSLIODN_SHIFT         0
 #define JRSLIODN_MASK          0x00000fff
-#define JROWN_NS               0x00000008
-#define JRMID_NS               0x00000001
 
 #define JQ_DEQ_ERR             -1
 #define JQ_DEQ_TO_ERR          -2