From: "Alex Bennée" <alex.bennee@linaro.org>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>
Cc: qemu-devel@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
"Evgeny Iakovlev" <eiakovlev@linux.microsoft.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Gavin Shan" <gshan@redhat.com>,
qemu-arm@nongnu.org, "Peter Maydell" <peter.maydell@linaro.org>
Subject: Re: [PATCH v3 9/10] hw/char/pl011: Add transmit FIFO to PL011State
Date: Fri, 13 Oct 2023 18:05:05 +0100 [thread overview]
Message-ID: <87edhylac2.fsf@linaro.org> (raw)
In-Reply-To: <20231013141131.1531-10-philmd@linaro.org>
Philippe Mathieu-Daudé <philmd@linaro.org> writes:
> In order to make the next commit easier to review,
> introduce the transmit FIFO, but do not yet use it.
might be worth mentioning the migration bits here as well.
>
> Uninline pl011_reset_tx_fifo().
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> include/hw/char/pl011.h | 2 ++
> hw/char/pl011.c | 35 +++++++++++++++++++++++++++++++++--
> 2 files changed, 35 insertions(+), 2 deletions(-)
>
> diff --git a/include/hw/char/pl011.h b/include/hw/char/pl011.h
> index d853802132..20898f43a6 100644
> --- a/include/hw/char/pl011.h
> +++ b/include/hw/char/pl011.h
> @@ -18,6 +18,7 @@
> #include "hw/sysbus.h"
> #include "chardev/char-fe.h"
> #include "qom/object.h"
> +#include "qemu/fifo8.h"
>
> #define TYPE_PL011 "pl011"
> OBJECT_DECLARE_SIMPLE_TYPE(PL011State, PL011)
> @@ -53,6 +54,7 @@ struct PL011State {
> Clock *clk;
> bool migrate_clk;
> const unsigned char *id;
> + Fifo8 xmit_fifo;
> };
>
> DeviceState *pl011_create(hwaddr addr, qemu_irq irq, Chardev *chr);
> diff --git a/hw/char/pl011.c b/hw/char/pl011.c
> index 727decd428..9d98bd8f9a 100644
> --- a/hw/char/pl011.c
> +++ b/hw/char/pl011.c
> @@ -147,11 +147,13 @@ static inline void pl011_reset_rx_fifo(PL011State *s)
> s->flags |= PL011_FLAG_RXFE;
> }
>
> -static inline void pl011_reset_tx_fifo(PL011State *s)
> +static void pl011_reset_tx_fifo(PL011State *s)
> {
> /* Reset FIFO flags */
> s->flags &= ~PL011_FLAG_TXFF;
> s->flags |= PL011_FLAG_TXFE;
> +
> + fifo8_reset(&s->xmit_fifo);
> }
>
> static void pl011_write_txdata(PL011State *s, uint8_t data)
> @@ -436,6 +438,22 @@ static const VMStateDescription vmstate_pl011_clock = {
> }
> };
>
> +static bool pl011_xmit_fifo_state_needed(void *opaque)
> +{
> + return false;
> +}
> +
> +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 +505,11 @@ static const VMStateDescription vmstate_pl011 = {
> .subsections = (const VMStateDescription * []) {
> &vmstate_pl011_clock,
> NULL
> - }
> + },
> + .subsections = (const VMStateDescription * []) {
> + &vmstate_pl011_xmit_fifo,
> + NULL
> + },
> };
Doesn't this necessitate the bumping of the migration version data or
do we not worry about new -> old migrations?
>
> static Property pl011_properties[] = {
> @@ -502,6 +524,7 @@ static void pl011_init(Object *obj)
> PL011State *s = PL011(obj);
> int i;
>
> + fifo8_create(&s->xmit_fifo, PL011_FIFO_DEPTH);
> memory_region_init_io(&s->iomem, OBJECT(s), &pl011_ops, s, "pl011", 0x1000);
> sysbus_init_mmio(sbd, &s->iomem);
> for (i = 0; i < ARRAY_SIZE(s->irq); i++) {
> @@ -514,6 +537,13 @@ static void pl011_init(Object *obj)
> s->id = pl011_id_arm;
> }
>
> +static void pl011_finalize(Object *obj)
> +{
> + PL011State *s = PL011(obj);
> +
> + fifo8_destroy(&s->xmit_fifo);
> +}
> +
> static void pl011_realize(DeviceState *dev, Error **errp)
> {
> PL011State *s = PL011(dev);
> @@ -557,6 +587,7 @@ static const TypeInfo pl011_arm_info = {
> .parent = TYPE_SYS_BUS_DEVICE,
> .instance_size = sizeof(PL011State),
> .instance_init = pl011_init,
> + .instance_finalize = pl011_finalize,
> .class_init = pl011_class_init,
> };
Otherwise:
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
next prev parent reply other threads:[~2023-10-13 17:07 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-13 14:11 [PATCH v3 0/10] hw/char/pl011: Implement TX (async) FIFO to avoid blocking the main loop Philippe Mathieu-Daudé
2023-10-13 14:11 ` [PATCH v3 1/10] util/fifo8: Allow fifo8_pop_buf() to not populate popped length Philippe Mathieu-Daudé
2023-10-13 14:11 ` [PATCH v3 2/10] util/fifo8: Introduce fifo8_peek_buf() Philippe Mathieu-Daudé
2023-10-13 16:59 ` Alex Bennée
2023-10-13 14:11 ` [PATCH v3 3/10] hw/char/pl011: Split RX/TX path of pl011_reset_fifo() Philippe Mathieu-Daudé
2023-10-13 14:11 ` [PATCH v3 4/10] hw/char/pl011: Extract pl011_write_txdata() from pl011_write() Philippe Mathieu-Daudé
2023-10-13 14:11 ` [PATCH v3 5/10] hw/char/pl011: Extract pl011_read_rxdata() from pl011_read() Philippe Mathieu-Daudé
2023-10-13 14:11 ` [PATCH v3 6/10] hw/char/pl011: Warn when using disabled transmitter Philippe Mathieu-Daudé
2023-10-13 14:11 ` [PATCH v3 7/10] hw/char/pl011: Check if receiver is enabled Philippe Mathieu-Daudé
2023-10-13 14:11 ` [PATCH v3 8/10] hw/char/pl011: Rename RX FIFO methods Philippe Mathieu-Daudé
2023-10-13 14:11 ` [PATCH v3 9/10] hw/char/pl011: Add transmit FIFO to PL011State Philippe Mathieu-Daudé
2023-10-13 17:05 ` Alex Bennée [this message]
2023-10-13 18:14 ` Richard Henderson
2023-10-13 17:08 ` [PATCH v3 0/10] hw/char/pl011: Implement TX (async) FIFO to avoid blocking the main loop Alex Bennée
2023-10-14 6:40 ` Mark Cave-Ayland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87edhylac2.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=eiakovlev@linux.microsoft.com \
--cc=gshan@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.