All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty@rustcorp.com.au>
To: Josh Triplett <josh@joshtriplett.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Michal Marek <mmarek@suse.cz>,
	Thomas Gleixner <tglx@linutronix.de>,
	David Howells <dhowells@redhat.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] lglock: Map to spinlock when !CONFIG_SMP
Date: Mon, 28 Oct 2013 13:29:21 +1030	[thread overview]
Message-ID: <87iowigkxi.fsf@rustcorp.com.au> (raw)
In-Reply-To: <20131025151930.GA9742@leaf>

Josh Triplett <josh@joshtriplett.org> writes:
> When the system has only one CPU, lglock is effectively a spinlock; map
> it directly to spinlock to eliminate the indirection and duplicate code.
>
> In addition to removing overhead, this drops 1.6k of code with a defconfig
> modified to have !CONFIG_SMP, and 1.1k with a minimal config.
>
> Signed-off-by: Josh Triplett <josh@joshtriplett.org>

Nice.  Looks like a patch for Andrew Morton though.

Cheers,
Rusty.

> ---
>  include/linux/lglock.h | 16 ++++++++++++++++
>  kernel/Makefile        |  4 ++--
>  2 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/lglock.h b/include/linux/lglock.h
> index 0d24e93..6561b1c 100644
> --- a/include/linux/lglock.h
> +++ b/include/linux/lglock.h
> @@ -35,6 +35,8 @@
>  #define DEFINE_BRLOCK(name)		DEFINE_LGLOCK(name)
>  #define DEFINE_STATIC_BRLOCK(name)	DEFINE_STATIC_LGLOCK(name)
>  
> +#ifdef CONFIG_SMP
> +
>  #ifdef CONFIG_DEBUG_LOCK_ALLOC
>  #define LOCKDEP_INIT_MAP lockdep_init_map
>  #else
> @@ -67,4 +69,18 @@ void lg_local_unlock_cpu(struct lglock *lg, int cpu);
>  void lg_global_lock(struct lglock *lg);
>  void lg_global_unlock(struct lglock *lg);
>  
> +#else
> +/* When !CONFIG_SMP, map lglock to spinlock */
> +#define lglock spinlock
> +#define DEFINE_LGLOCK(name) DEFINE_SPINLOCK(name)
> +#define DEFINE_STATIC_LGLOCK(name) static DEFINE_SPINLOCK(name)
> +#define lg_lock_init(lg, name) spin_lock_init(lg)
> +#define lg_local_lock spin_lock
> +#define lg_local_unlock spin_unlock
> +#define lg_local_lock_cpu(lg, cpu) spin_lock(lg)
> +#define lg_local_unlock_cpu(lg, cpu) spin_unlock(lg)
> +#define lg_global_lock spin_lock
> +#define lg_global_unlock spin_unlock
> +#endif
> +
>  #endif
> diff --git a/kernel/Makefile b/kernel/Makefile
> index 1ce4755..84a89f7 100644
> --- a/kernel/Makefile
> +++ b/kernel/Makefile
> @@ -10,7 +10,7 @@ obj-y     = fork.o exec_domain.o panic.o \
>  	    kthread.o wait.o sys_ni.o posix-cpu-timers.o mutex.o \
>  	    hrtimer.o rwsem.o nsproxy.o srcu.o semaphore.o \
>  	    notifier.o ksysfs.o cred.o reboot.o \
> -	    async.o range.o groups.o lglock.o smpboot.o
> +	    async.o range.o groups.o smpboot.o
>  
>  ifdef CONFIG_FUNCTION_TRACER
>  # Do not trace debug files and internal ftrace files
> @@ -50,7 +50,7 @@ obj-$(CONFIG_SMP) += smp.o
>  ifneq ($(CONFIG_SMP),y)
>  obj-y += up.o
>  endif
> -obj-$(CONFIG_SMP) += spinlock.o
> +obj-$(CONFIG_SMP) += lglock.o spinlock.o
>  obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock.o
>  obj-$(CONFIG_PROVE_LOCKING) += spinlock.o
>  obj-$(CONFIG_UID16) += uid16.o
> -- 
> 1.8.4.rc3

      reply	other threads:[~2013-10-28  3:35 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-25 15:19 [PATCH] lglock: Map to spinlock when !CONFIG_SMP Josh Triplett
2013-10-28  2:59 ` Rusty Russell [this message]

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=87iowigkxi.fsf@rustcorp.com.au \
    --to=rusty@rustcorp.com.au \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=hpa@zytor.com \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mmarek@suse.cz \
    --cc=tglx@linutronix.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.