162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef __X86_MM_NUMA_INTERNAL_H
362306a36Sopenharmony_ci#define __X86_MM_NUMA_INTERNAL_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#include <linux/types.h>
662306a36Sopenharmony_ci#include <asm/numa.h>
762306a36Sopenharmony_ci
862306a36Sopenharmony_cistruct numa_memblk {
962306a36Sopenharmony_ci	u64			start;
1062306a36Sopenharmony_ci	u64			end;
1162306a36Sopenharmony_ci	int			nid;
1262306a36Sopenharmony_ci};
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cistruct numa_meminfo {
1562306a36Sopenharmony_ci	int			nr_blks;
1662306a36Sopenharmony_ci	struct numa_memblk	blk[NR_NODE_MEMBLKS];
1762306a36Sopenharmony_ci};
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_civoid __init numa_remove_memblk_from(int idx, struct numa_meminfo *mi);
2062306a36Sopenharmony_ciint __init numa_cleanup_meminfo(struct numa_meminfo *mi);
2162306a36Sopenharmony_civoid __init numa_reset_distance(void);
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_civoid __init x86_numa_init(void);
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci#ifdef CONFIG_NUMA_EMU
2662306a36Sopenharmony_civoid __init numa_emulation(struct numa_meminfo *numa_meminfo,
2762306a36Sopenharmony_ci			   int numa_dist_cnt);
2862306a36Sopenharmony_ci#else
2962306a36Sopenharmony_cistatic inline void numa_emulation(struct numa_meminfo *numa_meminfo,
3062306a36Sopenharmony_ci				  int numa_dist_cnt)
3162306a36Sopenharmony_ci{ }
3262306a36Sopenharmony_ci#endif
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci#endif	/* __X86_MM_NUMA_INTERNAL_H */
35