Re: [PATCH 3/3] soc: qcom: mdt_loader: add offset to request_firmware_into_buf

From: Bjorn Andersson
Date: Mon May 27 2019 - 01:39:33 EST


On Thu 23 May 09:56 PDT 2019, Greg Kroah-Hartman wrote:

> On Thu, May 23, 2019 at 09:41:49AM -0700, Scott Branden wrote:
> > Hi Greg,
> >
> > On 2019-05-22 10:52 p.m., Greg Kroah-Hartman wrote:
> > > On Wed, May 22, 2019 at 07:51:13PM -0700, Scott Branden wrote:
> > > > Adjust request_firmware_into_buf API to allow for portions
> > > > of firmware file to be read into a buffer. mdt_loader still
> > > > retricts request fo whole file read into buffer.
> > > >
> > > > Signed-off-by: Scott Branden <scott.branden@xxxxxxxxxxxx>
> > > > ---
> > > > drivers/soc/qcom/mdt_loader.c | 7 +++++--
> > > > 1 file changed, 5 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/drivers/soc/qcom/mdt_loader.c b/drivers/soc/qcom/mdt_loader.c
> > > > index 1c488024c698..ad20d159699c 100644
> > > > --- a/drivers/soc/qcom/mdt_loader.c
> > > > +++ b/drivers/soc/qcom/mdt_loader.c
> > > > @@ -172,8 +172,11 @@ static int __qcom_mdt_load(struct device *dev, const struct firmware *fw,
> > > > if (phdr->p_filesz) {
> > > > sprintf(fw_name + fw_name_len - 3, "b%02d", i);
> > > > - ret = request_firmware_into_buf(&seg_fw, fw_name, dev,
> > > > - ptr, phdr->p_filesz);
> > > > + ret = request_firmware_into_buf
> > > > + (&seg_fw, fw_name, dev,
> > > > + ptr, phdr->p_filesz,
> > > > + 0,
> > > > + KERNEL_PREAD_FLAG_WHOLE);
> > > So, all that work in the first 2 patches for no real change at all? Why
> > > are these changes even needed?
> >
> > The first two patches allow partial read of files into memory.
> >
> > Existing kernel drivers haven't need such functionality so, yes, there
> > should be no real change
> >
> > with first two patches other than adding such partial file read support.
> >
> > We have a new driver in development which needs partial read of files
> > supported in the kernel.
>
> As I said before, I can not take new apis without any in-kernel user.
> So let's wait for your new code that thinks it needs this, and then we
> will be glad to evaluate all of this at that point in time.
>

The .mdt files are ELF files split to avoid having to allocate large
(5-60MB) chunks of temporary firmware buffers while installing the
segments.

But for multiple reasons it would be nice to be able to load the
non-split ELF files and the proposed interface would allow this.

So I definitely like the gist of the series.

> To do so otherwise is to have loads of unused "features" aquiring cruft
> in the kernel source, and you do not want that.
>

Agreed.

I'll take the opportunity and see if I can implement this (support for
non-split Qualcomm firmware) based on the patches in this series.

Regards,
Bjorn