Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b468488 authored by Martin Schwidefsky's avatar Martin Schwidefsky
Browse files

[S390] eliminate cpuinfo_S390 structure

parent 2938af53
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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 */
@@ -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 */
+1 −15
Original line number Diff line number Diff line
@@ -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 *);

/*
+1 −6
Original line number Diff line number Diff line
@@ -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
+34 −35
Original line number Diff line number Diff line
@@ -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);
}

/*
@@ -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;

@@ -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;
+3 −7
Original line number Diff line number Diff line
@@ -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:
@@ -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;
@@ -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. */
@@ -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