From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=37200 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PkVEn-0007Fx-7X for qemu-devel@nongnu.org; Wed, 02 Feb 2011 00:26:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PkUvf-00071P-Ov for qemu-devel@nongnu.org; Wed, 02 Feb 2011 00:06:56 -0500 Received: from mx1.redhat.com ([209.132.183.28]:35357) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PkUvf-00071L-Hq for qemu-devel@nongnu.org; Wed, 02 Feb 2011 00:06:55 -0500 Date: Wed, 2 Feb 2011 07:06:51 +0200 From: Gleb Natapov Subject: Re: [Qemu-devel] [PATCH] fix linuxboot.bin and multiboot.bin to not hijack int19 Message-ID: <20110202050650.GD18827@redhat.com> References: <20110131090247.GT14750@redhat.com> <4D48911F.2060802@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4D48911F.2060802@codemonkey.ws> List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org On Tue, Feb 01, 2011 at 05:02:55PM -0600, Anthony Liguori wrote: > On 01/31/2011 03:02 AM, Gleb Natapov wrote: > >Currently linuxboot.bin and multiboot.bin option roms override int19 > >vector to intercept boot process. No sane option rom should do that. > >Provide bev entry instead that will be called by BIOS if option rom > >is selected for booting. > > > >Signed-off-by: Gleb Natapov > >--- > > > >Note that this patch should be applied after qemu will upgrade to Seabios > >that supports boot order. Otherwise there will be change in behavior > >since option rom will not be selected for booting by default. > > I don't think there's a SeaBIOS release yet that includes the boot > order support. > I thought for AHCI support you are going to move to latest Seabios HEAD. If this is not the case the patch should wait. > Regards, > > Anthony Liguori > > >diff --git a/pc-bios/optionrom/linuxboot.S b/pc-bios/optionrom/linuxboot.S > >index c109363..79b3ae8 100644 > >--- a/pc-bios/optionrom/linuxboot.S > >+++ b/pc-bios/optionrom/linuxboot.S > >@@ -22,6 +22,8 @@ > > > > #include "optionrom.h" > > > >+#define PRODUCT "Linux loader" > >+ > > BOOT_ROM_START > > > > run_linuxboot: > >diff --git a/pc-bios/optionrom/multiboot.S b/pc-bios/optionrom/multiboot.S > >index 9131837..069c4e8 100644 > >--- a/pc-bios/optionrom/multiboot.S > >+++ b/pc-bios/optionrom/multiboot.S > >@@ -20,6 +20,8 @@ > > > > #include "optionrom.h" > > > >+#define PRODUCT "multiboot loader" > >+ > > #define MULTIBOOT_MAGIC 0x2badb002 > > > > #define GS_PROT_JUMP 0 > >diff --git a/pc-bios/optionrom/optionrom.h b/pc-bios/optionrom/optionrom.h > >index fbdd48a..95dbdda 100644 > >--- a/pc-bios/optionrom/optionrom.h > >+++ b/pc-bios/optionrom/optionrom.h > >@@ -93,31 +93,41 @@ > > .global _start; \ > > _start:; \ > > .short 0xaa55; \ > >- .byte (_end - _start) / 512; > >+ .byte (_end - _start) / 512; \ > >+ lret; \ > >+ .org 0x18; \ > >+ .short 0; \ > >+ .short _pnph; \ > >+ _pnph: \ > >+ .ascii "$PnP"; \ > >+ .byte 0x01; \ > >+ .byte ( _pnph_len / 16 ); \ > >+ .short 0x0000; \ > >+ .byte 0x00; \ > >+ .byte 0x00; \ > >+ .long 0x00000000; \ > >+ .short _manufacturer; \ > >+ .short _product; \ > >+ .long 0x00000000; \ > >+ .short 0x0000; \ > >+ .short 0x0000; \ > >+ .short _bev; \ > >+ .short 0x0000; \ > >+ .short 0x0000; \ > >+ .equ _pnph_len, . - _pnph; > > > > #define BOOT_ROM_START \ > > OPTION_ROM_START \ > >- push %eax; \ > >- push %ds; \ > >- \ > >- /* setup ds so we can access the IVT */ \ > >- xor %ax, %ax; \ > >- mov %ax, %ds; \ > >- \ > >- /* install our int 19 handler */ \ > >- movw $int19_handler, (0x19*4); \ > >- mov %cs, (0x19*4+2); \ > >- \ > >- pop %ds; \ > >- pop %eax; \ > >- lret; \ > >- \ > >- int19_handler:; \ > >+ _bev:; \ > > /* DS = CS */ \ > > movw %cs, %ax; \ > > movw %ax, %ds; > > > > #define OPTION_ROM_END \ > >+ _manufacturer:; \ > >+ .asciz "QEMU"; \ > >+ _product:; \ > >+ .asciz PRODUCT; \ > > .align 512, 0; \ > > _end: > > > >-- > > Gleb. > > -- Gleb.