Re: [RFC v0 7/8] Input: ims-pcu: use firmware_stat instead of completion

From: Daniel Wagner
Date: Tue Aug 02 2016 - 01:53:38 EST


Hi Luis,

I was ignorant on all the nasty details around the firmware loading.
If I parse Luis' patches correctly they introduce an API which calls
kernel_read_file_from_path() asynchronously:

sysdata_file_request_async(..., &cookie)
*coookie = async_schedule_domain(request_sysdata_file_work_func(), ..)

request_sysdata_file_work_fun()
_sysdata_file_request()
fw_get_filesystem_firmware()
kernel_read_file_from_path()

sysdata_synchronize_request(&cookie);

Doesn't look like what your asking for.

No, but its also a generic kernel read issue as I noted in my last
reply.

Okay, got it.

If we want to overhaul firmware loading support we need to figure
out how to support case when a driver want to [asynchronously] request
firmware/config/blob and the rest of the system is not ready. Even if we
want kernel to do read/load the data we need userspace to tell kernel
when firmware partition is available, until then the kernel should not
fail the request.

I gather from Luis' blog post and comments that he is on the quest
on removing userspace support completely.

No, I explained in my last proposed documentation patch series that we cannot
get rid of the usermode helper.

I stand corrected.

Its not well understood why so I explained and documented why.

Obviously, I got lost somewhere there :)

Best we can do is compartamentalize its uses.

Sounds like a plan.

The sysdata API's main goal rather is to provide a flexible API first,
compartamentalizing the usermode helper was secondary. But now it seems
I may just also add devm support too to help simplify code further.

I missed the point that you plan to add usermode helper support to the sysdata API.

What Dmitry notes is an existential issue with kernel_read_file_from_path()
and we need a common solution for it.

Understood. I guess best thing to keep that discussion in the other subthread.

Maybe this attempt here could be a step before. Step 1 would be
changing request_firmware_nowait() to request_firmware_async so
drivers don't have to come up with their own sync primitives, e.g.

cookie = request_firmware_async()
fw_load_wait(cookie)

That's one of the features already part of async mechanism of the sysdata API :)

Yes, I realized that too :)

cheers,
daniel

Thanks for the feedback.