Thread (175 messages) 175 messages, 28 authors, 2022-05-24

Re: [PATCH 19/30] panic: Add the panic hypervisor notifier list

From: Evan Green <hidden>
Date: 2022-05-16 16:10:16
Also in: kexec, linux-alpha, linux-edac, linux-hyperv, linux-leds, linux-pm, linux-remoteproc, linux-s390, linux-tegra, linux-um, linuxppc-dev, lkml, netdev, rcu, sparclinux, xen-devel

On Mon, May 16, 2022 at 8:07 AM Guilherme G. Piccoli
[off-list ref] wrote:
Thanks for the review!

I agree with the blinking stuff, I can rework and add all LED/blinking
stuff into the loop list, it does make sense. I'll comment a bit in the
others below...

On 16/05/2022 11:01, Petr Mladek wrote:
quoted
[...]
quoted
--- a/arch/mips/sgi-ip22/ip22-reset.c
+++ b/arch/mips/sgi-ip22/ip22-reset.c
@@ -195,7 +195,7 @@ static int __init reboot_setup(void)
     }

     timer_setup(&blink_timer, blink_timeout, 0);
-    atomic_notifier_chain_register(&panic_notifier_list, &panic_block);
+    atomic_notifier_chain_register(&panic_hypervisor_list, &panic_block);
This notifier enables blinking. It is not much safe. It calls
mod_timer() that takes a lock internally.

This kind of functionality should go into the last list called
before panic() enters the infinite loop. IMHO, all the blinking
stuff should go there.
[...]
quoted
--- a/arch/mips/sgi-ip32/ip32-reset.c
+++ b/arch/mips/sgi-ip32/ip32-reset.c
@@ -145,7 +144,7 @@ static __init int ip32_reboot_setup(void)
     pm_power_off = ip32_machine_halt;

     timer_setup(&blink_timer, blink_timeout, 0);
-    atomic_notifier_chain_register(&panic_notifier_list, &panic_block);
+    atomic_notifier_chain_register(&panic_hypervisor_list, &panic_block);
Same here. Should be done only before the "loop".
[...]
Ack.

quoted
quoted
--- a/drivers/firmware/google/gsmi.c
+++ b/drivers/firmware/google/gsmi.c
@@ -1034,7 +1034,7 @@ static __init int gsmi_init(void)

     register_reboot_notifier(&gsmi_reboot_notifier);
     register_die_notifier(&gsmi_die_notifier);
-    atomic_notifier_chain_register(&panic_notifier_list,
+    atomic_notifier_chain_register(&panic_hypervisor_list,
                                    &gsmi_panic_notifier);
I am not sure about this one. It looks like some logging or
pre_reboot stuff.
Disagree here. I'm looping Google maintainers, so they can comment.
(CCed Evan, David, Julius)

This notifier is clearly a hypervisor notification mechanism. I've fixed
a locking stuff there (in previous patch), I feel it's low-risk but even
if it's mid-risk, the class of such callback remains a perfect fit with
the hypervisor list IMHO.
This logs a panic to our "eventlog", a tiny logging area in SPI flash
for critical and power-related events. In some cases this ends up
being the only clue we get in a Chromebook feedback report that a
panic occurred, so from my perspective moving it to the front of the
line seems like a good idea.

-Evan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help