qemu-devel
[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: Philippe Mathieu-Daudé
Subject: Re: [PATCH-for-8.2 v4 09/10] hw/char/pl011: Add transmit FIFO to PL011State
Date: Wed, 17 Jul 2024 15:34:07 +0200
User-agent: Mozilla Thunderbird

On 16/11/23 16:48, Juan Quintela wrote:
Richard Henderson <richard.henderson@linaro.org> wrote:
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?

I hav'nt looked about how the device is created. But if it is created
with the fifo empty you don't need the pre_load().

This is indeed the case. Thank you Juan!




reply via email to

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