From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>,
Ohad Ben-Cohen <ohad@wizery.com>, Andy Gross <agross@kernel.org>,
linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH v5 11/16] rpmsg: virtio: register the rpmsg_ctrl device
Date: Wed, 3 Mar 2021 11:43:45 -0700 [thread overview]
Message-ID: <20210303184345.GD3817330@xps15> (raw)
In-Reply-To: <20210219111501.14261-12-arnaud.pouliquen@foss.st.com>
On Fri, Feb 19, 2021 at 12:14:56PM +0100, Arnaud Pouliquen wrote:
> Instantiate the rpmsg_ioctl device on virtio RPMsg bus creation.
s/rpmsg_ioctl/rpmsg_ctrl
Now I understand what you meant in patch 05.
> This provides the possibility to expose the RPMSG_CREATE_EPT_IOCTL
> to create RPMsg chdev endpoints.
You mean RPMSG device endpoints, i.e rpmsg_eptdev? If so I think it should be
added to the changelog. Otherwiser someone could be tempted to look for "chdev"
and find anything but a rpmsg_eptdev.
>
> Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
>
> ---
> V5:
> Fix compilation issue
> Reported-by: kernel test robot <lkp@intel.com>
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> drivers/rpmsg/virtio_rpmsg_bus.c | 57 +++++++++++++++++++++++++++++---
> 1 file changed, 52 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
> index e87d4cf926eb..2e6b34084012 100644
> --- a/drivers/rpmsg/virtio_rpmsg_bus.c
> +++ b/drivers/rpmsg/virtio_rpmsg_bus.c
> @@ -813,14 +813,52 @@ static void rpmsg_xmit_done(struct virtqueue *svq)
> wake_up_interruptible(&vrp->sendq);
> }
>
> +static struct rpmsg_device *rpmsg_virtio_add_ctrl_dev(struct virtio_device *vdev)
> +{
> + struct virtproc_info *vrp = vdev->priv;
> + struct virtio_rpmsg_channel *vch;
> + struct rpmsg_device *rpdev_ctrl;
> + int err = 0;
> +
> + vch = kzalloc(sizeof(*vch), GFP_KERNEL);
> + if (!vch)
> + return ERR_PTR(-ENOMEM);
> +
> + /* Link the channel to the vrp */
> + vch->vrp = vrp;
> +
> + /* Assign public information to the rpmsg_device */
> + rpdev_ctrl = &vch->rpdev;
> + rpdev_ctrl->ops = &virtio_rpmsg_ops;
> +
> + rpdev_ctrl->dev.parent = &vrp->vdev->dev;
> + rpdev_ctrl->dev.release = virtio_rpmsg_release_device;
> + rpdev_ctrl->little_endian = virtio_is_little_endian(vrp->vdev);
> +
> + err = rpmsg_ctrl_register_device(rpdev_ctrl);
> + if (err) {
> + kfree(vch);
> + return ERR_PTR(err);
> + }
> +
> + return rpdev_ctrl;
> +}
> +
> +static void rpmsg_virtio_del_ctrl_dev(struct rpmsg_device *rpdev_ctrl)
> +{
> + if (!rpdev_ctrl)
> + return;
> + kfree(to_virtio_rpmsg_channel(rpdev_ctrl));
> +}
> +
> static int rpmsg_probe(struct virtio_device *vdev)
> {
> vq_callback_t *vq_cbs[] = { rpmsg_recv_done, rpmsg_xmit_done };
> static const char * const names[] = { "input", "output" };
> struct virtqueue *vqs[2];
> struct virtproc_info *vrp;
> - struct virtio_rpmsg_channel *vch;
> - struct rpmsg_device *rpdev_ns;
> + struct virtio_rpmsg_channel *vch = NULL;
> + struct rpmsg_device *rpdev_ns = NULL, *rpdev_ctrl;
As far as I can tell @rpdev_ns doesn't have to be initialized.
> void *bufs_va;
> int err = 0, i;
> size_t total_buf_space;
> @@ -894,12 +932,18 @@ static int rpmsg_probe(struct virtio_device *vdev)
>
> vdev->priv = vrp;
>
> + rpdev_ctrl = rpmsg_virtio_add_ctrl_dev(vdev);
> + if (IS_ERR(rpdev_ctrl)) {
> + err = PTR_ERR(rpdev_ctrl);
> + goto free_coherent;
> + }
> +
> /* if supported by the remote processor, enable the name service */
> if (virtio_has_feature(vdev, VIRTIO_RPMSG_F_NS)) {
> vch = kzalloc(sizeof(*vch), GFP_KERNEL);
> if (!vch) {
> err = -ENOMEM;
> - goto free_coherent;
> + goto free_ctrldev;
> }
>
> /* Link the channel to our vrp */
> @@ -915,7 +959,7 @@ static int rpmsg_probe(struct virtio_device *vdev)
>
> err = rpmsg_ns_register_device(rpdev_ns);
> if (err)
> - goto free_coherent;
> + goto free_vch;
> }
>
> /*
> @@ -939,8 +983,11 @@ static int rpmsg_probe(struct virtio_device *vdev)
>
> return 0;
>
> -free_coherent:
> +free_vch:
> kfree(vch);
> +free_ctrldev:
> + rpmsg_virtio_del_ctrl_dev(rpdev_ctrl);
> +free_coherent:
> dma_free_coherent(vdev->dev.parent, total_buf_space,
> bufs_va, vrp->bufs_dma);
> vqs_del:
> --
> 2.17.1
>
next prev parent reply other threads:[~2021-03-03 22:06 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-19 11:14 [PATCH v5 00/16] introduce a generic IOCTL interface for RPMsg channels management Arnaud Pouliquen
2021-02-19 11:14 ` [PATCH v5 01/16] rpmsg: char: rename rpmsg_char_init to rpmsg_chrdev_init Arnaud Pouliquen
2021-02-19 11:14 ` [PATCH v5 02/16] rpmsg: move RPMSG_ADDR_ANY in user API Arnaud Pouliquen
2021-02-19 11:14 ` [PATCH v5 03/16] rpmsg: add short description of the IOCTL defined in UAPI Arnaud Pouliquen
2021-02-19 11:14 ` [PATCH v5 04/16] rpmsg: char: export eptdev create an destroy functions Arnaud Pouliquen
2021-03-02 17:57 ` Mathieu Poirier
2021-03-03 13:22 ` Arnaud POULIQUEN
2021-03-03 16:30 ` Mathieu Poirier
2021-02-19 11:14 ` [PATCH v5 05/16] rpmsg: char: dissociate the control device from the rpmsg class Arnaud Pouliquen
2021-03-02 18:01 ` Mathieu Poirier
2021-03-03 14:58 ` Arnaud POULIQUEN
2021-02-19 11:14 ` [PATCH v5 06/16] rpmsg: move the rpmsg control device from rpmsg_char to rpmsg_ctrl Arnaud Pouliquen
2021-03-02 18:35 ` Mathieu Poirier
2021-03-03 14:59 ` Arnaud POULIQUEN
2021-03-03 16:34 ` Mathieu Poirier
2021-02-19 11:14 ` [PATCH v5 07/16] rpmsg: update rpmsg_chrdev_register_device function Arnaud Pouliquen
2021-03-03 17:01 ` Mathieu Poirier
2021-02-19 11:14 ` [PATCH v5 08/16] rpmsg: glink: add sendto and trysendto ops Arnaud Pouliquen
2021-03-04 19:11 ` Mathieu Poirier
2021-03-05 10:46 ` Arnaud POULIQUEN
2021-03-05 16:55 ` Mathieu Poirier
2021-02-19 11:14 ` [PATCH v5 09/16] rpmsg: smd: " Arnaud Pouliquen
2021-02-19 11:14 ` [PATCH v5 10/16] rpmsg: char: use sendto to specify the message destination address Arnaud Pouliquen
2021-02-19 11:14 ` [PATCH v5 11/16] rpmsg: virtio: register the rpmsg_ctrl device Arnaud Pouliquen
2021-03-03 18:43 ` Mathieu Poirier [this message]
2021-03-04 9:20 ` Arnaud POULIQUEN
2021-02-19 11:14 ` [PATCH v5 12/16] rpmsg: ctrl: introduce RPMSG_CREATE_DEV_IOCTL Arnaud Pouliquen
2021-02-19 11:14 ` [PATCH v5 13/16] rpmsg: char: introduce __rpmsg_chrdev_create_eptdev function Arnaud Pouliquen
2021-03-04 18:55 ` Mathieu Poirier
2021-03-05 10:46 ` Arnaud POULIQUEN
2021-03-05 18:01 ` Mathieu Poirier
2021-03-04 19:05 ` Mathieu Poirier
2021-03-05 11:42 ` Arnaud POULIQUEN
2021-02-19 11:14 ` [PATCH v5 14/16] rpmsg: char: introduce a RPMsg driver for the RPMsg char device Arnaud Pouliquen
2021-02-19 11:15 ` [PATCH v5 15/16] rpmsg: char: no dynamic endpoint management for the default one Arnaud Pouliquen
2021-03-04 18:40 ` Mathieu Poirier
2021-03-05 11:09 ` Arnaud POULIQUEN
2021-03-05 17:39 ` Mathieu Poirier
2021-02-19 11:15 ` [PATCH v5 16/16] rpmsg: char: return an error if device already open Arnaud Pouliquen
2021-03-04 18:45 ` Mathieu Poirier
2021-03-17 9:29 ` [PATCH v5 00/16] introduce a generic IOCTL interface for RPMsg channels management Arnaud POULIQUEN
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210303184345.GD3817330@xps15 \
--to=mathieu.poirier@linaro.org \
--cc=agross@kernel.org \
--cc=arnaud.pouliquen@foss.st.com \
--cc=bjorn.andersson@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=ohad@wizery.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.