Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9cbc7960 authored by Éric Piel's avatar Éric Piel Committed by Len Brown
Browse files

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: default avatarEric Piel <eric.piel@tremplin-utc.net>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 6ed31e92
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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"

+15 −1
Original line number Diff line number Diff line
@@ -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;