use irq-safe version of llist operations between USB callback and main
diff --git a/firmware/src_simtrace/llist_irqsafe.h b/firmware/src_simtrace/llist_irqsafe.h
new file mode 100644
index 0000000..b466939
--- /dev/null
+++ b/firmware/src_simtrace/llist_irqsafe.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include "linuxlist.h"
+
+static inline void llist_add_tail_irqsafe(struct llist_head *_new,
+					  struct llist_head *head)
+{
+	__disable_irq();
+	llist_add_tail(_new, head);
+	__enable_irq();
+}
+
+static inline struct llist_head *llist_head_dequeue_irqsafe(struct llist_head *head)
+{
+	struct llist_head *lh;
+
+	__disable_irq();
+	if (llist_empty(head)) {
+		lh = NULL;
+	} else {
+		lh = head->next;
+		llist_del(lh);
+	}
+	__enable_irq();
+
+	return lh;
+}