cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

free_page_reporting.rst (2059B)


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