linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Stephen Berman <stephen.berman@gmx.net>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Peter Zijlstra <peterz@infradead.org>,
	linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org
Subject: Re: power-off delay/hang due to commit 6d25be57 (mainline)
Date: Mon, 15 Jun 2020 16:51:30 +0200	[thread overview]
Message-ID: <20200615145130.bcdidqkp6w23xb6c@linutronix.de> (raw)
In-Reply-To: <874krcsquv.fsf@gmx.net>

[-- Attachment #1: Type: text/plain, Size: 2395 bytes --]

On 2020-06-15 09:58:00 [+0200], Stephen Berman wrote:
> Ok, sorry, I had misunderstood, but now I've looked at the
> documentation.  I had in fact already done `echo t >
> /proc/sysrq-trigger' in an xterm (as root) and there was no output.
> Later, after booting kernel 5.1.0 because of the message flooding with
> 5.6.4, I did `echo t > /proc/sysrq-trigger' in a virtual tty (also as
> root) and the only output was: `[ <timestamp>] sysrq: Show State'.  Is
> this expected?  (In /proc/sys/kernel/sysrq there is `1'.)  I couldn't
> try it in a 5.6.4 virtual tty because of the message flooding (see
> below).

If you do this "t" then there should be a lot of output on your console.
If you do this from an xterm then you can see the output after typing
"dmesg". The output should appear also in your system log.

> The kernel log shows 305 of these messages in the 4 minutes and 17
> seconds between the start of klogd and when I rebooted.

Okay, this is a lot.

> > The interesting part is to see if there is a acpi_os_execute() adding a
> > specific event multiple times which does not complete. Maybe at runtime,
> > maybe at shutdown time. If that is the case then ignoring this specific
> > event might fix the shutdown problem. With all this information so far,
> > I don't see a relation with this problem and the commit…
> 
> In those 3 minutes and 8 seconds there were 5 "Adding
> acpi_ev_asynch_enable_gpe" messages at the beginning, then 185 "Adding
> acpi_ev_notify_dispatch" messages, which kept coming until I rebooted.

5 acpi_ev_asynch_enable_gpe() in three minutes since boot isn't much.
185 of "Adding acpi_ev_notify_dispatch" is a lot.

But to be clear, only 
  acpi_os_execute(1109) Adding acpi_ev_notify_dispatch" messages?
No
  "acpi_os_execute_deferred_notify() Start/End acpi_ev_notify_dispatch"? 

The syslog should have captured the log on disk.

I attached a modified acpi_dbg.patch. Please enable:
- CONFIG_ACPI_DEBUG=y

Looking at your 5.1 you have tracing enabled (hope it still is).

The attached patch will dump the date into the tracing buffer, so you
console should remain "clean". Once it records 300 of those "requests
for acpi_ev_notify_dispatch" it will stop recording.
After 4-5 minutes please do
	cat /sys/kernel/debug/tracing/trace > file.txt

compress it and send it.

> Steve Berman

Sebastian

