devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: atull <atull@opensource.altera.com>
To: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>,
	Ming Lei <ming.lei@canonical.com>,
	Michal Simek <michal.simek@xilinx.com>
Cc: mark.rutland@arm.com,
	One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>,
	linux-doc@vger.kernel.org, rubini@gnudd.com,
	Pantelis Antoniou <pantelis.antoniou@konsulko.com>,
	hpa@zytor.com, Steffen Trumtrar <s.trumtrar@pengutronix.de>,
	devel@driverdev.osuosl.org, sameo@linux.intel.com,
	nico@linaro.org, ijc+devicetree@hellion.org.uk,
	kyle.teske@ni.com, Grant Likely <grant.likely@linaro.org>,
	davidb@codeaurora.org, Linus Walleij <linus.walleij@linaro.org>,
	cesarb@cesarb.net, devicetree@vger.kernel.org,
	jason@lakedaemon.net, pawel.moll@arm.com, iws@ovro.caltech.edu,
	galak@codeaurora.org, Mark Brown <broonie@kernel.org>,
	philip@balister.org, dinguyen@opensource.altera.com,
	Michal Simek <monstr@monstr.eu>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	yvanderv@opensource.altera.com,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Felipe Balbi <balbi@ti.com>,
	Alan
Subject: Re: [PATCH v8 2/4] fpga manager: add sysfs interface document
Date: Sat, 21 Feb 2015 00:31:36 -0600	[thread overview]
Message-ID: <alpine.DEB.2.10.1502210029200.2346@shineypoop> (raw)
In-Reply-To: <0440c296085f48918e07134b07690a08@BY2FFO11FD028.protection.gbl>

On Thu, 19 Feb 2015, Michal Simek wrote:

> On 02/17/2015 08:17 PM, Pavel Machek wrote:
> > On Tue 2015-02-17 11:07:53, Rob Landley wrote:
> >>
> >>
> >> On 02/15/2015 04:40 PM, Pavel Machek wrote:
> >>> On Wed 2015-01-21 13:27:00, Jason Gunthorpe wrote:
> >>>> On Wed, Jan 21, 2015 at 06:33:12PM +0200, Pantelis Antoniou wrote:
> >>>> My point is that the current firmware layer is overly cautious and
> >>>> FPGAs are very big. My current project on small Xilinx device has a
> >>>> 10MB programming file. The biggest Xilinx device today has a max
> >>>> bitfile size around 122MB.
> >>>>
> >>>> So keeping that much memory pinned in the kernel when I can prove it
> >>>> is uncessary for my system (either because there is no suspend/resume
> >>>> possibility, or because I know the CPU can always access the
> >>>> filesytem) is very undesirable.
> >>>
> >>> Well, your current device aalso has 1GB RAM, no?
> >>
> >> Unnecessarily pinning 10% of your ram is a good solution?
> > 
> > Never said that. But I'd rather have _some_ API proposed, then try to
> > design in everthing including kitchen sink and do nothing.
> 

I propose an extension to the firmware class:

int request_firmware_streamed(const struct firmware **firmware_p,
                              const char *name,
                              struct device *device,
                              int (*consumer)(char *buf,
                                              size_t size,
                                              void *priv))

This is a new function that streams the firmware file in 4k chunks to
a callback function.  So firmware is not limited to the allocation
size of vmalloc.

This new function would have the same parameters as request_firmware except
adding a pointer to a consumer function.  In the case of fpga's, the
consumer function is writing the 4k chunks to the fpga.

The new function will:
 * open the file
 * read 4k
 * hand that buffer to the consumer
 * sleep until the consumer returns
 * give up if consumer has a nonzero exit, continue reading otherwise

Admittedly this is really different from the current firmeware class's
structures.

The real problem this is trying to solve is that bitstreams can be huge,
especially as fpga's can be daisychained.  And the CPU doing the loading
could be embedded (limited resources).  IFAIK fpga's don't need to have
the whole image in a ram buffer.

This gives us the convenience of request_firmware() and gives the kernel an
extension of the firmware class that others might useful instead of solving
this problem that we keep hovering around for fpga's only.

Alan Tull

  reply	other threads:[~2015-02-21  6:31 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-06 20:13 [PATCH v8 0/4] FPGA Manager Framework atull
2015-01-06 20:13 ` [PATCH v8 1/4] doc: add bindings document for altera fpga manager atull
2015-01-06 22:05   ` Rob Herring
2015-01-06 22:34     ` atull
2015-01-09 15:50       ` Rob Herring
     [not found]         ` <CAL_Jsq+pn5MW6veUivEL49FLSQxZOWRq0gU9Q6iD5jzurKK3rQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-09 18:58           ` atull
2015-01-06 20:13 ` [PATCH v8 2/4] fpga manager: add sysfs interface document atull
2015-01-07  8:48   ` Pavel Machek
2015-01-09 19:14     ` atull
2015-01-09 20:56       ` Pavel Machek
2015-01-10  8:10         ` Pantelis Antoniou
2015-01-10 15:11           ` Pavel Machek
2015-01-11 16:29             ` atull
2015-01-12  8:45               ` Pavel Machek
2015-01-12 13:48                 ` Michal Simek
2015-01-13  7:28                   ` Pavel Machek
2015-01-13  7:40                     ` Pantelis Antoniou
2015-01-13  7:56                       ` Pavel Machek
2015-01-13 17:27                         ` atull
2015-01-12 16:05               ` Rob Herring
2015-01-12 16:26                 ` Mark Brown
2015-01-12 18:06               ` Jason Gunthorpe
2015-01-13 16:21                 ` One Thousand Gnomes
2015-01-15 21:52                   ` Pavel Machek
2015-01-12 21:01         ` One Thousand Gnomes
2015-01-12 21:43           ` Jason Gunthorpe
2015-01-13 16:28             ` One Thousand Gnomes
2015-01-13 17:26               ` Pantelis Antoniou
2015-01-13 19:44                 ` atull
2015-01-14 15:58                 ` One Thousand Gnomes
2015-01-13 20:00               ` Jason Gunthorpe
2015-01-13 21:37                 ` atull
2015-01-13 22:24                   ` Jason Gunthorpe
2015-01-14 16:06                     ` One Thousand Gnomes
2015-01-14 18:12                       ` Jason Gunthorpe
2015-01-14 19:01                         ` Pantelis Antoniou
2015-01-15 11:36                         ` One Thousand Gnomes
2015-01-15 11:44                           ` Mark Brown
2015-01-15 16:34                     ` atull
2015-01-15 18:47                       ` Jason Gunthorpe
2015-01-15 20:45                         ` One Thousand Gnomes
2015-01-15 20:54                           ` Pantelis Antoniou
2015-01-21 16:01                             ` One Thousand Gnomes
     [not found]                               ` <20150121160151.453ba403-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org>
2015-01-21 16:33                                 ` Pantelis Antoniou
     [not found]                                   ` <D466D9FF-25DA-4765-9469-128733BEBC4D-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
2015-01-21 20:27                                     ` Jason Gunthorpe
2015-01-21 20:32                                       ` Pantelis Antoniou
2015-02-15 22:40                                       ` Pavel Machek
2015-02-17 17:07                                         ` Rob Landley
2015-02-17 19:17                                           ` Pavel Machek
2015-02-19 12:46                                             ` Michal Simek
2015-02-21  6:31                                               ` atull [this message]
2015-02-17 18:12                                         ` Jason Gunthorpe
2015-01-15 21:42                           ` Jason Gunthorpe
2015-01-17 21:11                       ` Pavel Machek
2015-01-06 20:13 ` [PATCH v8 3/4] staging: fpga manager: framework core atull
2015-01-06 20:13 ` [PATCH v8 4/4] staging: fpga manager: add driver for socfpga fpga manager atull
2015-01-10 18:11 ` [PATCH v8 0/4] FPGA Manager Framework Konrad Zapalowicz
2015-01-11 16:08   ` atull
2015-01-11 16:24     ` Konrad Zapalowicz
2015-01-11 19:52       ` Pavel Machek
2015-01-11 20:58         ` Konrad Zapalowicz
2015-01-11 21:31           ` Pavel Machek
2015-01-12 13:50             ` Michal Simek
2015-01-12 14:06         ` Dan Carpenter

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=alpine.DEB.2.10.1502210029200.2346@shineypoop \
    --to=atull@opensource.altera.com \
    --cc=balbi@ti.com \
    --cc=broonie@kernel.org \
    --cc=cesarb@cesarb.net \
    --cc=davidb@codeaurora.org \
    --cc=devel@driverdev.osuosl.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dinguyen@opensource.altera.com \
    --cc=galak@codeaurora.org \
    --cc=gnomes@lxorguk.ukuu.org.uk \
    --cc=grant.likely@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hpa@zytor.com \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=iws@ovro.caltech.edu \
    --cc=jason@lakedaemon.net \
    --cc=jgunthorpe@obsidianresearch.com \
    --cc=kyle.teske@ni.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=michal.simek@xilinx.com \
    --cc=ming.lei@canonical.com \
    --cc=monstr@monstr.eu \
    --cc=nico@linaro.org \
    --cc=pantelis.antoniou@konsulko.com \
    --cc=pawel.moll@arm.com \
    --cc=philip@balister.org \
    --cc=rubini@gnudd.com \
    --cc=s.trumtrar@pengutronix.de \
    --cc=sameo@linux.intel.com \
    --cc=yvanderv@opensource.altera.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;
as well as URLs for NNTP newsgroup(s).