diff options
Diffstat (limited to 'fwu/ns_bl1u/ns_bl1u_main.c')
-rw-r--r-- | fwu/ns_bl1u/ns_bl1u_main.c | 172 |
1 files changed, 4 insertions, 168 deletions
diff --git a/fwu/ns_bl1u/ns_bl1u_main.c b/fwu/ns_bl1u/ns_bl1u_main.c index 4b2d3c6..956f9df 100644 --- a/fwu/ns_bl1u/ns_bl1u_main.c +++ b/fwu/ns_bl1u/ns_bl1u_main.c @@ -51,12 +51,6 @@ #define FWU_NON_EXEC (0x0) #define FWU_EXEC (0x1) -/* Expected number of SMC calls supported in BL1 */ -#define BL1_NUM_SMC_CALLS (10) - -/* Expected version of BL1 SMC implementation */ -#define BL1_SMC_VER_VALUE (1) - /* This size is used to exercise partial copy */ #define FWU_COPY_PARTIAL_SIZE (0x10) @@ -64,6 +58,8 @@ extern const char version_string[]; typedef void (*ns_bl2u_entrypoint_t)(unsigned long); +void ns_bl1u_fwu_test_main(void); + /* * This structure will be used for: * 1. Assigning unique image identifier. @@ -103,7 +99,7 @@ static const fwu_image_load_desc_t ns_bl1u_desc[] = { } }; -unsigned long smc_result; +static unsigned long smc_result; #define CHECK_SMC_RESULT(_r) do { \ if (smc_result != _r) { \ @@ -112,7 +108,7 @@ unsigned long smc_result; } \ } while (0); -void ns_bl1u_fwu_smc_call(unsigned int smc_id, +static void ns_bl1u_fwu_smc_call(unsigned int smc_id, unsigned long x1, unsigned long x2, unsigned long x3, @@ -124,166 +120,6 @@ void ns_bl1u_fwu_smc_call(unsigned int smc_id, smc_result = fwu_result.ret0; } -#if FWU_BL_TEST -/******************************************************************************* - * Test the TF FWU SMC interface. - ******************************************************************************/ -static void ns_bl1u_fwu_test_main(void) -{ - unsigned int smc_fid; - - NOTICE("NS_BL1U: *****Starting NS_BL1U FWU test*****\n"); - - /* Basic FWU SMC handler test cases. */ - INFO("NS_BL1U: Calling BL1_SMC_CALL_COUNT\n"); - ns_bl1u_fwu_smc_call(BL1_SMC_CALL_COUNT, 0, 0, 0, 0); - CHECK_SMC_RESULT(BL1_NUM_SMC_CALLS); - - INFO("NS_BL1U: Calling BL1_SMC_VERSION\n"); - ns_bl1u_fwu_smc_call(BL1_SMC_VERSION, 0, 0, 0, 0); - CHECK_SMC_RESULT(BL1_SMC_VER_VALUE); - - INFO("NS_BL1U: Calling invalid SMC\n"); - ns_bl1u_fwu_smc_call(0xdeadbeef, 0, 0, 0, 0); - CHECK_SMC_RESULT(SMC_UNKNOWN); - - /* FWU_SMC_IMAGE_COPY test cases. */ - INFO("NS_BL1U: Doing FWU_SMC_IMAGE_COPY test\n"); - smc_fid = FWU_SMC_IMAGE_COPY; - - INFO("NS_BL1U: Calling with invalid image_id\n"); - ns_bl1u_fwu_smc_call(smc_fid, 0xdeadbeef, 0, 0, 0); - CHECK_SMC_RESULT(-EPERM); - - INFO("NS_BL1U: Calling with non-secure image_id\n"); - ns_bl1u_fwu_smc_call(smc_fid, NS_BL2U_IMAGE_ID, 0, 0, 0); - CHECK_SMC_RESULT(-EPERM); - - INFO("NS_BL1U: Calling with valid args\n"); - ns_bl1u_fwu_smc_call(smc_fid, FWU_CERT_ID, - PLAT_ARM_FWU_FIP_BASE, 0x20, 0x20); - CHECK_SMC_RESULT(STATUS_SUCCESS); - - INFO("NS_BL1U: Calling to copy an image_id again\n"); - ns_bl1u_fwu_smc_call(smc_fid, FWU_CERT_ID, - PLAT_ARM_FWU_FIP_BASE, 0x20, 0x20); - CHECK_SMC_RESULT(-EPERM); - - INFO("NS_BL1U: Calling with source address not mapped\n"); - ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, 0, 0, 0); - CHECK_SMC_RESULT(-ENOMEM); - - INFO("NS_BL1U: Calling with source size not mapped\n"); - ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, - PLAT_ARM_FWU_FIP_BASE, 0xdeadbeef, 0xdeadbeef); - CHECK_SMC_RESULT(-ENOMEM); - - INFO("NS_BL1U: Calling with image size more than secure mem\n"); - ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, - PLAT_ARM_FWU_FIP_BASE, 0x40000, 0x40000); - CHECK_SMC_RESULT(-ENOMEM); - - INFO("NS_BL1U: Calling with image size 0\n"); - ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, - PLAT_ARM_FWU_FIP_BASE, 0, 0); - CHECK_SMC_RESULT(-ENOMEM); - - INFO("NS_BL1U: Calling with 1st block size in partial copy\n"); - ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, - PLAT_ARM_FWU_FIP_BASE, 0x20, 0x40); - CHECK_SMC_RESULT(STATUS_SUCCESS); - - INFO("NS_BL1U: Calling FWU_SMC_IMAGE_AUTH while copying the image\n"); - ns_bl1u_fwu_smc_call(FWU_SMC_IMAGE_AUTH, BL2U_IMAGE_ID, - PLAT_ARM_FWU_FIP_BASE, 0x40, 0); - CHECK_SMC_RESULT(-EPERM); - - INFO("NS_BL1U: Calling with last block with invalid source" - " in partial copy\n"); - ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, 0, 0x21, 0x40); - CHECK_SMC_RESULT(-ENOMEM); - - INFO("NS_BL1U: Calling with last block size > total size" - " in partial copy\n"); - ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, - PLAT_ARM_FWU_FIP_BASE, 0x21, 0x40); - CHECK_SMC_RESULT(STATUS_SUCCESS); - - INFO("NS_BL1U: Calling FWU_SMC_IMAGE_AUTH to RESET the image state\n"); - ns_bl1u_fwu_smc_call(FWU_SMC_IMAGE_AUTH, BL2U_IMAGE_ID, - PLAT_ARM_FWU_FIP_BASE, 0x40, 0); - CHECK_SMC_RESULT(-EAUTH); - - INFO("NS_BL1U: Calling with block size > total size\n"); - ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, - PLAT_ARM_FWU_FIP_BASE, 0x21, 0x20); - CHECK_SMC_RESULT(STATUS_SUCCESS); - - INFO("NS_BL1U: Calling FWU_SMC_IMAGE_AUTH to RESET the image state\n"); - ns_bl1u_fwu_smc_call(FWU_SMC_IMAGE_AUTH, BL2U_IMAGE_ID, - PLAT_ARM_FWU_FIP_BASE, 0x40, 0); - CHECK_SMC_RESULT(-EAUTH); - - - /* FWU_SMC_IMAGE_AUTH test cases. */ - INFO("NS_BL1U: Doing FWU_SMC_IMAGE_AUTH test\n"); - smc_fid = FWU_SMC_IMAGE_AUTH; - - INFO("NS_BL1U: Calling with invalid image_id\n"); - ns_bl1u_fwu_smc_call(smc_fid, 0, 0, 0, 0); - CHECK_SMC_RESULT(-EPERM); - - INFO("NS_BL1U: Calling with secure image not copied\n"); - ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, 0, 0, 0); - CHECK_SMC_RESULT(-EPERM); - - INFO("NS_BL1U: Calling with source address not mapped\n"); - ns_bl1u_fwu_smc_call(smc_fid, NS_BL2U_IMAGE_ID, 0, 0, 0); - CHECK_SMC_RESULT(-ENOMEM); - - INFO("NS_BL1U: Calling with source size not mapped\n"); - ns_bl1u_fwu_smc_call(smc_fid, NS_BL2U_IMAGE_ID, - PLAT_ARM_FWU_FIP_BASE, 0xdeadbeef, 0); - CHECK_SMC_RESULT(-ENOMEM); - - INFO("NS_BL1U: Calling with valid args for copied image\n"); - ns_bl1u_fwu_smc_call(smc_fid, FWU_CERT_ID, 0, 0, 0); - CHECK_SMC_RESULT(-EAUTH); - - INFO("NS_BL1U: Calling FWU_SMC_IMAGE_COPY to copy after auth failure\n"); - ns_bl1u_fwu_smc_call(FWU_SMC_IMAGE_COPY, FWU_CERT_ID, - PLAT_ARM_FWU_FIP_BASE, 0x40, 0x40); - CHECK_SMC_RESULT(STATUS_SUCCESS); - - INFO("NS_BL1U: Calling with valid args for copied image\n"); - ns_bl1u_fwu_smc_call(smc_fid, FWU_CERT_ID, 0, 0, 0); - CHECK_SMC_RESULT(-EAUTH); - - /* FWU_SMC_IMAGE_EXECUTE test cases. */ - INFO("NS_BL1U: Doing FWU_SMC_IMAGE_EXECUTE test\n"); - smc_fid = FWU_SMC_IMAGE_EXECUTE; - - INFO("NS_BL1U: Calling with invalid image_id\n"); - ns_bl1u_fwu_smc_call(smc_fid, 0, 0, 0, 0); - CHECK_SMC_RESULT(-EPERM); - - INFO("NS_BL1U: Calling with non-executable image_id\n"); - ns_bl1u_fwu_smc_call(smc_fid, FWU_CERT_ID, 0, 0, 0); - CHECK_SMC_RESULT(-EPERM); - - INFO("NS_BL1U: Calling with un-authenticated image_id\n"); - ns_bl1u_fwu_smc_call(smc_fid, BL2U_IMAGE_ID, 0, 0, 0); - CHECK_SMC_RESULT(-EPERM); - - - /* FWU_SMC_IMAGE_RESUME test case. */ - INFO("NS_BL1U: Calling FWU_SMC_IMAGE_RESUME with invalid args\n"); - ns_bl1u_fwu_smc_call(FWU_SMC_IMAGE_RESUME, 0, 0, 0, 0); - CHECK_SMC_RESULT(-EPERM); - - NOTICE("NS_BL1U: *****All FWU test passed*****\n"); -} -#endif /* FWU_BL_TEST */ /******************************************************************************* * Following are the responsibilities of NS_BL1U image: |