Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 216785
b: refs/heads/master
c: 96f4a70
h: refs/heads/master
i:
  216783: 25be194
v: v3
  • Loading branch information
Heiko Carstens authored and Martin Schwidefsky committed Oct 25, 2010
1 parent 8592cc8 commit ad4b6ff
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c30f91b6a264aef9ffb05e13931514c2a988c495
refs/heads/master: 96f4a70d8eb4d746b19d5b5510407c8ff0d00340
2 changes: 2 additions & 0 deletions trunk/arch/s390/include/asm/topology.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define _ASM_S390_TOPOLOGY_H

#include <linux/cpumask.h>
#include <asm/sysinfo.h>

extern unsigned char cpu_core_id[NR_CPUS];
extern cpumask_t cpu_core_map[NR_CPUS];
Expand Down Expand Up @@ -32,6 +33,7 @@ static inline const struct cpumask *cpu_book_mask(unsigned int cpu)

int topology_set_cpu_management(int fc);
void topology_schedule_update(void);
void store_topology(struct sysinfo_15_1_x *info);

#define POLARIZATION_UNKNWN (-1)
#define POLARIZATION_HRZ (0)
Expand Down
34 changes: 33 additions & 1 deletion trunk/arch/s390/kernel/sysinfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <asm/ebcdic.h>
#include <asm/sysinfo.h>
#include <asm/cpcmd.h>
#include <asm/topology.h>

/* Sigh, math-emu. Don't ask. */
#include <asm/sfp-util.h>
Expand Down Expand Up @@ -84,6 +85,35 @@ static int stsi_1_1_1(struct sysinfo_1_1_1 *info, char *page, int len)
return len;
}

static int stsi_15_1_x(struct sysinfo_15_1_x *info, char *page, int len)
{
static int max_mnest;
int i, rc;

len += sprintf(page + len, "\n");
if (!MACHINE_HAS_TOPOLOGY)
return len;
if (max_mnest) {
stsi(info, 15, 1, max_mnest);
} else {
for (max_mnest = 6; max_mnest > 1; max_mnest--) {
rc = stsi(info, 15, 1, max_mnest);
if (rc != -ENOSYS)
break;
}
}
len += sprintf(page + len, "CPU Topology HW: ");
for (i = 0; i < TOPOLOGY_NR_MAG; i++)
len += sprintf(page + len, " %d", info->mag[i]);
len += sprintf(page + len, "\n");
store_topology(info);
len += sprintf(page + len, "CPU Topology SW: ");
for (i = 0; i < TOPOLOGY_NR_MAG; i++)
len += sprintf(page + len, " %d", info->mag[i]);
len += sprintf(page + len, "\n");
return len;
}

static int stsi_1_2_2(struct sysinfo_1_2_2 *info, char *page, int len)
{
struct sysinfo_1_2_2_extension *ext;
Expand All @@ -94,7 +124,6 @@ static int stsi_1_2_2(struct sysinfo_1_2_2 *info, char *page, int len)
ext = (struct sysinfo_1_2_2_extension *)
((unsigned long) info + info->acc_offset);

len += sprintf(page + len, "\n");
len += sprintf(page + len, "CPUs Total: %d\n",
info->cpus_total);
len += sprintf(page + len, "CPUs Configured: %d\n",
Expand Down Expand Up @@ -223,6 +252,9 @@ static int proc_read_sysinfo(char *page, char **start,
if (level >= 1)
len = stsi_1_1_1((struct sysinfo_1_1_1 *) info, page, len);

if (level >= 1)
len = stsi_15_1_x((struct sysinfo_15_1_x *) info, page, len);

if (level >= 1)
len = stsi_1_2_2((struct sysinfo_1_2_2 *) info, page, len);

Expand Down
3 changes: 1 addition & 2 deletions trunk/arch/s390/kernel/topology.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
#include <linux/cpuset.h>
#include <asm/delay.h>
#include <asm/s390_ext.h>
#include <asm/sysinfo.h>

#define PTF_HORIZONTAL (0UL)
#define PTF_VERTICAL (1UL)
Expand Down Expand Up @@ -215,7 +214,7 @@ static void update_cpu_core_map(void)
spin_unlock_irqrestore(&topology_lock, flags);
}

static void store_topology(struct tl_info *info)
void store_topology(struct sysinfo_15_1_x *info)
{
#ifdef CONFIG_SCHED_BOOK
int rc;
Expand Down

0 comments on commit ad4b6ff

Please sign in to comment.