s390/topology: remove topology lock
authorMichael Holzheu <holzheu@linux.vnet.ibm.com>
Sat, 1 Aug 2015 16:12:41 +0000 (18:12 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 7 Aug 2015 07:56:58 +0000 (09:56 +0200)
Since we are already protected by the "sched_domains_mutex" lock, we can
safely remove the topology lock.

Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/topology.c
arch/s390/numa/mode_emu.c

index 0f5f8b09c903ea7eda4de387cdb7d56adcc32ff7..1fbe1f83f89c0ae9b3f179f63dc51b0824a7b471 100644 (file)
@@ -40,8 +40,10 @@ static struct sysinfo_15_1_x *tl_info;
 static int topology_enabled = 1;
 static DECLARE_WORK(topology_work, topology_work_fn);
 
-/* topology_lock protects the socket and book linked lists */
-static DEFINE_SPINLOCK(topology_lock);
+/*
+ * Socket/Book linked lists and per_cpu(cpu_topology) updates are
+ * protected by "sched_domains_mutex".
+ */
 static struct mask_info socket_info;
 static struct mask_info book_info;
 
@@ -191,7 +193,6 @@ static void tl_to_masks(struct sysinfo_15_1_x *info)
 {
        struct cpuid cpu_id;
 
-       spin_lock_irq(&topology_lock);
        get_cpu_id(&cpu_id);
        clear_masks();
        switch (cpu_id.machine) {
@@ -202,7 +203,6 @@ static void tl_to_masks(struct sysinfo_15_1_x *info)
        default:
                __tl_to_masks_generic(info);
        }
-       spin_unlock_irq(&topology_lock);
 }
 
 static void topology_update_polarization_simple(void)
@@ -247,10 +247,8 @@ int topology_set_cpu_management(int fc)
 
 static void update_cpu_masks(void)
 {
-       unsigned long flags;
        int cpu;
 
-       spin_lock_irqsave(&topology_lock, flags);
        for_each_possible_cpu(cpu) {
                per_cpu(cpu_topology, cpu).thread_mask = cpu_thread_map(cpu);
                per_cpu(cpu_topology, cpu).core_mask = cpu_group_map(&socket_info, cpu);
@@ -262,7 +260,6 @@ static void update_cpu_masks(void)
                        per_cpu(cpu_topology, cpu).book_id = cpu;
                }
        }
-       spin_unlock_irqrestore(&topology_lock, flags);
        numa_update_cpu_topology();
 }
 
index 9d4e1e15a6f023e0df9cfc2db0e91b7fcc7fe9a2..646cd94cff2f9de2e8f985e32ca1b5fb187718cf 100644 (file)
@@ -51,6 +51,11 @@ enum {TOPTREE_ID_PHYS, TOPTREE_ID_NUMA};
 static int emu_nodes = 1;
 /* NUMA stripe size */
 static unsigned long emu_size;
+
+/*
+ * Node to core pinning information updates are protected by
+ * "sched_domains_mutex".
+ */
 /* Pinned core to node mapping */
 static int cores_to_node_id[CONFIG_NR_CPUS];
 /* Total number of pinned cores */
@@ -393,7 +398,7 @@ static void print_node_to_core_map(void)
  * Transfer physical topology into a NUMA topology and modify CPU masks
  * according to the NUMA topology.
  *
- * This function is called under the CPU hotplug lock.
+ * Must be called with "sched_domains_mutex" lock held.
  */
 static void emu_update_cpu_topology(void)
 {