Displaying 20 results from an estimated 22 matches for "handle_rpmsg_req_single".
2020 Sep 17
1
[PATCH v7 3/3] vhost: add an RPMsg API
...handle_rpmsg_req_kick(struct vhost_work *work)
struct vhost_virtqueue *vq = container_of(work, struct vhost_virtqueue,
poll.work);
struct vhost_rpmsg *vr = container_of(vq->dev, struct vhost_rpmsg, dev);
+ struct vhost_virtqueue *reqvq = vr->vq + VIRTIO_RPMSG_REQUEST;
- while (handle_rpmsg_req_single(vr, vq))
+ /*
+ * The !vhost_vq_avail_empty() check is needed since the vhost_rpmsg*
+ * APIs don't check the return value of vhost_enable_notify() and retry
+ * if there were buffers added while notifications were disabled.
+ */
+ while (handle_rpmsg_req_single(vr, vq) || !vhost_vq_avail_e...
2020 Sep 21
0
[PATCH v7 3/3] vhost: add an RPMsg API
.../vhost/rpmsg.c
> > > > @@ -0,0 +1,370 @@
[snip]
> > > > +/*
> > > > + * Return false to terminate the external loop only if we fail to obtain either
> > > > + * a request or a response buffer
> > > > + */
> > > > +static bool handle_rpmsg_req_single(struct vhost_rpmsg *vr,
> > > > + struct vhost_virtqueue *vq)
> > > > +{
> > > > + struct vhost_rpmsg_iter iter;
> > > > + int ret = vhost_rpmsg_start_lock(vr, &iter, VIRTIO_RPMSG_REQUEST, -EINVAL);
> > > > + if (!ret)
> >...
2020 Sep 10
6
[PATCH v7 0/3] Add a vhost RPMsg API
Hi,
Next update:
v7:
- remove documentation update to be send separately
- address comments from Mathieu Poirier (thanks)
v6:
- rename include/linux/virtio_rpmsg.h -> include/linux/rpmsg/virtio.h
v5:
- don't hard-code message layout
v4:
- add endianness conversions to comply with the VirtIO standard
v3:
- address several checkpatch warnings
- address comments from Mathieu Poirier
v2:
2020 Sep 10
6
[PATCH v7 0/3] Add a vhost RPMsg API
Hi,
Next update:
v7:
- remove documentation update to be send separately
- address comments from Mathieu Poirier (thanks)
v6:
- rename include/linux/virtio_rpmsg.h -> include/linux/rpmsg/virtio.h
v5:
- don't hard-code message layout
v4:
- add endianness conversions to comply with the VirtIO standard
v3:
- address several checkpatch warnings
- address comments from Mathieu Poirier
v2:
2020 Sep 18
0
[PATCH v7 3/3] vhost: add an RPMsg API
...+ iter->rhdr.dst = iter->rhdr.src;
> > + iter->rhdr.src = cpu_to_vhost32(vq, iter->ept->addr);
>
> I'm a little puzzled here - what will the response look like? And why is it
> prepared here? From what I can see doing so introduces coupling with function
> handle_rpmsg_req_single(). I think confirmation of reception should be handled
> by endpoints rather than in the core.
RPMsg always contain a header, so we keep the header in the iterator. If the
caller wants to reply to the request, the easiest way to do that is to reuse the
iterator. In that case obviously you h...
2020 Sep 10
0
[PATCH v7 3/3] vhost: add an RPMsg API
...e_notify(&vr->dev, iter->vq);
+ mutex_unlock(&iter->vq->mutex);
+
+ return iter->head;
+}
+EXPORT_SYMBOL_GPL(vhost_rpmsg_finish_unlock);
+
+/*
+ * Return false to terminate the external loop only if we fail to obtain either
+ * a request or a response buffer
+ */
+static bool handle_rpmsg_req_single(struct vhost_rpmsg *vr,
+ struct vhost_virtqueue *vq)
+{
+ struct vhost_rpmsg_iter iter;
+ int ret = vhost_rpmsg_start_lock(vr, &iter, VIRTIO_RPMSG_REQUEST, -EINVAL);
+ if (!ret)
+ ret = vhost_rpmsg_finish_unlock(vr, &iter);
+ if (ret < 0) {
+ if (ret != -EAGAIN)
+ vq_err(vq,...
2020 May 27
0
[PATCH v3 5/5] vhost: add an RPMsg API
...e_notify(&vr->dev, iter->vq);
+ mutex_unlock(&iter->vq->mutex);
+
+ return iter->head;
+}
+EXPORT_SYMBOL_GPL(vhost_rpmsg_finish_unlock);
+
+/*
+ * Return false to terminate the external loop only if we fail to obtain either
+ * a request or a response buffer
+ */
+static bool handle_rpmsg_req_single(struct vhost_rpmsg *vr,
+ struct vhost_virtqueue *vq)
+{
+ struct vhost_rpmsg_iter iter;
+ int ret = vhost_rpmsg_start_lock(vr, &iter, VIRTIO_RPMSG_REQUEST,
+ -EINVAL);
+ if (!ret)
+ ret = vhost_rpmsg_finish_unlock(vr, &iter);
+ if (ret < 0) {
+ if (ret != -EAGAIN)
+ vq_e...
2020 Jul 22
0
[PATCH v4 4/4] vhost: add an RPMsg API
...e_notify(&vr->dev, iter->vq);
+ mutex_unlock(&iter->vq->mutex);
+
+ return iter->head;
+}
+EXPORT_SYMBOL_GPL(vhost_rpmsg_finish_unlock);
+
+/*
+ * Return false to terminate the external loop only if we fail to obtain either
+ * a request or a response buffer
+ */
+static bool handle_rpmsg_req_single(struct vhost_rpmsg *vr,
+ struct vhost_virtqueue *vq)
+{
+ struct vhost_rpmsg_iter iter;
+ int ret = vhost_rpmsg_start_lock(vr, &iter, VIRTIO_RPMSG_REQUEST, -EINVAL);
+ if (!ret)
+ ret = vhost_rpmsg_finish_unlock(vr, &iter);
+ if (ret < 0) {
+ if (ret != -EAGAIN)
+ vq_err(vq,...
2020 Sep 10
0
[PATCH v5 4/4] vhost: add an RPMsg API
...> + return iter->head;
> > +}
> > +EXPORT_SYMBOL_GPL(vhost_rpmsg_finish_unlock);
> > +
> > +/*
> > + * Return false to terminate the external loop only if we fail to obtain either
> > + * a request or a response buffer
> > + */
> > +static bool handle_rpmsg_req_single(struct vhost_rpmsg *vr,
> > + struct vhost_virtqueue *vq)
> > +{
> > + struct vhost_rpmsg_iter iter;
> > + int ret = vhost_rpmsg_start_lock(vr, &iter, VIRTIO_RPMSG_REQUEST, -EINVAL);
> > + if (!ret)
> > + ret = vhost_rpmsg_finish_unlock(vr, &iter)...
2020 Aug 04
2
[PATCH v4 4/4] vhost: add an RPMsg API
...lock(&iter->vq->mutex);
> +
> + return iter->head;
> +}
> +EXPORT_SYMBOL_GPL(vhost_rpmsg_finish_unlock);
> +
> +/*
> + * Return false to terminate the external loop only if we fail to obtain either
> + * a request or a response buffer
> + */
> +static bool handle_rpmsg_req_single(struct vhost_rpmsg *vr,
> + struct vhost_virtqueue *vq)
> +{
> + struct vhost_rpmsg_iter iter;
> + int ret = vhost_rpmsg_start_lock(vr, &iter, VIRTIO_RPMSG_REQUEST, -EINVAL);
> + if (!ret)
> + ret = vhost_rpmsg_finish_unlock(vr, &iter);
> + if (ret < 0) {
>...
2020 Aug 04
2
[PATCH v4 4/4] vhost: add an RPMsg API
...lock(&iter->vq->mutex);
> +
> + return iter->head;
> +}
> +EXPORT_SYMBOL_GPL(vhost_rpmsg_finish_unlock);
> +
> +/*
> + * Return false to terminate the external loop only if we fail to obtain either
> + * a request or a response buffer
> + */
> +static bool handle_rpmsg_req_single(struct vhost_rpmsg *vr,
> + struct vhost_virtqueue *vq)
> +{
> + struct vhost_rpmsg_iter iter;
> + int ret = vhost_rpmsg_start_lock(vr, &iter, VIRTIO_RPMSG_REQUEST, -EINVAL);
> + if (!ret)
> + ret = vhost_rpmsg_finish_unlock(vr, &iter);
> + if (ret < 0) {
>...
2020 Jul 22
13
[PATCH v4 0/4] Add a vhost RPMsg API
Hi,
Now that virtio-rpmsg endianness fixes have been merged we can
proceed with the next step.
v4:
- add endianness conversions to comply with the VirtIO standard
v3:
- address several checkpatch warnings
- address comments from Mathieu Poirier
v2:
- update patch #5 with a correct vhost_dev_init() prototype
- drop patch #6 - it depends on a different patch, that is currently
an RFC
-
2020 Jul 22
13
[PATCH v4 0/4] Add a vhost RPMsg API
Hi,
Now that virtio-rpmsg endianness fixes have been merged we can
proceed with the next step.
v4:
- add endianness conversions to comply with the VirtIO standard
v3:
- address several checkpatch warnings
- address comments from Mathieu Poirier
v2:
- update patch #5 with a correct vhost_dev_init() prototype
- drop patch #6 - it depends on a different patch, that is currently
an RFC
-
2020 May 16
9
[PATCH 0/6] Add a vhost RPMsg API
Linux supports RPMsg over VirtIO for "remote processor" /AMP use
cases. It can however also be used for virtualisation scenarios,
e.g. when using KVM to run Linux on both the host and the guests.
This patch set adds a wrapper API to facilitate writing vhost
drivers for such RPMsg-based solutions. The first use case is an
audio DSP virtualisation project, currently under development,
2020 May 16
9
[PATCH 0/6] Add a vhost RPMsg API
Linux supports RPMsg over VirtIO for "remote processor" /AMP use
cases. It can however also be used for virtualisation scenarios,
e.g. when using KVM to run Linux on both the host and the guests.
This patch set adds a wrapper API to facilitate writing vhost
drivers for such RPMsg-based solutions. The first use case is an
audio DSP virtualisation project, currently under development,
2020 May 25
6
[PATCH v2 0/5] Add a vhost RPMsg API
v2:
- remove "default n" from Kconfig
- drop patch #6 - it depends on a different patch, that is currently
an RFC
- update patch #5 with a correct vhost_dev_init() prototype
Linux supports RPMsg over VirtIO for "remote processor" /AMP use
cases. It can however also be used for virtualisation scenarios,
e.g. when using KVM to run Linux on both the host and the guests.
This
2020 Aug 26
12
[PATCH v5 0/4] Add a vhost RPMsg API
Hi,
Next update:
v5:
- don't hard-code message layout
v4:
- add endianness conversions to comply with the VirtIO standard
v3:
- address several checkpatch warnings
- address comments from Mathieu Poirier
v2:
- update patch #5 with a correct vhost_dev_init() prototype
- drop patch #6 - it depends on a different patch, that is currently
an RFC
- address comments from Pierre-Louis Bossart:
2020 Aug 26
12
[PATCH v5 0/4] Add a vhost RPMsg API
Hi,
Next update:
v5:
- don't hard-code message layout
v4:
- add endianness conversions to comply with the VirtIO standard
v3:
- address several checkpatch warnings
- address comments from Mathieu Poirier
v2:
- update patch #5 with a correct vhost_dev_init() prototype
- drop patch #6 - it depends on a different patch, that is currently
an RFC
- address comments from Pierre-Louis Bossart:
2020 May 27
10
[PATCH v3 0/5] Add a vhost RPMsg API
v3:
- address several checkpatch warnings
- address comments from Mathieu Poirier
v2:
- update patch #5 with a correct vhost_dev_init() prototype
- drop patch #6 - it depends on a different patch, that is currently
an RFC
- address comments from Pierre-Louis Bossart:
* remove "default n" from Kconfig
Linux supports RPMsg over VirtIO for "remote processor" /AMP use
cases.
2020 May 27
10
[PATCH v3 0/5] Add a vhost RPMsg API
v3:
- address several checkpatch warnings
- address comments from Mathieu Poirier
v2:
- update patch #5 with a correct vhost_dev_init() prototype
- drop patch #6 - it depends on a different patch, that is currently
an RFC
- address comments from Pierre-Louis Bossart:
* remove "default n" from Kconfig
Linux supports RPMsg over VirtIO for "remote processor" /AMP use
cases.