Make ncpusfound count the available processors even if they don't attach.
authorkettenis <kettenis@openbsd.org>
Sat, 24 Feb 2018 09:45:10 +0000 (09:45 +0000)
committerkettenis <kettenis@openbsd.org>
Sat, 24 Feb 2018 09:45:10 +0000 (09:45 +0000)
ok patrick@

sys/arch/arm64/arm64/cpu.c
sys/arch/arm64/dev/mainbus.c

index de474b7..b88d4e8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: cpu.c,v 1.15 2018/02/23 19:08:56 kettenis Exp $       */
+/*     $OpenBSD: cpu.c,v 1.16 2018/02/24 09:45:10 kettenis Exp $       */
 
 /*
  * Copyright (c) 2016 Dale Rahn <drahn@dalerahn.com>
@@ -231,20 +231,12 @@ cpu_attach(struct device *parent, struct device *dev, void *aux)
        }
 #ifdef MULTIPROCESSOR
        else {
-               ncpusfound++;
                ci = malloc(sizeof(*ci), M_DEVBUF, M_WAITOK | M_ZERO);
                cpu_info[dev->dv_unit] = ci;
                ci->ci_next = cpu_info_list->ci_next;
                cpu_info_list->ci_next = ci;
                ci->ci_flags |= CPUF_AP;
        }
-#else
-       else {
-               ncpusfound++;
-               printf(" mpidr %llx not configured\n",
-                   faa->fa_reg[0].addr);
-               return;
-       }
 #endif
 
        ci->ci_dev = dev;
index 474e239..4205acf 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: mainbus.c,v 1.8 2018/01/04 14:30:08 kettenis Exp $ */
+/* $OpenBSD: mainbus.c,v 1.9 2018/02/24 09:45:10 kettenis Exp $ */
 /*
  * Copyright (c) 2016 Patrick Wildt <patrick@blueri.se>
  * Copyright (c) 2017 Mark Kettenis <kettenis@openbsd.org>
@@ -236,6 +236,7 @@ mainbus_attach_cpus(struct device *self, cfmatch_t match)
        struct mainbus_softc *sc = (struct mainbus_softc *)self;
        int node = OF_finddevice("/cpus");
        int acells, scells;
+       char buf[32];
 
        if (node == 0)
                return;
@@ -245,8 +246,14 @@ mainbus_attach_cpus(struct device *self, cfmatch_t match)
        sc->sc_acells = OF_getpropint(node, "#address-cells", 2);
        sc->sc_scells = OF_getpropint(node, "#size-cells", 0);
 
-       for (node = OF_child(node); node != 0; node = OF_peer(node))
+       ncpusfound = 0;
+       for (node = OF_child(node); node != 0; node = OF_peer(node)) {
+               if (OF_getprop(node, "device_type", buf, sizeof(buf)) > 0 &&
+                   strcmp(buf, "cpu") == 0)
+                       ncpusfound++;
+
                mainbus_attach_node(self, node, match);
+       }
 
        sc->sc_acells = acells;
        sc->sc_scells = scells;