Lines Matching full:log

19 /* Artificial limit on the number of events a log can hold */
22 static void reset_overflow(CXLEventLog *log) in reset_overflow() argument
24 log->overflow_err_count = 0; in reset_overflow()
25 log->first_overflow_timestamp = 0; in reset_overflow()
26 log->last_overflow_timestamp = 0; in reset_overflow()
31 CXLEventLog *log; in cxl_event_init() local
35 log = &cxlds->event_logs[i]; in cxl_event_init()
36 log->next_handle = 1; in cxl_event_init()
37 log->overflow_err_count = 0; in cxl_event_init()
38 log->first_overflow_timestamp = 0; in cxl_event_init()
39 log->last_overflow_timestamp = 0; in cxl_event_init()
40 log->irq_enabled = false; in cxl_event_init()
41 log->irq_vec = start_msg_num++; in cxl_event_init()
42 qemu_mutex_init(&log->lock); in cxl_event_init()
43 QSIMPLEQ_INIT(&log->events); in cxl_event_init()
52 static CXLEvent *cxl_event_get_head(CXLEventLog *log) in cxl_event_get_head() argument
54 return QSIMPLEQ_FIRST(&log->events); in cxl_event_get_head()
62 static int cxl_event_count(CXLEventLog *log) in cxl_event_count() argument
67 QSIMPLEQ_FOREACH(event, &log->events, node) { in cxl_event_count()
74 static bool cxl_event_empty(CXLEventLog *log) in cxl_event_empty() argument
76 return QSIMPLEQ_EMPTY(&log->events); in cxl_event_empty()
81 CXLEventLog *log) in cxl_event_delete_head() argument
83 CXLEvent *entry = cxl_event_get_head(log); in cxl_event_delete_head()
85 reset_overflow(log); in cxl_event_delete_head()
86 QSIMPLEQ_REMOVE_HEAD(&log->events, node); in cxl_event_delete_head()
87 if (cxl_event_empty(log)) { in cxl_event_delete_head()
101 CXLEventLog *log; in cxl_event_insert() local
110 log = &cxlds->event_logs[log_type]; in cxl_event_insert()
112 QEMU_LOCK_GUARD(&log->lock); in cxl_event_insert()
114 if (cxl_event_count(log) >= CXL_TEST_EVENT_OVERFLOW) { in cxl_event_insert()
115 if (log->overflow_err_count == 0) { in cxl_event_insert()
116 log->first_overflow_timestamp = time; in cxl_event_insert()
118 log->overflow_err_count++; in cxl_event_insert()
119 log->last_overflow_timestamp = time; in cxl_event_insert()
127 entry->data.hdr.handle = cpu_to_le16(log->next_handle); in cxl_event_insert()
128 log->next_handle++; in cxl_event_insert()
130 if (log->next_handle == 0) { in cxl_event_insert()
131 log->next_handle++; in cxl_event_insert()
135 QSIMPLEQ_INSERT_TAIL(&log->events, entry, node); in cxl_event_insert()
139 return cxl_event_count(log) == 1; in cxl_event_insert()
145 CXLEventLog *log; in cxl_discard_all_event_records() local
148 log = &cxlds->event_logs[log_type]; in cxl_discard_all_event_records()
149 while (!cxl_event_empty(log)) { in cxl_discard_all_event_records()
150 cxl_event_delete_head(cxlds, log_type, log); in cxl_discard_all_event_records()
159 CXLEventLog *log; in cxl_event_get_records() local
167 log = &cxlds->event_logs[log_type]; in cxl_event_get_records()
169 QEMU_LOCK_GUARD(&log->lock); in cxl_event_get_records()
171 entry = cxl_event_get_head(log); in cxl_event_get_records()
177 if (!cxl_event_empty(log)) { in cxl_event_get_records()
181 if (log->overflow_err_count) { in cxl_event_get_records()
183 pl->overflow_err_count = cpu_to_le16(log->overflow_err_count); in cxl_event_get_records()
185 cpu_to_le64(log->first_overflow_timestamp); in cxl_event_get_records()
187 cpu_to_le64(log->last_overflow_timestamp); in cxl_event_get_records()
199 CXLEventLog *log; in cxl_event_clear_records() local
210 log = &cxlds->event_logs[log_type]; in cxl_event_clear_records()
212 QEMU_LOCK_GUARD(&log->lock); in cxl_event_clear_records()
222 entry = cxl_event_get_head(log); in cxl_event_clear_records()
233 entry = cxl_event_get_head(log); in cxl_event_clear_records()
235 cxl_event_delete_head(cxlds, log_type, log); in cxl_event_clear_records()
236 entry = cxl_event_get_head(log); in cxl_event_clear_records()
249 CXLEventLog *log = &cxlds->event_logs[i]; in cxl_event_irq_assert() local
251 if (!log->irq_enabled || cxl_event_empty(log)) { in cxl_event_irq_assert()
257 msix_notify(pdev, log->irq_vec); in cxl_event_irq_assert()
259 msi_notify(pdev, log->irq_vec); in cxl_event_irq_assert()