On Sun, Aug 26, 2007 at 02:10:01AM -0700, Igor Lvovsky wrote: <SNIP> > As it was mentioned in forum (by Avi) it looks like the problem in the > windows Idle loop, that spinning instead of executing a 'hlt' instruction.
could you provide a reference to this thread? > So, the solution lies in ACPI area. We need to modify a little bit ACPI > tables as following: if windows is using an ACPI enabled HAL, but not it if it is using an MPS enabled HAL like : halmps.dll (Multiprocessor PCs) which you would get is using (-no-acpi) as explained below. <SNIP> > Notes: The UP guest uses the HAL with the halaacpi.dll and windows Idle > loop work fine without ACPI support (I mean bios don't expose the CPU as > ACPI device). if using -no-acpi then Windows will instead select the MPS HAL for UP instead of the ACPI ones. hal.dll (Standard PCs) if using ACPI then Windows will either use (dependent on the hardware support) : halacpi.dll (Advanced Configuration and Power Interface (ACPI) PCs) halapic.dll (Advanced Programmable Interrupt Controller (APIC) PCs) halaacpi.dll (APIC ACPI PCs) in the case if Windows 2000 with your BIOS then it will use halaacpi.dll when running qemu with ACPI enabled (without -no-acpi) and regardless of how many processors are defined by -smp. > I attached the patch for BOCHS bios and compiled bios.bin. this bios.bin is broken as it won't enable SMP even if ACPI is disabled (hence using MPS) as can be seen if you try to start an SMP enabled Linux (like knoppix livecd). I was able to reproduce the broken BIOS by applying the suggested (with some tweaks) patches to the current BOCHS CVS though and so it might be as well a regression added since qemu's branch was created and compiled, but haven't yet been able to dissect that bug as I am not sure either what version was used originally for qemu's bios.bin it does reduce the CPU consumption though, but it might be as well as a side effect of removing all contention between CPUs since there is only 1 anyway. Carlo