Update after more S4 testing on the same Precision 5690 /
7.0.0-31-generic.

The 1.9 overlay attached here restores the camera after the **first**
hibernate, then Oopses on the **second**. Do not use 1.9–1.15 for
repeated S4.

Root cause of that second-S4 Oops (not the stock mei-csi fwnode miss):

After S4, LJCA/ACPI spawn a new i2c client for OVTI02E1. Restoring
software node `OVTI02E1-N` as that ACPI device’s `primary->secondary`
poisons ACPI PM QoS sysfs. The next teardown NULL-dereferences:

```
BUG: kernel NULL pointer dereference, address: 0000000000000008
RIP: kernfs_find_and_get_ns
  sysfs_unmerge_group
  pm_qos_sysfs_remove_resume_latency
  acpi_dev_pm_detach
  i2c_unregister_device
```

That happens either on USB restore (`ljca_disconnect`, v1.9–1.11) or on
freeze unregister in `systemd-sleep` (v1.14–1.15). Recreating the client
vs `device_attach` on the ACPI client does not matter. Cold-boot freeze-
unregister of the original ACPI client is safe; any **post-S4** ACPI
client that has had that secondary set is not.

v1.16 (attached, `mei-vsc-hibernate-1.16.tar.gz`) stops setting ACPI
`primary->secondary` after S4. It drops the ACPI i2c client (no swnode
on it), `acpi_device_set_enumerated(OVTI02E1)`, and instantiates a non-
ACPI client (`type = "ov02e10"`, swnode `OVTI02E1-N`, `companion=none`).
Freeze unregisters that swnode client. ov02e10 must also match
`i2c:ov02e10` (ACPI HID only is not enough); small patch in the tarball.

Verified 2026-09-06, same boot, overlay `mei-vsc-hibernate/1.16`:

- S4 #1 22:54 → 22:57: `drop ACPI i2c` then `swnode i2c client 17-0010 
companion=none`; ov02e10 bound as `17-0010`. Freeze WARNed `refcount_t: 
underflow` on unregister of the **cold-boot** ACPI client (`put_device` then 
`i2c_unregister_device`); kernel continued. Not the 0x8 Oops.
- S4 #2 23:02 → 23:04: `unregister swnode i2c 17-0010 before S4` (no WARN) → 
same `companion=none` on resume; ov02e10 bound; ISYS/PSYS/CSI up; no Oops.

Pass/fail is ov02e10 + ivsc_csi + IPU6 isys/psys in sysfs. A USB webcam
is not a pass.

Suggested upstream addition to the original report: when reattaching
sensor swnodes after S4, do **not** hang `OVTI02E1-N` on the ACPI i2c
client’s secondary. Use a non-ACPI i2c client whose primary fwnode is
the software node, and give ov02e10 an `i2c_device_id`. The IVSC S4
firmware reload and mei-csi `INTC10CF-N` reattach from the original
report are still required; they are not enough by themselves.

Known leftover: that first-freeze refcount WARN. Harmless here; not a
1.16 blocker.

-- 
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

Reply via email to