On 07.09.19 19:26, Alexander Duyck wrote:
> From: Alexander Duyck <[email protected]>
> 
> Currently the page poisoning setting wasn't being enabled unless free page
> hinting was enabled. However we will need the page poisoning tracking logic
> as well for unused page reporting. As such pull it out and make it a
> separate bit of config in the probe function.
> 
> In addition we can actually wrap the code in a check for NO_SANITY. If we
> don't care what is actually in the page we can just default to 0 and leave
> it there.
> 
> Signed-off-by: Alexander Duyck <[email protected]>
> ---
>  drivers/virtio/virtio_balloon.c |   22 +++++++++++++++-------
>  1 file changed, 15 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
> index 226fbb995fb0..d2547df7de93 100644
> --- a/drivers/virtio/virtio_balloon.c
> +++ b/drivers/virtio/virtio_balloon.c
> @@ -842,7 +842,6 @@ static int virtio_balloon_register_shrinker(struct 
> virtio_balloon *vb)
>  static int virtballoon_probe(struct virtio_device *vdev)
>  {
>       struct virtio_balloon *vb;
> -     __u32 poison_val;
>       int err;
>  
>       if (!vdev->config->get) {
> @@ -909,11 +908,18 @@ static int virtballoon_probe(struct virtio_device *vdev)
>                                                 VIRTIO_BALLOON_CMD_ID_STOP);
>               spin_lock_init(&vb->free_page_list_lock);
>               INIT_LIST_HEAD(&vb->free_page_list);
> -             if (virtio_has_feature(vdev, VIRTIO_BALLOON_F_PAGE_POISON)) {
> -                     memset(&poison_val, PAGE_POISON, sizeof(poison_val));
> -                     virtio_cwrite(vb->vdev, struct virtio_balloon_config,
> -                                   poison_val, &poison_val);
> -             }
> +     }
> +     if (virtio_has_feature(vdev, VIRTIO_BALLOON_F_PAGE_POISON)) {
> +             __u32 poison_val;
> +
> +             /*
> +              * Let hypervisor know that we are expecting a specific
> +              * value to be written back in unused pages.
> +              */

"Let the hypervisor know" ... ?

> +             memset(&poison_val, PAGE_POISON, sizeof(poison_val));
> +
> +             virtio_cwrite(vb->vdev, struct virtio_balloon_config,
> +                           poison_val, &poison_val);
>       }
>       /*
>        * We continue to use VIRTIO_BALLOON_F_DEFLATE_ON_OOM to decide if a
> @@ -1014,7 +1020,9 @@ static int virtballoon_restore(struct virtio_device 
> *vdev)
>  
>  static int virtballoon_validate(struct virtio_device *vdev)
>  {
> -     if (!page_poisoning_enabled())
> +     /* Notify host if we care about poison value */

"Tell the host whether we care about poisoned pages." ?

> +     if (IS_ENABLED(CONFIG_PAGE_POISONING_NO_SANITY) ||
> +         !page_poisoning_enabled())
>               __virtio_clear_bit(vdev, VIRTIO_BALLOON_F_PAGE_POISON);
>  
>       __virtio_clear_bit(vdev, VIRTIO_F_IOMMU_PLATFORM);
> 

Reviewed-by: David Hildenbrand <[email protected]>

-- 

Thanks,

David / dhildenb

Reply via email to