From: Takashi Iwai <tiwai@suse.de>
To: Ming Lei <ming.lei@canonical.com>
Cc: linux-kernel@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [PATCH 1/3] firmware: Avoid superfluous usermodehelper lock
Date: Thu, 09 May 2013 19:04:38 +0200 [thread overview]
Message-ID: <s5hd2t0xexl.wl%tiwai@suse.de> (raw)
In-Reply-To: <CACVXFVPRLiP3wFL6CZbKxS73JRDybtig83vhjQ6q-yoM8uLPyg@mail.gmail.com>
At Thu, 9 May 2013 16:43:28 +0800,
Ming Lei wrote:
>
> On Thu, May 9, 2013 at 3:31 PM, Takashi Iwai <tiwai@suse.de> wrote:
> > At Thu, 9 May 2013 09:25:35 +0800,
> > Ming Lei wrote:
> >>
> >> On Thu, May 9, 2013 at 1:51 AM, Takashi Iwai <tiwai@suse.de> wrote:
> >> >> In other words, the first patch is no essential part of the fix.
> >> >> I can revisit the second patch without this one and resend if
> >> >> preferred.
> >> >
> >> > FWIW, below is the revised patch.
> >> > It's alone without the patch 1 in the previous series.
> >>
> >> The root cause is that your user space loader doesn't follow the
> >> current firmware loader interface.
> >
> > There is not necessarily a user space "loader". It's declared as
> > non-hotplug, thus it can be a manual operation by human.
> >
> >> IMO, the patch is unnecessary since we already have the timeout
> >> abort(just need one patch to enable it for nowait api)
> >
> > Well, you cannot know any sane value for such human's operation.
> > If it's a system response, then we can assume something. But the
> > invocation of request_firmware_nowait() with non-hotplug means that
> > you can never know the actual use case, thus you cannot know any sane
>
> I think the use case should be driver specific, and the loading is triggered
> from user space in dell_rbu(write sysfs file to trigger BIOS update), so the
> user has been ready for loading the image.
Yes, it's ready, but it doesn't guarantee that it's done in which time
limit. That's the uncertain point in such an interface.
If it were hotplug via udev, we can assume some sane time limit.
But in a scenario like the above, with the manual intervention, we
can't know what is the sane value in a single manner.
> For another usage(lattice-ecp3-config.c), it is merged recently and very
> specific(maybe only for personal use), and can be easily to change to
> trigger loading from user space like dell.
>
> I think both the two usages choose FW_ACTION_NOHOTPLUG
> because they have out of tree firmware images. So looks enabling
> timeout won't be a big deal for them.
Yeah, but it's a guess.
So, in these use cases, the practical impact would be small, I agree.
Changing this (adding a timeout unconditionally) eases the shutdown
stall. But I still feel this is no essential fix, and in general,
changing the user-space behavior has to be done really carefully.
> > timeout, too.
> >
> > And secondly, I don't think it's good to rely on the timeout. Why
> > does the system have to wait for minute for shutdown? The system is
>
> It won't if the user space follows the rules.
Well... what rule? The kernel shutdown must be blocked when user
space doesn't write 0 or -1 to /sys/class/firmware/*/loading?
If you meant it, I would say that the rule is wrong. There is no big
reason to block the *kernel* shutdown by such an action.
We're handling the moment where the system should be really shut down,
already after all user-space things are synced and killed. For
example, would we delay the shutdown until all opened files are
closed even at this point? The kernel doesn't do so.
> > in shutdown, and it's triggered by user. It's more natural to abort
> > the pending f/w loading because you don't want to handle it any
> > longer after the system shuts down.
>
> There is still risk to force killing the loader before shutdown or
> suspend. Maybe some devices depend its firmware in shutdown
> or suspend callback to configure power setting.
The firmware loading is never guaranteed to succeed. If the abort of
f/w loading at shutdown would cause any problem, it means that the
driver is fundamentally buggy, and we must fix it inevitably anyway.
Of course, the suspend is a bit different issue. Maybe better to
retry the load after resume instead of forcibly aborting.
My point is that, if such critical kernel behavior like suspend or
shutdown rely on a timeout of user actions, it's badly designed.
thanks,
Takashi
next prev parent reply other threads:[~2013-05-09 17:04 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-08 6:56 [PATCH 0/3] firmware: Fix usermodehelper deadlock at shutdown Takashi Iwai
2013-05-08 6:56 ` [PATCH 1/3] firmware: Avoid superfluous usermodehelper lock Takashi Iwai
2013-05-08 15:52 ` Ming Lei
2013-05-08 16:21 ` Takashi Iwai
2013-05-08 16:37 ` Takashi Iwai
2013-05-08 17:51 ` Takashi Iwai
2013-05-09 1:25 ` Ming Lei
2013-05-09 7:31 ` Takashi Iwai
2013-05-09 8:43 ` Ming Lei
2013-05-09 17:04 ` Takashi Iwai [this message]
2013-05-10 1:25 ` Ming Lei
2013-05-10 9:32 ` Takashi Iwai
2013-05-11 13:01 ` Ming Lei
2013-05-12 7:20 ` Takashi Iwai
2013-05-12 13:32 ` Ming Lei
2013-05-13 14:48 ` Takashi Iwai
2013-05-12 13:59 ` Ming Lei
2013-05-13 15:04 ` Takashi Iwai
2013-05-08 6:56 ` [PATCH 2/3] firmware: Avoid deadlock of usermodehelper lock at shutdown Takashi Iwai
2013-05-08 15:56 ` Ming Lei
2013-05-08 16:15 ` Takashi Iwai
2013-05-09 1:19 ` Ming Lei
2013-05-09 7:34 ` Takashi Iwai
2013-05-08 6:56 ` [PATCH 3/3] dell_rbu: Select CONFIG_FW_LOADER_USER_HELPER explicitly Takashi Iwai
2013-05-08 15:42 ` [PATCH 0/3] firmware: Fix usermodehelper deadlock at shutdown Greg Kroah-Hartman
2013-05-08 15:48 ` Takashi Iwai
2013-05-08 15:59 ` Ming Lei
2013-05-08 16:07 ` Ming Lei
2013-05-08 16:26 ` Takashi Iwai
2013-05-08 18:46 ` Kay Sievers
2013-05-09 7:26 ` Takashi Iwai
2013-05-21 17:02 ` Greg Kroah-Hartman
2013-05-22 1:21 ` Ming Lei
2013-05-22 16:25 ` Takashi Iwai
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=s5hd2t0xexl.wl%tiwai@suse.de \
--to=tiwai@suse.de \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ming.lei@canonical.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