public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Chen, Gong" <gong.chen@linux.intel.com>
To: Borislav Petkov <bp@alien8.de>
Cc: linux-kernel@vger.kernel.org, mingo@kernel.org,
	tglx@linutronix.de, paulus@samba.org, benh@kernel.crashing.org,
	tony.luck@intel.com, hpa@zytor.com, jkosina@suse.cz,
	rafael.j.wysocki@intel.com, linux@arm.linux.org.uk,
	ralf@linux-mips.org, schwidefsky@de.ibm.com, davem@davemloft.net,
	viro@zeniv.linux.org.uk, fweisbec@gmail.com, cl@linux.com,
	akpm@linux-foundation.org, axboe@kernel.dk,
	JBottomley@parallels.com, neilb@suse.de,
	christoffer.dall@linaro.org, rostedt@goodmis.org,
	rric@kernel.org, gregkh@linuxfoundation.org, mhocko@suse.cz,
	david@fromorbit.com
Subject: Re: [RFC PATCH v1 13/70] x86, x2apic_cluster: _FROZEN Cleanup
Date: Mon, 28 Jul 2014 02:04:55 -0400	[thread overview]
Message-ID: <20140728060455.GB23092@gchen.bj.intel.com> (raw)
In-Reply-To: <20140723203628.GJ21707@pd.tnic>

[-- Attachment #1: Type: text/plain, Size: 2804 bytes --]

On Wed, Jul 23, 2014 at 10:36:28PM +0200, Borislav Petkov wrote:
> Those checks dealing with CPU_TASKS_FROZEN in-between make the whole
> switch statement hard to follow.
> 
> How about we go a step further and deal with CPU_UP_CANCELED_FROZEN
> upfront and even simplify the rest:
> 

--------8<--------
Subject: [RFC PATCH v2 13/70] x86, x2apic_cluster: _FROZEN Cleanup

Remove XXX_FROZEN state from x86/x2apic_cluster.

Signed-off-by: Chen, Gong <gong.chen@linux.intel.com>
Suggested-by: Borislav Petkov <bp@alien8.de>
---
 arch/x86/kernel/apic/x2apic_cluster.c | 37 +++++++++++++++++++++++------------
 1 file changed, 24 insertions(+), 13 deletions(-)

diff --git a/arch/x86/kernel/apic/x2apic_cluster.c b/arch/x86/kernel/apic/x2apic_cluster.c
index e66766b..b8a6ea8 100644
--- a/arch/x86/kernel/apic/x2apic_cluster.c
+++ b/arch/x86/kernel/apic/x2apic_cluster.c
@@ -144,6 +144,20 @@ static void init_x2apic_ldr(void)
 	}
 }
 
+static void __update_clusterinfo(unsigned int this_cpu)
+{
+	unsigned int cpu;
+
+	for_each_online_cpu(cpu) {
+		if (x2apic_cluster(this_cpu) != x2apic_cluster(cpu))
+			continue;
+		__cpu_clear(this_cpu, per_cpu(cpus_in_cluster, cpu));
+		__cpu_clear(cpu, per_cpu(cpus_in_cluster, this_cpu));
+	}
+	free_cpumask_var(per_cpu(cpus_in_cluster, this_cpu));
+	free_cpumask_var(per_cpu(ipi_mask, this_cpu));
+}
+
  /*
   * At CPU state changes, update the x2apic cluster sibling info.
   */
