All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brian Norris <computersforpeace@gmail.com>
To: Heiner Kallweit <hkallweit1@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: Thu, 19 Nov 2015 16:02:26 -0800	[thread overview]
Message-ID: <20151120000226.GP64635@google.com> (raw)
In-Reply-To: <564CEB61.2000601@gmail.com>

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.

> 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?

[snip example]

Brian

WARNING: multiple messages have this Message-ID (diff)
From: Brian Norris <computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Heiner Kallweit <hkallweit1-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: Thu, 19 Nov 2015 16:02:26 -0800	[thread overview]
Message-ID: <20151120000226.GP64635@google.com> (raw)
In-Reply-To: <564CEB61.2000601-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

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.

> 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?

[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

  parent reply	other threads:[~2015-11-20  0:02 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 [this message]
2015-11-20  0:02   ` Brian Norris
2015-11-20  6:59   ` Heiner Kallweit
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=20151120000226.GP64635@google.com \
    --to=computersforpeace@gmail.com \
    --cc=broonie@kernel.org \
    --cc=hkallweit1@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.