diff options
author | Éric Piel <Eric.Piel@tremplin-utc.net> | 2008-02-04 18:04:58 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-02-07 04:00:24 -0500 |
commit | 9cbc7960288d28aec95257af59854e1d14ba23b8 (patch) | |
tree | fe21a1ceb475008a96a7877d83aa8b83b5011bc9 /drivers/acpi/osl.c | |
parent | 6ed31e92e94830c138fbd470486383380710069a (diff) |
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.c | 16 |
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; | |||
77 | #define OSI_STRING_LENGTH_MAX 64 /* arbitrary */ | 77 | #define OSI_STRING_LENGTH_MAX 64 /* arbitrary */ |
78 | static char osi_additional_string[OSI_STRING_LENGTH_MAX]; | 78 | static char osi_additional_string[OSI_STRING_LENGTH_MAX]; |
79 | 79 | ||
80 | #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD | ||
81 | static int acpi_no_initrd_override; | ||
82 | #endif | ||
83 | |||
80 | /* | 84 | /* |
81 | * "Ode to _OSI(Linux)" | 85 | * "Ode to _OSI(Linux)" |
82 | * | 86 | * |
@@ -386,7 +390,8 @@ acpi_os_table_override(struct acpi_table_header * existing_table, | |||
386 | *new_table = (struct acpi_table_header *)AmlCode; | 390 | *new_table = (struct acpi_table_header *)AmlCode; |
387 | #endif | 391 | #endif |
388 | #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD | 392 | #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD |
389 | if (strncmp(existing_table->signature, "DSDT", 4) == 0) { | 393 | if ((strncmp(existing_table->signature, "DSDT", 4) == 0) && |
394 | !acpi_no_initrd_override) { | ||
390 | struct acpi_table_header *initrd_table = acpi_find_dsdt_initrd(); | 395 | struct acpi_table_header *initrd_table = acpi_find_dsdt_initrd(); |
391 | if (initrd_table) | 396 | if (initrd_table) |
392 | *new_table = initrd_table; | 397 | *new_table = initrd_table; |
@@ -402,6 +407,15 @@ acpi_os_table_override(struct acpi_table_header * existing_table, | |||
402 | return AE_OK; | 407 | return AE_OK; |
403 | } | 408 | } |
404 | 409 | ||
410 | #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD | ||
411 | int __init acpi_no_initrd_override_setup(char *s) | ||
412 | { | ||
413 | acpi_no_initrd_override = 1; | ||
414 | return 1; | ||
415 | } | ||
416 | __setup("acpi_no_initrd_override", acpi_no_initrd_override_setup); | ||
417 | #endif | ||
418 | |||
405 | static irqreturn_t acpi_irq(int irq, void *dev_id) | 419 | static irqreturn_t acpi_irq(int irq, void *dev_id) |
406 | { | 420 | { |
407 | return (*acpi_irq_handler) (acpi_irq_context) ? IRQ_HANDLED : IRQ_NONE; | 421 | return (*acpi_irq_handler) (acpi_irq_context) ? IRQ_HANDLED : IRQ_NONE; |