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

Commit d290ef93 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull additional ACPI updates from Rafael Wysocki:
 "These update the ACPICA code in the kernel to upstream revision
  20180531 including one important AML parser fix and updates related to
  the IORT table, make the kernel recognize the "Windows 2017.2" _OSI
  string and update the customized methods documentation.

  Specifics:

   - Update the ACPICA code in the kernel to upstream revision 20180531
     including:
      * AML parser fix to continue loading tables after detecting an AML
        error (Erik Schmauss).
      * AML parser debug option to dump parse trees (Bob Moore).
      * Debugger updates (Bob Moore).
      * Initial bits of Unload () operator deprecation (Bob Moore).
      * Updates related to the IORT table (Robin Murphy).

   - Make Linux respond to the "Windows 2017.2" _OSI string which
     allows native Thunderbolt enumeration to be used on Dell systems
     and was unsafe before recent changes in the PCI subsystem (Mario
     Limonciello)

   - Update the ACPI method customization feature documentation (Erik
     Schmauss)"

* tag 'acpi-4.18-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPICA: Recognize the _OSI string "Windows 2017.2"
  ACPICA: Update version to 20180531
  ACPICA: Interpreter: Begin deprecation of Unload operator
  ACPICA: AML parser: attempt to continue loading table after error
  ACPICA: Debugger: Reduce verbosity for module-level code errors.
  ACPICA: AML Parser: Add debug option to dump parse trees
  ACPICA: Debugger: Add count of namespace nodes after namespace dump
  ACPICA: IORT: Add PMCG node supprt
  ACPICA: IORT: Update for revision D
  ACPI / Documentation: update ACPI customize method feature docs
parents d09fcecb 67445532
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -16,7 +16,8 @@ control method rather than override the entire DSDT, because kernel
rebuild/reboot is not needed and test result can be got in minutes.

Note: Only ACPI METHOD can be overridden, any other object types like
      "Device", "OperationRegion", are not recognized.
      "Device", "OperationRegion", are not recognized. Methods
      declared inside scope operators are also not supported.
Note: The same ACPI control method can be overridden for many times,
      and it's always the latest one that used by Linux/kernel.
Note: To get the ACPI debug object output (Store (AAAA, Debug)),
@@ -32,8 +33,6 @@ Note: To get the ACPI debug object output (Store (AAAA, Debug)),

      DefinitionBlock ("", "SSDT", 1, "", "", 0x20080715)
      {
	External (ACON)

	Method (\_SB_.AC._PSR, 0, NotSerialized)
	{
		Store ("In AC _PSR", Debug)
@@ -42,9 +41,10 @@ Note: To get the ACPI debug object output (Store (AAAA, Debug)),
      }
      Note that the full pathname of the method in ACPI namespace
      should be used.
      And remember to use "External" to declare external objects.
   e) assemble the file to generate the AML code of the method.
      e.g. "iasl psr.asl" (psr.aml is generated as a result)
      e.g. "iasl -vw 6084 psr.asl" (psr.aml is generated as a result)
      If parameter "-vw 6084" is not supported by your iASL compiler,
      please try a newer version.
   f) mount debugfs by "mount -t debugfs none /sys/kernel/debug"
   g) override the old method via the debugfs by running
      "cat /tmp/psr.aml > /sys/kernel/debug/acpi/custom_method"
+1 −0
Original line number Diff line number Diff line
@@ -322,6 +322,7 @@ acpi_db_walk_and_match_name(acpi_handle obj_handle,
		acpi_os_printf("Could Not get pathname for object %p\n",
			       obj_handle);
	} else {
		info.count = 0;
		info.owner_id = ACPI_OWNER_ID_MAX;
		info.debug_level = ACPI_UINT32_MAX;
		info.display_type = ACPI_DISPLAY_SUMMARY | ACPI_DISPLAY_SHORT;
+22 −1
Original line number Diff line number Diff line
@@ -35,6 +35,15 @@ void
acpi_db_dump_method_info(acpi_status status, struct acpi_walk_state *walk_state)
{
	struct acpi_thread_state *thread;
	struct acpi_namespace_node *node;

	node = walk_state->method_node;

	/* There are no locals or arguments for the module-level code case */

	if (node == acpi_gbl_root_node) {
		return;
	}

	/* Ignore control codes, they are not errors */

@@ -384,8 +393,14 @@ void acpi_db_decode_locals(struct acpi_walk_state *walk_state)
	struct acpi_namespace_node *node;
	u8 display_locals = FALSE;

	obj_desc = walk_state->method_desc;
	node = walk_state->method_node;
	obj_desc = walk_state->method_desc;

	/* There are no locals for the module-level code case */

	if (node == acpi_gbl_root_node) {
		return;
	}

	if (!node) {
		acpi_os_printf
@@ -452,6 +467,12 @@ void acpi_db_decode_arguments(struct acpi_walk_state *walk_state)
	node = walk_state->method_node;
	obj_desc = walk_state->method_desc;

	/* There are no arguments for the module-level code case */

	if (node == acpi_gbl_root_node) {
		return;
	}

	if (!node) {
		acpi_os_printf
		    ("No method node (Executing subtree for buffer or opregion)\n");
+9 −3
Original line number Diff line number Diff line
@@ -162,9 +162,15 @@ acpi_ds_dump_method_stack(acpi_status status,
				op->common.next = NULL;

#ifdef ACPI_DISASSEMBLER
				if (walk_state->method_node !=
				    acpi_gbl_root_node) {

					/* More verbose if not module-level code */

					acpi_os_printf("Failed at ");
					acpi_dm_disassemble(next_walk_state, op,
							    ACPI_UINT32_MAX);
				}
#endif
				op->common.next = next;
			}
+11 −0
Original line number Diff line number Diff line
@@ -489,6 +489,17 @@ acpi_status acpi_ex_unload_table(union acpi_operand_object *ddb_handle)
	 */
	ACPI_WARNING((AE_INFO, "Received request to unload an ACPI table"));

	/*
	 * May 2018: Unload is no longer supported for the following reasons:
	 * 1) A correct implementation on some hosts may not be possible.
	 * 2) Other ACPI implementations do not correctly/fully support it.
	 * 3) It requires host device driver support which does not exist.
	 *    (To properly support namespace unload out from underneath.)
	 * 4) This AML operator has never been seen in the field.
	 */
	ACPI_EXCEPTION((AE_INFO, AE_NOT_IMPLEMENTED,
			"AML Unload operator is not supported"));

	/*
	 * Validate the handle
	 * Although the handle is partially validated in acpi_ex_reconfiguration()
Loading