Commit 06ed5512 authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky

s390/als: print machine type on facility mismatch

If we have a facility mismatch the kernel only emits a warning that
the processor is not recent enough and stops operating. This doesn't
give us a lot of an idea of what actually went wrong.

As a first step print the machine type in addition.
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Reviewed-by: default avatarSascha Silbe <silbe@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent be2412c2
...@@ -19,6 +19,38 @@ ...@@ -19,6 +19,38 @@
static unsigned long als[] __initdata = { FACILITIES_ALS }; static unsigned long als[] __initdata = { FACILITIES_ALS };
static void __init u16_to_hex(char *str, u16 val)
{
int i, num;
for (i = 1; i <= 4; i++) {
num = (val >> (16 - 4 * i)) & 0xf;
if (num >= 10)
num += 7;
*str++ = '0' + num;
}
*str = '\0';
}
static void __init print_machine_type(void)
{
static char mach_str[80] __initdata = "Detected machine-type number: ";
char type_str[5];
struct cpuid id;
get_cpu_id(&id);
u16_to_hex(type_str, id.machine);
strcat(mach_str, type_str);
_sclp_print_early(mach_str);
}
static void __init facility_mismatch(void)
{
_sclp_print_early("The Linux kernel requires more recent processor hardware");
print_machine_type();
disabled_wait(0x8badcccc);
}
void __init verify_facilities(void) void __init verify_facilities(void)
{ {
int i; int i;
...@@ -38,9 +70,7 @@ void __init verify_facilities(void) ...@@ -38,9 +70,7 @@ void __init verify_facilities(void)
: "memory", "cc"); : "memory", "cc");
} }
for (i = 0; i < ARRAY_SIZE(als); i++) { for (i = 0; i < ARRAY_SIZE(als); i++) {
if ((S390_lowcore.stfle_fac_list[i] & als[i]) == als[i]) if ((S390_lowcore.stfle_fac_list[i] & als[i]) != als[i])
continue; facility_mismatch();
_sclp_print_early("The Linux kernel requires more recent processor hardware");
disabled_wait(0x8badcccc);
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment