Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error [PATCH 1/1]

2012-09-27 Thread Brendan Dolan-Gavitt
I also debugged this issue today and ended up in the same place --
after enabling the CPUID_DE bit in cpuid.c, I am able to start the
Windows 7 x64 installer, but it bluescreens with various messages
after a minute or so (with various codes like
DRIVER_IRQL_NOT_LESS_OR_EQUAL, KMODE_EXCEPTION_NOT_HANDLED, etc.).

As far as I can tell, CPUID_DE says whether the CPU supports setting
I/O breakpoints (break on in, out, ins, outs), and slightly changes
how accesses to DR4 and DR5 behave. This is further controlled by a
bit in the CR4 register. TCG does not support this yet; there is a
comment in target-i386/helper.c:
void hw_breakpoint_insert(CPUState *env, int index)
{
[...]
case 2:
 /* No support for I/O watchpoints yet */
break;
[...]
}

I doubt this is the root cause of the Win7 x64 bluescreens, though; it
seems pretty unlikely that the installer would be trying to use I/O
debugging. I'll try to find the time to verify that no code is trying
to set CR4.DE, though.

So, I would also support having this bit turned on by default so that
more people can investigate these crashes. I'll certainly be looking
into them when I have time.

For what it's worth, Windows 7 32-bit works quite well when running
under qemu-system-x86_64.

-Brendan

For the sake of completeness, here's what I found in Intel's
documentation on CPUID_DE, CR4.DE, and I/O breakpoints:

Bit 2, DE. Debugging Extensions. Support for I/O breakpoints,
including CR4.DE for controlling the feature, and optional trapping of
accesses to DR4 and DR5.
[...]
Debug Registers DR4 and DR5

Debug registers DR4 and DR5 are reserved when debug extensions are
enabled (when the DE flag in control register CR4 is set) and attempts
to reference the DR4 and DR5 registers cause invalid-opcode exceptions
(#UD). When debug extensions are not enabled (when the DE flag is
clear), these registers are aliased to debug registers DR6 and DR7.
[...]

Debug Control Register (DR7)
[...]
R/W0 through R/W3 (read/write) fields (bits 16, 17, 20, 21, 24, 25,
28, and 29) — Specifies the breakpoint condition for the corresponding
breakpoint. The DE (debug extensions) flag in control register CR4
determines how the bits in the R/Wn fields are interpreted. When the
DE flag is set, the processor interprets bits as follows:

00 -- Break on instruction execution only.
01 -- Break on data writes only.
10 -- Break on I/O reads or writes.
11 -- Break on data reads or writes but not instruction fetches.

When the DE flag is clear, the processor interprets the R/Wn bits the
same as for the Intel386TM and Intel486TM
processors, which is as follows:

00 -- Break on instruction execution only.
01 -- Break on data writes only.
10 -- Undefined.
11 -- Break on data reads or writes but not instruction fetches.

