Re: [PATCH 5/7] vhost-user: hoist "write_msg", "get_features", "get_u64"

2023-08-30 Thread Philippe Mathieu-Daudé

On 27/8/23 20:29, Laszlo Ersek wrote:

In order to avoid a forward-declaration for "vhost_user_write_msg" in a
subsequent patch, hoist "vhost_user_write_msg" ->
"vhost_user_get_features" -> "vhost_user_get_u64" just above
"vhost_set_vring".

This is purely code movement -- no observable change.

Cc: "Michael S. Tsirkin"  (supporter:vhost)
Cc: Eugenio Perez Martin 
Cc: German Maglione 
Cc: Liu Jiang 
Cc: Sergio Lopez Pascual 
Cc: Stefano Garzarella 
Signed-off-by: Laszlo Ersek 
---
  hw/virtio/vhost-user.c | 170 ++--
  1 file changed, 85 insertions(+), 85 deletions(-)


Reviewed-by: Philippe Mathieu-Daudé 




Re: [PATCH 5/7] vhost-user: hoist "write_msg", "get_features", "get_u64"

2023-08-30 Thread Stefano Garzarella

On Sun, Aug 27, 2023 at 08:29:35PM +0200, Laszlo Ersek wrote:

In order to avoid a forward-declaration for "vhost_user_write_msg" in a
subsequent patch, hoist "vhost_user_write_msg" ->
"vhost_user_get_features" -> "vhost_user_get_u64" just above
"vhost_set_vring".

This is purely code movement -- no observable change.

Cc: "Michael S. Tsirkin"  (supporter:vhost)
Cc: Eugenio Perez Martin 
Cc: German Maglione 
Cc: Liu Jiang 
Cc: Sergio Lopez Pascual 
Cc: Stefano Garzarella 
Signed-off-by: Laszlo Ersek 
---
hw/virtio/vhost-user.c | 170 ++--
1 file changed, 85 insertions(+), 85 deletions(-)


Reviewed-by: Stefano Garzarella 




[PATCH 5/7] vhost-user: hoist "write_msg", "get_features", "get_u64"

2023-08-27 Thread Laszlo Ersek
In order to avoid a forward-declaration for "vhost_user_write_msg" in a
subsequent patch, hoist "vhost_user_write_msg" ->
"vhost_user_get_features" -> "vhost_user_get_u64" just above
"vhost_set_vring".

This is purely code movement -- no observable change.

Cc: "Michael S. Tsirkin"  (supporter:vhost)
Cc: Eugenio Perez Martin 
Cc: German Maglione 
Cc: Liu Jiang 
Cc: Sergio Lopez Pascual 
Cc: Stefano Garzarella 
Signed-off-by: Laszlo Ersek 
---
 hw/virtio/vhost-user.c | 170 ++--
 1 file changed, 85 insertions(+), 85 deletions(-)

diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
index 8eb7fd094c43..cadafebd0767 100644
--- a/hw/virtio/vhost-user.c
+++ b/hw/virtio/vhost-user.c
@@ -1083,6 +1083,91 @@ static int vhost_user_set_vring_endian(struct vhost_dev 
*dev,
 return vhost_user_write(dev, , NULL, 0);
 }
 
+static int vhost_user_get_u64(struct vhost_dev *dev, int request, uint64_t 
*u64)
+{
+int ret;
+VhostUserMsg msg = {
+.hdr.request = request,
+.hdr.flags = VHOST_USER_VERSION,
+};
+
+if (vhost_user_per_device_request(request) && dev->vq_index != 0) {
+return 0;
+}
+
+ret = vhost_user_write(dev, , NULL, 0);
+if (ret < 0) {
+return ret;
+}
+
+ret = vhost_user_read(dev, );
+if (ret < 0) {
+return ret;
+}
+
+if (msg.hdr.request != request) {
+error_report("Received unexpected msg type. Expected %d received %d",
+ request, msg.hdr.request);
+return -EPROTO;
+}
+
+if (msg.hdr.size != sizeof(msg.payload.u64)) {
+error_report("Received bad msg size.");
+return -EPROTO;
+}
+
+*u64 = msg.payload.u64;
+
+return 0;
+}
+
+static int vhost_user_get_features(struct vhost_dev *dev, uint64_t *features)
+{
+if (vhost_user_get_u64(dev, VHOST_USER_GET_FEATURES, features) < 0) {
+return -EPROTO;
+}
+
+return 0;
+}
+
+/* Note: "msg->hdr.flags" may be modified. */
+static int vhost_user_write_msg(struct vhost_dev *dev, VhostUserMsg *msg,
+bool wait_for_reply)
+{
+int ret;
+
+if (wait_for_reply) {
+bool reply_supported = virtio_has_feature(dev->protocol_features,
+  VHOST_USER_PROTOCOL_F_REPLY_ACK);
+if (reply_supported) {
+msg->hdr.flags |= VHOST_USER_NEED_REPLY_MASK;
+}
+}
+
+ret = vhost_user_write(dev, msg, NULL, 0);
+if (ret < 0) {
+return ret;
+}
+
+if (wait_for_reply) {
+uint64_t dummy;
+
+if (msg->hdr.flags & VHOST_USER_NEED_REPLY_MASK) {
+return process_message_reply(dev, msg);
+}
+
+   /*
+* We need to wait for a reply but the backend does not
+* support replies for the command we just sent.
+* Send VHOST_USER_GET_FEATURES which makes all backends
+* send a reply.
+*/
+return vhost_user_get_features(dev, );
+}
+
+return 0;
+}
+
 static int vhost_set_vring(struct vhost_dev *dev,
unsigned long int request,
struct vhost_vring_state *ring)
@@ -1255,91 +1340,6 @@ static int vhost_user_set_vring_err(struct vhost_dev 
*dev,
 return vhost_set_vring_file(dev, VHOST_USER_SET_VRING_ERR, file);
 }
 
-static int vhost_user_get_u64(struct vhost_dev *dev, int request, uint64_t 
*u64)
-{
-int ret;
-VhostUserMsg msg = {
-.hdr.request = request,
-.hdr.flags = VHOST_USER_VERSION,
-};
-
-if (vhost_user_per_device_request(request) && dev->vq_index != 0) {
-return 0;
-}
-
-ret = vhost_user_write(dev, , NULL, 0);
-if (ret < 0) {
-return ret;
-}
-
-ret = vhost_user_read(dev, );
-if (ret < 0) {
-return ret;
-}
-
-if (msg.hdr.request != request) {
-error_report("Received unexpected msg type. Expected %d received %d",
- request, msg.hdr.request);
-return -EPROTO;
-}
-
-if (msg.hdr.size != sizeof(msg.payload.u64)) {
-error_report("Received bad msg size.");
-return -EPROTO;
-}
-
-*u64 = msg.payload.u64;
-
-return 0;
-}
-
-static int vhost_user_get_features(struct vhost_dev *dev, uint64_t *features)
-{
-if (vhost_user_get_u64(dev, VHOST_USER_GET_FEATURES, features) < 0) {
-return -EPROTO;
-}
-
-return 0;
-}
-
-/* Note: "msg->hdr.flags" may be modified. */
-static int vhost_user_write_msg(struct vhost_dev *dev, VhostUserMsg *msg,
-bool wait_for_reply)
-{
-int ret;
-
-if (wait_for_reply) {
-bool reply_supported = virtio_has_feature(dev->protocol_features,
-  VHOST_USER_PROTOCOL_F_REPLY_ACK);
-if (reply_supported) {
-msg->hdr.flags |= VHOST_USER_NEED_REPLY_MASK;
-}
-}
-
-ret = vhost_user_write(dev, msg, NULL, 0);
-if (ret < 0) {
-return ret;