diff mbox

powerpc: Export __spin_yield

Message ID 54EE5989.7010800@linux.vnet.ibm.com (mailing list archive)
State Accepted
Commit 1f8c82ab1b0bc7e24601c0fca411fd27b9c883ef
Headers show

Commit Message

Suresh E. Warrier Feb. 25, 2015, 11:23 p.m. UTC
Export __spin_yield so that the arch_spin_unlock() function can
be invoked from a module. This will be required for modules where
we want to take a lock that is also is acquired in hypervisor
real mode. Because we want to avoid running any lockdep code
(which may not be safe in real mode), this lock needs to be 
an arch_spinlock_t instead of a normal spinlock.

Signed-off-by: Suresh Warrier <warrier@linux.vnet.ibm.com>
---
Replaced export to EXPORT_SYMBOL_GPL
Updated commit log to explain what kind of modules will need
to use the arch_spin_unlock() function

 arch/powerpc/lib/locks.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Paul Mackerras March 19, 2015, 11:08 p.m. UTC | #1
On Wed, Feb 25, 2015 at 05:23:53PM -0600, Suresh E. Warrier wrote:
> Export __spin_yield so that the arch_spin_unlock() function can
> be invoked from a module. This will be required for modules where
> we want to take a lock that is also is acquired in hypervisor
> real mode. Because we want to avoid running any lockdep code
> (which may not be safe in real mode), this lock needs to be 
> an arch_spinlock_t instead of a normal spinlock.
> 
> Signed-off-by: Suresh Warrier <warrier@linux.vnet.ibm.com>

Acked-by: Paul Mackerras <paulus@samba.org>
Geert Uytterhoeven March 30, 2015, 10:17 a.m. UTC | #2
Hi Ben,

On Fri, Mar 20, 2015 at 12:08 AM, Paul Mackerras <paulus@samba.org> wrote:
> On Wed, Feb 25, 2015 at 05:23:53PM -0600, Suresh E. Warrier wrote:
>> Export __spin_yield so that the arch_spin_unlock() function can
>> be invoked from a module. This will be required for modules where
>> we want to take a lock that is also is acquired in hypervisor
>> real mode. Because we want to avoid running any lockdep code
>> (which may not be safe in real mode), this lock needs to be
>> an arch_spinlock_t instead of a normal spinlock.
>>
>> Signed-off-by: Suresh Warrier <warrier@linux.vnet.ibm.com>
>
> Acked-by: Paul Mackerras <paulus@samba.org>

Something went wrong when applying this, as it ended up as:

commit 1f8c82ab1b0bc7e24601c0fca411fd27b9c883ef
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Mar 4 12:56:20 2015 +0100

    cpufreq/ppc: Add missing #include <asm/smp.h>

    If CONFIG_SMP=n, <linux/smp.h> does not include <asm/smp.h>, causing:

    drivers/cpufreq/ppc-corenet-cpufreq.c: In function 'corenet_cpufreq_cpu_init
    drivers/cpufreq/ppc-corenet-cpufreq.c:173:3: error: implicit declaration of
    X-Patchwork-Id: 443703
    Message-Id: <54EE5989.7010800@linux.vnet.ibm.com>
    To: linuxppc-dev@ozlabs.org
    Date: Wed, 25 Feb 2015 17:23:53 -0600

    Export __spin_yield so that the arch_spin_unlock() function can
    be invoked from a module. This will be required for modules where
    we want to take a lock that is also is acquired in hypervisor
    real mode. Because we want to avoid running any lockdep code
    (which may not be safe in real mode), this lock needs to be
    an arch_spinlock_t instead of a normal spinlock.

    Signed-off-by: Suresh Warrier <warrier@linux.vnet.ibm.com>
    Acked-by: Paul Mackerras <paulus@samba.org>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Benjamin Herrenschmidt March 30, 2015, 10:57 a.m. UTC | #3
On Mon, 2015-03-30 at 12:17 +0200, Geert Uytterhoeven wrote:
> Hi Ben,
> 
> On Fri, Mar 20, 2015 at 12:08 AM, Paul Mackerras <paulus@samba.org> wrote:
> > On Wed, Feb 25, 2015 at 05:23:53PM -0600, Suresh E. Warrier wrote:
> >> Export __spin_yield so that the arch_spin_unlock() function can
> >> be invoked from a module. This will be required for modules where
> >> we want to take a lock that is also is acquired in hypervisor
> >> real mode. Because we want to avoid running any lockdep code
> >> (which may not be safe in real mode), this lock needs to be
> >> an arch_spinlock_t instead of a normal spinlock.
> >>
> >> Signed-off-by: Suresh Warrier <warrier@linux.vnet.ibm.com>
> >
> > Acked-by: Paul Mackerras <paulus@samba.org>
> 
> Something went wrong when applying this, as it ended up as:

Ugh, weird. I must have fucked up something when rebasing. I don't
want to rebase that branch now that it's out, I know of at least one
series based on it. We'll live with it.

> commit 1f8c82ab1b0bc7e24601c0fca411fd27b9c883ef
> Author: Geert Uytterhoeven <geert+renesas@glider.be>
> Date:   Wed Mar 4 12:56:20 2015 +0100
> 
>     cpufreq/ppc: Add missing #include <asm/smp.h>
> 
>     If CONFIG_SMP=n, <linux/smp.h> does not include <asm/smp.h>, causing:
> 
>     drivers/cpufreq/ppc-corenet-cpufreq.c: In function 'corenet_cpufreq_cpu_init
>     drivers/cpufreq/ppc-corenet-cpufreq.c:173:3: error: implicit declaration of
>     X-Patchwork-Id: 443703
>     Message-Id: <54EE5989.7010800@linux.vnet.ibm.com>
>     To: linuxppc-dev@ozlabs.org
>     Date: Wed, 25 Feb 2015 17:23:53 -0600
> 
>     Export __spin_yield so that the arch_spin_unlock() function can
>     be invoked from a module. This will be required for modules where
>     we want to take a lock that is also is acquired in hypervisor
>     real mode. Because we want to avoid running any lockdep code
>     (which may not be safe in real mode), this lock needs to be
>     an arch_spinlock_t instead of a normal spinlock.
> 
>     Signed-off-by: Suresh Warrier <warrier@linux.vnet.ibm.com>
>     Acked-by: Paul Mackerras <paulus@samba.org>
>     Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds
diff mbox

Patch

diff --git a/arch/powerpc/lib/locks.c b/arch/powerpc/lib/locks.c
index bb7cfec..f31bcee 100644
--- a/arch/powerpc/lib/locks.c
+++ b/arch/powerpc/lib/locks.c
@@ -41,6 +41,7 @@  void __spin_yield(arch_spinlock_t *lock)
 	plpar_hcall_norets(H_CONFER,
 		get_hard_smp_processor_id(holder_cpu), yield_count);
 }
+EXPORT_SYMBOL_GPL(__spin_yield);
 
 /*
  * Waiting for a read lock or a write lock on a rwlock...