Re: [PATCH] soc: qmi: allow user to set handle wq to hiprio
From: Alex Elder
Date: Wed Aug 05 2020 - 15:57:44 EST
On 8/2/20 8:14 AM, 王文虎 wrote:
>>> Currently the qmi_handle is initialized single threaded and strictly
>>> ordered with the active set to 1. This is pretty simple and safe but
>>> sometimes ineffency. So it is better to allow user to decide whether
>>> a high priority workqueue should be used.
>> Can you please describe a scenario where this is needed/desired and
>> perhaps also comment on why this is not always desired?
> Well, one scenario is that when the AP wants to check the status of the
> subsystems and the whole QMI data path. It first sends out an indication
> which asks the subsystems to report their status. After the subsystems send
> responses to the AP, the responses then are queued on the workqueue of
> the QMI handler. Actually the AP is configured to do the check in a specific
> interval regularly. And it check the report counts within a specific delay after
> it sends out the related indication. When the AP has been under a heavy
> load for long, the reports are queue their without CPU resource to update
> the report counts within the specific delay. As a result, the thread that checks
> the report counts takes it misleadingly that the QMI data path or the subsystems
> are crashed.
> The patch can really resolve the problem mentioned abolve.
Is it your intention to submit code that actually does what you describe
above? If so, then (as David said) you should propose this change at
the time it will be needed--which is at the time you send that new
code out for review.
Even in that case, I don't believe using a high priority workqueue
would guarantee the improved behavior you think this would provide.
In case it wasn't clear already, this change won't be accepted
at this time (despite your explanation above).
> For narmal situations, it is enough to just use normal priority QMI workqueue.
>>> Signed-off-by: Wang Wenhu <wenhu.wang@xxxxxxxx>
>>> drivers/net/ipa/ipa_qmi.c | 4 ++--
>>> drivers/net/wireless/ath/ath10k/qmi.c | 2 +-
>>> drivers/net/wireless/ath/ath11k/qmi.c | 2 +-
>>> drivers/remoteproc/qcom_sysmon.c | 2 +-
>>> drivers/slimbus/qcom-ngd-ctrl.c | 4 ++--
>>> drivers/soc/qcom/pdr_interface.c | 4 ++--
>>> drivers/soc/qcom/qmi_interface.c | 9 +++++++--
>>> include/linux/soc/qcom/qmi.h | 3 ++-
>>> samples/qmi/qmi_sample_client.c | 4 ++--
>>> 9 files changed, 20 insertions(+), 14 deletions(-)