Re: [PATCH] clk: qcom: camcc-sc8280xp: unregister CAMCC_GDSC_CLK

From: Brian Masney

Date: Tue Sep 08 2026 - 10:31:23 EST


Hi Kieran,

On Mon, Aug 31, 2026 at 11:36:18AM +0100, Kieran Bingham wrote:
> Hi Brian, Bryan,
>
> Quoting Brian Masney (2026-07-08 23:30:06)
> > 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:
>
>
> I've recently switched my Lenovo X13s to Ubuntu 26.04. That's providing
> a Linux 7.0 kernel.
>
> Unfortunately - the camera can only run once. On successive attempts I
> get a kernel WARN log like this.
>
> Bryan pointed me at this patch, which I see is already in mainline.
>
> So I've booted v7.2-16202-g08dbfad3f504 from yesterdays torvalds/master
> which I believe incorporates the patch in this thread and I get the
> following trace:
>
>
> [11525.260456] ------------[ cut here ]------------
> [11525.260463] titan_top_gdsc status stuck at 'off'
> [11525.260475] WARNING: drivers/clk/qcom/gdsc.c:192 at gdsc_toggle_logic+0x20c/0x220, CPU#5: CameraManager/26167
> [11525.260486] Modules linked in: btrfs xor libblake2b raid6_pq ufs qnx4 hfsplus hfs minix ntfs msdos jfs nls_ucs2_utils xfs usbhid xt_connmark xt_conntrack xt_MASQUERADE xt_tcpudp xt_mark nft_compat x_tables nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 rfcomm algif_hash algif_skcipher af_alg snd_seq_dummy snd_hrtimer nf_tables bnep snd_soc_wsa883x q6prm_clocks q6apm_dai q6apm_lpass_dais snd_q6dsp_common q6prm qrtr_mhi ath11k_pci ath11k mac80211 cfg80211 mhi libarc4 qcom_spmi_adc_tm5 qcom_spmi_adc5 qcom_vadc_common qcom_spmi_temp_alarm pm8941_pwrkey industrialio snd_soc_sc8280xp snd_soc_wcd938x snd_soc_wcd938x_sdw snd_soc_qcom_sdw snd_soc_wcd_classh snd_soc_qcom_common snd_soc_wcd_common snd_soc_wcd_mbhc regmap_sdw snd_seq_midi snd_seq_midi_event qcom_iris snd_rawmidi qcom_camss v4l2_mem2mem soundwire_qcom videobuf2_dma_contig hci_uart videobuf2_dma_sg snd_seq videobuf2_memops btqca videobuf2_v4l2 btrtl snd_soc_lpass_va_macro snd_soc_lpass_tx_macro snd_soc_lpass_wsa_macro slimbus snd_soc_lpass_rx_macro
> [11525.260552] btbcm soundwire_bus ov5675 snd_soc_lpass_macro_common videobuf2_common snd_q6apm btintel qcomtee v4l2_fwnode snd_seq_device binfmt_misc snd_soc_hdmi_codec v4l2_async bluetooth videodev qcom_tsens qcom_edac mc snd_soc_core snd_compress ac97_bus snd_pcm_dmaengine snd_pcm fastrpc snd_timer tee qcom_cpufreq_hw pci_pwrctrl_pwrseq snd soundcore leds_gpio nls_iso8859_1 joydev input_leds sch_fq_codel efi_pstore dm_crypt leds_qcom_lpg xhci_plat_hcd panel_edp hid_multitouch hid_generic led_class_multicolor qcom_pbs qcom_pon reboot_mode pinctrl_spmi_gpio rtc_pm8xxx qcom_pm8008_regulator nvme nvme_core i2c_hid_of nvme_keyring nvme_auth i2c_hid_of_elan i2c_hid_acpi_prp0001 apr qcom_spmi_pmic i2c_hid qcom_pm8008 regmap_spmi hid rpmsg_ctrl dwc3 rpmsg_char qrtr_smd ulpi qcom_pd_mapper udc_core msm ucsi_glink pmic_glink_altmode typec_ucsi aux_hpd_bridge qcom_battmgr socinfo ubwc_config ocmem drm_gpuvm drm_exec gpu_sched spmi_pmic_arb spmi_devres drm_display_helper qcom_stats spmi cec dispcc_sc8280xp camcc_sc8280xp
> [11525.260623] phy_qcom_edp rc_core i2c_qcom_cci videocc_sm8350 i2c_qcom_geni phy_qcom_qmp_combo llcc_qcom gpi phy_qcom_qmp_usb gpucc_sc8280xp icc_bwmon aux_bridge drm_dp_aux_bus dwc3_qcom_legacy qcom_refgen_regulator nvmem_qfprom phy_qcom_snps_femto_v2 qcom_q6v5_pas qcom_pil_info qcom_common qcom_glink_smem qcom_glink qcom_q6v5 qcom_sysmon aes_ce_blk mdt_loader qrtr ghash_ce pinctrl_sc8280xp_lpass_lpi pmic_glink qcom_aoss gpio_sbu_mux pinctrl_lpass_lpi qcom_rpmh_regulator gf128mul lpasscc_sc8280xp qcom_smd phy_qcom_qmp_pcie pdr_interface qcom_hwspinlock icc_osm_l3 typec qcom_pdr_msg pwrseq_qcom_wcn qmi_helpers gpio_keys sm4 rpmsg_core thunderbolt pwm_bl smp2p qcom_smem fixed dm_mirror dm_region_hash dm_log dmi_sysfs autofs4
> [11525.260673] CPU: 5 UID: 1000 PID: 26167 Comm: CameraManager Kdump: loaded Tainted: G W 7.2.0+ #6 PREEMPT(lazy)
> [11525.260676] Tainted: [W]=WARN
> [11525.260677] Hardware name: LENOVO 21BX000WUK/21BX000WUK, BIOS N3HET88W (1.60 ) 03/14/2024
> [11525.260678] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> [11525.260680] pc : gdsc_toggle_logic+0x20c/0x220
> [11525.260682] lr : gdsc_toggle_logic+0x20c/0x220
> [11525.260685] sp : ffff80009157b5e0
> [11525.260685] x29: ffff80009157b5e0 x28: ffffc78a55f6fd28 x27: ffff0000883bd130
> [11525.260688] x26: 0000000000000001 x25: 0000000000000000 x24: ffffc78a5535bab0
> [11525.260691] x23: 0000000000000000 x22: 0000000000000000 x21: 0000000000000001
> [11525.260693] x20: 00000000ffffff92 x19: ffffc78a5535b690 x18: ffff80008ddc5108
> [11525.260696] x17: 0000000000000000 x16: 0000000000000000 x15: 0000fe3dc40ab158
> [11525.260699] x14: ffffffffffffffff x13: 0000000000000028 x12: 0101010101010101
> [11525.260701] x11: 7f7f7f7f7f7f7f7f x10: 0000000000000000 x9 : 0000000000000000
> [11525.260704] x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000
> [11525.260706] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000
> [11525.260708] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
> [11525.260712] Call trace:
> [11525.260713] gdsc_toggle_logic+0x20c/0x220 (P)
> [11525.260716] gdsc_enable+0x6c/0x2a8
> [11525.260718] _genpd_power_on+0xc0/0x208
> [11525.260721] genpd_power_on+0x10c/0x280
> [11525.260723] genpd_runtime_resume+0x154/0x358
> [11525.260726] __rpm_callback+0x54/0x210
> [11525.260729] rpm_callback+0x78/0x90
> [11525.260731] rpm_resume+0x588/0x768
> [11525.260734] __pm_runtime_resume+0x68/0xd8
> [11525.260736] rpm_get_suppliers+0x4c/0x1a8
> [11525.260739] __rpm_callback+0x180/0x210
> [11525.260741] rpm_callback+0x78/0x90
> [11525.260744] rpm_resume+0x588/0x768
> [11525.260746] __pm_runtime_resume+0x68/0xd8
> [11525.260748] csiphy_set_power+0x50/0x3a8 [qcom_camss]
> [11525.260760] pipeline_pm_power_one+0x16c/0x188 [videodev]
> [11525.260777] pipeline_pm_power+0x94/0x138 [videodev]
> [11525.260787] v4l2_pipeline_pm_use+0x60/0xb8 [videodev]
> [11525.260796] v4l2_pipeline_pm_get+0x20/0x48 [videodev]
> [11525.260805] video_prepare_streaming+0x28/0xa0 [qcom_camss]
> [11525.260813] vb2_core_streamon+0x60/0x1f0 [videobuf2_common]
> [11525.260819] vb2_ioctl_streamon+0x58/0xb8 [videobuf2_v4l2]
> [11525.260823] v4l_streamon+0x30/0x60 [videodev]
> [11525.260833] __video_do_ioctl+0x330/0x4c8 [videodev]
> [11525.260843] video_usercopy+0x374/0x898 [videodev]
> [11525.260853] video_ioctl2+0x24/0xb8 [videodev]
> [11525.260862] v4l2_ioctl+0x70/0xc8 [videodev]
> [11525.260872] __arm64_sys_ioctl+0xd4/0x168
> [11525.260875] invoke_syscall+0xa8/0x138
> [11525.260878] el0_svc_common.constprop.0+0x4c/0x140
> [11525.260880] do_el0_svc+0x28/0x58
> [11525.260881] el0_svc+0x48/0x310
> [11525.260885] el0t_64_sync_handler+0xc0/0x108
> [11525.260888] el0t_64_sync+0x1b8/0x1c0
> [11525.260890] ---[ end trace 0000000000000000 ]---
> [11525.260901] qcom-camss ac5a000.camss: Failed to power up pipeline: -110
>
>
> Slightly different trace, but it's the same WARN except:
>
> [11525.260463] titan_top_gdsc status stuck at 'off'
>
> instead of
>
> [ 15.408367] titan_top_gdsc status stuck at 'on'
>
> Does anyone have any insights to debugging this, or is anyone else
> testing on a Lenovo x13s recently?
>
> Before putting Ubuntu on this laptop, I used to run a branch from
> Jhovald (https://github.com/jhovold/linux/tree/wip/sc8280xp-6.16), which
> I always had success with, and I think at that point all the camera
> support was mainline, so I can likely go back to that and then bisect to
> master if that's worth the time.

I'll be honest that I'm not sure. Does reverting this patch fix the
issue? If so, leave it reverted, and check to see if adding the
CLK_IGNORE_UNUSED flag works for you via this patch?

https://lore.kernel.org/linux-arm-msm/20260701-sc8280xp-camcc-gdsc-clk-v1-1-ee28be1e8508@xxxxxxxxxx/

Brian