forked from luck/tmp_suning_uos_patched
RISC-V: Move cpuid to hartid mapping to SMP.
Currently, logical CPU id to physical hartid mapping is defined for both smp and non-smp configurations. This is not required as we need this only for smp configuration. The mapping function can define directly boot_cpu_hartid for non-smp use case. The reverse mapping function i.e. hartid to cpuid can be called for any valid but not booted harts. So it should return default cpu 0 only if it is a boot hartid. Signed-off-by: Atish Patra <atish.patra@wdc.com> Reviewed-by: Anup Patel <anup@brainfault.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
This commit is contained in:
parent
e15c6e3706
commit
78d1daa364
|
@ -19,16 +19,17 @@
|
|||
#include <linux/thread_info.h>
|
||||
|
||||
#define INVALID_HARTID ULONG_MAX
|
||||
|
||||
struct seq_file;
|
||||
extern unsigned long boot_cpu_hartid;
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
/*
|
||||
* Mapping between linux logical cpu index and hartid.
|
||||
*/
|
||||
extern unsigned long __cpuid_to_hartid_map[NR_CPUS];
|
||||
#define cpuid_to_hartid_map(cpu) __cpuid_to_hartid_map[cpu]
|
||||
|
||||
struct seq_file;
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
||||
/* print IPI stats */
|
||||
void show_ipi_stats(struct seq_file *p, int prec);
|
||||
|
||||
|
@ -58,7 +59,14 @@ static inline void show_ipi_stats(struct seq_file *p, int prec)
|
|||
|
||||
static inline int riscv_hartid_to_cpuid(int hartid)
|
||||
{
|
||||
return 0;
|
||||
if (hartid == boot_cpu_hartid)
|
||||
return 0;
|
||||
|
||||
return -1;
|
||||
}
|
||||
static inline unsigned long cpuid_to_hartid_map(int cpu)
|
||||
{
|
||||
return boot_cpu_hartid;
|
||||
}
|
||||
|
||||
static inline void riscv_cpuid_to_hartid_mask(const struct cpumask *in,
|
||||
|
|
|
@ -61,15 +61,6 @@ EXPORT_SYMBOL(empty_zero_page);
|
|||
atomic_t hart_lottery;
|
||||
unsigned long boot_cpu_hartid;
|
||||
|
||||
unsigned long __cpuid_to_hartid_map[NR_CPUS] = {
|
||||
[0 ... NR_CPUS-1] = INVALID_HARTID
|
||||
};
|
||||
|
||||
void __init smp_setup_processor_id(void)
|
||||
{
|
||||
cpuid_to_hartid_map(0) = boot_cpu_hartid;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
static void __init setup_initrd(void)
|
||||
{
|
||||
|
|
|
@ -36,6 +36,15 @@ enum ipi_message_type {
|
|||
IPI_MAX
|
||||
};
|
||||
|
||||
unsigned long __cpuid_to_hartid_map[NR_CPUS] = {
|
||||
[0 ... NR_CPUS-1] = INVALID_HARTID
|
||||
};
|
||||
|
||||
void __init smp_setup_processor_id(void)
|
||||
{
|
||||
cpuid_to_hartid_map(0) = boot_cpu_hartid;
|
||||
}
|
||||
|
||||
/* A collection of single bit ipi messages. */
|
||||
static struct {
|
||||
unsigned long stats[IPI_MAX] ____cacheline_aligned;
|
||||
|
|
Loading…
Reference in New Issue
Block a user