public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Vitaly Wool <vwool@ru.mvista.com>
To: David Brownell <david-b@pacbell.net>
Cc: Mark Underwood <basicmark@yahoo.com>,
	linux-kernel@vger.kernel.org, dpervushin@gmail.com,
	akpm@osdl.org, greg@kroah.com, komal_shah802003@yahoo.com,
	stephen@streetfiresound.com,
	spi-devel-general@lists.sourceforge.net, Joachim_Jaeger@digi.com
Subject: Re: [PATCH 2.6-git] SPI core refresh
Date: Fri, 02 Dec 2005 08:48:12 +0300	[thread overview]
Message-ID: <438FE01C.9070307@ru.mvista.com> (raw)
In-Reply-To: <200512011031.12167.david-b@pacbell.net>

David Brownell wrote:

>On Wednesday 30 November 2005 11:17 pm, Vitaly Wool wrote:
>  
>
>>Mark Underwood wrote:
>>
>>    
>>
>>>>However, there also are some advantages of our core compared to David's I'd like to mention
>>>>
>>>>- it can be compiled as a module
>>>>        
>>>>
>>>So can David's. You can use BIOS tables in which case you must compile the SPI core into the
>>>kernel but you can also use spi_new_device which allows the SPI core to be built as a module (and
>>>is how I am using it).
>>>      
>>>
>>You limit the functionality, so it's not the case.
>>    
>>
>
>As noted in my comparison of last week (you're still ignoring that):
>
> - Mine lets board-specific device tables be declared in the
>   relevant arch_setup() thing (board-*.c).  Both frameworks allow
>   later board specific code to dynamically declare the devices,
>   with binary (Dave's) or parsed-text (Dmitry's) descriptions. 
>
>What Mark said was that in this case he used the "late" init.  You seem
>to be saying he's not allowed to do that.  Which is nonsense; there are
>distinct mechanisms for the good reason that "late" init doesn't work
>so well without dynamic discovery ... which SPI itself doesn't support.
>Hence the need for board-specific "this hardware exists" tables.
>
>  
>
Can you please clarify what you mean here? Better even if Mark describes 
what he does. The ideal situation would be if he posted a patch.

>  
>
>>If there's more than one SPI controller onboard, spi_write_then_read 
>>will serialize the transfers ...
>>    
>>
>
>Which, as has been pointed out, would be a trivial thing to fix
>if anyone were actually to have a problem.  Sure it'd incur the
>cost of a kmalloc on at least some paths -- serializing in the
>slab layer instead! -- but that's one price of using convenience
>helpers not performance oriented calls.
>  
>
Well, most of the drivers will use that helpers I guess.
The thing however is that if you try to implement this in a "clean" way 
you will come to a sport of framework we've developed for memeory 
allocations, as I've saild previously.

>
>  
>
>>	 Moreover, if, say, two  
>>kernel threads with different priorities are working with two SPI 
>>controllers respectively *priority inversion* will happen.
>>    
>>
>
>That characteristic being inherited from semaphores (or were they
>updated with RT_PREEMPT?), and being in common with most I/O queues
>in the system.  Not something to blame on any line of code I wrote.
>  
>
I think they weren't.
The whole thing doesn't seem thought out nicely to me. The solution 
exists, of course, and that is -- do somthing similar to what we did there.

>Oh, and I noticed a priority inversion in your API which shows
>up with one SPI controller managing two devices.  Whoops!  I'd
>far rather have such inversions be implementation artifacts; it's
>easy to patch an implementation, hard to change all API users.
>  
>
Not sure if I understood you. Can you please describe the situation when 
this prio inversion happens?
What priorities are you talking about? One controller is one thread, so 
it's _one_ priority, consequently there's nothing to invert.
As for your second statement, I don't argue. The fact however is that if 
you implement the mehtod which corrects priority inverstion problems 
your core will not be either so lightweight or so flexible. :)

