From: Greg KH <gregkh@linuxfoundation.org>
To: Andy Lutomirski <luto@amacapital.net>
Cc: Matt Fleming <matt.fleming@intel.com>,
Sam Protsenko <semen.protsenko@linaro.org>,
"Kweh, Hock Leong" <hock.leong.kweh@intel.com>,
LKML <linux-kernel@vger.kernel.org>,
"Ong, Boon Leong" <boon.leong.ong@intel.com>,
"linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
Ming Lei <ming.lei@canonical.com>
Subject: Re: [PATCH v2 3/3] efi: Capsule update with user helper interface
Date: Tue, 4 Nov 2014 07:40:17 -0800 [thread overview]
Message-ID: <20141104154017.GA28113@kroah.com> (raw)
In-Reply-To: <CALCETrW1UaOCcb-32SOUhi_Zh5vLzV+VwyffThVvso23z04SHA@mail.gmail.com>
On Tue, Nov 04, 2014 at 06:57:21AM -0800, Andy Lutomirski wrote:
> On Nov 4, 2014 6:18 AM, "Matt Fleming" <matt.fleming@intel.com> wrote:
> >
> > On Mon, 2014-11-03 at 22:32 -0800, Andy Lutomirski wrote:
> > >
> > > It seems like a large fraction of the code in this module exists just
> > > to work around the fact that request_firmware doesn't do what you want
> > > it to do. You have code to:
> > >
> > > - Prevent the /lib/firmware mechanism from working.
> > > - Avoid a deadlock by doing strange things in the unload code.
> > > - Allow more than one capsule per module load. (Isn't this hard to
> > > use? User code will have to wait for the next firmware request before
> > > sending a second capsule.)
>
> I think that the firmware directory goes away and comes back. Try cd
> /sys/firmware/efi-capsule-file and upload one capsule. I bet that ls
> will show an empty directory.
>
> > >
> > > All of this is for dubious gain. You have to do three separate opens
> > > in sysfs to upload a capsule, and there's no way to report back to
> > > userspace whether the EFI call worked and whether a reboot is needed.
> >
> > Whether or not a reboot is required is indicated in the capsule image
> > itself, i.e. the capsule tells the firmware whether an immediate reboot
> > is required not the other way around.
> >
> > The firmware does tell the kernel what *kind* of a reboot is required,
> > but that doesn't need reporting to userspace.
> >
> > > What's the benefit of using the firmware interface here?
> >
> > I originally implemented something to send capsules to the firmware via
> > sysfs files back in 2013 and I basically ended up duplicating 25% of the
> > code that's already in drivers/base/firmware_class.c.
> >
> > If you're objecting to the lack of modularity in firmware_class.c, then
> > we could probably carve up the functionality we require a little more
> > neatly (like not having to do the /lib/firmware avoidance hacks), but
> > firmware_class.c should definitely be used as the foundation.
> >
>
> I don't particularly care what the foundation is, but given that a
> misc char device currently looks like it would be considerably less
> code for a nicer interface, using the firmware class in its current
> state doesn't look so great.
Then fix the firmware class code.
Please, don't create random /dev nodes for firmware images like this,
use the firmware code, that is what it is there for, and it is correct
to use it for this type of interface.
> If I were to write user code for this, I'd really want a single
> transaction that uploads a capsule and gets a success/failure
> indication. Using ioctl or a single big write sound fine.
That's what you are using with the firmware interface, so this patch is
currect.
> Basically, I agree that EFI capsules are firmware, and using the
> "firmware" mechanism makes logical sense. But the firmware class is
> designed for kernel drivers that request firmware, user code that just
> blindly supplies an existing file, user code that doesn't care at all
> whether the firmware loaded correctly (because, for many drivers,
> there is probably no synchronous way to figure out whether the upload
> worked anyway), and firmware loading being idempotent.
>
> For EFI capsules and other flash-my-device mechanisms, we want user
> code to send firmware independently of any driver request, user code
> to actively think about what it wants to send, user code to find out
> what happened as a result of the request, and user code to actively
> think about whether it should send another update.
>
> If someone wants to make firmware_class work very nicely for this
> interface, that sounds great. I'd recommend using a non-overlapping
> set of filenames in the sysfs directory to avoid confusing existing
> tools, especially since it's not obvious to be that the kernel has any
> way at all to detect that what it thinks is an intentional capsule
> load request is actually an old version of udev mindlessly responding
> to a firmware loading request (via udevadm trigger if nothing else).
> I kind of suspect that it will end up sharing very little code with
> the normal firmware mechanism, though.
>
> This thing really does sound like it'll be 20-30 lines of code *total*
> using a misc device, and the earlier patches in the series could
> possibly be dropped entirely.
I don't want to see the misc interface used for this, sorry you don't
like it, but I feel the firmware interface is correct.
greg k-h
next prev parent reply other threads:[~2014-11-04 15:41 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-03 3:07 [PATCH v2 0/3] Enable user helper interface for efi capsule update Kweh Hock Leong
2014-11-03 3:07 ` [PATCH v2 1/3] firmware loader: Introduce new API - request_firmware_abort() Kweh Hock Leong
2014-11-03 10:15 ` Henrique de Moraes Holschuh
2014-11-03 12:07 ` Matt Fleming
2014-11-08 19:06 ` Greg Kroah-Hartman
2014-11-13 2:51 ` Kweh, Hock Leong
2014-11-17 15:12 ` Matt Fleming
2014-11-18 6:31 ` Kweh, Hock Leong
2014-11-19 2:05 ` Greg Kroah-Hartman
2014-11-03 3:07 ` [PATCH v2 2/3] firmware loader: fix hung task warning dump Kweh Hock Leong
2014-11-08 19:07 ` Greg Kroah-Hartman
2014-11-03 3:07 ` [PATCH v2 3/3] efi: Capsule update with user helper interface Kweh Hock Leong
2014-11-04 4:32 ` Greg Kroah-Hartman
2014-11-04 5:20 ` Andy Lutomirski
2014-11-04 6:04 ` Kweh, Hock Leong
2014-11-04 6:32 ` Andy Lutomirski
2014-11-04 8:03 ` Kweh, Hock Leong
2014-11-04 14:18 ` Matt Fleming
2014-11-04 14:57 ` Andy Lutomirski
2014-11-04 15:40 ` Greg KH [this message]
2014-11-04 16:35 ` Andy Lutomirski
2014-11-06 12:53 ` Kweh, Hock Leong
2014-11-06 16:52 ` Andy Lutomirski
2014-11-10 8:31 ` Kweh, Hock Leong
2014-11-10 19:31 ` Andy Lutomirski
2014-11-08 13:05 ` Matt Fleming
2014-11-08 15:54 ` Andy Lutomirski
2015-02-27 5:06 ` Roy Franz
2015-02-27 11:35 ` Kweh, Hock Leong
2014-11-03 19:33 ` [PATCH v2 0/3] Enable user helper interface for efi capsule update Andy Lutomirski
2014-11-03 21:27 ` Greg Kroah-Hartman
2014-11-03 21:32 ` Andy Lutomirski
2014-11-03 23:02 ` Greg Kroah-Hartman
2014-11-03 23:08 ` Andy Lutomirski
2014-11-04 0:38 ` Greg Kroah-Hartman
2014-11-04 1:14 ` Andy Lutomirski
2014-11-04 14:07 ` Matt Fleming
2014-11-05 9:52 ` Kweh, Hock Leong
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=20141104154017.GA28113@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=boon.leong.ong@intel.com \
--cc=hock.leong.kweh@intel.com \
--cc=linux-efi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=matt.fleming@intel.com \
--cc=ming.lei@canonical.com \
--cc=semen.protsenko@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome