All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/4] virtio: console makes incorrect assumption about virtio API
@ 2010-03-30  5:19 Rusty Russell
  2010-03-30  6:30 ` Amit Shah
  0 siblings, 1 reply; 2+ messages in thread
From: Rusty Russell @ 2010-03-30  5:19 UTC (permalink / raw)
  To: Amit Shah; +Cc: Michael S. Tsirkin, virtualization

The get_buf() API sets the second arg to the number of bytes *written*
by the other side; in this case it should be zero as these are output buffers.

lguest gets this right (obviously kvm's console doesn't), resulting in
continual buildup of console writes.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
To: Amit Shah <amit.shah@redhat.com>
---
 drivers/char/virtio_console.c |   10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
--- a/drivers/char/virtio_console.c
+++ b/drivers/char/virtio_console.c
@@ -415,20 +415,16 @@ static ssize_t send_buf(struct port *por
 	out_vq->vq_ops->kick(out_vq);
 
 	if (ret < 0) {
-		len = 0;
+		in_count = 0;
 		goto fail;
 	}
 
-	/*
-	 * Wait till the host acknowledges it pushed out the data we
-	 * sent. Also ensure we return to userspace the number of
-	 * bytes that were successfully consumed by the host.
-	 */
+	/* Wait till the host acknowledges it pushed out the data we sent. */
 	while (!out_vq->vq_ops->get_buf(out_vq, &len))
 		cpu_relax();
 fail:
 	/* We're expected to return the amount of data we wrote */
-	return len;
+	return in_count;
 }
 
 /*

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH 3/4] virtio: console makes incorrect assumption about virtio API
  2010-03-30  5:19 [PATCH 3/4] virtio: console makes incorrect assumption about virtio API Rusty Russell
@ 2010-03-30  6:30 ` Amit Shah
  0 siblings, 0 replies; 2+ messages in thread
From: Amit Shah @ 2010-03-30  6:30 UTC (permalink / raw)
  To: Rusty Russell; +Cc: Michael S. Tsirkin, virtualization

On (Tue) Mar 30 2010 [15:49:22], Rusty Russell wrote:
> The get_buf() API sets the second arg to the number of bytes *written*
> by the other side; in this case it should be zero as these are output buffers.
> 
> lguest gets this right (obviously kvm's console doesn't), resulting in
> continual buildup of console writes.
> 
> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
> To: Amit Shah <amit.shah@redhat.com>

Acked-by: Amit Shah <amit.shah@redhat.com>

> ---
>  drivers/char/virtio_console.c |   10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
> --- a/drivers/char/virtio_console.c
> +++ b/drivers/char/virtio_console.c
> @@ -415,20 +415,16 @@ static ssize_t send_buf(struct port *por
>  	out_vq->vq_ops->kick(out_vq);
>  
>  	if (ret < 0) {
> -		len = 0;
> +		in_count = 0;
>  		goto fail;
>  	}
>  
> -	/*
> -	 * Wait till the host acknowledges it pushed out the data we
> -	 * sent. Also ensure we return to userspace the number of
> -	 * bytes that were successfully consumed by the host.
> -	 */
> +	/* Wait till the host acknowledges it pushed out the data we sent. */
>  	while (!out_vq->vq_ops->get_buf(out_vq, &len))
>  		cpu_relax();
>  fail:
>  	/* We're expected to return the amount of data we wrote */
> -	return len;
> +	return in_count;
>  }
>  
>  /*
> 

		Amit
-- 
http://log.amitshah.net/

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-03-30  6:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-03-30  5:19 [PATCH 3/4] virtio: console makes incorrect assumption about virtio API Rusty Russell
2010-03-30  6:30 ` Amit Shah

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.