Loading arch/s390/include/asm/lowcore.h +8 −7 Original line number Diff line number Diff line Loading @@ -80,7 +80,6 @@ #define __LC_USER_ASCE 0xC50 #define __LC_PANIC_STACK 0xC54 #define __LC_CPUID 0xC60 #define __LC_CPUADDR 0xC68 #define __LC_IPLDEV 0xC7C #define __LC_CURRENT 0xC90 #define __LC_INT_CLOCK 0xC98 Loading @@ -102,7 +101,6 @@ #define __LC_USER_ASCE 0xD60 #define __LC_PANIC_STACK 0xD68 #define __LC_CPUID 0xD80 #define __LC_CPUADDR 0xD88 #define __LC_IPLDEV 0xDB8 #define __LC_CURRENT 0xDD8 #define __LC_INT_CLOCK 0xDE8 Loading Loading @@ -273,8 +271,10 @@ struct _lowcore __u32 user_exec_asce; /* 0xc58 */ __u8 pad10[0xc60-0xc5c]; /* 0xc5c */ /* entry.S sensitive area start */ struct cpuinfo_S390 cpu_data; /* 0xc60 */ __u32 ipl_device; /* 0xc7c */ cpuid_t cpu_id; /* 0xc60 */ __u32 cpu_nr; /* 0xc68 */ __u32 ipl_device; /* 0xc6c */ __u8 pad_0xc70[0xc80-0xc70]; /* 0xc70 */ /* entry.S sensitive area end */ /* SMP info area: defined by DJB */ Loading Loading @@ -366,9 +366,10 @@ struct _lowcore __u64 user_exec_asce; /* 0xd70 */ __u8 pad10[0xd80-0xd78]; /* 0xd78 */ /* entry.S sensitive area start */ struct cpuinfo_S390 cpu_data; /* 0xd80 */ __u32 ipl_device; /* 0xdb8 */ __u32 pad11; /* 0xdbc */ cpuid_t cpu_id; /* 0xd80 */ __u32 cpu_nr; /* 0xd88 */ __u32 ipl_device; /* 0xd8c */ __u8 pad_0xd90[0xdc0-0xd90]; /* 0xd90 */ /* entry.S sensitive area end */ /* SMP info area: defined by DJB */ Loading arch/s390/include/asm/processor.h +1 −15 Original line number Diff line number Diff line Loading @@ -42,22 +42,8 @@ static inline void get_cpu_id(cpuid_t *ptr) asm volatile("stidp 0(%1)" : "=m" (*ptr) : "a" (ptr)); } struct cpuinfo_S390 { cpuid_t cpu_id; __u16 cpu_addr; __u16 cpu_nr; unsigned long loops_per_jiffy; unsigned long *pgd_quick; #ifdef __s390x__ unsigned long *pmd_quick; #endif /* __s390x__ */ unsigned long *pte_quick; unsigned long pgtable_cache_sz; }; extern void s390_adjust_jiffies(void); extern void print_cpu_info(struct cpuinfo_S390 *); extern void print_cpu_info(void); extern int get_cpu_capability(unsigned int *); /* Loading arch/s390/include/asm/smp.h +1 −6 Original line number Diff line number Diff line Loading @@ -50,12 +50,7 @@ extern void machine_power_off_smp(void); #define PROC_CHANGE_PENALTY 20 /* Schedule penalty */ #define raw_smp_processor_id() (S390_lowcore.cpu_data.cpu_nr) static inline __u16 hard_smp_processor_id(void) { return stap(); } #define raw_smp_processor_id() (S390_lowcore.cpu_nr) /* * returns 1 if cpu is in stopped/check stopped state or not operational Loading arch/s390/kernel/processor.c +34 −35 Original line number Diff line number Diff line Loading @@ -18,10 +18,11 @@ #include <asm/lowcore.h> #include <asm/param.h> void __cpuinit print_cpu_info(struct cpuinfo_S390 *cpuinfo) void __cpuinit print_cpu_info(void) { pr_info("Processor %d started, address %d, identification %06X\n", cpuinfo->cpu_nr, cpuinfo->cpu_addr, cpuinfo->cpu_id.ident); S390_lowcore.cpu_nr, S390_lowcore.cpu_addr, S390_lowcore.cpu_id.ident); } /* Loading @@ -34,7 +35,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp", "edat" }; struct cpuinfo_S390 *cpuinfo; struct _lowcore *lc; unsigned long n = (unsigned long) v - 1; int i; Loading @@ -55,20 +56,18 @@ static int show_cpuinfo(struct seq_file *m, void *v) if (cpu_online(n)) { #ifdef CONFIG_SMP if (smp_processor_id() == n) cpuinfo = &S390_lowcore.cpu_data; else cpuinfo = &lowcore_ptr[n]->cpu_data; lc = (smp_processor_id() == n) ? &S390_lowcore : lowcore_ptr[n]; #else cpuinfo = &S390_lowcore.cpu_data; lc = &S390_lowcore; #endif seq_printf(m, "processor %li: " "version = %02X, " "identification = %06X, " "machine = %04X\n", n, cpuinfo->cpu_id.version, cpuinfo->cpu_id.ident, cpuinfo->cpu_id.machine); n, lc->cpu_id.version, lc->cpu_id.ident, lc->cpu_id.machine); } preempt_enable(); return 0; Loading arch/s390/kernel/setup.c +3 −7 Original line number Diff line number Diff line Loading @@ -121,13 +121,10 @@ static struct resource data_resource = { */ void __cpuinit cpu_init(void) { int addr = hard_smp_processor_id(); /* * Store processor id in lowcore (used e.g. in timer_interrupt) */ get_cpu_id(&S390_lowcore.cpu_data.cpu_id); S390_lowcore.cpu_data.cpu_addr = addr; get_cpu_id(&S390_lowcore.cpu_id); /* * Force FPU initialization: Loading Loading @@ -686,7 +683,6 @@ setup_memory(void) static void __init setup_hwcaps(void) { static const int stfl_bits[6] = { 0, 2, 7, 17, 19, 21 }; struct cpuinfo_S390 *cpuinfo = &S390_lowcore.cpu_data; unsigned long long facility_list_extended; unsigned int facility_list; int i; Loading Loading @@ -732,7 +728,7 @@ static void __init setup_hwcaps(void) if (MACHINE_HAS_HPAGE) elf_hwcap |= 1UL << 7; switch (cpuinfo->cpu_id.machine) { switch (S390_lowcore.cpu_id.machine) { case 0x9672: #if !defined(CONFIG_64BIT) default: /* Use "g5" as default for 31 bit kernels. */ Loading Loading @@ -825,7 +821,7 @@ setup_arch(char **cmdline_p) setup_lowcore(); cpu_init(); __cpu_logical_map[0] = S390_lowcore.cpu_data.cpu_addr; __cpu_logical_map[0] = stap(); s390_init_cpu_topology(); /* Loading Loading
arch/s390/include/asm/lowcore.h +8 −7 Original line number Diff line number Diff line Loading @@ -80,7 +80,6 @@ #define __LC_USER_ASCE 0xC50 #define __LC_PANIC_STACK 0xC54 #define __LC_CPUID 0xC60 #define __LC_CPUADDR 0xC68 #define __LC_IPLDEV 0xC7C #define __LC_CURRENT 0xC90 #define __LC_INT_CLOCK 0xC98 Loading @@ -102,7 +101,6 @@ #define __LC_USER_ASCE 0xD60 #define __LC_PANIC_STACK 0xD68 #define __LC_CPUID 0xD80 #define __LC_CPUADDR 0xD88 #define __LC_IPLDEV 0xDB8 #define __LC_CURRENT 0xDD8 #define __LC_INT_CLOCK 0xDE8 Loading Loading @@ -273,8 +271,10 @@ struct _lowcore __u32 user_exec_asce; /* 0xc58 */ __u8 pad10[0xc60-0xc5c]; /* 0xc5c */ /* entry.S sensitive area start */ struct cpuinfo_S390 cpu_data; /* 0xc60 */ __u32 ipl_device; /* 0xc7c */ cpuid_t cpu_id; /* 0xc60 */ __u32 cpu_nr; /* 0xc68 */ __u32 ipl_device; /* 0xc6c */ __u8 pad_0xc70[0xc80-0xc70]; /* 0xc70 */ /* entry.S sensitive area end */ /* SMP info area: defined by DJB */ Loading Loading @@ -366,9 +366,10 @@ struct _lowcore __u64 user_exec_asce; /* 0xd70 */ __u8 pad10[0xd80-0xd78]; /* 0xd78 */ /* entry.S sensitive area start */ struct cpuinfo_S390 cpu_data; /* 0xd80 */ __u32 ipl_device; /* 0xdb8 */ __u32 pad11; /* 0xdbc */ cpuid_t cpu_id; /* 0xd80 */ __u32 cpu_nr; /* 0xd88 */ __u32 ipl_device; /* 0xd8c */ __u8 pad_0xd90[0xdc0-0xd90]; /* 0xd90 */ /* entry.S sensitive area end */ /* SMP info area: defined by DJB */ Loading
arch/s390/include/asm/processor.h +1 −15 Original line number Diff line number Diff line Loading @@ -42,22 +42,8 @@ static inline void get_cpu_id(cpuid_t *ptr) asm volatile("stidp 0(%1)" : "=m" (*ptr) : "a" (ptr)); } struct cpuinfo_S390 { cpuid_t cpu_id; __u16 cpu_addr; __u16 cpu_nr; unsigned long loops_per_jiffy; unsigned long *pgd_quick; #ifdef __s390x__ unsigned long *pmd_quick; #endif /* __s390x__ */ unsigned long *pte_quick; unsigned long pgtable_cache_sz; }; extern void s390_adjust_jiffies(void); extern void print_cpu_info(struct cpuinfo_S390 *); extern void print_cpu_info(void); extern int get_cpu_capability(unsigned int *); /* Loading
arch/s390/include/asm/smp.h +1 −6 Original line number Diff line number Diff line Loading @@ -50,12 +50,7 @@ extern void machine_power_off_smp(void); #define PROC_CHANGE_PENALTY 20 /* Schedule penalty */ #define raw_smp_processor_id() (S390_lowcore.cpu_data.cpu_nr) static inline __u16 hard_smp_processor_id(void) { return stap(); } #define raw_smp_processor_id() (S390_lowcore.cpu_nr) /* * returns 1 if cpu is in stopped/check stopped state or not operational Loading
arch/s390/kernel/processor.c +34 −35 Original line number Diff line number Diff line Loading @@ -18,10 +18,11 @@ #include <asm/lowcore.h> #include <asm/param.h> void __cpuinit print_cpu_info(struct cpuinfo_S390 *cpuinfo) void __cpuinit print_cpu_info(void) { pr_info("Processor %d started, address %d, identification %06X\n", cpuinfo->cpu_nr, cpuinfo->cpu_addr, cpuinfo->cpu_id.ident); S390_lowcore.cpu_nr, S390_lowcore.cpu_addr, S390_lowcore.cpu_id.ident); } /* Loading @@ -34,7 +35,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp", "edat" }; struct cpuinfo_S390 *cpuinfo; struct _lowcore *lc; unsigned long n = (unsigned long) v - 1; int i; Loading @@ -55,20 +56,18 @@ static int show_cpuinfo(struct seq_file *m, void *v) if (cpu_online(n)) { #ifdef CONFIG_SMP if (smp_processor_id() == n) cpuinfo = &S390_lowcore.cpu_data; else cpuinfo = &lowcore_ptr[n]->cpu_data; lc = (smp_processor_id() == n) ? &S390_lowcore : lowcore_ptr[n]; #else cpuinfo = &S390_lowcore.cpu_data; lc = &S390_lowcore; #endif seq_printf(m, "processor %li: " "version = %02X, " "identification = %06X, " "machine = %04X\n", n, cpuinfo->cpu_id.version, cpuinfo->cpu_id.ident, cpuinfo->cpu_id.machine); n, lc->cpu_id.version, lc->cpu_id.ident, lc->cpu_id.machine); } preempt_enable(); return 0; Loading
arch/s390/kernel/setup.c +3 −7 Original line number Diff line number Diff line Loading @@ -121,13 +121,10 @@ static struct resource data_resource = { */ void __cpuinit cpu_init(void) { int addr = hard_smp_processor_id(); /* * Store processor id in lowcore (used e.g. in timer_interrupt) */ get_cpu_id(&S390_lowcore.cpu_data.cpu_id); S390_lowcore.cpu_data.cpu_addr = addr; get_cpu_id(&S390_lowcore.cpu_id); /* * Force FPU initialization: Loading Loading @@ -686,7 +683,6 @@ setup_memory(void) static void __init setup_hwcaps(void) { static const int stfl_bits[6] = { 0, 2, 7, 17, 19, 21 }; struct cpuinfo_S390 *cpuinfo = &S390_lowcore.cpu_data; unsigned long long facility_list_extended; unsigned int facility_list; int i; Loading Loading @@ -732,7 +728,7 @@ static void __init setup_hwcaps(void) if (MACHINE_HAS_HPAGE) elf_hwcap |= 1UL << 7; switch (cpuinfo->cpu_id.machine) { switch (S390_lowcore.cpu_id.machine) { case 0x9672: #if !defined(CONFIG_64BIT) default: /* Use "g5" as default for 31 bit kernels. */ Loading Loading @@ -825,7 +821,7 @@ setup_arch(char **cmdline_p) setup_lowcore(); cpu_init(); __cpu_logical_map[0] = S390_lowcore.cpu_data.cpu_addr; __cpu_logical_map[0] = stap(); s390_init_cpu_topology(); /* Loading