Message ID | 1364779317-3963-1-git-send-email-lig.fnst@cn.fujitsu.com |
---|---|
State | New |
Headers | show |
On Mon, Apr 01, 2013 at 09:21:57AM +0800, liguang wrote: > if head magic is missing or wrong unexpectedly, we'd > better to reject booting. > e.g. > I make a mistake to boot a vmlinuz for MIPS(which > I think it's for x86) like this: > qemu-system-x86_64 -kernel vmlinuz -initrd demord > then qemu report: > "qemu: linux kernel too old to load a ram disk" > that's misleading. > > Signed-off-by: liguang <lig.fnst@cn.fujitsu.com> > --- > hw/i386/pc.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > index b1e06fa..bfbb5fe 100644 > --- a/hw/i386/pc.c > +++ b/hw/i386/pc.c > @@ -683,6 +683,9 @@ static void load_linux(void *fw_cfg, > if (load_multiboot(fw_cfg, f, kernel_filename, initrd_filename, > kernel_cmdline, kernel_size, header)) { > return; > + } else { > + fprintf(stderr, "not a valid multiboot image!\n"); > + exit(1); > } > protocol = 0; The point of protocol = 0 is to support old Linux kernels. If we exit when probing load_multiboot() fails then QEMU will no longer load old Linux kernels! I suggest just: fprintf(stderr, "warning: not a valid multiboot or modern kernel image\n"); Stefan
在 2013-04-05五的 14:59 +0200,Stefan Hajnoczi写道: > On Mon, Apr 01, 2013 at 09:21:57AM +0800, liguang wrote: > > if head magic is missing or wrong unexpectedly, we'd > > better to reject booting. > > e.g. > > I make a mistake to boot a vmlinuz for MIPS(which > > I think it's for x86) like this: > > qemu-system-x86_64 -kernel vmlinuz -initrd demord > > then qemu report: > > "qemu: linux kernel too old to load a ram disk" > > that's misleading. > > > > Signed-off-by: liguang <lig.fnst@cn.fujitsu.com> > > --- > > hw/i386/pc.c | 3 +++ > > 1 files changed, 3 insertions(+), 0 deletions(-) > > > > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > > index b1e06fa..bfbb5fe 100644 > > --- a/hw/i386/pc.c > > +++ b/hw/i386/pc.c > > @@ -683,6 +683,9 @@ static void load_linux(void *fw_cfg, > > if (load_multiboot(fw_cfg, f, kernel_filename, initrd_filename, > > kernel_cmdline, kernel_size, header)) { > > return; > > + } else { > > + fprintf(stderr, "not a valid multiboot image!\n"); > > + exit(1); > > } > > protocol = 0; > > The point of protocol = 0 is to support old Linux kernels. If we exit > when probing load_multiboot() fails then QEMU will no longer load old > Linux kernels! > > I suggest just: > fprintf(stderr, "warning: not a valid multiboot or modern kernel image\n"); > > Stefan OK, Thanks!
diff --git a/hw/i386/pc.c b/hw/i386/pc.c index b1e06fa..bfbb5fe 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -683,6 +683,9 @@ static void load_linux(void *fw_cfg, if (load_multiboot(fw_cfg, f, kernel_filename, initrd_filename, kernel_cmdline, kernel_size, header)) { return; + } else { + fprintf(stderr, "not a valid multiboot image!\n"); + exit(1); } protocol = 0; }
if head magic is missing or wrong unexpectedly, we'd better to reject booting. e.g. I make a mistake to boot a vmlinuz for MIPS(which I think it's for x86) like this: qemu-system-x86_64 -kernel vmlinuz -initrd demord then qemu report: "qemu: linux kernel too old to load a ram disk" that's misleading. Signed-off-by: liguang <lig.fnst@cn.fujitsu.com> --- hw/i386/pc.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)