WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [Patch] Fix for x86_64 boot failures due tobadsegment se

To: Keir Fraser <keir@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [Patch] Fix for x86_64 boot failures due tobadsegment setup for protected mode.
From: Steven Rostedt <srostedt@xxxxxxxxxx>
Date: Fri, 10 Nov 2006 17:32:59 -0500
Cc: "Yu, Wilfred" <wilfred.yu@xxxxxxxxx>, "Xin, Xiaohui" <xiaohui.xin@xxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx, "Li, Susie" <susie.li@xxxxxxxxx>, "Jiang, Yunhong" <yunhong.jiang@xxxxxxxxx>, "Li, Xin B" <xin.b.li@xxxxxxxxx>, Herbert Xu <herbert.xu@xxxxxxxxxx>
Delivery-date: Fri, 10 Nov 2006 14:33:19 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <C17A6693.458D%keir@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <C17A6693.458D%keir@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 1.5.0.4 (X11/20060614)
Keir Fraser wrote:
> I have a patch I'll check in. It'd be good get some testing of it.
> 
> Changeset is 12365:ca75b51d69c7
> 
>  -- Keir
> 

Keir,

I was playing with Plan9 which happens to also tinker with ss, fs, and
gs in this critical section. It still crashes pretty early, but it
crashes earlier without this patch.  This patch lets Plan9 crash at the
same location before the original patch Stephen Tweedie sent :}.

This patch makes the mov_to_seg more complete. I left out cs, since I
don't think that would even make sense with a mov.

-- Steve

Signed-off-by: Steven Rostedt <srostedt@xxxxxxxxxx>


diff -r ca75b51d69c7 tools/firmware/vmxassist/vm86.c
--- a/tools/firmware/vmxassist/vm86.c   Fri Nov 10 17:21:54 2006 +0000
+++ b/tools/firmware/vmxassist/vm86.c   Fri Nov 10 17:28:02 2006 -0500
@@ -829,15 +829,33 @@ mov_to_seg(struct regs *regs, unsigned p
                goto fail;
 
        switch ((modrm & 0x38) >> 3) {
+       case 0: /* es */
+               regs->ves = getreg16(regs, modrm);
+               saved_rm_regs.ves = 0;
+               oldctx.es_sel = regs->ves;
+               return 1;
+
+       /* case 1: cs */
+
+       case 2: /* ss */
+               regs->uss = getreg16(regs, modrm);
+               saved_rm_regs.uss = 0;
+               oldctx.ss_sel = regs->uss;
+               return 1;
        case 3: /* ds */
                regs->vds = getreg16(regs, modrm);
                saved_rm_regs.vds = 0;
                oldctx.ds_sel = regs->vds;
                return 1;
-       case 0: /* es */
-               regs->ves = getreg16(regs, modrm);
-               saved_rm_regs.ves = 0;
-               oldctx.es_sel = regs->ves;
+       case 4: /* fs */
+               regs->vfs = getreg16(regs, modrm);
+               saved_rm_regs.vfs = 0;
+               oldctx.fs_sel = regs->vfs;
+               return 1;
+       case 5: /* gs */
+               regs->vgs = getreg16(regs, modrm);
+               saved_rm_regs.vgs = 0;
+               oldctx.gs_sel = regs->vgs;
                return 1;
        }
 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel