lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 1 Dec 2022 14:28:19 -0700 From: Dave Jiang <dave.jiang@...el.com> To: ira.weiny@...el.com, Dan Williams <dan.j.williams@...el.com> Cc: Jonathan Cameron <Jonathan.Cameron@...wei.com>, Alison Schofield <alison.schofield@...el.com>, Vishal Verma <vishal.l.verma@...el.com>, Ben Widawsky <bwidawsk@...nel.org>, Steven Rostedt <rostedt@...dmis.org>, Davidlohr Bueso <dave@...olabs.net>, linux-kernel@...r.kernel.org, linux-cxl@...r.kernel.org Subject: Re: [PATCH V2 11/11] cxl/test: Simulate event log overflow On 11/30/2022 5:27 PM, ira.weiny@...el.com wrote: > From: Ira Weiny <ira.weiny@...el.com> > > Log overflow is marked by a separate trace message. > > Simulate a log with lots of messages and flag overflow until it is > drained a bit. > > Reviewed-by: Jonathan Cameron <Jonathan.Cameron@...wei.com> > Signed-off-by: Ira Weiny <ira.weiny@...el.com> Reviewed-by: Dave Jiang <dave.jiang@...el.com> > > --- > Changes from RFC > Adjust for new struct changes > --- > tools/testing/cxl/test/events.c | 49 ++++++++++++++++++++++++++++++++- > 1 file changed, 48 insertions(+), 1 deletion(-) > > diff --git a/tools/testing/cxl/test/events.c b/tools/testing/cxl/test/events.c > index 0bcc485e07da..ceabefb526c2 100644 > --- a/tools/testing/cxl/test/events.c > +++ b/tools/testing/cxl/test/events.c > @@ -15,6 +15,8 @@ struct mock_event_log { > u16 clear_idx; > u16 cur_idx; > u16 nr_events; > + u16 nr_overflow; > + u16 overflow_reset; > struct cxl_event_record_raw *events[CXL_TEST_EVENT_CNT_MAX]; > }; > > @@ -45,6 +47,7 @@ void reset_event_log(struct mock_event_log *log) > { > log->cur_idx = 0; > log->clear_idx = 0; > + log->nr_overflow = log->overflow_reset; > } > > /* Handle can never be 0 use 1 based indexing for handle */ > @@ -76,8 +79,12 @@ static void event_store_add_event(struct mock_event_store *mes, > return; > > log = &mes->mock_logs[log_type]; > - if (WARN_ON(log->nr_events >= CXL_TEST_EVENT_CNT_MAX)) > + > + if ((log->nr_events + 1) > CXL_TEST_EVENT_CNT_MAX) { > + log->nr_overflow++; > + log->overflow_reset = log->nr_overflow; > return; > + } > > log->events[log->nr_events] = event; > log->nr_events++; > @@ -87,6 +94,7 @@ int mock_get_event(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd) > { > struct cxl_get_event_payload *pl; > struct mock_event_log *log; > + u16 nr_overflow; > u8 log_type; > int i; > > @@ -118,6 +126,21 @@ int mock_get_event(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd) > if (!log_empty(log)) > pl->flags |= CXL_GET_EVENT_FLAG_MORE_RECORDS; > > + if (log->nr_overflow) { > + u64 ns; > + > + pl->flags |= CXL_GET_EVENT_FLAG_OVERFLOW; > + pl->overflow_err_count = cpu_to_le16(nr_overflow); > + ns = ktime_get_real_ns(); > + ns -= 5000000000; /* 5s ago */ > + pl->first_overflow_timestamp = cpu_to_le64(ns); > + ns = ktime_get_real_ns(); > + ns -= 1000000000; /* 1s ago */ > + pl->last_overflow_timestamp = cpu_to_le64(ns); > + > + log->nr_overflow = 0; > + } > + > return 0; > } > EXPORT_SYMBOL_GPL(mock_get_event); > @@ -297,6 +320,30 @@ u32 cxl_mock_add_event_logs(struct cxl_dev_state *cxlds) > (struct cxl_event_record_raw *)&mem_module); > mes->ev_status |= CXLDEV_EVENT_STATUS_INFO; > > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &maint_needed); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, > + (struct cxl_event_record_raw *)&dram); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, > + (struct cxl_event_record_raw *)&gen_media); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, > + (struct cxl_event_record_raw *)&mem_module); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, > + (struct cxl_event_record_raw *)&dram); > + /* Overflow this log */ > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + event_store_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes->ev_status |= CXLDEV_EVENT_STATUS_FAIL; > + > event_store_add_event(mes, CXL_EVENT_TYPE_FATAL, &hardware_replace); > event_store_add_event(mes, CXL_EVENT_TYPE_FATAL, > (struct cxl_event_record_raw *)&dram);
Powered by blists - more mailing lists