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


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 (39)

  1. Bill – also can you verify which SKU you are using? I suspect it is a home version in which case they are not supported under licensing terms to run as VMs, hence we do not provide Integration Services for them which may be what you are seeing.

    Thanks,

    John.

  2. 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.

  3. Anonymous says:

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

  4. redstone64 – can you provide a download link to the actual media you are installing from. Can you also confirm whether you are running Hyper-V Beta or Hyper-V RC0, and if the latter, you have applied the RC0 MSU update in the virtual machine.

    Thanks,

    John.

  5. Redstone64 – Just to be clear (sorry!) – so you

    1. downloaded this ISO, burnt it and installed that on the physical machine itself (ie the parent partition).

    2. Applied the x64 version of KB949219 MSU on the parent partition

    3. Enabled the Hyper-V role

    4. Build a virtual machine using the same media

    5. Applied the x64 version of KB949219 MSU inside the virtual machine

    6. You are seeing VMBus device error 12 in the virtual machine

    That will allow me to verify things here.

    Thanks,

    John.

  6. BMcGinnis – correct, this post only applies to 2K8 x86, not Windows 7. What version of Windows 7 are you running in the VM? You can verify if it is RTM if BuildLabEx in the registry under HKLMSoftwareMicrosoftWindows NTCurrentVersion says 7600.16385.amd64fre.win7_rtm….. If either of the first two sets of numbers are lower, you need to upgrade to RTM. Can you also verify the build number of the parent partition.

    Thanks,

    John.

  7. Redstone64 – Can you email me windowslogscbscbs.log from inside the virtual machine please. The link is at the top.

    Thanks,

    John.

  8. Anonymous says:

    Parent partition – 6002.18082.amd64fre.vistasp2_gdr.090803-2339

    Windows7 vm – 7600.16385.x86fre.win7_rtm.090713-1255

    Thx Bill

  9. Anonymous says:

    Hyper-V HW & SW requirement: http://technet.microsoft.com/en-us/library/cc816844.aspx Hyper-V RTM

  10. @Redstone64. Yes, indeed, MSI is Message Signalled Interrupt. Out of interest, what motherboard is this you are using. There are very few motherboards which support VT/AMD-V and NX/XD which do not support MSI. In fact, there is only one I am aware of (need to go digging now to find out what machine it was).

    Thanks,

    John.

  11. 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.

  12. 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.

  13. Anonymous says:

    Getting same set of errors on a Windows7 x86 VM.  Setting referenced on Windows& does not exist in msconfig ?

  14. Redstone64-  FYI, following the exact steps 1-6 above, I can’t repro. I just need to know if you did something different which could explain what you’re seeing.

    Thanks,

    John.

  15. @Korleqn – I took it from Redstone64’s confirmation that he did steps 1-6 that he was able to start a virtual machine, which I would not expect if VMBus fails to start on the parent partition (physical machine), so this sounds different. Have you enabled VT/AMD-V and NX/XD in the BIOS, made sure you are on the latest BIOS and hard power cycled the machine.

    Can you provide similar details for your physical machine as for Redstone64?

    Thanks,

    John.

  16. 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.

  17. redstone64 says:

    in windows 2008 x64 version latest trial, this does not work, still vmbus sends code 12.

  18. redstone64 says:

    Download Link:

    Windows version is 6.0.6001 Service Pack 1 Build 6001

    Downloaded Installed Windows 2008 x64 Edition

    More Shortly

    "6001.18000.080118-1840_amd64fre_Server_en-us-KRMSXFRE_EN_DVD.iso"

    http://www.microsoft.com/downloads/details.aspx?FamilyId=13C7300E-935C-415A-A79C-538E933D5424&WT.sp=_technet_,dcsjwb9vb00000c932fd0rjc7_5p3t&displaylang=en

    Applied Patch After Install:

    Release Candidate 0 (RC0) update to the Hyper-V

    Update for Windows Server 2008 x64 Edition (KB949219)

    Still In device manager, vmbus device sends code 12.

  19. redstone64 says:

    My machine is:

    Intel E6320 Core 2 Duo Processor,

    EM64T, MMX,MMX2,SSE,SSE2,SSE3,SSSE3,Intel-VT, Execute Disable Bit

    P5VD2-VM Mainboard

    2GB RAM DDR2-800

    x1950GT x16 PCI-E Graphics Card

    Machine supports hardware virtualization, both BIOS and CPU.

  20. redstone64 says:

    I installed these roles and features with the hyper-v to the machine:

    .NET Framework 3.0 Features

    .NET Framework 3.0

    Desktop Exprience

    Group Policy Environment

    Windows Process Activation Service

    Process Model

    .NET Environment

    Configuration APIs.

    Roles:

    Hyper-v

    File Services

    Network Policy and Access Services

    today, I do the 1-6 of all things you applied except I install the hyper-v before the patch. still it does not work. Sends code 12 from vmbus driver.

  21. Korleqn says:

    Same problem here, clean Server 2008 RTM install, installed hyper-v and downloaded and installed the rc0 update for hyper-v

    in device manager VMbus sits there with a yellow exclamation and code 12 . this is on the physical machine btw and it is preventing me to run any virtual machine….

  22. Morten Yndesdal says:

    Just wanted to add my own comment, since there seems to be a lot of people out there who like myself missunderstood all the steps earlier (although it is in fact written there..).

    The trick most people forget is that you have to install the patch "on the virtuel machine" in addition to the host itself! This can be a problem if you have no network drivers working, but either burn a cd or mount a physical disk.

    Anyway, hope this helps!

    Best regards,

    Morten Yndesdal

    MCT Glasspaper

  23. redstone64 says:

    After long fighting with VMBus device driver, I got a conclusion from a message comes out to event viewer.

    "VMBus cannot start because the machine does not support MSI."

    What  is MSI? I looked up wikipedia with a sadly conclusion.

    Message Signaled Interrupts, in PCI 2.2 and later and PCI Express, is an alternate form of interrupt from the traditional pin-signalled system; instead of asserting a given IRQ pin, a message is written to a segment of system memory. Each device can have from 1 to 32 unique memory locations in which to write MSI events to. An advantage of the MSI system is that data can be pushed along with the MSI event, allowing for greater functionality.

    That means i need a very good, brand new motherboard to use hyper-v functionality.

    Thank You,

  24. redstone64 says:

    VIA P4M900 Chipset, ASUS P5VD2-VM Mainboard.

    Pretty old.

  25. Andrea says:

    I’ve got the same message as Redstone64. My motherboard is an Asus M2V.

    I do agree that this may not be the ideal machine where to run Hyper-V, but it’s a pain if I’m not able to prototype virtual machines on my home system before deployng them on a server.

  26. Andrea says:

    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.

  27. Andrea says:

    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

  28. Andrea says:

    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

  29. Claude says:

    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,

  30. Gary says:

    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.

  31. Tony Bierman [MVP WSS] says:

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

  32. Fu says:

    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.

  33. Peter Strömblad says:

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

  34. Seth Technet says:

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

  35. mike says:

    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…

  36. Yuhong Bao says:

    "As I understand it, this board also only supports up to a P4 processor. "

    Nope, it does support Core 2s.

  37. Lew Berry says:

    Just a further note on the subject. I did a P to V migration using Acronis with 2K8 SP2 and had this issue launching as a VM in 2K8 Std R2. Same Behavior same fix.

  38. datacore says:

    THX a LOT !!! I thought I’m 2 stupid to install the integration services… 🙂