@@ -151,34 +165,31 @@ static int
 update_clusterinfo(struct notifier_block *nfb, unsigned long action, void *hcpu)
 {
 	unsigned int this_cpu = (unsigned long)hcpu;
-	unsigned int cpu;
 	int err = 0;
 
 	switch (action) {
 	case CPU_UP_PREPARE:
 		if (!zalloc_cpumask_var(&per_cpu(cpus_in_cluster, this_cpu),
-					GFP_KERNEL)) {
+					GFP_KERNEL))
 			err = -ENOMEM;
-		} else if (!zalloc_cpumask_var(&per_cpu(ipi_mask, this_cpu),
-					       GFP_KERNEL)) {
+		else if (!zalloc_cpumask_var(&per_cpu(ipi_mask, this_cpu),
+					     GFP_KERNEL)) {
 			free_cpumask_var(per_cpu(cpus_in_cluster, this_cpu));
 			err = -ENOMEM;
 		}
 		break;
 	case CPU_UP_CANCELED:
-	case CPU_UP_CANCELED_FROZEN:
 	case CPU_DEAD:
-		for_each_online_cpu(cpu) {
-			if (x2apic_cluster(this_cpu) != x2apic_cluster(cpu))
-				continue;
-			__cpu_clear(this_cpu, per_cpu(cpus_in_cluster, cpu));
-			__cpu_clear(cpu, per_cpu(cpus_in_cluster, this_cpu));
-		}
-		free_cpumask_var(per_cpu(cpus_in_cluster, this_cpu));
-		free_cpumask_var(per_cpu(ipi_mask, this_cpu));
+		__update_clusterinfo(this_cpu);
+		break;
+	default:
 		break;
 	}
 
+	if (test_and_clear_bit(CPU_TASKS_FROZEN, &action) &&
+	    (action == CPU_UP_CANCELED))
+		__update_clusterinfo(this_cpu);
+
 	return notifier_from_errno(err);
 }
 
