Gary,
Which CPU family you are using? 0xF? There is an errata which seems to
be related. See page 50.
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/
33610.pdf
-Wei
-----Original Message-----
From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
[mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Gary Grebus
Sent: Tuesday, November 18, 2008 12:50 PM
To: xen-devel
Subject: [Xen-devel] Problem with BIOS timer interrupts
Hi,
While changing our Xen 3.2.x based HVM BIOS ROM to use gPXE instead of
etherboot, I ran into an interesting behavior. The gPXE code, which
runs in real mode, contains the following sequence:
wait_for_tick:
pushl %eax
pushw %fs
movw $0x40, %ax
movw %ax, %fs
movl %fs:(0x6c), %eax
1: pushf
sti
hlt
popf
cmpl %fs:(0x6c), %eax
je 1b
popw %fs
popl %eax
ret
It uses this to timeout waiting for a key press. The expected interrupt
is from the BIOS timer implemented in rombios. But in fact, the loop
hangs. However, if I insert a nop instruction between the sti and hlt,
then things work as expected.
Is there something wrong with this sequence? This happens on AMD, so
it's not a quirk of the real mode emulations on Intel.
I notice that in the gPXE code currently in xen-unstable, the path that
uses this code is patched out.
/gary
--
Gary Grebus
Virtual Iron Software, Inc.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|