Hi Bryan and Vladimir, On Sat, Jun 27, 2026 at 10:51:47AM +0100, Bryan O'Donoghue wrote: > On 26/06/2026 17:26, Brian Masney wrote: > > With the introduction of sync_state support in the clk and pmdomain > > subsystems, the following warning happens when the unused clocks are > > shutdown in camcc-sc8280xp: > > > > [ 15.408367] titan_top_gdsc status stuck at 'on' > > [ 15.408429] WARNING: drivers/clk/qcom/gdsc.c:178 at gdsc_toggle_logic+0x14c/0x160, CPU#2: kworker/u32:1/14 > > [ 15.408462] Modules linked in: bnep vfat fat ath11k_pci(+) ath11k mac80211 cfg80211 mhi libarc4 snd_soc_wcd938x snd_soc_wcd938x_sdw snd_soc_wcd_classh hci_uart snd_soc_wcd_common > > snd_soc_sc8280xp soundwire_qcom snd_soc_wcd_mbhc snd_soc_qcom_sdw slimbus snd_soc_qcom_common regmap_sdw btqca btrtl qcom_camss soundwire_bus btbcm btintel snd_soc_sdca snd_soc_lpass_wsa_macro > > bluetooth snd_soc_lpass_tx_macro snd_soc_lpass_va_macro snd_soc_lpass_rx_macro snd_soc_hdmi_codec snd_soc_lpass_macro_common videobuf2_dma_sg ov5675 v4l2_fwnode videobuf2_memops > > qcom_spmi_adc5 snd_soc_core qcom_spmi_adc_tm5 videobuf2_v4l2 snd_seq snd_seq_device videobuf2_common v4l2_async qcom_vadc_common qcom_spmi_temp_alarm pm8941_pwrkey industrialio videodev > > snd_compress rfkill ac97_bus snd_pcm_dmaengine qcom_tsens mc qcom_edac snd_pcm pci_pwrctrl_pwrseq qcom_cpufreq_hw snd_timer snd qcomtee soundcore tee leds_gpio joydev binfmt_misc zram > > lz4hc_compress governor_simpleondemand panel_edp msm xhci_plat_hcd nvme nvme_core dwc3 qcom_pm8008_regulator > > [ 15.408688] ucsi_glink nvme_keyring nvme_auth pmic_glink_altmode udc_core typec_ucsi aux_hpd_bridge qcom_battmgr ulpi ubwc_config socinfo ocmem drm_gpuvm qcom_q6v5_pas drm_exec > > qcom_pil_info leds_qcom_lpg gpu_sched led_class_multicolor rtc_pm8xxx qcom_pbs qcom_common drm_display_helper qcom_pon qcom_glink_smem qcom_glink ghash_ce pwrseq_qcom_wcn gpio_sbu_mux > > qcom_stats phy_qcom_qmp_combo qcom_q6v5 gf128mul cec dispcc_sc8280xp phy_qcom_edp camcc_sc8280xp i2c_qcom_cci qcom_sysmon drm_dp_aux_bus mdt_loader aux_bridge qcom_pm8008 i2c_hid_of_elan > > dwc3_qcom_legacy llcc_qcom icc_bwmon gpi typec qcom_refgen_regulator phy_qcom_qmp_usb nvmem_qfprom qcom_ipcc phy_qcom_snps_femto_v2 gpucc_sc8280xp pinctrl_sc8280xp_lpass_lpi qcom_hwspinlock > > pinctrl_lpass_lpi lpasscc_sc8280xp qrtr qcom_aoss pmic_glink pdr_interface phy_qcom_qmp_pcie qcom_smd qcom_pdr_msg icc_osm_l3 qcom_wdt qmi_helpers qcom_rng smp2p rpmsg_core gpio_keys pwm_bl > > smem hid_multitouch fuse i2c_dev > > [ 15.408928] CPU: 2 UID: 0 PID: 14 Comm: kworker/u32:1 Not tainted 7.1.0+ #2 PREEMPT(lazy) > > [ 15.408937] Hardware name: LENOVO 21BX0016US/21BX0016US, BIOS N3HET88W (1.60 ) 03/14/2024 > > [ 15.408942] Workqueue: pm pm_runtime_work > > [ 15.408959] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) > > [ 15.408967] pc : gdsc_toggle_logic+0x14c/0x160 > > [ 15.408978] lr : gdsc_toggle_logic+0x14c/0x160 > > [ 15.408987] sp : ffff8000800f3b40 > > [ 15.408991] x29: ffff8000800f3b40 x28: 0000000000000000 x27: 0000000000000000 > > [ 15.409003] x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000 > > [ 15.409014] x23: 0000000000000000 x22: 0000000000000001 x21: ffffa33f298fca88 > > [ 15.409024] x20: 0000000000000000 x19: ffffa33f298fc5b0 x18: 00cd15db75dacefd > > [ 15.409035] x17: 000000040044ffff x16: ffffa33f3b1a3d88 x15: 726f776b80000002 > > [ 15.409045] x14: ffffffffffffffff x13: 0000000000000028 x12: 0101010101010101 > > [ 15.409056] x11: 7f7f7f7f7f7f7f7f x10: fefeff3039313274 x9 : ffffa33f3a5edafc > > [ 15.409067] x8 : ffff8000800f3780 x7 : 0000000000000001 x6 : 0000000000000001 > > [ 15.409078] x5 : ffff000bf3ca1288 x4 : 0000000000000000 x3 : ffff5cccb6a3f000 > > [ 15.409088] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff000080ae0000 > > [ 15.409098] Call trace: > > [ 15.409103] gdsc_toggle_logic+0x14c/0x160 (P) > > [ 15.409115] gdsc_disable+0x4c/0x190 > > [ 15.409126] _genpd_power_off+0xa0/0x1a8 > > [ 15.409137] genpd_power_off.part.0+0x180/0x2a0 > > [ 15.409149] genpd_runtime_suspend+0x218/0x310 > > [ 15.409155] __rpm_callback+0x50/0x1f8 > > [ 15.409166] rpm_callback+0x7c/0x90 > > [ 15.409175] rpm_suspend+0xe8/0x690 > > [ 15.409185] pm_runtime_work+0xd0/0xe0 > > [ 15.409195] process_one_work+0x18c/0x518 > > [ 15.409208] worker_thread+0x190/0x320 > > [ 15.409218] kthread+0x110/0x130 > > [ 15.409227] ret_from_fork+0x10/0x20 > > > > Let's go ahead and add the flag ALWAYS_ON to titan_top_gdsc so that it > > is not disabled in the unused clock sweep. > > > > Fixes: ff93872a9c616 ("clk: qcom: camcc-sc8280xp: Add sc8280xp CAMCC") > > Signed-off-by: Brian Masney > > Assisted-by: Claude:claude-opus-4-6 > > --- > > drivers/clk/qcom/camcc-sc8280xp.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/clk/qcom/camcc-sc8280xp.c b/drivers/clk/qcom/camcc-sc8280xp.c > > index 18f5a3eb313e..52e1a786083f 100644 > > --- a/drivers/clk/qcom/camcc-sc8280xp.c > > +++ b/drivers/clk/qcom/camcc-sc8280xp.c > > @@ -2803,7 +2803,7 @@ static struct gdsc titan_top_gdsc = { > > .pd = { > > .name = "titan_top_gdsc", > > }, > > - .flags = RETAIN_FF_ENABLE, > > + .flags = ALWAYS_ON | RETAIN_FF_ENABLE, > > .pwrsts = PWRSTS_OFF_ON, > > }; > > > > --- > > base-commit: 6c94b38b83a04c43ea49004275f0391404051093 > > change-id: 20260626-camcc-sc8280xp-titan-top-196cf6757b49 > > > > Best regards, > > If it is stuck at on, that is almost certainly because one of the child > gdscs is still on. > > Hmm, I should probably fix my bootloader on x13s and see if I can repliate > this bug. I tried with Vladimir's patch series that he referenced and the issue still occurs with that. I'll post more details to his message with the change I had to make. All of the child gdscs appear to be off: root@fedora:/home/masneyb# cat /sys/kernel/debug/pm_genpd/titan_top_gdsc/current_state on root@fedora:/home/masneyb# cat /sys/kernel/debug/pm_genpd/titan_top_gdsc/sub_domains bps_gdsc ife_0_gdsc ife_1_gdsc ife_2_gdsc ife_3_gdsc ipe_0_gdsc ipe_1_gdsc root@fedora:/home/masneyb# cat /sys/kernel/debug/pm_genpd/bps_gdsc/current_state off-0 root@fedora:/home/masneyb# cat /sys/kernel/debug/pm_genpd/ife_0_gdsc/current_state off-0 root@fedora:/home/masneyb# cat /sys/kernel/debug/pm_genpd/ife_1_gdsc/current_state off-0 root@fedora:/home/masneyb# cat /sys/kernel/debug/pm_genpd/ife_2_gdsc/current_state off-0 root@fedora:/home/masneyb# cat /sys/kernel/debug/pm_genpd/ife_3_gdsc/current_state off-0 root@fedora:/home/masneyb# cat /sys/kernel/debug/pm_genpd/ipe_0_gdsc/current_state off-0 root@fedora:/home/masneyb# cat /sys/kernel/debug/pm_genpd/ipe_1_gdsc/current_state off-0 I also attached the contents of pm_genpd_summary and clk_summary. Brian