From: Greg KH <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
To: Andy Lutomirski <luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>
Cc: Matt Fleming
<matt.fleming-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Sam Protsenko
<semen.protsenko-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
"Kweh,
Hock Leong"
<hock.leong.kweh-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"Ong,
Boon Leong"
<boon.leong.ong-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
"linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Ming Lei <ming.lei-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
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-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On Tue, Nov 04, 2014 at 06:57:21AM -0800, Andy Lutomirski wrote:
> On Nov 4, 2014 6:18 AM, "Matt Fleming" <matt.fleming-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 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
WARNING: multiple messages have this Message-ID (diff)
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:40 UTC|newest]
Thread overview: 70+ 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 ` Kweh Hock Leong
2014-11-03 3:07 ` [PATCH v2 1/3] firmware loader: Introduce new API - request_firmware_abort() Kweh Hock Leong
[not found] ` <1414984030-13859-2-git-send-email-hock.leong.kweh-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-03 10:15 ` Henrique de Moraes Holschuh
2014-11-03 10:15 ` Henrique de Moraes Holschuh
[not found] ` <20141103101558.GA11739-ZGHd14iZgfaRjzvQDGKj+xxZW9W5cXbT@public.gmane.org>
2014-11-03 12:07 ` Matt Fleming
2014-11-03 12:07 ` Matt Fleming
2014-11-08 19:06 ` Greg Kroah-Hartman
2014-11-08 19:06 ` Greg Kroah-Hartman
[not found] ` <20141108190655.GA2638-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-11-13 2:51 ` Kweh, Hock Leong
2014-11-13 2:51 ` Kweh, Hock Leong
2014-11-17 15:12 ` Matt Fleming
[not found] ` <20141117151211.GB6810-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2014-11-18 6:31 ` Kweh, Hock Leong
2014-11-18 6:31 ` Kweh, Hock Leong
[not found] ` <F54AEECA5E2B9541821D670476DAE19C2B85DA57-j2khPEwRog0FyVwBAnZdSLfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-19 2:05 ` Greg Kroah-Hartman
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
[not found] ` <1414984030-13859-3-git-send-email-hock.leong.kweh-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-08 19:07 ` Greg Kroah-Hartman
2014-11-08 19:07 ` Greg Kroah-Hartman
[not found] ` <1414984030-13859-1-git-send-email-hock.leong.kweh-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-03 3:07 ` [PATCH v2 3/3] efi: Capsule update with user helper interface Kweh Hock Leong
2014-11-03 3:07 ` Kweh Hock Leong
[not found] ` <1414984030-13859-4-git-send-email-hock.leong.kweh-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-04 4:32 ` Greg Kroah-Hartman
2014-11-04 4:32 ` Greg Kroah-Hartman
[not found] ` <20141104043247.GA23418-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-11-04 5:20 ` Andy Lutomirski
2014-11-04 5:20 ` Andy Lutomirski
[not found] ` <CALCETrXjJju+cMWJfB6W5kSD=Ox5y+Hj_AfmbbbOTOh8CV8eaQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-04 6:04 ` Kweh, Hock Leong
2014-11-04 6:04 ` Kweh, Hock Leong
[not found] ` <F54AEECA5E2B9541821D670476DAE19C2B80EAE4-j2khPEwRog0FyVwBAnZdSLfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-04 6:32 ` Andy Lutomirski
2014-11-04 6:32 ` Andy Lutomirski
[not found] ` <CALCETrU2wk_FdcD6E+oMcp-tF97zN7f+w7q5rfPWBaNKrrmxVg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-04 8:03 ` Kweh, Hock Leong
2014-11-04 8:03 ` Kweh, Hock Leong
2014-11-04 14:18 ` Matt Fleming
2014-11-04 14:18 ` Matt Fleming
[not found] ` <1415110688.26277.36.camel-ZqTwcBeJ+wsBof6jY8KHXm7IUlhRatedral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-04 14:57 ` Andy Lutomirski
2014-11-04 14:57 ` Andy Lutomirski
[not found] ` <CALCETrW1UaOCcb-32SOUhi_Zh5vLzV+VwyffThVvso23z04SHA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-04 15:40 ` Greg KH [this message]
2014-11-04 15:40 ` Greg KH
[not found] ` <20141104154017.GA28113-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-11-04 16:35 ` Andy Lutomirski
2014-11-04 16:35 ` Andy Lutomirski
2014-11-06 12:53 ` Kweh, Hock Leong
2014-11-06 12:53 ` Kweh, Hock Leong
2014-11-06 16:52 ` Andy Lutomirski
[not found] ` <CALCETrUi0ssZbOpHyVmh6jx68Oj=0h4BwfM0uLio8Qbaeu9gJw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-10 8:31 ` Kweh, Hock Leong
2014-11-10 8:31 ` Kweh, Hock Leong
[not found] ` <F54AEECA5E2B9541821D670476DAE19C2B851058-j2khPEwRog0FyVwBAnZdSLfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-10 19:31 ` Andy Lutomirski
2014-11-10 19:31 ` Andy Lutomirski
2014-11-08 13:05 ` Matt Fleming
[not found] ` <20141108130556.GM3592-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2014-11-08 15:54 ` Andy Lutomirski
2014-11-08 15:54 ` Andy Lutomirski
2015-02-27 5:06 ` Roy Franz
2015-02-27 5:06 ` Roy Franz
[not found] ` <CAFECyb-JhpFm4WcWL8NU8zbK=xphGtG=B7q0PLhffmYDV-a_PQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-02-27 11:35 ` Kweh, Hock Leong
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
[not found] ` <5457D883.4050201-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>
2014-11-03 21:27 ` Greg Kroah-Hartman
2014-11-03 21:27 ` Greg Kroah-Hartman
[not found] ` <20141103212706.GE7379-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-11-03 21:32 ` Andy Lutomirski
2014-11-03 21:32 ` Andy Lutomirski
[not found] ` <CALCETrUNCuFvwkzbU4dWB0GH4mJKKV1e6jCNrSLVJe+n_et3kQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-03 23:02 ` Greg Kroah-Hartman
2014-11-03 23:02 ` Greg Kroah-Hartman
[not found] ` <20141103230234.GA9427-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-11-03 23:08 ` Andy Lutomirski
2014-11-03 23:08 ` Andy Lutomirski
[not found] ` <CALCETrUtxqLaziC_f6iTEgKNhmTgJR6bOLJ=e=O22X_RsBc9sw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-04 0:38 ` Greg Kroah-Hartman
2014-11-04 0:38 ` Greg Kroah-Hartman
[not found] ` <20141104003849.GA15147-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-11-04 1:14 ` Andy Lutomirski
2014-11-04 1:14 ` Andy Lutomirski
2014-11-04 14:07 ` Matt Fleming
2014-11-04 14:07 ` Matt Fleming
[not found] ` <1415110071.26277.28.camel-ZqTwcBeJ+wsBof6jY8KHXm7IUlhRatedral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-05 9:52 ` Kweh, Hock Leong
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-hqyy1w1ycw8ekmwlsbkhg0b+6bgklq7r@public.gmane.org \
--cc=boon.leong.ong-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=hock.leong.kweh-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org \
--cc=matt.fleming-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=ming.lei-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org \
--cc=semen.protsenko-QSEj5FYQhm4dnm+yROfE0A@public.gmane.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.