All of lore.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 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.