On 3/25/22 18:27, Mathieu Poirier wrote: > On Fri, 25 Mar 2022 at 11:05, Arnaud POULIQUEN > <arnaud.pouliquen@xxxxxxxxxxx> wrote: >> >> >> >> On 3/25/22 16:59, Mathieu Poirier wrote: >>> On Thu, Mar 24, 2022 at 06:36:23PM +0100, Arnaud POULIQUEN wrote: >>>> Hi Bjorn, >>>> >>>> On 1/24/22 11:25, Arnaud Pouliquen wrote: >>>>> Updates from V8 [1]: >>>>> - rebase on 5.17-rc1 + rpmsg char cdev release fixes[2][3] >>>>> - updates based on Bjorn Andersson's comments: >>>>> - remove rpmsg_create_default_ept API, set directly the ept->priv in rpmsg_chrdev_probe >>>>> function. >>>>> - rework commit message in [8/9]rpmsg: char: Introduce the "rpmsg-raw" channel >>>>> >>>>> Patchset description: >>>>> >>>>> The current rpmsg_char module implements a /dev/rpmsg_ctrl interface that provides the ability to >>>>> instantiate char devices (/dev/rpmsgX) associated with an rpmsg endpoint for communication with the >>>>> remote processor. >>>>> This implementation fits with QCOM rpmsg backend but not with the magement by chanel implemented >>>>> in the generic rpmsg virtio backend. >>>>> This series restructures the rpmsg_char driver to decorrelate the control part from the data part >>>>> in order to improve its compatible with the rpmsg virtio backend. >>>>> >>>>> Objective: >>>>> - Expose a /dev/rpmsg_ctrlX interface for the application that is no longer dedicated to the >>>>> rpmsg_char but generalized to all rpmsg services. This offers capability to create and destroy >>>>> rpmsg channels from a user's application initiative (using the new RPMSG_CREATE_DEV_IOCTL and >>>>> RPMSG_DESTROY_DEV_IOCTL controls). >>>>> An application will be able to create/establish an rpmsg communication channel to communicate >>>>> with the remote processor, and not only wait the remote processor initiative. >>>>> This is interesting for example to establish a temporary communication link for diagnosis, >>>>> calibration, debugging... or instantiate new data flows on some user actions. >>>>> - Add capability to probe the rpmsg_char device at the initiative of the remote processor >>>>> (rpmsg service announcement mechanism). >>>>> This allows platforms based on the rpmsg virtio backend to create the /dev/rpmgX interface with >>>>> a rpmsg name service announcement. >>>>> >>>>> Subsets: >>>>> - Extract the control part of the char dev and create the rpmsg_ctrl.c file (patches 1 to 6) >>>>> - Introduce the "rpmsg-raw" channel in rpmsg_char(patches 7 to 10) >>>>> - Introduce the RPMSG_CREATE_DEV_IOCTL IOCTL and RPMSG_DESTROY_DEV_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. >>>>> >>>>> This series has be applied and tested on 'commit e783362eb54c ("Linux 5.17-rc1") + >>>>> rpmsg_char cdev release fixes [2][3] >>>>> >>>>> [1] https://lkml.org/lkml/2021/12/7/186 >>>>> [2] https://lkml.org/lkml/2022/1/10/1129 >>>>> [3] https://lkml.org/lkml/2022/1/10/1130 >>>>> >>>>> Arnaud Pouliquen (11): >>>>> rpmsg: char: Export eptdev create and destroy functions >>>>> rpmsg: Create the rpmsg class in core instead of in rpmsg char >>>>> rpmsg: Move the rpmsg control device from rpmsg_char to rpmsg_ctrl >>>> >>>> >>>>> arm: configs: Configs that had RPMSG_CHAR now get RPMSG_CTRL >>>>> RISC-V: configs: Configs that had RPMSG_CHAR now get RPMSG_CTRL >>>>> arm64: defconfig: Config that had RPMSG_CHAR now gets RPMSG_CTRL >>>> >>>> Thank you for merging this series! >>>> >>>> I can't see in the "for next" branch[1] the 3 patches above that update configs >>>> Are you expecting a specific action from me? >>> >>> Those patches will need to go through the Arm, RISC-V and arm64 subsystems. The >>> mailing list for those subsystems has been CC'ed but that isn't enough to get >>> the maintainers' attention. >>> >>> I suggest sending another patchset with those 3 patches that CC the maintainers >>> directly. For the Arm patch I suggest adding Linus Walleij. >> >> I will do what you suggest. >> >> My concerns in this case is about the scheduling of the integration. >> I suppose that sending a second patchset for configs requests that the >> rpmsg char series is first applied > > Right, but the rpmsg_char series has been applied. > >> But on the other hand this may lead to some failures as the RPMSG_CTRL is now >> needed to create the /dev/rpmsg_ctrl0 >> > > Possibly, but right now there is no other way. > >> so probably, I need to do this as fixup patch. >> > > Indeed, this can be applied as a fix in rc1. Yes, that's what I had in mind, I'll do it that way. Thanks, Arnaud > >> FYI the RISC-V patch as been reviewed by Anup Patel >> > > ... but Anup does not maintain any of the defconfig files. > >> Thanks, >> Arnaud >> >>> >>> Thanks, >>> Mathieu >>> >>>> >>>> [1]https://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux.git >>>> >>>> Regards, >>>> Arnaud >>>> >>>>> rpmsg: Update rpmsg_chrdev_register_device function >>>>> rpmsg: char: Refactor rpmsg_chrdev_eptdev_create function >>>>> rpmsg: char: Add possibility to use default endpoint of the rpmsg >>>>> device >>>>> rpmsg: char: Introduce the "rpmsg-raw" channel >>>>> rpmsg: ctrl: Introduce new RPMSG_CREATE/RELEASE_DEV_IOCTL controls >>>>> >>>>> arch/arm/configs/qcom_defconfig | 1 + >>>>> arch/arm64/configs/defconfig | 1 + >>>>> arch/riscv/configs/defconfig | 1 + >>>>> arch/riscv/configs/rv32_defconfig | 1 + >>>>> drivers/rpmsg/Kconfig | 8 + >>>>> drivers/rpmsg/Makefile | 1 + >>>>> drivers/rpmsg/qcom_glink_native.c | 2 +- >>>>> drivers/rpmsg/qcom_smd.c | 2 +- >>>>> drivers/rpmsg/rpmsg_char.c | 231 +++++++++++----------------- >>>>> drivers/rpmsg/rpmsg_char.h | 46 ++++++ >>>>> drivers/rpmsg/rpmsg_core.c | 15 +- >>>>> drivers/rpmsg/rpmsg_ctrl.c | 243 ++++++++++++++++++++++++++++++ >>>>> drivers/rpmsg/rpmsg_internal.h | 10 +- >>>>> drivers/rpmsg/virtio_rpmsg_bus.c | 2 +- >>>>> include/uapi/linux/rpmsg.h | 10 ++ >>>>> 15 files changed, 419 insertions(+), 155 deletions(-) >>>>> create mode 100644 drivers/rpmsg/rpmsg_char.h >>>>> create mode 100644 drivers/rpmsg/rpmsg_ctrl.c >>>>>