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<g...@redhat.com> > >--- > > > >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.