MIPS: SGI-IP27: use cpu physid already present while scanning for CPUs

By using cpu physid already present when scanning for CPUs
get_cpu_slice() is unsued and can be removed together with two
other then used functions.

Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Signed-off-by: Paul Burton <paulburton@kernel.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: James Hogan <jhogan@kernel.org>
Cc: linux-mips@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
This commit is contained in:
Thomas Bogendoerfer 2020-01-09 13:33:39 +01:00 committed by Paul Burton
parent 2d11e6a4ff
commit d6972bb477
No known key found for this signature in database
GPG Key ID: 3EA79FACB57500DD
4 changed files with 8 additions and 74 deletions

View File

@ -26,6 +26,5 @@
#define INVALID_PARTID (partid_t)-1 #define INVALID_PARTID (partid_t)-1
extern nasid_t get_nasid(void); extern nasid_t get_nasid(void);
extern int get_cpu_slice(cpuid_t);
#endif /* _ASM_SN_ARCH_H */ #endif /* _ASM_SN_ARCH_H */

View File

@ -889,10 +889,6 @@ typedef union {
extern lboard_t *find_lboard(lboard_t *start, unsigned char type); extern lboard_t *find_lboard(lboard_t *start, unsigned char type);
extern klinfo_t *find_component(lboard_t *brd, klinfo_t *kli, unsigned char type); extern klinfo_t *find_component(lboard_t *brd, klinfo_t *kli, unsigned char type);
extern klinfo_t *find_first_component(lboard_t *brd, unsigned char type); extern klinfo_t *find_first_component(lboard_t *brd, unsigned char type);
extern klcpu_t *nasid_slice_to_cpuinfo(nasid_t, int);
extern lboard_t *find_lboard_class(lboard_t *start, unsigned char brd_class); extern lboard_t *find_lboard_class(lboard_t *start, unsigned char brd_class);
extern klcpu_t *sn_get_cpuinfo(cpuid_t cpu);
#endif /* _ASM_SN_KLCONFIG_H */ #endif /* _ASM_SN_KLCONFIG_H */

View File

@ -72,54 +72,3 @@ lboard_t *find_lboard_class(lboard_t *start, unsigned char brd_type)
/* Didn't find it. */ /* Didn't find it. */
return (lboard_t *)NULL; return (lboard_t *)NULL;
} }
klcpu_t *nasid_slice_to_cpuinfo(nasid_t nasid, int slice)
{
lboard_t *brd;
klcpu_t *acpu;
if (!(brd = find_lboard((lboard_t *)KL_CONFIG_INFO(nasid), KLTYPE_IP27)))
return (klcpu_t *)NULL;
if (!(acpu = (klcpu_t *)find_first_component(brd, KLSTRUCT_CPU)))
return (klcpu_t *)NULL;
do {
if ((acpu->cpu_info.physid) == slice)
return acpu;
} while ((acpu = (klcpu_t *)find_component(brd, (klinfo_t *)acpu,
KLSTRUCT_CPU)));
return (klcpu_t *)NULL;
}
klcpu_t *sn_get_cpuinfo(cpuid_t cpu)
{
nasid_t nasid;
int slice;
klcpu_t *acpu;
if (!(cpu < MAXCPUS)) {
printk("sn_get_cpuinfo: illegal cpuid 0x%lx\n", cpu);
return NULL;
}
nasid = cputonasid(cpu);
if (nasid == INVALID_NASID)
return NULL;
for (slice = 0; slice < CPUS_PER_NODE; slice++) {
acpu = nasid_slice_to_cpuinfo(nasid, slice);
if (acpu && acpu->cpu_info.virtid == cpu)
return acpu;
}
return NULL;
}
int get_cpu_slice(cpuid_t cpu)
{
klcpu_t *acpu;
if ((acpu = sn_get_cpuinfo(cpu)) == NULL)
return -1;
return acpu->cpu_info.physid;
}

View File

@ -29,22 +29,11 @@
#include "ip27-common.h" #include "ip27-common.h"
/* static int node_scan_cpus(nasid_t nasid, int highest)
* Takes as first input the PROM assigned cpu id, and the kernel
* assigned cpu id as the second.
*/
static void alloc_cpupda(nasid_t nasid, cpuid_t cpu, int cpunum)
{ {
cputonasid(cpunum) = nasid; static int cpus_found;
cputoslice(cpunum) = get_cpu_slice(cpu);
}
static int do_cpumask(nasid_t nasid, int highest)
{
static int tot_cpus_found = 0;
lboard_t *brd; lboard_t *brd;
klcpu_t *acpu; klcpu_t *acpu;
int cpus_found = 0;
cpuid_t cpuid; cpuid_t cpuid;
brd = find_lboard((lboard_t *)KL_CONFIG_INFO(nasid), KLTYPE_IP27); brd = find_lboard((lboard_t *)KL_CONFIG_INFO(nasid), KLTYPE_IP27);
@ -55,13 +44,13 @@ static int do_cpumask(nasid_t nasid, int highest)
cpuid = acpu->cpu_info.virtid; cpuid = acpu->cpu_info.virtid;
/* Only let it join in if it's marked enabled */ /* Only let it join in if it's marked enabled */
if ((acpu->cpu_info.flags & KLINFO_ENABLE) && if ((acpu->cpu_info.flags & KLINFO_ENABLE) &&
(tot_cpus_found != NR_CPUS)) { (cpus_found != NR_CPUS)) {
if (cpuid > highest) if (cpuid > highest)
highest = cpuid; highest = cpuid;
set_cpu_possible(cpuid, true); set_cpu_possible(cpuid, true);
alloc_cpupda(nasid, cpuid, tot_cpus_found); cputonasid(cpus_found) = nasid;
cputoslice(cpus_found) = acpu->cpu_info.physid;
cpus_found++; cpus_found++;
tot_cpus_found++;
} }
acpu = (klcpu_t *)find_component(brd, (klinfo_t *)acpu, acpu = (klcpu_t *)find_component(brd, (klinfo_t *)acpu,
KLSTRUCT_CPU); KLSTRUCT_CPU);
@ -87,7 +76,7 @@ void cpu_node_probe(void)
if (nasid == INVALID_NASID) if (nasid == INVALID_NASID)
break; break;
node_set_online(nasid); node_set_online(nasid);
highest = do_cpumask(nasid, highest); highest = node_scan_cpus(nasid, highest);
} }
printk("Discovered %d cpus on %d nodes\n", highest + 1, num_online_nodes()); printk("Discovered %d cpus on %d nodes\n", highest + 1, num_online_nodes());
@ -180,7 +169,8 @@ static void __init ip27_smp_setup(void)
/* /*
* PROM sets up system, that boot cpu is always first CPU on nasid 0 * PROM sets up system, that boot cpu is always first CPU on nasid 0
*/ */
alloc_cpupda(0, 0, 0); cputonasid(0) = 0;
cputoslice(0) = LOCAL_HUB_L(PI_CPU_NUM);
} }
static void __init ip27_prepare_cpus(unsigned int max_cpus) static void __init ip27_prepare_cpus(unsigned int max_cpus)