1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
266441bd3SIngo Molnar #ifndef _ASM_E820_API_H
366441bd3SIngo Molnar #define _ASM_E820_API_H
466441bd3SIngo Molnar
566441bd3SIngo Molnar #include <asm/e820/types.h>
666441bd3SIngo Molnar
761a50101SIngo Molnar extern struct e820_table *e820_table;
8a09bae0fSChen Yu extern struct e820_table *e820_table_kexec;
912df216cSChen Yu extern struct e820_table *e820_table_firmware;
1066441bd3SIngo Molnar
1166441bd3SIngo Molnar extern unsigned long pci_mem_start;
120f856508SIngo Molnar
13*0c55671fSKarimAllah Ahmed extern bool e820__mapped_raw_any(u64 start, u64 end, enum e820_type type);
1481b3e090SIngo Molnar extern bool e820__mapped_any(u64 start, u64 end, enum e820_type type);
1581b3e090SIngo Molnar extern bool e820__mapped_all(u64 start, u64 end, enum e820_type type);
16ab6bc04cSIngo Molnar
176afc03b8SIngo Molnar extern void e820__range_add (u64 start, u64 size, enum e820_type type);
186afc03b8SIngo Molnar extern u64 e820__range_update(u64 start, u64 size, enum e820_type old_type, enum e820_type new_type);
1981b3e090SIngo Molnar extern u64 e820__range_remove(u64 start, u64 size, enum e820_type old_type, bool check_type);
20ab6bc04cSIngo Molnar
21be0c3f0fSIngo Molnar extern void e820__print_table(char *who);
22f9748fa0SIngo Molnar extern int e820__update_table(struct e820_table *table);
236464d294SIngo Molnar extern void e820__update_table_print(void);
242504be78SIngo Molnar
250c6fc11aSIngo Molnar extern unsigned long e820__end_of_ram_pfn(void);
260c6fc11aSIngo Molnar extern unsigned long e820__end_of_low_ram_pfn(void);
272504be78SIngo Molnar
281a127034SIngo Molnar extern u64 e820__memblock_alloc_reserved(u64 size, u64 align);
294918e228SIngo Molnar extern void e820__memblock_setup(void);
302504be78SIngo Molnar
311a127034SIngo Molnar extern void e820__reserve_setup_data(void);
329641bdafSIngo Molnar extern void e820__finish_early_params(void);
331506c8dcSIngo Molnar extern void e820__reserve_resources(void);
341506c8dcSIngo Molnar extern void e820__reserve_resources_late(void);
352504be78SIngo Molnar
36103e2063SIngo Molnar extern void e820__memory_setup(void);
372504be78SIngo Molnar extern void e820__memory_setup_extended(u64 phys_addr, u32 data_len);
38103e2063SIngo Molnar extern char *e820__memory_setup_default(void);
392504be78SIngo Molnar extern void e820__setup_pci_gap(void);
402504be78SIngo Molnar
410c6fc11aSIngo Molnar extern void e820__reallocate_tables(void);
42090d7171SIngo Molnar extern void e820__register_nosave_regions(unsigned long limit_pfn);
430f856508SIngo Molnar
44d68baa3fSTom Lendacky extern int e820__get_entry_type(u64 start, u64 end);
45d68baa3fSTom Lendacky
4666441bd3SIngo Molnar /*
470f856508SIngo Molnar * Returns true iff the specified range [start,end) is completely contained inside
4866441bd3SIngo Molnar * the ISA region.
4966441bd3SIngo Molnar */
is_ISA_range(u64 start,u64 end)500f856508SIngo Molnar static inline bool is_ISA_range(u64 start, u64 end)
5166441bd3SIngo Molnar {
520f856508SIngo Molnar return start >= ISA_START_ADDRESS && end <= ISA_END_ADDRESS;
5366441bd3SIngo Molnar }
5466441bd3SIngo Molnar
5566441bd3SIngo Molnar #endif /* _ASM_E820_API_H */
56