I tried to debug this issue, and I can report that with fixes, my webcam is now functional with kernels 6.17.0-14 and 6.17.0-19. Both kernels would break webcam functionality without the following fixes. The following info and the debug process is facilitated by LLM.
== Root Cause of the breakage == The regression is caused by CONFIG_INTEL_SKL_INT3472=m being enabled in 6.17.0-14 onward kernels, whereas it was previously unset in 6.17.0-12. All other camera-relevant configs are identical between the two versions. Hardware: Dell XPS 13 9350 (2024), Intel Lunar Lake Ultra 5 226V, OV02C10 camera sensor via IPU7 + USBIO bridge. == What happens == After the change in CONFIG_INTEL_SKL_INT3472, three issues compound to break the webcam: 1. The int3472-discrete driver now loads and claims the INT3472:00 ACPI device, but does not support GPIO type 0x02 used on IPU7/USBIO Lunar Lake platforms. It logs "GPIO type 0x02 unknown; the sensor may not work" but continues with a broken GPIO configuration, interfering with USBIO-based sensor power management. Because int3472 never calls acpi_dev_clear_dependencies() on failure, fw_devlink permanently blocks the sensor from probing. The ov02c10 driver returns EPROBE_DEFER (-517) indefinitely. 2. Even with int3472 fixed, ov02c10 probes the sensor over I2C before the IPU7 ISYS driver has powered it through USBIO, resulting in "chip id mismatch: 560243!=0". On 6.17.0-12, ISYS powered the sensor first and then bound ov02c10 at the correct time. On 6.17.0-14+, the probe order is wrong. 3. Ubuntu ships both an in-tree ov02c10.ko (kernel/drivers/media/i2c/) and an out-of-tree version (ubuntu/ipu7/). Since the new race condition introduced in 6.17.0-14 onward in (2) requires adding softdep to /etc/modprobe.d./ to ensure the correct probe order, the in-tree ov02c10.ko becomes an issue because it does not respect the softdep load ordering. On 6.17.0-12, with CONFIG_INTEL_SKL_INT3472 not set, none of these issues existed because: 1) fw_devlink skipped the INT3472 dependency entirely, 2) ISYS powered the sensor before ov02c10 is probed, 3) since no softdep fix is necessary, no conflict between in-tree and out-of-tree ov02c10.ko modules. == Fix that got webcam working again for me == 1. Patched drivers/platform/x86/intel/int3472/discrete.c with two changes: (a) made the unknown GPIO type default case in skl_int3472_handle_gpio_resources() return -EINVAL instead of continuing, so int3472 aborts probe and cleans up its GPIO resources; (b) added acpi_dev_clear_dependencies(adev) to the non-deferred failure path in skl_int3472_discrete_probe(), so fw_devlink unblocks dependent devices when int3472 fails. 2. Added "softdep ov02c10 pre: intel-ipu7-isys" to /etc/modprobe.d/ to ensure the ISYS driver loads and powers the sensor before ov02c10 probes. 3. Removed the in-tree ov02c10.ko from kernel/drivers/media/i2c/ so the out-of-tree version from ubuntu/ipu7/ (which respects the softdep) is the only one loaded. == Proposed fix == 1. Patch int3472-discrete so that unsupported GPIO types cause a clean probe failure with acpi_dev_clear_dependencies() called, rather than silently continuing and permanently blocking fw_devlink for dependent devices. 2. Resolve the ov02c10 probe race condition on IPU7/USBIO platforms. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2142995 Title: Webcam stopped working for Dell XPS 13 9350 after kernel 6.17.0-14 update To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+bug/2142995/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
