intel / intel/ipu7-drivers

ov08x40 stuck at "waiting for fwnode graph endpoint" on kernel 7.2.x (Panther Lake / OVTI08F4) — works on 7.1.x

Open
#102 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
15
Forks
34
Avg merge
21h 11m
Merged PRs (30d)
1

Description

## Summary

On kernel 7.2.x the out-of-tree `ipu-acpi` no longer produces the sensor's fwnode graph endpoint, so `ov08x40` sits in deferred probe forever and never reaches the ISYS media graph. The exact same setup works on 7.1.8. Booting the in-tree staging driver instead gets the sensor bound — which points at `ipu-acpi` rather than at the sensor driver or the bridge concept.

This is a clean 7.1 → 7.2 regression boundary, which I did not find in #79 / #63 / #93 (see "Relation to existing issues" below).

## Environment

| | |
|---|---|
| Machine | Dell XPS 16 DA16260, Core Ultra X7 358H (Panther Lake), BIOS 1.10.1 |
| Sensor | OV08X40, ACPI `OVTI08F4:00`, behind Synaptics SVP7500 (`06cb:0701`) |
| Distro | Arch Linux (Omarchy 4.0.3), `intel-ipu7-camera` 1.0.5 |
| Driver source | ipu7-drivers 1.0.5 (DKMS), built cleanly for every kernel below |
| Kernels | `linux-ptl` 7.1.8-arch1-2 (works) vs 7.2.3-arch1-1 (broken); stock 7.2.3-arch1-3 behaves the same as 7.2.3-ptl |

## Symptom on 7.2.3

`ov08x40` binds to nothing and stays deferred:

```
# cat /sys/kernel/debug/devices_deferred
i2c-OVTI08F4:00 ov08x40: waiting for fwnode graph endpoint
```

The IPU7 side comes up and even reports the sensor, but ISYS never binds it:

```
intel-ipu7 0000:00:05.0: Found supported sensor OVTI08F4:00
intel-ipu7 0000:00:05.0: Connected 1 cameras
intel-ipu7 0000:00:05.0: CSE authenticate_run done
intel_ipu7_psys.psys intel_ipu7.psys.40: IPU psys probe done.
ov08x40 i2c-OVTI08F4:00: supply dovdd not found, using dummy regulator
<- nothing further; no "bind ov08x40", no "All sensor registration completed."
```

`media-ctl -p -d /dev/media0` shows 36 entities (ISYS Capture 0-31 + CSI2 0-3) and **no** `ov08x40` entity. `/sys/bus/i2c/devices/i2c-OVTI08F4:00/software_node` exists, so something was created, but the graph endpoint the sensor waits for is not reachable.

## Same machine on 7.1.8 — works

```
intel-ipu7 0000:00:05.0: Connected 1 cameras
ov08x40 i2c-OVTI08F4:00: supply dovdd not found, using dummy regulator
intel_ipu7_isys.isys intel_ipu7.isys.40: bind ov08x40 17-0036 nlanes is 2 port is 0
intel_ipu7_isys.isys intel_ipu7.isys.40: All sensor registration completed.
```

`entity 233: ov08x40 17-0036 (1 pad, 1 link)`, `/dev/v4l-subdev4`, camera streams normally. Nothing about the userspace, the ACPI tables or the hardware changed between the two boots — only the kernel.

## Data point: the in-tree staging driver gets further

Uninstalling the DKMS modules for that kernel (`dkms uninstall ipu7-drivers/1.0.5 -k 7.2.3-arch1-1-ptl`, which restores the archived in-tree `intel-ipu7.ko` / `intel-ipu7-isys.ko`) changes the picture:

- `ov08x40` **binds**, and the deferred-probe entry is **gone** — so the in-tree `ipu-bridge` does produce a usable endpoint for this sensor on 7.2.3
- ISYS still does not add the sensor to the media graph, and libcamera 0.7.2 reports `SimplePipeline: No sensor found for /dev/media0`, so this is not a complete workaround

A possibly relevant difference: the in-tree `ipu-bridge` carries `OVTI08F4` in its supported-sensor table

```
$ strings .../ipu-bridge.ko | grep -E '^(OVTI|HIMX)[0-9A-Z]{4}$' | sort -u | tr '\n' ' '
HIMX11B1 HIMX2170 HIMX2172 OVTI01A0 OVTI01AS OVTI02C1 OVTI02E1 OVTI05C1 OVTI08A1 OVTI08F4 OVTI13B1 OVTI2680 OVTI5675 OVTI8856 OVTIDB10
```

whereas the DKMS `ipu-acpi.ko` contains no `OVTI08F4` string at all (0 matches) and appears to rely purely on generic SSDB parsing.

## Reproduction

1. Panther Lake laptop with OV08X40 behind SVP7500, ipu7-drivers 1.0.5 via DKMS
2. Boot any 7.1.x kernel → camera works
3. Boot 7.2.x, same userspace and same DKMS source → `cat /sys/kernel/debug/devices_deferred` shows `ov08x40: waiting for fwnode graph endpoint`, no sensor entity in `/dev/media0`

## Relation to existing issues

- **#79** (Lunar Lake, OV02C10, kernel 7.0.12) analyses bridge-created software nodes not being reachable from the ISYS fwnode traversal. Very likely the same underlying fragility, but that report is ISYS-side (`no subdevice info provided`) and on a different platform/kernel; mine is sensor-side and has a sharp 7.1 → 7.2 boundary.
- **#63** is the same machine class (Panther Lake, OV08X40, SVP7500) but concerns PSYS deferring on `ipu7_bus_ready_to_probe`, not the sensor.
- **#93** concerns the `struct ipu7_bus_device` ABI break when mixing DKMS psys with in-kernel `intel_ipu7`.

Note: this machine also hit an unrelated userspace breakage at the same time — a `jsoncpp` soname bump
that stops Intel's HAL plugin from loading (tracked at omacom/omarchy#10837). That one is fixed here and
is not the cause of the sensor problem above: with the HAL working, the sensor still never binds on 7.2.x,
and on 7.1.8 it binds regardless.

Happy to test patches, collect additional traces (dynamic debug on `intel_ipu7_isys` produced no output here), or dump the ACPI SSDB/`_DSD` data for this sensor if that helps.

Contributor guide

Open the contributing guide

Research direction

Start by comparing the DKMS ipu-acpi and in-tree ipu-bridge behavior across the working 7.1.8 and failing 7.2.3 kernels. Inspect the ov08x40 deferred-probe message, the created software_node, and intel_ipu7_isys registration path; use the reported debugfs, media-ctl output, and available ACPI SSDB/_DSD data. Done means the sensor binds and appears in the ISYS media graph on 7.2.x.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, linux
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.