2008-10-23 12:26:29 +07:00
|
|
|
#ifndef _ASM_X86_E820_H
|
|
|
|
#define _ASM_X86_E820_H
|
2008-05-14 22:15:40 +07:00
|
|
|
|
2016-12-06 00:49:13 +07:00
|
|
|
/*
|
|
|
|
* E820_X_MAX is the maximum size of the extended E820 table. The extended
|
|
|
|
* table may contain up to 3 extra E820 entries per possible NUMA node, so we
|
|
|
|
* make room for 3 * MAX_NUMNODES possible entries, beyond the standard 128.
|
|
|
|
* Also note that E820_X_MAX *must* be defined before we include uapi/asm/e820.h.
|
|
|
|
*/
|
2008-05-14 22:15:40 +07:00
|
|
|
#include <linux/numa.h>
|
|
|
|
#define E820_X_MAX (E820MAX + 3 * MAX_NUMNODES)
|
2016-12-06 00:49:13 +07:00
|
|
|
|
2012-12-15 05:37:13 +07:00
|
|
|
#include <uapi/asm/e820.h>
|
2016-12-06 00:49:13 +07:00
|
|
|
|
2007-10-22 07:56:19 +07:00
|
|
|
#ifndef __ASSEMBLY__
|
2008-06-27 18:12:55 +07:00
|
|
|
/* see comment in arch/x86/kernel/e820.c */
|
2016-09-18 04:39:26 +07:00
|
|
|
extern struct e820map *e820;
|
|
|
|
extern struct e820map *e820_saved;
|
2008-05-11 14:30:15 +07:00
|
|
|
|
2008-07-21 23:49:29 +07:00
|
|
|
extern unsigned long pci_mem_start;
|
2008-05-11 14:30:15 +07:00
|
|
|
extern int e820_any_mapped(u64 start, u64 end, unsigned type);
|
|
|
|
extern int e820_all_mapped(u64 start, u64 end, unsigned type);
|
2008-06-16 08:58:51 +07:00
|
|
|
extern void e820_add_region(u64 start, u64 size, int type);
|
2008-05-11 14:30:15 +07:00
|
|
|
extern void e820_print_map(char *who);
|
2008-05-14 22:15:34 +07:00
|
|
|
extern int
|
2009-03-23 03:43:01 +07:00
|
|
|
sanitize_e820_map(struct e820entry *biosmap, int max_nr_map, u32 *pnr_map);
|
2008-06-16 08:58:51 +07:00
|
|
|
extern u64 e820_update_range(u64 start, u64 size, unsigned old_type,
|
2008-05-11 14:30:15 +07:00
|
|
|
unsigned new_type);
|
2008-06-22 04:48:05 +07:00
|
|
|
extern u64 e820_remove_range(u64 start, u64 size, unsigned old_type,
|
|
|
|
int checktype);
|
2008-05-11 14:30:15 +07:00
|
|
|
extern void update_e820(void);
|
|
|
|
extern void e820_setup_gap(void);
|
2008-06-25 01:48:30 +07:00
|
|
|
extern int e820_search_gap(unsigned long *gapstart, unsigned long *gapsize,
|
2008-06-26 01:02:42 +07:00
|
|
|
unsigned long start_addr, unsigned long long end_addr);
|
2008-06-11 10:33:39 +07:00
|
|
|
struct setup_data;
|
2013-08-14 04:46:41 +07:00
|
|
|
extern void parse_e820_ext(u64 phys_addr, u32 data_len);
|
2008-05-11 14:30:15 +07:00
|
|
|
|
2008-05-21 10:10:58 +07:00
|
|
|
#if defined(CONFIG_X86_64) || \
|
|
|
|
(defined(CONFIG_X86_32) && defined(CONFIG_HIBERNATION))
|
|
|
|
extern void e820_mark_nosave_regions(unsigned long limit_pfn);
|
|
|
|
#else
|
|
|
|
static inline void e820_mark_nosave_regions(unsigned long limit_pfn)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2008-07-11 10:38:26 +07:00
|
|
|
extern unsigned long e820_end_of_ram_pfn(void);
|
|
|
|
extern unsigned long e820_end_of_low_ram_pfn(void);
|
2011-07-12 16:15:58 +07:00
|
|
|
extern u64 early_reserve_e820(u64 sizet, u64 align);
|
2010-08-26 03:39:17 +07:00
|
|
|
|
|
|
|
void memblock_x86_fill(void);
|
2010-08-26 03:39:18 +07:00
|
|
|
void memblock_find_dma_reserve(void);
|
|
|
|
|
2008-06-11 02:55:54 +07:00
|
|
|
extern void finish_e820_parsing(void);
|
2008-06-17 03:03:31 +07:00
|
|
|
extern void e820_reserve_resources(void);
|
2008-08-29 03:52:25 +07:00
|
|
|
extern void e820_reserve_resources_late(void);
|
2008-06-17 09:58:28 +07:00
|
|
|
extern void setup_memory_map(void);
|
2008-06-19 07:27:08 +07:00
|
|
|
extern char *default_machine_specific_memory_setup(void);
|
2007-10-22 07:56:19 +07:00
|
|
|
|
2016-09-18 04:39:26 +07:00
|
|
|
extern void e820_reallocate_tables(void);
|
|
|
|
|
2009-12-01 12:33:51 +07:00
|
|
|
/*
|
|
|
|
* Returns true iff the specified range [s,e) is completely contained inside
|
|
|
|
* the ISA region.
|
|
|
|
*/
|
2009-11-24 05:44:39 +07:00
|
|
|
static inline bool is_ISA_range(u64 s, u64 e)
|
|
|
|
{
|
2009-12-01 12:33:51 +07:00
|
|
|
return s >= ISA_START_ADDRESS && e <= ISA_END_ADDRESS;
|
2009-11-24 05:44:39 +07:00
|
|
|
}
|
2008-01-30 19:33:08 +07:00
|
|
|
|
2009-11-24 05:44:39 +07:00
|
|
|
#endif /* __ASSEMBLY__ */
|
2008-06-17 09:58:28 +07:00
|
|
|
#include <linux/ioport.h>
|
|
|
|
|
|
|
|
#define HIGH_MEMORY (1024*1024)
|
2008-10-23 12:26:29 +07:00
|
|
|
#endif /* _ASM_X86_E820_H */
|