Re: [PATCH v3 18/19] firmware: Add request_partial_firmware_into_buf()

Takashi Iwai
2020-07-29T06:22:23Z

On Wed, 29 Jul 2020 03:17:39 +0200,
Luis Chamberlain wrote:
>
> Long ago Takashi had some points about this strategy breaking
> compressed file use. Was that considered?

As long as I read the patch, it tries to skip both the compressed and
the fallback loading when FW_OPT_PARTIAL is set, which is good.

However...

> > @@ -771,18 +805,20 @@ _request_firmware(const struct firmware **firmware_p, const char *name,
> > }
> >
> > ret = _request_firmware_prepare(&fw, name, device, buf, size,
> > - opt_flags);
> > + offset, opt_flags);
> > if (ret <= 0) /* error or already assigned */
> > goto out;
> >
> > ret = fw_get_filesystem_firmware(device, fw->priv, "", NULL);
> > -#ifdef CONFIG_FW_LOADER_COMPRESS
> > - if (ret == -ENOENT)
> > +
> > + /* Only full reads can support decompression, platform, and sysfs. */
> > + if (!(opt_flags & FW_OPT_PARTIAL))
> > + nondirect = true;
> > +
> > + if (ret == -ENOENT && nondirect)
> > ret = fw_get_filesystem_firmware(device, fw->priv, ".xz",
> > fw_decompress_xz);
> > -#endif

... by dropping this ifdef, the fw loader would try to access *.xz
file unnecessarily even if CONFIG_FW_LOADER_COMPRESS is disabled.

thanks,

Takashi