Re: [PATCH v8 2/4] fpga manager: add sysfs interface document

Rob Herring
2015-01-12T16:06:14Z

On Sun, Jan 11, 2015 at 10:29 AM, atull <atull@opensource.altera.com> wrote:
> On Sat, 10 Jan 2015, Pavel Machek wrote:
>
>> On Sat 2015-01-10 10:10:51, Pantelis Antoniou wrote:
>> > Hi Pavel,
>> >
>> > > On Jan 9, 2015, at 22:56 , Pavel Machek <pavel@denx.de> wrote:
>> > >
>> > > On Fri 2015-01-09 13:14:24, atull wrote:
>> > >> On Wed, 7 Jan 2015, Pavel Machek wrote:
>> > >>
>> > >>> On Tue 2015-01-06 14:13:37, atull@opensource.altera.com wrote:
>> > >>>> +
>> > >>>> +What: /sys/class/fpga_manager/<fpga>/firmware
>> > >>>> +Date: October 2014
>> > >>>> +KernelVersion: 3.18
>> > >>>> +Contact: Alan Tull <atull@opensource.altera.com>
>> > >>>> +Description: Name of the FPGA image file to load using firmware
>> > >>>> class.
>> > >>>
>> > >>> This one is ugly: it unneccessarily passes firmware name through the
>> > >>> kernel. Just make interface and code simpler by always passing
>> > >>> "socfpga-fpga-image" or something like that.
>> > >>>
>> > >>> Thanks,
>> > >>> Pavel
>> > >>
>> > >> Hi Pavel,
>> > >>
>> > >> It might be ugly. It's not unnecessary. Some uses of FPGAs involve
>> > >> switching out the FPGA images dynamically under control of the userspace.
>> > >
>> > > Then configure udev to load right firmware for you, or ln -s
>> > > image-i-want-now socfpga-fpga-image to select the one to read…?
>> > >
>> >
>> > Who said that udev is going to be available in the kind of system this is going to end in?
>>
>> Noone.
>>
>> > Doing ln -s tricks to load a different image? Really?
>>
>> But if you don't have udev, you can do ln -s. It is better than
>> open-coding symlink functionality into
>> /sys/class/fpga_manager/<fpga>/firmware ... cause that's what this is.
>>
>> Actually, clean implementation of "firmware" would be symlink in
>> sysfs; but I'd say that would be overdoing it.
>>
>> > I say the interface is fine as it is.
>>
>> I say it is not.
>> Pavel
>
> Hi Pavel,
>
> I see that we could do it that way and it would eliminate one of the
> sysfs files (../fpga_manager/<fpga>/firmware). Either way we are assuming
> that there are fpga images in the filesystem in the firmware search path,
> so I don't see why adding a piece of indirection (symlink) makes things
> better.
>
> We want to be able to switch out the FPGA image
> under control of userspace. So we don't want an interface that makes
> it more cumbersome or tries to pretend that there's only one image.
>
> Previous uses of the firmware layer has been to use it to load once after
> bootup; this is different since some use cases will want to switch out
> the FPGA image. If someone wants there to be only one FPGA image on
> the FGPA forever, they will probably not be using this framework; their
> FPGA will probably be loaded before Linux boots up.

That's not really true. Some WiFi devices have to load different
firmware for client and AP modes and switching is a common usecase in
phones.

There may be other instances of drivers wanting configurable firmware
names already. A common interface here would be nice. It could also be
useful to expose the firmware names such that you could generate a
list of all firmware files needed for a machine (that may already be
possible with uevents?).

Rob