diff --git a/src/paravirt.c b/src/paravirt.c
index 73b06ca..7080c7f 100644
--- a/src/paravirt.c
+++ b/src/paravirt.c
@@ -21,6 +21,30 @@
 
 int qemu_cfg_present;
 
+/* This CPUID returns the signature 'KVMKVMKVM' in ebx, ecx, and edx.  It
+ * should be used to determine that a VM is running under KVM.
+ */
+#define KVM_CPUID_SIGNATURE     0x40000000
+
+static void kvm_preinit(void)
+{
+    if (!CONFIG_QEMU)
+        return;
+    unsigned int eax, ebx, ecx, edx;
+    char signature[13];
+
+    cpuid(KVM_CPUID_SIGNATURE, &eax, &ebx, &ecx, &edx);
+    memcpy(signature + 0, &ebx, 4);
+    memcpy(signature + 4, &ecx, 4);
+    memcpy(signature + 8, &edx, 4);
+    signature[12] = 0;
+
+    if (strcmp(signature, "KVMKVMKVM") == 0) {
+        dprintf(1, "Running on KVM\n");
+        PlatformRunningOn |= PF_KVM;
+    }
+}
+
 void
 qemu_ramsize_preinit(void)
 {
@@ -28,6 +52,7 @@
         return;
 
     PlatformRunningOn = PF_QEMU;
+    kvm_preinit();
 
     // On emulators, get memory size from nvram.
     u32 rs = ((inb_cmos(CMOS_MEM_EXTMEM2_LOW) << 16)
@@ -60,7 +85,7 @@
             qemu_cfg_e820_load_next(&entry);
             add_e820(entry.address, entry.length, entry.type);
         }
-    } else if (kvm_para_available()) {
+    } else if (runningOnKVM()) {
         // Backwards compatibility - provide hard coded range.
         // 4 pages before the bios, 3 pages for vmx tss pages, the
         // other page for EPT real mode pagetable
diff --git a/src/paravirt.h b/src/paravirt.h
index 62b1664..208d0fb 100644
--- a/src/paravirt.h
+++ b/src/paravirt.h
@@ -2,12 +2,12 @@
 #define __PV_H
 
 #include "config.h" // CONFIG_*
-#include "util.h" // memcpy
 #include "biosvar.h" // GET_GLOBAL
 
 // Types of paravirtualized platforms.
 #define PF_QEMU     (1<<0)
 #define PF_XEN      (1<<1)
+#define PF_KVM      (1<<2)
 
 // misc.c
 extern int PlatformRunningOn;
@@ -19,31 +19,11 @@
 static inline int runningOnXen(void) {
     return CONFIG_XEN && GET_GLOBAL(PlatformRunningOn) & PF_XEN;
 }
-
-/* This CPUID returns the signature 'KVMKVMKVM' in ebx, ecx, and edx.  It
- * should be used to determine that a VM is running under KVM.
- */
-#define KVM_CPUID_SIGNATURE     0x40000000
-
-static inline int kvm_para_available(void)
-{
-    if (!CONFIG_QEMU)
-        return 0;
-    unsigned int eax, ebx, ecx, edx;
-    char signature[13];
-
-    cpuid(KVM_CPUID_SIGNATURE, &eax, &ebx, &ecx, &edx);
-    memcpy(signature + 0, &ebx, 4);
-    memcpy(signature + 4, &ecx, 4);
-    memcpy(signature + 8, &edx, 4);
-    signature[12] = 0;
-
-    if (strcmp(signature, "KVMKVMKVM") == 0)
-        return 1;
-
-    return 0;
+static inline int runningOnKVM(void) {
+    return CONFIG_QEMU && GET_GLOBAL(PlatformRunningOn) & PF_KVM;
 }
 
+// QEMU "firmware config (fw_cfg)" interface
 #define QEMU_CFG_SIGNATURE              0x00
 #define QEMU_CFG_ID                     0x01
 #define QEMU_CFG_UUID                   0x02
