2005-09-07 15:59:48 -05:00
# ifndef _ASM_POWERPC_TOPOLOGY_H
# define _ASM_POWERPC_TOPOLOGY_H
2005-12-16 22:43:46 +01:00
# ifdef __KERNEL__
2005-04-16 15:20:36 -07:00
2011-12-21 14:29:42 -08:00
struct device ;
2006-05-01 12:16:12 -07:00
struct device_node ;
2005-04-16 15:20:36 -07:00
# ifdef CONFIG_NUMA
2010-05-16 20:19:56 +00:00
/*
2014-06-04 16:07:14 -07:00
* If zone_reclaim_mode is enabled , a RECLAIM_DISTANCE of 10 will mean that
* all zones on all nodes will be eligible for zone_reclaim ( ) .
2010-05-16 20:19:56 +00:00
*/
# define RECLAIM_DISTANCE 10
2005-09-07 15:59:48 -05:00
# include <asm/mmzone.h>
2005-04-16 15:20:36 -07:00
# define parent_node(node) (node)
2010-01-05 18:55:10 +00:00
# define cpumask_of_node(node) ((node) == -1 ? \
cpu_all_mask : \
2010-04-26 15:32:43 +00:00
node_to_cpumask_map [ node ] )
2008-12-26 22:23:39 +10:30
2006-06-10 20:53:06 +10:00
struct pci_bus ;
2006-11-27 19:19:00 +01:00
# ifdef CONFIG_PCI
2006-06-10 20:53:06 +10:00
extern int pcibus_to_node ( struct pci_bus * bus ) ;
2006-11-27 19:19:00 +01:00
# else
static inline int pcibus_to_node ( struct pci_bus * bus )
{
return - 1 ;
}
# endif
2006-06-10 20:53:06 +10:00
2008-12-26 22:23:39 +10:30
# define cpumask_of_pcibus(bus) (pcibus_to_node(bus) == -1 ? \
cpu_all_mask : \
cpumask_of_node ( pcibus_to_node ( bus ) ) )
2010-05-16 20:22:31 +00:00
extern int __node_distance ( int , int ) ;
# define node_distance(a, b) __node_distance(a, b)
2005-12-13 06:56:47 +11:00
extern void __init dump_numa_cpu_topology ( void ) ;
2011-12-21 14:29:42 -08:00
extern int sysfs_add_device_to_node ( struct device * dev , int nid ) ;
extern void sysfs_remove_device_from_node ( struct device * dev , int nid ) ;
2006-05-01 12:16:12 -07:00
2010-12-17 22:07:47 +00:00
# else
2005-04-16 15:20:36 -07:00
2005-12-13 06:56:47 +11:00
static inline void dump_numa_cpu_topology ( void ) { }
2011-12-21 14:29:42 -08:00
static inline int sysfs_add_device_to_node ( struct device * dev , int nid )
2006-05-01 12:16:12 -07:00
{
return 0 ;
}
2011-12-21 14:29:42 -08:00
static inline void sysfs_remove_device_from_node ( struct device * dev ,
2006-05-01 12:16:12 -07:00
int nid )
{
}
2008-03-31 08:41:55 -07:00
# endif /* CONFIG_NUMA */
2006-05-01 12:16:12 -07:00
2011-01-12 10:56:29 +11:00
# if defined(CONFIG_NUMA) && defined(CONFIG_PPC_SPLPAR)
extern int start_topology_update ( void ) ;
extern int stop_topology_update ( void ) ;
2013-04-24 06:07:39 +00:00
extern int prrn_is_enabled ( void ) ;
2011-01-12 10:56:29 +11:00
# else
static inline int start_topology_update ( void )
{
return 0 ;
}
static inline int stop_topology_update ( void )
{
return 0 ;
}
2013-04-24 06:07:39 +00:00
static inline int prrn_is_enabled ( void )
{
return 0 ;
}
2011-01-12 10:56:29 +11:00
# endif /* CONFIG_NUMA && CONFIG_PPC_SPLPAR */
2005-04-16 15:20:36 -07:00
# include <asm-generic/topology.h>
2006-06-27 02:54:42 -07:00
# ifdef CONFIG_SMP
# include <asm/cputable.h>
2006-11-13 14:51:46 +11:00
# ifdef CONFIG_PPC64
# include <asm/smp.h>
2013-08-12 17:35:57 +05:30
# define topology_physical_package_id(cpu) (cpu_to_chip_id(cpu))
2015-05-26 15:11:28 +02:00
# define topology_sibling_cpumask(cpu) (per_cpu(cpu_sibling_map, cpu))
2010-04-26 15:32:41 +00:00
# define topology_core_cpumask(cpu) (per_cpu(cpu_core_map, cpu))
2008-07-27 15:24:54 +10:00
# define topology_core_id(cpu) (cpu_to_core_id(cpu))
2006-11-13 14:51:46 +11:00
# endif
2006-06-27 02:54:42 -07:00
# endif
2005-12-16 22:43:46 +01:00
# endif /* __KERNEL__ */
2005-09-07 15:59:48 -05:00
# endif /* _ASM_POWERPC_TOPOLOGY_H */