From: Naphtali Sprei <nsprei@redhat.com>
To: qemu-devel@nongnu.org, Glauber Costa <glommer@redhat.com>,
coreboot@coreboot.org
Subject: [Qemu-devel] Stack corruption problem with SeaBIOS/gPXE under QEMU
Date: Thu, 12 Nov 2009 13:20:58 +0200 [thread overview]
Message-ID: <4AFBEF9A.5010802@redhat.com> (raw)
Hi,
I've found a problem with the usage of SeaBIOS/gPXE in Qemu.
The scenario is when failing to boot from network and falling back to booting from hard-disk (-boot nc).
The cause of the problem is that both SeaBIOS and gPXE (in it's installation phase) uses same stack area, 0x7c00.
The gPXE code corrupts the SeaBIOS stack, so when gPXE returns to SeaBIOS chaos occurs.
Output: "qemu: fatal: Trying to execute code outside RAM or ROM at 0x00000000eb300000"
A simple hack/patch (attached) solves this problem, but a proper patch expected from the SeaBIOS guys.
Enjoy,
Naphtali
Patch against current SeaBIOS git
Signed-off-by: Naphtali Sprei <nsprei@redhat.com>
---
src/arch/i386/prefix/pxeprefix.S | 2 +-
src/arch/i386/prefix/romprefix.S | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/arch/i386/prefix/pxeprefix.S b/src/arch/i386/prefix/pxeprefix.S
index b541e4b..11dd45d 100644
--- a/src/arch/i386/prefix/pxeprefix.S
+++ b/src/arch/i386/prefix/pxeprefix.S
@@ -47,7 +47,7 @@ FILE_LICENCE ( GPL2_OR_LATER )
/* Set up stack just below 0x7c00 */
xorw %ax, %ax
movw %ax, %ss
- movl $0x7c00, %esp
+ movl $0x7a00, %esp
/* Clear direction flag, for the sake of sanity */
cld
/* Print welcome message */
diff --git a/src/arch/i386/prefix/romprefix.S b/src/arch/i386/prefix/romprefix.S
index cb474e8..93f3f17 100644
--- a/src/arch/i386/prefix/romprefix.S
+++ b/src/arch/i386/prefix/romprefix.S
@@ -587,7 +587,7 @@ exec: /* Set %ds = %cs */
/* Obtain a reasonably-sized temporary stack */
xorw %ax, %ax
movw %ax, %ss
- movw $0x7c00, %sp
+ movw $0x7a00, %sp
/* Install gPXE */
movl image_source, %esi
--
1.6.3.3
next reply other threads:[~2009-11-12 11:21 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-12 11:20 Naphtali Sprei [this message]
2009-11-14 19:47 ` [Qemu-devel] Stack corruption problem with SeaBIOS/gPXE under QEMU Kevin O'Connor
2009-11-15 9:43 ` Naphtali Sprei
2009-11-16 13:36 ` Avi Kivity
2009-11-16 14:02 ` Avi Kivity
2009-11-17 2:26 ` Kevin O'Connor
2009-11-17 13:23 ` Avi Kivity
2009-11-21 0:47 ` Kevin O'Connor
2009-11-29 10:58 ` Avi Kivity
2009-11-18 9:39 ` Gleb Natapov
2009-11-18 9:49 ` Alexander Graf
2009-11-18 9:53 ` Gleb Natapov
2009-11-18 12:58 ` Kevin O'Connor
2009-11-18 13:06 ` Kevin O'Connor
2009-11-18 14:22 ` Gleb Natapov
2009-11-18 15:38 ` [gPXE] " Joshua Oreman
2009-11-19 1:07 ` Kevin O'Connor
2009-11-18 13:50 ` Avi Kivity
2009-11-18 14:19 ` Gleb Natapov
2009-11-18 14:21 ` Avi Kivity
2009-11-20 22:39 ` Kevin O'Connor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4AFBEF9A.5010802@redhat.com \
--to=nsprei@redhat.com \
--cc=coreboot@coreboot.org \
--cc=glommer@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).