2005-04-16 15:20:36 -07:00
# ifndef _ASM_S390_TOPOLOGY_H
# define _ASM_S390_TOPOLOGY_H
2008-04-17 07:46:12 +02:00
# include <linux/cpumask.h>
2010-10-25 16:10:54 +02:00
# include <asm/sysinfo.h>
2008-04-17 07:46:12 +02:00
2011-12-27 11:27:09 +01:00
struct cpu ;
# ifdef CONFIG_SCHED_BOOK
2010-05-17 10:00:12 +02:00
extern unsigned char cpu_core_id [ NR_CPUS ] ;
2008-04-30 13:38:40 +02:00
extern cpumask_t cpu_core_map [ NR_CPUS ] ;
2011-05-26 09:48:27 +02:00
static inline const struct cpumask * cpu_coregroup_mask ( int cpu )
2010-08-31 10:28:18 +02:00
{
return & cpu_core_map [ cpu ] ;
}
2010-05-17 10:00:12 +02:00
# define topology_core_id(cpu) (cpu_core_id[cpu])
2009-01-01 10:12:20 +10:30
# define topology_core_cpumask(cpu) (&cpu_core_map[cpu])
2010-08-31 10:28:18 +02:00
# define mc_capable() (1)
extern unsigned char cpu_book_id [ NR_CPUS ] ;
extern cpumask_t cpu_book_map [ NR_CPUS ] ;
2011-05-26 09:48:27 +02:00
static inline const struct cpumask * cpu_book_mask ( int cpu )
2010-08-31 10:28:18 +02:00
{
return & cpu_book_map [ cpu ] ;
}
# define topology_book_id(cpu) (cpu_book_id[cpu])
# define topology_book_cpumask(cpu) (&cpu_book_map[cpu])
2011-12-27 11:27:09 +01:00
int topology_cpu_init ( struct cpu * ) ;
2008-04-17 07:46:13 +02:00
int topology_set_cpu_management ( int fc ) ;
void topology_schedule_update ( void ) ;
2010-10-25 16:10:54 +02:00
void store_topology ( struct sysinfo_15_1_x * info ) ;
2011-12-27 11:27:16 +01:00
void topology_expect_change ( void ) ;
2008-04-17 07:46:13 +02:00
2011-12-27 11:27:09 +01:00
# else /* CONFIG_SCHED_BOOK */
static inline void topology_schedule_update ( void ) { }
static inline int topology_cpu_init ( struct cpu * cpu ) { return 0 ; }
2011-12-27 11:27:16 +01:00
static inline void topology_expect_change ( void ) { }
2011-12-27 11:27:09 +01:00
# endif /* CONFIG_SCHED_BOOK */
# define POLARIZATION_UNKNOWN (-1)
2008-04-17 07:46:13 +02:00
# define POLARIZATION_HRZ (0)
# define POLARIZATION_VL (1)
# define POLARIZATION_VM (2)
# define POLARIZATION_VH (3)
2011-12-27 11:27:09 +01:00
extern int cpu_polarization [ ] ;
static inline void cpu_set_polarization ( int cpu , int val )
{
# ifdef CONFIG_SCHED_BOOK
cpu_polarization [ cpu ] = val ;
# endif
}
static inline int cpu_read_polarization ( int cpu )
{
# ifdef CONFIG_SCHED_BOOK
return cpu_polarization [ cpu ] ;
# else
return POLARIZATION_HRZ ;
# endif
}
# ifdef CONFIG_SCHED_BOOK
2008-04-17 07:46:12 +02:00
void s390_init_cpu_topology ( void ) ;
# else
static inline void s390_init_cpu_topology ( void )
{
} ;
# endif
2010-08-31 10:28:18 +02:00
# define SD_BOOK_INIT SD_CPU_INIT
2005-04-16 15:20:36 -07:00
# include <asm-generic/topology.h>
# endif /* _ASM_S390_TOPOLOGY_H */