From: Wei Wang <wei.w.wang@intel.com> To: virtio-dev@lists.oasis-open.org, qemu-devel@nongnu.org, mst@redhat.com, marcandre.lureau@redhat.com, jasowang@redhat.com, stefanha@redhat.com, pbonzini@redhat.com Cc: jan.kiszka@siemens.com, avi.cohen@huawei.com, zhiyong.yang@intel.com, Wei Wang <wei.w.wang@intel.com> Subject: [Qemu-devel] [PATCH v3 6/7] vhost-pci-slave: handle VHOST_USER_SET_VHOST_PCI Date: Tue, 5 Dec 2017 11:33:15 +0800 [thread overview] Message-ID: <1512444796-30615-7-git-send-email-wei.w.wang@intel.com> (raw) In-Reply-To: <1512444796-30615-1-git-send-email-wei.w.wang@intel.com> This patch implements the slave part handling of the VHOST_USER_SET_VHOST_PCI msg. Receiving a "true" from the master will set the LINK_UP status of the vhost-pci device config status, and a config interrupt will be injected to the guest to notify that the device is ready to use. The driver is expected to start reading the metadata for remote memory and vring setup after this LINK_UP interrupt is received. Receiving a "false" from the master will clear the LINK_UP status and inject a config interrupt to the guest to notify the driver to stop sending and receiving packets. Signed-off-by: Wei Wang <wei.w.wang@intel.com> --- hw/net/vhost_pci_net.c | 13 +++++++++++++ hw/virtio/vhost-pci-slave.c | 3 +++ include/hw/virtio/vhost-pci-net.h | 2 ++ include/standard-headers/linux/vhost_pci_net.h | 2 ++ 4 files changed, 20 insertions(+) diff --git a/hw/net/vhost_pci_net.c b/hw/net/vhost_pci_net.c index 11184c3..39eb28d 100644 --- a/hw/net/vhost_pci_net.c +++ b/hw/net/vhost_pci_net.c @@ -32,6 +32,19 @@ static uint64_t vpnet_get_features(VirtIODevice *vdev, uint64_t features, return features; } +void vpnet_set_link_up(VhostPCINet *vpnet, bool up) +{ + VirtIODevice *vdev = VIRTIO_DEVICE(vpnet); + + if (up) { + vpnet->status |= VPNET_S_LINK_UP; + } else { + vpnet->status &= ~VPNET_S_LINK_UP; + } + + virtio_notify_config(vdev); +} + static void vpnet_get_config(VirtIODevice *vdev, uint8_t *config) { VhostPCINet *vpnet = VHOST_PCI_NET(vdev); diff --git a/hw/virtio/vhost-pci-slave.c b/hw/virtio/vhost-pci-slave.c index 8052884..6554efb 100644 --- a/hw/virtio/vhost-pci-slave.c +++ b/hw/virtio/vhost-pci-slave.c @@ -287,6 +287,9 @@ void vp_slave_read(void *opaque, const uint8_t *buf, int size) case VHOST_USER_SET_VRING_ENABLE: vp_slave_set_vring_enable(vpnet, &msg); break; + case VHOST_USER_SET_VHOST_PCI: + vpnet_set_link_up(vpnet, (bool)msg.payload.u64); + break; case VHOST_USER_SET_LOG_BASE: break; case VHOST_USER_SET_LOG_FD: diff --git a/include/hw/virtio/vhost-pci-net.h b/include/hw/virtio/vhost-pci-net.h index 6f4ab6a..2d0e94c 100644 --- a/include/hw/virtio/vhost-pci-net.h +++ b/include/hw/virtio/vhost-pci-net.h @@ -37,4 +37,6 @@ typedef struct VhostPCINet { CharBackend chr_be; } VhostPCINet; +void vpnet_set_link_up(VhostPCINet *vpnet, bool up); + #endif diff --git a/include/standard-headers/linux/vhost_pci_net.h b/include/standard-headers/linux/vhost_pci_net.h index 792261e..ab91989 100644 --- a/include/standard-headers/linux/vhost_pci_net.h +++ b/include/standard-headers/linux/vhost_pci_net.h @@ -35,6 +35,8 @@ #define MAX_REMOTE_REGION 8 +/* Set by the device to indicate that the device (e.g. metadata) is ready */ +#define VPNET_S_LINK_UP 1 struct vpnet_config { uint16_t status; }; -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Wei Wang <wei.w.wang@intel.com> To: virtio-dev@lists.oasis-open.org, qemu-devel@nongnu.org, mst@redhat.com, marcandre.lureau@redhat.com, jasowang@redhat.com, stefanha@redhat.com, pbonzini@redhat.com Cc: jan.kiszka@siemens.com, avi.cohen@huawei.com, zhiyong.yang@intel.com, Wei Wang <wei.w.wang@intel.com> Subject: [virtio-dev] [PATCH v3 6/7] vhost-pci-slave: handle VHOST_USER_SET_VHOST_PCI Date: Tue, 5 Dec 2017 11:33:15 +0800 [thread overview] Message-ID: <1512444796-30615-7-git-send-email-wei.w.wang@intel.com> (raw) In-Reply-To: <1512444796-30615-1-git-send-email-wei.w.wang@intel.com> This patch implements the slave part handling of the VHOST_USER_SET_VHOST_PCI msg. Receiving a "true" from the master will set the LINK_UP status of the vhost-pci device config status, and a config interrupt will be injected to the guest to notify that the device is ready to use. The driver is expected to start reading the metadata for remote memory and vring setup after this LINK_UP interrupt is received. Receiving a "false" from the master will clear the LINK_UP status and inject a config interrupt to the guest to notify the driver to stop sending and receiving packets. Signed-off-by: Wei Wang <wei.w.wang@intel.com> --- hw/net/vhost_pci_net.c | 13 +++++++++++++ hw/virtio/vhost-pci-slave.c | 3 +++ include/hw/virtio/vhost-pci-net.h | 2 ++ include/standard-headers/linux/vhost_pci_net.h | 2 ++ 4 files changed, 20 insertions(+) diff --git a/hw/net/vhost_pci_net.c b/hw/net/vhost_pci_net.c index 11184c3..39eb28d 100644 --- a/hw/net/vhost_pci_net.c +++ b/hw/net/vhost_pci_net.c @@ -32,6 +32,19 @@ static uint64_t vpnet_get_features(VirtIODevice *vdev, uint64_t features, return features; } +void vpnet_set_link_up(VhostPCINet *vpnet, bool up) +{ + VirtIODevice *vdev = VIRTIO_DEVICE(vpnet); + + if (up) { + vpnet->status |= VPNET_S_LINK_UP; + } else { + vpnet->status &= ~VPNET_S_LINK_UP; + } + + virtio_notify_config(vdev); +} + static void vpnet_get_config(VirtIODevice *vdev, uint8_t *config) { VhostPCINet *vpnet = VHOST_PCI_NET(vdev); diff --git a/hw/virtio/vhost-pci-slave.c b/hw/virtio/vhost-pci-slave.c index 8052884..6554efb 100644 --- a/hw/virtio/vhost-pci-slave.c +++ b/hw/virtio/vhost-pci-slave.c @@ -287,6 +287,9 @@ void vp_slave_read(void *opaque, const uint8_t *buf, int size) case VHOST_USER_SET_VRING_ENABLE: vp_slave_set_vring_enable(vpnet, &msg); break; + case VHOST_USER_SET_VHOST_PCI: + vpnet_set_link_up(vpnet, (bool)msg.payload.u64); + break; case VHOST_USER_SET_LOG_BASE: break; case VHOST_USER_SET_LOG_FD: diff --git a/include/hw/virtio/vhost-pci-net.h b/include/hw/virtio/vhost-pci-net.h index 6f4ab6a..2d0e94c 100644 --- a/include/hw/virtio/vhost-pci-net.h +++ b/include/hw/virtio/vhost-pci-net.h @@ -37,4 +37,6 @@ typedef struct VhostPCINet { CharBackend chr_be; } VhostPCINet; +void vpnet_set_link_up(VhostPCINet *vpnet, bool up); + #endif diff --git a/include/standard-headers/linux/vhost_pci_net.h b/include/standard-headers/linux/vhost_pci_net.h index 792261e..ab91989 100644 --- a/include/standard-headers/linux/vhost_pci_net.h +++ b/include/standard-headers/linux/vhost_pci_net.h @@ -35,6 +35,8 @@ #define MAX_REMOTE_REGION 8 +/* Set by the device to indicate that the device (e.g. metadata) is ready */ +#define VPNET_S_LINK_UP 1 struct vpnet_config { uint16_t status; }; -- 2.7.4 --------------------------------------------------------------------- To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
next prev parent reply other threads:[~2017-12-05 3:49 UTC|newest] Thread overview: 170+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-12-05 3:33 [Qemu-devel] [PATCH v3 0/7] Vhost-pci for inter-VM communication Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 1/7] vhost-user: share the vhost-user protocol related structures Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 2/7] vhost-pci-net: add vhost-pci-net Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 14:59 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 14:59 ` Stefan Hajnoczi 2017-12-05 15:17 ` [Qemu-devel] " Michael S. Tsirkin 2017-12-05 15:17 ` Michael S. Tsirkin 2017-12-05 15:55 ` [Qemu-devel] " Michael S. Tsirkin 2017-12-05 15:55 ` Michael S. Tsirkin 2017-12-05 16:41 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 16:41 ` Stefan Hajnoczi 2017-12-05 16:53 ` [Qemu-devel] " Michael S. Tsirkin 2017-12-05 16:53 ` Michael S. Tsirkin 2017-12-05 17:00 ` [Qemu-devel] " Cornelia Huck 2017-12-05 17:00 ` [virtio-dev] " Cornelia Huck 2017-12-05 18:06 ` Michael S. Tsirkin 2017-12-05 18:06 ` [virtio-dev] " Michael S. Tsirkin 2017-12-06 10:17 ` Wei Wang 2017-12-06 10:17 ` Wei Wang 2017-12-06 12:01 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-06 12:01 ` Stefan Hajnoczi 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 3/7] virtio/virtio-pci.c: add vhost-pci-net-pci Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 4/7] vhost-pci-slave: add vhost-pci slave implementation Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 15:56 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 15:56 ` [virtio-dev] " Stefan Hajnoczi 2017-12-14 17:30 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-14 17:30 ` [virtio-dev] " Stefan Hajnoczi 2017-12-14 17:48 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-14 17:48 ` [virtio-dev] " Stefan Hajnoczi 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 5/7] vhost-user: VHOST_USER_SET_VHOST_PCI msg Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 16:00 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 16:00 ` [virtio-dev] " Stefan Hajnoczi 2017-12-06 10:32 ` [Qemu-devel] " Wei Wang 2017-12-06 10:32 ` Wei Wang 2017-12-15 12:40 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-15 12:40 ` Stefan Hajnoczi 2017-12-05 3:33 ` Wei Wang [this message] 2017-12-05 3:33 ` [virtio-dev] [PATCH v3 6/7] vhost-pci-slave: handle VHOST_USER_SET_VHOST_PCI Wei Wang 2017-12-05 3:33 ` [Qemu-devel] [PATCH v3 7/7] virtio/vhost.c: vhost-pci needs remote gpa Wei Wang 2017-12-05 3:33 ` [virtio-dev] " Wei Wang 2017-12-05 16:05 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 16:05 ` [virtio-dev] " Stefan Hajnoczi 2017-12-06 10:46 ` [Qemu-devel] " Wei Wang 2017-12-06 10:46 ` Wei Wang 2017-12-05 4:13 ` [Qemu-devel] [PATCH v3 0/7] Vhost-pci for inter-VM communication no-reply 2017-12-05 7:01 ` [Qemu-devel] [virtio-dev] " Jason Wang 2017-12-05 7:01 ` Jason Wang 2017-12-05 7:15 ` [Qemu-devel] " Wei Wang 2017-12-05 7:15 ` Wei Wang 2017-12-05 7:19 ` [Qemu-devel] " Jason Wang 2017-12-05 7:19 ` Jason Wang 2017-12-05 8:49 ` [Qemu-devel] " Avi Cohen (A) 2017-12-05 8:49 ` Avi Cohen (A) 2017-12-05 10:36 ` [Qemu-devel] " Wei Wang 2017-12-05 10:36 ` Wei Wang 2017-12-05 14:30 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-05 14:30 ` Stefan Hajnoczi 2017-12-05 15:20 ` [Qemu-devel] " Michael S. Tsirkin 2017-12-05 15:20 ` [virtio-dev] " Michael S. Tsirkin 2017-12-05 16:06 ` [Qemu-devel] [virtio-dev] " Stefan Hajnoczi 2017-12-05 16:06 ` Stefan Hajnoczi 2017-12-06 13:49 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-06 13:49 ` Stefan Hajnoczi 2017-12-06 16:09 ` [Qemu-devel] " Wang, Wei W 2017-12-06 16:09 ` Wang, Wei W 2017-12-06 16:27 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-07 3:57 ` Wei Wang 2017-12-07 3:57 ` [virtio-dev] " Wei Wang 2017-12-07 5:11 ` Michael S. Tsirkin 2017-12-07 5:11 ` [virtio-dev] " Michael S. Tsirkin 2017-12-07 5:34 ` Wei Wang 2017-12-07 5:34 ` [virtio-dev] " Wei Wang 2017-12-07 6:31 ` Stefan Hajnoczi 2017-12-07 7:54 ` Avi Cohen (A) 2017-12-07 7:54 ` [virtio-dev] " Avi Cohen (A) 2017-12-07 8:04 ` Stefan Hajnoczi 2017-12-07 8:31 ` Jason Wang 2017-12-07 8:31 ` [virtio-dev] " Jason Wang 2017-12-07 10:24 ` [Qemu-devel] [virtio-dev] " Stefan Hajnoczi 2017-12-07 10:24 ` [virtio-dev] Re: [Qemu-devel] " Stefan Hajnoczi 2017-12-07 13:33 ` Michael S. Tsirkin 2017-12-07 13:33 ` [virtio-dev] " Michael S. Tsirkin 2017-12-07 9:02 ` Wei Wang 2017-12-07 9:02 ` [virtio-dev] " Wei Wang 2017-12-07 13:08 ` Stefan Hajnoczi 2017-12-07 14:02 ` Michael S. Tsirkin 2017-12-07 14:02 ` [virtio-dev] " Michael S. Tsirkin 2017-12-07 16:29 ` Stefan Hajnoczi 2017-12-07 16:47 ` Michael S. Tsirkin 2017-12-07 16:47 ` [virtio-dev] " Michael S. Tsirkin 2017-12-07 17:29 ` Stefan Hajnoczi 2017-12-07 17:38 ` Michael S. Tsirkin 2017-12-07 17:38 ` [virtio-dev] " Michael S. Tsirkin 2017-12-07 18:28 ` Stefan Hajnoczi 2017-12-07 23:54 ` Michael S. Tsirkin 2017-12-07 23:54 ` [virtio-dev] " Michael S. Tsirkin 2017-12-08 6:08 ` Stefan Hajnoczi 2017-12-08 14:27 ` Michael S. Tsirkin 2017-12-08 14:27 ` [virtio-dev] " Michael S. Tsirkin 2017-12-08 16:15 ` Stefan Hajnoczi 2017-12-09 16:08 ` Wang, Wei W 2017-12-09 16:08 ` [virtio-dev] " Wang, Wei W 2017-12-08 6:43 ` Wei Wang 2017-12-08 6:43 ` [virtio-dev] " Wei Wang 2017-12-08 8:33 ` Stefan Hajnoczi 2017-12-09 16:23 ` Wang, Wei W 2017-12-09 16:23 ` [virtio-dev] " Wang, Wei W 2017-12-11 11:11 ` Stefan Hajnoczi 2017-12-11 11:11 ` [virtio-dev] " Stefan Hajnoczi 2017-12-11 13:53 ` Wang, Wei W 2017-12-11 13:53 ` [virtio-dev] " Wang, Wei W 2017-12-12 10:14 ` Stefan Hajnoczi 2017-12-12 10:14 ` [virtio-dev] " Stefan Hajnoczi 2017-12-13 8:11 ` Wei Wang 2017-12-13 8:11 ` [virtio-dev] " Wei Wang 2017-12-13 12:35 ` Stefan Hajnoczi 2017-12-13 15:01 ` Michael S. Tsirkin 2017-12-13 15:01 ` [virtio-dev] " Michael S. Tsirkin 2017-12-13 20:08 ` Stefan Hajnoczi 2017-12-13 20:59 ` Michael S. Tsirkin 2017-12-13 20:59 ` [virtio-dev] " Michael S. Tsirkin 2017-12-14 15:06 ` Stefan Hajnoczi 2017-12-14 15:06 ` [virtio-dev] " Stefan Hajnoczi 2017-12-15 10:33 ` Wei Wang 2017-12-15 10:33 ` [virtio-dev] " Wei Wang 2017-12-15 12:37 ` Stefan Hajnoczi 2017-12-15 12:37 ` [virtio-dev] " Stefan Hajnoczi 2017-12-13 21:50 ` Maxime Coquelin 2017-12-13 21:50 ` [virtio-dev] " Maxime Coquelin 2017-12-14 15:46 ` [Qemu-devel] [virtio-dev] " Stefan Hajnoczi 2017-12-14 15:46 ` [virtio-dev] Re: [Qemu-devel] " Stefan Hajnoczi 2017-12-14 16:27 ` [Qemu-devel] [virtio-dev] " Michael S. Tsirkin 2017-12-14 16:27 ` [virtio-dev] Re: [Qemu-devel] " Michael S. Tsirkin 2017-12-14 16:39 ` [Qemu-devel] [virtio-dev] " Maxime Coquelin 2017-12-14 16:39 ` [virtio-dev] Re: [Qemu-devel] " Maxime Coquelin 2017-12-14 16:40 ` [Qemu-devel] [virtio-dev] " Michael S. Tsirkin 2017-12-14 16:40 ` [virtio-dev] Re: [Qemu-devel] " Michael S. Tsirkin 2017-12-14 16:50 ` [Qemu-devel] [virtio-dev] " Maxime Coquelin 2017-12-14 16:50 ` [virtio-dev] Re: [Qemu-devel] " Maxime Coquelin 2017-12-14 18:11 ` [Qemu-devel] [virtio-dev] " Stefan Hajnoczi 2017-12-14 18:11 ` [virtio-dev] Re: [Qemu-devel] " Stefan Hajnoczi 2017-12-14 5:53 ` Wei Wang 2017-12-14 5:53 ` [virtio-dev] " Wei Wang 2017-12-14 17:32 ` Stefan Hajnoczi 2017-12-14 17:32 ` [virtio-dev] " Stefan Hajnoczi 2017-12-15 9:10 ` Wei Wang 2017-12-15 9:10 ` [virtio-dev] " Wei Wang 2017-12-15 12:26 ` Stefan Hajnoczi 2017-12-15 12:26 ` [virtio-dev] " Stefan Hajnoczi 2017-12-14 18:04 ` Stefan Hajnoczi 2017-12-14 18:04 ` [virtio-dev] " Stefan Hajnoczi 2017-12-15 10:33 ` [Qemu-devel] [virtio-dev] " Wei Wang 2017-12-15 10:33 ` [virtio-dev] Re: [Qemu-devel] " Wei Wang 2017-12-15 12:00 ` [Qemu-devel] [virtio-dev] " Stefan Hajnoczi 2017-12-15 12:00 ` [virtio-dev] Re: [Qemu-devel] " Stefan Hajnoczi 2017-12-06 16:13 ` Stefan Hajnoczi 2017-12-19 11:35 ` Stefan Hajnoczi 2017-12-19 11:35 ` Stefan Hajnoczi 2017-12-19 14:56 ` [Qemu-devel] " Michael S. Tsirkin 2017-12-19 14:56 ` Michael S. Tsirkin 2017-12-19 17:05 ` [Qemu-devel] " Stefan Hajnoczi 2017-12-20 4:06 ` Michael S. Tsirkin 2017-12-20 4:06 ` [virtio-dev] " Michael S. Tsirkin 2017-12-20 6:26 ` Stefan Hajnoczi
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=1512444796-30615-7-git-send-email-wei.w.wang@intel.com \ --to=wei.w.wang@intel.com \ --cc=avi.cohen@huawei.com \ --cc=jan.kiszka@siemens.com \ --cc=jasowang@redhat.com \ --cc=marcandre.lureau@redhat.com \ --cc=mst@redhat.com \ --cc=pbonzini@redhat.com \ --cc=qemu-devel@nongnu.org \ --cc=stefanha@redhat.com \ --cc=virtio-dev@lists.oasis-open.org \ --cc=zhiyong.yang@intel.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: linkBe 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.