numa.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef _ASM_X86_NUMA_H
  2. #define _ASM_X86_NUMA_H
  3. #include <linux/nodemask.h>
  4. #include <asm/topology.h>
  5. #include <asm/apicdef.h>
  6. #ifdef CONFIG_NUMA
  7. #define NR_NODE_MEMBLKS (MAX_NUMNODES*2)
  8. /*
  9. * __apicid_to_node[] stores the raw mapping between physical apicid and
  10. * node and is used to initialize cpu_to_node mapping.
  11. *
  12. * The mapping may be overridden by apic->numa_cpu_node() on 32bit and thus
  13. * should be accessed by the accessors - set_apicid_to_node() and
  14. * numa_cpu_node().
  15. */
  16. extern s16 __apicid_to_node[MAX_LOCAL_APIC];
  17. extern nodemask_t numa_nodes_parsed __initdata;
  18. extern int __init numa_add_memblk(int nodeid, u64 start, u64 end);
  19. extern void __init numa_set_distance(int from, int to, int distance);
  20. static inline void set_apicid_to_node(int apicid, s16 node)
  21. {
  22. __apicid_to_node[apicid] = node;
  23. }
  24. extern int __cpuinit numa_cpu_node(int cpu);
  25. #else /* CONFIG_NUMA */
  26. static inline void set_apicid_to_node(int apicid, s16 node)
  27. {
  28. }
  29. static inline int numa_cpu_node(int cpu)
  30. {
  31. return NUMA_NO_NODE;
  32. }
  33. #endif /* CONFIG_NUMA */
  34. #ifdef CONFIG_X86_32
  35. # include "numa_32.h"
  36. #else
  37. # include "numa_64.h"
  38. #endif
  39. #ifdef CONFIG_NUMA
  40. extern void __cpuinit numa_set_node(int cpu, int node);
  41. extern void __cpuinit numa_clear_node(int cpu);
  42. extern void __init numa_init_array(void);
  43. extern void __init init_cpu_to_node(void);
  44. extern void __cpuinit numa_add_cpu(int cpu);
  45. extern void __cpuinit numa_remove_cpu(int cpu);
  46. #else /* CONFIG_NUMA */
  47. static inline void numa_set_node(int cpu, int node) { }
  48. static inline void numa_clear_node(int cpu) { }
  49. static inline void numa_init_array(void) { }
  50. static inline void init_cpu_to_node(void) { }
  51. static inline void numa_add_cpu(int cpu) { }
  52. static inline void numa_remove_cpu(int cpu) { }
  53. #endif /* CONFIG_NUMA */
  54. #ifdef CONFIG_DEBUG_PER_CPU_MAPS
  55. void debug_cpumask_set_cpu(int cpu, int node, bool enable);
  56. #endif
  57. #endif /* _ASM_X86_NUMA_H */