All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heiner Kallweit <hkallweit1@gmail.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: Mark Brown <broonie@kernel.org>,
	linux-mtd@lists.infradead.org,
	"linux-spi@vger.kernel.org" <linux-spi@vger.kernel.org>,
	hramrach@gmail.com, martin@sperl.org
Subject: Re: RfC: Handle SPI controller limitations like maximum message length
Date: Fri, 20 Nov 2015 07:59:44 +0100	[thread overview]
Message-ID: <564EC4E0.90602@gmail.com> (raw)
In-Reply-To: <20151120000226.GP64635@google.com>

Am 20.11.2015 um 01:02 schrieb Brian Norris:
> On Wed, Nov 18, 2015 at 10:19:29PM +0100, Heiner Kallweit wrote:
>> There have been few discussions in the past about how to handle SPI controller
>> limitations like max message length. However they don't seem to have resulted
>> in accepted patches yet.
>> I also stumbled across this topic because I own a device using Freescale's
>> ESPI which has a 64K message size limitation.
>>
>> At least one agreed fact is that silently assembling chunks in protocol
>> drivers is not the preferred approach.
> 
> Hmm, are you referring to this sort of approach [1], where the
> spi_message::acutal_length informs the spi_nor layer that the transfer
> was truncated?
> 
> [1] [PATCH v4 7/7] mtd: spi-nor: add read loop
>     http://lists.infradead.org/pipermail/linux-mtd/2015-August/061062.html
> 
>> Maybe a better approach would be to introduce a new member of spi_master
>> dealing with controller limitations.
>> My issue is just the message size limitation but most likely there are more
>> and different limitations in other controllers.
>>
>> I'd introduce a struct spi_controller_restrictions and add a member to spi_master
>> pointing to such a struct. Then a controller driver could do something like this:
>>
>> static const struct spi_controller_restrictions fsl_espi_restrictions = {
>> 	.max_msg_size	= 0xffff,
>> };
>>
>> master->restrictions = &fsl_espi_restrictions;
> 
> OK, so I think Mark suggested we not move to a 'restrictions' struct,
> but otherwise it doesn't sound like he's opposed to this.
> 
That's how I read his comments too.

>> I also add an example how a protocol driver could use this extension.
>> Appreciate any comment.
> 
> One question I have: is it necessary to push the handling out into the
> protocol driver? I feel like I've seen a partial answer to this: the
> 'actual_legnth' return field suggests that the protocol driver already
> has to deal with shorter-than-desired transfers.
> 
> Then I have another one: is the 'actual_length' field really
> insufficient? For instance, is it non-kosher for a spi_master to just
> cutoff the message at (for instance) 64K, and expect the protocol
> driver to handle that (e.g., with Michal's patch from [1])? And if that
> is kosher, then is there a good reason for the protocol driver to know
> the exact maximum for its spi_master?
> 
It would be sufficient if it's a valid case that spi_master returns 0
and an actual_length < requested_length as this is some kind of error
situation.
I could also fully understand if spi_master doesn't return 0 but
-EMSGSIZE in such a case.
And the suggested patch would bail out of the chunk-assembling loop
once it get's an error from the SPI transfer
(after applying patch 2 of the series which introduces checking
the return code of the spi_sync call in m25p80_read).

> [snip example]
> 
> Brian
> 

WARNING: multiple messages have this Message-ID (diff)
From: Heiner Kallweit <hkallweit1-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Brian Norris <computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	"linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	martin-d5rIkyn9cnPYtjvyW6yDsg@public.gmane.org
Subject: Re: RfC: Handle SPI controller limitations like maximum message length
Date: Fri, 20 Nov 2015 07:59:44 +0100	[thread overview]
Message-ID: <564EC4E0.90602@gmail.com> (raw)
In-Reply-To: <20151120000226.GP64635-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>

Am 20.11.2015 um 01:02 schrieb Brian Norris:
> On Wed, Nov 18, 2015 at 10:19:29PM +0100, Heiner Kallweit wrote:
>> There have been few discussions in the past about how to handle SPI controller
>> limitations like max message length. However they don't seem to have resulted
>> in accepted patches yet.
>> I also stumbled across this topic because I own a device using Freescale's
>> ESPI which has a 64K message size limitation.
>>
>> At least one agreed fact is that silently assembling chunks in protocol
>> drivers is not the preferred approach.
> 
> Hmm, are you referring to this sort of approach [1], where the
> spi_message::acutal_length informs the spi_nor layer that the transfer
> was truncated?
> 
> [1] [PATCH v4 7/7] mtd: spi-nor: add read loop
>     http://lists.infradead.org/pipermail/linux-mtd/2015-August/061062.html
> 
>> Maybe a better approach would be to introduce a new member of spi_master
>> dealing with controller limitations.
>> My issue is just the message size limitation but most likely there are more
>> and different limitations in other controllers.
>>
>> I'd introduce a struct spi_controller_restrictions and add a member to spi_master
>> pointing to such a struct. Then a controller driver could do something like this:
>>
>> static const struct spi_controller_restrictions fsl_espi_restrictions = {
>> 	.max_msg_size	= 0xffff,
>> };
>>
>> master->restrictions = &fsl_espi_restrictions;
> 
> OK, so I think Mark suggested we not move to a 'restrictions' struct,
> but otherwise it doesn't sound like he's opposed to this.
> 
That's how I read his comments too.

>> I also add an example how a protocol driver could use this extension.
>> Appreciate any comment.
> 
> One question I have: is it necessary to push the handling out into the
> protocol driver? I feel like I've seen a partial answer to this: the
> 'actual_legnth' return field suggests that the protocol driver already
> has to deal with shorter-than-desired transfers.
> 
> Then I have another one: is the 'actual_length' field really
> insufficient? For instance, is it non-kosher for a spi_master to just
> cutoff the message at (for instance) 64K, and expect the protocol
> driver to handle that (e.g., with Michal's patch from [1])? And if that
> is kosher, then is there a good reason for the protocol driver to know
> the exact maximum for its spi_master?
> 
It would be sufficient if it's a valid case that spi_master returns 0
and an actual_length < requested_length as this is some kind of error
situation.
I could also fully understand if spi_master doesn't return 0 but
-EMSGSIZE in such a case.
And the suggested patch would bail out of the chunk-assembling loop
once it get's an error from the SPI transfer
(after applying patch 2 of the series which introduces checking
the return code of the spi_sync call in m25p80_read).

> [snip example]
> 
> Brian
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2015-11-20  7:00 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-18 21:19 RfC: Handle SPI controller limitations like maximum message length Heiner Kallweit
2015-11-18 21:19 ` Heiner Kallweit
2015-11-18 21:57 ` Mark Brown
2015-11-18 21:57   ` Mark Brown
2015-11-18 22:50   ` Heiner Kallweit
2015-11-18 22:50     ` Heiner Kallweit
2015-11-19 11:40     ` Mark Brown
2015-11-19 11:40       ` Mark Brown
2015-11-19 15:00       ` Martin Sperl
2015-11-19 15:00         ` Martin Sperl
2015-11-19 17:15         ` Mark Brown
2015-11-19 17:15           ` Mark Brown
2015-11-20  0:07           ` Brian Norris
2015-11-20  0:07             ` Brian Norris
2015-11-20 11:06             ` Mark Brown
2015-11-20 11:06               ` Mark Brown
2015-11-20 11:16               ` Martin Sperl
2015-11-20 11:16                 ` Martin Sperl
2015-11-20 10:18           ` Martin Sperl
2015-11-20 10:18             ` Martin Sperl
2015-11-20 12:05             ` Mark Brown
2015-11-20 12:05               ` Mark Brown
2015-11-20 12:56               ` Martin Sperl
2015-11-20 12:56                 ` Martin Sperl
2015-11-21 13:49                 ` Mark Brown
2015-11-21 13:49                   ` Mark Brown
2015-11-21 14:10                   ` Heiner Kallweit
2015-11-21 14:10                     ` Heiner Kallweit
2015-11-21 15:57                     ` Michal Suchanek
2015-11-21 15:57                       ` Michal Suchanek
2015-11-21 22:59                       ` [PATCH 0/3] spi: mtd: Handle HW message length restrictions Heiner Kallweit
2015-11-21 22:59                         ` Heiner Kallweit
2015-11-21 23:01                       ` [PATCH 1/3] spi: core: add max_msg_size to spi_master Heiner Kallweit
2015-11-21 23:01                         ` Heiner Kallweit
2015-11-22 13:16                         ` Mark Brown
2015-11-22 13:16                           ` Mark Brown
2015-11-22 16:15                           ` Heiner Kallweit
2015-11-22 16:15                             ` Heiner Kallweit
2015-11-23 11:38                             ` Mark Brown
2015-11-23 11:38                               ` Mark Brown
2015-11-27 19:26                               ` Heiner Kallweit
2015-11-27 19:26                                 ` Heiner Kallweit
2015-11-30 16:42                                 ` Mark Brown
2015-11-30 16:42                                   ` Mark Brown
2015-11-30 20:15                                   ` Heiner Kallweit
2015-11-30 20:15                                     ` Heiner Kallweit
2015-11-21 23:08                       ` [PATCH 2/3] mtd: m25p80: handle HW message size restrictions Heiner Kallweit
2015-11-21 23:08                         ` Heiner Kallweit
2015-11-22 12:51                         ` Michal Suchanek
2015-11-22 12:51                           ` Michal Suchanek
2015-11-21 23:11                       ` [PATCH 3/3] spi: fsl-espi: make use of max_msg_size in spi_master to handle HW restrictions Heiner Kallweit
2015-11-21 23:11                         ` Heiner Kallweit
2015-11-30 20:24                       ` [PATCH v2 1/2] spi: core: add max_msg_size to spi_master Heiner Kallweit
2015-11-30 20:24                         ` Heiner Kallweit
2015-11-30 20:25                       ` [PATCH resubmit 2/2] spi: fsl-espi: make use of max_msg_size in spi_master to handle HW restrictions Heiner Kallweit
2015-11-30 20:25                         ` Heiner Kallweit
2015-12-01 14:19                         ` Mark Brown
2015-12-01 14:19                           ` Mark Brown
2015-12-01 18:53                           ` Heiner Kallweit
2015-12-01 18:53                             ` Heiner Kallweit
2015-11-22 13:19                     ` RfC: Handle SPI controller limitations like maximum message length Mark Brown
2015-11-22 13:19                       ` Mark Brown
2015-11-20  0:02 ` Brian Norris
2015-11-20  0:02   ` Brian Norris
2015-11-20  6:59   ` Heiner Kallweit [this message]
2015-11-20  6:59     ` Heiner Kallweit
2015-11-20 10:06     ` Heiner Kallweit
2015-11-20 10:06       ` Heiner Kallweit
2015-11-20 12:35       ` Mark Brown
2015-11-20 12:35         ` Mark Brown
2015-11-20 18:59         ` Heiner Kallweit
2015-11-20 18:59           ` Heiner Kallweit
2015-11-20 19:05           ` Michal Suchanek
2015-11-20 19:05             ` Michal Suchanek
2015-11-20 19:21             ` Mark Brown
2015-11-20 19:21               ` Mark Brown
2015-11-20 19:44               ` Michal Suchanek
2015-11-20 19:44                 ` Michal Suchanek
2015-11-20 23:22             ` Brian Norris
2015-11-20 23:22               ` Brian Norris
2015-11-21 22:53               ` Heiner Kallweit
2015-11-21 22:53                 ` Heiner Kallweit
2015-11-20 19:18           ` Mark Brown
2015-11-20 19:18             ` Mark Brown
2015-11-20 19:37             ` Heiner Kallweit
2015-11-20 19:37               ` Heiner Kallweit
2015-11-20 12:31   ` Mark Brown
2015-11-20 12:31     ` Mark Brown
2015-11-20 12:56 ` Michal Suchanek
2015-11-20 12:56   ` Michal Suchanek
2015-11-20 23:07   ` Brian Norris
2015-11-20 23:07     ` Brian Norris

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=564EC4E0.90602@gmail.com \
    --to=hkallweit1@gmail.com \
    --cc=broonie@kernel.org \
    --cc=computersforpeace@gmail.com \
    --cc=hramrach@gmail.com \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=martin@sperl.org \
    /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.