From: "Sebastian Herbszt" Subject: Re: [Patch] [BIOS] support BCV for rombios Date: Thu, 11 Dec 2008 01:02:40 +0100 Message-ID: References: <0C959291A7343takebe_akio@jp.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <0C959291A7343takebe_akio@jp.fujitsu.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bochs-developers-bounces@lists.sourceforge.net To: Akio Takebe , xen-devel , bochs-developers@lists.sourceforge.net List-Id: xen-devel@lists.xenproject.org Akio Takebe wrote: > Hi, > > This patch supports BCV for PCI device. > If we use this patch in Xen, we would need some more fixes. > This patch just support BCV. > We could boot a full virtualize guest from a Pass through device > with VT-d on Xen. > > Signed-off-by: Akio Takebe > Signed-off-by: Kouya Shimura > > Ref: > - XenSummit Asia 2008 > http://www.xen.org/files/xensummit_tokyo/24_Hitoshi%20Matsumoto_en.pdf > - BIOS Boot Specification > http://www.phoenix.com/NR/rdonlyres/56E38DE2-3E6F-4743-835F-B4A53726ABED/0/specsbbs101.pdf > > Best Regards, > > Akio Takebe > > Index: rombios.c > =================================================================== > RCS file: /cvsroot/bochs/bochs/bios/rombios.c,v > retrieving revision 1.209 > diff -c -r1.209 rombios.c > *** rombios.c 2 Jun 2008 20:08:10 -0000 1.209 > --- rombios.c 8 Dec 2008 10:09:53 -0000 > *************** > *** 10194,10199 **** > --- 10194,10223 ---- > mov ax, 2[bx] > cmp ax, #0x506e > jne no_bev > + > + mov ax, 0x16[bx] ;; 0x16 is the offset of Boot Connection Vector > + cmp ax, #0x0000 > + je no_bcv > + > + ;; Option ROM has BCV. Run it now. > + push cx ;; Push seg > + push ax ;; Push offset > + > + ;; Point ES:DI at "$PnP", which tells the ROM that we are a PnP BIOS. > + mov bx, #0xf000 > + mov es, bx > + lea di, pnp_string Should ax, bx and dx get set to some sane value, e.g. 0? Those are only needed for PnP ISA devices, but some broken option rom might expect something there. > + /* jump to BCV function entry pointer */ > + mov bp, sp ;; Call ROM BCV routine using seg:off on stack > + db 0xff ;; call_far ss:[bp+0] > + db 0x5e > + db 0 > + cli ;; In case expansion ROM BIOS turns IF on > + add sp, #2 ;; Pop offset value > + pop cx ;; Pop seg value (restore CX) > + ja no_bev ja? not jmp? > + no_bcv: > mov ax, 0x1a[bx] ;; 0x1A is also the offset into the expansion header of... > cmp ax, #0x0000 ;; the Bootstrap Entry Vector, or zero if there is none. > je no_bev - Sebastian ------------------------------------------------------------------------------ SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada. The future of the web can't happen without you. Join us at MIX09 to help pave the way to the Next Web now. Learn more and register at http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/