summaryrefslogtreecommitdiff
path: root/drivers/acpi/osl.c
diff options
context:
space:
mode:
authorÉric Piel <Eric.Piel@tremplin-utc.net>2008-02-05 00:04:58 +0100
committerLen Brown <len.brown@intel.com>2008-02-07 04:00:24 -0500
commit9cbc7960288d28aec95257af59854e1d14ba23b8 (patch)
treefe21a1ceb475008a96a7877d83aa8b83b5011bc9 /drivers/acpi/osl.c
parent6ed31e92e94830c138fbd470486383380710069a (diff)
downloadkernel-common-9cbc7960288d28aec95257af59854e1d14ba23b8.tar.gz
kernel-common-9cbc7960288d28aec95257af59854e1d14ba23b8.tar.bz2
kernel-common-9cbc7960288d28aec95257af59854e1d14ba23b8.zip
ACPI: Add "acpi_no_initrd_override" kernel parameter
The acpi_no_initrd_override parameter permits to disable the load of an ACPI table from the initramfs. Signed-off-by: Eric Piel <eric.piel@tremplin-utc.net> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/osl.c')
-rw-r--r--drivers/acpi/osl.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index bbd8360bfb23..2b41bdddbeb6 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -77,6 +77,10 @@ static struct workqueue_struct *kacpi_notify_wq;
#define OSI_STRING_LENGTH_MAX 64 /* arbitrary */
static char osi_additional_string[OSI_STRING_LENGTH_MAX];
+#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
+static int acpi_no_initrd_override;
+#endif
+
/*
* "Ode to _OSI(Linux)"
*
@@ -386,7 +390,8 @@ acpi_os_table_override(struct acpi_table_header * existing_table,
*new_table = (struct acpi_table_header *)AmlCode;
#endif
#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
- if (strncmp(existing_table->signature, "DSDT", 4) == 0) {
+ if ((strncmp(existing_table->signature, "DSDT", 4) == 0) &&
+ !acpi_no_initrd_override) {
struct acpi_table_header *initrd_table = acpi_find_dsdt_initrd();
if (initrd_table)
*new_table = initrd_table;
@@ -402,6 +407,15 @@ acpi_os_table_override(struct acpi_table_header * existing_table,
return AE_OK;
}
+#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
+int __init acpi_no_initrd_override_setup(char *s)
+{
+ acpi_no_initrd_override = 1;
+ return 1;
+}
+__setup("acpi_no_initrd_override", acpi_no_initrd_override_setup);
+#endif
+
static irqreturn_t acpi_irq(int irq, void *dev_id)
{
return (*acpi_irq_handler) (acpi_irq_context) ? IRQ_HANDLED : IRQ_NONE;