From: Stanislaw Gruszka <sgruszka@redhat.com>
To: Prarit Bhargava <prarit@redhat.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Ming Lei <ming.lei@canonical.com>,
linux-wireless <linux-wireless@vger.kernel.org>,
ath10k <ath10k@lists.infradead.org>,
Kalle Valo <kvalo@qca.qualcomm.com>,
Michal Kazior <michal.kazior@tieto.com>,
Arend van Spriel <arend@broadcom.com>,
Emmanuel Grumbach <egrumbach@gmail.com>
Subject: Re: [RFC] ath10k: silence firmware file probing warnings
Date: Thu, 21 Jul 2016 13:51:24 +0200 [thread overview]
Message-ID: <20160721115122.GA31869@redhat.com> (raw)
In-Reply-To: <5790A28F.8030102@redhat.com>
(cc: firmware and brcmfmac maintainers)
On Thu, Jul 21, 2016 at 06:23:11AM -0400, Prarit Bhargava wrote:
>
>
> On 07/21/2016 04:05 AM, Stanislaw Gruszka wrote:
> > On Thu, Jul 21, 2016 at 10:36:42AM +0300, Emmanuel Grumbach wrote:
> >> On Thu, Jul 21, 2016 at 10:09 AM, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> >>> On Tue, Jul 19, 2016 at 03:00:37PM +0200, Michal Kazior wrote:
> >>>> Firmware files are versioned to prevent older
> >>>> driver instances to load unsupported firmware
> >>>> blobs. This is reflected with a fallback logic
> >>>> which attempts to load several firmware files.
> >>>>
> >>>> This however produced a lot of unnecessary
> >>>> warnings sometimes confusing users and leading
> >>>> them to rename firmware files making things even
> >>>> more confusing.
> >>>
> >>> This happens on kernels configured with
> >>> CONFIG_FW_LOADER_USER_HELPER_FALLBACK and cause not only ugly warnings,
> >>> but also 60 seconds delay before loading next firmware version.
> >>> For some reason RHEL kernel needs above config option, so this
> >>> patch is very welcome from my perspective.
> >>>
> >>
> >> Sorry for my ignorance but how does the firmware loading work if not
> >> with udev's help?
> >
> > I'm not sure exactly, but I think kernel VFS layer is capable to copy
> > file data directly from mounted filesystem without user space helper.
>
> Here's the situation: request_firmware() waits 60 seconds for udev to do its
> loading magic via a "usermode helper". This delay is there to allow, for
> example, userspace to unpack or download a new firmware image or verify the
> firmware image *in userspace* before providing it to the driver to apply to the HW.
>
> Why 60 seconds? It is arbitrary and there is no way for udev & the kernel to
> handshake on completion.
>
> >
> >> As you can imagine, iwlwifi is suffering from the
> >> same problem and I would be interested in applying the same change,
> >> but I'd love to understand a bit more :)
> >
> > Yes, iwlwifi (and some other drivers) suffer from this. However this
> > happen when the newest firmware version is not installed on the system
> > and CONFIG_FW_LOADER_USER_HELPER_FALLBACK is enabled. What I suppose
> > it's not common.
>
> request_firmware_direct() was introduced at my request because (as you've
> noticed) when CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y drivers may stall for long
> periods of time when starting. The bug that this introduced was a 60 second
> delay per logical cpu when starting a system. On a 64 cpu system that meant the
> boot would complete in a little over one hour.
>
> >
> > I started to see this currently, because that option was enabled on
> > RHEL kernel. BTW: I think Prarit iwlwifi thermal_zone problem was
> > happened because of that, i.e. thermal device was not functional
> > because f/w wasn't loaded due to big delay.
> >
> > I'm not sure if replacing to request_firmware_direct() is a good
> > fix though. For example I can see this problem also on brcmfmac, which
> > use request_firmware_nowait(). I think I would rather prefer special
> > helper for firmware drivers that needs user helper and have
> > request_firmware() be direct as default.
> >
>
> The difference between request_firmware_direct() and request_firmware() is that
> the _direct() version does not wait the 60 seconds for udev interaction. The
> only userspace check performed is to see if the file is there, and if the file
> does exist it is provided to the driver to be applied to the hardware.
>
> So the real question to ask here is whether or not the ath10k, brcmfmac, and
> iwlwifi require udev to do anything beyond checking for the existence and
> loading the firmware image. If they don't, then it is better to use
> request_firmware_direct().
They don't need that, like 99% of the drivers I think, hence changing the
default seems to be more reasonable. However changing 3 drivers would work
for me as well, and that change do not introduce risk of broking drivers
that require udev fw download.
iwlwifi and ath10k are trivial, bcrmfmac is a bit more complex as it
use request_firmware_nowait(), so it first need to be converted to
ordinary request_firmware(), but this should be doable and I can do
that.
However I wonder if changing that will not broke the case when
driver is build-in in the kernel and f/w is not yet available when
driver start to initialize. Or maybe nowadays this is not the case
any longer, i.e. the MODULE_FIRMWARE macros assure proper f/w
images are build-in in the kernel or copied to initramfs?
Thanks
Stanislaw
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
WARNING: multiple messages have this Message-ID (diff)
From: Stanislaw Gruszka <sgruszka@redhat.com>
To: Prarit Bhargava <prarit@redhat.com>
Cc: Emmanuel Grumbach <egrumbach@gmail.com>,
Michal Kazior <michal.kazior@tieto.com>,
Kalle Valo <kvalo@qca.qualcomm.com>,
linux-wireless <linux-wireless@vger.kernel.org>,
ath10k <ath10k@lists.infradead.org>,
Arend van Spriel <arend@broadcom.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Ming Lei <ming.lei@canonical.com>
Subject: Re: [RFC] ath10k: silence firmware file probing warnings
Date: Thu, 21 Jul 2016 13:51:24 +0200 [thread overview]
Message-ID: <20160721115122.GA31869@redhat.com> (raw)
In-Reply-To: <5790A28F.8030102@redhat.com>
(cc: firmware and brcmfmac maintainers)
On Thu, Jul 21, 2016 at 06:23:11AM -0400, Prarit Bhargava wrote:
>
>
> On 07/21/2016 04:05 AM, Stanislaw Gruszka wrote:
> > On Thu, Jul 21, 2016 at 10:36:42AM +0300, Emmanuel Grumbach wrote:
> >> On Thu, Jul 21, 2016 at 10:09 AM, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> >>> On Tue, Jul 19, 2016 at 03:00:37PM +0200, Michal Kazior wrote:
> >>>> Firmware files are versioned to prevent older
> >>>> driver instances to load unsupported firmware
> >>>> blobs. This is reflected with a fallback logic
> >>>> which attempts to load several firmware files.
> >>>>
> >>>> This however produced a lot of unnecessary
> >>>> warnings sometimes confusing users and leading
> >>>> them to rename firmware files making things even
> >>>> more confusing.
> >>>
> >>> This happens on kernels configured with
> >>> CONFIG_FW_LOADER_USER_HELPER_FALLBACK and cause not only ugly warnings,
> >>> but also 60 seconds delay before loading next firmware version.
> >>> For some reason RHEL kernel needs above config option, so this
> >>> patch is very welcome from my perspective.
> >>>
> >>
> >> Sorry for my ignorance but how does the firmware loading work if not
> >> with udev's help?
> >
> > I'm not sure exactly, but I think kernel VFS layer is capable to copy
> > file data directly from mounted filesystem without user space helper.
>
> Here's the situation: request_firmware() waits 60 seconds for udev to do its
> loading magic via a "usermode helper". This delay is there to allow, for
> example, userspace to unpack or download a new firmware image or verify the
> firmware image *in userspace* before providing it to the driver to apply to the HW.
>
> Why 60 seconds? It is arbitrary and there is no way for udev & the kernel to
> handshake on completion.
>
> >
> >> As you can imagine, iwlwifi is suffering from the
> >> same problem and I would be interested in applying the same change,
> >> but I'd love to understand a bit more :)
> >
> > Yes, iwlwifi (and some other drivers) suffer from this. However this
> > happen when the newest firmware version is not installed on the system
> > and CONFIG_FW_LOADER_USER_HELPER_FALLBACK is enabled. What I suppose
> > it's not common.
>
> request_firmware_direct() was introduced at my request because (as you've
> noticed) when CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y drivers may stall for long
> periods of time when starting. The bug that this introduced was a 60 second
> delay per logical cpu when starting a system. On a 64 cpu system that meant the
> boot would complete in a little over one hour.
>
> >
> > I started to see this currently, because that option was enabled on
> > RHEL kernel. BTW: I think Prarit iwlwifi thermal_zone problem was
> > happened because of that, i.e. thermal device was not functional
> > because f/w wasn't loaded due to big delay.
> >
> > I'm not sure if replacing to request_firmware_direct() is a good
> > fix though. For example I can see this problem also on brcmfmac, which
> > use request_firmware_nowait(). I think I would rather prefer special
> > helper for firmware drivers that needs user helper and have
> > request_firmware() be direct as default.
> >
>
> The difference between request_firmware_direct() and request_firmware() is that
> the _direct() version does not wait the 60 seconds for udev interaction. The
> only userspace check performed is to see if the file is there, and if the file
> does exist it is provided to the driver to be applied to the hardware.
>
> So the real question to ask here is whether or not the ath10k, brcmfmac, and
> iwlwifi require udev to do anything beyond checking for the existence and
> loading the firmware image. If they don't, then it is better to use
> request_firmware_direct().
They don't need that, like 99% of the drivers I think, hence changing the
default seems to be more reasonable. However changing 3 drivers would work
for me as well, and that change do not introduce risk of broking drivers
that require udev fw download.
iwlwifi and ath10k are trivial, bcrmfmac is a bit more complex as it
use request_firmware_nowait(), so it first need to be converted to
ordinary request_firmware(), but this should be doable and I can do
that.
However I wonder if changing that will not broke the case when
driver is build-in in the kernel and f/w is not yet available when
driver start to initialize. Or maybe nowadays this is not the case
any longer, i.e. the MODULE_FIRMWARE macros assure proper f/w
images are build-in in the kernel or copied to initramfs?
Thanks
Stanislaw
next prev parent reply other threads:[~2016-07-21 11:52 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-19 13:00 [RFC] ath10k: silence firmware file probing warnings Michal Kazior
2016-07-19 13:00 ` Michal Kazior
2016-07-21 7:09 ` Stanislaw Gruszka
2016-07-21 7:09 ` Stanislaw Gruszka
2016-07-21 7:36 ` Emmanuel Grumbach
2016-07-21 7:36 ` Emmanuel Grumbach
2016-07-21 8:05 ` Stanislaw Gruszka
2016-07-21 8:05 ` Stanislaw Gruszka
2016-07-21 10:23 ` Prarit Bhargava
2016-07-21 10:23 ` Prarit Bhargava
2016-07-21 11:51 ` Stanislaw Gruszka [this message]
2016-07-21 11:51 ` Stanislaw Gruszka
2016-07-21 12:01 ` Prarit Bhargava
2016-07-21 12:01 ` Prarit Bhargava
2016-07-22 8:38 ` Arend Van Spriel
2016-07-22 8:38 ` Arend Van Spriel
2016-07-22 10:26 ` Stanislaw Gruszka
2016-07-22 10:26 ` Stanislaw Gruszka
2016-07-22 12:21 ` Arend Van Spriel
2016-07-22 12:21 ` Arend Van Spriel
2016-07-22 12:51 ` Prarit Bhargava
2016-07-22 12:51 ` Prarit Bhargava
2016-07-22 22:19 ` Luis R. Rodriguez
2016-07-22 22:19 ` Luis R. Rodriguez
2016-07-25 7:51 ` Emmanuel Grumbach
2016-07-25 7:51 ` Emmanuel Grumbach
2016-07-22 22:15 ` Luis R. Rodriguez
2016-07-22 22:15 ` Luis R. Rodriguez
2016-07-28 19:23 ` Arend van Spriel
2016-07-28 19:23 ` Arend van Spriel
2016-08-02 11:10 ` Valo, Kalle
2016-08-02 11:10 ` Valo, Kalle
2016-08-02 14:16 ` Luis R. Rodriguez
2016-08-02 14:16 ` Luis R. Rodriguez
2016-08-03 11:33 ` Arend van Spriel
2016-08-03 11:33 ` Arend van Spriel
2016-08-03 14:21 ` Luis R. Rodriguez
2016-08-03 14:21 ` Luis R. Rodriguez
2016-08-03 15:04 ` Valo, Kalle
2016-08-03 15:04 ` Valo, Kalle
2016-08-03 17:10 ` Luis R. Rodriguez
2016-08-03 17:10 ` Luis R. Rodriguez
2016-08-03 19:19 ` Arend van Spriel
2016-08-03 19:19 ` Arend van Spriel
2016-07-22 22:05 ` Luis R. Rodriguez
2016-07-22 22:05 ` Luis R. Rodriguez
2016-07-28 19:23 ` Arend van Spriel
2016-07-28 19:23 ` Arend van Spriel
2016-07-28 23:28 ` Luis R. Rodriguez
2016-07-28 23:28 ` Luis R. Rodriguez
2016-08-02 11:18 ` Valo, Kalle
2016-08-02 11:18 ` Valo, Kalle
2016-08-02 11:24 ` Felix Fietkau
2016-08-02 11:24 ` Felix Fietkau
2017-01-20 12:51 ` Kalle Valo
2017-01-20 12:51 ` Kalle Valo
2017-01-20 12:56 ` Michal Kazior
2017-01-20 12:56 ` Michal Kazior
2017-01-31 15:02 ` Kalle Valo
2017-01-31 15:02 ` Kalle Valo
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=20160721115122.GA31869@redhat.com \
--to=sgruszka@redhat.com \
--cc=arend@broadcom.com \
--cc=ath10k@lists.infradead.org \
--cc=egrumbach@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=kvalo@qca.qualcomm.com \
--cc=linux-wireless@vger.kernel.org \
--cc=michal.kazior@tieto.com \
--cc=ming.lei@canonical.com \
--cc=prarit@redhat.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.