linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/15] introduce a generic IOCTL interface for RPMsg channels management
@ 2021-02-04  8:45 Arnaud Pouliquen
  2021-02-04  8:45 ` [PATCH v3 01/15] rpmsg: char: rename rpmsg_char_init to rpmsg_chrdev_init Arnaud Pouliquen
                   ` (14 more replies)
  0 siblings, 15 replies; 21+ messages in thread
From: Arnaud Pouliquen @ 2021-02-04  8:45 UTC (permalink / raw)
  To: Bjorn Andersson, Ohad Ben-Cohen, Mathieu Poirier, Andy Gross
  Cc: linux-remoteproc, linux-kernel, linux-stm32, linux-arm-msm,
	arnaud.pouliquen

This series restructures the RPMsg char driver to decorrelate the control part and to
create a generic RPMsg ioctl interface compatible with other RPMsg services.

The V3 is based on the guideline proposed by Mathieu Poirier to keep as much as possible
the legacy implementation of the rpmsg_char used by the GLINK and SMD platforms.


Objectives of the series:
- Allow to create a service from Linux user application:
  - with a specific name
  - with or without name service announcement.
- Allow to probe the same service by receiving either a NS announcement from the remote firmware
  or a Linux user application request.
- Use these services independently of the RPMsg transport implementation (e.g be able to use
  RPMSg char with the RPMsg virtio bus).

Steps in the series:
  - Extract the control part of the char dev and create the rpmsg_ctrl.c file (patches 1 to 5)
  - Enable the use of the chardev with the virtio backend (patches 6 to 10)
  - Introduce the RPMSG_CREATE_DEV_IOCTL IOCTL to instantiate RPMsg devices (patch 11)
    The application can then create or release a channel by specifying:
       - the name service of the device to instantiate.   
       - the source address.
       - the destination address.
  - Instantiate the /dev/rpmsg interface on remote NS announcement (patches 12 to 15)

In this revision, I do not divide the series into several parts in order to show a complete
picture of the proposed evolution. To simplify the review, as a next step, I can send it in
several steps listed above.

Known current Limitations:
- Tested only with virtio RPMsg bus. The glink and smd drivers adaptations have not been tested
  (not able to test it).
- For the virtio backend: No NS announcement is sent to the remote processor if the source
  address is set to RPMSG_ADDR_ANY.
- For the virtio backend: the existing RPMSG_CREATE_EPT_IOCTL is working but the endpoints are
  not attached to an exiting channel.

This series can be tested on top of the v5.11-rc5 (6ee1d745b7c9).

This series can be tested using rpmsgexport, rpmsgcreatedev and ping tools available here:
https://github.com/arnopo/rpmsgexport.git

Reference to the V2 discussion thread: https://lkml.org/lkml/2020/12/22/207

Arnaud Pouliquen (15):
  rpmsg: char: rename rpmsg_char_init to rpmsg_chrdev_init
  rpmsg: move RPMSG_ADDR_ANY in user API and document the API
  rpmsg: char: export eptdev create an destroy functions
  rpmsg: char: dissociate the control device from the rpmsg class
  rpmsg: move the rpmsg control device from rpmsg_char to rpmsg_ctrl
  rpmsg: update rpmsg_chrdev_register_device function
  rpmsg: virtio: probe the rpmsg_ctrl device
  rpmsg: glink: add sendto and trysendto ops
  rpmsg: smd: add sendto and trysendto ops
  rpmsg: char: use sendto to specify the message destination address
  rpmsg: ctrl: introduce RPMSG_CREATE_DEV_IOCTL
  rpmsg: char: introduce __rpmsg_chrdev_create_eptdev function
  rpmsg: char: introduce a RPMsg driver for the RPmsg char device
  rpmsg: char: no dynamic endpoint management for the default one
  rpmsg: char: return an error if device already open

 drivers/rpmsg/Kconfig             |   9 ++
 drivers/rpmsg/Makefile            |   1 +
 drivers/rpmsg/qcom_glink_native.c |  18 ++-
 drivers/rpmsg/qcom_smd.c          |  18 ++-
 drivers/rpmsg/rpmsg_char.c        | 237 +++++++++++-----------------
 drivers/rpmsg/rpmsg_char.h        |  51 ++++++
 drivers/rpmsg/rpmsg_ctrl.c        | 247 ++++++++++++++++++++++++++++++
 drivers/rpmsg/rpmsg_internal.h    |  10 +-
 drivers/rpmsg/virtio_rpmsg_bus.c  |  37 ++++-
 include/linux/rpmsg.h             |   3 +-
 include/uapi/linux/rpmsg.h        |  18 ++-
 11 files changed, 483 insertions(+), 166 deletions(-)
 create mode 100644 drivers/rpmsg/rpmsg_char.h
 create mode 100644 drivers/rpmsg/rpmsg_ctrl.c

-- 
2.17.1


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

end of thread, other threads:[~2021-02-05  8:24 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-04  8:45 [PATCH v3 00/15] introduce a generic IOCTL interface for RPMsg channels management Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 01/15] rpmsg: char: rename rpmsg_char_init to rpmsg_chrdev_init Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 02/15] rpmsg: move RPMSG_ADDR_ANY in user API and document the API Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 03/15] rpmsg: char: export eptdev create an destroy functions Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 04/15] rpmsg: char: dissociate the control device from the rpmsg class Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 05/15] rpmsg: move the rpmsg control device from rpmsg_char to rpmsg_ctrl Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 06/15] rpmsg: update rpmsg_chrdev_register_device function Arnaud Pouliquen
2021-02-04 12:44   ` kernel test robot
2021-02-04 15:11     ` Arnaud POULIQUEN
2021-02-04 16:53       ` Mathieu Poirier
2021-02-05  8:21         ` Arnaud POULIQUEN
2021-02-04  8:45 ` [PATCH v3 07/15] rpmsg: virtio: probe the rpmsg_ctrl device Arnaud Pouliquen
2021-02-04 11:35   ` kernel test robot
2021-02-04  8:45 ` [PATCH v3 08/15] rpmsg: glink: add sendto and trysendto ops Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 09/15] rpmsg: smd: " Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 10/15] rpmsg: char: use sendto to specify the message destination address Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 11/15] rpmsg: ctrl: introduce RPMSG_CREATE_DEV_IOCTL Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 12/15] rpmsg: char: introduce __rpmsg_chrdev_create_eptdev function Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 13/15] rpmsg: char: introduce a RPMsg driver for the RPmsg char device Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 14/15] rpmsg: char: no dynamic endpoint management for the default one Arnaud Pouliquen
2021-02-04  8:45 ` [PATCH v3 15/15] rpmsg: char: return an error if device already open Arnaud Pouliquen

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).