qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH-for-10.0] system/qtest: Access memory using cpu_physical_memo


From: Peter Maydell
Subject: Re: [PATCH-for-10.0] system/qtest: Access memory using cpu_physical_memory_rw() API
Date: Tue, 10 Dec 2024 10:03:04 +0000

On Wed, 27 Nov 2024 at 19:20, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>
> There is no vCPU within the QTest accelerator (well, they
> are stubs doing nothing, see dummy_cpu_thread_fn).
> Directly use the cpu_physical_memory_rw() API -- which
> amusingly prefixed 'cpu_' does not use vCPU -- to access
> memory. This reduces accesses to the global 'first_cpu'.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>  system/qtest.c | 42 ++++++++++++++----------------------------
>  1 file changed, 14 insertions(+), 28 deletions(-)
>
> diff --git a/system/qtest.c b/system/qtest.c
> index 12703a20455..a2de9a7d5a4 100644
> --- a/system/qtest.c
> +++ b/system/qtest.c
> @@ -18,6 +18,7 @@
>  #include "chardev/char-fe.h"
>  #include "exec/ioport.h"
>  #include "exec/memory.h"
> +#include "exec/cpu-common.h"
>  #include "exec/tswap.h"
>  #include "hw/qdev-core.h"
>  #include "hw/irq.h"
> @@ -514,23 +515,19 @@ static void qtest_process_command(CharBackend *chr, 
> gchar **words)
>
>          if (words[0][5] == 'b') {
>              uint8_t data = value;
> -            address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> -                                &data, 1);
> +            cpu_physical_memory_write(addr, &data, 1);

I'm not a huge fan of this, because cpu_physical_memory_write()
is one of those old APIs that it would be nice to see less
use of, not more. Ideally anything issuing memory transactions
should know what it's issuing them to, i.e. should be using
address_space_* functions and passing an AddressSpace.

If you don't want to use first_cpu, then you could use
address_space_write(address_space_memory, ...), which is
what cpu_physical_memory_write() is doing under the hood.
The qtest protocol assumes a single address space anyway.

thanks
-- PMM



reply via email to

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