On 3/9/25 12:37, Pierrick Bouvier wrote:
Allow device init functions to use it, which can be convenient in some
cases (like hw/hyperv/hyperv.c).

Signed-off-by: Pierrick Bouvier <pierrick.bouv...@linaro.org>
---
  system/physmem.c | 1 -
  system/vl.c      | 3 +++
  2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/system/physmem.c b/system/physmem.c
index 8df9f30a0bb..c5fb784a9e1 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3281,7 +3281,6 @@ void cpu_exec_init_all(void)
       * do this much later, rather than requiring board models to state
       * up front what their requirements are.
       */
-    finalize_target_page_bits();
      io_mem_init();
      memory_map_init();
  }
diff --git a/system/vl.c b/system/vl.c
index ec93988a03a..c64f8c8e808 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -2848,6 +2848,9 @@ void qemu_init(int argc, char **argv)
      bool userconfig = true;
      FILE *vmstate_dump_file = NULL;
+ /* Set target page info before creating machine and associated devices */
+    finalize_target_page_bits();

This is far too early, and therefore incorrect.

You have to wait until after all possible calls to set_preferred_target_page_bits(). The only relevant call is in arm_cpu_realizefn, invoked from the MachineClass.init, invoked from machine_run_board_init().


r~

Reply via email to