From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [PATCH] kvm-userspace: Fix external modules for pre-2.6.27 UP kernels Date: Wed, 04 Feb 2009 19:15:02 +0100 Message-ID: <4989DB26.5090001@siemens.com> References: <4979DC40.9090506@siemens.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Cc: Avi Kivity , kvm-devel To: unlisted-recipients:; (no To-header on input) Return-path: Received: from lizzard.sbs.de ([194.138.37.39]:20692 "EHLO lizzard.sbs.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757944AbZBDSPk (ORCPT ); Wed, 4 Feb 2009 13:15:40 -0500 In-Reply-To: <4979DC40.9090506@siemens.com> Sender: kvm-owner@vger.kernel.org List-ID: Jan Kiszka wrote: > When disabling SMP on kernels older than 2.6.27, the compat wrapping > fails due to unresolved SMP dependencies. This patch fixes the build. > > Signed-off-by: Jan Kiszka > --- > > kernel/external-module-compat-comm.h | 2 +- > kernel/external-module-compat.c | 15 +++++++++++++++ > 2 files changed, 16 insertions(+), 1 deletions(-) > > diff --git a/kernel/external-module-compat-comm.h b/kernel/external-module-compat-comm.h > index 981dc96..06af36d 100644 > --- a/kernel/external-module-compat-comm.h > +++ b/kernel/external-module-compat-comm.h > @@ -54,7 +54,7 @@ > > int kvm_smp_call_function_single(int cpu, void (*func)(void *info), > void *info, int wait); > - > +#undef smp_call_function_single > #define smp_call_function_single kvm_smp_call_function_single > > #endif > diff --git a/kernel/external-module-compat.c b/kernel/external-module-compat.c > index c0a0355..823ce82 100644 > --- a/kernel/external-module-compat.c > +++ b/kernel/external-module-compat.c > @@ -86,11 +86,24 @@ int kvm_smp_call_function_single(int cpu, void (*func)(void *info), > > #include > > +#ifdef CONFIG_SMP > int kvm_smp_call_function_single(int cpu, void (*func)(void *info), > void *info, int wait) > { > return smp_call_function_single(cpu, func, info, 0, wait); > } > +#else /* !CONFIG_SMP */ > +int kvm_smp_call_function_single(int cpu, void (*func)(void *info), > + void *info, int wait) > +{ > + WARN_ON(cpu != 0); > + local_irq_disable(); > + func(info); > + local_irq_enable(); > + return 0; > + > +} > +#endif /* !CONFIG_SMP */ > > #define smp_call_function_single kvm_smp_call_function_single > > @@ -162,6 +175,7 @@ static void kvm_ack_smp_call(void *_data) > int kvm_smp_call_function_mask(cpumask_t mask, > void (*func) (void *info), void *info, int wait) > { > +#ifdef CONFIG_SMP > struct kvm_call_data_struct data; > cpumask_t allbutself; > int cpus; > @@ -203,6 +217,7 @@ int kvm_smp_call_function_mask(cpumask_t mask, > } > out: > put_cpu(); > +#endif /* CONFIG_SMP */ > return 0; > } > Still applies, still required. Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux