riscv: smp: Add 64bit hartid support on RV64
authorSunil V L <sunilvl@ventanamicro.com>
Fri, 27 May 2022 05:17:41 +0000 (10:47 +0530)
committerPalmer Dabbelt <palmer@rivosinc.com>
Tue, 19 Jul 2022 23:39:09 +0000 (16:39 -0700)
The hartid can be a 64bit value on RV64 platforms.

Modify the hartid parameter in riscv_hartid_to_cpuid() as
unsigned long so that it can hold 64bit value on RV64 platforms.

Signed-off-by: Sunil V L <sunilvl@ventanamicro.com>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Atish Patra <atishp@rivosinc.com>
Link: https://lore.kernel.org/r/20220527051743.2829940-4-sunilvl@ventanamicro.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/include/asm/smp.h
arch/riscv/kernel/smp.c

index 23170c933d733d866d976ecfc9baf72bbd2b827c..d3443be7eedc5f72937b039bc17485134a381a18 100644 (file)
@@ -42,7 +42,7 @@ void arch_send_call_function_ipi_mask(struct cpumask *mask);
 /* Hook for the generic smp_call_function_single() routine. */
 void arch_send_call_function_single_ipi(int cpu);
 
-int riscv_hartid_to_cpuid(int hartid);
+int riscv_hartid_to_cpuid(unsigned long hartid);
 
 /* Set custom IPI operations */
 void riscv_set_ipi_ops(const struct riscv_ipi_ops *ops);
@@ -70,7 +70,7 @@ static inline void show_ipi_stats(struct seq_file *p, int prec)
 {
 }
 
-static inline int riscv_hartid_to_cpuid(int hartid)
+static inline int riscv_hartid_to_cpuid(unsigned long hartid)
 {
        if (hartid == boot_cpu_hartid)
                return 0;
index b5d30ea922925fbfacd7f97d552d260119512e41..018e7dc45df6c64365cae27e9906bfc5c870baf1 100644 (file)
@@ -47,7 +47,7 @@ static struct {
        unsigned long bits ____cacheline_aligned;
 } ipi_data[NR_CPUS] __cacheline_aligned;
 
-int riscv_hartid_to_cpuid(int hartid)
+int riscv_hartid_to_cpuid(unsigned long hartid)
 {
        int i;
 
@@ -55,7 +55,7 @@ int riscv_hartid_to_cpuid(int hartid)
                if (cpuid_to_hartid_map(i) == hartid)
                        return i;
 
-       pr_err("Couldn't find cpu id for hartid [%d]\n", hartid);
+       pr_err("Couldn't find cpu id for hartid [%lu]\n", hartid);
        return -ENOENT;
 }