From: "Stojaczyk, DariuszX" <dariuszx.stojaczyk@intel.com>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
Maxime Coquelin <maxime.coquelin@redhat.com>,
"Bie, Tiwei" <tiwei.bie@intel.com>,
"Tetsuya Mukawa" <mtetsuyah@gmail.com>,
Thomas Monjalon <thomas@monjalon.net>,
"yliu@fridaylinux.org" <yliu@fridaylinux.org>,
"Harris, James R" <james.r.harris@intel.com>
Subject: Re: [dpdk-dev] [RFC v2] vhost: new rte_vhost API proposal
Date: Tue, 29 May 2018 13:38:33 +0000 [thread overview]
Message-ID: <FBE7E039FA50BF47A673AD0BD3CD56A846140984@HASMSX105.ger.corp.intel.com> (raw)
In-Reply-To: <20180525100550.GD14757@stefanha-x1.localdomain>
> -----Original Message-----
> From: Stefan Hajnoczi [mailto:stefanha@redhat.com]
> Sent: Friday, May 25, 2018 12:06 PM
> On Fri, May 18, 2018 at 03:01:05PM +0200, Dariusz Stojaczyk wrote:
> > +struct rte_vhost2_msg {
> > + uint32_t id;
>
> Is this what the vhost-user specification calls the "request type"? I
> suggest following the vhost-user spec terminology.
>
> > + uint32_t flags;
> > + uint32_t size; /**< The following payload size. */
> > + void *payload;
> > + int fds[RTE_VHOST2_MEMORY_MAX_NREGIONS];
>
> Is it necessary to expose file descriptor passing in the API?
> virtio-vhost-user doesn't have file descriptor passing, so it's best if this
> can be hidden inside rte_vhost2.
So it's another argument for not exposing raw message handling to the user.
If there's some backend-specific vhost-user message in future that contains an fd, it will need a set of new abstractions to work with virtio-vhost-user anyway.
I guess I'll get back the original custom_msg idea from V1.
>
> > +};
> > +
> > +/** Single memory region. Both physically and virtually contiguous */
> > +struct rte_vhost2_mem_region {
> > + uint64_t guest_phys_addr;
> > + uint64_t guest_user_addr;
> > + uint64_t host_user_addr;
> > + uint64_t size;
> > + void *mmap_addr;
> > + uint64_t mmap_size;
> > + int fd;
>
> virtio-vhost-user doesn't have an fd. Why do API consumers need to
> know about the fd?
They don't. Ack. I'll strip this struct.
>
> > +/**
> > + * Device/queue related callbacks, all optional. Provided callback
> > + * parameters are guaranteed not to be NULL unless explicitly
> specified.
> > + */
>
> This is a good place to mention that all callbacks are asynchronous unless
> specified otherwise. Without that knowledge statements below like "If
> this is completed with a non-zero status" are confusing on a void
> function.
Ack.
>
> > +struct rte_vhost2_tgt_ops {
> > + /**
> > + * New driver connected. If this is completed with a non-zero
> status,
> > + * rte_vhost2 will terminate the connection.
> > + */
> > + void (*device_create)(struct rte_vhost2_dev *vdev);
> > + /**
> > + * Device is ready to operate. vdev data is now initialized. This
> callback
> > + * may be called multiple times as e.g. memory mappings can
> change
> > + * dynamically. All queues are guaranteed to be stopped by now.
> > + */
> > + void (*device_init)(struct rte_vhost2_dev *vdev);
> > + /**
> > + * Features have changed in runtime. This is called at least once
> > +during
>
> s/in/at/
Ack.
>
> > + /**
> > + * Custom vhost-user message handler. This is called for
> > + * backend-specific messages (net/crypto/scsi) that weren't
> recognized
> > + * by the generic message parser. `msg` is available until
> > + * \c rte_vhost2_tgt_cb_complete is called.
> > + */
> > + void (*custom_msg)(struct rte_vhost2_dev *vdev, struct
> > +rte_vhost2_msg *msg);
>
> What happens if rte_vhost2_tgt_cb_complete() is called with a negative
> rc? Does the specific errno value matter?
My current implementation only checks for rc != 0 now. I'm still working this out.
>
> Where is the API for sending a vhost-user reply message?
I didn't push any. Now that you pointed out the fds in public API I think I'll rollback this custom_msg stuff to V1.
D.
next prev parent reply other threads:[~2018-05-29 13:38 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-10 13:22 [dpdk-dev] [RFC] " Dariusz Stojaczyk
[not found] ` <20180510163643.GD9308@stefanha-x1.localdomain>
2018-05-11 5:55 ` Stojaczyk, DariuszX
[not found] ` <20180511100531.GA19894@stefanha-x1.localdomain>
2018-05-18 7:51 ` Stojaczyk, DariuszX
2018-05-18 13:01 ` [dpdk-dev] [RFC v2] " Dariusz Stojaczyk
2018-05-18 13:50 ` Maxime Coquelin
2018-05-20 7:07 ` Yuanhan Liu
2018-05-22 10:19 ` Stojaczyk, DariuszX
[not found] ` <20180525100550.GD14757@stefanha-x1.localdomain>
2018-05-29 13:38 ` Stojaczyk, DariuszX [this message]
[not found] ` <20180530085700.GC14623@stefanha-x1.localdomain>
2018-05-30 12:24 ` Stojaczyk, DariuszX
[not found] ` <20180607151227.23660-1-darek.stojaczyk@gmail.com>
[not found] ` <20180608100852.GA31164@stefanha-x1.localdomain>
2018-06-13 9:41 ` [dpdk-dev] [RFC v3 0/7] vhost2: new librte_vhost2 proposal Dariusz Stojaczyk
2018-06-25 11:01 ` Tiwei Bie
2018-06-25 12:17 ` Stojaczyk, DariuszX
2018-06-26 8:22 ` Tiwei Bie
2018-06-26 8:30 ` Thomas Monjalon
2018-06-26 8:47 ` Stojaczyk, DariuszX
2018-06-26 9:14 ` Tiwei Bie
2018-06-26 9:38 ` Maxime Coquelin
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=FBE7E039FA50BF47A673AD0BD3CD56A846140984@HASMSX105.ger.corp.intel.com \
--to=dariuszx.stojaczyk@intel.com \
--cc=dev@dpdk.org \
--cc=james.r.harris@intel.com \
--cc=maxime.coquelin@redhat.com \
--cc=mtetsuyah@gmail.com \
--cc=stefanha@redhat.com \
--cc=thomas@monjalon.net \
--cc=tiwei.bie@intel.com \
--cc=yliu@fridaylinux.org \
/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 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).