[Intel-gfx] [PATCH] drm/i915: Show firmware URL once

Michal Wajdeczko michal.wajdeczko at intel.com
Mon Oct 23 13:06:26 UTC 2017


On Mon, 23 Oct 2017 14:15:06 +0200, Chris Wilson  
<chris at chris-wilson.co.uk> wrote:

> Quoting Michal Wajdeczko (2017-10-23 13:04:49)
>> On Sun, 22 Oct 2017 12:15:50 +0200, Chris Wilson
>> <chris at chris-wilson.co.uk> wrote:
>>
>> > Just show the firmware URL on the first failure, not every failure.
>> >
>> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
>> > Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
>> > Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
>> > ---
>> >  drivers/gpu/drm/i915/intel_csr.c   |  3 +--
>> >  drivers/gpu/drm/i915/intel_uc_fw.c | 13 +++++++++++--
>> >  drivers/gpu/drm/i915/intel_uc_fw.h |  5 ++---
>> >  3 files changed, 14 insertions(+), 7 deletions(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/intel_csr.c
>> > b/drivers/gpu/drm/i915/intel_csr.c
>> > index da9de47562b8..12a857acdb9b 100644
>> > --- a/drivers/gpu/drm/i915/intel_csr.c
>> > +++ b/drivers/gpu/drm/i915/intel_csr.c
>> > @@ -427,8 +427,7 @@ static void csr_load_work_fn(struct work_struct
>> > *work)
>> >                          "Failed to load DMC firmware %s."
>> >                          " Disabling runtime power management.\n",
>> >                          csr->fw_path);
>> > -             dev_notice(dev_priv->drm.dev, "DMC firmware homepage:  
>> %s",
>> > -                        INTEL_UC_FIRMWARE_URL);
>> > +             intel_uc_fw_show_url(dev_priv);
>> >       }
>> >       release_firmware(fw);
>> > diff --git a/drivers/gpu/drm/i915/intel_uc_fw.c
>> > b/drivers/gpu/drm/i915/intel_uc_fw.c
>> > index 973888e94cba..4ee90fda326b 100644
>> > --- a/drivers/gpu/drm/i915/intel_uc_fw.c
>> > +++ b/drivers/gpu/drm/i915/intel_uc_fw.c
>> > @@ -28,6 +28,16 @@
>> >  #include "intel_uc_fw.h"
>> >  #include "i915_drv.h"
>> > +/* Home of GuC, HuC and DMC firmwares */
>> > +#define INTEL_UC_FIRMWARE_URL
>> > "https://01.org/linuxgraphics/downloads/firmware"
>> > +
>> > +void intel_uc_fw_show_url(struct drm_i915_private *i915)
>> > +{
>> > +     dev_info_once(i915->drm.dev,
>> > +                   "Firmware can be downloaded from %s\n",
>> > +                   INTEL_UC_FIRMWARE_URL);
>> > +}
>> > +
>> >  /**
>> >   * intel_uc_fw_fetch - fetch uC firmware
>> >   *
>> > @@ -189,8 +199,7 @@ void intel_uc_fw_fetch(struct drm_i915_private
>> > *dev_priv,
>> >       DRM_WARN("%s: Failed to fetch firmware %s (error %d)\n",
>> >                intel_uc_fw_type_repr(uc_fw->type), uc_fw->path, err);
>> > -     DRM_INFO("%s: Firmware can be downloaded from %s\n",
>> > -              intel_uc_fw_type_repr(uc_fw->type),  
>> INTEL_UC_FIRMWARE_URL);
>> > +     intel_uc_fw_show_url(dev_priv);
>>
>> Hmm, intel_uc_fw_fetch() should be called only once per specific uC
>> and only as part of i915_driver_load() - so there shall be no repeated
>> fetch failures for the same uC.
>>
>> Also your changed message is little too generic (in old one we had uC
>> type, which may be helpful for the user).
>
> I had the same url multiple times; at different log levels, that was
> ugly. The url we give is the base for all firmwares, which one failed is
> given in the previous line (including expected version) so unless you
> plan on generating the url for the specific firmware, it is repeating
> itself.

Hmm, we can use query url (and this will work even without immediate  
support
 from 01.org site, user will just see homepage). Then your log will look  
like:

[    4.961005] i915 0000:00:02.0: Direct firmware load for  
i915/bxt_dmc_ver1_07.bin failed with error -2
[    4.961035] i915 0000:00:02.0: DMC firmware can be downloaded from:  
https://01.org/linuxgraphics/downloads/firmware?name=i915/bxt_dmc_ver1_07.bin
[    4.983194] i915 0000:00:02.0: Direct firmware load for  
i915/bxt_huc_ver01_07_1398.bin failed with error -2
[    4.983224] i915 0000:00:02.0: HuC firmware can be downloaded from:  
https://01.org/linuxgraphics/downloads/firmware?name=i915/bxt_huc_ver01_07_1398.bin

>
>> And in case of independent
>> fetch failures (lets say there is no DMC and HuC fw), we may wrongly
>> suggest that given url is for fw that failed first (DMC?), as messages
>>  from second failures (HuC) will not have such hint - user will have to
>> grep whole dmesg to guess that earlier url is applicable there too.
>
> Correct, but such warnings are clustered.

And they are clustered accidentally as DMC fw is loaded from separate
csr.work.

>
> [    4.961005] i915 0000:00:02.0: Direct firmware load for  
> i915/bxt_dmc_ver1_07.bin failed with error -2
> [    4.961028] i915 0000:00:02.0: Failed to load DMC firmware  
> i915/bxt_dmc_ver1_07.bin. Disabling runtime power management.
> [    4.961035] i915 0000:00:02.0: DMC firmware homepage:  
> https://01.org/linuxgraphics/downloads/firmware
> [    4.983194] i915 0000:00:02.0: Direct firmware load for  
> i915/bxt_huc_ver01_07_1398.bin failed with error -2
> [    4.983218] [drm] HuC: Failed to fetch firmware  
> i915/bxt_huc_ver01_07_1398.bin (error -2)
> [    4.983224] [drm] HuC: Firmware can be downloaded from  
> https://01.org/linuxgraphics/downloads/firmware
>
>> So can we limit this patch only to s/DRM_INFO/dev_notice ?
>
> This is info, not notice.

Correct.

> It's not a significant condition as that's the
> "ok, load failed, but we can survive with little change" before and this
> is just the information where to find the firmware (outside of their
> distro packing linux-firmwares which presumably was out of date).
> -Chris


More information about the Intel-gfx mailing list