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

memtype.h (1470B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __MEMTYPE_H_
      3#define __MEMTYPE_H_
      4
      5extern int pat_debug_enable;
      6
      7#define dprintk(fmt, arg...) \
      8	do { if (pat_debug_enable) pr_info("x86/PAT: " fmt, ##arg); } while (0)
      9
     10struct memtype {
     11	u64			start;
     12	u64			end;
     13	u64			subtree_max_end;
     14	enum page_cache_mode	type;
     15	struct rb_node		rb;
     16};
     17
     18static inline char *cattr_name(enum page_cache_mode pcm)
     19{
     20	switch (pcm) {
     21	case _PAGE_CACHE_MODE_UC:		return "uncached";
     22	case _PAGE_CACHE_MODE_UC_MINUS:		return "uncached-minus";
     23	case _PAGE_CACHE_MODE_WB:		return "write-back";
     24	case _PAGE_CACHE_MODE_WC:		return "write-combining";
     25	case _PAGE_CACHE_MODE_WT:		return "write-through";
     26	case _PAGE_CACHE_MODE_WP:		return "write-protected";
     27	default:				return "broken";
     28	}
     29}
     30
     31#ifdef CONFIG_X86_PAT
     32extern int memtype_check_insert(struct memtype *entry_new,
     33				enum page_cache_mode *new_type);
     34extern struct memtype *memtype_erase(u64 start, u64 end);
     35extern struct memtype *memtype_lookup(u64 addr);
     36extern int memtype_copy_nth_element(struct memtype *entry_out, loff_t pos);
     37#else
     38static inline int memtype_check_insert(struct memtype *entry_new,
     39				       enum page_cache_mode *new_type)
     40{ return 0; }
     41static inline struct memtype *memtype_erase(u64 start, u64 end)
     42{ return NULL; }
     43static inline struct memtype *memtype_lookup(u64 addr)
     44{ return NULL; }
     45static inline int memtype_copy_nth_element(struct memtype *out, loff_t pos)
     46{ return 0; }
     47#endif
     48
     49#endif /* __MEMTYPE_H_ */