soc: qcom: mdt_loader: Reorder parts of __qcom_mdt_load()
authorBjorn Andersson <bjorn.andersson@linaro.org>
Fri, 28 Jan 2022 02:55:06 +0000 (18:55 -0800)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Thu, 3 Feb 2022 21:32:30 +0000 (15:32 -0600)
Move the traversal of the program headers to the start of the function,
to make sure that min_ and max_addr are in scope as the call to
qcom_scm_pas_mem_setup() is moved in the next commit.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20220128025513.97188-7-bjorn.andersson@linaro.org
drivers/soc/qcom/mdt_loader.c

index 37e2e73..ee99178 100644 (file)
@@ -213,6 +213,22 @@ static int __qcom_mdt_load(struct device *dev, const struct firmware *fw,
        ehdr = (struct elf32_hdr *)fw->data;
        phdrs = (struct elf32_phdr *)(ehdr + 1);
 
+       for (i = 0; i < ehdr->e_phnum; i++) {
+               phdr = &phdrs[i];
+
+               if (!mdt_phdr_valid(phdr))
+                       continue;
+
+               if (phdr->p_flags & QCOM_MDT_RELOCATABLE)
+                       relocate = true;
+
+               if (phdr->p_paddr < min_addr)
+                       min_addr = phdr->p_paddr;
+
+               if (phdr->p_paddr + phdr->p_memsz > max_addr)
+                       max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K);
+       }
+
        if (pas_init) {
                metadata = qcom_mdt_read_metadata(fw, &metadata_len, fw_name, dev);
                if (IS_ERR(metadata)) {
@@ -233,22 +249,6 @@ static int __qcom_mdt_load(struct device *dev, const struct firmware *fw,
                }
        }
 
-       for (i = 0; i < ehdr->e_phnum; i++) {
-               phdr = &phdrs[i];
-
-               if (!mdt_phdr_valid(phdr))
-                       continue;
-
-               if (phdr->p_flags & QCOM_MDT_RELOCATABLE)
-                       relocate = true;
-
-               if (phdr->p_paddr < min_addr)
-                       min_addr = phdr->p_paddr;
-
-               if (phdr->p_paddr + phdr->p_memsz > max_addr)
-                       max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K);
-       }
-
        if (relocate) {
                if (pas_init) {
                        ret = qcom_scm_pas_mem_setup(pas_id, mem_phys,