Commit 0e8ac1d3 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

Merge branch 'acpica'

Merge ACPICA changes for 6.20-rc1/7.0-rc1:

 - Update the ACPICA code in the kernel to upstream version 20251212
   which includes the following changes:

   * Add support for new ACPI table DTPR (Michal Camacho Romero)
   * Release objects with acpi_ut_delete_object_desc() (Zilin Guan)
   * Add UUIDs for Microsoft fan extensions and UUIDs associated with
     TPM 2.0 devices (Armin Wolf)
   * Fix NULL pointer dereference in acpi_ev_address_space_dispatch()
     (Alexey Simakov)
   * Add KEYP ACPI table definition (Dave Jiang)
   * Add support for the Microsoft display mux _OSI string (Armin Wolf)
   * Add definitions for the IOVT ACPI table (Xianglai Li)
   * Abort AML bytecode execution on AML_FATAL_OP (Armin Wolf)
   * Include all fields in subtable type1 for PPTT (Ben Horgan)
   * Add GICv5 MADT structures and Arm IORT IWB node definitions (Jose
     Marinho)
   * Update Parameter Block structure for RAS2 and add a new flag in
     Memory Affinity Structure for SRAT (Pawel Chmielewski)
   * Add _VDM (Voltage Domain) object (Pawel Chmielewski)

* acpica: (26 commits)
  ACPICA: Refactor for TPR Base/Limit registers bitmasks
  ACPICA: Replace TPRn Base and Limit registers
  ACPICA: Logfile: Changes for version 20251212
  ACPICA: Align comments in TPRn-related structures
  ACPICA: Cleanup comments and DTPR Table handle functions
  ACPICA: Verify DTPR and TPR Instance buffer pointers
  ACPICA: Fix Segmentation Fault error related to DTPR
  ACPICA: Create auxiliary ACPI_TPR_AUX_SR structure for iASL compiler
  ACPICA: ACPI 6.6: Add _VDM (Voltage Domain) object
  ACPICA: actbl3.h: ACPI 6.6: SRAT: New flag in Memory Affinity Structure
  ACPICA: actbl2.h: ACPI 6.6: RAS2: Update Parameter Block structure
  ACPICA: Add Arm IORT IWB node definitions
  ACPICA: Add GICv5 MADT structures
  ACPICA: Fix asltests using the Fatal() opcode
  ACPICA: ACPI 6.4: PPTT: include all fields in subtable type1
  ACPICA: Abort AML bytecode execution when executing AML_FATAL_OP
  ACPICA: Define DTPR structure related info tables and data template
  ACPICA: Add DTPR table support for the ASL compiler
  ACPICA: iASL: Add definitions for the IOVT table
  ACPICA: Add support for the Microsoft display mux _OSI string
  ...
parents 83e2908c e8f614da
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -587,6 +587,9 @@ const union acpi_predefined_info acpi_gbl_predefined_methods[] = {
	  METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}},	/* Variable-length (Pkgs) each (var Ints) */
	PACKAGE_INFO(ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5, 0, 0, 0),

	{{"_VDM", METHOD_0ARGS,
	  METHOD_RETURNS(ACPI_RTYPE_INTEGER)}},

	{{"_HRV", METHOD_0ARGS,
	  METHOD_RETURNS(ACPI_RTYPE_INTEGER)}},

+3 −1
Original line number Diff line number Diff line
@@ -163,7 +163,9 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
			return_ACPI_STATUS(AE_NOT_EXIST);
		}

		if (region_obj->region.space_id == ACPI_ADR_SPACE_PLATFORM_COMM) {
		if (field_obj
		    && region_obj->region.space_id ==
		    ACPI_ADR_SPACE_PLATFORM_COMM) {
			struct acpi_pcc_info *ctx =
			    handler_desc->address_space.context;

+25 −28
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@
#include <acpi/acpi.h>
#include "accommon.h"
#include "acinterp.h"
#include <acpi/acoutput.h>
#include "acparser.h"
#include "amlcode.h"

@@ -51,8 +52,7 @@ ACPI_MODULE_NAME("exoparg3")
acpi_status acpi_ex_opcode_3A_0T_0R(struct acpi_walk_state *walk_state)
{
	union acpi_operand_object **operand = &walk_state->operands[0];
	struct acpi_signal_fatal_info *fatal;
	acpi_status status = AE_OK;
	struct acpi_signal_fatal_info fatal;

	ACPI_FUNCTION_TRACE_STR(ex_opcode_3A_0T_0R,
				acpi_ps_get_opcode_name(walk_state->opcode));
@@ -60,28 +60,30 @@ acpi_status acpi_ex_opcode_3A_0T_0R(struct acpi_walk_state *walk_state)
	switch (walk_state->opcode) {
	case AML_FATAL_OP:	/* Fatal (fatal_type fatal_code fatal_arg) */

		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
				  "FatalOp: Type %X Code %X Arg %X "
				  "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n",
				  (u32)operand[0]->integer.value,
				  (u32)operand[1]->integer.value,
				  (u32)operand[2]->integer.value));

		fatal = ACPI_ALLOCATE(sizeof(struct acpi_signal_fatal_info));
		if (fatal) {
			fatal->type = (u32) operand[0]->integer.value;
			fatal->code = (u32) operand[1]->integer.value;
			fatal->argument = (u32) operand[2]->integer.value;
		}
		fatal.type = (u32)operand[0]->integer.value;
		fatal.code = (u32)operand[1]->integer.value;
		fatal.argument = (u32)operand[2]->integer.value;

		/* Always signal the OS! */
		ACPI_BIOS_ERROR((AE_INFO,
				 "Fatal ACPI BIOS error (Type 0x%X Code 0x%X Arg 0x%X)\n",
				 fatal.type, fatal.code, fatal.argument));

		status = acpi_os_signal(ACPI_SIGNAL_FATAL, fatal);
		/* Always signal the OS! */

		/* Might return while OS is shutting down, just continue */
		acpi_os_signal(ACPI_SIGNAL_FATAL, &fatal);

		ACPI_FREE(fatal);
		goto cleanup;
#ifndef ACPI_CONTINUE_ON_FATAL
		/*
		 * Might return while OS is shutting down, so abort the AML execution
		 * by returning an error.
		 */
		return_ACPI_STATUS(AE_ERROR);
#else
		/*
		 * The alstests require that the Fatal() opcode does not return an error.
		 */
		return_ACPI_STATUS(AE_OK);
#endif

	case AML_EXTERNAL_OP:
		/*
@@ -93,21 +95,16 @@ acpi_status acpi_ex_opcode_3A_0T_0R(struct acpi_walk_state *walk_state)
		 * wrong if an external opcode ever gets here.
		 */
		ACPI_ERROR((AE_INFO, "Executed External Op"));
		status = AE_OK;
		goto cleanup;

		return_ACPI_STATUS(AE_OK);

	default:

		ACPI_ERROR((AE_INFO, "Unknown AML opcode 0x%X",
			    walk_state->opcode));

		status = AE_AML_BAD_OPCODE;
		goto cleanup;
		return_ACPI_STATUS(AE_AML_BAD_OPCODE);
	}

cleanup:

	return_ACPI_STATUS(status);
}

/*******************************************************************************
+1 −1
Original line number Diff line number Diff line
@@ -601,7 +601,7 @@ acpi_status acpi_install_method(u8 *buffer)
error_exit:

	ACPI_FREE(aml_buffer);
	ACPI_FREE(method_obj);
	acpi_ut_delete_object_desc(method_obj);
	return (status);
}
ACPI_EXPORT_SYMBOL(acpi_install_method)
+1 −1
Original line number Diff line number Diff line
@@ -148,7 +148,7 @@ union acpi_operand_object *acpi_ut_create_package_object(u32 count)
	package_elements = ACPI_ALLOCATE_ZEROED(((acpi_size)count +
						 1) * sizeof(void *));
	if (!package_elements) {
		ACPI_FREE(package_desc);
		acpi_ut_delete_object_desc(package_desc);
		return_PTR(NULL);
	}

Loading