diff options
author | marcel <marcel@FreeBSD.org> | 2002-05-12 05:54:21 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2002-05-12 05:54:21 +0000 |
commit | 49d0eba5f2e4c8bc62afa196db9dc683dd92018e (patch) | |
tree | 60e30ee3008b26ae2fe106aea4d4197176e7a65c /sys/ia64/include/smp.h | |
parent | e7bbea38d981582adb68f002d1abf784b0ea7047 (diff) | |
download | FreeBSD-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.h | 21 |
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); |