cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

topology.c (1571B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * arch/sh/kernel/topology.c
      4 *
      5 *  Copyright (C) 2007  Paul Mundt
      6 */
      7#include <linux/cpu.h>
      8#include <linux/cpumask.h>
      9#include <linux/init.h>
     10#include <linux/percpu.h>
     11#include <linux/topology.h>
     12#include <linux/node.h>
     13#include <linux/nodemask.h>
     14#include <linux/export.h>
     15
     16static DEFINE_PER_CPU(struct cpu, cpu_devices);
     17
     18cpumask_t cpu_core_map[NR_CPUS];
     19EXPORT_SYMBOL(cpu_core_map);
     20
     21static cpumask_t cpu_coregroup_map(int cpu)
     22{
     23	/*
     24	 * Presently all SH-X3 SMP cores are multi-cores, so just keep it
     25	 * simple until we have a method for determining topology..
     26	 */
     27	return *cpu_possible_mask;
     28}
     29
     30const struct cpumask *cpu_coregroup_mask(int cpu)
     31{
     32	return &cpu_core_map[cpu];
     33}
     34
     35int arch_update_cpu_topology(void)
     36{
     37	unsigned int cpu;
     38
     39	for_each_possible_cpu(cpu)
     40		cpu_core_map[cpu] = cpu_coregroup_map(cpu);
     41
     42	return 0;
     43}
     44
     45static int __init topology_init(void)
     46{
     47	int i, ret;
     48
     49	for_each_present_cpu(i) {
     50		struct cpu *c = &per_cpu(cpu_devices, i);
     51
     52		c->hotpluggable = 1;
     53
     54		ret = register_cpu(c, i);
     55		if (unlikely(ret))
     56			printk(KERN_WARNING "%s: register_cpu %d failed (%d)\n",
     57			       __func__, i, ret);
     58	}
     59
     60#if defined(CONFIG_NUMA) && !defined(CONFIG_SMP)
     61	/*
     62	 * In the UP case, make sure the CPU association is still
     63	 * registered under each node. Without this, sysfs fails
     64	 * to make the connection between nodes other than node0
     65	 * and cpu0.
     66	 */
     67	for_each_online_node(i)
     68		if (i != numa_node_id())
     69			register_cpu_under_node(raw_smp_processor_id(), i);
     70#endif
     71
     72	return 0;
     73}
     74subsys_initcall(topology_init);