|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] tools/hvmloader: Further simplify SMP setup
commit 9b7d793889438ecb5fc6e48fa973c244f9832248
Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Thu May 9 18:40:11 2024 +0100
Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Wed May 15 19:59:52 2024 +0100
tools/hvmloader: Further simplify SMP setup
Now that we're using hypercalls to start APs, we can replace the 'ap_cpuid'
global with a regular function parameter. This requires telling the
compiler
that we'd like the parameter in a register rather than on the stack.
While adjusting, rename to cpu_setup(). It's always been used on the BSP,
making the name ap_start() specifically misleading.
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Reviewed-by: Alejandro Vallejo <alejandro.vallejo@xxxxxxxxx>
---
tools/firmware/hvmloader/smp.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/tools/firmware/hvmloader/smp.c b/tools/firmware/hvmloader/smp.c
index 6ebf0b60fa..5d46eee1c5 100644
--- a/tools/firmware/hvmloader/smp.c
+++ b/tools/firmware/hvmloader/smp.c
@@ -29,15 +29,15 @@
#include <xen/vcpu.h>
-static int ap_callin, ap_cpuid;
+static int ap_callin;
-static void ap_start(void)
+static void __attribute__((regparm(1))) cpu_setup(unsigned int cpu)
{
- printf(" - CPU%d ... ", ap_cpuid);
+ printf(" - CPU%d ... ", cpu);
cacheattr_init();
printf("done.\n");
- if ( !ap_cpuid ) /* Used on the BSP too */
+ if ( !cpu ) /* Used on the BSP too */
return;
wmb();
@@ -55,7 +55,6 @@ static void boot_cpu(unsigned int cpu)
static struct vcpu_hvm_context ap;
/* Initialise shared variables. */
- ap_cpuid = cpu;
ap_callin = 0;
wmb();
@@ -63,9 +62,11 @@ static void boot_cpu(unsigned int cpu)
ap = (struct vcpu_hvm_context) {
.mode = VCPU_HVM_MODE_32B,
.cpu_regs.x86_32 = {
- .eip = (unsigned long)ap_start,
+ .eip = (unsigned long)cpu_setup,
.esp = (unsigned long)ap_stack + ARRAY_SIZE(ap_stack),
+ .eax = cpu,
+
/* Protected Mode, no paging. */
.cr0 = X86_CR0_PE,
@@ -105,7 +106,7 @@ void smp_initialise(void)
unsigned int i, nr_cpus = hvm_info->nr_vcpus;
printf("Multiprocessor initialisation:\n");
- ap_start();
+ cpu_setup(0);
for ( i = 1; i < nr_cpus; i++ )
boot_cpu(i);
}
--
generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |