Module Name: src Committed By: skrll Date: Thu Jan 16 13:07:07 UTC 2014
Modified Files: src/sys/arch/hp700/hp700: machdep.c Log Message: Drop CPU detection by features and panic if a CPU isn't detected via PDC_MODEL_CPUID or cpu_model_cpuid. To generate a diff of this commit: cvs rdiff -u -r1.116 -r1.117 src/sys/arch/hp700/hp700/machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/hp700/hp700/machdep.c diff -u src/sys/arch/hp700/hp700/machdep.c:1.116 src/sys/arch/hp700/hp700/machdep.c:1.117 --- src/sys/arch/hp700/hp700/machdep.c:1.116 Sat Oct 19 13:16:30 2013 +++ src/sys/arch/hp700/hp700/machdep.c Thu Jan 16 13:07:07 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.116 2013/10/19 13:16:30 skrll Exp $ */ +/* $NetBSD: machdep.c,v 1.117 2014/01/16 13:07:07 skrll Exp $ */ /*- * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc. @@ -58,7 +58,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.116 2013/10/19 13:16:30 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.117 2014/01/16 13:07:07 skrll Exp $"); #include "opt_cputype.h" #include "opt_ddb.h" @@ -685,9 +685,13 @@ cpuid(void) error = pdcproc_model_cpuid(&pdc_cpuid); if (error < 0) { DPRINTF(("WARNING: PDC_MODEL_CPUID error %d. " - "Using cpu_modelno based cpu_type.\n", error)); + "Using cpu_modelno (%#x) based cpu_type.\n", error, cpu_modelno)); cpu_type = cpu_model_cpuid(cpu_modelno); + if (cpu_type == hpc_unknown) { + printf("WARNING: Unknown cpu_type for cpu_modelno %x\n", + cpu_modelno); + } } else { DPRINTF(("%s: cpuid.version = %x\n", __func__, pdc_cpuid.version)); @@ -774,26 +778,33 @@ cpuid(void) pmap_hptsize = 0; } + bool cpu_found = false; if (cpu_version) { + DPRINTF(("%s: looking for cpu_version %x\n", __func__, + cpu_version)); for (i = 0, p = cpu_types; i < __arraycount(cpu_types); i++, p++) { - if (p->hci_cpuversion == cpu_version) + if (p->hci_cpuversion == cpu_version) { + cpu_found = true; break; + } } } else if (cpu_type != hpc_unknown) { + DPRINTF(("%s: looking for cpu_type %d\n", __func__, + cpu_type)); for (i = 0, p = cpu_types; i < __arraycount(cpu_types); i++, p++) { - if (p->hci_cputype == cpu_type) - break; - } - } else { - for (i = 0, p = cpu_types; i < __arraycount(cpu_types); - i++, p++) { - if (p->hci_features == cpu_features) + if (p->hci_cputype == cpu_type) { + cpu_found = true; break; + } } } + if (!cpu_found) { + panic("CPU detection failed. Please report the problem."); + } + hppa_cpu_info = p; if (hppa_cpu_info->hci_chip_name == NULL)