Re: [PATCH v5 0/4] Restructure the rpmsg char to decorrelate the control part.

From: Bjorn Andersson
Date: Fri Oct 08 2021 - 19:19:29 EST


On Mon 12 Jul 05:37 PDT 2021, Arnaud Pouliquen wrote:

> Main update from V4 [1]
> - complete commit messages with Reviewed-by: Mathieu Poirier <mathieu.poirier@xxxxxxxxxx>
> - rebased on kernel V.14-rc1.
>
> This series can be applied and tested on "Linux 5.14-rc1"(e73f0f0ee754) branch
>
> Series description:
> This series is the second step in the division of the series [2]:
> "Introducing a Generic IOCTL Interface for RPMsg Channel Management".
>
> The purpose of this patchset is to split the code related to the control
> and the endpoint. The code related to the control part is moved in the rpmsg_ctrl.c.

I'm not convinced about the merits for this refactoring, you're creating
yet another kernel module which is fairly tightly coupled with
the rpmsg_char kernel module and the only case I can see where this
would be useful is if you want to be able to create reach
RPMSG_CREATE_DEV_IOCTL and RPMSG_DESTROY_EPT_IOCTL without having to
include the rpmsg_char part in your kernel.

> This split is an intermediate step to extend the controls to allow user applications to
> instantiate rpmsg devices.
>

Can you give a concrete example of when this would be used?

Per our previous discussions I believe you intend to use this to bind
your rpmsg_tty driver to arbitrary channels in runtime, which to me
sounds like you're reinventing the bind/unbind sysfs attrs.

Regards,
Bjorn

> Notice that this patchset does not modify the behavior for using the RPMSG_CREATE_EPT_IOCTL
> and RPMSG_DESTROY_EPT_IOCTL controls.
>
> The next step should be to add the capability to:
> - instantiate rpmsg_chrdev from the remote side (NS announcement),
> - instantiate rpmsg_chrdev from local user application by introducing the
> IOCTLs RPMSG_CREATE_DEV_IOCTL and RPMSG_DESTROY_DEV_IOCTL to instantiate the rpmsg devices,
> - send a NS announcement to the remote side on rpmsg_chrdev local instantiation.
>
> [1]: https://patchwork.kernel.org/project/linux-remoteproc/list/?series=483793
> [2]: https://patchwork.kernel.org/project/linux-remoteproc/list/?series=435523
>
> Arnaud Pouliquen (4):
> rpmsg: char: Remove useless include
> rpmsg: char: Export eptdev create an destroy functions
> rpmsg: Move the rpmsg control device from rpmsg_char to rpmsg_ctrl
> rpmsg: Update rpmsg_chrdev_register_device function
>
> drivers/rpmsg/Kconfig | 9 ++
> drivers/rpmsg/Makefile | 1 +
> drivers/rpmsg/qcom_glink_native.c | 2 +-
> drivers/rpmsg/qcom_smd.c | 2 +-
> drivers/rpmsg/rpmsg_char.c | 184 ++-----------------------
> drivers/rpmsg/rpmsg_char.h | 51 +++++++
> drivers/rpmsg/rpmsg_ctrl.c | 215 ++++++++++++++++++++++++++++++
> drivers/rpmsg/rpmsg_internal.h | 8 +-
> drivers/rpmsg/virtio_rpmsg_bus.c | 2 +-
> 9 files changed, 293 insertions(+), 181 deletions(-)
> create mode 100644 drivers/rpmsg/rpmsg_char.h
> create mode 100644 drivers/rpmsg/rpmsg_ctrl.c
>
> --
> 2.17.1
>