summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2008-12-25 13:39:23 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2008-12-25 13:39:14 +0100
commit2b1a61f0a8c714c96277bf16a823a84bafa1397d (patch)
treea874b7717e33cb408bfd7edff115e8dba83040c2
parent9fee8db222a344b9ee407fad9c652ed823690788 (diff)
downloadlwn-2b1a61f0a8c714c96277bf16a823a84bafa1397d.tar.gz
lwn-2b1a61f0a8c714c96277bf16a823a84bafa1397d.zip
[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>
-rw-r--r--Documentation/kernel-parameters.txt8
-rw-r--r--arch/s390/kernel/topology.c12
2 files changed, 19 insertions, 1 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index c9115c1b672c..09ede6c90ad7 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -2252,6 +2252,14 @@ and is between 256 and 4096 characters. It is defined in the file
See comment before function dc390_setup() in
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]
trix= [HW,OSS] MediaTrix AudioTrix Pro
diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c
index 36faac50e774..71e6f56bfead 100644
--- a/arch/s390/kernel/topology.c
+++ b/arch/s390/kernel/topology.c
@@ -58,6 +58,7 @@ struct core_info {
cpumask_t mask;
};
+static int topology_enabled;
static void topology_work_fn(struct work_struct *work);
static struct tl_info *tl_info;
static struct core_info core_info;
@@ -78,7 +79,7 @@ cpumask_t cpu_coregroup_map(unsigned int cpu)
cpumask_t mask;
cpus_clear(mask);
- if (!machine_has_topology)
+ if (!topology_enabled || !machine_has_topology)
return cpu_possible_map;
spin_lock_irqsave(&topology_lock, flags);
while (core) {
@@ -263,6 +264,15 @@ static void topology_interrupt(__u16 code)
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)
{
int rc;