>
>  
>
>>>>- it's more adapted for use in real-time environments
>>>>- it's not so lightweight, but it leaves less effort for the bus driver developer.
>>>>        
>>>>
>>>But also less flexibility. A core layer shouldn't _force_ a policy
>>>      
>>>
>>Nope, it's just a default policy.
>>    
>>
>
>One that every driver pays the price for.  Allocating a task even
>when it doesn't need it; every call going through a midlayer that
>wants to take over queue management policy; and more.  (Unless you
>made a big un-remarked change in a patch you called "refresh"...)
>  
>
It's not obvious that this price is high.
Anyway, it's a point I should agree with; this functionality better be a 
config option. Feel free to submit a patch, as you like to say.

>
>  
>
>>>on a bus driver. I am currently developing an adapter driver for David's system and I wouldn't say
>>>that the core is making me do things I think the core should do. Please could you provide examples
>>>of where you think Davids SPI core requires 'effort'.
>>>      
>>>
>>Main are
>>- the need to call 'complete' in controller driver
>>    
>>
>
>So you think it's better to have consistent semantics be optional?
>
>That seems to be the notion behind your spi_transfer() call, which
>can't decide whether it's going to be synchronous or asynchronous.
>Instead, it decided to be error prone and be both.  :)
>
>
>  
>
Not sure if I understood you here, sorry.

>>- the need to implement policy in controller driver
>>    
>>
>
>The "policy" in question is something that sometimes needs to
>be board-specific -- priority to THAT device, synch with THIS
>external signal, etc -- which is why I see it as a drawback
>that you insist the core implement one policy.
>  
>
Again, the policy can be overridden.

Vitaly

  reply	other threads:[~2005-12-02  5:48 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-11-30 16:50 [PATCH 2.6-git] SPI core refresh Vitaly Wool
2005-11-30 19:17 ` Russell King
2005-11-30 19:54 ` Greg KH
2005-11-30 20:29 ` Mark Underwood
2005-12-01  7:17   ` Vitaly Wool
2005-12-01 18:31     ` David Brownell
2005-12-02  5:48       ` Vitaly Wool [this message]
2005-12-02 18:37         ` Mark Underwood
2005-11-30 21:26 ` David Brownell
2005-11-30 21:27 ` David Brownell
2005-12-12 16:57   ` Vitaly Wool
2005-12-13 22:16     ` David Brownell
2005-11-30 21:36 ` David Brownell
2005-11-30 21:59   ` Stephen Street
2005-12-01  7:31     ` Vitaly Wool
2005-12-01  7:24   ` Vitaly Wool
  -- strict thread matches above, loose matches on Subject: below --
2005-12-01 16:11 Vitaly Wool
2005-12-01 16:21 ` Russell King
2005-12-01 16:30   ` Vitaly Wool
2005-12-01 18:04 ` Stephen Street
2005-12-01 18:22 ` Greg KH
2005-12-02  6:06   ` Vitaly Wool
2005-12-02 18:50     ` Mark Underwood
2005-12-02 20:13     ` Greg KH
2005-12-05 18:01 ` Vitaly Wool
2005-12-08  1:59   ` David Brownell
2005-12-08  6:33     ` Vitaly Wool
2005-12-09 22:55       ` David Brownell
2005-12-10 11:15         ` Vitaly Wool
2005-12-11 12:36         ` Vitaly Wool
2005-12-03 11:44 vitalhome
2005-12-03 11:49 vitalhome
2005-12-03 17:10 ` Mark Underwood
2005-12-03 23:50   ` David Brownell

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=438FE01C.9070307@ru.mvista.com \
    --to=vwool@ru.mvista.com \
    --cc=Joachim_Jaeger@digi.com \
    --cc=akpm@osdl.org \
    --cc=basicmark@yahoo.com \
    --cc=david-b@pacbell.net \
    --cc=dpervushin@gmail.com \
    --cc=greg@kroah.com \
    --cc=komal_shah802003@yahoo.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=spi-devel-general@lists.sourceforge.net \
    --cc=stephen@streetfiresound.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox