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

page-isolation.h (1582B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __LINUX_PAGEISOLATION_H
      3#define __LINUX_PAGEISOLATION_H
      4
      5#ifdef CONFIG_MEMORY_ISOLATION
      6static inline bool has_isolate_pageblock(struct zone *zone)
      7{
      8	return zone->nr_isolate_pageblock;
      9}
     10static inline bool is_migrate_isolate_page(struct page *page)
     11{
     12	return get_pageblock_migratetype(page) == MIGRATE_ISOLATE;
     13}
     14static inline bool is_migrate_isolate(int migratetype)
     15{
     16	return migratetype == MIGRATE_ISOLATE;
     17}
     18#else
     19static inline bool has_isolate_pageblock(struct zone *zone)
     20{
     21	return false;
     22}
     23static inline bool is_migrate_isolate_page(struct page *page)
     24{
     25	return false;
     26}
     27static inline bool is_migrate_isolate(int migratetype)
     28{
     29	return false;
     30}
     31#endif
     32
     33#define MEMORY_OFFLINE	0x1
     34#define REPORT_FAILURE	0x2
     35
     36void set_pageblock_migratetype(struct page *page, int migratetype);
     37int move_freepages_block(struct zone *zone, struct page *page,
     38				int migratetype, int *num_movable);
     39
     40/*
     41 * Changes migrate type in [start_pfn, end_pfn) to be MIGRATE_ISOLATE.
     42 */
     43int
     44start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn,
     45			 int migratetype, int flags, gfp_t gfp_flags);
     46
     47/*
     48 * Changes MIGRATE_ISOLATE to MIGRATE_MOVABLE.
     49 * target range is [start_pfn, end_pfn)
     50 */
     51void
     52undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn,
     53			int migratetype);
     54
     55/*
     56 * Test all pages in [start_pfn, end_pfn) are isolated or not.
     57 */
     58int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn,
     59			int isol_flags);
     60
     61struct page *alloc_migrate_target(struct page *page, unsigned long private);
     62
     63#endif