lib: Add a new platform feature to bringup secondary harts
authorAtish Patra <atish.patra@wdc.com>
Wed, 12 Feb 2020 01:32:36 +0000 (17:32 -0800)
committerAnup Patel <anup@brainfault.org>
Mon, 24 Feb 2020 12:34:23 +0000 (18:04 +0530)
A platform may have a specific method to bring-up secondary harts for the
first time but may rely on generic WFI based approach for hart hotplug in
absence of a platform specific hart hotplug method.

Define a platform feature flag for such platforms. The platform needs to
implement platform specific bring-up method in hart_start and not define
hart_stop method in this case. They must only define
SBI_PLATFORM_HAS_HART_SECONDARY_BOOT.

SBI_PLATFORM_HAS_HART_HOTPLUG should only be defined when the platform
intend to support both hart_start and hart_stop and do not intend to rely
on generic WFI based approach.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
include/sbi/sbi_platform.h

index ba1d95f..16ee05c 100644 (file)
@@ -59,6 +59,8 @@ enum sbi_platform_features {
        SBI_PLATFORM_HAS_MCOUNTEREN = (1 << 4),
        /** Platform has fault delegation support */
        SBI_PLATFORM_HAS_MFAULTS_DELEGATION = (1 << 5),
+       /** Platform has custom secondary hart booting support */
+       SBI_PLATFORM_HAS_HART_SECONDARY_BOOT = (1 << 6),
 };
 
 /** Default feature set for a platform */
@@ -204,6 +206,9 @@ struct sbi_platform {
 /** Check whether the platform supports fault delegation */
 #define sbi_platform_has_mfaults_delegation(__p) \
        ((__p)->features & SBI_PLATFORM_HAS_MFAULTS_DELEGATION)
+/** Check whether the platform supports custom secondary hart booting support */
+#define sbi_platform_has_hart_secondary_boot(__p) \
+       ((__p)->features & SBI_PLATFORM_HAS_HART_SECONDARY_BOOT)
 
 /**
  * Get name of the platform