From: Kevin Hilman <khilman@deeprootsystems.com>
To: Ohad Ben-Cohen <ohad@wizery.com>
Cc: linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, akpm@linux-foundation.org,
Greg KH <greg@kroah.com>, Tony Lindgren <tony@atomide.com>,
Benoit Cousson <b-cousson@ti.com>,
Grant Likely <grant.likely@secretlab.ca>,
Hari Kanigeri <h-kanigeri2@ti.com>, Suman Anna <s-anna@ti.com>,
Simon Que <sque@ti.com>,
"Krishnamoorthy, Balaji T" <balajitk@ti.com>
Subject: Re: [PATCH 1/3] drivers: misc: add omap_hwspinlock driver
Date: Tue, 19 Oct 2010 09:58:42 -0700 [thread overview]
Message-ID: <8762wyyv99.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1287387875-14168-2-git-send-email-ohad@wizery.com> (Ohad Ben-Cohen's message of "Mon, 18 Oct 2010 09:44:33 +0200")
Ohad Ben-Cohen <ohad@wizery.com> writes:
> From: Simon Que <sque@ti.com>
>
> Add driver for OMAP's Hardware Spinlock module.
>
> The OMAP Hardware Spinlock module, initially introduced in OMAP4,
> provides hardware assistance for synchronization between the
> multiple processors in the device (Cortex-A9, Cortex-M3 and
> C64x+ DSP).
[...]
> +/**
> + * omap_hwspin_trylock() - attempt to lock a specific hwspinlock
> + * @hwlock: a hwspinlock which we want to trylock
> + * @flags: a pointer to where the caller's interrupt state will be saved at
> + *
> + * This function attempt to lock the underlying hwspinlock. Unlike
> + * hwspinlock_lock, this function will immediately fail if the hwspinlock
> + * is already taken.
> + *
> + * Upon a successful return from this function, preemption and interrupts
> + * are disabled, so the caller must not sleep, and is advised to release
> + * the hwspinlock as soon as possible. This is required in order to minimize
> + * remote cores polling on the hardware interconnect.
> + *
> + * This function can be called from any context.
> + *
> + * Returns 0 if we successfully locked the hwspinlock, -EBUSY if
> + * the hwspinlock was already taken, and -EINVAL if @hwlock is invalid.
> + */
> +int omap_hwspin_trylock(struct omap_hwspinlock *hwlock, unsigned long *flags)
> +{
> + u32 ret;
> +
> + if (IS_ERR_OR_NULL(hwlock)) {
> + pr_err("invalid hwlock\n");
> + return -EINVAL;
> + }
> +
> + /*
> + * This spin_trylock_irqsave serves two purposes:
> +
> + * 1. Disable local interrupts and preemption, in order to
> + * minimize the period of time in which the hwspinlock
> + * is taken (so caller will not preempted). This is
> + * important in order to minimize the possible polling on
> + * the hardware interconnect by a remote user of this lock.
> + *
> + * 2. Make this hwspinlock primitive SMP-safe (so we can try to
> + * take it from additional contexts on the local cpu)
> + */
3. Ensures that in_atomic/might_sleep checks catch potential problems
with hwspinlock usage (e.g. scheduler checks like 'scheduling while
atomic' etc.)
> + if (!spin_trylock_irqsave(&hwlock->lock, *flags))
> + return -EBUSY;
> +
> + /* attempt to acquire the lock by reading its value */
> + ret = readl(hwlock->addr);
> +
> + /* lock is already taken */
> + if (ret == SPINLOCK_TAKEN) {
> + spin_unlock_irqrestore(&hwlock->lock, *flags);
> + return -EBUSY;
> + }
> +
> + /*
> + * We can be sure the other core's memory operations
> + * are observable to us only _after_ we successfully take
> + * the hwspinlock, so we must make sure that subsequent memory
> + * operations will not be reordered before we actually took the
> + * hwspinlock.
> + * Note: the implicit memory barrier of the spinlock above is too
> + * early, so we need this additional explicit memory barrier.
> + */
> + mb();
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(omap_hwspin_trylock);
[...]
> +/**
> + * omap_hwspinlock_unlock() - unlock a specific hwspinlock
minor nit: s/lock_unlock/_unlock/ to match name below
> + * @hwlock: a previously-acquired hwspinlock which we want to unlock
> + * @flags: a pointer to the caller's saved interrupts state
> + *
> + * This function will unlock a specific hwspinlock, enable preemption and
> + * restore the interrupts state. @hwlock must be taken (by us!) before
> + * calling this function: it is a bug to call unlock on a @hwlock that was
> + * not taken by us, i.e. using one of omap_hwspin_{lock trylock, lock_timeout}.
> + *
> + * This function can be called from any context.
> + *
> + * Returns 0 when the @hwlock on success, or -EINVAL if @hwlock is invalid.
> + */
> +int omap_hwspin_unlock(struct omap_hwspinlock *hwlock, unsigned long *flags)
> +{
> + if (IS_ERR_OR_NULL(hwlock)) {
> + pr_err("invalid hwlock\n");
> + return -EINVAL;
> + }
> +
> + /*
> + * We must make sure that memory operations, done before unlocking
> + * the hwspinlock, will not be reordered after the lock is released.
> + * The memory barrier induced by the spin_unlock below is too late:
> + * the other core is going to access memory soon after it will take
> + * the hwspinlock, and by then we want to be sure our memory operations
> + * were already observable.
> + */
> + mb();
> +
> + /* release the lock by writing 0 to it (NOTTAKEN) */
> + writel(SPINLOCK_NOTTAKEN, hwlock->addr);
> +
> + /* undo the spin_trylock_irqsave called in the locking function */
> + spin_unlock_irqrestore(&hwlock->lock, *flags);
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(omap_hwspin_unlock);
[...]
Kevin
WARNING: multiple messages have this Message-ID (diff)
From: khilman@deeprootsystems.com (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/3] drivers: misc: add omap_hwspinlock driver
Date: Tue, 19 Oct 2010 09:58:42 -0700 [thread overview]
Message-ID: <8762wyyv99.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1287387875-14168-2-git-send-email-ohad@wizery.com> (Ohad Ben-Cohen's message of "Mon, 18 Oct 2010 09:44:33 +0200")
Ohad Ben-Cohen <ohad@wizery.com> writes:
> From: Simon Que <sque@ti.com>
>
> Add driver for OMAP's Hardware Spinlock module.
>
> The OMAP Hardware Spinlock module, initially introduced in OMAP4,
> provides hardware assistance for synchronization between the
> multiple processors in the device (Cortex-A9, Cortex-M3 and
> C64x+ DSP).
[...]
> +/**
> + * omap_hwspin_trylock() - attempt to lock a specific hwspinlock
> + * @hwlock: a hwspinlock which we want to trylock
> + * @flags: a pointer to where the caller's interrupt state will be saved at
> + *
> + * This function attempt to lock the underlying hwspinlock. Unlike
> + * hwspinlock_lock, this function will immediately fail if the hwspinlock
> + * is already taken.
> + *
> + * Upon a successful return from this function, preemption and interrupts
> + * are disabled, so the caller must not sleep, and is advised to release
> + * the hwspinlock as soon as possible. This is required in order to minimize
> + * remote cores polling on the hardware interconnect.
> + *
> + * This function can be called from any context.
> + *
> + * Returns 0 if we successfully locked the hwspinlock, -EBUSY if
> + * the hwspinlock was already taken, and -EINVAL if @hwlock is invalid.
> + */
> +int omap_hwspin_trylock(struct omap_hwspinlock *hwlock, unsigned long *flags)
> +{
> + u32 ret;
> +
> + if (IS_ERR_OR_NULL(hwlock)) {
> + pr_err("invalid hwlock\n");
> + return -EINVAL;
> + }
> +
> + /*
> + * This spin_trylock_irqsave serves two purposes:
> +
> + * 1. Disable local interrupts and preemption, in order to
> + * minimize the period of time in which the hwspinlock
> + * is taken (so caller will not preempted). This is
> + * important in order to minimize the possible polling on
> + * the hardware interconnect by a remote user of this lock.
> + *
> + * 2. Make this hwspinlock primitive SMP-safe (so we can try to
> + * take it from additional contexts on the local cpu)
> + */
3. Ensures that in_atomic/might_sleep checks catch potential problems
with hwspinlock usage (e.g. scheduler checks like 'scheduling while
atomic' etc.)
> + if (!spin_trylock_irqsave(&hwlock->lock, *flags))
> + return -EBUSY;
> +
> + /* attempt to acquire the lock by reading its value */
> + ret = readl(hwlock->addr);
> +
> + /* lock is already taken */
> + if (ret == SPINLOCK_TAKEN) {
> + spin_unlock_irqrestore(&hwlock->lock, *flags);
> + return -EBUSY;
> + }
> +
> + /*
> + * We can be sure the other core's memory operations
> + * are observable to us only _after_ we successfully take
> + * the hwspinlock, so we must make sure that subsequent memory
> + * operations will not be reordered before we actually took the
> + * hwspinlock.
> + * Note: the implicit memory barrier of the spinlock above is too
> + * early, so we need this additional explicit memory barrier.
> + */
> + mb();
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(omap_hwspin_trylock);
[...]
> +/**
> + * omap_hwspinlock_unlock() - unlock a specific hwspinlock
minor nit: s/lock_unlock/_unlock/ to match name below
> + * @hwlock: a previously-acquired hwspinlock which we want to unlock
> + * @flags: a pointer to the caller's saved interrupts state
> + *
> + * This function will unlock a specific hwspinlock, enable preemption and
> + * restore the interrupts state. @hwlock must be taken (by us!) before
> + * calling this function: it is a bug to call unlock on a @hwlock that was
> + * not taken by us, i.e. using one of omap_hwspin_{lock trylock, lock_timeout}.
> + *
> + * This function can be called from any context.
> + *
> + * Returns 0 when the @hwlock on success, or -EINVAL if @hwlock is invalid.
> + */
> +int omap_hwspin_unlock(struct omap_hwspinlock *hwlock, unsigned long *flags)
> +{
> + if (IS_ERR_OR_NULL(hwlock)) {
> + pr_err("invalid hwlock\n");
> + return -EINVAL;
> + }
> +
> + /*
> + * We must make sure that memory operations, done before unlocking
> + * the hwspinlock, will not be reordered after the lock is released.
> + * The memory barrier induced by the spin_unlock below is too late:
> + * the other core is going to access memory soon after it will take
> + * the hwspinlock, and by then we want to be sure our memory operations
> + * were already observable.
> + */
> + mb();
> +
> + /* release the lock by writing 0 to it (NOTTAKEN) */
> + writel(SPINLOCK_NOTTAKEN, hwlock->addr);
> +
> + /* undo the spin_trylock_irqsave called in the locking function */
> + spin_unlock_irqrestore(&hwlock->lock, *flags);
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(omap_hwspin_unlock);
[...]
Kevin
WARNING: multiple messages have this Message-ID (diff)
From: Kevin Hilman <khilman@deeprootsystems.com>
To: Ohad Ben-Cohen <ohad@wizery.com>
Cc: <linux-omap@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<akpm@linux-foundation.org>, Greg KH <greg@kroah.com>,
Tony Lindgren <tony@atomide.com>,
Benoit Cousson <b-cousson@ti.com>,
Grant Likely <grant.likely@secretlab.ca>,
Hari Kanigeri <h-kanigeri2@ti.com>, Suman Anna <s-anna@ti.com>,
Simon Que <sque@ti.com>, "Krishnamoorthy\,
Balaji T" <balajitk@ti.com>
Subject: Re: [PATCH 1/3] drivers: misc: add omap_hwspinlock driver
Date: Tue, 19 Oct 2010 09:58:42 -0700 [thread overview]
Message-ID: <8762wyyv99.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1287387875-14168-2-git-send-email-ohad@wizery.com> (Ohad Ben-Cohen's message of "Mon, 18 Oct 2010 09:44:33 +0200")
Ohad Ben-Cohen <ohad@wizery.com> writes:
> From: Simon Que <sque@ti.com>
>
> Add driver for OMAP's Hardware Spinlock module.
>
> The OMAP Hardware Spinlock module, initially introduced in OMAP4,
> provides hardware assistance for synchronization between the
> multiple processors in the device (Cortex-A9, Cortex-M3 and
> C64x+ DSP).
[...]
> +/**
> + * omap_hwspin_trylock() - attempt to lock a specific hwspinlock
> + * @hwlock: a hwspinlock which we want to trylock
> + * @flags: a pointer to where the caller's interrupt state will be saved at
> + *
> + * This function attempt to lock the underlying hwspinlock. Unlike
> + * hwspinlock_lock, this function will immediately fail if the hwspinlock
> + * is already taken.
> + *
> + * Upon a successful return from this function, preemption and interrupts
> + * are disabled, so the caller must not sleep, and is advised to release
> + * the hwspinlock as soon as possible. This is required in order to minimize
> + * remote cores polling on the hardware interconnect.
> + *
> + * This function can be called from any context.
> + *
> + * Returns 0 if we successfully locked the hwspinlock, -EBUSY if
> + * the hwspinlock was already taken, and -EINVAL if @hwlock is invalid.
> + */
> +int omap_hwspin_trylock(struct omap_hwspinlock *hwlock, unsigned long *flags)
> +{
> + u32 ret;
> +
> + if (IS_ERR_OR_NULL(hwlock)) {
> + pr_err("invalid hwlock\n");
> + return -EINVAL;
> + }
> +
> + /*
> + * This spin_trylock_irqsave serves two purposes:
> +
> + * 1. Disable local interrupts and preemption, in order to
> + * minimize the period of time in which the hwspinlock
> + * is taken (so caller will not preempted). This is
> + * important in order to minimize the possible polling on
> + * the hardware interconnect by a remote user of this lock.
> + *
> + * 2. Make this hwspinlock primitive SMP-safe (so we can try to
> + * take it from additional contexts on the local cpu)
> + */
3. Ensures that in_atomic/might_sleep checks catch potential problems
with hwspinlock usage (e.g. scheduler checks like 'scheduling while
atomic' etc.)
> + if (!spin_trylock_irqsave(&hwlock->lock, *flags))
> + return -EBUSY;
> +
> + /* attempt to acquire the lock by reading its value */
> + ret = readl(hwlock->addr);
> +
> + /* lock is already taken */
> + if (ret == SPINLOCK_TAKEN) {
> + spin_unlock_irqrestore(&hwlock->lock, *flags);
> + return -EBUSY;
> + }
> +
> + /*
> + * We can be sure the other core's memory operations
> + * are observable to us only _after_ we successfully take
> + * the hwspinlock, so we must make sure that subsequent memory
> + * operations will not be reordered before we actually took the
> + * hwspinlock.
> + * Note: the implicit memory barrier of the spinlock above is too
> + * early, so we need this additional explicit memory barrier.
> + */
> + mb();
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(omap_hwspin_trylock);
[...]
> +/**
> + * omap_hwspinlock_unlock() - unlock a specific hwspinlock
minor nit: s/lock_unlock/_unlock/ to match name below
> + * @hwlock: a previously-acquired hwspinlock which we want to unlock
> + * @flags: a pointer to the caller's saved interrupts state
> + *
> + * This function will unlock a specific hwspinlock, enable preemption and
> + * restore the interrupts state. @hwlock must be taken (by us!) before
> + * calling this function: it is a bug to call unlock on a @hwlock that was
> + * not taken by us, i.e. using one of omap_hwspin_{lock trylock, lock_timeout}.
> + *
> + * This function can be called from any context.
> + *
> + * Returns 0 when the @hwlock on success, or -EINVAL if @hwlock is invalid.
> + */
> +int omap_hwspin_unlock(struct omap_hwspinlock *hwlock, unsigned long *flags)
> +{
> + if (IS_ERR_OR_NULL(hwlock)) {
> + pr_err("invalid hwlock\n");
> + return -EINVAL;
> + }
> +
> + /*
> + * We must make sure that memory operations, done before unlocking
> + * the hwspinlock, will not be reordered after the lock is released.
> + * The memory barrier induced by the spin_unlock below is too late:
> + * the other core is going to access memory soon after it will take
> + * the hwspinlock, and by then we want to be sure our memory operations
> + * were already observable.
> + */
> + mb();
> +
> + /* release the lock by writing 0 to it (NOTTAKEN) */
> + writel(SPINLOCK_NOTTAKEN, hwlock->addr);
> +
> + /* undo the spin_trylock_irqsave called in the locking function */
> + spin_unlock_irqrestore(&hwlock->lock, *flags);
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(omap_hwspin_unlock);
[...]
Kevin
next prev parent reply other threads:[~2010-10-19 16:58 UTC|newest]
Thread overview: 157+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-18 7:44 [PATCH 0/3] Add OMAP hardware spinlock misc driver Ohad Ben-Cohen
2010-10-18 7:44 ` Ohad Ben-Cohen
2010-10-18 7:44 ` Ohad Ben-Cohen
2010-10-18 7:44 ` [PATCH 1/3] drivers: misc: add omap_hwspinlock driver Ohad Ben-Cohen
2010-10-18 7:44 ` Ohad Ben-Cohen
2010-10-18 7:44 ` Ohad Ben-Cohen
2010-10-19 15:46 ` Greg KH
2010-10-19 15:46 ` Greg KH
2010-10-19 20:18 ` Ohad Ben-Cohen
2010-10-19 20:18 ` Ohad Ben-Cohen
2010-10-19 16:58 ` Kevin Hilman [this message]
2010-10-19 16:58 ` Kevin Hilman
2010-10-19 16:58 ` Kevin Hilman
2010-10-19 20:21 ` Ohad Ben-Cohen
2010-10-19 20:21 ` Ohad Ben-Cohen
2010-10-19 20:21 ` Ohad Ben-Cohen
2010-10-19 17:01 ` Grant Likely
2010-10-19 17:01 ` Grant Likely
2010-10-19 17:01 ` Grant Likely
2010-10-19 20:43 ` Ohad Ben-Cohen
2010-10-19 20:43 ` Ohad Ben-Cohen
2010-10-19 20:58 ` Arnd Bergmann
2010-10-19 20:58 ` Arnd Bergmann
2010-10-19 21:57 ` Ohad Ben-Cohen
2010-10-19 21:57 ` Ohad Ben-Cohen
2010-10-19 17:16 ` Kevin Hilman
2010-10-19 17:16 ` Kevin Hilman
2010-10-19 17:16 ` Kevin Hilman
2010-10-20 13:00 ` Ohad Ben-Cohen
2010-10-20 13:00 ` Ohad Ben-Cohen
2010-10-20 18:18 ` Kevin Hilman
2010-10-20 18:18 ` Kevin Hilman
2010-10-20 18:18 ` Kevin Hilman
2010-10-19 17:21 ` Arnd Bergmann
2010-10-19 17:21 ` Arnd Bergmann
2010-10-19 20:51 ` Ohad Ben-Cohen
2010-10-19 20:51 ` Ohad Ben-Cohen
2010-10-19 21:08 ` Arnd Bergmann
2010-10-19 21:08 ` Arnd Bergmann
2010-10-20 22:43 ` Ohad Ben-Cohen
2010-10-20 22:43 ` Ohad Ben-Cohen
2010-10-21 9:04 ` Arnd Bergmann
2010-10-21 9:04 ` Arnd Bergmann
2010-10-21 10:13 ` Ohad Ben-Cohen
2010-10-21 10:13 ` Ohad Ben-Cohen
2010-10-21 12:02 ` Arnd Bergmann
2010-10-21 12:02 ` Arnd Bergmann
2010-10-22 17:00 ` Tony Lindgren
2010-10-22 17:00 ` Tony Lindgren
2010-10-18 7:44 ` [PATCH 2/3] OMAP4: hwmod data: Add hwspinlock Ohad Ben-Cohen
2010-10-18 7:44 ` Ohad Ben-Cohen
2010-10-18 7:44 ` Ohad Ben-Cohen
2010-10-18 7:44 ` [PATCH 3/3] omap: add hwspinlock device Ohad Ben-Cohen
2010-10-18 7:44 ` Ohad Ben-Cohen
2010-10-18 7:44 ` Ohad Ben-Cohen
2010-10-19 17:03 ` Kevin Hilman
2010-10-19 17:03 ` Kevin Hilman
2010-10-19 17:03 ` Kevin Hilman
2010-10-19 17:05 ` Grant Likely
2010-10-19 17:05 ` Grant Likely
2010-10-19 21:02 ` Ohad Ben-Cohen
2010-10-19 21:02 ` Ohad Ben-Cohen
2010-10-19 21:02 ` Ohad Ben-Cohen
2010-10-19 23:12 ` Grant Likely
2010-10-19 23:12 ` Grant Likely
2010-10-19 23:12 ` Grant Likely
2010-10-20 14:09 ` Ohad Ben-Cohen
2010-10-20 14:09 ` Ohad Ben-Cohen
2010-10-20 15:51 ` Grant Likely
2010-10-20 15:51 ` Grant Likely
2010-10-20 15:51 ` Grant Likely
2010-10-19 23:53 ` Kevin Hilman
2010-10-19 23:53 ` Kevin Hilman
2010-10-19 23:53 ` Kevin Hilman
2010-10-20 1:20 ` Ryan Mallon
2010-10-20 1:20 ` Ryan Mallon
2010-10-20 14:38 ` Ohad Ben-Cohen
2010-10-20 14:38 ` Ohad Ben-Cohen
2010-10-20 15:55 ` Grant Likely
2010-10-20 15:55 ` Grant Likely
2010-10-20 18:37 ` Kevin Hilman
2010-10-20 18:37 ` Kevin Hilman
2010-10-20 19:21 ` Ohad Ben-Cohen
2010-10-20 19:21 ` Ohad Ben-Cohen
2010-10-20 19:21 ` Ohad Ben-Cohen
2010-10-20 23:58 ` Kevin Hilman
2010-10-20 23:58 ` Kevin Hilman
2010-10-20 23:58 ` Kevin Hilman
2010-10-21 6:11 ` Ohad Ben-Cohen
2010-10-21 6:11 ` Ohad Ben-Cohen
2010-10-21 6:11 ` Ohad Ben-Cohen
2010-10-21 8:36 ` Kamoolkar, Mugdha
2010-10-21 8:36 ` Kamoolkar, Mugdha
2010-10-21 8:36 ` Kamoolkar, Mugdha
2010-10-21 9:06 ` Ohad Ben-Cohen
2010-10-21 9:06 ` Ohad Ben-Cohen
2010-10-22 9:59 ` Kamoolkar, Mugdha
2010-10-22 9:59 ` Kamoolkar, Mugdha
2010-10-22 11:16 ` Ohad Ben-Cohen
2010-10-22 11:16 ` Ohad Ben-Cohen
2010-10-21 12:26 ` Kanigeri, Hari
2010-10-21 12:26 ` Kanigeri, Hari
2010-10-21 12:26 ` Kanigeri, Hari
2010-10-22 10:14 ` Kamoolkar, Mugdha
2010-10-22 10:14 ` Kamoolkar, Mugdha
2010-10-22 10:14 ` Kamoolkar, Mugdha
2010-10-22 16:56 ` Tony Lindgren
2010-10-22 16:56 ` Tony Lindgren
2010-10-22 17:03 ` Grant Likely
2010-10-22 17:03 ` Grant Likely
2010-10-22 17:28 ` Tony Lindgren
2010-10-22 17:28 ` Tony Lindgren
2010-10-24 17:54 ` Ohad Ben-Cohen
2010-10-24 17:54 ` Ohad Ben-Cohen
2010-10-25 19:02 ` Tony Lindgren
2010-10-25 19:02 ` Tony Lindgren
2010-10-26 11:54 ` Ohad Ben-Cohen
2010-10-26 11:54 ` Ohad Ben-Cohen
2010-10-26 19:06 ` Tony Lindgren
2010-10-26 19:06 ` Tony Lindgren
2010-10-18 12:46 ` [PATCH 0/3] Add OMAP hardware spinlock misc driver Peter Zijlstra
2010-10-18 12:46 ` Peter Zijlstra
2010-10-18 13:35 ` Russell King - ARM Linux
2010-10-18 13:35 ` Russell King - ARM Linux
2010-10-18 13:43 ` Peter Zijlstra
2010-10-18 13:43 ` Peter Zijlstra
2010-10-18 14:28 ` Ohad Ben-Cohen
2010-10-18 14:28 ` Ohad Ben-Cohen
2010-10-18 14:33 ` Peter Zijlstra
2010-10-18 14:33 ` Peter Zijlstra
2010-10-18 14:33 ` Peter Zijlstra
2010-10-18 14:39 ` Ohad Ben-Cohen
2010-10-18 14:39 ` Ohad Ben-Cohen
2010-10-18 15:27 ` Catalin Marinas
2010-10-18 15:27 ` Catalin Marinas
2010-10-18 15:32 ` Peter Zijlstra
2010-10-18 15:32 ` Peter Zijlstra
2010-10-18 15:35 ` Ohad Ben-Cohen
2010-10-18 15:35 ` Ohad Ben-Cohen
2010-10-18 15:48 ` Peter Zijlstra
2010-10-18 15:48 ` Peter Zijlstra
2010-10-18 15:51 ` Catalin Marinas
2010-10-18 15:51 ` Catalin Marinas
2010-10-18 15:58 ` Peter Zijlstra
2010-10-18 15:58 ` Peter Zijlstra
2010-10-19 23:31 ` Daniel Walker
2010-10-19 23:31 ` Daniel Walker
2010-10-20 6:13 ` Ohad Ben-Cohen
2010-10-20 6:13 ` Ohad Ben-Cohen
2010-10-20 10:00 ` Ohad Ben-Cohen
2010-10-20 10:00 ` Ohad Ben-Cohen
2010-10-20 22:29 ` Bryan Huntsman
2010-10-20 22:29 ` Bryan Huntsman
2010-10-20 9:53 ` Russell King - ARM Linux
2010-10-20 9:53 ` Russell King - ARM Linux
2010-10-20 22:15 ` Daniel Walker
2010-10-20 22:15 ` Daniel Walker
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=8762wyyv99.fsf@deeprootsystems.com \
--to=khilman@deeprootsystems.com \
--cc=akpm@linux-foundation.org \
--cc=b-cousson@ti.com \
--cc=balajitk@ti.com \
--cc=grant.likely@secretlab.ca \
--cc=greg@kroah.com \
--cc=h-kanigeri2@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=ohad@wizery.com \
--cc=s-anna@ti.com \
--cc=sque@ti.com \
--cc=tony@atomide.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: 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.