linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: "Chen, Gong" <gong.chen@linux.intel.com>
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: Tue, 29 Jul 2014 10:44:33 +0200	[thread overview]
Message-ID: <20140729084433.GB11179@pd.tnic> (raw)
In-Reply-To: <20140728060455.GB23092@gchen.bj.intel.com>

On Mon, Jul 28, 2014 at 02:04:55AM -0400, Chen, Gong wrote:
> 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;

You need to start restraining yourself and doing clean patches. Those
changes here are unrelated, please drop them.

Go and reread Documentation/SubmittingPatches, section 3 in particular.

>  		}
>  		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) &&

What.. why?

-- 
Regards/Gruss,
    Boris.

Sent from a fat crate under my desk. Formatting is fine.
--

  reply	other threads:[~2014-07-29  8:44 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
2014-07-29  8:44       ` Borislav Petkov [this message]
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=20140729084433.GB11179@pd.tnic \
    --to=bp@alien8.de \
    --cc=JBottomley@parallels.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=benh@kernel.crashing.org \
    --cc=christoffer.dall@linaro.org \
    --cc=cl@linux.com \
    --cc=davem@davemloft.net \
    --cc=david@fromorbit.com \
    --cc=fweisbec@gmail.com \
    --cc=gong.chen@linux.intel.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;
as well as URLs for NNTP newsgroup(s).