On Mon, Sep 17, 2012 at 2:54 PM, Clemens Kolbitsch
kolbit...@lastline.com wrote:
 On Mon, Sep 17, 2012 at 11:19 AM, Aurelien Jarno aurel...@aurel32.net wrote:
 On Mon, Sep 17, 2012 at 10:27:35AM -0700, Clemens Kolbitsch wrote:
 On Mon, Sep 10, 2012 at 10:31 AM, Aurelien Jarno aurel...@aurel32.net 
 wrote:
  On Mon, Sep 10, 2012 at 06:23:43PM +0200, Stefan Weil wrote:
  Am 10.09.2012 08:19, schrieb Clemens Kolbitsch:
  On Sat, Sep 8, 2012 at 11:22 AM, Clemens Kolbitsch
  kolbit...@lastline.com wrote:
  On Fri, Sep 7, 2012 at 9:26 PM, Stefan Weil s...@weilnetz.de wrote:
  Am 08.09.2012 02:48, schrieb Clemens Kolbitsch:
  Hi guys,
  
  I need to run Win7 64bit in Qemu without KVM support. I found a few
  messages concerning the unsupported architecture problem (Windows
  shows a BSOD with STOP 0x005D ... on boot), for example
  
  http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
  or
  http://permalink.gmane.org/gmane.comp.emulators.qemu/92457
  
  but I don't think there was ever a solution to the problem - at least
  what is proposed does not work (I've tried stable and GIT versions).
  
  Since I have a decent background of modifying the Qemu internals, I'm
  more than happy to contribute to solving this issue, but I'm not sure
  if anyone is currently working on it (i.e., I don't want to start at   0
  in case someone is about to release a patch).
  
  Please let me know if there is already a know solution/workaround or
  whoever might be working on it, please ping me so we can sync.
  
  BTW, in case this is necessary, here are the details of what I
  need/what is not working:
  
  Qemu: current git-trunk,
  
  x86_64-softmmu$ ./qemu-system-x86_64 --version
  QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice Bellard
  
  host: 64bit, Ubuntu LTS12.04
  
  guest: 64bit Windows 7, no KVM possible
  
  Thanks!
  -Clemens
  
  Hi Clemens,
  
  AFAIK, nobody is working on this issue which exists for a long time 
  now.
  It would be great if you could find a solution to make QEMU without 
  KVM
  work with Windows guests.
  Hi Stefan,
  
  thanks for the info. I'll work on it then - hopefully I can come back
  with a patch soon!
  
  PS: It's 

Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error [PATCH 1/1]

2012-09-27 Thread Clemens Kolbitsch
Brendan,

I was also getting the same BSOD error codes. I was very busy with
other stuff recently, so I pretty much didn't get any further than
what I said in my last mail. But I'm more than happy helping out if
you need anything debugging this. Just let me know

-Clemens

On Thu, Sep 27, 2012 at 4:55 PM, Brendan Dolan-Gavitt
brenda...@gatech.edu wrote:
 I also debugged this issue today and ended up in the same place --
 after enabling the CPUID_DE bit in cpuid.c, I am able to start the
 Windows 7 x64 installer, but it bluescreens with various messages
 after a minute or so (with various codes like
 DRIVER_IRQL_NOT_LESS_OR_EQUAL, KMODE_EXCEPTION_NOT_HANDLED, etc.).

 As far as I can tell, CPUID_DE says whether the CPU supports setting
 I/O breakpoints (break on in, out, ins, outs), and slightly changes
 how accesses to DR4 and DR5 behave. This is further controlled by a
 bit in the CR4 register. TCG does not support this yet; there is a
 comment in target-i386/helper.c:
 void hw_breakpoint_insert(CPUState *env, int index)
 {
 [...]
 case 2:
  /* No support for I/O watchpoints yet */
 break;
 [...]
 }

 I doubt this is the root cause of the Win7 x64 bluescreens, though; it
 seems pretty unlikely that the installer would be trying to use I/O
 debugging. I'll try to find the time to verify that no code is trying
 to set CR4.DE, though.

 So, I would also support having this bit turned on by default so that
 more people can investigate these crashes. I'll certainly be looking
 into them when I have time.

 For what it's worth, Windows 7 32-bit works quite well when running
 under qemu-system-x86_64.

 -Brendan

 For the sake of completeness, here's what I found in Intel's
 documentation on CPUID_DE, CR4.DE, and I/O breakpoints:

 Bit 2, DE. Debugging Extensions. Support for I/O breakpoints,
 including CR4.DE for controlling the feature, and optional trapping of
 accesses to DR4 and DR5.
 [...]
 Debug Registers DR4 and DR5

 Debug registers DR4 and DR5 are reserved when debug extensions are
 enabled (when the DE flag in control register CR4 is set) and attempts
 to reference the DR4 and DR5 registers cause invalid-opcode exceptions
 (#UD). When debug extensions are not enabled (when the DE flag is
 clear), these registers are aliased to debug registers DR6 and DR7.
 [...]

 Debug Control Register (DR7)
 [...]
 R/W0 through R/W3 (read/write) fields (bits 16, 17, 20, 21, 24, 25,
 28, and 29) — Specifies the breakpoint condition for the corresponding
 breakpoint. The DE (debug extensions) flag in control register CR4
 determines how the bits in the R/Wn fields are interpreted. When the
 DE flag is set, the processor interprets bits as follows:

 00 -- Break on instruction execution only.
 01 -- Break on data writes only.
 10 -- Break on I/O reads or writes.
 11 -- Break on data reads or writes but not instruction fetches.

 When the DE flag is clear, the processor interprets the R/Wn bits the
 same as for the Intel386TM and Intel486TM
 processors, which is as follows:

 00 -- Break on instruction execution only.
 01 -- Break on data writes only.
 10 -- Undefined.
 11 -- Break on data reads or writes but not instruction fetches.

 On Mon, Sep 17, 2012 at 2:54 PM, Clemens Kolbitsch
 kolbit...@lastline.com wrote:
 On Mon, Sep 17, 2012 at 11:19 AM, Aurelien Jarno aurel...@aurel32.net 
 wrote:
 On Mon, Sep 17, 2012 at 10:27:35AM -0700, Clemens Kolbitsch wrote:
 On Mon, Sep 10, 2012 at 10:31 AM, Aurelien Jarno aurel...@aurel32.net 
 wrote:
  On Mon, Sep 10, 2012 at 06:23:43PM +0200, Stefan Weil wrote:
  Am 10.09.2012 08:19, schrieb Clemens Kolbitsch:
  On Sat, Sep 8, 2012 at 11:22 AM, Clemens Kolbitsch
  kolbit...@lastline.com wrote:
  On Fri, Sep 7, 2012 at 9:26 PM, Stefan Weil s...@weilnetz.de wrote:
  Am 08.09.2012 02:48, schrieb Clemens Kolbitsch:
  Hi guys,
  
  I need to run Win7 64bit in Qemu without KVM support. I found a few
  messages concerning the unsupported architecture problem (Windows
  shows a BSOD with STOP 0x005D ... on boot), for example
  
  http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
  or
  http://permalink.gmane.org/gmane.comp.emulators.qemu/92457
  
  but I don't think there was ever a solution to the problem - at 
  least
  what is proposed does not work (I've tried stable and GIT versions).
  
  Since I have a decent background of modifying the Qemu internals, 
  I'm
  more than happy to contribute to solving this issue, but I'm not 
  sure
  if anyone is currently working on it (i.e., I don't want to start 
  at 0
  in case someone is about to release a patch).
  
  Please let me know if there is already a know solution/workaround or
  whoever might be working on it, please ping me so we can sync.
  
  BTW, in case this is necessary, here are the details of what I
  need/what is not working:
  
  Qemu: current git-trunk,
  
  x86_64-softmmu$ ./qemu-system-x86_64 --version
  QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice 
  Bellard
 

Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error [PATCH 1/1]

2012-09-17 Thread Clemens Kolbitsch
On Mon, Sep 10, 2012 at 10:31 AM, Aurelien Jarno aurel...@aurel32.net wrote:
 On Mon, Sep 10, 2012 at 06:23:43PM +0200, Stefan Weil wrote:
 Am 10.09.2012 08:19, schrieb Clemens Kolbitsch:
 On Sat, Sep 8, 2012 at 11:22 AM, Clemens Kolbitsch
 kolbit...@lastline.com wrote:
 On Fri, Sep 7, 2012 at 9:26 PM, Stefan Weil s...@weilnetz.de wrote:
 Am 08.09.2012 02:48, schrieb Clemens Kolbitsch:
 Hi guys,
 
 I need to run Win7 64bit in Qemu without KVM support. I found a few
 messages concerning the unsupported architecture problem (Windows
 shows a BSOD with STOP 0x005D ... on boot), for example
 
 http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
 or
 http://permalink.gmane.org/gmane.comp.emulators.qemu/92457
 
 but I don't think there was ever a solution to the problem - at least
 what is proposed does not work (I've tried stable and GIT versions).
 
 Since I have a decent background of modifying the Qemu internals, I'm
 more than happy to contribute to solving this issue, but I'm not sure
 if anyone is currently working on it (i.e., I don't want to start at 0
 in case someone is about to release a patch).
 
 Please let me know if there is already a know solution/workaround or
 whoever might be working on it, please ping me so we can sync.
 
 BTW, in case this is necessary, here are the details of what I
 need/what is not working:
 
 Qemu: current git-trunk,
 
 x86_64-softmmu$ ./qemu-system-x86_64 --version
 QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice Bellard
 
 host: 64bit, Ubuntu LTS12.04
 
 guest: 64bit Windows 7, no KVM possible
 
 Thanks!
 -Clemens
 
 Hi Clemens,
 
 AFAIK, nobody is working on this issue which exists for a long time now.
 It would be great if you could find a solution to make QEMU without KVM
 work with Windows guests.
 Hi Stefan,
 
 thanks for the info. I'll work on it then - hopefully I can come back
 with a patch soon!
 
 PS: It's QEMU, not Qemu. I modified the subject in my reply :-)
 hehe, old habbit :) I'll try to remember - but why is the ML then
 called Qemu-devel ? ;)
 After a first night of debugging, I have come up with a simple patch.
 I'm still testing and it seems it's not the ultimate solution yet
 (there are still bluescreens), but it already gets you much further
 while booting (using either the install CD or an actual image).
 
 This diffs against the current stable-1.1. As you can see, one of the
 feature bits of the CPUID are removed due to TCG not supporting them
 (or the TCG bitmask is just missing them). Since Qemu uses CPUID_DE in

 QEMU :-)

 other locations, I'm assuming the bitmask is just wrong.
 
 Can someone confirm that TCG supports CPUID_DE ? If not, I'll need to
 work on this, otherwise I'll investigate why Win7 still crashes with a
 BSOD.
 
 Thanks!
 Clemens
 
 
 qemu$ git diff
 diff --git a/target-i386/cpu.c b/target-i386/cpu.c
 index 388bc5c..f2af36d 100644
 --- a/target-i386/cpu.c
 +++ b/target-i386/cpu.c
 @@ -259,7 +259,8 @@ typedef struct x86_def_t {
 CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC | CPUID_SEP | \
 CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV | CPUID_PAT | \
 CPUID_PSE36 | CPUID_CLFLUSH | CPUID_ACPI | CPUID_MMX | \
 -  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS)
 +  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS | \
 +  CPUID_DE) /* needed by Win7 64bit */
 /* partly implemented:
 CPUID_MTRR, CPUID_MCA, CPUID_CLFLUSH (needed for Win64)
 CPUID_PSE36 (needed for Solaris) */

 Hi Clemens,

 indeed, it looks like CPUID_DE fixes that BSOD with STOP 0x005D 
 In my test scenario Windows now reboots instead of showing the BSOD.

 This commit added the TCG feature bit trimming which broke Windows:

commit 551a2dec8fa55006a68393b9d6fb63577d2b3f1c
Autor:Andre Przywara andre.przyw...@amd.com Do Mär 11 14:39:03
2010
Eintragender:Aurelien Jarno aurel...@aurel32.net  Sa Mär 13
16:50:54 2010

x86/cpuid: add TCG feature bit trimming

In KVM we trim the user provided CPUID bits to match the host CPU's
one. Introduce a similar feature to QEMU/TCG. Create a mask of TCG's
capabilities and apply it to the user bits.
This allows to let the CPU models reflect their native archetypes.

Signed-off-by: Andre Przywara andre.przyw...@amd.com
Signed-off-by: Aurelien Jarno aurel...@aurel32.net


 Andre, why don't we set the requested feature bits - no matter what
 TCG provides?


 Well the CPU flags are supposed to represent what a code can use. If we
 announce things that we don't support, some code might enable some
 features or instructions that are just causing an illegal instruction.

 Now the question is to know if DE is implemented in TCG or not. It
 *seems* there are some parts implemented, but not fully.

 --
 Aurelien Jarno  GPG: 1024D/F1BCDB73
 aurel...@aurel32.net http://www.aurel32.net

Aurelien,

I understand 

Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error [PATCH 1/1]

2012-09-17 Thread Aurelien Jarno
On Mon, Sep 17, 2012 at 10:27:35AM -0700, Clemens Kolbitsch wrote:
 On Mon, Sep 10, 2012 at 10:31 AM, Aurelien Jarno aurel...@aurel32.net wrote:
  On Mon, Sep 10, 2012 at 06:23:43PM +0200, Stefan Weil wrote:
  Am 10.09.2012 08:19, schrieb Clemens Kolbitsch:
  On Sat, Sep 8, 2012 at 11:22 AM, Clemens Kolbitsch
  kolbit...@lastline.com wrote:
  On Fri, Sep 7, 2012 at 9:26 PM, Stefan Weil s...@weilnetz.de wrote:
  Am 08.09.2012 02:48, schrieb Clemens Kolbitsch:
  Hi guys,
  
  I need to run Win7 64bit in Qemu without KVM support. I found a few
  messages concerning the unsupported architecture problem (Windows
  shows a BSOD with STOP 0x005D ... on boot), for example
  
  http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
  or
  http://permalink.gmane.org/gmane.comp.emulators.qemu/92457
  
  but I don't think there was ever a solution to the problem - at least
  what is proposed does not work (I've tried stable and GIT versions).
  
  Since I have a decent background of modifying the Qemu internals, I'm
  more than happy to contribute to solving this issue, but I'm not sure
  if anyone is currently working on it (i.e., I don't want to start at 0
  in case someone is about to release a patch).
  
  Please let me know if there is already a know solution/workaround or
  whoever might be working on it, please ping me so we can sync.
  
  BTW, in case this is necessary, here are the details of what I
  need/what is not working:
  
  Qemu: current git-trunk,
  
  x86_64-softmmu$ ./qemu-system-x86_64 --version
  QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice Bellard
  
  host: 64bit, Ubuntu LTS12.04
  
  guest: 64bit Windows 7, no KVM possible
  
  Thanks!
  -Clemens
  
  Hi Clemens,
  
  AFAIK, nobody is working on this issue which exists for a long time now.
  It would be great if you could find a solution to make QEMU without KVM
  work with Windows guests.
  Hi Stefan,
  
  thanks for the info. I'll work on it then - hopefully I can come back
  with a patch soon!
  
  PS: It's QEMU, not Qemu. I modified the subject in my reply :-)
  hehe, old habbit :) I'll try to remember - but why is the ML then
  called Qemu-devel ? ;)
  After a first night of debugging, I have come up with a simple patch.
  I'm still testing and it seems it's not the ultimate solution yet
  (there are still bluescreens), but it already gets you much further
  while booting (using either the install CD or an actual image).
  
  This diffs against the current stable-1.1. As you can see, one of the
  feature bits of the CPUID are removed due to TCG not supporting them
  (or the TCG bitmask is just missing them). Since Qemu uses CPUID_DE in
 
  QEMU :-)
 
  other locations, I'm assuming the bitmask is just wrong.
  
  Can someone confirm that TCG supports CPUID_DE ? If not, I'll need to
  work on this, otherwise I'll investigate why Win7 still crashes with a
  BSOD.
  
  Thanks!
  Clemens
  
  
  qemu$ git diff
  diff --git a/target-i386/cpu.c b/target-i386/cpu.c
  index 388bc5c..f2af36d 100644
  --- a/target-i386/cpu.c
  +++ b/target-i386/cpu.c
  @@ -259,7 +259,8 @@ typedef struct x86_def_t {
  CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC | CPUID_SEP | \
  CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV | CPUID_PAT | 
   \
  CPUID_PSE36 | CPUID_CLFLUSH | CPUID_ACPI | CPUID_MMX | \
  -  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS)
  +  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS | \
  +  CPUID_DE) /* needed by Win7 64bit */
  /* partly implemented:
  CPUID_MTRR, CPUID_MCA, CPUID_CLFLUSH (needed for Win64)
  CPUID_PSE36 (needed for Solaris) */
 
  Hi Clemens,
 
  indeed, it looks like CPUID_DE fixes that BSOD with STOP 0x005D 
  In my test scenario Windows now reboots instead of showing the BSOD.
 
  This commit added the TCG feature bit trimming which broke Windows:
 
 commit 551a2dec8fa55006a68393b9d6fb63577d2b3f1c
 Autor:Andre Przywara andre.przyw...@amd.com Do Mär 11 14:39:03
 2010
 Eintragender:Aurelien Jarno aurel...@aurel32.net  Sa Mär 13
 16:50:54 2010
 
 x86/cpuid: add TCG feature bit trimming
 
 In KVM we trim the user provided CPUID bits to match the host CPU's
 one. Introduce a similar feature to QEMU/TCG. Create a mask of TCG's
 capabilities and apply it to the user bits.
 This allows to let the CPU models reflect their native archetypes.
 
 Signed-off-by: Andre Przywara andre.przyw...@amd.com
 Signed-off-by: Aurelien Jarno aurel...@aurel32.net
 
 
  Andre, why don't we set the requested feature bits - no matter what
  TCG provides?
 
 
  Well the CPU flags are supposed to represent what a code can use. If we
  announce things that we don't support, some code might enable some
  features or instructions that are just causing an illegal instruction.
 
  Now the question is to know if DE is implemented in TCG or not. It
  *seems* there 

Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error [PATCH 1/1]

2012-09-17 Thread Clemens Kolbitsch
On Mon, Sep 17, 2012 at 11:19 AM, Aurelien Jarno aurel...@aurel32.net wrote:
 On Mon, Sep 17, 2012 at 10:27:35AM -0700, Clemens Kolbitsch wrote:
 On Mon, Sep 10, 2012 at 10:31 AM, Aurelien Jarno aurel...@aurel32.net 
 wrote:
  On Mon, Sep 10, 2012 at 06:23:43PM +0200, Stefan Weil wrote:
  Am 10.09.2012 08:19, schrieb Clemens Kolbitsch:
  On Sat, Sep 8, 2012 at 11:22 AM, Clemens Kolbitsch
  kolbit...@lastline.com wrote:
  On Fri, Sep 7, 2012 at 9:26 PM, Stefan Weil s...@weilnetz.de wrote:
  Am 08.09.2012 02:48, schrieb Clemens Kolbitsch:
  Hi guys,
  
  I need to run Win7 64bit in Qemu without KVM support. I found a few
  messages concerning the unsupported architecture problem (Windows
  shows a BSOD with STOP 0x005D ... on boot), for example
  
  http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
  or
  http://permalink.gmane.org/gmane.comp.emulators.qemu/92457
  
  but I don't think there was ever a solution to the problem - at least
  what is proposed does not work (I've tried stable and GIT versions).
  
  Since I have a decent background of modifying the Qemu internals, I'm
  more than happy to contribute to solving this issue, but I'm not sure
  if anyone is currently working on it (i.e., I don't want to start at 0
  in case someone is about to release a patch).
  
  Please let me know if there is already a know solution/workaround or
  whoever might be working on it, please ping me so we can sync.
  
  BTW, in case this is necessary, here are the details of what I
  need/what is not working:
  
  Qemu: current git-trunk,
  
  x86_64-softmmu$ ./qemu-system-x86_64 --version
  QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice Bellard
  
  host: 64bit, Ubuntu LTS12.04
  
  guest: 64bit Windows 7, no KVM possible
  
  Thanks!
  -Clemens
  
  Hi Clemens,
  
  AFAIK, nobody is working on this issue which exists for a long time 
  now.
  It would be great if you could find a solution to make QEMU without KVM
  work with Windows guests.
  Hi Stefan,
  
  thanks for the info. I'll work on it then - hopefully I can come back
  with a patch soon!
  
  PS: It's QEMU, not Qemu. I modified the subject in my reply :-)
  hehe, old habbit :) I'll try to remember - but why is the ML then
  called Qemu-devel ? ;)
  After a first night of debugging, I have come up with a simple patch.
  I'm still testing and it seems it's not the ultimate solution yet
  (there are still bluescreens), but it already gets you much further
  while booting (using either the install CD or an actual image).
  
  This diffs against the current stable-1.1. As you can see, one of the
  feature bits of the CPUID are removed due to TCG not supporting them
  (or the TCG bitmask is just missing them). Since Qemu uses CPUID_DE in
 
  QEMU :-)
 
  other locations, I'm assuming the bitmask is just wrong.
  
  Can someone confirm that TCG supports CPUID_DE ? If not, I'll need to
  work on this, otherwise I'll investigate why Win7 still crashes with a
  BSOD.
  
  Thanks!
  Clemens
  
  
  qemu$ git diff
  diff --git a/target-i386/cpu.c b/target-i386/cpu.c
  index 388bc5c..f2af36d 100644
  --- a/target-i386/cpu.c
  +++ b/target-i386/cpu.c
  @@ -259,7 +259,8 @@ typedef struct x86_def_t {
  CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC | CPUID_SEP | 
   \
  CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV | CPUID_PAT 
   | \
  CPUID_PSE36 | CPUID_CLFLUSH | CPUID_ACPI | CPUID_MMX | \
  -  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS)
  +  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS | \
  +  CPUID_DE) /* needed by Win7 64bit */
  /* partly implemented:
  CPUID_MTRR, CPUID_MCA, CPUID_CLFLUSH (needed for Win64)
  CPUID_PSE36 (needed for Solaris) */
 
  Hi Clemens,
 
  indeed, it looks like CPUID_DE fixes that BSOD with STOP 0x005D 
  In my test scenario Windows now reboots instead of showing the BSOD.
 
  This commit added the TCG feature bit trimming which broke Windows:
 
 commit 551a2dec8fa55006a68393b9d6fb63577d2b3f1c
 Autor:Andre Przywara andre.przyw...@amd.com Do Mär 11 14:39:03
 2010
 Eintragender:Aurelien Jarno aurel...@aurel32.net  Sa Mär 13
 16:50:54 2010
 
 x86/cpuid: add TCG feature bit trimming
 
 In KVM we trim the user provided CPUID bits to match the host CPU's
 one. Introduce a similar feature to QEMU/TCG. Create a mask of TCG's
 capabilities and apply it to the user bits.
 This allows to let the CPU models reflect their native archetypes.
 
 Signed-off-by: Andre Przywara andre.przyw...@amd.com
 Signed-off-by: Aurelien Jarno aurel...@aurel32.net
 
 
  Andre, why don't we set the requested feature bits - no matter what
  TCG provides?
 
 
  Well the CPU flags are supposed to represent what a code can use. If we
  announce things that we don't support, some code might enable some
  features or instructions that are just causing an illegal instruction.

Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error

2012-09-10 Thread Clemens Kolbitsch
On Sat, Sep 8, 2012 at 11:22 AM, Clemens Kolbitsch
kolbit...@lastline.com wrote:
 On Fri, Sep 7, 2012 at 9:26 PM, Stefan Weil s...@weilnetz.de wrote:
 Am 08.09.2012 02:48, schrieb Clemens Kolbitsch:

 Hi guys,

 I need to run Win7 64bit in Qemu without KVM support. I found a few
 messages concerning the unsupported architecture problem (Windows
 shows a BSOD with STOP 0x005D ... on boot), for example

 http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
 or
 http://permalink.gmane.org/gmane.comp.emulators.qemu/92457

 but I don't think there was ever a solution to the problem - at least
 what is proposed does not work (I've tried stable and GIT versions).

 Since I have a decent background of modifying the Qemu internals, I'm
 more than happy to contribute to solving this issue, but I'm not sure
 if anyone is currently working on it (i.e., I don't want to start at 0
 in case someone is about to release a patch).

 Please let me know if there is already a know solution/workaround or
 whoever might be working on it, please ping me so we can sync.

 BTW, in case this is necessary, here are the details of what I
 need/what is not working:

 Qemu: current git-trunk,

 x86_64-softmmu$ ./qemu-system-x86_64 --version
 QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice Bellard

 host: 64bit, Ubuntu LTS12.04

 guest: 64bit Windows 7, no KVM possible

 Thanks!
 -Clemens


 Hi Clemens,

 AFAIK, nobody is working on this issue which exists for a long time now.
 It would be great if you could find a solution to make QEMU without KVM
 work with Windows guests.

 Hi Stefan,

 thanks for the info. I'll work on it then - hopefully I can come back
 with a patch soon!

 PS: It's QEMU, not Qemu. I modified the subject in my reply :-)

 hehe, old habbit :) I'll try to remember - but why is the ML then
 called Qemu-devel ? ;)

After a first night of debugging, I have come up with a simple patch.
I'm still testing and it seems it's not the ultimate solution yet
(there are still bluescreens), but it already gets you much further
while booting (using either the install CD or an actual image).

This diffs against the current stable-1.1. As you can see, one of the
feature bits of the CPUID are removed due to TCG not supporting them
(or the TCG bitmask is just missing them). Since Qemu uses CPUID_DE in
other locations, I'm assuming the bitmask is just wrong.

Can someone confirm that TCG supports CPUID_DE ? If not, I'll need to
work on this, otherwise I'll investigate why Win7 still crashes with a
BSOD.

Thanks!
Clemens


qemu$ git diff
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 388bc5c..f2af36d 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -259,7 +259,8 @@ typedef struct x86_def_t {
   CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC | CPUID_SEP | \
   CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV | CPUID_PAT | \
   CPUID_PSE36 | CPUID_CLFLUSH | CPUID_ACPI | CPUID_MMX | \
-  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS)
+  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS | \
+  CPUID_DE) /* needed by Win7 64bit */
   /* partly implemented:
   CPUID_MTRR, CPUID_MCA, CPUID_CLFLUSH (needed for Win64)
   CPUID_PSE36 (needed for Solaris) */



Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error

2012-09-10 Thread Stefan Weil

Am 10.09.2012 08:19, schrieb Clemens Kolbitsch:

On Sat, Sep 8, 2012 at 11:22 AM, Clemens Kolbitsch
kolbit...@lastline.com wrote:

On Fri, Sep 7, 2012 at 9:26 PM, Stefan Weil s...@weilnetz.de wrote:

Am 08.09.2012 02:48, schrieb Clemens Kolbitsch:

Hi guys,

I need to run Win7 64bit in Qemu without KVM support. I found a few
messages concerning the unsupported architecture problem (Windows
shows a BSOD with STOP 0x005D ... on boot), for example

http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
or
http://permalink.gmane.org/gmane.comp.emulators.qemu/92457

but I don't think there was ever a solution to the problem - at least
what is proposed does not work (I've tried stable and GIT versions).

Since I have a decent background of modifying the Qemu internals, I'm
more than happy to contribute to solving this issue, but I'm not sure
if anyone is currently working on it (i.e., I don't want to start at 0
in case someone is about to release a patch).

Please let me know if there is already a know solution/workaround or
whoever might be working on it, please ping me so we can sync.

BTW, in case this is necessary, here are the details of what I
need/what is not working:

Qemu: current git-trunk,

x86_64-softmmu$ ./qemu-system-x86_64 --version
QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice Bellard

host: 64bit, Ubuntu LTS12.04

guest: 64bit Windows 7, no KVM possible

Thanks!
-Clemens


Hi Clemens,

AFAIK, nobody is working on this issue which exists for a long time now.
It would be great if you could find a solution to make QEMU without KVM
work with Windows guests.

Hi Stefan,

thanks for the info. I'll work on it then - hopefully I can come back
with a patch soon!


PS: It's QEMU, not Qemu. I modified the subject in my reply :-)

hehe, old habbit :) I'll try to remember - but why is the ML then
called Qemu-devel ? ;)

After a first night of debugging, I have come up with a simple patch.
I'm still testing and it seems it's not the ultimate solution yet
(there are still bluescreens), but it already gets you much further
while booting (using either the install CD or an actual image).

This diffs against the current stable-1.1. As you can see, one of the
feature bits of the CPUID are removed due to TCG not supporting them
(or the TCG bitmask is just missing them). Since Qemu uses CPUID_DE in


QEMU :-)


other locations, I'm assuming the bitmask is just wrong.

Can someone confirm that TCG supports CPUID_DE ? If not, I'll need to
work on this, otherwise I'll investigate why Win7 still crashes with a
BSOD.

Thanks!
Clemens


qemu$ git diff
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 388bc5c..f2af36d 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -259,7 +259,8 @@ typedef struct x86_def_t {
CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC | CPUID_SEP | \
CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV | CPUID_PAT | \
CPUID_PSE36 | CPUID_CLFLUSH | CPUID_ACPI | CPUID_MMX | \
-  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS)
+  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS | \
+  CPUID_DE) /* needed by Win7 64bit */
/* partly implemented:
CPUID_MTRR, CPUID_MCA, CPUID_CLFLUSH (needed for Win64)
CPUID_PSE36 (needed for Solaris) */


Hi Clemens,

indeed, it looks like CPUID_DE fixes that BSOD with STOP 0x005D 
In my test scenario Windows now reboots instead of showing the BSOD.

This commit added the TCG feature bit trimming which broke Windows:

   commit 551a2dec8fa55006a68393b9d6fb63577d2b3f1c
   Autor:Andre Przywara andre.przyw...@amd.com Do Mär 11 14:39:03
   2010
   Eintragender:Aurelien Jarno aurel...@aurel32.net  Sa Mär 13
   16:50:54 2010

   x86/cpuid: add TCG feature bit trimming

   In KVM we trim the user provided CPUID bits to match the host CPU's
   one. Introduce a similar feature to QEMU/TCG. Create a mask of TCG's
   capabilities and apply it to the user bits.
   This allows to let the CPU models reflect their native archetypes.

   Signed-off-by: Andre Przywara andre.przyw...@amd.com
   Signed-off-by: Aurelien Jarno aurel...@aurel32.net


Andre, why don't we set the requested feature bits - no matter what TCG 
provides?


Regards,

Stefan



Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error

2012-09-10 Thread Clemens Kolbitsch
On Mon, Sep 10, 2012 at 9:23 AM, Stefan Weil s...@weilnetz.de wrote:
 Am 10.09.2012 08:19, schrieb Clemens Kolbitsch:

 On Sat, Sep 8, 2012 at 11:22 AM, Clemens Kolbitsch
 kolbit...@lastline.com wrote:

 On Fri, Sep 7, 2012 at 9:26 PM, Stefan Weil s...@weilnetz.de wrote:

 Am 08.09.2012 02:48, schrieb Clemens Kolbitsch:

 Hi guys,

 I need to run Win7 64bit in Qemu without KVM support. I found a few
 messages concerning the unsupported architecture problem (Windows
 shows a BSOD with STOP 0x005D ... on boot), for example

 http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
 or
 http://permalink.gmane.org/gmane.comp.emulators.qemu/92457

 but I don't think there was ever a solution to the problem - at least
 what is proposed does not work (I've tried stable and GIT versions).

 Since I have a decent background of modifying the Qemu internals, I'm
 more than happy to contribute to solving this issue, but I'm not sure
 if anyone is currently working on it (i.e., I don't want to start at 0
 in case someone is about to release a patch).

 Please let me know if there is already a know solution/workaround or
 whoever might be working on it, please ping me so we can sync.

 BTW, in case this is necessary, here are the details of what I
 need/what is not working:

 Qemu: current git-trunk,

 x86_64-softmmu$ ./qemu-system-x86_64 --version
 QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice Bellard

 host: 64bit, Ubuntu LTS12.04

 guest: 64bit Windows 7, no KVM possible

 Thanks!
 -Clemens

 Hi Clemens,

 AFAIK, nobody is working on this issue which exists for a long time now.
 It would be great if you could find a solution to make QEMU without KVM
 work with Windows guests.

 Hi Stefan,

 thanks for the info. I'll work on it then - hopefully I can come back
 with a patch soon!

 PS: It's QEMU, not Qemu. I modified the subject in my reply :-)

 hehe, old habbit :) I'll try to remember - but why is the ML then
 called Qemu-devel ? ;)

 After a first night of debugging, I have come up with a simple patch.
 I'm still testing and it seems it's not the ultimate solution yet
 (there are still bluescreens), but it already gets you much further
 while booting (using either the install CD or an actual image).

 This diffs against the current stable-1.1. As you can see, one of the
 feature bits of the CPUID are removed due to TCG not supporting them
 (or the TCG bitmask is just missing them). Since Qemu uses CPUID_DE in


 QEMU :-)


 other locations, I'm assuming the bitmask is just wrong.

 Can someone confirm that TCG supports CPUID_DE ? If not, I'll need to
 work on this, otherwise I'll investigate why Win7 still crashes with a
 BSOD.

 Thanks!
 Clemens


 qemu$ git diff
 diff --git a/target-i386/cpu.c b/target-i386/cpu.c
 index 388bc5c..f2af36d 100644
 --- a/target-i386/cpu.c
 +++ b/target-i386/cpu.c
 @@ -259,7 +259,8 @@ typedef struct x86_def_t {
CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC | CPUID_SEP | \
CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV | CPUID_PAT | \
CPUID_PSE36 | CPUID_CLFLUSH | CPUID_ACPI | CPUID_MMX | \
 -  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS)
 +  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS | \
 +  CPUID_DE) /* needed by Win7 64bit */
/* partly implemented:
CPUID_MTRR, CPUID_MCA, CPUID_CLFLUSH (needed for Win64)
CPUID_PSE36 (needed for Solaris) */


 Hi Clemens,

 indeed, it looks like CPUID_DE fixes that BSOD with STOP 0x005D 
 In my test scenario Windows now reboots instead of showing the BSOD.

 This commit added the TCG feature bit trimming which broke Windows:

 commit 551a2dec8fa55006a68393b9d6fb63577d2b3f1c
 Autor:Andre Przywara andre.przyw...@amd.com  Do Mär 11 14:39:03 2010
 Eintragender:Aurelien Jarno aurel...@aurel32.net  Sa Mär 13 16:50:54
 2010

 x86/cpuid: add TCG feature bit trimming

 In KVM we trim the user provided CPUID bits to match the host CPU's
 one. Introduce a similar feature to QEMU/TCG. Create a mask of TCG's
 capabilities and apply it to the user bits.
 This allows to let the CPU models reflect their native archetypes.

 Signed-off-by: Andre Przywara andre.przyw...@amd.com
 Signed-off-by: Aurelien Jarno aurel...@aurel32.net


 Andre, why don't we set the requested feature bits - no matter what TCG
 provides?

Stefan,

could you tell me what QEMU ( ;-) ) HW configuration you use for your
testing? I'm able to boot, but it still is very unstable - after a few
seconds of running, I still run into BSODs. I think it's independent
of the bug I was working on, but I'd like to test some more.

