Re: [PATCH v8 3/9] firmware: arm_scmi: Add notification dispatch and delivery

From: Lukasz Luba
Date: Thu Jun 18 2020 - 04:37:23 EST




On 6/18/20 12:31 AM, Cristian Marussi wrote:
On Mon, Jun 08, 2020 at 06:03:46PM +0100, Sudeep Holla wrote:
On Wed, May 20, 2020 at 09:11:12AM +0100, Cristian Marussi wrote:
Add core SCMI Notifications dispatch and delivery support logic which is
able, at first, to dispatch well-known received events from the RX ISR to
the dedicated deferred worker, and then, from there, to final deliver the
events to the registered users' callbacks.

Dispatch and delivery is just added here, still not enabled.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
Signed-off-by: Cristian Marussi <cristian.marussi@xxxxxxx>
---
drivers/firmware/arm_scmi/notify.c | 354 ++++++++++++++++++++++++++++-
drivers/firmware/arm_scmi/notify.h | 10 +
2 files changed, 362 insertions(+), 2 deletions(-)

diff --git a/drivers/firmware/arm_scmi/notify.c b/drivers/firmware/arm_scmi/notify.c
index 7cf61dbe2a8e..d582f71fde5b 100644
--- a/drivers/firmware/arm_scmi/notify.c
+++ b/drivers/firmware/arm_scmi/notify.c

[...]

@@ -1085,6 +1422,12 @@ int scmi_notification_init(struct scmi_handle *handle)
ni->gid = gid;
ni->handle = handle;
+ ni->notify_wq = alloc_workqueue("scmi_notify",
+ WQ_UNBOUND | WQ_FREEZABLE | WQ_SYSFS,
+ 0);

What's the use of WQ_SYSFS for SCMI notifications ? Do we need it ?


Lukasz asked for it, when we were talking about workqueues' priorities configurability.
(not implemented in this series)

I confirm, I've asked if we can have a mechanism to control these
workqueues. They will be running concurrently with other CFS
tasks which could cause delays for them. They could also be scheduled
on a random core: big or little (depends on its utilization) but maybe
we would like to pin them explicitly to some cores, i.e
little only. We have also discussed a possible mechanism based on RT
threads (which could avoid CFS delays), but that would require a lot of
changes, so this flag here gives us some control.
But if you decide to remove this flag, we would probably find a solution
using uclamp or similar when needed.

Regards,
Lukasz


Thanks

Cristian
--
Regards,
Sudeep