On Mon, 2019-09-09 at 10:59 +0200, David Hildenbrand wrote:
> 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. I will update the comments for v10.

- Alex

Reply via email to