On Mon, 2019-12-16 at 05:17 -0500, Nitesh Narayan Lal wrote: > On 12/5/19 11:22 AM, Alexander Duyck wrote: > > From: Alexander Duyck <alexander.h.duyck@xxxxxxxxxxxxxxx> > > > > 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. There is still some differences between our approaches if I am not mistaken. Specifically I have code in place so that any requests to report while we are actively working on reporting will trigger another pass being scheduled after we completed. I still believe you were lacking any logic like that as I recall. > On a side note, apologies for not getting involved actively in the > discussions/reviews as I am on PTO. No problem. I've been mostly looking for input from the core MM maintainers anyway as we sorted most of the virtualization pieces some time ago.