From: nifan.cxl@gmail.com
To: qemu-devel@nongnu.org
Cc: jonathan.cameron@huawei.com, linux-cxl@vger.kernel.org,
ira.weiny@intel.com, dan.j.williams@intel.com,
a.manzanares@samsung.com, dave@stgolabs.net,
nmtadam.samsung@gmail.com, nifan.cxl@gmail.com,
Fan Ni <fan.ni@samsung.com>
Subject: [PATCH 2/2] hw/cxl/cxl_event: Fix interrupt triggering for dynamic capacity events grouped via More flag
Date: Tue, 27 Aug 2024 09:40:05 -0700 [thread overview]
Message-ID: <20240827164304.88876-3-nifan.cxl@gmail.com> (raw)
In-Reply-To: <20240827164304.88876-1-nifan.cxl@gmail.com>
From: Fan Ni <fan.ni@samsung.com>
When inserting multiple dynamic capacity event records grouped via More flag,
we should only trigger interrupt after the last record is inserted into the
event log. Achieving the goal by letting cxl_event_insert return true only
for the insertion of the last dynamic capacity event record in the sequence.
Signed-off-by: Fan Ni <fan.ni@samsung.com>
---
hw/cxl/cxl-events.c | 8 ++++++++
include/hw/cxl/cxl_events.h | 1 +
2 files changed, 9 insertions(+)
diff --git a/hw/cxl/cxl-events.c b/hw/cxl/cxl-events.c
index 12dee2e467..90536c0e68 100644
--- a/hw/cxl/cxl-events.c
+++ b/hw/cxl/cxl-events.c
@@ -135,6 +135,14 @@ bool cxl_event_insert(CXLDeviceState *cxlds, CXLEventLogType log_type,
QSIMPLEQ_INSERT_TAIL(&log->events, entry, node);
cxl_event_set_status(cxlds, log_type, true);
+ /*
+ * For dynamic capacity event records grouped via More flag,
+ * Only raise interrupt after inserting the last record in the log.
+ */
+ if (log_type == CXL_EVENT_TYPE_DYNAMIC_CAP) {
+ CXLEventDynamicCapacity *dCap = (CXLEventDynamicCapacity *)event;
+ return (dCap->flags & MORE_FLAG) ? false : true;
+ }
/* Count went from 0 to 1 */
return cxl_event_count(log) == 1;
}
diff --git a/include/hw/cxl/cxl_events.h b/include/hw/cxl/cxl_events.h
index 38cadaa0f3..b0e5cc89c0 100644
--- a/include/hw/cxl/cxl_events.h
+++ b/include/hw/cxl/cxl_events.h
@@ -170,6 +170,7 @@ typedef struct CXLEventMemoryModule {
* CXL r3.1 section Table 8-50: Dynamic Capacity Event Record
* All fields little endian.
*/
+#define MORE_FLAG BIT_MASK(0)
typedef struct CXLEventDynamicCapacity {
CXLEventRecordHdr hdr;
uint8_t type;
--
2.43.0
next prev parent reply other threads:[~2024-08-27 16:44 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-27 16:40 [PATCH 0/2] QEMU DCD emulation support fix nifan.cxl
2024-08-27 16:40 ` [PATCH 1/2] hw/mem/cxl_type3: Fix More flag setting for dynamic capacity event records nifan.cxl
2024-08-28 11:47 ` Jonathan Cameron via
2024-08-27 16:40 ` nifan.cxl [this message]
2024-08-28 11:39 ` [PATCH 2/2] hw/cxl/cxl_event: Fix interrupt triggering for dynamic capacity events grouped via More flag Jonathan Cameron via
2024-09-04 16:37 ` Ira Weiny
2024-09-04 16:50 ` Fan Ni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240827164304.88876-3-nifan.cxl@gmail.com \
--to=nifan.cxl@gmail.com \
--cc=a.manzanares@samsung.com \
--cc=dan.j.williams@intel.com \
--cc=dave@stgolabs.net \
--cc=fan.ni@samsung.com \
--cc=ira.weiny@intel.com \
--cc=jonathan.cameron@huawei.com \
--cc=linux-cxl@vger.kernel.org \
--cc=nmtadam.samsung@gmail.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).