[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [Patch] Fix for x86_64 boot failures due tobadsegment setup for protected mode.
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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |