--- opennebula-4.6.0/src/vmm/LibVirtDriverKVM.cc	2014-04-26 04:15:22.000000000 +1200
+++ /var/lib/one/rpmbuild/diff/LibVirtDriverKVM.cc	2014-05-06 17:19:05.805999941 +1200
@@ -97,6 +97,7 @@
     string  bootloader = "";
     string  arch       = "";
     string  machine    = "";
+    string  cpumodel   = "";
 
     vector<string> boots;
 
@@ -251,6 +252,7 @@
             bootloader = os->vector_value("BOOTLOADER");
             arch       = os->vector_value("ARCH");
             machine    = os->vector_value("MACHINE");
+            cpumodel   = os->vector_value("CPUMODEL");
         }
     }
 
@@ -348,6 +350,23 @@
 
     file << "\t</os>" << endl;
 
+    if ( cpumodel.empty() )
+    {
+        get_default("OS", "CPUMODEL", cpumodel);
+    }
+
+    if ( ! cpumodel.empty() )
+    {
+        if ( cpumodel == "host" )
+        {
+            file << "\t<cpu mode='host-passthrough'/>" << endl;
+        } else {
+            file << "\t<cpu match='exact'>" << endl;
+            file << "\t\t<model fallback='allow'>" << cpumodel << "</model>" << endl;
+            file << "\t</cpu>" << endl;
+        }
+    }
+
     attrs.clear();
 
     // ------------------------------------------------------------------------
