Linux-RISC-V Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] riscv: Report error when repeatedly recording CPU hardware ID
@ 2024-08-23  9:11 Zhe Qiao
  2024-08-23 10:08 ` Anup Patel
  2024-08-23 12:57 ` Conor Dooley
  0 siblings, 2 replies; 8+ messages in thread
From: Zhe Qiao @ 2024-08-23  9:11 UTC (permalink / raw)
  To: qiaozhe, paul.walmsley, palmer, aou, conor.dooley, samuel.holland,
	evan, tglx, andy.chiu, cleger, ajones
  Cc: linux-riscv

In the of_parse_and_init_cpus() function, when the __cpuid_to_hartid_map[]
array records the CPU hardware ID, if the same CPU hardware attribute has 
been recorded, an error report is issued, thereby ensuring the uniqueness
of the CPU hardware ID recorded in the __cpuid_to_hartid_map[] array.

Signed-off-by: Zhe Qiao <qiaozhe@iscas.ac.cn>
---
 arch/riscv/kernel/smpboot.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/arch/riscv/kernel/smpboot.c b/arch/riscv/kernel/smpboot.c
index 0f8f1c95ac38..698f9fe791f7 100644
--- a/arch/riscv/kernel/smpboot.c
+++ b/arch/riscv/kernel/smpboot.c
@@ -118,6 +118,16 @@ static void __init acpi_parse_and_init_cpus(void)
 #define acpi_parse_and_init_cpus(...)	do { } while (0)
 #endif
 
+static bool __init is_mpidr_duplicate(unsigned int cpuid, u64 hart)
+{
+	unsigned int i;
+
+	for (i = 1; (i < cpuid) && (i < NR_CPUS); i++)
+		if (cpuid_to_hartid_map(i) == hart)
+			return true;
+	return false;
+}
+
 static void __init of_parse_and_init_cpus(void)
 {
 	struct device_node *dn;
@@ -131,6 +141,12 @@ static void __init of_parse_and_init_cpus(void)
 		if (rc < 0)
 			continue;
 
+		if (is_mpidr_duplicate(cpuid, hart)) {
+			pr_err("%pOF: duplicate cpu reg properties in the DT\n",
+				dn);
+			continue;
+		}
+
 		if (hart == cpuid_to_hartid_map(0)) {
 			BUG_ON(found_boot_cpu);
 			found_boot_cpu = 1;
-- 
2.43.0


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-08-27  8:27 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-23  9:11 [PATCH] riscv: Report error when repeatedly recording CPU hardware ID Zhe Qiao
2024-08-23 10:08 ` Anup Patel
2024-08-24  2:10   ` qiaozhe
2024-08-23 12:57 ` Conor Dooley
2024-08-24  2:41   ` qiaozhe
2024-08-26  8:15     ` Conor Dooley
2024-08-27  1:39       ` qiaozhe
2024-08-27  8:27         ` Conor Dooley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox