Hi Sean,
On Thu, Sep 11, 2025 at 11:33:15AM -0400, Sean Anderson wrote:
coresight_panic_cb is called with interrupts disabled during panics. However, bus_for_each_dev calls bus_to_subsys which takes bus_kset->list_lock without disabling IRQs. This will cause a deadlock if a panic occurs while one of the other coresight functions that uses bus_for_each_dev is running.
The decription is a bit misleading. Even when IRQ is disabled, if an exception happens, a CPU still can be trapped for handling kernel panic.
Maintain a separate list of coresight devices to access during a panic.
Rather than maintaining a separate list and introducing a new spinlock, I would argue if we can simply register panic notifier in TMC ETR and ETF drviers (see tmc_panic_sync_etr() and tmc_panic_sync_etf()).
If there is no dependency between CoreSight modules in panic sync flow, it is not necessary to maintain list (and lock) for these modules.
I have not involved in panic patches before, so I would like to know the maintainers' opinion.
Thanks, Leo