All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gal Hammer <ghammer@redhat.com>
To: Kevin O'Connor <kevin@koconnor.net>
Cc: seabios <seabios@seabios.org>,
	Julian Pidancet <julian.pidancet@gmail.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [SeaBIOS] [BUG] Windows 7 fails to start with new vgabios binaries
Date: Tue, 10 Dec 2013 04:55:36 -0500 (EST)	[thread overview]
Message-ID: <1177689370.4553974.1386669336686.JavaMail.root@redhat.com> (raw)
In-Reply-To: <20131209221251.GA5135@morn.localdomain>

Kevin,

The patch was verified and it solves the problem on Windows 7 official release as well.

Thanks!

    Gal.

----- Original Message -----
From: "Kevin O'Connor" <kevin@koconnor.net>
To: "Gerd Hoffmann" <kraxel@redhat.com>
Cc: "Gal Hammer" <ghammer@redhat.com>, "seabios" <seabios@seabios.org>, qemu-devel@nongnu.org, "Julian Pidancet" <julian.pidancet@gmail.com>
Sent: Tuesday, December 10, 2013 12:12:51 AM
Subject: Re: [SeaBIOS] [BUG] Windows 7 fails to start with new vgabios binaries

On Mon, Dec 09, 2013 at 10:57:25AM -0500, Kevin O'Connor wrote:
> On Mon, Dec 09, 2013 at 02:20:59PM +0100, Gerd Hoffmann wrote:
> > On Mo, 2013-12-09 at 14:18 +0200, Gal Hammer wrote:
> > > A Windows 7 (32-bit) VM running with QXL device fails to start with the 
> > > new updated vgabios binaries (commit 
> > Tracked down to the new vgabios stack switching.  With
> > CONFIG_VGA_ALLOCATE_EXTRA_STACK=n everything is fine again.
> 
> Ughh.  WinXP doesn't have the problem, but I can also reproduce on
> Win7 beta.
> 
> I'll change the default for CONFIG_VGA_ALLOCATE_EXTRA_STACK to off.

I tracked this down further.  The problem is the Windows x86 emulator
doesn't correctly handle memory accesses relative to the %esp
register.  Julian reported this some time back and we worked around it
then.  However, the recent "extra stack" assembler code inserted a few
of these instructions.

I think the proper fix is to leave CONFIG_VGA_ALLOCATE_EXTRA_STACK on
and use slightly different assembler so as not to aggravate win7.

I tested the seabios patch below and my win7 beta now boots okay.

-Kevin


--- a/vgasrc/vgaentry.S
+++ b/vgasrc/vgaentry.S
@@ -97,12 +97,9 @@ entry_10_extrastack:
         movl %ecx, BREGS_ecx(%eax)
         movw %es, BREGS_es(%eax)
         movl %esp, BREGS_size+0(%eax)
-        movzwl %sp, %esp
         movw %ss, BREGS_size+4(%eax)
-        movl (%esp), %edx
-        movl %edx, BREGS_code(%eax)
-        movw 4(%esp), %dx
-        movw %dx, BREGS_flags(%eax)
+        popl BREGS_code(%eax)
+        popw BREGS_flags(%eax)
 
         movw %ds, %dx           // Setup %ss/%esp and call function
         movw %dx, %ss

  reply	other threads:[~2013-12-10  9:56 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-09 12:18 [Qemu-devel] [BUG] Windows 7 fails to start with new vgabios binaries Gal Hammer
2013-12-09 13:20 ` Gerd Hoffmann
2013-12-09 15:57   ` [Qemu-devel] [SeaBIOS] " Kevin O'Connor
2013-12-09 22:12     ` Kevin O'Connor
2013-12-10  9:55       ` Gal Hammer [this message]
2013-12-11 21: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=1177689370.4553974.1386669336686.JavaMail.root@redhat.com \
    --to=ghammer@redhat.com \
    --cc=gal@redhat.com \
    --cc=julian.pidancet@gmail.com \
    --cc=kevin@koconnor.net \
    --cc=kraxel@redhat.com \
    --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.