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

Commit fd13aaa8 authored by Bob Moore's avatar Bob Moore Committed by Rafael J. Wysocki
Browse files

ACPICA: acpiexec: enhance local signal handler

ACPICA commit ffef4ae9a1b6032ebadeab2c2b806f0e585f0006

Add support for SIGSEGV
Improve/cleanup SIGINT handling

Link: https://github.com/acpica/acpica/commit/ffef4ae9


Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 9c0b6c49
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -181,6 +181,18 @@ acpi_db_execute_method(struct acpi_db_method_info *info,
	acpi_gbl_method_executing = FALSE;

	if (ACPI_FAILURE(status)) {
		if ((status == AE_ABORT_METHOD) || acpi_gbl_abort_method) {

			/* Clear the abort and fall back to the debugger prompt */

			ACPI_EXCEPTION((AE_INFO, status,
					"Aborting top-level method"));

			acpi_gbl_abort_method = FALSE;
			status = AE_OK;
			goto cleanup;
		}

		ACPI_EXCEPTION((AE_INFO, status,
				"while executing %s from debugger",
				info->pathname));
+8 −4
Original line number Diff line number Diff line
@@ -212,6 +212,7 @@ acpi_status
acpi_ds_method_error(acpi_status status, struct acpi_walk_state *walk_state)
{
	u32 aml_offset;
	acpi_name name = 0;

	ACPI_FUNCTION_ENTRY();

@@ -237,10 +238,13 @@ acpi_ds_method_error(acpi_status status, struct acpi_walk_state *walk_state)
						walk_state->parser_state.
						aml_start);

		status = acpi_gbl_exception_handler(status,
						    walk_state->method_node ?
						    walk_state->method_node->
						    name.integer : 0,
		if (walk_state->method_node) {
			name = walk_state->method_node->name.integer;
		} else if (walk_state->deferred_node) {
			name = walk_state->deferred_node->name.integer;
		}

		status = acpi_gbl_exception_handler(status, name,
						    walk_state->opcode,
						    aml_offset, NULL);
		acpi_ex_enter_interpreter();
+11 −3
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@
#include "acdispat.h"
#include "amlcode.h"
#include "acinterp.h"
#include "acnamesp.h"

#define _COMPONENT          ACPI_PARSER
ACPI_MODULE_NAME("psparse")
@@ -538,9 +539,16 @@ acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
			/* Either the method parse or actual execution failed */

			acpi_ex_exit_interpreter();
			ACPI_ERROR_METHOD("Method parse/execution failed",
					  walk_state->method_node, NULL,
					  status);
			if (status == AE_ABORT_METHOD) {
				acpi_ns_print_node_pathname(walk_state->
							    method_node,
							    "Method aborted:");
				acpi_os_printf("\n");
			} else {
				ACPI_ERROR_METHOD
				    ("Method parse/execution failed",
				     walk_state->method_node, NULL, status);
			}
			acpi_ex_enter_interpreter();

			/* Check for possible multi-thread reentrancy problem */