1===================== 2Free Page Reporting 3===================== 4 5Free page reporting is an API by which a device can register to receive 6lists of pages that are currently unused by the system. This is useful in 7the case of virtualization where a guest is then able to use this data to 8notify the hypervisor that it is no longer using certain pages in memory. 9 10For the driver, typically a balloon driver, to use of this functionality 11it will allocate and initialize a page_reporting_dev_info structure. The 12field within the structure it will populate is the "report" function 13pointer used to process the scatterlist. It must also guarantee that it can 14handle at least PAGE_REPORTING_CAPACITY worth of scatterlist entries per 15call to the function. A call to page_reporting_register will register the 16page reporting interface with the reporting framework assuming no other 17page reporting devices are already registered. 18 19Once registered the page reporting API will begin reporting batches of 20pages to the driver. The API will start reporting pages 2 seconds after 21the interface is registered and will continue to do so 2 seconds after any 22page of a sufficiently high order is freed. 23 24Pages reported will be stored in the scatterlist passed to the reporting 25function with the final entry having the end bit set in entry nent - 1. 26While pages are being processed by the report function they will not be 27accessible to the allocator. Once the report function has been completed 28the pages will be returned to the free area from which they were obtained. 29 30Prior to removing a driver that is making use of free page reporting it 31is necessary to call page_reporting_unregister to have the 32page_reporting_dev_info structure that is currently in use by free page 33reporting removed. Doing this will prevent further reports from being 34issued via the interface. If another driver or the same driver is 35registered it is possible for it to resume where the previous driver had 36left off in terms of reporting free pages. 37 38Alexander Duyck, Dec 04, 2019 39