Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 95332
b: refs/heads/master
c: d00aa4e
h: refs/heads/master
v: v3
  • Loading branch information
Heiko Carstens authored and Martin Schwidefsky committed Apr 30, 2008
1 parent d0b7fdd commit 15a635e
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: edf2209692769d3e461c0351553098bc017c2caf
refs/heads/master: d00aa4e7d0129983fc4389c85e15a066eb4e69a9
21 changes: 18 additions & 3 deletions trunk/arch/s390/kernel/topology.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -199,18 +201,28 @@ 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;
struct sys_device *sysdev;
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);
Expand Down Expand Up @@ -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);

Expand Down
4 changes: 4 additions & 0 deletions trunk/include/asm-s390/topology.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down

0 comments on commit 15a635e

Please sign in to comment.