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>
Subject: Re: [PATCH 3/3] omap: add hwspinlock device
Date: Wed, 20 Oct 2010 11:37:27 -0700 [thread overview]
Message-ID: <8739s0sobc.fsf@deeprootsystems.com> (raw)
In-Reply-To: <AANLkTikE1dCXW-7ScVoDgEK3sxai_TyFzstSG+zvNm2F@mail.gmail.com> (Ohad Ben-Cohen's message of "Wed, 20 Oct 2010 16:38:32 +0200")
Ohad Ben-Cohen <ohad@wizery.com> writes:
> On Wed, Oct 20, 2010 at 1:53 AM, Kevin Hilman
> <khilman@deeprootsystems.com> wrote:
>>> And to allow early board code to reserve specific hwspinlock numbers
>>> for predefined use-cases, we probably want to be before arch_initcall.
>>
>> There's no reason for board code to have to do this at initcall time.
>
> If we want to have allow both allocations of predefined hwspinlocks
> with omap_hwspinlock_request_specific(int), and dynamic allocations
> (where we don't care about the specific instance of the hwspinlock we
> will get) with omap_hwspinlock_request(), we must ensure that the
> former _specific() API will never be called after the latter.
>
> If we will allow drivers to call omap_hwspinlock_request() before all
> callers of omap_hwspinlock_request_specific() completed, then things
> will break (because drivers might start getting hwspinlocks that are
> predefined for dedicated use cases on the system).
>
> So if we want the _specific API to work, we can only allow early board
> code to use it in order to reserve those predefined hwspinlocks before
> drivers get the chance to call omap_hwspinlock_request().
>
> The tempting alternative is not to provide the
> omap_hwspinlock_request_specific() API at all (which is something we
> discussed internally).
>
> Let's take the i2c-omap for example.
>
> It sounds like it must have a predefined hwspinlock, but what if:
>
> 1. It will use omap_hwspinlock_request() to dynamically allocate a hwspinlock
> 2. Obviously, the hwspinlock id number must be communicated to the M3
> BIOS, so the i2c-omap will publish that id using a small shared memory
> entry that will be allocated for this sole purpose
> 3. we will make sure that 1+2 completes before the remote processor is
> taken out of reset
>
> This does not require any smart IPC and it will allow us to get rid of
> the omap_hwspinlock_request_specific() API and its early-callers
> requirement.
Yes, that would indeed simplify things.
> All we will be left to take care of is the order of the ->probe()
> execution (assuming we want both the i2c and the hwspinlock drivers to
> be device_initcall)
I understand the dependency between i2c and hwspinlock for some
platforms with a shared i2c bus. Besides that being a broken hardware
design, I can see the need for the i2c driver to take a hwspinlock for
i2c xfers, but why does the i2c driver need to take the hwspinlock at
probe time? Presumably, this is before the remote cores are executing
code.
>>
>> This kind of thing needs to be done by platform_data function pointers,
>> as is done for every other driver that needs platform-specific driver
>> customization.
>
> Why would we need platform-specific function pointers here ? I'm not
> sure I'm following this one.
So that board code (built-in) does not call the hwspinlock driver
(potentially a module.)
The way to solve this is to have platform_data with function pointers,
so that when the driver's ->probe() is done, it can call cany custom
hooks registered by the board code.
Kevin
WARNING: multiple messages have this Message-ID (diff)
From: khilman@deeprootsystems.com (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/3] omap: add hwspinlock device
Date: Wed, 20 Oct 2010 11:37:27 -0700 [thread overview]
Message-ID: <8739s0sobc.fsf@deeprootsystems.com> (raw)
In-Reply-To: <AANLkTikE1dCXW-7ScVoDgEK3sxai_TyFzstSG+zvNm2F@mail.gmail.com> (Ohad Ben-Cohen's message of "Wed, 20 Oct 2010 16:38:32 +0200")
Ohad Ben-Cohen <ohad@wizery.com> writes:
> On Wed, Oct 20, 2010 at 1:53 AM, Kevin Hilman
> <khilman@deeprootsystems.com> wrote:
>>> And to allow early board code to reserve specific hwspinlock numbers
>>> for predefined use-cases, we probably want to be before arch_initcall.
>>
>> There's no reason for board code to have to do this at initcall time.
>
> If we want to have allow both allocations of predefined hwspinlocks
> with omap_hwspinlock_request_specific(int), and dynamic allocations
> (where we don't care about the specific instance of the hwspinlock we
> will get) with omap_hwspinlock_request(), we must ensure that the
> former _specific() API will never be called after the latter.
>
> If we will allow drivers to call omap_hwspinlock_request() before all
> callers of omap_hwspinlock_request_specific() completed, then things
> will break (because drivers might start getting hwspinlocks that are
> predefined for dedicated use cases on the system).
>
> So if we want the _specific API to work, we can only allow early board
> code to use it in order to reserve those predefined hwspinlocks before
> drivers get the chance to call omap_hwspinlock_request().
>
> The tempting alternative is not to provide the
> omap_hwspinlock_request_specific() API at all (which is something we
> discussed internally).
>
> Let's take the i2c-omap for example.
>
> It sounds like it must have a predefined hwspinlock, but what if:
>
> 1. It will use omap_hwspinlock_request() to dynamically allocate a hwspinlock
> 2. Obviously, the hwspinlock id number must be communicated to the M3
> BIOS, so the i2c-omap will publish that id using a small shared memory
> entry that will be allocated for this sole purpose
> 3. we will make sure that 1+2 completes before the remote processor is
> taken out of reset
>
> This does not require any smart IPC and it will allow us to get rid of
> the omap_hwspinlock_request_specific() API and its early-callers
> requirement.
Yes, that would indeed simplify things.
> All we will be left to take care of is the order of the ->probe()
> execution (assuming we want both the i2c and the hwspinlock drivers to
> be device_initcall)
I understand the dependency between i2c and hwspinlock for some
platforms with a shared i2c bus. Besides that being a broken hardware
design, I can see the need for the i2c driver to take a hwspinlock for
i2c xfers, but why does the i2c driver need to take the hwspinlock at
probe time? Presumably, this is before the remote cores are executing
code.
>>
>> This kind of thing needs to be done by platform_data function pointers,
>> as is done for every other driver that needs platform-specific driver
>> customization.
>
> Why would we need platform-specific function pointers here ? I'm not
> sure I'm following this one.
So that board code (built-in) does not call the hwspinlock driver
(potentially a module.)
The way to solve this is to have platform_data with function pointers,
so that when the driver's ->probe() is done, it can call cany custom
hooks registered by the board code.
Kevin
next prev parent reply other threads:[~2010-10-20 18:37 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
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 [this message]
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=8739s0sobc.fsf@deeprootsystems.com \
--to=khilman@deeprootsystems.com \
--cc=akpm@linux-foundation.org \
--cc=b-cousson@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.