Merge branches 'amd-iommu/fixes' and 'dma-debug/fixes' into iommu/fixes
[linux-2.6-block.git] / arch / ia64 / include / asm / topology.h
CommitLineData
1da177e4 1/*
1da177e4
LT
2 * Copyright (C) 2002, Erich Focht, NEC
3 *
4 * All rights reserved.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 */
11#ifndef _ASM_IA64_TOPOLOGY_H
12#define _ASM_IA64_TOPOLOGY_H
13
14#include <asm/acpi.h>
15#include <asm/numa.h>
16#include <asm/smp.h>
17
18#ifdef CONFIG_NUMA
8d08aed8
JS
19
20/* Nodes w/o CPUs are preferred for memory allocations, see build_zonelists */
21#define PENALTY_FOR_NODE_WITH_CPUS 255
22
e5ecc192
CL
23/*
24 * Distance above which we begin to use zone reclaim
25 */
26#define RECLAIM_DISTANCE 15
27
1da177e4
LT
28/*
29 * Returns the number of the node containing CPU 'cpu'
30 */
31#define cpu_to_node(cpu) (int)(cpu_to_node_map[cpu])
32
33/*
34 * Returns a bitmask of CPUs on Node 'node'.
35 */
1d1e9f04
AB
36#define cpumask_of_node(node) ((node) == -1 ? \
37 cpu_all_mask : \
38 &node_to_cpu_mask[node])
1da177e4
LT
39
40/*
41 * Returns the number of the node containing Node 'nid'.
42 * Not implemented here. Multi-level hierarchies detected with
43 * the help of node_distance().
44 */
45#define parent_node(nid) (nid)
46
514604c6
CL
47/*
48 * Determines the node for a given pci bus
49 */
50#define pcibus_to_node(bus) PCI_CONTROLLER(bus)->node
51
1da177e4
LT
52void build_cpu_to_node_map(void);
53
687f1661 54#define SD_CPU_INIT (struct sched_domain) { \
687f1661 55 .parent = NULL, \
1a848870 56 .child = NULL, \
687f1661
NP
57 .groups = NULL, \
58 .min_interval = 1, \
59 .max_interval = 4, \
60 .busy_factor = 64, \
61 .imbalance_pct = 125, \
687f1661
NP
62 .cache_nice_tries = 2, \
63 .busy_idx = 2, \
64 .idle_idx = 1, \
0ec9fab3 65 .newidle_idx = 0, \
78e7ed53 66 .wake_idx = 0, \
b8a543ea 67 .forkexec_idx = 0, \
687f1661
NP
68 .flags = SD_LOAD_BALANCE \
69 | SD_BALANCE_NEWIDLE \
70 | SD_BALANCE_EXEC \
78e7ed53 71 | SD_BALANCE_FORK \
687f1661
NP
72 | SD_WAKE_AFFINE, \
73 .last_balance = jiffies, \
74 .balance_interval = 1, \
75 .nr_balance_failed = 0, \
76}
77
1da177e4
LT
78/* sched_domains SD_NODE_INIT for IA64 NUMA machines */
79#define SD_NODE_INIT (struct sched_domain) { \
1da177e4 80 .parent = NULL, \
1a848870 81 .child = NULL, \
1da177e4 82 .groups = NULL, \
687f1661 83 .min_interval = 8, \
c99dbbe9 84 .max_interval = 8*(min(num_online_cpus(), 32U)), \
687f1661 85 .busy_factor = 64, \
1da177e4 86 .imbalance_pct = 125, \
687f1661
NP
87 .cache_nice_tries = 2, \
88 .busy_idx = 3, \
89 .idle_idx = 2, \
0ec9fab3 90 .newidle_idx = 0, \
78e7ed53 91 .wake_idx = 0, \
b8a543ea 92 .forkexec_idx = 0, \
1da177e4 93 .flags = SD_LOAD_BALANCE \
0ec9fab3 94 | SD_BALANCE_NEWIDLE \
1da177e4 95 | SD_BALANCE_EXEC \
687f1661 96 | SD_BALANCE_FORK \
c88d5910 97 | SD_SERIALIZE, \
1da177e4 98 .last_balance = jiffies, \
687f1661 99 .balance_interval = 64, \
1da177e4
LT
100 .nr_balance_failed = 0, \
101}
102
1da177e4
LT
103#endif /* CONFIG_NUMA */
104
69dcc991
ZY
105#ifdef CONFIG_SMP
106#define topology_physical_package_id(cpu) (cpu_data(cpu)->socket_id)
107#define topology_core_id(cpu) (cpu_data(cpu)->core_id)
333af153
RR
108#define topology_core_cpumask(cpu) (&cpu_core_map[cpu])
109#define topology_thread_cpumask(cpu) (&per_cpu(cpu_sibling_map, cpu))
5c45bf27 110#define smt_capable() (smp_num_siblings > 1)
69dcc991
ZY
111#endif
112
fe086a7b
AC
113extern void arch_fix_phys_package_id(int num, u32 slot);
114
fbb776c3
RR
115#define cpumask_of_pcibus(bus) (pcibus_to_node(bus) == -1 ? \
116 cpu_all_mask : \
36c401a4 117 cpumask_of_node(pcibus_to_node(bus)))
fbb776c3 118
1da177e4
LT
119#include <asm-generic/topology.h>
120
121#endif /* _ASM_IA64_TOPOLOGY_H */