From: Abdul Halim, Muhammad Hadi Asyrafi Date: Mon, 1 Jun 2020 17:05:24 +0000 (+0800) Subject: intel: mailbox: Use retry count in mailbox poll X-Git-Tag: baikal/aarch64/sdk5.9~1099^2~4 X-Git-Url: https://git.baikalelectronics.ru/?a=commitdiff_plain;h=4978bc28325f5337bac5b2a2df1b772409628cb2;p=arm-tf.git intel: mailbox: Use retry count in mailbox poll Change the main loop inside mailbox poll function from while(1) to a retry counter named sdm_loop. This is to limit the maximum possible looping of the function and prevent unexpected behaviour. Signed-off-by: Abdul Halim, Muhammad Hadi Asyrafi Change-Id: I63afad958fe5f656f6333b60d5a8b4c0ada3b23d --- diff --git a/plat/intel/soc/common/soc/socfpga_mailbox.c b/plat/intel/soc/common/soc/socfpga_mailbox.c index 984aa9c6e..ddfe34cd0 100644 --- a/plat/intel/soc/common/soc/socfpga_mailbox.c +++ b/plat/intel/soc/common/soc/socfpga_mailbox.c @@ -90,12 +90,13 @@ int mailbox_poll_response(uint32_t job_id, int urgent, uint32_t *response, int resp_len) { uint32_t timeout = 40U; + uint32_t sdm_loop = 255U; int rin = 0; int rout = 0; int resp_data = 0; int ret_resp_len; - while (1) { + while (sdm_loop != 0U) { do { if (mmio_read_32(MBOX_OFFSET + MBOX_DOORBELL_FROM_SDM) @@ -106,8 +107,7 @@ int mailbox_poll_response(uint32_t job_id, int urgent, uint32_t *response, } while (--timeout != 0U); if (timeout == 0U) { - INFO("Timed out waiting for SDM\n"); - return MBOX_TIMEOUT; + break; } mmio_write_32(MBOX_OFFSET + MBOX_DOORBELL_FROM_SDM, 0); @@ -155,7 +155,12 @@ int mailbox_poll_response(uint32_t job_id, int urgent, uint32_t *response, return ret_resp_len; } + + sdm_loop--; } + + INFO("Timed out waiting for SDM\n"); + return MBOX_TIMEOUT; } int iterate_resp(int mbox_resp_len, uint32_t *resp_buf, int resp_len)