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:24 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox