Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/arm/fdt The spin-table CPU enable method is only va...



details:   https://anonhg.NetBSD.org/src/rev/ac37f1caa4e5
branches:  trunk
changeset: 998290:ac37f1caa4e5
user:      jmcneill <jmcneill%NetBSD.org@localhost>
date:      Sat Apr 13 17:21:49 2019 +0000

description:
The spin-table CPU enable method is only valid for 64-bit kernels.

diffstat:

 sys/arch/arm/fdt/cpu_fdt.c |  58 ++++++++++++++++++++++-----------------------
 1 files changed, 28 insertions(+), 30 deletions(-)

diffs (86 lines):

diff -r 0e4b24261a7c -r ac37f1caa4e5 sys/arch/arm/fdt/cpu_fdt.c
--- a/sys/arch/arm/fdt/cpu_fdt.c        Sat Apr 13 17:18:26 2019 +0000
+++ b/sys/arch/arm/fdt/cpu_fdt.c        Sat Apr 13 17:21:49 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu_fdt.c,v 1.22 2019/01/31 13:06:10 skrll Exp $ */
+/* $NetBSD: cpu_fdt.c,v 1.23 2019/04/13 17:21:49 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill <jmcneill%invisible.ca@localhost>
@@ -30,7 +30,7 @@
 #include "psci_fdt.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu_fdt.c,v 1.22 2019/01/31 13:06:10 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu_fdt.c,v 1.23 2019/04/13 17:21:49 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -166,33 +166,6 @@
        return pa;
 }
 
-static int
-spintable_cpu_on(u_int cpuindex, paddr_t entry_point_address, paddr_t cpu_release_addr)
-{
-       /*
-        * we need devmap for cpu-release-addr in advance.
-        * __HAVE_MM_MD_DIRECT_MAPPED_PHYS nor pmap didn't work at this point.
-        */
-       if (pmap_devmap_find_pa(cpu_release_addr, sizeof(paddr_t)) == NULL) {
-               aprint_error("%s: devmap for cpu-release-addr"
-                   " 0x%08"PRIxPADDR" required\n", __func__, cpu_release_addr);
-               return -1;
-       } else {
-               extern struct bus_space arm_generic_bs_tag;
-               bus_space_handle_t ioh;
-
-               bus_space_map(&arm_generic_bs_tag, cpu_release_addr,
-                   sizeof(paddr_t), 0, &ioh);
-               bus_space_write_4(&arm_generic_bs_tag, ioh, 0,
-                   entry_point_address);
-               bus_space_unmap(&arm_generic_bs_tag, ioh, sizeof(paddr_t));
-       }
-
-       return 0;
-}
-#endif /* MULTIPROCESSOR */
-
-#ifdef MULTIPROCESSOR
 static bool
 arm_fdt_cpu_okay(const int child)
 {
@@ -369,7 +342,32 @@
 ARM_CPU_METHOD(psci, "psci", cpu_enable_psci);
 #endif
 
-#if defined(MULTIPROCESSOR)
+#if defined(MULTIPROCESSOR) && defined(__aarch64__)
+static int
+spintable_cpu_on(u_int cpuindex, paddr_t entry_point_address, paddr_t cpu_release_addr)
+{
+       /*
+        * we need devmap for cpu-release-addr in advance.
+        * __HAVE_MM_MD_DIRECT_MAPPED_PHYS nor pmap didn't work at this point.
+        */
+       if (pmap_devmap_find_pa(cpu_release_addr, sizeof(paddr_t)) == NULL) {
+               aprint_error("%s: devmap for cpu-release-addr"
+                   " 0x%08"PRIxPADDR" required\n", __func__, cpu_release_addr);
+               return -1;
+       } else {
+               extern struct bus_space arm_generic_bs_tag;
+               bus_space_handle_t ioh;
+
+               bus_space_map(&arm_generic_bs_tag, cpu_release_addr,
+                   sizeof(paddr_t), 0, &ioh);
+               bus_space_write_4(&arm_generic_bs_tag, ioh, 0,
+                   entry_point_address);
+               bus_space_unmap(&arm_generic_bs_tag, ioh, sizeof(paddr_t));
+       }
+
+       return 0;
+}
+
 static int
 cpu_enable_spin_table(int phandle)
 {



Home | Main Index | Thread Index | Old Index