From: Jan Kiszka <jan.kiszka@siemens.com>
To: Kevin O'Connor <kevin@koconnor.net>
Cc: seabios <seabios@seabios.org>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] Boot failure with MS-Dos 6.22 (due to bad BIOS build?)
Date: Mon, 19 Mar 2012 21:03:09 +0100 [thread overview]
Message-ID: <4F6790FD.6030500@siemens.com> (raw)
In-Reply-To: <20120319002947.GA22937@morn.localdomain>
On 2012-03-19 01:29, Kevin O'Connor wrote:
> On Mon, Feb 27, 2012 at 04:25:09PM +0100, Jan Kiszka wrote:
>> On 2012-02-27 10:51, Daniel P. Berrange wrote:
>>> I'm seeing current QEMU GIT fail to boot MS-Dos 6.22 with the following
>>> crash:
>>>
>>> # qemu-system-x86_64 -fda ~/MS-DOS\ 6.22.img -m 1 -curses
>>> iPXE v1.0.0-591-g7aee315
>>> iPXE (http://ipxe.org) 00:03.0 C900 PCI2.10 PnP PMM+00000000+00000000 C900
>>>
>>> Booting from Floppy..
>>> . qemu: fatal: Trying to execute code outside RAM or ROM at 0x00000001000effff
>>>
>>> EAX=ffffffff EBX=ffffffff ECX=0000c934 EDX=00000068
>>> ESI=00006801 EDI=00000000 EBP=0000002b ESP=0000fff5
>
> I traced this down, and it appears to be a stack size issue. It looks
> like MSDOS calls "int 0x13" with 229 bytes of stack space during its
> boot. On my build gcc generates the handle_13() function with a
> maximum of 140 bytes of stack space utilized (according to
> tools/checkstack.py). On your build, gcc created it with a maximum of
> 216 bytes. The entry functions use 42 bytes of stack space. Add it
> up and you can see that the additional stack space that gcc used
> caused %esp to wrap and the stack was corrupted.
>
> I'm not sure how to best work around this. One way is to sprinkle
> "noinline" keywords through disk.c. (It seems like gcc got in trouble
> on your build by inlining many functions into disk_13().) Another way
> would be to jump into the extra stack (the disk code already uses its
> own stack) earlier in the handle_13 code.
>
> Also, can you see what happens if you change "--param
> large-stack-frame=4" to "--param large-stack-frame=0" in the build?
This makes no difference here, still 216 bytes.
Jan
--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2012-03-19 20:03 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-27 9:51 [Qemu-devel] Boot failure with MS-Dos 6.22 (due to bad BIOS build?) Daniel P. Berrange
2012-02-27 15:25 ` Jan Kiszka
2012-02-27 16:00 ` [Qemu-devel] [SeaBIOS] " Peter Stuge
2012-02-27 16:10 ` Jan Kiszka
2012-02-27 16:20 ` Peter Stuge
2012-02-29 8:45 ` [Qemu-devel] " Kevin O'Connor
2012-02-29 9:19 ` Daniel P. Berrange
2012-02-29 9:51 ` [Qemu-devel] [SeaBIOS] " Fred .
2012-03-19 0:29 ` [Qemu-devel] " Kevin O'Connor
2012-03-19 20:03 ` Jan Kiszka [this message]
2012-03-20 2:17 ` 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=4F6790FD.6030500@siemens.com \
--to=jan.kiszka@siemens.com \
--cc=kevin@koconnor.net \
--cc=qemu-devel@nongnu.org \
--cc=seabios@seabios.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.