All of lore.kernel.org
 help / color / mirror / Atom feed
From: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
To: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Cc: atull <atull@opensource.altera.com>,
	gregkh@linuxfoundation.org, Pavel Machek <pavel@denx.de>,
	hpa@zytor.com, monstr@monstr.eu, michal.simek@xilinx.com,
	rdunlap@infradead.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, pantelis.antoniou@konsulko.com,
	robh+dt@kernel.org, grant.likely@linaro.org,
	iws@ovro.caltech.edu, linux-doc@vger.kernel.org,
	broonie@kernel.org, philip@balister.org, rubini@gnudd.com,
	s.trumtrar@pengutronix.de, jason@lakedaemon.net,
	kyle.teske@ni.com, nico@linaro.org, balbi@ti.com,
	m.chehab@samsung.com, davidb@codeaurora.org, rob@landley.net,
	davem@davemloft.net, cesarb@cesarb.net, sameo@linux.intel.com,
	akpm@linux-foundation.org, linus.walleij@linaro.org,
	pawel.moll@arm.com, mark.rutland@arm.com,
	ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
	devel@driverdev.osuosl.org, delicious.quinoa@gmail.com,
	dinguyen@opensource.altera.com, yvanderv@opensource.altera.com
Subject: Re: [PATCH v8 2/4] fpga manager: add sysfs interface document
Date: Thu, 15 Jan 2015 20:45:02 +0000	[thread overview]
Message-ID: <20150115204502.591bca1d@lxorguk.ukuu.org.uk> (raw)
In-Reply-To: <20150115184726.GA23247@obsidianresearch.com>

On Thu, 15 Jan 2015 11:47:26 -0700
Jason Gunthorpe <jgunthorpe@obsidianresearch.com> wrote:
> It is a novel idea, my concern would be that embedding the FPGA in the
> DT makes it permanent unswappable kernel memory.
> Not having the kernel hold the FPGA is best for many uses.

If you have a filesysytem before the FPGA is set up then it belongs in
the file system. As you presumably loaded the kernel from somewhere there
ought to be a file system (even an initrd).

> Having the kernel hold the FPGA as a swppable file handle/mmap of some
> sort is next best (obviously the fs must be operating during resume)

For a lot of hardware that gets somewhat hairy because you don't know
what the dependancies between devices are on the resume but yes.

> Unswappable kernel memory is the worst choice

There is another case here - which is where the firmware is somewhere
else physically. For example in PCI ROM space, or flash, but designed to
be loaded by the OS.


> I think to justify the ioctls you need a reason to have the context
> of a FD. sysfs is stateless, so if my process dies the kernel doesn't
> know.

That isn't to say the stateless information doesn't belong in sysfs. Eg
you don't neccessarily want to open the device node and go through ioctls
just for bits of information that are interesting to reporting tools.

(Imagine an 'lsfpga' tool for the kind of things you'd leave in sysfs)

> Identifying the ioctls needed would probably clarify things. My
> rough start would be 
> 
> - Get status: programed, not programmed, error?
>   Bitfile type? (eg Xilinx has nearly every permutation of bit/byte
>   ordering)

That's probably some kind of "what are you" ioctl that returns the
vendor/type information.

> - Hand over to a DT overlay (how does this work?) Lock transfers
>   from FD to kernel

That bit isn't stateful so I would actually have expected something in
the kernel ABI along the lines of 

           request_fpga(blah)

which does

             if in use by user
                    EBUSY
             lock it (all user opens will fail)

and

            release_fpga(blah)

and a sysfs node indicating its busy (and perhaps also what for if the
request_fpga passes a textual name)

> Not sure about partial reconfiguration - clearly the kernel needs to
> know and check that the bitfiles are of the correct family, I wonder
> if the approach should be to program a basis on the FPGA which then
> creates a new FPGA device in the system that can accept the partial
> reconfiguration - this way the locking makes sense, the basis is
> locked by the kernel and devices and the overlay remains
> lockable/swappable/whatever by a dedicated /dev/ node ??

I think so.

If you closed the device you have no idea what happened between the close
and a re-open, therefore you have no idea what the FPGA state is.
 
> Just thinking aloud, I've never had a use case for partial
> reconfiguration.

The API handles it but whether it needs to be there from day one I don't
know.

Alan


WARNING: multiple messages have this Message-ID (diff)
From: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
To: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Cc: mark.rutland@arm.com, linux-doc@vger.kernel.org,
	rubini@gnudd.com, pantelis.antoniou@konsulko.com, hpa@zytor.com,
	s.trumtrar@pengutronix.de, devel@driverdev.osuosl.org,
	sameo@linux.intel.com, nico@linaro.org,
	ijc+devicetree@hellion.org.uk, michal.simek@xilinx.com,
	kyle.teske@ni.com, grant.likely@linaro.org,
	davidb@codeaurora.org, linus.walleij@linaro.org,
	cesarb@cesarb.net, devicetree@vger.kernel.org,
	jason@lakedaemon.net, pawel.moll@arm.com, iws@ovro.caltech.edu,
	atull <atull@opensource.altera.com>,
	galak@codeaurora.org, broonie@kernel.org, philip@balister.org,
	dinguyen@opensource.altera.com, monstr@monstr.eu,
	Pavel Machek <pavel@denx.de>,
	yvanderv@opensource.altera.com, linux-kernel@vger.kernel.org,
	balbi@ti.com, delicious.quinoa@gmail.com, robh+dt@kernel.org,
	rob@landley.net, gregkh@linuxfoundation.org,
	akpm@linux-foundation.org, davem@davemloft.net,
	m.chehab@samsung.c
Subject: Re: [PATCH v8 2/4] fpga manager: add sysfs interface document
Date: Thu, 15 Jan 2015 20:45:02 +0000	[thread overview]
Message-ID: <20150115204502.591bca1d@lxorguk.ukuu.org.uk> (raw)
In-Reply-To: <20150115184726.GA23247@obsidianresearch.com>

On Thu, 15 Jan 2015 11:47:26 -0700
Jason Gunthorpe <jgunthorpe@obsidianresearch.com> wrote:
> It is a novel idea, my concern would be that embedding the FPGA in the
> DT makes it permanent unswappable kernel memory.
> Not having the kernel hold the FPGA is best for many uses.

If you have a filesysytem before the FPGA is set up then it belongs in
the file system. As you presumably loaded the kernel from somewhere there
ought to be a file system (even an initrd).

> Having the kernel hold the FPGA as a swppable file handle/mmap of some
> sort is next best (obviously the fs must be operating during resume)

For a lot of hardware that gets somewhat hairy because you don't know
what the dependancies between devices are on the resume but yes.

> Unswappable kernel memory is the worst choice

There is another case here - which is where the firmware is somewhere
else physically. For example in PCI ROM space, or flash, but designed to
be loaded by the OS.


> I think to justify the ioctls you need a reason to have the context
> of a FD. sysfs is stateless, so if my process dies the kernel doesn't
> know.

That isn't to say the stateless information doesn't belong in sysfs. Eg
you don't neccessarily want to open the device node and go through ioctls
just for bits of information that are interesting to reporting tools.

(Imagine an 'lsfpga' tool for the kind of things you'd leave in sysfs)

> Identifying the ioctls needed would probably clarify things. My
> rough start would be 
> 
> - Get status: programed, not programmed, error?
>   Bitfile type? (eg Xilinx has nearly every permutation of bit/byte
>   ordering)

That's probably some kind of "what are you" ioctl that returns the
vendor/type information.

> - Hand over to a DT overlay (how does this work?) Lock transfers
>   from FD to kernel

That bit isn't stateful so I would actually have expected something in
the kernel ABI along the lines of 

           request_fpga(blah)

which does

             if in use by user
                    EBUSY
             lock it (all user opens will fail)

and

            release_fpga(blah)

and a sysfs node indicating its busy (and perhaps also what for if the
request_fpga passes a textual name)

> Not sure about partial reconfiguration - clearly the kernel needs to
> know and check that the bitfiles are of the correct family, I wonder
> if the approach should be to program a basis on the FPGA which then
> creates a new FPGA device in the system that can accept the partial
> reconfiguration - this way the locking makes sense, the basis is
> locked by the kernel and devices and the overlay remains
> lockable/swappable/whatever by a dedicated /dev/ node ??

I think so.

If you closed the device you have no idea what happened between the close
and a re-open, therefore you have no idea what the FPGA state is.
 
> Just thinking aloud, I've never had a use case for partial
> reconfiguration.

The API handles it but whether it needs to be there from day one I don't
know.

Alan

  reply	other threads:[~2015-01-15 20:47 UTC|newest]

Thread overview: 128+ 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 ` atull
2015-01-06 20:13 ` [PATCH v8 1/4] doc: add bindings document for altera fpga manager atull
2015-01-06 20:13   ` atull
2015-01-06 22:05   ` Rob Herring
2015-01-06 22:05     ` Rob Herring
2015-01-06 22:34     ` atull
2015-01-06 22:34       ` atull
2015-01-09 15:50       ` Rob Herring
2015-01-09 15:50         ` Rob Herring
2015-01-09 18:58         ` atull
2015-01-09 18:58           ` atull
2015-01-06 20:13 ` [PATCH v8 2/4] fpga manager: add sysfs interface document atull
2015-01-06 20:13   ` atull
2015-01-07  8:48   ` Pavel Machek
2015-01-07  8:48     ` Pavel Machek
2015-01-09 19:14     ` atull
2015-01-09 19:14       ` atull
2015-01-09 20:56       ` Pavel Machek
2015-01-09 20:56         ` Pavel Machek
2015-01-10  8:10         ` Pantelis Antoniou
2015-01-10  8:10           ` Pantelis Antoniou
2015-01-10 15:11           ` Pavel Machek
2015-01-10 15:11             ` Pavel Machek
2015-01-11 16:29             ` atull
2015-01-11 16:29               ` atull
2015-01-12  8:45               ` Pavel Machek
2015-01-12  8:45                 ` Pavel Machek
2015-01-12 13:48                 ` Michal Simek
2015-01-12 13:48                   ` Michal Simek
2015-01-13  7:28                   ` Pavel Machek
2015-01-13  7:28                     ` Pavel Machek
2015-01-13  7:40                     ` Pantelis Antoniou
2015-01-13  7:40                       ` Pantelis Antoniou
2015-01-13  7:56                       ` Pavel Machek
2015-01-13  7:56                         ` Pavel Machek
2015-01-13 17:27                         ` atull
2015-01-13 17:27                           ` atull
2015-01-12 16:05               ` Rob Herring
2015-01-12 16:05                 ` Rob Herring
2015-01-12 16:26                 ` Mark Brown
2015-01-12 16:26                   ` Mark Brown
2015-01-12 18:06               ` Jason Gunthorpe
2015-01-12 18:06                 ` Jason Gunthorpe
2015-01-13 16:21                 ` One Thousand Gnomes
2015-01-13 16:21                   ` One Thousand Gnomes
2015-01-15 21:52                   ` Pavel Machek
2015-01-15 21:52                     ` Pavel Machek
2015-01-12 21:01         ` One Thousand Gnomes
2015-01-12 21:01           ` One Thousand Gnomes
2015-01-12 21:43           ` Jason Gunthorpe
2015-01-12 21:43             ` Jason Gunthorpe
2015-01-13 16:28             ` One Thousand Gnomes
2015-01-13 16:28               ` One Thousand Gnomes
2015-01-13 17:26               ` Pantelis Antoniou
2015-01-13 17:26                 ` Pantelis Antoniou
2015-01-13 19:44                 ` atull
2015-01-13 19:44                   ` atull
2015-01-14 15:58                 ` One Thousand Gnomes
2015-01-14 15:58                   ` One Thousand Gnomes
2015-01-13 20:00               ` Jason Gunthorpe
2015-01-13 20:00                 ` Jason Gunthorpe
2015-01-13 21:37                 ` atull
2015-01-13 21:37                   ` atull
2015-01-13 22:24                   ` Jason Gunthorpe
2015-01-13 22:24                     ` Jason Gunthorpe
2015-01-14 16:06                     ` One Thousand Gnomes
2015-01-14 16:06                       ` One Thousand Gnomes
2015-01-14 18:12                       ` Jason Gunthorpe
2015-01-14 18:12                         ` Jason Gunthorpe
2015-01-14 19:01                         ` Pantelis Antoniou
2015-01-14 19:01                           ` Pantelis Antoniou
2015-01-15 11:36                         ` One Thousand Gnomes
2015-01-15 11:36                           ` One Thousand Gnomes
2015-01-15 11:44                           ` Mark Brown
2015-01-15 11:44                             ` Mark Brown
2015-01-15 16:34                     ` atull
2015-01-15 16:34                       ` atull
2015-01-15 18:47                       ` Jason Gunthorpe
2015-01-15 18:47                         ` Jason Gunthorpe
2015-01-15 20:45                         ` One Thousand Gnomes [this message]
2015-01-15 20:45                           ` One Thousand Gnomes
2015-01-15 20:54                           ` Pantelis Antoniou
2015-01-15 20:54                             ` Pantelis Antoniou
2015-01-21 16:01                             ` One Thousand Gnomes
2015-01-21 16:01                               ` One Thousand Gnomes
2015-01-21 16:33                               ` Pantelis Antoniou
2015-01-21 16:33                                 ` Pantelis Antoniou
2015-01-21 20:27                                 ` Jason Gunthorpe
2015-01-21 20:27                                   ` Jason Gunthorpe
2015-01-21 20:32                                   ` Pantelis Antoniou
2015-01-21 20:32                                     ` Pantelis Antoniou
2015-02-15 22:40                                   ` Pavel Machek
2015-02-15 22:40                                     ` Pavel Machek
2015-02-17 17:07                                     ` Rob Landley
2015-02-17 17:07                                       ` Rob Landley
2015-02-17 19:17                                       ` Pavel Machek
2015-02-17 19:17                                         ` Pavel Machek
2015-02-19 12:46                                         ` Michal Simek
2015-02-19 12:46                                           ` Michal Simek
2015-02-21  6:31                                           ` atull
2015-02-21  6:31                                             ` atull
2015-02-17 18:12                                     ` Jason Gunthorpe
2015-02-17 18:12                                       ` Jason Gunthorpe
2015-01-15 21:42                           ` Jason Gunthorpe
2015-01-15 21:42                             ` Jason Gunthorpe
2015-01-17 21:11                       ` Pavel Machek
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   ` atull
2015-01-06 20:13 ` [PATCH v8 4/4] staging: fpga manager: add driver for socfpga fpga manager atull
2015-01-06 20:13   ` atull
2015-01-10 18:11 ` [PATCH v8 0/4] FPGA Manager Framework Konrad Zapalowicz
2015-01-10 18:11   ` Konrad Zapalowicz
2015-01-11 16:08   ` atull
2015-01-11 16:08     ` atull
2015-01-11 16:24     ` Konrad Zapalowicz
2015-01-11 16:24       ` Konrad Zapalowicz
2015-01-11 19:52       ` Pavel Machek
2015-01-11 19:52         ` Pavel Machek
2015-01-11 20:58         ` Konrad Zapalowicz
2015-01-11 20:58           ` Konrad Zapalowicz
2015-01-11 21:31           ` Pavel Machek
2015-01-11 21:31             ` Pavel Machek
2015-01-12 13:50             ` Michal Simek
2015-01-12 13:50               ` Michal Simek
2015-01-12 14:06         ` Dan Carpenter
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=20150115204502.591bca1d@lxorguk.ukuu.org.uk \
    --to=gnomes@lxorguk.ukuu.org.uk \
    --cc=akpm@linux-foundation.org \
    --cc=atull@opensource.altera.com \
    --cc=balbi@ti.com \
    --cc=broonie@kernel.org \
    --cc=cesarb@cesarb.net \
    --cc=davem@davemloft.net \
    --cc=davidb@codeaurora.org \
    --cc=delicious.quinoa@gmail.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dinguyen@opensource.altera.com \
    --cc=galak@codeaurora.org \
    --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=m.chehab@samsung.com \
    --cc=mark.rutland@arm.com \
    --cc=michal.simek@xilinx.com \
    --cc=monstr@monstr.eu \
    --cc=nico@linaro.org \
    --cc=pantelis.antoniou@konsulko.com \
    --cc=pavel@denx.de \
    --cc=pawel.moll@arm.com \
    --cc=philip@balister.org \
    --cc=rdunlap@infradead.org \
    --cc=rob@landley.net \
    --cc=robh+dt@kernel.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 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.