diff options
author | Éric Piel <Eric.Piel@tremplin-utc.net> | 2008-02-05 00:04:58 +0100 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-02-07 04:00:24 -0500 |
commit | 9cbc7960288d28aec95257af59854e1d14ba23b8 (patch) | |
tree | fe21a1ceb475008a96a7877d83aa8b83b5011bc9 | |
parent | 6ed31e92e94830c138fbd470486383380710069a (diff) | |
download | op-kernel-dev-9cbc7960288d28aec95257af59854e1d14ba23b8.zip op-kernel-dev-9cbc7960288d28aec95257af59854e1d14ba23b8.tar.gz |
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>
-rw-r--r-- | Documentation/kernel-parameters.txt | 3 | ||||
-rw-r--r-- | drivers/acpi/osl.c | 16 |
2 files changed, 18 insertions, 1 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 8fd5aa4..ef2316a 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -175,6 +175,9 @@ and is between 256 and 4096 characters. It is defined in the file acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT + acpi_no_initrd_override [KNL,ACPI] + Disable loading custom ACPI tables from the initramfs + acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS Format: To spoof as Windows 98: ="Microsoft Windows" diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c index bbd8360..2b41bdd 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; |