On Fri, 24 May 2013 23:23:02 +0200 Laszlo Ersek <ler...@redhat.com> wrote:
> ------------------------------[ proposed fix ]-------------------------- > diff --git a/target-i386/translate.c b/target-i386/translate.c > index 0e0356f..4fbd6c0 100644 > --- a/target-i386/translate.c > +++ b/target-i386/translate.c > @@ -4813,7 +4813,11 @@ static target_ulong disas_insn(CPUX86State *env, > DisasContext *s, > /* 0x66 is ignored if rex.w is set */ > dflag = 2; > } > - if (!(prefixes & PREFIX_ADR)) { > + if (prefixes & PREFIX_ADR) { > + /* flip it back, 0x67 should have no effect */ > + aflag ^= 1; > + } > + else { > aflag = 2; > } > } > ------------------------------[ proposed fix ]-------------------------- > > I'll post it separately to the list for review. > > Luiz, can you please test it with Windows guests? On Windows 8 I can get past the boot loop point and even see Windows' boot logo, but then I get a black screen (which I guess is the evolution of the blue screen) asking me to reboot the PC saying "Error Code: 0x0000005D". That error code is what I get with Windows 2008, with or without or patch. I googled a bit about it, and it seems to be related to some CPU incompatibility, which makes me think that this is a difference issue (meaning that your patch does fix the boot loop bug).