]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/staging/hv/vmbus_drv.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[net-next-2.6.git] / drivers / staging / hv / vmbus_drv.c
index 186cbe6983a9c4c332b7aac28a4b08bf6cc445d0..3397ef08e0aaa87c25152b48c840a4b2d015949b 100644 (file)
@@ -25,6 +25,8 @@
 #include <linux/interrupt.h>
 #include <linux/sysctl.h>
 #include <linux/pci.h>
+#include <linux/dmi.h>
+#include <linux/slab.h>
 #include "VersionInfo.h"
 #include "osd.h"
 #include "logging.h"
@@ -948,6 +950,19 @@ static irqreturn_t vmbus_isr(int irq, void *dev_id)
        }
 }
 
+static struct dmi_system_id __initdata microsoft_hv_dmi_table[] = {
+       {
+               .ident = "Hyper-V",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Virtual Machine"),
+                       DMI_MATCH(DMI_BOARD_NAME, "Virtual Machine"),
+               },
+       },
+       { },
+};
+MODULE_DEVICE_TABLE(dmi, microsoft_hv_dmi_table);
+
 static int __init vmbus_init(void)
 {
        int ret = 0;
@@ -959,6 +974,9 @@ static int __init vmbus_init(void)
                vmbus_loglevel, HIWORD(vmbus_loglevel), LOWORD(vmbus_loglevel));
        /* Todo: it is used for loglevel, to be ported to new kernel. */
 
+       if (!dmi_check_system(microsoft_hv_dmi_table))
+               return -ENODEV;
+
        ret = vmbus_bus_init(VmbusInitialize);
 
        DPRINT_EXIT(VMBUS_DRV);
@@ -980,10 +998,6 @@ static void __exit vmbus_exit(void)
  * needed by distro tools to determine if the hyperv drivers should be
  * installed and/or configured.  We don't do anything else with the table, but
  * it needs to be present.
- *
- * We might consider triggering off of DMI table info as well, as that does
- * decribe the virtual machine being run on, but not all configuration tools
- * seem to be able to handle DMI device ids properly.
  */
 const static struct pci_device_id microsoft_hv_pci_table[] = {
        { PCI_DEVICE(0x1414, 0x5353) }, /* VGA compatible controller */