blob: 92015c65fa2ac95a040a745c5632870530010596 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
H. Peter Anvin1965aae2008-10-22 22:26:29 -07002#ifndef _ASM_X86_PAT_H
3#define _ASM_X86_PAT_H
venkatesh.pallipadi@intel.com2e5d9c82008-03-18 17:00:14 -07004
5#include <linux/types.h>
Jeremy Fitzhardingea964e332009-03-04 17:14:30 -08006#include <asm/pgtable_types.h>
venkatesh.pallipadi@intel.com2e5d9c82008-03-18 17:00:14 -07007
Luis R. Rodriguezcb32edf2015-05-26 10:28:15 +02008bool pat_enabled(void);
Toshi Kani224bb1e2016-03-23 15:41:58 -06009void pat_disable(const char *reason);
venkatesh.pallipadi@intel.com2e5d9c82008-03-18 17:00:14 -070010extern void pat_init(void);
Mikulas Patocka99c13b82017-07-04 19:04:23 -040011extern void init_cache_modes(void);
venkatesh.pallipadi@intel.com2e5d9c82008-03-18 17:00:14 -070012
13extern int reserve_memtype(u64 start, u64 end,
Juergen Grosse00c8cc2014-11-03 14:01:59 +010014 enum page_cache_mode req_pcm, enum page_cache_mode *ret_pcm);
venkatesh.pallipadi@intel.com2e5d9c82008-03-18 17:00:14 -070015extern int free_memtype(u64 start, u64 end);
16
Venkatesh Pallipadi7880f742009-02-24 17:35:13 -080017extern int kernel_map_sync_memtype(u64 base, unsigned long size,
Juergen Grossb14097b2014-11-03 14:01:58 +010018 enum page_cache_mode pcm);
Venkatesh Pallipadi7880f742009-02-24 17:35:13 -080019
Venkatesh Pallipadi9fd126bc2009-07-10 09:57:34 -070020int io_reserve_memtype(resource_size_t start, resource_size_t end,
Juergen Gross49a3b3c2014-11-03 14:01:54 +010021 enum page_cache_mode *pcm);
Venkatesh Pallipadi9fd126bc2009-07-10 09:57:34 -070022
23void io_free_memtype(resource_size_t start, resource_size_t end);
24
Haozhong Zhangb8d70442017-12-20 15:29:28 +080025bool pat_pfn_immune_to_uc_mtrr(unsigned long pfn);
26
H. Peter Anvin1965aae2008-10-22 22:26:29 -070027#endif /* _ASM_X86_PAT_H */