lib: sbi_platform: expose hart_features to extension_init

A patch from »Add support for T-HEAD C9xx PMU extensions« in state Accepted for opensbi

From: Heiko Stuebner <heiko@...> Date: Tue, 4 Oct 2022 16:07:53 +0200

Commit-Message

The platform-specific extension_init callback is supposed to set specific things for the platform opensbi is running on. So it's also the right place to override specific hart_features if needed - when it's know that autodetection has provided wrong results for example. Suggested-by: Atish Patra <atishp@...> Signed-off-by: Heiko Stuebner <heiko@...>

Patch-Comment

include/sbi/sbi_platform.h | 8 +++++--- lib/sbi/sbi_hart.c | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-)

Statistics

  • 7 lines added
  • 4 lines removed

Changes

-------------------------- include/sbi/sbi_platform.h --------------------------
index 87024db..722f27a 100644
@@ -48,6 +48,7 @@
struct sbi_domain_memregion;
struct sbi_trap_info;
struct sbi_trap_regs;
+struct sbi_hart_features;
/** Possible feature flags of a platform */
enum sbi_platform_features {
@@ -90,7 +91,7 @@ struct sbi_platform_operations {
int (*misa_get_xlen)(void);
/** Initialize (or populate) HART extensions for the platform */
- int (*extensions_init)(void);
+ int (*extensions_init)(struct sbi_hart_features *hfeatures);
/** Initialize (or populate) domains for the platform */
int (*domains_init)(void);
@@ -464,10 +465,11 @@ static inline int sbi_platform_misa_xlen(const struct sbi_platform *plat)
* @return 0 on success and negative error code on failure
*/
static inline int sbi_platform_extensions_init(
- const struct sbi_platform *plat)
+ const struct sbi_platform *plat,
+ struct sbi_hart_features *hfeatures)
{
if (plat && sbi_platform_ops(plat)->extensions_init)
- return sbi_platform_ops(plat)->extensions_init();
+ return sbi_platform_ops(plat)->extensions_init(hfeatures);
return 0;
}
------------------------------ lib/sbi/sbi_hart.c ------------------------------
index d0a6295..dacab1a 100644
@@ -672,7 +672,8 @@ __mhpm_skip:
}
/* Let platform populate extensions */
- rc = sbi_platform_extensions_init(sbi_platform_thishart_ptr());
+ rc = sbi_platform_extensions_init(sbi_platform_thishart_ptr(),
+ hfeatures);
if (rc)
return rc;
 
 

Recent Patches

About Us

Sed lacus. Donec lectus. Nullam pretium nibh ut turpis. Nam bibendum. In nulla tortor, elementum vel, tempor at, varius non, purus. Mauris vitae nisl nec metus placerat consectetuer.

Read More...