[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-4.0 3/3] elf_ops.h: Use address_space_write(
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH for-4.0 3/3] elf_ops.h: Use address_space_write() to write memory |
Date: |
Thu, 22 Nov 2018 16:36:38 +0000 |
On 22 November 2018 at 11:29, Peter Maydell <address@hidden> wrote:
> Currently the load_elf function in elf_ops.h uses
> cpu_physical_memory_write() to write the ELF file to
> memory if it is not handling it as a ROM blob. This
> means we ignore the AddressSpace that the function
> is passed to define where it should be loaded.
> Use address_space_write() instead.
>
> Signed-off-by: Peter Maydell <address@hidden>
> ---
> include/hw/elf_ops.h | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/include/hw/elf_ops.h b/include/hw/elf_ops.h
> index 81cecaf27e2..793dcb85c2b 100644
> --- a/include/hw/elf_ops.h
> +++ b/include/hw/elf_ops.h
> @@ -482,7 +482,8 @@ static int glue(load_elf, SZ)(const char *name, int fd,
> rom_add_elf_program(label, data, file_size, mem_size,
> addr, as);
> } else {
> - cpu_physical_memory_write(addr, data, file_size);
> + address_space_write(as, addr, MEMTXATTRS_UNSPECIFIED,
> + data, file_size);
> g_free(data);
> }
> }
> --
This turns out to have a bug which my testing somehow missed.
The 'as' argument to this function can be NULL, which means that
it should use address_space_memory, so we need to handle that.
(The other side of the if() doesn't need to special case NULL
because rom_add_elf_program() and the other loader.c code handle
NULL later on.)
thanks
-- PMM