BTW, I'm actually quite confident that the missing CPU-ID bit caused
the 0x5D booting BSOD, since I took two kernel boot traces (one of
QEMU stable crashing and a working VM) and the location the traces
branched off from each other was where the CPU-ID bits were checked
(and this one feature bit was the only thing that was not set 

Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error

2012-09-10 Thread Aurelien Jarno
On Mon, Sep 10, 2012 at 06:23:43PM +0200, Stefan Weil wrote:
 Am 10.09.2012 08:19, schrieb Clemens Kolbitsch:
 On Sat, Sep 8, 2012 at 11:22 AM, Clemens Kolbitsch
 kolbit...@lastline.com wrote:
 On Fri, Sep 7, 2012 at 9:26 PM, Stefan Weil s...@weilnetz.de wrote:
 Am 08.09.2012 02:48, schrieb Clemens Kolbitsch:
 Hi guys,
 
 I need to run Win7 64bit in Qemu without KVM support. I found a few
 messages concerning the unsupported architecture problem (Windows
 shows a BSOD with STOP 0x005D ... on boot), for example
 
 http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
 or
 http://permalink.gmane.org/gmane.comp.emulators.qemu/92457
 
 but I don't think there was ever a solution to the problem - at least
 what is proposed does not work (I've tried stable and GIT versions).
 
 Since I have a decent background of modifying the Qemu internals, I'm
 more than happy to contribute to solving this issue, but I'm not sure
 if anyone is currently working on it (i.e., I don't want to start at 0
 in case someone is about to release a patch).
 
 Please let me know if there is already a know solution/workaround or
 whoever might be working on it, please ping me so we can sync.
 
 BTW, in case this is necessary, here are the details of what I
 need/what is not working:
 
 Qemu: current git-trunk,
 
 x86_64-softmmu$ ./qemu-system-x86_64 --version
 QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice Bellard
 
 host: 64bit, Ubuntu LTS12.04
 
 guest: 64bit Windows 7, no KVM possible
 
 Thanks!
 -Clemens
 
 Hi Clemens,
 
 AFAIK, nobody is working on this issue which exists for a long time now.
 It would be great if you could find a solution to make QEMU without KVM
 work with Windows guests.
 Hi Stefan,
 
 thanks for the info. I'll work on it then - hopefully I can come back
 with a patch soon!
 
 PS: It's QEMU, not Qemu. I modified the subject in my reply :-)
 hehe, old habbit :) I'll try to remember - but why is the ML then
 called Qemu-devel ? ;)
 After a first night of debugging, I have come up with a simple patch.
 I'm still testing and it seems it's not the ultimate solution yet
 (there are still bluescreens), but it already gets you much further
 while booting (using either the install CD or an actual image).
 
 This diffs against the current stable-1.1. As you can see, one of the
 feature bits of the CPUID are removed due to TCG not supporting them
 (or the TCG bitmask is just missing them). Since Qemu uses CPUID_DE in
 
 QEMU :-)
 
 other locations, I'm assuming the bitmask is just wrong.
 
 Can someone confirm that TCG supports CPUID_DE ? If not, I'll need to
 work on this, otherwise I'll investigate why Win7 still crashes with a
 BSOD.
 
 Thanks!
 Clemens
 
 
 qemu$ git diff
 diff --git a/target-i386/cpu.c b/target-i386/cpu.c
 index 388bc5c..f2af36d 100644
 --- a/target-i386/cpu.c
 +++ b/target-i386/cpu.c
 @@ -259,7 +259,8 @@ typedef struct x86_def_t {
 CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC | CPUID_SEP | \
 CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV | CPUID_PAT | \
 CPUID_PSE36 | CPUID_CLFLUSH | CPUID_ACPI | CPUID_MMX | \
 -  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS)
 +  CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS | \
 +  CPUID_DE) /* needed by Win7 64bit */
 /* partly implemented:
 CPUID_MTRR, CPUID_MCA, CPUID_CLFLUSH (needed for Win64)
 CPUID_PSE36 (needed for Solaris) */
 
 Hi Clemens,
 
 indeed, it looks like CPUID_DE fixes that BSOD with STOP 0x005D 
 In my test scenario Windows now reboots instead of showing the BSOD.
 
 This commit added the TCG feature bit trimming which broke Windows:
 
commit 551a2dec8fa55006a68393b9d6fb63577d2b3f1c
Autor:Andre Przywara andre.przyw...@amd.com Do Mär 11 14:39:03
2010
Eintragender:Aurelien Jarno aurel...@aurel32.net  Sa Mär 13
16:50:54 2010
 
x86/cpuid: add TCG feature bit trimming
 
In KVM we trim the user provided CPUID bits to match the host CPU's
one. Introduce a similar feature to QEMU/TCG. Create a mask of TCG's
capabilities and apply it to the user bits.
This allows to let the CPU models reflect their native archetypes.
 
Signed-off-by: Andre Przywara andre.przyw...@amd.com
Signed-off-by: Aurelien Jarno aurel...@aurel32.net
 
 
 Andre, why don't we set the requested feature bits - no matter what
 TCG provides?
 

Well the CPU flags are supposed to represent what a code can use. If we
announce things that we don't support, some code might enable some
features or instructions that are just causing an illegal instruction.

Now the question is to know if DE is implemented in TCG or not. It
*seems* there are some parts implemented, but not fully.

-- 
Aurelien Jarno  GPG: 1024D/F1BCDB73
aurel...@aurel32.net http://www.aurel32.net



Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error

2012-09-10 Thread Stefan Weil

Am 10.09.2012 19:20, schrieb Clemens Kolbitsch:

On Mon, Sep 10, 2012 at 9:23 AM, Stefan Weil s...@weilnetz.de wrote:


Hi Clemens,

indeed, it looks like CPUID_DE fixes that BSOD with STOP 0x005D 
In my test scenario Windows now reboots instead of showing the BSOD.

This commit added the TCG feature bit trimming which broke Windows:

commit 551a2dec8fa55006a68393b9d6fb63577d2b3f1c
Autor:Andre Przywara andre.przyw...@amd.com  Do Mär 11 14:39:03 2010
Eintragender:Aurelien Jarno aurel...@aurel32.net  Sa Mär 13 16:50:54
2010

x86/cpuid: add TCG feature bit trimming

