dma/ia64: update ia64 machvecs, swiotlb.c
[safe/jmp/linux-2.6] / include / asm-powerpc / topology.h
index 1e19cd0..100c6fb 100644 (file)
@@ -2,7 +2,9 @@
 #define _ASM_POWERPC_TOPOLOGY_H
 #ifdef __KERNEL__
 
-#include <linux/config.h>
+
+struct sys_device;
+struct device_node;
 
 #ifdef CONFIG_NUMA
 
@@ -27,20 +29,34 @@ static inline int node_to_first_cpu(int node)
        return first_cpu(tmp);
 }
 
-#define pcibus_to_node(node)    (-1)
-#define pcibus_to_cpumask(bus) (cpu_online_map)
+int of_node_to_nid(struct device_node *device);
+
+struct pci_bus;
+#ifdef CONFIG_PCI
+extern int pcibus_to_node(struct pci_bus *bus);
+#else
+static inline int pcibus_to_node(struct pci_bus *bus)
+{
+       return -1;
+}
+#endif
+
+#define pcibus_to_cpumask(bus) (pcibus_to_node(bus) == -1 ? \
+                                       CPU_MASK_ALL : \
+                                       node_to_cpumask(pcibus_to_node(bus)) \
+                               )
 
 /* sched_domains SD_NODE_INIT for PPC64 machines */
 #define SD_NODE_INIT (struct sched_domain) {           \
        .span                   = CPU_MASK_NONE,        \
        .parent                 = NULL,                 \
+       .child                  = NULL,                 \
        .groups                 = NULL,                 \
        .min_interval           = 8,                    \
        .max_interval           = 32,                   \
        .busy_factor            = 32,                   \
        .imbalance_pct          = 125,                  \
        .cache_nice_tries       = 1,                    \
-       .per_cpu_gain           = 100,                  \
        .busy_idx               = 3,                    \
        .idle_idx               = 1,                    \
        .newidle_idx            = 2,                    \
@@ -49,6 +65,7 @@ static inline int node_to_first_cpu(int node)
                                | SD_BALANCE_EXEC       \
                                | SD_BALANCE_NEWIDLE    \
                                | SD_WAKE_IDLE          \
+                               | SD_SERIALIZE          \
                                | SD_WAKE_BALANCE,      \
        .last_balance           = jiffies,              \
        .balance_interval       = 1,                    \
@@ -57,13 +74,42 @@ static inline int node_to_first_cpu(int node)
 
 extern void __init dump_numa_cpu_topology(void);
 
+extern int sysfs_add_device_to_node(struct sys_device *dev, int nid);
+extern void sysfs_remove_device_from_node(struct sys_device *dev, int nid);
+
 #else
 
+static inline int of_node_to_nid(struct device_node *device)
+{
+       return 0;
+}
+
 static inline void dump_numa_cpu_topology(void) {}
 
-#include <asm-generic/topology.h>
+static inline int sysfs_add_device_to_node(struct sys_device *dev, int nid)
+{
+       return 0;
+}
+
+static inline void sysfs_remove_device_from_node(struct sys_device *dev,
+                                               int nid)
+{
+}
 
 #endif /* CONFIG_NUMA */
 
+#include <asm-generic/topology.h>
+
+#ifdef CONFIG_SMP
+#include <asm/cputable.h>
+#define smt_capable()          (cpu_has_feature(CPU_FTR_SMT))
+
+#ifdef CONFIG_PPC64
+#include <asm/smp.h>
+
+#define topology_thread_siblings(cpu)  (per_cpu(cpu_sibling_map, cpu))
+#endif
+#endif
+
 #endif /* __KERNEL__ */
 #endif /* _ASM_POWERPC_TOPOLOGY_H */