[S390] cpu topology: introduce kernel parameter

Introduce a topology=[on|off] kernel parameter which allows to switch
cpu topology on/off. Default will be off, since it looks like that for
some workloards this doesn't behave very well (on s390).

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Heiko Carstens 2008-12-25 13:39:23 +01:00 committed by Martin Schwidefsky
parent 9fee8db222
commit 2b1a61f0a8
2 changed files with 19 additions and 1 deletions

View file

@ -2252,6 +2252,14 @@ and is between 256 and 4096 characters. It is defined in the file
See comment before function dc390_setup() in See comment before function dc390_setup() in
drivers/scsi/tmscsim.c. drivers/scsi/tmscsim.c.
topology= [S390]
Format: {off | on}
Specify if the kernel should make use of the cpu
topology informations if the hardware supports these.
The scheduler will make use of these informations and
e.g. base its process migration decisions on it.
Default is off.
tp720= [HW,PS2] tp720= [HW,PS2]
trix= [HW,OSS] MediaTrix AudioTrix Pro trix= [HW,OSS] MediaTrix AudioTrix Pro

View file

@ -58,6 +58,7 @@ struct core_info {
cpumask_t mask; cpumask_t mask;
}; };
static int topology_enabled;
static void topology_work_fn(struct work_struct *work); static void topology_work_fn(struct work_struct *work);
static struct tl_info *tl_info; static struct tl_info *tl_info;
static struct core_info core_info; static struct core_info core_info;
@ -78,7 +79,7 @@ cpumask_t cpu_coregroup_map(unsigned int cpu)
cpumask_t mask; cpumask_t mask;
cpus_clear(mask); cpus_clear(mask);
if (!machine_has_topology) if (!topology_enabled || !machine_has_topology)
return cpu_possible_map; return cpu_possible_map;
spin_lock_irqsave(&topology_lock, flags); spin_lock_irqsave(&topology_lock, flags);
while (core) { while (core) {
@ -263,6 +264,15 @@ static void topology_interrupt(__u16 code)
schedule_work(&topology_work); schedule_work(&topology_work);
} }
static int __init early_parse_topology(char *p)
{
if (strncmp(p, "on", 2))
return 0;
topology_enabled = 1;
return 0;
}
early_param("topology", early_parse_topology);
static int __init init_topology_update(void) static int __init init_topology_update(void)
{ {
int rc; int rc;