[PATCH v6 0/7] lib: sbi: Ensure SBI extension is available

Andrew Jones ajones at ventanamicro.com
Mon May 15 04:12:33 PDT 2023


Ensure attempts to invoke SBI extension functions fail with
SBI_ERR_NOT_SUPPORTED when the extension's probe function has reported
that the extension is not available. To avoid invoking probe too
frequently, we check extension availability at init time and skip
registering them in the extension list when their probe fails. If the
probes succeed, we keep them, and then later seeing them is enough to
know they're available. Extensions which have multiple IDs may also need
to narrow their ID range or remove IDs from their range to ensure when
the IDs are seen they are valid.

To handle both the available and valid cases at init time we introduce a
new callback which gets invoked instead of just registering the
extensions. We then modify the callbacks for probing and narrowing as
necessary. Additionally, considering the Base extension probe function
already knows how to set out_val to 1 for available extensions, we simply
remove all the probe functions, as now they must all succeed and none of
them return anything other than 1 on success.

v6:
  - Remove the check in sbi_ecall_vendor_handler() when adding it to
sbi_ecall_vendor_register_extensions()
  - Better line wrapping of the comments added for documenting the
    extension struct members
  - Added Anup's r-b's

v5:
  Another rework where I finally take Anup's advice that he gave on
  the initial posting and more or less replace probe with a new
  init callback.

v4:
  Almost a total redesign. Patch1 of the v4 (now series) does keep
  hunk 2 of the v3 patch, but the changes to sbi_ecall_find_extension()
  of the v3 patch have been dropped. Instead multi-ID extensions can
  now make use of a new extension callback (Patch2) which gets invoked
  at init time. This new callback has been applied to vendor extensions
  with Patch3.

v3: http://lists.infradead.org/pipermail/opensbi/2023-May/004894.html

Andrew Jones (6):
  lib: sbi: Introduce register_extensions extension callback
  lib: sbi: Narrow vendor extension range
  lib: sbi: pmu: Remove unnecessary probe function
  lib: sbi: Only register available extensions
  lib: sbi: Remove 0/1 probe implementations
  lib: sbi: Document sbi_ecall_extension members

Xiang W (1):
  lib: sbi: Optimize probe of srst/susp

 include/sbi/sbi_ecall.h    | 36 ++++++++++++++++++++++++++++++++++++
 lib/sbi/sbi_ecall.c        |  5 ++++-
 lib/sbi/sbi_ecall_base.c   | 14 +++++++++++---
 lib/sbi/sbi_ecall_cppc.c   | 18 +++++++++++-------
 lib/sbi/sbi_ecall_dbcn.c   | 18 +++++++++++-------
 lib/sbi/sbi_ecall_hsm.c    | 14 +++++++++++---
 lib/sbi/sbi_ecall_ipi.c    | 14 +++++++++++---
 lib/sbi/sbi_ecall_legacy.c | 14 +++++++++++---
 lib/sbi/sbi_ecall_pmu.c    | 16 ++++++++--------
 lib/sbi/sbi_ecall_rfence.c | 14 +++++++++++---
 lib/sbi/sbi_ecall_srst.c   | 28 ++++++++++++++++++----------
 lib/sbi/sbi_ecall_susp.c   | 27 ++++++++++++++++++---------
 lib/sbi/sbi_ecall_time.c   | 14 +++++++++++---
 lib/sbi/sbi_ecall_vendor.c | 38 +++++++++++++++++++-------------------
 14 files changed, 191 insertions(+), 79 deletions(-)

-- 
2.40.0




More information about the opensbi mailing list