[PATCH 4/4] efi_loader: call smp_kick_all_cpus()

Alexander Graf agraf at csgraf.de
Thu May 14 22:17:22 CEST 2020


On 14.05.20 20:46, Heinrich Schuchardt wrote:
> On 5/14/20 2:38 PM, Michael Walle wrote:
>> On some architectures, specifically the layerscape, the secondary cores
>> wait for an interrupt before entering the spin-tables. This applies only
>> to boards which doesn't have PSCI provided by TF-a and u-boot does the
> %s/TF-a/TF-A/, %s/u-boot/U-Boot/
>
>> secondary cores handling.
>> bootm/booti already call that function for ARM architecture; also add it
>> to bootelf before switching to EL2. Additionally, provide a weak noop
>> function so we don't have to have "#ifdef CONFIG_ARM64" guards.
>>
>> Signed-off-by: Michael Walle <michael at walle.cc>
>> ---
>>   common/bootm.c             | 9 +++++++++
>>   lib/efi_loader/efi_setup.c | 6 ++++++
>>   2 files changed, 15 insertions(+)
>>
>> diff --git a/common/bootm.c b/common/bootm.c
>> index db4362a643..65adf29329 100644
>> --- a/common/bootm.c
>> +++ b/common/bootm.c
>> @@ -816,6 +816,15 @@ void __weak switch_to_non_secure_mode(void)
>>   {
>>   }
>>
>> +/**
>> + * smp_kick_all_cpus() - kick all CPUs
>> + *
>> + * This routine is overridden by architectures requiring this feature.
>> + */
>> +void __weak smp_kick_all_cpus(void)
>> +{
>> +}
>> +
>>   #else /* USE_HOSTCC */
>>
>>   #if defined(CONFIG_FIT_SIGNATURE)
>> diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c
>> index 26a7423203..7e5364adc5 100644
>> --- a/lib/efi_loader/efi_setup.c
>> +++ b/lib/efi_loader/efi_setup.c
>> @@ -132,6 +132,12 @@ efi_status_t efi_init_obj_list(void)
>>   	/* Allow unaligned memory access */
>>   	allow_unaligned();
>>
>> +	/*
>> +	 * Some architectures need to kick secondary cores to enter their
>> +	 * spin table.
>> +	 */
>> +	smp_kick_all_cpus();
> This will not compile with
>
> CONFIG_CMD_BOOTI=n
> CONFIG_CMD_BOOTM=n
> CONFIG_CMD_BOOTZ=n


Much worse is that in incurs needless overhead on PSCI capable 
platforms. Can we move the smp_kick_all_cpus() to the board or soc level 
of the few systems that use spin tables please? :)

Alex




More information about the U-Boot mailing list