162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2002, Erich Focht, NEC
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * All rights reserved.
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci#ifndef _ASM_IA64_TOPOLOGY_H
862306a36Sopenharmony_ci#define _ASM_IA64_TOPOLOGY_H
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <asm/acpi.h>
1162306a36Sopenharmony_ci#include <asm/numa.h>
1262306a36Sopenharmony_ci#include <asm/smp.h>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#ifdef CONFIG_NUMA
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci/* Nodes w/o CPUs are preferred for memory allocations, see build_zonelists */
1762306a36Sopenharmony_ci#define PENALTY_FOR_NODE_WITH_CPUS 255
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci/*
2062306a36Sopenharmony_ci * Nodes within this distance are eligible for reclaim by zone_reclaim() when
2162306a36Sopenharmony_ci * zone_reclaim_mode is enabled.
2262306a36Sopenharmony_ci */
2362306a36Sopenharmony_ci#define RECLAIM_DISTANCE 15
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci/*
2662306a36Sopenharmony_ci * Returns a bitmask of CPUs on Node 'node'.
2762306a36Sopenharmony_ci */
2862306a36Sopenharmony_ci#define cpumask_of_node(node) ((node) == -1 ?				\
2962306a36Sopenharmony_ci			       cpu_all_mask :				\
3062306a36Sopenharmony_ci			       &node_to_cpu_mask[node])
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci/*
3362306a36Sopenharmony_ci * Determines the node for a given pci bus
3462306a36Sopenharmony_ci */
3562306a36Sopenharmony_ci#define pcibus_to_node(bus) PCI_CONTROLLER(bus)->node
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_civoid build_cpu_to_node_map(void);
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci#endif /* CONFIG_NUMA */
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci#ifdef CONFIG_SMP
4262306a36Sopenharmony_ci#define topology_physical_package_id(cpu)	(cpu_data(cpu)->socket_id)
4362306a36Sopenharmony_ci#define topology_core_id(cpu)			(cpu_data(cpu)->core_id)
4462306a36Sopenharmony_ci#define topology_core_cpumask(cpu)		(&cpu_core_map[cpu])
4562306a36Sopenharmony_ci#define topology_sibling_cpumask(cpu)		(&per_cpu(cpu_sibling_map, cpu))
4662306a36Sopenharmony_ci#endif
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ciextern void arch_fix_phys_package_id(int num, u32 slot);
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci#define cpumask_of_pcibus(bus)	(pcibus_to_node(bus) == -1 ?		\
5162306a36Sopenharmony_ci				 cpu_all_mask :				\
5262306a36Sopenharmony_ci				 cpumask_of_node(pcibus_to_node(bus)))
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci#include <asm-generic/topology.h>
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci#endif /* _ASM_IA64_TOPOLOGY_H */
57