linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH v2 00/13] SCMI Notifications Core Support
@ 2020-02-14 15:35 Cristian Marussi
  2020-02-14 15:35 ` [RFC PATCH v2 01/13] firmware: arm_scmi: Add receive buffer support for notifications Cristian Marussi
                   ` (13 more replies)
  0 siblings, 14 replies; 23+ messages in thread
From: Cristian Marussi @ 2020-02-14 15:35 UTC (permalink / raw)
  To: linux-kernel, linux-arm-kernel
  Cc: sudeep.holla, lukasz.luba, james.quinlan, Jonathan.Cameron,
	cristian.marussi

Hi all,

this series wants to introduce SCMI Notification Support, built on top of
the standard Kernel notification chain subsystem.

At initialization time each SCMI Protocol takes care to register with the
new SCMI notification core the set of its own events which it intends to
support.

Using a possibly proposed API in include/linux/scmi_protocol.h (not
finalized though, NO EXPORTs_) a Kernel user can register its own
notifier_t callback (via a notifier_block as usual) against any registered
event as identified by the tuple:

		(proto_id, event_id, src_id)

where src_id represents a generic source identifier which is protocol
dependent like domain_id, performance_id, sensor_id and so forth.
(users can anyway do NOT provide any src_id, and subscribe instead to ALL
 the existing (if any) src_id sources for that proto_id/evt_id combination)

Each of the above tuple-specified event will be served on its own dedicated
blocking notification chain.

Upon a notification delivery all the users' registered notifier_t callbacks
will be in turn invoked and fed with the event_id as @action param and a
generated custom per-event struct _report as @data param.
(as in include/linux/scmi_protocol.h)

The final step of notification delivery via users' callback invocation is
instead delegated to a pool of deferred workers (Kernel cmwq): each
SCMI protocol has its own dedicated worker and dedicated queue to push
events from the rx ISR to the worker.

The series is marked as RFC mainly because:

- the API as said is tentative and not EXPORTed; currently consisting of a
  generic interface like:

 	 scmi_register_event_notifier(proto_id, evt_id, *src_id, *nb)

  as found in scmi_protocol.h, or using the equivalent 'handle' operations
  in scmi_notify_ops if used by an scmi_driver.

  It's open for discussion.

- no Event priorization has been considered: each protocol has its own
  queue and deferred worker instance, so as to avoid that one protocol
  flood can overrun a single queue and influence other protocols'
  notifications' delivery.
  But that's it, all the workers are unbound, low_pri cmwq workers.

  Should we enforce some sort of built-in prio amongst the events ?
  Should this priority instead be compile time configurable ?

  Again, open for discussion.

- no configuration is possible: it can be imagined that on a real platform
  events' priority (if any) and events queues' depth could be something
  somehow compile-time configurable, but this is not addressed by this
  series at all.

Based on scmi-next 5.6 [1], on top of:

commit 5c8a47a5a91d ("firmware: arm_scmi: Make scmi core independent of
		      the transport type")

This series has been tested on JUNO with an experimental firmware only
supporting Perf Notifications.

Any thoughts ?

Thanks

Cristian
----

v1 --> v2:
- dropped anti-tampering patch
- rebased on top of scmi-for-next-5.6, which includes Viresh series that
  make SCMI core independent of transport (5c8a47a5a91d)
- add a few new SCMI transport methods on top of Viresh patch to address
  needs of SCMI Notifications
- reviewed/renamed scmi_handle_xfer_delayed_resp()
- split main SCMI Notification core patch (~1k lines) into three chunks:
  protocol-registration / callbacks-registration / dispatch-and-delivery
- removed awkward usage of IDR maps in favour of pure hashtables
- added enable/disable refcounting in notification core (was broken in v1)
- removed per-protocol candidate API: a single generic API is now proposed
  instead of scmi_register_<proto>_event_notifier(evt_id, *src_id, *nb)
- added handle->notify_ops as an alternative notification API
  for scmi_driver
- moved ALL_SRCIDs enabled handling from protocol code to core code
- reviewed protocol registration/unregistration logic to use devres
- reviewed cleanup phase on shutdown
- fixed  ERROR: reference preceded by free as reported by kbuild test robot

[1] git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git

Cristian Marussi (10):
  firmware: arm_scmi: Add notifications support in transport layer
  firmware: arm_scmi: Add notification protocol-registration
  firmware: arm_scmi: Add notification callbacks-registration
  firmware: arm_scmi: Add notification dispatch and delivery
  firmware: arm_scmi: Enable notification core
  firmware: arm_scmi: Add Power notifications support
  firmware: arm_scmi: Add Perf notifications support
  firmware: arm_scmi: Add Sensor notifications support
  firmware: arm_scmi: Add Reset notifications support
  firmware: arm_scmi: Add Base notifications support

Sudeep Holla (3):
  firmware: arm_scmi: Add receive buffer support for notifications
  firmware: arm_scmi: Update protocol commands and notification list
  firmware: arm_scmi: Add support for notifications message processing

 drivers/firmware/arm_scmi/Makefile  |    2 +-
 drivers/firmware/arm_scmi/base.c    |  121 +++
 drivers/firmware/arm_scmi/bus.c     |   11 +
 drivers/firmware/arm_scmi/common.h  |   12 +
 drivers/firmware/arm_scmi/driver.c  |  118 ++-
 drivers/firmware/arm_scmi/mailbox.c |   17 +
 drivers/firmware/arm_scmi/notify.c  | 1102 +++++++++++++++++++++++++++
 drivers/firmware/arm_scmi/notify.h  |   78 ++
 drivers/firmware/arm_scmi/perf.c    |  140 +++-
 drivers/firmware/arm_scmi/power.c   |  133 +++-
 drivers/firmware/arm_scmi/reset.c   |  100 ++-
 drivers/firmware/arm_scmi/sensors.c |   77 +-
 drivers/firmware/arm_scmi/shmem.c   |   15 +
 include/linux/scmi_protocol.h       |  114 +++
 14 files changed, 2009 insertions(+), 31 deletions(-)
 create mode 100644 drivers/firmware/arm_scmi/notify.c
 create mode 100644 drivers/firmware/arm_scmi/notify.h

-- 
2.17.1


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2020-02-24 14:40 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-14 15:35 [RFC PATCH v2 00/13] SCMI Notifications Core Support Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 01/13] firmware: arm_scmi: Add receive buffer support for notifications Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 02/13] firmware: arm_scmi: Update protocol commands and notification list Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 03/13] firmware: arm_scmi: Add notifications support in transport layer Cristian Marussi
2020-02-17 10:49   ` Viresh Kumar
2020-02-14 15:35 ` [RFC PATCH v2 04/13] firmware: arm_scmi: Add support for notifications message processing Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 05/13] firmware: arm_scmi: Add notification protocol-registration Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 06/13] firmware: arm_scmi: Add notification callbacks-registration Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 07/13] firmware: arm_scmi: Add notification dispatch and delivery Cristian Marussi
2020-02-21 13:25   ` Lukasz Luba
2020-02-21 19:01     ` Cristian Marussi
2020-02-21 19:11       ` Lukasz Luba
2020-02-24  9:59         ` Lukasz Luba
2020-02-24 14:33           ` Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 08/13] firmware: arm_scmi: Enable notification core Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 09/13] firmware: arm_scmi: Add Power notifications support Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 10/13] firmware: arm_scmi: Add Perf " Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 11/13] firmware: arm_scmi: Add Sensor " Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 12/13] firmware: arm_scmi: Add Reset " Cristian Marussi
2020-02-14 15:35 ` [RFC PATCH v2 13/13] firmware: arm_scmi: Add Base " Cristian Marussi
2020-02-18 20:19 ` [RFC PATCH v2 00/13] SCMI Notifications Core Support Jim Quinlan
2020-02-19 17:43   ` Cristian Marussi
2020-02-24 14:40   ` Cristian Marussi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).