41 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. _free_page_reporting:
 | |
| 
 | |
| =====================
 | |
| Free Page Reporting
 | |
| =====================
 | |
| 
 | |
| Free page reporting is an API by which a device can register to receive
 | |
| lists of pages that are currently unused by the system. This is useful in
 | |
| the case of virtualization where a guest is then able to use this data to
 | |
| notify the hypervisor that it is no longer using certain pages in memory.
 | |
| 
 | |
| For the driver, typically a balloon driver, to use of this functionality
 | |
| it will allocate and initialize a page_reporting_dev_info structure. The
 | |
| field within the structure it will populate is the "report" function
 | |
| pointer used to process the scatterlist. It must also guarantee that it can
 | |
| handle at least PAGE_REPORTING_CAPACITY worth of scatterlist entries per
 | |
| call to the function. A call to page_reporting_register will register the
 | |
| page reporting interface with the reporting framework assuming no other
 | |
| page reporting devices are already registered.
 | |
| 
 | |
| Once registered the page reporting API will begin reporting batches of
 | |
| pages to the driver. The API will start reporting pages 2 seconds after
 | |
| the interface is registered and will continue to do so 2 seconds after any
 | |
| page of a sufficiently high order is freed.
 | |
| 
 | |
| Pages reported will be stored in the scatterlist passed to the reporting
 | |
| function with the final entry having the end bit set in entry nent - 1.
 | |
| While pages are being processed by the report function they will not be
 | |
| accessible to the allocator. Once the report function has been completed
 | |
| the pages will be returned to the free area from which they were obtained.
 | |
| 
 | |
| Prior to removing a driver that is making use of free page reporting it
 | |
| is necessary to call page_reporting_unregister to have the
 | |
| page_reporting_dev_info structure that is currently in use by free page
 | |
| reporting removed. Doing this will prevent further reports from being
 | |
| issued via the interface. If another driver or the same driver is
 | |
| registered it is possible for it to resume where the previous driver had
 | |
| left off in terms of reporting free pages.
 | |
| 
 | |
| Alexander Duyck, Dec 04, 2019
 |