qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH-for-8.2 v4 09/10] hw/char/pl011: Add transmit FIFO to PL011St


From: Richard Henderson
Subject: Re: [PATCH-for-8.2 v4 09/10] hw/char/pl011: Add transmit FIFO to PL011State
Date: Thu, 9 Nov 2023 15:24:16 -0800
User-agent: Mozilla Thunderbird

On 11/9/23 11:28, Philippe Mathieu-Daudé wrote:
@@ -436,6 +438,24 @@ static const VMStateDescription vmstate_pl011_clock = {
      }
  };
+static bool pl011_xmit_fifo_state_needed(void *opaque)
+{
+    PL011State* s = opaque;
+
+    return !fifo8_is_empty(&s->xmit_fifo);
+}
+
+static const VMStateDescription vmstate_pl011_xmit_fifo = {
+    .name = "pl011/xmit_fifo",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .needed = pl011_xmit_fifo_state_needed,
+    .fields = (VMStateField[]) {
+        VMSTATE_FIFO8(xmit_fifo, PL011State),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
  static int pl011_post_load(void *opaque, int version_id)
  {
      PL011State* s = opaque;
@@ -487,7 +507,11 @@ static const VMStateDescription vmstate_pl011 = {
      .subsections = (const VMStateDescription * []) {
          &vmstate_pl011_clock,
          NULL
-    }
+    },
+    .subsections = (const VMStateDescription * []) {
+        &vmstate_pl011_xmit_fifo,
+        NULL
+    },
  };

It just occurred to me that you may need a vmstate_pl011 pre_load() to empty the FIFO, which will then be filled if and only if the saved vmstate_pl011_xmit_fifo subsection is present.

Juan, have I got this correct about how migration would or should handle a 
missing subsection?


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]