John Howard - Senior Program Manager in the Hyper-V team at Microsoft

Senior Program Manager, Hyper-V team, Windows Core Operating System Division.

VMBus fails to load (device cannot find enough free resources Code 12) on a Windows Server 2008 x86 virtual machine under Hyper-V

VMBus fails to load (device cannot find enough free resources Code 12) on a Windows Server 2008 x86 virtual machine under Hyper-V

  • Comments 39
  • Likes

There is one particular scenario where you could be faced with this when booting a VM using Hyper-V. The most obvious way you can immediately notice it is that when using Virtual Machine Connection to remotely control a virtual machine, you do not have mouse integration.

(Note that in Windows Server 2008 RTM, Hyper-V Beta integration components are in-box. You will see similar lack of mouse integration on future releases of Hyper-V where you have updated the physical machine but not updated the virtual machine image. Once we have a new release of Hyper-V available, I’ll post more on that.)

The issue is very specific to where you have a Windows Server 2008 x86 (not x64) virtual machine originally built using Virtual PC or Virtual Server.  It should not apply to Windows Vista SP1 (currently not supported in Hyper-V Beta). Opening Device Manager (Start devmgmt.msc) inside the virtual machine will provide the first sign that you are hitting the issue. As you can see in the screenshot below, under the Computer node, it says “Advanced Configuration and Power Interface (ACPI) PC”.


1

If you scan further down Device Manager to the bottom of the “System Devices” and double-click on VMBus (which has a yellow exclamation mark against it), you will see in the device status area that the device cannot find enough free resources that it can use. (Code 12).

2

The reason for this is similar to the issues stated in yesterdays blog post about having the correct HAL installed. For VMBus and other components necessary for synthetic device support in Hyper-V to load correctly, the HAL running in the virtual machine must be an APIC HAL. Fortunately, Windows Vista and Windows Server 2008 have a new boot option to force HAL detection during boot, which is off by default. The easiest way (command line junkies excused) to change this setting is through the “msconfig.exe” tool. If you select the boot tab and then hit advanced, you’ll notice a checkbox marked “Detect HAL”. After selecting this checkbox and hitting OK, you must reboot the virtual machine.

3


Once the virtual machine is restarted, open up device manager again. This time you will notice that under the computer node, it now reads “ACPI x86-based PC”.

4

A few final comments. First, the “Detect HAL” checkbox is sticky, and causes boot to be very slightly longer (so slight in fact, I can’t notice a difference using a stop-watch). If you do not intend returning this virtual machine back to Virtual Server or Virtual PC, you could turn the checkbox off and reboot.


To clear up a point from my previous post, I said that “In theory it is possible to swap the HAL, but not in a Microsoft supported manner (except on Vista and Windows Server 2008 – that’s a post for another day)”. Hopefully that is a little clearer now. You may be wondering, if you clear the checkbox, and while the virtual machine is configured with an APIC HAL, what happens if you take the VHD back to Virtual Server or Virtual PC?  In this case, the boot will not complete, even in safe mode. The way to resolve this is to ensure the check box for Detect HAL is checked before shutting down the virtual machine under Hyper-V. 

You can also set or clear the checkbox in a slightly smarter way if you don’t have a Hyper-V machine available to boot the virtual machine to toggle the checkbox directly while the VM is running. The answer is in BCDEditt. You could loopback mount the VHD and use bcdedit to alter the boot configuration store offline. I haven’t tried it with a mounted VHD, but the parameters would look something like “bcdedit /set {current} detecthal yes” replacing {current} with an appropriate store. There's something to investigate and a blog post for another day…

Cheers,
John.

