summaryrefslogtreecommitdiffstats
path: root/sys/ia64/include/smp.h
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2002-05-12 05:54:21 +0000
committermarcel <marcel@FreeBSD.org>2002-05-12 05:54:21 +0000
commit49d0eba5f2e4c8bc62afa196db9dc683dd92018e (patch)
tree60e30ee3008b26ae2fe106aea4d4197176e7a65c /sys/ia64/include/smp.h
parente7bbea38d981582adb68f002d1abf784b0ea7047 (diff)
downloadFreeBSD-src-49d0eba5f2e4c8bc62afa196db9dc683dd92018e.zip
FreeBSD-src-49d0eba5f2e4c8bc62afa196db9dc683dd92018e.tar.gz
o Rename ia64_count_aps to ia64_count_cpus and reimplement the
function to return the total number of CPUs and not the highest CPU id. o Define mp_maxid based on the minimum of the actual number of CPUs in the system and MAXCPU. o In cpu_mp_add, when the CPU id of the CPU we're trying to add is larger than mp_maxid, don't add the CPU. Formerly this was based on MAXCPU. Don't count CPUs when we add them. We already know how many CPUs exist. o Replace MAXCPU with mp_maxid when used in loops that iterate over the id space. This avoids a couple of useless iterations. o In cpu_mp_unleash, use the number of CPUs to determine if we need to launch the CPUs. o Remove mp_hardware as it's not used anymore. o Move the IPI vector array from mp_machdep.c to sal.c. We use the array as a centralized place to collect vector assignments. Note that we still assign vectors to SMP specific IPIs in non-SMP configurations. Rename the array from mp_ipi_vector to ipi_vector. o Add IPI_MCA_RENDEZ and IPI_MCA_CMCV. These are used by MCA. Note that IPI_MCA_CMCV is not SMP specific. o Initialize the ipi_vector array so that we place the IPIs in sensible priority classes. The classes are relative to where the AP wake-up vector is located to guarantee that it's the highest priority (external) interrupt. Class assignment is as follows: class IPI notes x AP wake-up (normally x=15) x-1 MCA rendezvous x-2 AST, Rendezvous, stop x-3 CMCV, test
Diffstat (limited to 'sys/ia64/include/smp.h')
-rw-r--r--sys/ia64/include/smp.h21
1 files changed, 12 insertions, 9 deletions
diff --git a/sys/ia64/include/smp.h b/sys/ia64/include/smp.h
index ba6677f..e985fc0 100644
--- a/sys/ia64/include/smp.h
+++ b/sys/ia64/include/smp.h
@@ -10,20 +10,23 @@
* Interprocessor interrupts for SMP. The following values are indices
* into the IPI vector table. The SAL gives us the vector used for AP
* wake-up. We base the other vectors on that. Keep IPI_AP_WAKEUP at
- * index 0.
+ * index 0 and IPI_MCA_RENDEZ at index 1. See sal.c for details.
*/
-#define IPI_AP_WAKEUP 0 /* ia64 specific */
-#define IPI_AST 1
-#define IPI_RENDEZVOUS 2
-#define IPI_STOP 3
-#define IPI_TEST 4 /* ia64 specific */
+/* Architecture specific IPIs. */
+#define IPI_AP_WAKEUP 0
+#define IPI_MCA_RENDEZ 1
+#define IPI_MCA_CMCV 2
+#define IPI_TEST 3
+/* Machine independent IPIs. */
+#define IPI_AST 4
+#define IPI_RENDEZVOUS 5
+#define IPI_STOP 6
-#define IPI_COUNT 5
+#define IPI_COUNT 7
#ifndef LOCORE
-extern int mp_hardware;
-extern int mp_ipi_vector[];
+extern int ipi_vector[];
void ipi_all(int ipi);
void ipi_all_but_self(int ipi);
OpenPOWER on IntegriCloud