Messages in this thread |  | | Subject | Re: [PATCH v15 4/7] mm: Introduce Reported pages | From | Nitesh Narayan Lal <> | Date | Mon, 16 Dec 2019 05:17:36 -0500 |
| |
On 12/5/19 11:22 AM, Alexander Duyck wrote: > From: Alexander Duyck <alexander.h.duyck@linux.intel.com> > > In order to pave the way for free page reporting in virtualized > environments we will need a way to get pages out of the free lists and > identify those pages after they have been returned. To accomplish this, > this patch adds the concept of a Reported Buddy, which is essentially > meant to just be the Uptodate flag used in conjunction with the Buddy > page type.
[...]
> +enum { > + PAGE_REPORTING_IDLE = 0, > + PAGE_REPORTING_REQUESTED, > + PAGE_REPORTING_ACTIVE > +}; > + > +/* request page reporting */ > +static void > +__page_reporting_request(struct page_reporting_dev_info *prdev) > +{ > + unsigned int state; > + > + /* Check to see if we are in desired state */ > + state = atomic_read(&prdev->state); > + if (state == PAGE_REPORTING_REQUESTED) > + return; > + > + /* > + * If reporting is already active there is nothing we need to do. > + * Test against 0 as that represents PAGE_REPORTING_IDLE. > + */ > + state = atomic_xchg(&prdev->state, PAGE_REPORTING_REQUESTED); > + if (state != PAGE_REPORTING_IDLE) > + return; > + > + /* > + * Delay the start of work to allow a sizable queue to build. For > + * now we are limiting this to running no more than once every > + * couple of seconds. > + */ > + schedule_delayed_work(&prdev->work, PAGE_REPORTING_DELAY); > +} > +
I think you recently switched to using an atomic variable for maintaining page reporting status as I was doing in v12. Which is good, as we will not have a disagreement on it now.
On a side note, apologies for not getting involved actively in the discussions/reviews as I am on PTO.
--
Nitesh
|  |