On 11/11/25 01:44, Christophe JAILLET wrote:
Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.


Le 11/11/2025 à 02:15, David Zhang a écrit :
This patch introduces a Remote Management (RM) queue service, which
provides a way to communicate between the management PCIe function (PF0)
and the embedded firmware running on AMD Versal SoCs.

The RM service implements a hardware-based ring buffer for bidirectional
command and response exchange between the host driver and the firmware.

This patch adds the core infrastructure for:
   - Initializing and managing the RM queue
   - Submitting commands to the embedded firmware
   - Polling for command completion

Subsequent patches will integrate the infrastructure with the firmware
management logic to enable firmware download, status query, and other
control operations.

Co-developed-by: Nishad Saraf <[email protected]>
Signed-off-by: Nishad Saraf <[email protected]>
Signed-off-by: David Zhang <[email protected]>

...

diff --git a/drivers/accel/amd_vpci/versal-pci-rm-service.h b/drivers/accel/amd_vpci/versal-pci-rm-service.h
new file mode 100644
index 000000000000..d2397a1a672c
--- /dev/null
+++ b/drivers/accel/amd_vpci/versal-pci-rm-service.h

...

+#define RM_CMD_ID_MIN                        1
+#define RM_CMD_ID_MAX                        (BIT(17) - 1)
+#define RM_CMD_SQ_HDR_OPS_MSK                GENMASK(15, 0)
+#define RM_CMD_SQ_HDR_SIZE_MSK               GENMASK(14, 0)
+#define RM_CMD_SQ_SLOT_SIZE          SZ_512
+#define RM_CMD_CQ_SLOT_SIZE          SZ_16
+#define RM_CMD_CQ_BUFFER_SIZE                (1024 * 1024)

SZ_1M to be consistent with other xx_SIZE macro?

Thank you so much. I will fix this.


+#define RM_CMD_CQ_BUFFER_OFFSET              0x0
+#define RM_CMD_LOG_PAGE_TYPE_MASK    GENMASK(15, 0)
+#define RM_CMD_VMR_CONTROL_MSK               GENMASK(10, 8)
+#define RM_CMD_VMR_CONTROL_PS_MASK   BIT(9)
+
+#define RM_CMD_WAIT_CONFIG_TIMEOUT   msecs_to_jiffies(10 * 1000)
+#define RM_CMD_WAIT_DOWNLOAD_TIMEOUT msecs_to_jiffies(300 * 1000)

secs_to_jiffies() maybe to be less verbose?

I will fix this.


+
+#define RM_COMPLETION_TIMER          (HZ / 10)
+#define RM_HEALTH_CHECK_TIMER                (HZ)

...

CJ

Reply via email to