From: Stefano Garzarella <sgarzare@redhat.com> To: Arseny Krasnov <arseny.krasnov@kaspersky.com> Cc: Stefan Hajnoczi <stefanha@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>, "David S. Miller" <davem@davemloft.net>, Jakub Kicinski <kuba@kernel.org>, Jorgen Hansen <jhansen@vmware.com>, Norbert Slusarek <nslusarek@gmx.net>, Andra Paraschiv <andraprs@amazon.com>, Colin Ian King <colin.king@canonical.com>, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, stsp2@yandex.ru, oxffffaa@gmail.com Subject: Re: [RFC PATCH v9 14/19] virtio/vsock: enable SEQPACKET for transport Date: Thu, 13 May 2021 14:49:12 +0200 [thread overview] Message-ID: <20210513124912.sw4rea75re7xwjdz@steredhat> (raw) In-Reply-To: <20210508163617.3432380-1-arseny.krasnov@kaspersky.com> On Sat, May 08, 2021 at 07:36:14PM +0300, Arseny Krasnov wrote: >This adds >1) SEQPACKET ops for virtio transport and 'seqpacket_allow()' callback. >2) Handling of SEQPACKET bit: guest tries to negotiate it with vhost. > >Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com> >--- > v8 -> v9: > 1) Move 'seqpacket_allow' to 'struct virtio_vsock'. > > net/vmw_vsock/virtio_transport.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > >diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c >index 2700a63ab095..f714c16af65d 100644 >--- a/net/vmw_vsock/virtio_transport.c >+++ b/net/vmw_vsock/virtio_transport.c >@@ -62,6 +62,7 @@ struct virtio_vsock { > struct virtio_vsock_event event_list[8]; > > u32 guest_cid; >+ bool seqpacket_allow; > }; > > static u32 virtio_transport_get_local_cid(void) >@@ -443,6 +444,8 @@ static void virtio_vsock_rx_done(struct virtqueue *vq) > queue_work(virtio_vsock_workqueue, &vsock->rx_work); > } > >+static bool virtio_transport_seqpacket_allow(u32 remote_cid); >+ > static struct virtio_transport virtio_transport = { > .transport = { > .module = THIS_MODULE, >@@ -469,6 +472,10 @@ static struct virtio_transport virtio_transport = { > .stream_is_active = virtio_transport_stream_is_active, > .stream_allow = virtio_transport_stream_allow, > >+ .seqpacket_dequeue = virtio_transport_seqpacket_dequeue, >+ .seqpacket_enqueue = virtio_transport_seqpacket_enqueue, >+ .seqpacket_allow = virtio_transport_seqpacket_allow, >+ > .notify_poll_in = virtio_transport_notify_poll_in, > .notify_poll_out = virtio_transport_notify_poll_out, > .notify_recv_init = virtio_transport_notify_recv_init, >@@ -485,6 +492,19 @@ static struct virtio_transport virtio_transport = { > .send_pkt = virtio_transport_send_pkt, > }; > >+static bool virtio_transport_seqpacket_allow(u32 remote_cid) >+{ >+ struct virtio_vsock *vsock; >+ bool seqpacket_allow; >+ >+ rcu_read_lock(); >+ vsock = rcu_dereference(the_virtio_vsock); >+ seqpacket_allow = vsock->seqpacket_allow; >+ rcu_read_unlock(); >+ >+ return seqpacket_allow; >+} >+ > static void virtio_transport_rx_work(struct work_struct *work) > { > struct virtio_vsock *vsock = >@@ -612,6 +632,10 @@ static int virtio_vsock_probe(struct virtio_device *vdev) > rcu_assign_pointer(the_virtio_vsock, vsock); > > mutex_unlock(&the_virtio_vsock_mutex); >+ >+ if (vdev->features & (1ULL << VIRTIO_VSOCK_F_SEQPACKET)) We should use virtio_has_feature() to check the device features. >+ vsock->seqpacket_allow = true; When we assign the_virtio_vsock pointer, we should already set all the fields, so please move this code before the following block: # here vdev->priv = vsock; rcu_assign_pointer(the_virtio_vsock, vsock);
WARNING: multiple messages have this Message-ID (diff)
From: Stefano Garzarella <sgarzare@redhat.com> To: Arseny Krasnov <arseny.krasnov@kaspersky.com> Cc: Andra Paraschiv <andraprs@amazon.com>, kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>, netdev@vger.kernel.org, stsp2@yandex.ru, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, oxffffaa@gmail.com, Norbert Slusarek <nslusarek@gmx.net>, Stefan Hajnoczi <stefanha@redhat.com>, Colin Ian King <colin.king@canonical.com>, Jakub Kicinski <kuba@kernel.org>, "David S. Miller" <davem@davemloft.net>, Jorgen Hansen <jhansen@vmware.com> Subject: Re: [RFC PATCH v9 14/19] virtio/vsock: enable SEQPACKET for transport Date: Thu, 13 May 2021 14:49:12 +0200 [thread overview] Message-ID: <20210513124912.sw4rea75re7xwjdz@steredhat> (raw) In-Reply-To: <20210508163617.3432380-1-arseny.krasnov@kaspersky.com> On Sat, May 08, 2021 at 07:36:14PM +0300, Arseny Krasnov wrote: >This adds >1) SEQPACKET ops for virtio transport and 'seqpacket_allow()' callback. >2) Handling of SEQPACKET bit: guest tries to negotiate it with vhost. > >Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com> >--- > v8 -> v9: > 1) Move 'seqpacket_allow' to 'struct virtio_vsock'. > > net/vmw_vsock/virtio_transport.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > >diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c >index 2700a63ab095..f714c16af65d 100644 >--- a/net/vmw_vsock/virtio_transport.c >+++ b/net/vmw_vsock/virtio_transport.c >@@ -62,6 +62,7 @@ struct virtio_vsock { > struct virtio_vsock_event event_list[8]; > > u32 guest_cid; >+ bool seqpacket_allow; > }; > > static u32 virtio_transport_get_local_cid(void) >@@ -443,6 +444,8 @@ static void virtio_vsock_rx_done(struct virtqueue *vq) > queue_work(virtio_vsock_workqueue, &vsock->rx_work); > } > >+static bool virtio_transport_seqpacket_allow(u32 remote_cid); >+ > static struct virtio_transport virtio_transport = { > .transport = { > .module = THIS_MODULE, >@@ -469,6 +472,10 @@ static struct virtio_transport virtio_transport = { > .stream_is_active = virtio_transport_stream_is_active, > .stream_allow = virtio_transport_stream_allow, > >+ .seqpacket_dequeue = virtio_transport_seqpacket_dequeue, >+ .seqpacket_enqueue = virtio_transport_seqpacket_enqueue, >+ .seqpacket_allow = virtio_transport_seqpacket_allow, >+ > .notify_poll_in = virtio_transport_notify_poll_in, > .notify_poll_out = virtio_transport_notify_poll_out, > .notify_recv_init = virtio_transport_notify_recv_init, >@@ -485,6 +492,19 @@ static struct virtio_transport virtio_transport = { > .send_pkt = virtio_transport_send_pkt, > }; > >+static bool virtio_transport_seqpacket_allow(u32 remote_cid) >+{ >+ struct virtio_vsock *vsock; >+ bool seqpacket_allow; >+ >+ rcu_read_lock(); >+ vsock = rcu_dereference(the_virtio_vsock); >+ seqpacket_allow = vsock->seqpacket_allow; >+ rcu_read_unlock(); >+ >+ return seqpacket_allow; >+} >+ > static void virtio_transport_rx_work(struct work_struct *work) > { > struct virtio_vsock *vsock = >@@ -612,6 +632,10 @@ static int virtio_vsock_probe(struct virtio_device *vdev) > rcu_assign_pointer(the_virtio_vsock, vsock); > > mutex_unlock(&the_virtio_vsock_mutex); >+ >+ if (vdev->features & (1ULL << VIRTIO_VSOCK_F_SEQPACKET)) We should use virtio_has_feature() to check the device features. >+ vsock->seqpacket_allow = true; When we assign the_virtio_vsock pointer, we should already set all the fields, so please move this code before the following block: # here vdev->priv = vsock; rcu_assign_pointer(the_virtio_vsock, vsock); _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2021-05-13 12:49 UTC|newest] Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-05-08 16:30 [RFC PATCH v9 00/19] virtio/vsock: introduce SOCK_SEQPACKET support Arseny Krasnov 2021-05-08 16:32 ` [RFC PATCH v9 01/19] af_vsock: update functions for connectible socket Arseny Krasnov 2021-05-08 16:32 ` [RFC PATCH v9 02/19] af_vsock: separate wait data loop Arseny Krasnov 2021-05-08 16:33 ` [RFC PATCH v9 03/19] af_vsock: separate receive " Arseny Krasnov 2021-05-08 16:33 ` [RFC PATCH v9 04/19] af_vsock: implement SEQPACKET receive loop Arseny Krasnov 2021-05-13 11:37 ` Stefano Garzarella 2021-05-13 11:37 ` Stefano Garzarella 2021-05-13 14:41 ` Arseny Krasnov 2021-05-08 16:33 ` [RFC PATCH v9 05/19] af_vsock: implement send logic for SEQPACKET Arseny Krasnov 2021-05-08 16:33 ` [RFC PATCH v9 06/19] af_vsock: rest of SEQPACKET support Arseny Krasnov 2021-05-13 11:42 ` Stefano Garzarella 2021-05-13 11:42 ` Stefano Garzarella 2021-05-08 16:34 ` [RFC PATCH v9 07/19] af_vsock: update comments for stream sockets Arseny Krasnov 2021-05-08 16:34 ` [RFC PATCH v9 08/19] virtio/vsock: set packet's type in virtio_transport_send_pkt_info() Arseny Krasnov 2021-05-08 16:34 ` [RFC PATCH v9 09/19] virtio/vsock: simplify credit update function API Arseny Krasnov 2021-05-08 16:35 ` [RFC PATCH v9 10/19] virtio/vsock: defines and constants for SEQPACKET Arseny Krasnov 2021-05-13 11:45 ` Stefano Garzarella 2021-05-13 11:45 ` Stefano Garzarella 2021-05-13 14:42 ` Arseny Krasnov 2021-05-08 16:35 ` [RFC PATCH v9 11/19] virtio/vsock: dequeue callback for SOCK_SEQPACKET Arseny Krasnov 2021-05-13 11:58 ` Stefano Garzarella 2021-05-13 11:58 ` Stefano Garzarella 2021-05-13 14:42 ` Arseny Krasnov 2021-05-13 12:18 ` Stefano Garzarella 2021-05-13 12:18 ` Stefano Garzarella 2021-05-08 16:35 ` [RFC PATCH v9 12/19] virtio/vsock: add SEQPACKET receive logic Arseny Krasnov 2021-05-13 12:14 ` Stefano Garzarella 2021-05-13 12:14 ` Stefano Garzarella 2021-05-13 14:43 ` Arseny Krasnov 2021-05-08 16:35 ` [RFC PATCH v9 13/19] virtio/vsock: rest of SOCK_SEQPACKET support Arseny Krasnov 2021-05-13 12:27 ` Stefano Garzarella 2021-05-13 12:27 ` Stefano Garzarella 2021-05-13 13:03 ` Stefano Garzarella 2021-05-13 13:03 ` Stefano Garzarella 2021-05-08 16:36 ` [RFC PATCH v9 14/19] virtio/vsock: enable SEQPACKET for transport Arseny Krasnov 2021-05-13 12:49 ` Stefano Garzarella [this message] 2021-05-13 12:49 ` Stefano Garzarella 2021-05-13 14:44 ` Arseny Krasnov 2021-05-08 16:36 ` [RFC PATCH v9 15/19] vhost/vsock: " Arseny Krasnov 2021-05-13 13:44 ` Stefano Garzarella 2021-05-13 13:44 ` Stefano Garzarella 2021-05-08 16:36 ` [RFC PATCH v9 16/19] vsock/loopback: " Arseny Krasnov 2021-05-08 16:37 ` [RFC PATCH v9 17/19] vsock_test: add SOCK_SEQPACKET tests Arseny Krasnov 2021-05-13 13:47 ` Stefano Garzarella 2021-05-13 13:47 ` Stefano Garzarella 2021-05-08 16:37 ` [RFC PATCH v9 18/19] virtio/vsock: update trace event for SEQPACKET Arseny Krasnov 2021-05-08 16:37 ` [RFC PATCH v9 19/19] af_vsock: serialize writes to shared socket Arseny Krasnov 2021-05-13 14:01 ` Stefano Garzarella 2021-05-13 14:01 ` Stefano Garzarella 2021-05-13 14:45 ` Arseny Krasnov 2021-05-13 14:46 ` Stefano Garzarella 2021-05-13 14:46 ` Stefano Garzarella 2021-05-13 14:48 ` Arseny Krasnov 2021-05-13 15:41 ` Stefano Garzarella 2021-05-13 15:41 ` Stefano Garzarella 2021-05-13 14:51 ` Arseny Krasnov 2021-05-13 14:10 ` [RFC PATCH v9 00/19] virtio/vsock: introduce SOCK_SEQPACKET support Stefano Garzarella 2021-05-13 14:10 ` Stefano Garzarella 2021-05-13 14:46 ` Arseny Krasnov
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=20210513124912.sw4rea75re7xwjdz@steredhat \ --to=sgarzare@redhat.com \ --cc=andraprs@amazon.com \ --cc=arseny.krasnov@kaspersky.com \ --cc=colin.king@canonical.com \ --cc=davem@davemloft.net \ --cc=jasowang@redhat.com \ --cc=jhansen@vmware.com \ --cc=kuba@kernel.org \ --cc=kvm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mst@redhat.com \ --cc=netdev@vger.kernel.org \ --cc=nslusarek@gmx.net \ --cc=oxffffaa@gmail.com \ --cc=stefanha@redhat.com \ --cc=stsp2@yandex.ru \ --cc=virtualization@lists.linux-foundation.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: 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.