[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: |
Juan Quintela |
Subject: |
Re: [PATCH-for-8.2 v4 09/10] hw/char/pl011: Add transmit FIFO to PL011State |
Date: |
Thu, 16 Nov 2023 16:48:38 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.3 (gnu/linux) |
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().
I have no idea about this device, but sometimes it just happens that if
the fifo has data, you need to put an irq somewhere or mark it some
place that there is pending job on this device.
Later, Juan.
- Re: [PATCH-for-8.2 v4 02/10] util/fifo8: Introduce fifo8_peek_buf(), (continued)
- [PATCH-for-8.2 v4 03/10] hw/char/pl011: Split RX/TX path of pl011_reset_fifo(), Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 04/10] hw/char/pl011: Extract pl011_write_txdata() from pl011_write(), Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 05/10] hw/char/pl011: Extract pl011_read_rxdata() from pl011_read(), Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 06/10] hw/char/pl011: Warn when using disabled transmitter, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 07/10] hw/char/pl011: Check if receiver is enabled, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 08/10] hw/char/pl011: Rename RX FIFO methods, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 09/10] hw/char/pl011: Add transmit FIFO to PL011State, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 10/10] hw/char/pl011: Implement TX FIFO, Philippe Mathieu-Daudé, 2023/11/09
- Re: [PATCH-for-8.2 v4 00/10] hw/char/pl011: Implement TX (async) FIFO to avoid blocking the main loop, Peter Maydell, 2023/11/09