On Fri, Aug 6, 2021 at 5:01 AM Xianting Tian
<xianting.tian@xxxxxxxxxxxxxxxxx> wrote:
@@ -163,6 +155,13 @@ static void hvc_console_print(struct console *co, const char *b,The loop looks like it might race against changes to the list. It seems strange
if (vtermnos[index] == -1)
return;
+ list_for_each_entry(hp, &hvc_structs, next)
+ if (hp->vtermno == vtermnos[index])
+ break;
+
+ c = hp->c;
+
+ spin_lock_irqsave(&hp->c_lock, flags);
that the print function has to actually search for the structure here.
It may be better to have yet another array for the buffer pointers next to
the cons_ops[] and vtermnos[] arrays.
+/*I think you need a higher alignment for DMA buffers, instead of sizeof(long),
+ * These sizes are most efficient for vio, because they are the
+ * native transfer size. We could make them selectable in the
+ * future to better deal with backends that want other buffer sizes.
+ */
+#define N_OUTBUF 16
+#define N_INBUF 16
+
+#define __ALIGNED__ __attribute__((__aligned__(sizeof(long))))
I would suggest ARCH_DMA_MINALIGN.
Arnd