On Sat 08-02-14 17:18:37, Frederic Weisbecker wrote: > Move this function closer to __smp_call_function_single(). These functions > have very similar behavior and should be displayed in the same block > for clarity. Whatever :). You can add: Reviewed-by: Jan Kara <j...@suse.cz>
Honza > > Cc: Andrew Morton <a...@linux-foundation.org> > Cc: Christoph Hellwig <h...@infradead.org> > Cc: Ingo Molnar <mi...@kernel.org> > Cc: Jan Kara <j...@suse.cz> > Cc: Jens Axboe <jens.ax...@oracle.com> > Signed-off-by: Frederic Weisbecker <fweis...@gmail.com> > --- > kernel/smp.c | 64 > ++++++++++++++++++++++++++++++------------------------------ > 1 file changed, 32 insertions(+), 32 deletions(-) > > diff --git a/kernel/smp.c b/kernel/smp.c > index 64bb0d4..fa04ab9 100644 > --- a/kernel/smp.c > +++ b/kernel/smp.c > @@ -237,6 +237,38 @@ int smp_call_function_single(int cpu, smp_call_func_t > func, void *info, > } > EXPORT_SYMBOL(smp_call_function_single); > > +/** > + * __smp_call_function_single(): Run a function on a specific CPU > + * @cpu: The CPU to run on. > + * @csd: Pre-allocated and setup data structure > + * @wait: If true, wait until function has completed on specified CPU. > + * > + * Like smp_call_function_single(), but allow caller to pass in a > + * pre-allocated data structure. Useful for embedding @data inside > + * other structures, for instance. > + */ > +int __smp_call_function_single(int cpu, struct call_single_data *csd, int > wait) > +{ > + int err = 0; > + int this_cpu; > + > + this_cpu = get_cpu(); > + /* > + * Can deadlock when called with interrupts disabled. > + * We allow cpu's that are not yet online though, as no one else can > + * send smp call function interrupt to this cpu and as such deadlocks > + * can't happen. > + */ > + WARN_ON_ONCE(cpu_online(this_cpu) && wait && irqs_disabled() > + && !oops_in_progress); > + > + err = generic_exec_single(cpu, csd, csd->func, csd->info, wait); > + put_cpu(); > + > + return err; > +} > +EXPORT_SYMBOL_GPL(__smp_call_function_single); > + > /* > * smp_call_function_any - Run a function on any of the given cpus > * @mask: The mask of cpus it can run on. > @@ -281,38 +313,6 @@ call: > EXPORT_SYMBOL_GPL(smp_call_function_any); > > /** > - * __smp_call_function_single(): Run a function on a specific CPU > - * @cpu: The CPU to run on. > - * @csd: Pre-allocated and setup data structure > - * @wait: If true, wait until function has completed on specified CPU. > - * > - * Like smp_call_function_single(), but allow caller to pass in a > - * pre-allocated data structure. Useful for embedding @data inside > - * other structures, for instance. > - */ > -int __smp_call_function_single(int cpu, struct call_single_data *csd, int > wait) > -{ > - int err = 0; > - int this_cpu; > - > - this_cpu = get_cpu(); > - /* > - * Can deadlock when called with interrupts disabled. > - * We allow cpu's that are not yet online though, as no one else can > - * send smp call function interrupt to this cpu and as such deadlocks > - * can't happen. > - */ > - WARN_ON_ONCE(cpu_online(this_cpu) && wait && irqs_disabled() > - && !oops_in_progress); > - > - err = generic_exec_single(cpu, csd, csd->func, csd->info, wait); > - put_cpu(); > - > - return err; > -} > -EXPORT_SYMBOL_GPL(__smp_call_function_single); > - > -/** > * smp_call_function_many(): Run a function on a set of other CPUs. > * @mask: The set of cpus to run on (only runs on online subset). > * @func: The function to run. This must be fast and non-blocking. > -- > 1.8.3.1 > -- Jan Kara <j...@suse.cz> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/