On Fri, Apr 11, 2025 at 2:19 AM Paolo Bonzini <pbonz...@redhat.com> wrote:
>
> qtest_set_command_cb passed to g_once should match GThreadFunc,
> which it does not.  But using g_once is actually unnecessary,
> because the function is called by riscv_harts_realize() under
> the Big QEMU Lock.
>
> Reported-by: Kohei Tokunaga <ktokunaga.m...@gmail.com>
> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>

Reviewed-by: Alistair Francis <alistair.fran...@wdc.com>

Alistair

> ---
>  hw/riscv/riscv_hart.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/hw/riscv/riscv_hart.c b/hw/riscv/riscv_hart.c
> index a55d1566687..bb9104bae0b 100644
> --- a/hw/riscv/riscv_hart.c
> +++ b/hw/riscv/riscv_hart.c
> @@ -104,8 +104,11 @@ static bool csr_qtest_callback(CharBackend *chr, gchar 
> **words)
>
>  static void riscv_cpu_register_csr_qtest_callback(void)
>  {
> -    static GOnce once;
> -    g_once(&once, (GThreadFunc)qtest_set_command_cb, csr_qtest_callback);
> +    static bool first = true;
> +    if (first) {
> +        first = false;
> +        qtest_set_command_cb(csr_qtest_callback);
> +    }
>  }
>  #endif
>
> --
> 2.49.0
>
>

Reply via email to