[-- Attachment #2: acpi_dbg.patch --]
[-- Type: text/x-diff, Size: 3543 bytes --]

diff --git a/drivers/acpi/acpica/evgpe.c b/drivers/acpi/acpica/evgpe.c
index 3e39907fedd9..816e23d103c6 100644
--- a/drivers/acpi/acpica/evgpe.c
+++ b/drivers/acpi/acpica/evgpe.c
@@ -477,6 +477,7 @@ static void ACPI_SYSTEM_XFACE acpi_ev_asynch_execute_gpe_method(void *context)
 		 * notifies on multiple device objects.
 		 */
 		notify = gpe_event_info->dispatch.notify_list;
+		trace_printk("notify %px\n", gpe_event_info);
 		while (ACPI_SUCCESS(status) && notify) {
 			status =
 			    acpi_ev_queue_notify_request(notify->device_node,
@@ -484,6 +485,7 @@ static void ACPI_SYSTEM_XFACE acpi_ev_asynch_execute_gpe_method(void *context)
 
 			notify = notify->next;
 		}
+		trace_printk("Event notify %px done %x\n", gpe_event_info, status);
 
 		break;
 
@@ -491,6 +493,9 @@ static void ACPI_SYSTEM_XFACE acpi_ev_asynch_execute_gpe_method(void *context)
 
 		/* Allocate the evaluation information block */
 
+		trace_printk("Evaluate %4.4s\n",
+			     acpi_ut_get_node_name(gpe_event_info->dispatch.method_node));
+
 		info = ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_evaluate_info));
 		if (!info) {
 			status = AE_NO_MEMORY;
diff --git a/drivers/acpi/acpica/evmisc.c b/drivers/acpi/acpica/evmisc.c
index ce1eda6beb84..735057419a8e 100644
--- a/drivers/acpi/acpica/evmisc.c
+++ b/drivers/acpi/acpica/evmisc.c
@@ -72,6 +72,7 @@ acpi_ev_queue_notify_request(struct acpi_namespace_node *node, u32 notify_value)
 	union acpi_generic_state *info;
 	u8 handler_list_id = 0;
 	acpi_status status = AE_OK;
+	static int num_req = 0;
 
 	ACPI_FUNCTION_NAME(ev_queue_notify_request);
 
@@ -129,19 +130,19 @@ acpi_ev_queue_notify_request(struct acpi_namespace_node *node, u32 notify_value)
 	info->notify.handler_list_head = handler_list_head;
 	info->notify.global = &acpi_gbl_global_notify[handler_list_id];
 
-	ACPI_DEBUG_PRINT((ACPI_DB_INFO,
-			  "Dispatching Notify on [%4.4s] (%s) Value 0x%2.2X (%s) Node %p\n",
+	trace_printk("Dispatching Notify on [%4.4s] (%s) Value 0x%2.2X (%s) Node %px\n",
 			  acpi_ut_get_node_name(node),
 			  acpi_ut_get_type_name(node->type), notify_value,
 			  acpi_ut_get_notify_name(notify_value, ACPI_TYPE_ANY),
-			  node));
+			  node);
 
 	status = acpi_os_execute(OSL_NOTIFY_HANDLER,
 				 acpi_ev_notify_dispatch, info);
 	if (ACPI_FAILURE(status)) {
 		acpi_ut_delete_generic_state(info);
 	}
-
+	if (num_req++ == 300)
+		tracing_off();
 	return (status);
 }
 
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index 762c5d50b8fe..67d5ac9aa433 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -844,6 +844,16 @@ static void acpi_os_execute_deferred(struct work_struct *work)
 	kfree(dpc);
 }
 
+static void acpi_os_execute_deferred_notify(struct work_struct *work)
+{
+	struct acpi_os_dpc *dpc = container_of(work, struct acpi_os_dpc, work);
+
+	trace_printk("Start %px %pS(%px)\n", dpc, dpc->function, dpc->context);
+	dpc->function(dpc->context);
+	trace_printk("End %px %pS(%px)\n", dpc, dpc->function, dpc->context);
+	kfree(dpc);
+}
+
 #ifdef CONFIG_ACPI_DEBUGGER
 static struct acpi_debugger acpi_debugger;
 static bool acpi_debugger_initialized;
