lib: sbi: Override domain boot HART when coldboot HART assigned to it
authorAnup Patel <anup.patel@wdc.com>
Sun, 15 Nov 2020 08:00:29 +0000 (13:30 +0530)
committerAnup Patel <anup@brainfault.org>
Fri, 4 Dec 2020 12:28:59 +0000 (17:58 +0530)
If coldboot HART is assigned to a domain then we should use coldboot
HART as the boot HART of the domain. This allows coldboot HART to
continue boot sequence even when it is assigned to some non-root domain.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
lib/sbi/sbi_domain.c

index ecb098c..1b50604 100644 (file)
@@ -395,6 +395,17 @@ int sbi_domain_finalize(struct sbi_scratch *scratch, u32 cold_hartid)
                                                &tdom->assigned_harts);
                        hartid_to_domain_table[i] = dom;
                        sbi_hartmask_set_hart(i, &dom->assigned_harts);
+
+                       /*
+                        * If cold boot HART is assigned to this domain then
+                        * override boot HART of this domain.
+                        */
+                       if (i == cold_hartid &&
+                           dom->boot_hartid != cold_hartid) {
+                               sbi_printf("Domain%d Boot HARTID forced to"
+                                          " %d\n", dom->index, cold_hartid);
+                               dom->boot_hartid = cold_hartid;
+                       }
                }
        }