lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z+Nv8U/4P3taDpUq@perf>
Date: Wed, 26 Mar 2025 12:09:37 +0900
From: Youngmin Nam <youngmin.nam@...sung.com>
To: Marc Zyngier <maz@...nel.org>, Thomas Gleixner <tglx@...utronix.de>
Cc: Saravana Kannan <saravanak@...gle.com>, Ulf Hansson
	<ulf.hansson@...aro.org>, Vincent Guittot <vincent.guittot@...aro.org>,
	linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
	kernel-team@...roid.com, youngmin.nam@...sung.com, hajun.sung@...sung.com,
	d7271.choe@...sung.com, joonki.min@...sung.com
Subject: [GICv3 ITS]S2IDLE framework does not invoke syscore_ops in GICv3
 ITS driver

Hi.

On our SoC, we are using S2IDLE instead of S2R as a system suspend mode.
However, when I try to enable ARM GICv3 ITS driver (drivers/irqchip/irq-gic-v3-its.c),
I noticed that there is no proper way to invoke suspend/resume callback,
because it only uses syscore_ops, which is not called in an s2idle scenario.
Please refer to the codes below.

<drivers/irqchip/irq-gic-v3-its.c>
5028 static struct syscore_ops its_syscore_ops = {
5029         .suspend = its_save_disable,
5030         .resume = its_restore_enable,
5031 };
...
5803         register_syscore_ops(&its_syscore_ops);

<kernel/power/suspend.c>
444         if (state == PM_SUSPEND_TO_IDLE) {
445                 s2idle_loop();
446                 goto Platform_wake;
447         }
448
449         error = pm_sleep_disable_secondary_cpus();
450         if (error || suspend_test(TEST_CPUS)) {
451                 log_suspend_abort_reason("Disabling non-boot cpus failed");
452                 goto Enable_cpus;
453         }
454
455         arch_suspend_disable_irqs();
456         BUG_ON(!irqs_disabled());
457
458         system_state = SYSTEM_SUSPEND;
459
460         error = syscore_suspend();

How should we handle this situation ?


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