In KVM we trim the user provided CPUID bits to match the host CPU's
one. Introduce a similar feature to QEMU/TCG. Create a mask of TCG's
capabilities and apply it to the user bits.
This allows to let the CPU models reflect their native archetypes.

Signed-off-by: Andre Przywara andre.przyw...@amd.com
Signed-off-by: Aurelien Jarno aurel...@aurel32.net


Andre, why don't we set the requested feature bits - no matter what TCG
provides?
Stefan,

could you tell me what QEMU ( ;-) ) HW configuration you use for your
testing? I'm able to boot, but it still is very unstable - after a few
seconds of running, I still run into BSODs. I think it's independent
of the bug I was working on, but I'd like to test some more.



I run qemu-system-x86_64 (latest from git) withthe default CPU
on a 64 bit Windows 7 host. QEMU uses that host's installation:

qemu-system-x86_64 -m 1024 -snapshot -hda //PhysicalDrive/0





BTW, I'm actually quite confident that the missing CPU-ID bit caused
the 0x5D booting BSOD, since I took two kernel boot traces (one of
QEMU stable crashing and a working VM) and the location the traces
branched off from each other was where the CPU-ID bits were checked
(and this one feature bit was the only thing that was not set properly
for the check to succeed).

-Clemens


CPUID_DE is part of the PENTIUM_FEATURES macro, therefore
I think it's a very old feature which was already supported by
the Pentium CPU family. No wonder Windows complains when
it is missing.

This and maybe some more bits (there is a comment 'needed for Win64'
for CPUID_MTRR, CPUID_MCA, CPUID_CLFLUSH which were also removed)
should be set in TCG mode (as they are set with KVM).

There remain two questions:

* Do we need some TCG implementation for those bits?

* Should the patch which adds CPUID_DEagain be committed
  before the other question was answered?

Any patch in this area should also be sent to qemu-stable:
this BSOD with Windows guests running on QEMU occurs rather
often (just run a search on a web search engine to get many
hits).

Regards,
Stefan




Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error

2012-09-08 Thread Clemens Kolbitsch
On Fri, Sep 7, 2012 at 9:26 PM, Stefan Weil s...@weilnetz.de wrote:
 Am 08.09.2012 02:48, schrieb Clemens Kolbitsch:

 Hi guys,

 I need to run Win7 64bit in Qemu without KVM support. I found a few
 messages concerning the unsupported architecture problem (Windows
 shows a BSOD with STOP 0x005D ... on boot), for example

 http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
 or
 http://permalink.gmane.org/gmane.comp.emulators.qemu/92457

 but I don't think there was ever a solution to the problem - at least
 what is proposed does not work (I've tried stable and GIT versions).

 Since I have a decent background of modifying the Qemu internals, I'm
 more than happy to contribute to solving this issue, but I'm not sure
 if anyone is currently working on it (i.e., I don't want to start at 0
 in case someone is about to release a patch).

 Please let me know if there is already a know solution/workaround or
 whoever might be working on it, please ping me so we can sync.

 BTW, in case this is necessary, here are the details of what I
 need/what is not working:

 Qemu: current git-trunk,

 x86_64-softmmu$ ./qemu-system-x86_64 --version
 QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice Bellard

 host: 64bit, Ubuntu LTS12.04

 guest: 64bit Windows 7, no KVM possible

 Thanks!
 -Clemens


 Hi Clemens,

 AFAIK, nobody is working on this issue which exists for a long time now.
 It would be great if you could find a solution to make QEMU without KVM
 work with Windows guests.

Hi Stefan,

thanks for the info. I'll work on it then - hopefully I can come back
with a patch soon!

 PS: It's QEMU, not Qemu. I modified the subject in my reply :-)

hehe, old habbit :) I'll try to remember - but why is the ML then
called Qemu-devel ? ;)

-Clemens



[Qemu-devel] Qemu (no kvm) Win7 (64bit) boot error

2012-09-07 Thread Clemens Kolbitsch
Hi guys,

I need to run Win7 64bit in Qemu without KVM support. I found a few
messages concerning the unsupported architecture problem (Windows
shows a BSOD with STOP 0x005D ... on boot), for example

http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
or
http://permalink.gmane.org/gmane.comp.emulators.qemu/92457

but I don't think there was ever a solution to the problem - at least
what is proposed does not work (I've tried stable and GIT versions).

Since I have a decent background of modifying the Qemu internals, I'm
more than happy to contribute to solving this issue, but I'm not sure
if anyone is currently working on it (i.e., I don't want to start at 0
in case someone is about to release a patch).

Please let me know if there is already a know solution/workaround or
whoever might be working on it, please ping me so we can sync.

BTW, in case this is necessary, here are the details of what I
need/what is not working:

Qemu: current git-trunk,

x86_64-softmmu$ ./qemu-system-x86_64 --version
QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice Bellard

host: 64bit, Ubuntu LTS12.04

guest: 64bit Windows 7, no KVM possible

Thanks!
-Clemens



Re: [Qemu-devel] QEMU (no kvm) Win7 (64bit) boot error

2012-09-07 Thread Stefan Weil

Am 08.09.2012 02:48, schrieb Clemens Kolbitsch:

Hi guys,

I need to run Win7 64bit in Qemu without KVM support. I found a few
messages concerning the unsupported architecture problem (Windows
shows a BSOD with STOP 0x005D ... on boot), for example

http://lists.gnu.org/archive/html/qemu-devel/2011-03/msg01623.html
or
http://permalink.gmane.org/gmane.comp.emulators.qemu/92457

but I don't think there was ever a solution to the problem - at least
what is proposed does not work (I've tried stable and GIT versions).

Since I have a decent background of modifying the Qemu internals, I'm
more than happy to contribute to solving this issue, but I'm not sure
if anyone is currently working on it (i.e., I don't want to start at 0
in case someone is about to release a patch).

Please let me know if there is already a know solution/workaround or
whoever might be working on it, please ping me so we can sync.

BTW, in case this is necessary, here are the details of what I
need/what is not working:

Qemu: current git-trunk,

x86_64-softmmu$ ./qemu-system-x86_64 --version
QEMU emulator version 1.2.50, Copyright (c) 2003-2008 Fabrice Bellard

host: 64bit, Ubuntu LTS12.04

guest: 64bit Windows 7, no KVM possible

Thanks!
-Clemens


Hi Clemens,

AFAIK, nobody is working on this issue which exists for a long time now.
It would be great if you could find a solution to make QEMU without KVM
work with Windows guests.

Regards,

Stefan W.

PS: It's QEMU, not Qemu. I modified the subject in my reply :-)