[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 |