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

Commit c59124fa authored by Thomas Richter's avatar Thomas Richter Committed by Arnaldo Carvalho de Melo
Browse files

perf annotate: Scan cpuid for s390 and save machine type



Scan the cpuid string and extract the type number for later use.

Signed-off-by: default avatarThomas Richter <tmricht@linux.vnet.ibm.com>
Reviewed-by: default avatarHendrik Brueckner <brueckner@linux.vnet.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Link: http://lkml.kernel.org/r/20180213151419.80737-2-tmricht@linux.vnet.ibm.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent eca0fa28
Loading
Loading
Loading
Loading
+26 −1
Original line number Original line Diff line number Diff line
@@ -23,12 +23,37 @@ static struct ins_ops *s390__associate_ins_ops(struct arch *arch, const char *na
	return ops;
	return ops;
}
}


static int s390__cpuid_parse(struct arch *arch, char *cpuid)
{
	unsigned int family;
	char model[16], model_c[16], cpumf_v[16], cpumf_a[16];
	int ret;

	/*
	 * cpuid string format:
	 * "IBM,family,model-capacity,model[,cpum_cf-version,cpum_cf-authorization]"
	 */
	ret = sscanf(cpuid, "%*[^,],%u,%[^,],%[^,],%[^,],%s", &family, model_c,
		     model, cpumf_v, cpumf_a);
	if (ret >= 2) {
		arch->family = family;
		arch->model = 0;
		return 0;
	}

	return -1;
}

static int s390__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
static int s390__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
{
{
	int err = 0;

	if (!arch->initialized) {
	if (!arch->initialized) {
		arch->initialized = true;
		arch->initialized = true;
		arch->associate_instruction_ops = s390__associate_ins_ops;
		arch->associate_instruction_ops = s390__associate_ins_ops;
		if (cpuid)
			err = s390__cpuid_parse(arch, cpuid);
	}
	}


	return 0;
	return err;
}
}