]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RISC-V: Add defines for the SBI message proxy extension
authorAnup Patel <apatel@ventanamicro.com>
Mon, 18 Aug 2025 04:08:59 +0000 (09:38 +0530)
committerPaul Walmsley <pjw@kernel.org>
Wed, 24 Sep 2025 22:57:43 +0000 (16:57 -0600)
Add defines for the new SBI message proxy extension which is part
of the SBI v3.0 specification.

Reviewed-by: Atish Patra <atishp@rivosinc.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Co-developed-by: Rahul Pathak <rpathak@ventanamicro.com>
Signed-off-by: Rahul Pathak <rpathak@ventanamicro.com>
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Link: https://lore.kernel.org/r/20250818040920.272664-4-apatel@ventanamicro.com
Signed-off-by: Paul Walmsley <pjw@kernel.org>
arch/riscv/include/asm/sbi.h

index 341e74238aa04e23e737d8436134b90fc58bd6cb..c19e5c7383a6f8870240e584c450e0b01ea5057a 100644 (file)
@@ -36,6 +36,7 @@ enum sbi_ext_id {
        SBI_EXT_STA = 0x535441,
        SBI_EXT_NACL = 0x4E41434C,
        SBI_EXT_FWFT = 0x46574654,
+       SBI_EXT_MPXY = 0x4D505859,
 
        /* Experimentals extensions must lie within this range */
        SBI_EXT_EXPERIMENTAL_START = 0x08000000,
@@ -430,6 +431,67 @@ enum sbi_fwft_feature_t {
 
 #define SBI_FWFT_SET_FLAG_LOCK                 BIT(0)
 
+enum sbi_ext_mpxy_fid {
+       SBI_EXT_MPXY_GET_SHMEM_SIZE,
+       SBI_EXT_MPXY_SET_SHMEM,
+       SBI_EXT_MPXY_GET_CHANNEL_IDS,
+       SBI_EXT_MPXY_READ_ATTRS,
+       SBI_EXT_MPXY_WRITE_ATTRS,
+       SBI_EXT_MPXY_SEND_MSG_WITH_RESP,
+       SBI_EXT_MPXY_SEND_MSG_WITHOUT_RESP,
+       SBI_EXT_MPXY_GET_NOTIFICATION_EVENTS,
+};
+
+enum sbi_mpxy_attribute_id {
+       /* Standard channel attributes managed by MPXY framework */
+       SBI_MPXY_ATTR_MSG_PROT_ID               = 0x00000000,
+       SBI_MPXY_ATTR_MSG_PROT_VER              = 0x00000001,
+       SBI_MPXY_ATTR_MSG_MAX_LEN               = 0x00000002,
+       SBI_MPXY_ATTR_MSG_SEND_TIMEOUT          = 0x00000003,
+       SBI_MPXY_ATTR_MSG_COMPLETION_TIMEOUT    = 0x00000004,
+       SBI_MPXY_ATTR_CHANNEL_CAPABILITY        = 0x00000005,
+       SBI_MPXY_ATTR_SSE_EVENT_ID              = 0x00000006,
+       SBI_MPXY_ATTR_MSI_CONTROL               = 0x00000007,
+       SBI_MPXY_ATTR_MSI_ADDR_LO               = 0x00000008,
+       SBI_MPXY_ATTR_MSI_ADDR_HI               = 0x00000009,
+       SBI_MPXY_ATTR_MSI_DATA                  = 0x0000000A,
+       SBI_MPXY_ATTR_EVENTS_STATE_CONTROL      = 0x0000000B,
+       SBI_MPXY_ATTR_STD_ATTR_MAX_IDX,
+       /*
+        * Message protocol specific attributes, managed by
+        * the message protocol specification.
+        */
+       SBI_MPXY_ATTR_MSGPROTO_ATTR_START       = 0x80000000,
+       SBI_MPXY_ATTR_MSGPROTO_ATTR_END         = 0xffffffff
+};
+
+/* Possible values of MSG_PROT_ID attribute as-per SBI v3.0 (or higher) */
+enum sbi_mpxy_msgproto_id {
+       SBI_MPXY_MSGPROTO_RPMI_ID = 0x0,
+};
+
+/* RPMI message protocol specific MPXY attributes */
+enum sbi_mpxy_rpmi_attribute_id {
+       SBI_MPXY_RPMI_ATTR_SERVICEGROUP_ID = SBI_MPXY_ATTR_MSGPROTO_ATTR_START,
+       SBI_MPXY_RPMI_ATTR_SERVICEGROUP_VERSION,
+       SBI_MPXY_RPMI_ATTR_IMPL_ID,
+       SBI_MPXY_RPMI_ATTR_IMPL_VERSION,
+       SBI_MPXY_RPMI_ATTR_MAX_ID
+};
+
+/* Encoding of MSG_PROT_VER attribute */
+#define SBI_MPXY_MSG_PROT_VER_MAJOR(__ver)     upper_16_bits(__ver)
+#define SBI_MPXY_MSG_PROT_VER_MINOR(__ver)     lower_16_bits(__ver)
+#define SBI_MPXY_MSG_PROT_MKVER(__maj, __min)  (((u32)(__maj) << 16) | (u16)(__min))
+
+/* Capabilities available through CHANNEL_CAPABILITY attribute */
+#define SBI_MPXY_CHAN_CAP_MSI                  BIT(0)
+#define SBI_MPXY_CHAN_CAP_SSE                  BIT(1)
+#define SBI_MPXY_CHAN_CAP_EVENTS_STATE         BIT(2)
+#define SBI_MPXY_CHAN_CAP_SEND_WITH_RESP       BIT(3)
+#define SBI_MPXY_CHAN_CAP_SEND_WITHOUT_RESP    BIT(4)
+#define SBI_MPXY_CHAN_CAP_GET_NOTIFICATIONS    BIT(5)
+
 /* SBI spec version fields */
 #define SBI_SPEC_VERSION_DEFAULT       0x1
 #define SBI_SPEC_VERSION_MAJOR_SHIFT   24