From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Linux ACPI <linux-acpi@vger.kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Bob Moore <robert.moore@intel.com>,
Saket Dumbre <saket.dumbre@intel.com>
Subject: [PATCH 07/14] ACPICA: Add interrupt command to acpiexec
Date: Mon, 10 Jul 2023 19:16:15 +0200 [thread overview]
Message-ID: <2240040.iZASKD2KPV@kreacher> (raw)
In-Reply-To: <5698695.DvuYhMxLoT@kreacher>
From: Jose Marinho <jose.marinho@arm.com>
ACPICA commit ef7cf185a046d76119b631f16e7c991543c80edc
This commit add the Interrupt command to acpiexec.
The Interrupt command simulates an interrupt with a int_ID (GSIV)
equal to the first argument of the call.
The acpiexec code simulates the behaviour by OSPM: execute the _EVT
method of the GED device associated with that int_ID.
Link: https://github.com/acpica/acpica/commit/ef7cf185
Signed-off-by: Jose Marinho <jose.marinho@arm.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
drivers/acpi/acpica/acdebug.h | 2 ++
drivers/acpi/acpica/dbcmds.c | 58 +++++++++++++++++++++++++++++++++++
drivers/acpi/acpica/dbinput.c | 8 +++++
3 files changed, 68 insertions(+)
diff --git a/drivers/acpi/acpica/acdebug.h b/drivers/acpi/acpica/acdebug.h
index 22f1f7a9e5a3..911875c5a5f1 100644
--- a/drivers/acpi/acpica/acdebug.h
+++ b/drivers/acpi/acpica/acdebug.h
@@ -287,4 +287,6 @@ struct acpi_namespace_node *acpi_db_local_ns_lookup(char *name);
void acpi_db_uint32_to_hex_string(u32 value, char *buffer);
+void acpi_db_generate_interrupt(char *gsiv_arg);
+
#endif /* __ACDEBUG_H__ */
diff --git a/drivers/acpi/acpica/dbcmds.c b/drivers/acpi/acpica/dbcmds.c
index 9eb68e0751c7..3d99a9048585 100644
--- a/drivers/acpi/acpica/dbcmds.c
+++ b/drivers/acpi/acpica/dbcmds.c
@@ -1010,6 +1010,64 @@ void acpi_db_display_resources(char *object_arg)
acpi_db_set_output_destination(ACPI_DB_CONSOLE_OUTPUT);
}
+/*******************************************************************************
+ *
+ * FUNCTION: acpi_db_generate_ged
+ *
+ * PARAMETERS: ged_arg - Raw GED number, ascii string
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Simulate firing of a GED
+ *
+ ******************************************************************************/
+
+void acpi_db_generate_interrupt(char *gsiv_arg)
+{
+ u32 gsiv_number;
+ struct acpi_ged_handler_info *ged_info = acpi_gbl_ged_handler_list;
+
+ if (!ged_info) {
+ acpi_os_printf("No GED handling present\n");
+ }
+
+ gsiv_number = strtoul(gsiv_arg, NULL, 0);
+
+ while (ged_info) {
+
+ if (ged_info->int_id == gsiv_number) {
+ struct acpi_object_list arg_list;
+ union acpi_object arg0;
+ acpi_handle evt_handle = ged_info->evt_method;
+ acpi_status status;
+
+ acpi_os_printf("Evaluate GED _EVT (GSIV=%d)\n",
+ gsiv_number);
+
+ if (!evt_handle) {
+ acpi_os_printf("Undefined _EVT method\n");
+ return;
+ }
+
+ arg0.integer.type = ACPI_TYPE_INTEGER;
+ arg0.integer.value = gsiv_number;
+
+ arg_list.count = 1;
+ arg_list.pointer = &arg0;
+
+ status =
+ acpi_evaluate_object(evt_handle, NULL, &arg_list,
+ NULL);
+ if (ACPI_FAILURE(status)) {
+ acpi_os_printf("Could not evaluate _EVT\n");
+ return;
+ }
+
+ }
+ ged_info = ged_info->next;
+ }
+}
+
#if (!ACPI_REDUCED_HARDWARE)
/*******************************************************************************
*
diff --git a/drivers/acpi/acpica/dbinput.c b/drivers/acpi/acpica/dbinput.c
index b8a48923064f..861b12c334ab 100644
--- a/drivers/acpi/acpica/dbinput.c
+++ b/drivers/acpi/acpica/dbinput.c
@@ -106,6 +106,7 @@ enum acpi_ex_debugger_commands {
CMD_THREADS,
CMD_TEST,
+ CMD_INTERRUPT,
#endif
};
@@ -185,6 +186,7 @@ static const struct acpi_db_command_info acpi_gbl_db_commands[] = {
{"THREADS", 3},
{"TEST", 1},
+ {"INTERRUPT", 1},
#endif
{NULL, 0}
};
@@ -318,6 +320,7 @@ static const struct acpi_db_command_help acpi_gbl_db_command_help[] = {
{1, " Gpes", "Display info on all GPE devices\n"},
{1, " Sci", "Generate an SCI\n"},
{1, " Sleep [SleepState]", "Simulate sleep/wake sequence(s) (0-5)\n"},
+ {1, " Interrupt <GSIV>", "Simulate an interrupt\n"},
#endif
{0, NULL, NULL}
};
@@ -1064,6 +1067,11 @@ acpi_db_command_dispatch(char *input_buffer,
acpi_os_printf("Event command not implemented\n");
break;
+ case CMD_INTERRUPT:
+
+ acpi_db_generate_interrupt(acpi_gbl_db_args[1]);
+ break;
+
case CMD_GPE:
acpi_db_generate_gpe(acpi_gbl_db_args[1], acpi_gbl_db_args[2]);
--
2.35.3
next prev parent reply other threads:[~2023-07-10 17:23 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-10 17:10 [PATCH 00/14] ACPICA 20230628 Rafael J. Wysocki
2023-07-10 17:11 ` [PATCH 01/14] ACPICA: Fix GCC 12 dangling-pointer warning Rafael J. Wysocki
2023-07-10 17:12 ` [PATCH 02/14] ACPICA: Modify ACPI_STATE_COMMON Rafael J. Wysocki
2023-07-10 17:13 ` [PATCH 03/14] ACPICA: exserial.c: replace ternary operator with ACPI_MIN() Rafael J. Wysocki
2023-07-10 17:13 ` [PATCH 04/14] ACPICA: Add support for _DSC as per ACPI 6.5 Rafael J. Wysocki
2023-07-10 17:14 ` [PATCH 05/14] ACPICA: fix for conflict macro definition on zephyr interface Rafael J. Wysocki
2023-07-10 17:15 ` [PATCH 06/14] ACPICA: Detect GED device and keep track of _EVT Rafael J. Wysocki
2023-07-10 17:16 ` Rafael J. Wysocki [this message]
2023-07-10 17:17 ` [PATCH 08/14] ACPICA: Fix misspelled CDAT DSMAS define Rafael J. Wysocki
2023-07-10 17:18 ` [PATCH 09/14] ACPICA: Slightly simplify an error message in acpi_ds_result_push() Rafael J. Wysocki
2023-07-10 17:20 ` [PATCH 10/14] ACPICA: Add a define for size of struct acpi_srat_generic_affinity device_handle Rafael J. Wysocki
2023-07-10 17:21 ` [PATCH 11/14] ACPICA: Add AML_NO_OPERAND_RESOLVE flag to Timer Rafael J. Wysocki
2023-07-10 17:21 ` [PATCH 12/14] ACPICA: MADT: Add RISC-V external interrupt controllers Rafael J. Wysocki
2023-07-10 17:22 ` [PATCH 13/14] ACPICA: RHCT: Add flags, CMO and MMU nodes Rafael J. Wysocki
2023-07-10 17:23 ` [PATCH 14/14] ACPICA: Update version to 20230628 Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2240040.iZASKD2KPV@kreacher \
--to=rjw@rjwysocki.net \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robert.moore@intel.com \
--cc=saket.dumbre@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.