qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eric Auger <eric.auger@linaro.org>
To: eric.auger@st.com, qemu-devel@nongnu.org,
	peter.maydell@linaro.org, peter.crosthwaite@xilinx.com,
	pbonzini@redhat.com
Cc: christoffer.dall@linaro.org, patches@linaro.org
Subject: Re: [Qemu-devel] [PATCH] vl: move rom_load_all after machine init done
Date: Mon, 22 Jun 2015 11:26:04 +0200	[thread overview]
Message-ID: <5587D4AC.1050203@linaro.org> (raw)
In-Reply-To: <1434470874-22573-1-git-send-email-eric.auger@linaro.org>

ping

Do you think that change is sensible? Since this takes place in vl.c I
am quite scared but with your experience you may know how much this can
be wrong.

Best Regards

Eric

On 06/16/2015 06:07 PM, Eric Auger wrote:
> On ARM, commit ac9d32e39664e060cd1b538ff190980d57ad69e4 postponed the
> memory preparation for boot until the machine init done notifier. This
> has for consequence to insert ROM at machine init done time.
> 
> However the rom_load_all function stayed called before the ROM are
> inserted. As a consequence the rom_load_all function does not do
> everything it is expected to do, on ARM.
> 
> It currently registers the ROM reset notifier but does not iterate through
> the registered ROM list. the isrom field is not set properly. This latter
> is used to report info in the monitor and also to decide whether the
> rom->data can be freed on ROM reset notifier.
> 
> To fix that regression the patch moves the rom_load_all call after
> machine init done. We also take the opportunity to rename the rom_load_all
> function into rom_check_and_resgister_reset() and integrate the
> rom_load_done in it.
> 
> Signed-off-by: Eric Auger <eric.auger@linaro.org>
> Reported-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
> ---
>  hw/core/loader.c    |  8 ++------
>  include/hw/loader.h |  3 +--
>  vl.c                | 11 ++++-------
>  3 files changed, 7 insertions(+), 15 deletions(-)
> 
> diff --git a/hw/core/loader.c b/hw/core/loader.c
> index 7ee675c..216eeeb 100644
> --- a/hw/core/loader.c
> +++ b/hw/core/loader.c
> @@ -933,7 +933,7 @@ static void rom_reset(void *unused)
>      }
>  }
>  
> -int rom_load_all(void)
> +int rom_check_and_register_reset(void)
>  {
>      hwaddr addr = 0;
>      MemoryRegionSection section;
> @@ -957,12 +957,8 @@ int rom_load_all(void)
>          memory_region_unref(section.mr);
>      }
>      qemu_register_reset(rom_reset, NULL);
> -    return 0;
> -}
> -
> -void rom_load_done(void)
> -{
>      roms_loaded = 1;
> +    return 0;
>  }
>  
>  void rom_set_fw(FWCfgState *f)
> diff --git a/include/hw/loader.h b/include/hw/loader.h
> index 485ff8f..f7b43ab 100644
> --- a/include/hw/loader.h
> +++ b/include/hw/loader.h
> @@ -75,8 +75,7 @@ MemoryRegion *rom_add_blob(const char *name, const void *blob, size_t len,
>                             void *callback_opaque);
>  int rom_add_elf_program(const char *name, void *data, size_t datasize,
>                          size_t romsize, hwaddr addr);
> -int rom_load_all(void);
> -void rom_load_done(void);
> +int rom_check_and_register_reset(void);
>  void rom_set_fw(FWCfgState *f);
>  int rom_copy(uint8_t *dest, hwaddr addr, size_t size);
>  void *rom_ptr(hwaddr addr);
> diff --git a/vl.c b/vl.c
> index 9542095..4f12957 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -4419,18 +4419,15 @@ int main(int argc, char **argv, char **envp)
>  
>      qdev_machine_creation_done();
>  
> -    if (rom_load_all() != 0) {
> -        fprintf(stderr, "rom loading failed\n");
> -        exit(1);
> -    }
> -
>      /* TODO: once all bus devices are qdevified, this should be done
>       * when bus is created by qdev.c */
>      qemu_register_reset(qbus_reset_all_fn, sysbus_get_default());
>      qemu_run_machine_init_done_notifiers();
>  
> -    /* Done notifiers can load ROMs */
> -    rom_load_done();
> +    if (rom_check_and_register_reset() != 0) {
> +        fprintf(stderr, "rom check and register reset failed\n");
> +        exit(1);
> +    }
>  
>      qemu_system_reset(VMRESET_SILENT);
>      if (loadvm) {
> 

  reply	other threads:[~2015-06-22  9:40 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-16 16:07 [Qemu-devel] [PATCH] vl: move rom_load_all after machine init done Eric Auger
2015-06-22  9:26 ` Eric Auger [this message]
2015-06-22  9:43   ` Paolo Bonzini
2015-06-22  9:49     ` Eric Auger
2015-06-22  9:53       ` Paolo Bonzini
2015-06-22  9:58         ` Eric Auger
2015-07-07  9:00           ` Eric Auger
2015-07-07  9:02             ` Paolo Bonzini
2015-07-07  9:07               ` Eric Auger
2015-07-07  9:22                 ` Paolo Bonzini

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=5587D4AC.1050203@linaro.org \
    --to=eric.auger@linaro.org \
    --cc=christoffer.dall@linaro.org \
    --cc=eric.auger@st.com \
    --cc=patches@linaro.org \
    --cc=pbonzini@redhat.com \
    --cc=peter.crosthwaite@xilinx.com \
    --cc=peter.maydell@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).