vserver 1.9.5.x5
[linux-2.6.git] / drivers / pnp / pnpbios / core.c
index 1a2fe19..0d1736c 100644 (file)
 #include <linux/mm.h>
 #include <linux/smp.h>
 #include <linux/slab.h>
-#include <linux/kmod.h>
+#include <linux/kobject_uevent.h>
 #include <linux/completion.h>
 #include <linux/spinlock.h>
 #include <linux/dmi.h>
+#include <linux/delay.h>
+#include <linux/acpi.h>
 
 #include <asm/page.h>
 #include <asm/desc.h>
@@ -177,8 +179,7 @@ static int pnp_dock_thread(void * unused)
                /*
                 * Poll every 2 seconds
                 */
-               set_current_state(TASK_INTERRUPTIBLE);
-               schedule_timeout(HZ*2);
+               msleep_interruptible(2000);
                if(signal_pending(current))
                        break;
 
@@ -538,6 +539,14 @@ int __init pnpbios_init(void)
                return -ENODEV;
        }
 
+#ifdef CONFIG_PNPACPI
+       if (!acpi_disabled && !pnpacpi_disabled) {
+               pnpbios_disabled = 1;
+               printk(KERN_INFO "PnPBIOS: Disabled by ACPI PNP\n");
+               return -ENODEV;
+       }
+#endif /* CONFIG_ACPI */
+
        /* scan the system for pnpbios support */
        if (!pnpbios_probe_system())
                return -ENODEV;
@@ -574,6 +583,8 @@ subsys_initcall(pnpbios_init);
 
 static int __init pnpbios_thread_init(void)
 {
+       if (pnpbios_disabled)
+               return 0;
 #ifdef CONFIG_HOTPLUG
        init_completion(&unload_sem);
        if (kernel_thread(pnp_dock_thread, NULL, CLONE_KERNEL) > 0)