forked from luck/tmp_suning_uos_patched
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: Heiko Carstens <heiko.carstens@de.ibm.com> Reviewed-by: Sascha Silbe <silbe@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
be2412c247
commit
06ed5512a2
|
@ -19,6 +19,38 @@
|
|||
|
||||
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)
|
||||
{
|
||||
int i;
|
||||
|
@ -38,9 +70,7 @@ void __init verify_facilities(void)
|
|||
: "memory", "cc");
|
||||
}
|
||||
for (i = 0; i < ARRAY_SIZE(als); i++) {
|
||||
if ((S390_lowcore.stfle_fac_list[i] & als[i]) == als[i])
|
||||
continue;
|
||||
_sclp_print_early("The Linux kernel requires more recent processor hardware");
|
||||
disabled_wait(0x8badcccc);
|
||||
if ((S390_lowcore.stfle_fac_list[i] & als[i]) != als[i])
|
||||
facility_mismatch();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user