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

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

ACPICA: Debugger: Update mutexes used for multithreaded debugger

ACPICA commit 6b2701f619040e803313363f516b200e362a9100

Make these mutex objects independent of the deadlock detection mechanism.
This mechanism caused failures with the multithread debugger.

This patch doesn't affect Linux kernel as debugger is currently not fully
functioning in the Linux kernel. And the further debugger cleanups will
take care of handling debugger command signalling correctly instead of
using such kind of mutexes. So it is safe to leave this patch as it is.

Link: https://github.com/acpica/acpica/commit/6b2701f6


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 92dc9619
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -358,6 +358,9 @@ ACPI_GLOBAL(u16, acpi_gbl_node_type_count_misc);
ACPI_GLOBAL(u32, acpi_gbl_num_nodes);
ACPI_GLOBAL(u32, acpi_gbl_num_nodes);
ACPI_GLOBAL(u32, acpi_gbl_num_objects);
ACPI_GLOBAL(u32, acpi_gbl_num_objects);


ACPI_GLOBAL(acpi_mutex, acpi_gbl_db_command_ready);
ACPI_GLOBAL(acpi_mutex, acpi_gbl_db_command_complete);

#endif				/* ACPI_DEBUGGER */
#endif				/* ACPI_DEBUGGER */


/*****************************************************************************
/*****************************************************************************
+1 −3
Original line number Original line Diff line number Diff line
@@ -83,10 +83,8 @@ union acpi_parse_object;
#define ACPI_MTX_EVENTS                 3	/* Data for ACPI events */
#define ACPI_MTX_EVENTS                 3	/* Data for ACPI events */
#define ACPI_MTX_CACHES                 4	/* Internal caches, general purposes */
#define ACPI_MTX_CACHES                 4	/* Internal caches, general purposes */
#define ACPI_MTX_MEMORY                 5	/* Debug memory tracking lists */
#define ACPI_MTX_MEMORY                 5	/* Debug memory tracking lists */
#define ACPI_MTX_DEBUG_CMD_COMPLETE     6	/* AML debugger */
#define ACPI_MTX_DEBUG_CMD_READY        7	/* AML debugger */


#define ACPI_MAX_MUTEX                  7
#define ACPI_MAX_MUTEX                  5
#define ACPI_NUM_MUTEX                  ACPI_MAX_MUTEX+1
#define ACPI_NUM_MUTEX                  ACPI_MAX_MUTEX+1


/* Lock structure for reader/writer interfaces */
/* Lock structure for reader/writer interfaces */
+0 −2
Original line number Original line Diff line number Diff line
@@ -407,8 +407,6 @@ static char *acpi_gbl_mutex_names[ACPI_NUM_MUTEX] = {
	"ACPI_MTX_Events",
	"ACPI_MTX_Events",
	"ACPI_MTX_Caches",
	"ACPI_MTX_Caches",
	"ACPI_MTX_Memory",
	"ACPI_MTX_Memory",
	"ACPI_MTX_CommandComplete",
	"ACPI_MTX_CommandReady"
};
};


char *acpi_ut_get_mutex_name(u32 mutex_id)
char *acpi_ut_get_mutex_name(u32 mutex_id)
+21 −0
Original line number Original line Diff line number Diff line
@@ -108,6 +108,21 @@ acpi_status acpi_ut_mutex_initialize(void)
	/* Create the reader/writer lock for namespace access */
	/* Create the reader/writer lock for namespace access */


	status = acpi_ut_create_rw_lock(&acpi_gbl_namespace_rw_lock);
	status = acpi_ut_create_rw_lock(&acpi_gbl_namespace_rw_lock);
	if (ACPI_FAILURE(status)) {
		return_ACPI_STATUS(status);
	}
#ifdef ACPI_DEBUGGER

	/* Debugger Support */

	status = acpi_os_create_mutex(&acpi_gbl_db_command_ready);
	if (ACPI_FAILURE(status)) {
		return_ACPI_STATUS(status);
	}

	status = acpi_os_create_mutex(&acpi_gbl_db_command_complete);
#endif

	return_ACPI_STATUS(status);
	return_ACPI_STATUS(status);
}
}


@@ -147,6 +162,12 @@ void acpi_ut_mutex_terminate(void)
	/* Delete the reader/writer lock */
	/* Delete the reader/writer lock */


	acpi_ut_delete_rw_lock(&acpi_gbl_namespace_rw_lock);
	acpi_ut_delete_rw_lock(&acpi_gbl_namespace_rw_lock);

#ifdef ACPI_DEBUGGER
	acpi_os_delete_mutex(acpi_gbl_db_command_ready);
	acpi_os_delete_mutex(acpi_gbl_db_command_complete);
#endif

	return_VOID;
	return_VOID;
}
}


+3 −3
Original line number Original line Diff line number Diff line
@@ -304,11 +304,11 @@
 * multi-threaded if ACPI_APPLICATION is not set.
 * multi-threaded if ACPI_APPLICATION is not set.
 */
 */
#ifndef DEBUGGER_THREADING
#ifndef DEBUGGER_THREADING
#ifdef ACPI_APPLICATION
#if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP)
#define DEBUGGER_THREADING          DEBUGGER_SINGLE_THREADED
#define DEBUGGER_THREADING          DEBUGGER_MULTI_THREADED


#else
#else
#define DEBUGGER_THREADING          DEBUGGER_MULTI_THREADED
#define DEBUGGER_THREADING          DEBUGGER_SINGLE_THREADED
#endif
#endif
#endif				/* !DEBUGGER_THREADING */
#endif				/* !DEBUGGER_THREADING */