-- 
2.0.0.rc2

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2014-07-28  6:36 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-23  1:58 [RESEND RFC PATCH v1 0/70] Gloabl CPU Hot-plug flag _FROZEN Clean up Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 01/70] cpu: Restructure FROZEN state handling Chen, Gong
2014-07-23 13:50   ` Borislav Petkov
2014-07-23  1:58 ` [RFC PATCH v1 02/70] ia64, err_inject: _FROZEN Cleanup Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 03/70] ia64, mca: " Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 04/70] ia64, palinfo: " Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 05/70] ia64, salinfo: " Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 06/70] ia64, topology: " Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 07/70] x86, intel_cacheinfo: " Chen, Gong
2014-07-23 14:05   ` Borislav Petkov
2014-07-23  1:58 ` [RFC PATCH v1 08/70] x86, mce, therm_throt: " Chen, Gong
2014-07-23 16:17   ` Borislav Petkov
2014-07-23  1:58 ` [RFC PATCH v1 09/70] x86, mce_amd: " Chen, Gong
2014-07-23 16:21   ` Borislav Petkov
2014-07-23  1:58 ` [RFC PATCH v1 10/70] x86, kvm: " Chen, Gong
2014-07-23 16:23   ` Borislav Petkov
2014-07-23 19:22     ` Borislav Petkov
2014-07-23  1:58 ` [RFC PATCH v1 11/70] x86, vsyscall_64: " Chen, Gong
2014-07-23 17:24   ` Borislav Petkov
2014-07-23  1:58 ` [RFC PATCH v1 12/70] x86, pci, amd_bus: " Chen, Gong
2014-07-23 18:07   ` Borislav Petkov
2014-07-24  1:31     ` Chen, Gong
2014-07-24  8:28       ` Borislav Petkov
2014-07-28  6:03         ` Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 13/70] x86, x2apic_cluster: " Chen, Gong
2014-07-23 20:36   ` Borislav Petkov
2014-07-28  6:04     ` Chen, Gong [this message]
2014-07-29  8:44       ` Borislav Petkov
2014-07-29  9:00         ` Chen, Gong
2014-07-30  6:24     ` Chen, Gong
2014-07-30  8:48       ` Borislav Petkov
2014-07-31  7:52         ` Chen, Gong
2014-07-31  9:13           ` Borislav Petkov
2014-07-23  1:58 ` [RFC PATCH v1 14/70] x86, microcode, core: " Chen, Gong
2014-07-24  9:03   ` Borislav Petkov
2014-07-28  6:06     ` Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 15/70] x86, kernel, cpuid: " Chen, Gong
2014-07-24  9:11   ` Borislav Petkov
2014-07-23  1:58 ` [RFC PATCH v1 16/70] x86, kernel, msr: " Chen, Gong
2014-07-24  9:52   ` Borislav Petkov
2014-07-23  1:58 ` [RFC PATCH v1 17/70] arm, vfp, vfpmodule: " Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 18/70] arm, kvm: " Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 19/70] powerpc, sysfs: " Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 20/70] powerpc, mm, numa: " Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 21/70] powerpc, powermac, smp: " Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 22/70] powerpc, mmu_context_nohash: " Chen, Gong
2014-07-23  1:58 ` [RFC PATCH v1 23/70] mips, loongson, smp: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 24/70] s390, perf_cpum_sf: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 25/70] sparc, sysfs: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 26/70] rcu, tree: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 27/70] kernel, padata: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 28/70] kernel, profile: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 29/70] kernel, sched, core: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 30/70] kernel, hrtimer: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 31/70] kernel, relay: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 32/70] kernel, smp: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 33/70] kernel, timer: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 34/70] kernel, softirq: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 35/70] mm, slab: " Chen, Gong
2014-07-28 15:55   ` Christoph Lameter
2014-07-23  1:59 ` [RFC PATCH v1 36/70] mm, vmscan: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 37/70] mm, vmstat: " Chen, Gong
2014-07-28 15:56   ` Christoph Lameter
2014-07-23  1:59 ` [RFC PATCH v1 38/70] mm, memcontrol: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 39/70] mm, page_alloc: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 40/70] mm, slub: " Chen, Gong
2014-07-28 15:56   ` Christoph Lameter
2014-07-23  1:59 ` [RFC PATCH v1 41/70] fs, buffer: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 42/70] xfs, xfs_mount: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 43/70] net, iucv: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 44/70] net, core, flow: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 45/70] net, core, dev: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 46/70] block, blk-mq: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 47/70] block, blk-iopoll: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 48/70] block, blk-softirq: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 49/70] driver, base, topology: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 50/70] clocksource, metag_generic: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 51/70] powercap, intel_rapl: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 52/70] cpuidle, cpuidle-powernv: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 53/70] cpuidle, cpuidle-pseries: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 54/70] cpufreq, acpi-cpufreq: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 55/70] irqchip, irq-armada-370-xp: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 56/70] irqchip, irq-gic: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 57/70] scsi, bnx2fc, bnx2fc_fcoe: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 58/70] scsi, bnx2i, bnx2i_init: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 59/70] scsi, fcoe: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 60/70] scsi, virtio_scsi: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 61/70] md, raid5: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 62/70] virt, kvm, arm, arch_timer: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 63/70] virt, kvm, arm, vgic: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 64/70] trace, ring_buffer: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 65/70] oprofile, timer_int: " Chen, Gong
2014-07-28 13:35   ` Robert Richter
2014-07-23  1:59 ` [RFC PATCH v1 66/70] lib, cpu-notifier-error-inject: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 67/70] lib, percpu_counter: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 68/70] lib, radix-tree: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 69/70] staging, lustre, linux-cpu: " Chen, Gong
2014-07-23  1:59 ` [RFC PATCH v1 70/70] cpu: Eliminate _FROZEN flags thoroughly Chen, Gong
2014-07-25  1:35 ` [RESEND RFC PATCH v1 0/70] Gloabl CPU Hot-plug flag _FROZEN Clean up Chen, Gong
2014-07-25  7:10   ` Borislav Petkov
2014-07-25 13:46     ` Chen, Gong
2014-07-25 15:00 ` Robert Richter
2014-07-27  6:36   ` Chen, Gong
2014-07-27 10:17     ` Borislav Petkov
2014-07-28 13:28     ` Robert Richter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140728060455.GB23092@gchen.bj.intel.com \
    --to=gong.chen@linux.intel.com \
    --cc=JBottomley@parallels.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=benh@kernel.crashing.org \
    --cc=bp@alien8.de \
    --cc=christoffer.dall@linaro.org \
    --cc=cl@linux.com \
    --cc=davem@davemloft.net \
    --cc=david@fromorbit.com \
    --cc=fweisbec@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hpa@zytor.com \
    --cc=jkosina@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mhocko@suse.cz \
    --cc=mingo@kernel.org \
    --cc=neilb@suse.de \
    --cc=paulus@samba.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=ralf@linux-mips.org \
    --cc=rostedt@goodmis.org \
    --cc=rric@kernel.org \
    --cc=schwidefsky@de.ibm.com \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox