linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] virtio-balloon: Document byte ordering of poison_val
@ 2020-07-13 20:35 Alexander Duyck
  2020-07-14  8:55 ` Michael S. Tsirkin
  2020-07-20  8:53 ` [virtio-dev] " David Hildenbrand
  0 siblings, 2 replies; 3+ messages in thread
From: Alexander Duyck @ 2020-07-13 20:35 UTC (permalink / raw)
  To: david, linux-kernel, kvm, mst; +Cc: virtio-dev

From: Alexander Duyck <alexander.h.duyck@linux.intel.com>

The poison_val field in the virtio_balloon_config is treated as a
little-endian field by the host. Since we are currently only having to deal
with a single byte poison value this isn't a problem, however if the value
should ever expand it would cause byte ordering issues. Document that in
the code so that we know that if the value should ever expand we need to
byte swap the value on big-endian architectures.

Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
---
 drivers/virtio/virtio_balloon.c |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index 1f157d2f4952..d0fd8f8dc6ed 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -974,6 +974,11 @@ static int virtballoon_probe(struct virtio_device *vdev)
 		/*
 		 * Let the hypervisor know that we are expecting a
 		 * specific value to be written back in balloon pages.
+		 *
+		 * If the PAGE_POISON value was larger than a byte we would
+		 * need to byte swap poison_val here to guarantee it is
+		 * little-endian. However for now it is a single byte so we
+		 * can pass it as-is.
 		 */
 		if (!want_init_on_free())
 			memset(&poison_val, PAGE_POISON, sizeof(poison_val));


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

* Re: [PATCH] virtio-balloon: Document byte ordering of poison_val
  2020-07-13 20:35 [PATCH] virtio-balloon: Document byte ordering of poison_val Alexander Duyck
@ 2020-07-14  8:55 ` Michael S. Tsirkin
  2020-07-20  8:53 ` [virtio-dev] " David Hildenbrand
  1 sibling, 0 replies; 3+ messages in thread
From: Michael S. Tsirkin @ 2020-07-14  8:55 UTC (permalink / raw)
  To: Alexander Duyck; +Cc: david, linux-kernel, kvm, virtio-dev

On Mon, Jul 13, 2020 at 01:35:39PM -0700, Alexander Duyck wrote:
> From: Alexander Duyck <alexander.h.duyck@linux.intel.com>
> 
> The poison_val field in the virtio_balloon_config is treated as a
> little-endian field by the host. Since we are currently only having to deal
> with a single byte poison value this isn't a problem, however if the value
> should ever expand it would cause byte ordering issues. Document that in
> the code so that we know that if the value should ever expand we need to
> byte swap the value on big-endian architectures.
> 
> Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>

Queued, thanks!

> ---
>  drivers/virtio/virtio_balloon.c |    5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
> index 1f157d2f4952..d0fd8f8dc6ed 100644
> --- a/drivers/virtio/virtio_balloon.c
> +++ b/drivers/virtio/virtio_balloon.c
> @@ -974,6 +974,11 @@ static int virtballoon_probe(struct virtio_device *vdev)
>  		/*
>  		 * Let the hypervisor know that we are expecting a
>  		 * specific value to be written back in balloon pages.
> +		 *
> +		 * If the PAGE_POISON value was larger than a byte we would
> +		 * need to byte swap poison_val here to guarantee it is
> +		 * little-endian. However for now it is a single byte so we
> +		 * can pass it as-is.
>  		 */
>  		if (!want_init_on_free())
>  			memset(&poison_val, PAGE_POISON, sizeof(poison_val));


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

* Re: [virtio-dev] [PATCH] virtio-balloon: Document byte ordering of poison_val
  2020-07-13 20:35 [PATCH] virtio-balloon: Document byte ordering of poison_val Alexander Duyck
  2020-07-14  8:55 ` Michael S. Tsirkin
@ 2020-07-20  8:53 ` David Hildenbrand
  1 sibling, 0 replies; 3+ messages in thread
From: David Hildenbrand @ 2020-07-20  8:53 UTC (permalink / raw)
  To: Alexander Duyck, linux-kernel, kvm, mst; +Cc: virtio-dev

On 13.07.20 22:35, Alexander Duyck wrote:
> From: Alexander Duyck <alexander.h.duyck@linux.intel.com>
> 
> The poison_val field in the virtio_balloon_config is treated as a
> little-endian field by the host. Since we are currently only having to deal
> with a single byte poison value this isn't a problem, however if the value
> should ever expand it would cause byte ordering issues. Document that in
> the code so that we know that if the value should ever expand we need to
> byte swap the value on big-endian architectures.
> 
> Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
> ---
>  drivers/virtio/virtio_balloon.c |    5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
> index 1f157d2f4952..d0fd8f8dc6ed 100644
> --- a/drivers/virtio/virtio_balloon.c
> +++ b/drivers/virtio/virtio_balloon.c
> @@ -974,6 +974,11 @@ static int virtballoon_probe(struct virtio_device *vdev)
>  		/*
>  		 * Let the hypervisor know that we are expecting a
>  		 * specific value to be written back in balloon pages.
> +		 *
> +		 * If the PAGE_POISON value was larger than a byte we would
> +		 * need to byte swap poison_val here to guarantee it is
> +		 * little-endian. However for now it is a single byte so we
> +		 * can pass it as-is.

Yeah, why not (although it's pretty fundamental that 1-byte values don't
need any swapping).

Acked-by: David Hildenbrand <david@redhat.com>


-- 
Thanks,

David / dhildenb


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

end of thread, other threads:[~2020-07-20  8:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-13 20:35 [PATCH] virtio-balloon: Document byte ordering of poison_val Alexander Duyck
2020-07-14  8:55 ` Michael S. Tsirkin
2020-07-20  8:53 ` [virtio-dev] " David Hildenbrand

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).