Loading arch/s390/kernel/topology.c +18 −3 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ static struct timer_list topology_timer; static void set_topology_timer(void); static DECLARE_WORK(topology_work, topology_work_fn); cpumask_t cpu_core_map[NR_CPUS]; cpumask_t cpu_coregroup_map(unsigned int cpu) { struct core_info *core = &core_info; Loading Loading @@ -199,6 +201,14 @@ int topology_set_cpu_management(int fc) return rc; } static void update_cpu_core_map(void) { int cpu; for_each_present_cpu(cpu) cpu_core_map[cpu] = cpu_coregroup_map(cpu); } void arch_update_cpu_topology(void) { struct tl_info *info = tl_info; Loading @@ -206,11 +216,13 @@ void arch_update_cpu_topology(void) int cpu; if (!machine_has_topology) { update_cpu_core_map(); topology_update_polarization_simple(); return; } stsi(info, 15, 1, 2); tl_to_cores(info); update_cpu_core_map(); for_each_online_cpu(cpu) { sysdev = get_cpu_sysdev(cpu); kobject_uevent(&sysdev->kobj, KOBJ_CHANGE); Loading Loading @@ -251,20 +263,23 @@ static int __init init_topology_update(void) { int rc; rc = 0; if (!machine_has_topology) { topology_update_polarization_simple(); return 0; goto out; } init_timer_deferrable(&topology_timer); if (machine_has_topology_irq) { rc = register_external_interrupt(0x2005, topology_interrupt); if (rc) return rc; goto out; ctl_set_bit(0, 8); } else set_topology_timer(); return 0; out: update_cpu_core_map(); return rc; } __initcall(init_topology_update); Loading include/asm-s390/topology.h +4 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,10 @@ cpumask_t cpu_coregroup_map(unsigned int cpu); extern cpumask_t cpu_core_map[NR_CPUS]; #define topology_core_siblings(cpu) (cpu_core_map[cpu]) int topology_set_cpu_management(int fc); void topology_schedule_update(void); Loading Loading
arch/s390/kernel/topology.c +18 −3 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ static struct timer_list topology_timer; static void set_topology_timer(void); static DECLARE_WORK(topology_work, topology_work_fn); cpumask_t cpu_core_map[NR_CPUS]; cpumask_t cpu_coregroup_map(unsigned int cpu) { struct core_info *core = &core_info; Loading Loading @@ -199,6 +201,14 @@ int topology_set_cpu_management(int fc) return rc; } static void update_cpu_core_map(void) { int cpu; for_each_present_cpu(cpu) cpu_core_map[cpu] = cpu_coregroup_map(cpu); } void arch_update_cpu_topology(void) { struct tl_info *info = tl_info; Loading @@ -206,11 +216,13 @@ void arch_update_cpu_topology(void) int cpu; if (!machine_has_topology) { update_cpu_core_map(); topology_update_polarization_simple(); return; } stsi(info, 15, 1, 2); tl_to_cores(info); update_cpu_core_map(); for_each_online_cpu(cpu) { sysdev = get_cpu_sysdev(cpu); kobject_uevent(&sysdev->kobj, KOBJ_CHANGE); Loading Loading @@ -251,20 +263,23 @@ static int __init init_topology_update(void) { int rc; rc = 0; if (!machine_has_topology) { topology_update_polarization_simple(); return 0; goto out; } init_timer_deferrable(&topology_timer); if (machine_has_topology_irq) { rc = register_external_interrupt(0x2005, topology_interrupt); if (rc) return rc; goto out; ctl_set_bit(0, 8); } else set_topology_timer(); return 0; out: update_cpu_core_map(); return rc; } __initcall(init_topology_update); Loading
include/asm-s390/topology.h +4 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,10 @@ cpumask_t cpu_coregroup_map(unsigned int cpu); extern cpumask_t cpu_core_map[NR_CPUS]; #define topology_core_siblings(cpu) (cpu_core_map[cpu]) int topology_set_cpu_management(int fc); void topology_schedule_update(void); Loading