Lines Matching refs:log

24 static void reset_overflow(CXLEventLog *log)  in reset_overflow()  argument
26 log->overflow_err_count = 0; in reset_overflow()
27 log->first_overflow_timestamp = 0; in reset_overflow()
28 log->last_overflow_timestamp = 0; in reset_overflow()
33 CXLEventLog *log; in cxl_event_init() local
37 log = &cxlds->event_logs[i]; in cxl_event_init()
38 log->next_handle = 1; in cxl_event_init()
39 log->overflow_err_count = 0; in cxl_event_init()
40 log->first_overflow_timestamp = 0; in cxl_event_init()
41 log->last_overflow_timestamp = 0; in cxl_event_init()
42 log->irq_enabled = false; in cxl_event_init()
43 log->irq_vec = start_msg_num++; in cxl_event_init()
44 qemu_mutex_init(&log->lock); in cxl_event_init()
45 QSIMPLEQ_INIT(&log->events); in cxl_event_init()
54 static CXLEvent *cxl_event_get_head(CXLEventLog *log) in cxl_event_get_head() argument
56 return QSIMPLEQ_FIRST(&log->events); in cxl_event_get_head()
64 static int cxl_event_count(CXLEventLog *log) in cxl_event_count() argument
69 QSIMPLEQ_FOREACH(event, &log->events, node) { in cxl_event_count()
76 static bool cxl_event_empty(CXLEventLog *log) in cxl_event_empty() argument
78 return QSIMPLEQ_EMPTY(&log->events); in cxl_event_empty()
83 CXLEventLog *log) in cxl_event_delete_head() argument
85 CXLEvent *entry = cxl_event_get_head(log); in cxl_event_delete_head()
87 reset_overflow(log); in cxl_event_delete_head()
88 QSIMPLEQ_REMOVE_HEAD(&log->events, node); in cxl_event_delete_head()
89 if (cxl_event_empty(log)) { in cxl_event_delete_head()
103 CXLEventLog *log; in cxl_event_insert() local
112 log = &cxlds->event_logs[log_type]; in cxl_event_insert()
114 QEMU_LOCK_GUARD(&log->lock); in cxl_event_insert()
116 if (cxl_event_count(log) >= CXL_TEST_EVENT_OVERFLOW) { in cxl_event_insert()
117 if (log->overflow_err_count == 0) { in cxl_event_insert()
118 log->first_overflow_timestamp = time; in cxl_event_insert()
120 log->overflow_err_count++; in cxl_event_insert()
121 log->last_overflow_timestamp = time; in cxl_event_insert()
129 entry->data.hdr.handle = cpu_to_le16(log->next_handle); in cxl_event_insert()
130 log->next_handle++; in cxl_event_insert()
132 if (log->next_handle == 0) { in cxl_event_insert()
133 log->next_handle++; in cxl_event_insert()
137 QSIMPLEQ_INSERT_TAIL(&log->events, entry, node); in cxl_event_insert()
141 return cxl_event_count(log) == 1; in cxl_event_insert()
148 CXLEventLog *log; in cxl_event_get_records() local
156 log = &cxlds->event_logs[log_type]; in cxl_event_get_records()
158 QEMU_LOCK_GUARD(&log->lock); in cxl_event_get_records()
160 entry = cxl_event_get_head(log); in cxl_event_get_records()
166 if (!cxl_event_empty(log)) { in cxl_event_get_records()
170 if (log->overflow_err_count) { in cxl_event_get_records()
172 pl->overflow_err_count = cpu_to_le16(log->overflow_err_count); in cxl_event_get_records()
174 cpu_to_le64(log->first_overflow_timestamp); in cxl_event_get_records()
176 cpu_to_le64(log->last_overflow_timestamp); in cxl_event_get_records()
188 CXLEventLog *log; in cxl_event_clear_records() local
199 log = &cxlds->event_logs[log_type]; in cxl_event_clear_records()
201 QEMU_LOCK_GUARD(&log->lock); in cxl_event_clear_records()
211 entry = cxl_event_get_head(log); in cxl_event_clear_records()
222 entry = cxl_event_get_head(log); in cxl_event_clear_records()
224 cxl_event_delete_head(cxlds, log_type, log); in cxl_event_clear_records()
225 entry = cxl_event_get_head(log); in cxl_event_clear_records()
238 CXLEventLog *log = &cxlds->event_logs[i]; in cxl_event_irq_assert() local
240 if (!log->irq_enabled || cxl_event_empty(log)) { in cxl_event_irq_assert()
246 msix_notify(pdev, log->irq_vec); in cxl_event_irq_assert()
248 msi_notify(pdev, log->irq_vec); in cxl_event_irq_assert()