Comments
  • Andrea - while I understand, please also remember that Windows Server 2008 itself (implicitly including Hyper-V) is not supported on this motherboard - one of the requirements for certification for 2008 is support for ECC RAM. While we make best efforts to make Hyper-V work across a broad range of hardware, we have certain hard requirements, one of which being support for MSI. Unfortunately, it just appears that this is one of a very small number of older boards where something on the board is not exposing MSI (I believe the chipset though does support it). I would also strongly recommend you look to newer processors though to seriously kick the tyres of Hyper-V. As I understand it, this board also only supports up to a P4 processor. More recent processors are significantly faster and your experience will be significantly better.

    Thanks,

    John.

  • Thank you for your answer, John.

    The Asus M2V supports an Athlon64 X2 up to 6000+ and up to 8 Gb or RAM.

    I do agree with you that this is not a server-grade board, but it's a fairly tipical development machine, at least here in Italy.

  • Andrea - I took it that you had the same board as Redstone64. Although I've not tried this board, it has better possibilities for working. Can you confirm that you have revision F3 or later of processor (www.cpuid.cpm), have enabled AMD-V and execute disable in the BIOS, done a hard power cycle if you changed BIOS settings (not just reboot, physically turn off and back on again).

    Thanks,

    John.

  • John,

    you're right!.

    My processor is a revision F2. This requirement  has certainly been documented somewere, but I've never heard of it in my Server 2008 readings.

    Anyway, my next purchase would be a newer processor :-)

    Thank you,

     Andrea

  • John,

    you're right!.

    My processor is a revision F2. This requirement  has certainly been documented somewere, but I've never heard of it in my Server 2008 readings. It would be useful to have Hyper-V refusing to install on unsupported processors!

    So, my next purchase will be a newer CPU :-)

    Thank you,

     Andrea

  • Andrea - _some_ OEM BIOS updates include a BIOS workaround for a microcode flaw in F2 revision processors. However, that tends to be only in "real" server boards. I would recommend you try a later BIOS if you have not already.

    Also, please note that even with F3 and later processors, we still require full support from the BIOS as well. This is not always the case, especially in commodity desktop boards. This is a question you should ask to the motherboard manufacturer before replacing the processor only to find that there may still be a problem.

    Thanks,

    John.

  • Hi,

    I have tried the MSCONFIG steps on a HP ML350 G5 (BIOS January '08) with  8Gb RAM.

    I am able to create new VMs, but when I am trying to use old VMs(W2K8 DC)  from Virtual PC 2K7, I got exclamation marks on MS VMBus HID, MS VMBus Video Driver and MS VMBus Network Adapter.

    The server is shown as ACPI x86-based PC.

    If I try to run the KB949219, I get  an error: "Installer encountered an error : 0x80070422 The service cannot be started..."

    For W2K3, it seems ok, as long as I update the drivers in the guests,

  • Aveam o masina virtuala facuta cu Virtual PC si din motive de spatiu resurse si curiozitate m-am hotarat

  • does any one have success with Asus p5E ws professional board populated with 8GB of RAM? or other board with 2 Raid 5 array capability

    Core 2 duo 3Ghz or Qaud 2.6Ghz? what speed are the RAM modules run at, the brand and make?

    I do understand non eec can not be certified but I intend to use a PC as lab and development PC. it is not going to be run around the clock.

  • Great post.  Just what I needed - saved me a bunch of time troubleshooting.  Thanks very much.

  • This post was a lifesaver.  I'd been puzzling on how to get my old VirtualPC image to work with Hyper-V RTM and sure enough, switching the HAL over was the missing piece.

    This is on an Asus P5NE-SLI with a Q6600 dual core.

  • Thank you so much for this post - saved me hours of vain.

  • Thanks for the OP John!  Solved my problem exactly with a VPC->HV migration.

  • I have a Win2k8(64) Hyper-V server which is taking over Virtual Server 2005 VM shells. I've moved 4 over so far with no issues, but I have my last one which fails to install the Intgration compionents correctly.

    All machines were Win2k3SP1, whcih I have just upgraded to SP2. All still working under VS2005. I've removed the VS Additions and shut them down. Copied over to new box and fired them up. Installed the Integration Services ISO, upgraded HAL and all is ok, bar one. This one chanegs the HAL fine and then when it reboots it fials on the VMBUS device. Just says there is a problem installing the hardware and "The data is invalid". Rest of installation continues and completes. I have NIC/video but have to manually release the mouse/keyboard input once captured.

    Any clues anyone. It's typically my most invloved shell with SMS and BDD on so I don't really want to rebuild it.

    Cheers, Mike...

  • Mike - can you use the email link at the top so that we can take a look at %WINDIR%\vmguestsetup.log and %WINDIR%\setupapi.log  in the virtual machine which is failing.

    Thanks,

    John.

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment