Commit b75dd297 authored by Lv Zheng's avatar Lv Zheng Committed by Rafael J. Wysocki
Browse files

ACPICA: Add option to disable loading of SSDTs from the RSDT/XSDT

Optionally do not load any SSDTs from the RSDT/XSDT during
initialization.  This can be useful for overriding SSDTs
using DSDT overriding, thus useful for debugging ACPI
problems on some machines.  Lv Zheng. ACPICA BZ 1005.

References: https://bugs.acpica.org/show_bug.cgi?id=1005


Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 1d1ea1b7
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -132,6 +132,12 @@ u8 ACPI_INIT_GLOBAL(acpi_gbl_truncate_io_addresses, FALSE);
 */
u8 ACPI_INIT_GLOBAL(acpi_gbl_disable_auto_repair, FALSE);

/*
 * Optionally do not load any SSDTs from the RSDT/XSDT during initialization.
 * This can be useful for debugging ACPI problems on some machines.
 */
u8 ACPI_INIT_GLOBAL(acpi_gbl_disable_ssdt_table_load, FALSE);

/* acpi_gbl_FADT is a local copy of the FADT, converted to a common format. */

struct acpi_table_fadt acpi_gbl_FADT;
+10 −15
Original line number Diff line number Diff line
@@ -53,8 +53,6 @@ ACPI_MODULE_NAME("tbxfload")
/* Local prototypes */
static acpi_status acpi_tb_load_namespace(void);

static int no_auto_ssdt;

/*******************************************************************************
 *
 * FUNCTION:    acpi_load_tables
@@ -180,8 +178,16 @@ static acpi_status acpi_tb_load_namespace(void)
			continue;
		}

		if (no_auto_ssdt) {
			printk(KERN_WARNING "ACPI: SSDT ignored due to \"acpi_no_auto_ssdt\"\n");
		/*
		 * Optionally do not load any SSDTs from the RSDT/XSDT. This can
		 * be useful for debugging ACPI problems on some machines.
		 */
		if (acpi_gbl_disable_ssdt_table_load) {
			ACPI_INFO((AE_INFO, "Ignoring %4.4s at %p",
				   acpi_gbl_root_table_list.tables[i].signature.
				   ascii, ACPI_CAST_PTR(void,
							acpi_gbl_root_table_list.
							tables[i].address)));
			continue;
		}

@@ -376,14 +382,3 @@ acpi_status acpi_unload_parent_table(acpi_handle object)
}

ACPI_EXPORT_SYMBOL(acpi_unload_parent_table)

static int __init acpi_no_auto_ssdt_setup(char *s) {

        printk(KERN_NOTICE "ACPI: SSDT auto-load disabled\n");

        no_auto_ssdt = 1;

        return 1;
}

__setup("acpi_no_auto_ssdt", acpi_no_auto_ssdt_setup);
+11 −0
Original line number Diff line number Diff line
@@ -1715,6 +1715,17 @@ acpi_status acpi_os_release_object(acpi_cache_t * cache, void *object)
}
#endif

static int __init acpi_no_auto_ssdt_setup(char *s)
{
        printk(KERN_NOTICE PREFIX "SSDT auto-load disabled\n");

        acpi_gbl_disable_ssdt_table_load = TRUE;

        return 1;
}

__setup("acpi_no_auto_ssdt", acpi_no_auto_ssdt_setup);

acpi_status __init acpi_os_initialize(void)
{
	acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1a_event_block);
+1 −0
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ extern bool acpi_gbl_enable_aml_debug_object;
extern u8 acpi_gbl_copy_dsdt_locally;
extern u8 acpi_gbl_truncate_io_addresses;
extern u8 acpi_gbl_disable_auto_repair;
extern u8 acpi_gbl_disable_ssdt_table_load;

/*
 * Hardware-reduced prototypes. All interfaces that use these macros will