PCI: acpiphp: Convert acpiphp to be builtin only, not modular
authorJiang Liu <liuj97@gmail.com>
Fri, 12 Apr 2013 05:44:25 +0000 (05:44 +0000)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 12 Apr 2013 21:38:25 +0000 (15:38 -0600)
Convert acpiphp to be builtin only, with no module option.

Previously, when HOTPLUG_PCI_ACPI=m, users could disable acpiphp by
removing the module or preventing it from loading.  That can't be done
if acpiphp is builtin statically, so this adds an "acpiphp.disable"
kernel parameter.  If a user needs to use this parameter, it is a bug,
and we want to hear about it.

[bhelgaas: fold in acpiphp.disable here, remove documentation]
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/hotplug/Kconfig
drivers/pci/hotplug/acpiphp.h
drivers/pci/hotplug/acpiphp_core.c

index 13e9e63a72665ab22ee431fdcd22392a2fb68c77..9fcb87f353d44cec965301af6799fd8b950d8794 100644 (file)
@@ -52,15 +52,12 @@ config HOTPLUG_PCI_IBM
          When in doubt, say N.
 
 config HOTPLUG_PCI_ACPI
-       tristate "ACPI PCI Hotplug driver"
-       depends on (!ACPI_DOCK && ACPI) || (ACPI_DOCK)
+       bool "ACPI PCI Hotplug driver"
+       depends on HOTPLUG_PCI=y && ((!ACPI_DOCK && ACPI) || (ACPI_DOCK))
        help
          Say Y here if you have a system that supports PCI Hotplug using
          ACPI.
 
-         To compile this driver as a module, choose M here: the
-         module will be called acpiphp.
-
          When in doubt, say N.
 
 config HOTPLUG_PCI_ACPI_IBM
index 1b311f9db82d733697a01d5370051e409c75279b..b06ae681d5b7f61e9cd8fd43c2b5f74afcbd01e0 100644 (file)
@@ -190,5 +190,6 @@ extern u8 acpiphp_get_adapter_status (struct acpiphp_slot *slot);
 
 /* variables */
 extern bool acpiphp_debug;
+extern bool acpiphp_disabled;
 
 #endif /* _ACPIPHP_H */
index c2fd3095701f5a8bd3f91c56f7b7a8e51913d182..81adbfa4df1bae20683e2d8994ae4996df2da336 100644 (file)
@@ -48,6 +48,7 @@
 #define SLOT_NAME_SIZE  21              /* {_SUN} */
 
 bool acpiphp_debug;
+bool acpiphp_disabled;
 
 /* local variables */
 static struct acpiphp_attention_info *attention_info;
@@ -60,7 +61,9 @@ MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
 MODULE_LICENSE("GPL");
 MODULE_PARM_DESC(debug, "Debugging mode enabled or not");
+MODULE_PARM_DESC(disable, "disable acpiphp driver");
 module_param_named(debug, acpiphp_debug, bool, 0644);
+module_param_named(disable, acpiphp_disabled, bool, 0444);
 
 /* export the attention callback registration methods */
 EXPORT_SYMBOL_GPL(acpiphp_register_attention);
@@ -353,9 +356,11 @@ void acpiphp_unregister_hotplug_slot(struct acpiphp_slot *acpiphp_slot)
 
 static int __init acpiphp_init(void)
 {
-       info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
+       info(DRIVER_DESC " version: " DRIVER_VERSION "%s\n",
+               acpiphp_disabled ? ", disabled by user; please report a bug"
+                                : "");
 
-       if (acpi_pci_disabled)
+       if (acpi_pci_disabled || acpiphp_disabled)
                return 0;
 
        /* read all the ACPI info from the system */
@@ -364,14 +369,4 @@ static int __init acpiphp_init(void)
 }
 
 
-static void __exit acpiphp_exit(void)
-{
-       if (acpi_pci_disabled)
-               return;
-
-       /* deallocate internal data structures etc. */
-       acpiphp_glue_exit();
-}
-
 module_init(acpiphp_init);
-module_exit(acpiphp_exit);