qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 2/2] reset state for load_linux


From: Glauber Costa
Subject: [Qemu-devel] [PATCH 2/2] reset state for load_linux
Date: Fri, 8 May 2009 02:22:13 -0300

The linux loader is just an option rom like any other, just with
some special requirements. Right now, our option rom resetting
mechanism is not being applied to it. As a result, users using
-kernel will not be able to successfully reboot their machines

This patch fixes it by saving all the data we generated in
the load_linux() function, to be used later by the option rom
resetting mechanism.

Signed-off-by: Glauber Costa <address@hidden>
---
 hw/pc.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/hw/pc.c b/hw/pc.c
index 0025474..6b46427 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -579,6 +579,7 @@ static void generate_bootsect(target_phys_addr_t option_rom,
     rom[sizeof(rom) - 1] = -sum;
 
     cpu_physical_memory_write_rom(option_rom, rom, sizeof(rom));
+    option_rom_setup_reset(option_rom, sizeof (rom));
 }
 
 static long get_file_size(FILE *f)
@@ -746,6 +747,12 @@ static void load_linux(target_phys_addr_t option_rom,
     memset(gpr, 0, sizeof gpr);
     gpr[4] = cmdline_addr-real_addr-16;        /* SP (-16 is paranoia) */
 
+    option_rom_setup_reset(real_addr, setup_size);
+    option_rom_setup_reset(prot_addr, kernel_size);
+    option_rom_setup_reset(cmdline_addr, cmdline_size);
+    if (initrd_filename)
+        option_rom_setup_reset(initrd_addr, initrd_size);
+
     generate_bootsect(option_rom, gpr, seg, 0);
 }
 
-- 
1.6.2.2





reply via email to

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