[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 08/43] hw/cxl/device: Add cheap EVENTS implementation (8.2.9.1
From: |
Jonathan Cameron |
Subject: |
[PATCH v5 08/43] hw/cxl/device: Add cheap EVENTS implementation (8.2.9.1) |
Date: |
Wed, 2 Feb 2022 14:10:02 +0000 |
From: Ben Widawsky <ben.widawsky@intel.com>
Using the previously implemented stubbed helpers, it is now possible to
easily add the missing, required commands to the implementation.
Signed-off-by: Ben Widawsky <ben.widawsky@intel.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
---
v5: Follow through on upper casing defines in patch 6.
hw/cxl/cxl-mailbox-utils.c | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c
index d497ec50a6..8aa1b1e525 100644
--- a/hw/cxl/cxl-mailbox-utils.c
+++ b/hw/cxl/cxl-mailbox-utils.c
@@ -38,6 +38,14 @@
* a register interface that already deals with it.
*/
+enum {
+ EVENTS = 0x01,
+ #define GET_RECORDS 0x0
+ #define CLEAR_RECORDS 0x1
+ #define GET_INTERRUPT_POLICY 0x2
+ #define SET_INTERRUPT_POLICY 0x3
+};
+
/* 8.2.8.4.5.1 Command Return Codes */
typedef enum {
CXL_MBOX_SUCCESS = 0x0,
@@ -93,9 +101,26 @@ struct cxl_cmd {
return CXL_MBOX_SUCCESS; \
}
+DEFINE_MAILBOX_HANDLER_ZEROED(events_get_records, 0x20);
+DEFINE_MAILBOX_HANDLER_NOP(events_clear_records);
+DEFINE_MAILBOX_HANDLER_ZEROED(events_get_interrupt_policy, 4);
+DEFINE_MAILBOX_HANDLER_NOP(events_set_interrupt_policy);
+
static QemuUUID cel_uuid;
-static struct cxl_cmd cxl_cmd_set[256][256] = {};
+#define IMMEDIATE_CONFIG_CHANGE (1 << 1)
+#define IMMEDIATE_LOG_CHANGE (1 << 4)
+
+static struct cxl_cmd cxl_cmd_set[256][256] = {
+ [EVENTS][GET_RECORDS] = { "EVENTS_GET_RECORDS",
+ cmd_events_get_records, 1, 0 },
+ [EVENTS][CLEAR_RECORDS] = { "EVENTS_CLEAR_RECORDS",
+ cmd_events_clear_records, ~0, IMMEDIATE_LOG_CHANGE },
+ [EVENTS][GET_INTERRUPT_POLICY] = { "EVENTS_GET_INTERRUPT_POLICY",
+ cmd_events_get_interrupt_policy, 0, 0 },
+ [EVENTS][SET_INTERRUPT_POLICY] = { "EVENTS_SET_INTERRUPT_POLICY",
+ cmd_events_set_interrupt_policy, 4, IMMEDIATE_CONFIG_CHANGE },
+};
void cxl_process_mailbox(CXLDeviceState *cxl_dstate)
{
--
2.32.0
- [PATCH v5 00/43] CXl 2.0 emulation Support, Jonathan Cameron, 2022/02/02
- [PATCH v5 01/43] hw/pci/cxl: Add a CXL component type (interface), Jonathan Cameron, 2022/02/02
- [PATCH v5 02/43] hw/cxl/component: Introduce CXL components (8.1.x, 8.2.5), Jonathan Cameron, 2022/02/02
- [PATCH v5 03/43] MAINTAINERS: Add entry for Compute Express Link Emulation, Jonathan Cameron, 2022/02/02
- [PATCH v5 04/43] hw/cxl/device: Introduce a CXL device (8.2.8), Jonathan Cameron, 2022/02/02
- [PATCH v5 05/43] hw/cxl/device: Implement the CAP array (8.2.8.1-2), Jonathan Cameron, 2022/02/02
- [PATCH v5 06/43] hw/cxl/device: Implement basic mailbox (8.2.8.4), Jonathan Cameron, 2022/02/02
- [PATCH v5 07/43] hw/cxl/device: Add memory device utilities, Jonathan Cameron, 2022/02/02
- [PATCH v5 08/43] hw/cxl/device: Add cheap EVENTS implementation (8.2.9.1),
Jonathan Cameron <=
- [PATCH v5 09/43] hw/cxl/device: Timestamp implementation (8.2.9.3), Jonathan Cameron, 2022/02/02
- [PATCH v5 10/43] hw/cxl/device: Add log commands (8.2.9.4) + CEL, Jonathan Cameron, 2022/02/02
- [PATCH v5 11/43] hw/pxb: Use a type for realizing expanders, Jonathan Cameron, 2022/02/02
- [PATCH v5 12/43] hw/pci/cxl: Create a CXL bus type, Jonathan Cameron, 2022/02/02
- [PATCH v5 13/43] hw/pxb: Allow creation of a CXL PXB (host bridge), Jonathan Cameron, 2022/02/02
- [PATCH v5 14/43] tests/acpi: allow DSDT.viot table changes., Jonathan Cameron, 2022/02/02
- [PATCH v5 15/43] acpi/pci: Consolidate host bridge setup, Jonathan Cameron, 2022/02/02
- [PATCH v5 16/43] tests/acpi: Add update DSDT.viot, Jonathan Cameron, 2022/02/02