Re: [PATCH 5/5] usb: typec: ucsi: Clear UCSI_CCI_RESET_COMPLETE before reset

Sasha Levin
2024-12-15T18:34:14Z

On Wed, Mar 20, 2024 at 08:39:26AM +0100, Christian A. Ehrhardt wrote:
>Check the UCSI_CCI_RESET_COMPLETE complete flag before starting
>another reset. Use a UCSI_SET_NOTIFICATION_ENABLE command to clear
>the flag if it is set.

Hi Christian,

It looks like kernelci is able to trigger the warning added by this
commit:

[ 15.988528] WARNING: CPU: 0 PID: 8 at drivers/usb/typec/ucsi/ucsi.c:1377 ucsi_reset_ppm+0x1af/0x1c0 [typec_ucsi]
[ 15.999924] Modules linked in: snd_sof_pci_intel_cnl snd_sof_intel_hda_generic snd_sof_intel_hda_common snd_soc_hdac_hda snd_sof_intel_hda_mlink snd_sof_intel_hda snd_sof_pci snd_sof_xtensa_dsp snd_sof snd_sof_utils snd_soc_acpi_intel_match snd_soc_acpi snd_soc_acpi_intel_sdca_quirks snd_soc_sdca snd_soc_avs snd_soc_hda_codec snd_hda_ext_core btusb btrtl snd_soc_core intel_pmc_core_pltdrv iTCO_wdt intel_ish_ipc snd_compress btintel btbcm intel_pmc_bxt intel_pmc_core btmtk ucsi_acpi bluetooth gsmi wilco_charger wilco_ec_telem typec_ucsi intel_vsec pmt_telemetry roles pmt_class i2c_hid_acpi iwlmvm x86_pkg_temp_thermal snd_pcm_dmaengine iwlwifi watchdog i2c_hid intel_ishtp idma64 rtc_wilco_ec wilco_ec_debugfs uvcvideo processor_thermal_device_pci_legacy videobuf2_vmalloc elan_i2c intel_soc_dts_iosf videobuf2_memops uvc videobuf2_v4l2 videobuf2_common processor_thermal_device processor_thermal_wt_hint processor_thermal_rfim processor_thermal_wt_req processor_thermal_power_floor processor_thermal_mbox int3403_thermal
[ 16.000010] int340x_thermal_zone typec memconsole_coreboot memconsole vpd_sysfs wilco_ec pinctrl_cannonlake intel_vbtn int3400_thermal wilco_ec_events chromeos_pstore coreboot_table acpi_thermal_rel
[ 16.120093] CPU: 0 UID: 0 PID: 8 Comm: kworker/0:0 Not tainted 6.13.0-rc2 #1
[ 16.127972] Hardware name: Dell Inc. Arcada/Arcada, BIOS Google_Arcada.12200.103.0 07/29/2020
Linux debian-bookworm-amd64 6.13.0-rc2 #1 SMP PREEMPT_DYNAMIC Su[ 16.137499] Workqueue: events_long ucsi_init_work [typec_ucsi]
[ 16.150229] RIP: 0010:ucsi_reset_ppm+0x1af/0x1c0 [typec_ucsi]
[ 16.156654] Code: 44 24 04 a9 00 00 00 08 0f 85 36 ff ff ff 4c 89 74 24 10 48 8b 05 b1 fe f1 e1 49 39 c4 79 8d bb 92 ff ff ff e9 1b ff ff ff 90 <0f> 0b 90 e9 4c ff ff ff e8 74 72 f9 df 0f 1f 40 00 90 90 90 90 90
[ 16.177649] RSP: 0018:ffffa62bc0053dd0 EFLAGS: 00010206
[ 16.189709] RAX: 0000000008000000 RBX: 0000000000000000 RCX: 0000000000000002
[ 16.203899] RDX: 00000000fffba9c0 RSI: ffffa62bc0053dd4 RDI: ffff91f601610200
[ 16.211860] RBP: ffff91f601610200 R08: 0000000000000400 R09: 0000000000000001
[ 16.219831] R10: 0000000000000001 R11: 00000000000ee6b2 R12: 00000000fffba9be
[ 16.227801] R13: ffff91f6016102c0 R14: ffff91f60006f605 R15: ffff91f6001b8000
[ 16.235770] FS: 0000000000000000(0000) GS:ffff91f764400000(0000) knlGS:0000000000000000
[ 16.244810] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 16.251226] CR2: 00007f5bcc93b030 CR3: 000000022542e001 CR4: 00000000003706f0
[ 16.259195] Call Trace:
[ 16.261923] <TASK>
[ 16.264261] ? __warn+0x84/0x130
[ 16.267862] ? ucsi_reset_ppm+0x1af/0x1c0 [typec_ucsi]
[ 16.273600] ? report_bug+0x164/0x190
[ 16.277679] ? handle_bug+0x54/0x90
[ 16.281572] ? exc_invalid_op+0x17/0x70
[ 16.285853] ? asm_exc_invalid_op+0x1a/0x20
[ 16.290523] ? ucsi_reset_ppm+0x1af/0x1c0 [typec_ucsi]
[ 16.296261] ucsi_init_work+0xaa/0xb20 [typec_ucsi]
[ 16.301709] process_one_work+0x160/0x390
[ 16.306185] worker_thread+0x2a0/0x3b0
[ 16.310359] ? __pfx_worker_thread+0x10/0x10
[ 16.315126] kthread+0xc8/0xf0
[ 16.318533] ? __pfx_kthread+0x10/0x10
[ 16.322706] ret_from_fork+0x2c/0x50
[ 16.326687] ? __pfx_kthread+0x10/0x10
[ 16.330869] ret_from_fork_asm+0x1a/0x30
[ 16.335238] </TASK>

--
Thanks,
Sasha