fix boot with -kernel parameter

This commit is contained in:
Glauber Costa 2009-05-12 13:34:16 +00:00
parent e5eca305a1
commit fe1b7c1a3e
2 changed files with 51 additions and 1 deletions

45
qemu-fix-load-linux.patch Normal file
View File

@ -0,0 +1,45 @@
From d6ecb03610dba922cbfde42acb41603e2c658047 Mon Sep 17 00:00:00 2001
From: Glauber Costa <glommer@redhat.com>
Date: Fri, 8 May 2009 02:22:13 -0300
Subject: [PATCH 2/2] reset state for load_linux
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 <glommer@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
hw/pc.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
Index: qemu-kvm-0.10/qemu/hw/pc.c
===================================================================
--- qemu-kvm-0.10.orig/qemu/hw/pc.c
+++ qemu-kvm-0.10/qemu/hw/pc.c
@@ -527,6 +527,7 @@ static void generate_bootsect(uint8_t *o
rom[sizeof(rom) - 1] = -sum;
memcpy(option_rom, rom, sizeof(rom));
+ option_rom_setup_reset(option_rom, sizeof (rom));
}
static long get_file_size(FILE *f)
@@ -694,6 +695,12 @@ static void load_linux(uint8_t *option_r
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);
}

View File

@ -1,7 +1,7 @@
Summary: QEMU is a FAST! processor emulator
Name: qemu
Version: 0.10
Release: 16%{?dist}
Release: 17%{?dist}
# I have mistakenly thought the revision name would be 1.0.
# So 0.10 series get Epoch = 1
Epoch: 2
@ -37,6 +37,7 @@ Patch14: qemu-bios-bigger-roms.patch
Patch15: qemu-fix-display-breakage.patch
Patch16: qemu-fix-qcow2-2TB.patch
Patch17: qemu-fix-qcow2-corruption.patch
Patch18: qemu-fix-load-linux.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: SDL-devel zlib-devel which texi2html gnutls-devel cyrus-sasl-devel
@ -234,6 +235,7 @@ such as kvmtrace and kvm_stat.
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%build
# systems like rhel build system does not have a recent enough linker so
@ -478,6 +480,9 @@ fi
%{_mandir}/man1/qemu-img.1*
%changelog
* Tue May 12 2009 Glauber Costa <glommer@redhat.com> - 2:0.10-17
- fix reboot with -kernel parameter
* Fri May 1 2009 Mark McLoughlin <markmc@redhat.com> - 2:0.10-16
- Really provide qemu-kvm as a metapackage