From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com> To: tglx@linutronix.de, peterz@infradead.org, oleg@redhat.com, paulmck@linux.vnet.ibm.com, mingo@kernel.org, namhyung@kernel.org, walken@google.com, vincent.guittot@linaro.org, laijs@cn.fujitsu.com, David.Laight@aculab.com Cc: rostedt@goodmis.org, wangyun@linux.vnet.ibm.com, xiaoguangrong@linux.vnet.ibm.com, sbw@mit.edu, fweisbec@gmail.com, zhong@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, srivatsa.bhat@linux.vnet.ibm.com, linux-pm@vger.kernel.org, linux-arch@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Rusty Russell <rusty@rustcorp.com.au>, Alex Shi <alex.shi@intel.com>, KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>, Tejun Heo <tj@kernel.org>, Andrew Morton <akpm@linux-foundation.org>, Joonsoo Kim <js1304@gmail.com>"Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com> Subject: [PATCH v3 07/45] CPU hotplug: Add _nocheck() variants of accessor functions Date: Fri, 28 Jun 2013 01:23:44 +0530 [thread overview] Message-ID: <20130627195344.29830.54992.stgit@srivatsabhat.in.ibm.com> (raw) In-Reply-To: <20130627195136.29830.10445.stgit@srivatsabhat.in.ibm.com> Sometimes, we have situations where the synchronization design of a particular subsystem handles CPU hotplug properly, but the details are non-trivial, making it hard to teach this to the rudimentary hotplug locking validator. In such cases, it would be useful to have a set of _nocheck() variants of the cpu accessor functions, to avoid false-positive warnings from the hotplug locking validator. However, we won't go overboard with that; we'll add them only on a case-by-case basis and mandate that the call-sites which use them add a comment explaining why it is hotplug safe and hence justify the use of the _nocheck() variants. At the moment, the RCU and the percpu-counter code have legitimate reasons to use the _nocheck() variants, so let's add them for cpu_is_offline() and for_each_online_cpu(), for use in those subsystems respectively. Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Alex Shi <alex.shi@intel.com> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Tejun Heo <tj@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Joonsoo Kim <js1304@gmail.com> Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com> --- include/linux/cpumask.h | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index 06d2c36..f577a7d 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -87,6 +87,7 @@ extern const struct cpumask *const cpu_active_mask; #define num_present_cpus() cpumask_weight(cpu_present_mask) #define num_active_cpus() cpumask_weight(cpu_active_mask) #define cpu_online(cpu) cpumask_test_cpu((cpu), cpu_online_mask) +#define cpu_online_nocheck(cpu) cpumask_test_cpu_nocheck((cpu), cpu_online_mask) #define cpu_possible(cpu) cpumask_test_cpu((cpu), cpu_possible_mask) #define cpu_present(cpu) cpumask_test_cpu((cpu), cpu_present_mask) #define cpu_active(cpu) cpumask_test_cpu((cpu), cpu_active_mask) @@ -96,6 +97,7 @@ extern const struct cpumask *const cpu_active_mask; #define num_present_cpus() 1U #define num_active_cpus() 1U #define cpu_online(cpu) ((cpu) == 0) +#define cpu_online_nocheck(cpu) cpu_online((cpu)) #define cpu_possible(cpu) ((cpu) == 0) #define cpu_present(cpu) ((cpu) == 0) #define cpu_active(cpu) ((cpu) == 0) @@ -156,6 +158,8 @@ static inline unsigned int cpumask_any_but(const struct cpumask *mask, #define for_each_cpu(cpu, mask) \ for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask) +#define for_each_cpu_nocheck(cpu, mask) \ + for_each_cpu((cpu), (mask)) #define for_each_cpu_not(cpu, mask) \ for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask) #define for_each_cpu_and(cpu, mask, and) \ @@ -191,6 +195,24 @@ static inline unsigned int cpumask_next(int n, const struct cpumask *srcp) } /** + * cpumask_next_nocheck - get the next cpu in a cpumask, without checking + * for hotplug safety + * @n: the cpu prior to the place to search (ie. return will be > @n) + * @srcp: the cpumask pointer + * + * Returns >= nr_cpu_ids if no further cpus set. + */ +static inline unsigned int cpumask_next_nocheck(int n, + const struct cpumask *srcp) +{ + /* -1 is a legal arg here. */ + if (n != -1) + cpumask_check(n); + + return find_next_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1); +} + +/** * cpumask_next_zero - get the next unset cpu in a cpumask * @n: the cpu prior to the place to search (ie. return will be > @n) * @srcp: the cpumask pointer @@ -222,6 +244,21 @@ int cpumask_any_but(const struct cpumask *mask, unsigned int cpu); (cpu) = cpumask_next((cpu), (mask)), \ (cpu) < nr_cpu_ids;) + +/** + * for_each_cpu_nocheck - iterate over every cpu in a mask, + * without checking for hotplug safety + * @cpu: the (optionally unsigned) integer iterator + * @mask: the cpumask pointer + * + * After the loop, cpu is >= nr_cpu_ids. + */ +#define for_each_cpu_nocheck(cpu, mask) \ + for ((cpu) = -1; \ + (cpu) = cpumask_next_nocheck((cpu), (mask)), \ + (cpu) < nr_cpu_ids;) + + /** * for_each_cpu_not - iterate over every cpu in a complemented mask * @cpu: the (optionally unsigned) integer iterator @@ -304,6 +341,25 @@ static inline void cpumask_clear_cpu(int cpu, struct cpumask *dstp) }) /** + * cpumask_test_cpu_nocheck - test for a cpu in a cpumask, without + * checking for hotplug safety + * @cpu: cpu number (< nr_cpu_ids) + * @cpumask: the cpumask pointer + * + * Returns 1 if @cpu is set in @cpumask, else returns 0 + * + * No static inline type checking - see Subtlety (1) above. + */ +#define cpumask_test_cpu_nocheck(cpu, cpumask) \ +({ \ + int __ret; \ + \ + __ret = test_bit(cpumask_check(cpu), \ + cpumask_bits((cpumask))); \ + __ret; \ +}) + +/** * cpumask_test_and_set_cpu - atomically test and set a cpu in a cpumask * @cpu: cpu number (< nr_cpu_ids) * @cpumask: the cpumask pointer @@ -775,6 +831,8 @@ extern const DECLARE_BITMAP(cpu_all_bits, NR_CPUS); #define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask) #define for_each_online_cpu(cpu) for_each_cpu((cpu), cpu_online_mask) +#define for_each_online_cpu_nocheck(cpu) \ + for_each_cpu_nocheck((cpu), cpu_online_mask) #define for_each_present_cpu(cpu) for_each_cpu((cpu), cpu_present_mask) /* Wrappers for arch boot code to manipulate normally-constant masks */ @@ -823,6 +881,7 @@ static inline const struct cpumask *get_cpu_mask(unsigned int cpu) } #define cpu_is_offline(cpu) unlikely(!cpu_online(cpu)) +#define cpu_is_offline_nocheck(cpu) unlikely(!cpu_online_nocheck(cpu)) #if NR_CPUS <= BITS_PER_LONG #define CPU_BITS_ALL \
WARNING: multiple messages have this Message-ID (diff)
From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com> To: tglx@linutronix.de, peterz@infradead.org, tj@kernel.org, oleg@redhat.com, paulmck@linux.vnet.ibm.com, rusty@rustcorp.com.au, mingo@kernel.org, akpm@linux-foundation.org, namhyung@kernel.org, walken@google.com, vincent.guittot@linaro.org, laijs@cn.fujitsu.com, David.Laight@aculab.com Cc: rostedt@goodmis.org, wangyun@linux.vnet.ibm.com, xiaoguangrong@linux.vnet.ibm.com, sbw@mit.edu, fweisbec@gmail.com, zhong@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, srivatsa.bhat@linux.vnet.ibm.com, linux-pm@vger.kernel.org, linux-arch@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Alex Shi <alex.shi@intel.com>, KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>, Joonsoo Kim <js1304@gmail.com>"Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com> Subject: [PATCH v3 07/45] CPU hotplug: Add _nocheck() variants of accessor functions Date: Fri, 28 Jun 2013 01:23:44 +0530 [thread overview] Message-ID: <20130627195344.29830.54992.stgit@srivatsabhat.in.ibm.com> (raw) Message-ID: <20130627195344.2Isrp-P84Xsu64MvCCEpo4wgpsLwP0AYVTzyvR0DGg4@z> (raw) In-Reply-To: <20130627195136.29830.10445.stgit@srivatsabhat.in.ibm.com> Sometimes, we have situations where the synchronization design of a particular subsystem handles CPU hotplug properly, but the details are non-trivial, making it hard to teach this to the rudimentary hotplug locking validator. In such cases, it would be useful to have a set of _nocheck() variants of the cpu accessor functions, to avoid false-positive warnings from the hotplug locking validator. However, we won't go overboard with that; we'll add them only on a case-by-case basis and mandate that the call-sites which use them add a comment explaining why it is hotplug safe and hence justify the use of the _nocheck() variants. At the moment, the RCU and the percpu-counter code have legitimate reasons to use the _nocheck() variants, so let's add them for cpu_is_offline() and for_each_online_cpu(), for use in those subsystems respectively. Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Alex Shi <alex.shi@intel.com> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Tejun Heo <tj@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Joonsoo Kim <js1304@gmail.com> Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com> --- include/linux/cpumask.h | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index 06d2c36..f577a7d 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -87,6 +87,7 @@ extern const struct cpumask *const cpu_active_mask; #define num_present_cpus() cpumask_weight(cpu_present_mask) #define num_active_cpus() cpumask_weight(cpu_active_mask) #define cpu_online(cpu) cpumask_test_cpu((cpu), cpu_online_mask) +#define cpu_online_nocheck(cpu) cpumask_test_cpu_nocheck((cpu), cpu_online_mask) #define cpu_possible(cpu) cpumask_test_cpu((cpu), cpu_possible_mask) #define cpu_present(cpu) cpumask_test_cpu((cpu), cpu_present_mask) #define cpu_active(cpu) cpumask_test_cpu((cpu), cpu_active_mask) @@ -96,6 +97,7 @@ extern const struct cpumask *const cpu_active_mask; #define num_present_cpus() 1U #define num_active_cpus() 1U #define cpu_online(cpu) ((cpu) == 0) +#define cpu_online_nocheck(cpu) cpu_online((cpu)) #define cpu_possible(cpu) ((cpu) == 0) #define cpu_present(cpu) ((cpu) == 0) #define cpu_active(cpu) ((cpu) == 0) @@ -156,6 +158,8 @@ static inline unsigned int cpumask_any_but(const struct cpumask *mask, #define for_each_cpu(cpu, mask) \ for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask) +#define for_each_cpu_nocheck(cpu, mask) \ + for_each_cpu((cpu), (mask)) #define for_each_cpu_not(cpu, mask) \ for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask) #define for_each_cpu_and(cpu, mask, and) \ @@ -191,6 +195,24 @@ static inline unsigned int cpumask_next(int n, const struct cpumask *srcp) } /** + * cpumask_next_nocheck - get the next cpu in a cpumask, without checking + * for hotplug safety + * @n: the cpu prior to the place to search (ie. return will be > @n) + * @srcp: the cpumask pointer + * + * Returns >= nr_cpu_ids if no further cpus set. + */ +static inline unsigned int cpumask_next_nocheck(int n, + const struct cpumask *srcp) +{ + /* -1 is a legal arg here. */ + if (n != -1) + cpumask_check(n); + + return find_next_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1); +} + +/** * cpumask_next_zero - get the next unset cpu in a cpumask * @n: the cpu prior to the place to search (ie. return will be > @n) * @srcp: the cpumask pointer @@ -222,6 +244,21 @@ int cpumask_any_but(const struct cpumask *mask, unsigned int cpu); (cpu) = cpumask_next((cpu), (mask)), \ (cpu) < nr_cpu_ids;) + +/** + * for_each_cpu_nocheck - iterate over every cpu in a mask, + * without checking for hotplug safety + * @cpu: the (optionally unsigned) integer iterator + * @mask: the cpumask pointer + * + * After the loop, cpu is >= nr_cpu_ids. + */ +#define for_each_cpu_nocheck(cpu, mask) \ + for ((cpu) = -1; \ + (cpu) = cpumask_next_nocheck((cpu), (mask)), \ + (cpu) < nr_cpu_ids;) + + /** * for_each_cpu_not - iterate over every cpu in a complemented mask * @cpu: the (optionally unsigned) integer iterator @@ -304,6 +341,25 @@ static inline void cpumask_clear_cpu(int cpu, struct cpumask *dstp) }) /** + * cpumask_test_cpu_nocheck - test for a cpu in a cpumask, without + * checking for hotplug safety + * @cpu: cpu number (< nr_cpu_ids) + * @cpumask: the cpumask pointer + * + * Returns 1 if @cpu is set in @cpumask, else returns 0 + * + * No static inline type checking - see Subtlety (1) above. + */ +#define cpumask_test_cpu_nocheck(cpu, cpumask) \ +({ \ + int __ret; \ + \ + __ret = test_bit(cpumask_check(cpu), \ + cpumask_bits((cpumask))); \ + __ret; \ +}) + +/** * cpumask_test_and_set_cpu - atomically test and set a cpu in a cpumask * @cpu: cpu number (< nr_cpu_ids) * @cpumask: the cpumask pointer @@ -775,6 +831,8 @@ extern const DECLARE_BITMAP(cpu_all_bits, NR_CPUS); #define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask) #define for_each_online_cpu(cpu) for_each_cpu((cpu), cpu_online_mask) +#define for_each_online_cpu_nocheck(cpu) \ + for_each_cpu_nocheck((cpu), cpu_online_mask) #define for_each_present_cpu(cpu) for_each_cpu((cpu), cpu_present_mask) /* Wrappers for arch boot code to manipulate normally-constant masks */ @@ -823,6 +881,7 @@ static inline const struct cpumask *get_cpu_mask(unsigned int cpu) } #define cpu_is_offline(cpu) unlikely(!cpu_online(cpu)) +#define cpu_is_offline_nocheck(cpu) unlikely(!cpu_online_nocheck(cpu)) #if NR_CPUS <= BITS_PER_LONG #define CPU_BITS_ALL \
next prev parent reply other threads:[~2013-06-27 19:53 UTC|newest] Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-06-27 19:52 [PATCH v3 00/45] CPU hotplug: stop_machine()-free CPU hotplug, part 1 Srivatsa S. Bhat 2013-06-27 19:52 ` [PATCH v3 01/45] CPU hotplug: Provide APIs to prevent CPU offline from atomic context Srivatsa S. Bhat 2013-06-27 19:52 ` Srivatsa S. Bhat 2013-06-27 19:52 ` [PATCH v3 02/45] CPU hotplug: Clarify the usage of different synchronization APIs Srivatsa S. Bhat 2013-06-27 19:52 ` Srivatsa S. Bhat 2013-06-27 19:52 ` [PATCH v3 03/45] Documentation, CPU hotplug: Recommend usage of get/put_online_cpus_atomic() Srivatsa S. Bhat 2013-06-27 19:52 ` Srivatsa S. Bhat 2013-06-27 19:53 ` [PATCH v3 04/45] CPU hotplug: Add infrastructure to check lacking hotplug synchronization Srivatsa S. Bhat 2013-06-27 19:53 ` Srivatsa S. Bhat 2013-06-27 19:53 ` [PATCH v3 05/45] CPU hotplug: Protect set_cpu_online() to avoid false-positives Srivatsa S. Bhat 2013-06-27 19:53 ` Srivatsa S. Bhat 2013-06-27 19:53 ` [PATCH v3 06/45] CPU hotplug: Sprinkle debugging checks to catch locking bugs Srivatsa S. Bhat 2013-06-27 19:53 ` Srivatsa S. Bhat 2013-06-27 19:53 ` Srivatsa S. Bhat [this message] 2013-06-27 19:53 ` [PATCH v3 07/45] CPU hotplug: Add _nocheck() variants of accessor functions Srivatsa S. Bhat 2013-06-27 19:53 ` [PATCH v3 08/45] CPU hotplug: Expose the new debug config option Srivatsa S. Bhat 2013-06-27 19:53 ` Srivatsa S. Bhat 2013-06-27 19:54 ` [PATCH v3 09/45] CPU hotplug: Convert preprocessor macros to static inline functions Srivatsa S. Bhat 2013-06-27 19:54 ` Srivatsa S. Bhat 2013-06-27 19:54 ` [PATCH v3 10/45] smp: Use get/put_online_cpus_atomic() to prevent CPU offline Srivatsa S. Bhat 2013-06-27 19:54 ` Srivatsa S. Bhat 2013-07-02 5:32 ` Michael Wang 2013-07-02 5:32 ` Michael Wang 2013-07-02 8:25 ` Srivatsa S. Bhat 2013-07-02 8:25 ` Srivatsa S. Bhat 2013-07-02 8:47 ` Michael Wang 2013-07-02 9:51 ` Srivatsa S. Bhat 2013-07-02 9:51 ` Srivatsa S. Bhat 2013-07-02 10:08 ` Michael Wang 2013-07-02 10:08 ` Michael Wang 2013-06-27 19:54 ` [PATCH v3 11/45] sched/core: " Srivatsa S. Bhat 2013-06-27 19:54 ` Srivatsa S. Bhat 2013-06-27 19:54 ` [PATCH v3 12/45] migration: Use raw_spin_lock/unlock since interrupts are already disabled Srivatsa S. Bhat 2013-06-27 19:54 ` Srivatsa S. Bhat 2013-06-27 19:54 ` [PATCH v3 13/45] sched/fair: Use get/put_online_cpus_atomic() to prevent CPU offline Srivatsa S. Bhat 2013-06-27 19:54 ` Srivatsa S. Bhat 2013-06-27 19:54 ` [PATCH v3 14/45] timer: " Srivatsa S. Bhat 2013-06-27 19:54 ` Srivatsa S. Bhat 2013-06-27 19:54 ` [PATCH v3 15/45] sched/rt: " Srivatsa S. Bhat 2013-06-27 19:54 ` Srivatsa S. Bhat 2013-06-27 19:55 ` [PATCH v3 16/45] rcu: Use cpu_is_offline_nocheck() to avoid false-positive warnings Srivatsa S. Bhat 2013-06-27 19:55 ` Srivatsa S. Bhat 2013-06-27 20:12 ` Paul E. McKenney 2013-06-27 20:12 ` Paul E. McKenney 2013-06-27 19:55 ` [PATCH v3 17/45] tick-broadcast: Use get/put_online_cpus_atomic() to prevent CPU offline Srivatsa S. Bhat 2013-06-27 19:55 ` Srivatsa S. Bhat 2013-06-27 19:55 ` [PATCH v3 18/45] time/clocksource: " Srivatsa S. Bhat 2013-06-27 19:55 ` Srivatsa S. Bhat 2013-06-27 19:56 ` [PATCH v3 19/45] softirq: " Srivatsa S. Bhat 2013-06-27 19:56 ` Srivatsa S. Bhat 2013-06-27 19:56 ` [PATCH v3 20/45] irq: " Srivatsa S. Bhat 2013-06-27 19:56 ` Srivatsa S. Bhat 2013-06-27 19:56 ` [PATCH v3 21/45] net: " Srivatsa S. Bhat 2013-06-27 19:56 ` Srivatsa S. Bhat 2013-06-27 19:56 ` [PATCH v3 22/45] block: " Srivatsa S. Bhat 2013-06-27 19:56 ` Srivatsa S. Bhat 2013-06-27 19:56 ` [PATCH v3 23/45] percpu_counter: Use _nocheck version of for_each_online_cpu() Srivatsa S. Bhat 2013-06-27 19:56 ` Srivatsa S. Bhat 2013-06-27 19:56 ` [PATCH v3 24/45] infiniband: ehca: Use get/put_online_cpus_atomic() to prevent CPU offline Srivatsa S. Bhat 2013-06-27 19:56 ` Srivatsa S. Bhat 2013-06-27 19:56 ` [PATCH v3 25/45] [SCSI] fcoe: " Srivatsa S. Bhat 2013-06-27 19:56 ` Srivatsa S. Bhat 2013-06-27 19:57 ` [PATCH v3 26/45] staging/octeon: " Srivatsa S. Bhat 2013-06-27 19:57 ` Srivatsa S. Bhat 2013-06-27 19:57 ` [PATCH v3 27/45] x86: " Srivatsa S. Bhat 2013-06-27 19:57 ` Srivatsa S. Bhat 2013-06-27 19:57 ` [PATCH v3 28/45] perf/x86: " Srivatsa S. Bhat 2013-06-27 19:57 ` Srivatsa S. Bhat 2013-06-27 19:57 ` [PATCH v3 29/45] KVM: " Srivatsa S. Bhat 2013-06-27 19:57 ` Srivatsa S. Bhat 2013-06-27 19:57 ` [PATCH v3 30/45] x86/xen: " Srivatsa S. Bhat 2013-06-27 19:57 ` Srivatsa S. Bhat 2013-06-27 19:57 ` [PATCH v3 31/45] alpha/smp: " Srivatsa S. Bhat 2013-06-27 19:57 ` Srivatsa S. Bhat 2013-06-27 19:58 ` [PATCH v3 32/45] blackfin/smp: " Srivatsa S. Bhat 2013-06-27 19:58 ` Srivatsa S. Bhat 2013-06-27 19:58 ` [PATCH v3 33/45] cris/smp: " Srivatsa S. Bhat 2013-06-27 19:58 ` Srivatsa S. Bhat 2013-06-27 19:58 ` [PATCH v3 34/45] hexagon/smp: " Srivatsa S. Bhat 2013-06-27 19:58 ` Srivatsa S. Bhat 2013-06-27 19:58 ` [PATCH v3 35/45] ia64: irq, perfmon: " Srivatsa S. Bhat 2013-06-27 19:58 ` Srivatsa S. Bhat 2013-06-27 19:59 ` [PATCH v3 36/45] ia64: smp, tlb: " Srivatsa S. Bhat 2013-06-27 19:59 ` Srivatsa S. Bhat 2013-06-27 19:59 ` [PATCH v3 37/45] m32r: " Srivatsa S. Bhat 2013-06-27 19:59 ` [PATCH v3 38/45] MIPS: " Srivatsa S. Bhat 2013-06-27 19:59 ` Srivatsa S. Bhat 2013-06-27 19:59 ` [PATCH v3 39/45] mn10300: " Srivatsa S. Bhat 2013-06-27 19:59 ` Srivatsa S. Bhat 2013-06-27 19:59 ` [PATCH v3 40/45] powerpc, irq: Use GFP_ATOMIC allocations in atomic context Srivatsa S. Bhat 2013-06-27 19:59 ` Srivatsa S. Bhat 2013-06-27 20:00 ` [PATCH v3 41/45] powerpc: Use get/put_online_cpus_atomic() to prevent CPU offline Srivatsa S. Bhat 2013-06-27 20:00 ` Srivatsa S. Bhat 2013-06-27 20:00 ` [PATCH v3 42/45] powerpc: Use get/put_online_cpus_atomic() to avoid false-positive warning Srivatsa S. Bhat 2013-06-27 20:00 ` Srivatsa S. Bhat 2013-06-27 20:00 ` [PATCH v3 43/45] sh: Use get/put_online_cpus_atomic() to prevent CPU offline Srivatsa S. Bhat 2013-06-27 20:00 ` Srivatsa S. Bhat 2013-06-27 20:00 ` [PATCH v3 44/45] sparc: " Srivatsa S. Bhat 2013-06-27 20:00 ` Srivatsa S. Bhat 2013-06-27 20:00 ` [PATCH v3 45/45] tile: " Srivatsa S. Bhat 2013-06-27 20:00 ` Srivatsa S. Bhat
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=20130627195344.29830.54992.stgit@srivatsabhat.in.ibm.com \ --to=srivatsa.bhat@linux.vnet.ibm.com \ --cc=David.Laight@aculab.com \ --cc=akpm@linux-foundation.org \ --cc=alex.shi@intel.com \ --cc=fweisbec@gmail.com \ --cc=js1304@gmail.com \ --cc=kosaki.motohiro@jp.fujitsu.com \ --cc=laijs@cn.fujitsu.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=mingo@kernel.org \ --cc=namhyung@kernel.org \ --cc=netdev@vger.kernel.org \ --cc=nikunj@linux.vnet.ibm.com \ --cc=oleg@redhat.com \ --cc=paulmck@linux.vnet.ibm.com \ --cc=peterz@infradead.org \ --cc=rostedt@goodmis.org \ --cc=rusty@rustcorp.com.au \ --cc=sbw@mit.edu \ --cc=tglx@linutronix.de \ --cc=tj@kernel.org \ --cc=vincent.guittot@linaro.org \ --cc=walken@google.com \ --cc=wangyun@linux.vnet.ibm.com \ --cc=xiaoguangrong@linux.vnet.ibm.com \ --cc=zhong@linux.vnet.ibm.com \ /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: linkBe 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).