Public bug reported: Source package: linux-signed-hwe-7.0 Ubuntu: 24.04.4 LTS Package: linux-image-7.0.0-31-generic 7.0.0-31.31~24.04.1 Hardware: Dell Precision 5690, BIOS 1.25.0, Meteor Lake IPU6-v4, ov02e10, IVSC SPI INTC10D0, swnode INTC10CF-4
Expected: after `systemctl hibernate` / S4 resume, the built-in MIPI camera works the same as after s2idle (sensor bound, frames from the IPU6 pipeline). Actual: session and NVIDIA restore; the camera does not. ov02e10 stays unbound, ivsc_csi logs `mei-csi probed without device fwnode!`. Loopback `/dev/video0` may still exist. Only a reboot restores the camera (stock). s2idle does not do this. === Summary === Same IPU6-after-S4 class as LP#2150370 (XPS 9320) and intel/ipu6-drivers#407, on a different platform and with a different immediate failure than INT343E `-EEXIST`. On this 5690, IPU6 CSE re-auths after hibernation, then: ``` vsc-tp spi-INTC10D0:00: wakeup firmware failed ret: -110 ov02e10 i2c-OVTI02E1:00: failed to check hwcfg: -517 ivsc_csi intel_vsc-92335fcf-…: mei-csi probed without device fwnode! ``` Two stacked kernel problems: 1. IVSC is power-cycled by S4. `mei_vsc` resume is a no-op (LP#2067364 — correct for S3/s2idle, where firmware stays up). GPIO wakeup of dead firmware is `-110`. IPU6 itself re-auths; IVSC does not. 2. A later MEI reset recreates mei-csi. `ipu_bridge_init()` early- returns because the IPU already has a software-node graph (restored from the image). The new mei-csi never gets `set_secondary_fwnode(INTC10CF-N)`. ov02e10 on the USB LJCA i2c adapter is a new client with no graph → `hwcfg -517`. Immediate I2C probe then hits `-5` until LJCA has been up ~1s. We did not hit INT343E `-EEXIST` unless IPU6 is unloaded around S4. Do not add a pre-hibernate IPU6 unload hook. === What we already tried (does not restore the camera) === - restart v4l2-relayd - IVSC SPI unbind/rebind (`vsc-tp` bounce) - intel_vsc platform unbind/bind (still `-110` then `-ENODEV`) - unloading IPU6 in a sleep hook (INT343E `-EEXIST`, matches LP#2150370) === Workaround (tested) === Out-of-tree DKMS overlay `mei-vsc-hibernate/1.9` attached (`mei-vsc- hibernate-1.9.tar.gz`). GPL-2.0, built against 7.0.0-31-generic. It overrides in-tree `mei-vsc.ko` and `ipu-bridge.ko` via `updates/`. - `mei-vsc`: arm IVSC firmware reload in `.freeze` (flag stored in the image); `.thaw` clears it (aborted hibernate). Do not `mei_restart` in `restore_early` (SPI/LJCA still down → `-108`). `.restore` often does not run on this platform device; deferred reload from `.complete`/`.resume` if still pending. Skip `mei_restart` if mei-csi is already bound (a later restart tears down a recovered CSI). - `ipu-bridge`: if the IPU graph already exists, reattach `INTC10CF-N` to mei-csi **only when that device lacks a fwnode or driver** (the S4 recreation case). Then restore `OVTI02E1-N` as the ACPI secondary on the new LJCA i2c client and delayed-probe ov02e10 (0.5s, then up to 5×1s) because T+0 I2C is `-5`. v1.8 ran that reattach on every cold boot (isys/psys each call `ipu_bridge_init` after the graph exists). That raced `isys_runtime_pm_suspend` (NULL `power_lock` oops, PSYS never bound). v1.9 is the gate above. Do not ship the ungated early-return. Userspace belt (optional): a systemd-sleep hook can skip `fw_reload` once ov02e10 is bound (~12s here; USB LJCA). Opening the camera before that will time out even though the kernel path is about to succeed. === Test process === A. Stock (no overlay), camera healthy after a normal boot: 1. Confirm sensor + CSI bound, e.g. ov02e10 and ivsc_csi have drivers in sysfs (do not need to open video0). 2. `systemctl hibernate` 3. On resume: same sysfs check. Stock: UNBOUND + the three dmesg lines above. Cheese/gst also fail. Reboot recovers. B. Overlay 1.9: 1. Build/install from the tarball (README inside); reboot so `updates/dkms/` modules load. 2. Confirm `modinfo ipu-bridge | grep filename` is `…/updates/dkms/ipu-bridge.ko`. Cold boot must **not** log `ipu_bridge: deferred reattach` if mei-csi already has a fwnode. PSYS must bind (`psys probe minor: 0`). No isys Oops. 3. Camera works (Howdy/Cheese/gst). 4. Hibernate once. Pass: session back; within ~12s ov02e10 bound; dmesg contains `ipu_bridge: attached INTC10CF-` / `ov02e10 bound after delay`; camera works without a reboot. First I2C `-5` then success is expected. 5. One more cold reboot: still no Oops, PSYS bound (the v1.8 regression check). Verified 2026-09-05 on this 5690, kernel 7.0.0-31-generic: hibernate 09:21:43, `hibernation exit` 09:22:57, CSI `device_attach -> 1` and ov02e10 bound 09:23:09, camera usable. Kernel is tainted with NVIDIA 595.84 and existing ipu6-drivers DKMS; overlay is additional unsigned modules. === Suggested upstream === - `drivers/misc/mei/platform-vsc.c`: S4-only firmware reload; keep S3 as the LP#2067364 no-op. - `drivers/media/pci/intel/ipu-bridge.c`: when the IPU graph already exists, attach `INTC10CF-N` to a mei-csi that has no secondary fwnode; restore sensor swnodes on a new LJCA i2c client; do not poke a healthy CSI on cold boot. The in-flight ipu-bridge idempotent-rebind series (LKML 2026-08) restores the **IPU** secondary fwnode (INT343E `-EEXIST`). It does not reload IVSC firmware and does not reattach the **mei-csi** swnode. Related: LP#2150370, LP#2067364, https://github.com/intel/ipu6-drivers/issues/407 ** Affects: linux-hwe-7.0 (Ubuntu) Importance: Undecided Status: New ** Tags: noble -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2166564 Title: IPU6/IVSC camera dead after hibernate (S4): mei-csi recreated without fwnode; ov02e10 unbound (Precision 5690) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux-hwe-7.0/+bug/2166564/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