@@ -1096,7 +1106,8 @@ acpi_status acpi_os_execute(acpi_execute_type type,
 	 */
 	if (type == OSL_NOTIFY_HANDLER) {
 		queue = kacpi_notify_wq;
-		INIT_WORK(&dpc->work, acpi_os_execute_deferred);
+		trace_printk("Adding %pS %px <%px>\n", function, context, dpc);
+		INIT_WORK(&dpc->work, acpi_os_execute_deferred_notify);
 	} else if (type == OSL_GPE_HANDLER) {
 		queue = kacpid_wq;
 		INIT_WORK(&dpc->work, acpi_os_execute_deferred);

  reply	other threads:[~2020-06-15 14:51 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <87v9l65d2y.fsf@gmx.net>
     [not found] ` <20200513220428.4nksinis2qs5dtmh@linutronix.de>
     [not found]   ` <87mu6aurfn.fsf@gmx.net>
     [not found]     ` <20200522164012.ynyvrjompv42jtmx@linutronix.de>
     [not found]       ` <87y2owwo2o.fsf@rub.de>
     [not found]         ` <20200609202339.cgy57twm2zdtjhje@linutronix.de>
     [not found]           ` <87tuzjcovq.fsf@gmx.net>
     [not found]             ` <20200610102514.4vdzu5u7d6vnpicn@linutronix.de>
     [not found]               ` <87imfyh6yx.fsf@gmx.net>
     [not found]                 ` <87wo4dligz.fsf@gmx.net>
2020-06-12 11:01                   ` power-off delay/hang due to commit 6d25be57 (mainline) Sebastian Andrzej Siewior
2020-06-14 12:12                     ` Stephen Berman
2020-06-14 17:10                       ` Sebastian Andrzej Siewior
2020-06-15  7:58                         ` Stephen Berman
2020-06-15 14:51                           ` Sebastian Andrzej Siewior [this message]
2020-06-15 15:41                             ` Stephen Berman
2020-06-15 15:58                               ` Sebastian Andrzej Siewior
2020-06-15 16:19                                 ` Stephen Berman
2020-06-15 16:32                                   ` Sebastian Andrzej Siewior
2020-06-16  7:14                             ` Stephen Berman
2020-06-16  7:38                               ` Sebastian Andrzej Siewior
2020-06-16  8:13                                 ` Stephen Berman
2020-06-16 15:55                                   ` Sebastian Andrzej Siewior
2020-06-16 20:28                                     ` Stephen Berman
2020-06-17 14:27                                       ` Sebastian Andrzej Siewior
2020-06-17 21:09                                         ` Stephen Berman
2020-06-24 20:11                                           ` Sebastian Andrzej Siewior
2020-06-24 21:49                                             ` Stephen Berman
2020-07-14 13:44                                               ` Sebastian Andrzej Siewior
2020-07-14 13:54                                                 ` Rafael J. Wysocki
2020-07-14 14:11                                                   ` Sebastian Andrzej Siewior
2020-07-14 15:53                                                     ` Rafael J. Wysocki
2020-07-14 16:10                                                       ` Sebastian Andrzej Siewior
2020-08-11 10:27                                                       ` Sebastian Andrzej Siewior
2020-08-11 14:02                                                         ` Rafael J. Wysocki
2020-07-19 10:07                                                     ` Stephen Berman
2020-08-11 11:58                                                       ` Stephen Berman
2020-08-11 13:29                                                         ` Sebastian Andrzej Siewior
2020-08-11 14:34                                                           ` Rafael J. Wysocki
2020-08-11 15:25                                                             ` Sebastian Andrzej Siewior
     [not found]                                                               ` <87ft8tayic.fsf@gmx.net>
2020-08-11 18:49                                                                 ` Sebastian Andrzej Siewior
2020-10-06 21:49                                                                   ` Sebastian Andrzej Siewior
2020-10-07 16:18                                                                     ` Rafael J. Wysocki
2020-10-26 17:20                                                                       ` Sebastian Andrzej Siewior
2020-12-02 18:03                                                                         ` Sebastian Andrzej Siewior
2020-12-02 18:31                                                                           ` Rafael J. Wysocki
2020-12-02 19:13                                                                             ` Rafael J. Wysocki
2020-12-31 20:46                                                                               ` Rafael J. Wysocki
2021-01-02 11:03                                                                                 ` Rafael J. Wysocki
2021-01-04 15:38                                                                                 ` Stephen Berman
2021-01-24 13:49                                                                                   ` Stephen Berman
2021-01-25 16:25                                                                                     ` 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=20200615145130.bcdidqkp6w23xb6c@linutronix.de \
    --to=bigeasy@linutronix.de \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=stephen.berman@gmx.net \
    --cc=tglx@linutronix.de \
    /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;
as well as URLs for NNTP newsgroup(s).