psys: r78 writes to struct ipu7_bus_device fields absent from the in-kernel intel_ipu7 (ABI break for DKMS builds)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 42/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- c
- Lĩnh vực
- operating-systems
Hướng nghiên cứu
Bắt đầu bằng cách đọc drivers/media/pci/intel/ipu7/ipu7-bus.h, ipu7_psys_probe() và ipu_psys_task_request(), sau đó so sánh bố cục struct được intel_ipu7 sử dụng với bố cục của mô-đun psys DKMS. Tái hiện thiết bị /dev/ipu7-psys0 bị thiếu trên các phiên bản kernel đã được báo cáo. Hoàn tất nghĩa là các mô-đun xử lý an toàn sự không tương thích giao diện và psys либо probe thành công hoặc báo cáo một lỗi rõ ràng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Since the 2026-06-29 drop (0e8c71a, released as r76/r78), the out-of-tree psys driver is ABI-incompatible with an in-kernel intel_ipu7, and the failure is silent: /dev/ipu7-psys0 never appears and the RGB camera is gone.
The change
0e8c71a appends two fields to struct ipu7_bus_device in drivers/media/pci/intel/ipu7/ipu7-bus.h:
struct mutex acquire_fw_task_buffer_lock;
unsigned int (*get_running_fw_task_count)(struct ipu7_bus_device *adev);
ipu7_psys_probe() writes to the second:
adev->get_running_fw_task_count = ipu7_psys_get_running_fw_task_count;
and ipu_psys_task_request() takes the new mutex.
Why that breaks
struct ipu7_bus_device is allocated by intel_ipu7. On any distro shipping the staging intel_ipu7 with the kernel while psys comes from DKMS, the two disagree about the struct:
intel_ipu7 kernel/drivers/staging/media/ipu7/intel-ipu7.ko.zst
intel_ipu7_psys updates/dkms/intel-ipu7-psys.ko.zst
The kernel allocated the shorter struct; the DKMS psys was compiled against the longer one. So the probe-time assignment writes past the end of the allocation, and the mutex lock operates on memory that is not a mutex.
Verified against the running kernel module: intel-ipu7.ko contains ipu7_bus_ready_to_probe — a field of the same struct — and zero occurrences of either new field.
Reproduced
Two machines, independently:
- Dell XPS 16 DA16260, Panther Lake, CachyOS 7.2.0-rc4 — pinned at r74 (
24d8923), works. r76 previously produced a runtimepsys_ioctlGPF here. - Dell (reporter), CachyOS 7.1.4 — r78,
/dev/ipu7-psys0MISSING after a clean rebuild and reboot,intel_ipu7_psysloaded, no RGB camera. Details in #26.
This affects every Arch/CachyOS user on a recent kernel, since the staging intel_ipu7 landed in-tree while psys did not.
Related, same root cause
ipu7_psys_probe() also begins:
if (!adev->isp->ipu7_bus_ready_to_probe)
return -EPROBE_DEFER;
That is a read of a field on the same kernel-owned struct, and it fails the same way when the layouts disagree — psys defers forever while isys binds normally, because isys ships alongside intel_ipu7. That asymmetry makes the failure look selective and sends people debugging the wrong component entirely.
Suggestions
The out-of-tree psys reaching into a struct owned by a module it does not build alongside is fragile by construction. Options that would help:
- Version the interface. A version field or a size check on
struct ipu7_bus_device, so a mismatched psys refuses to probe with a clear message instead of corrupting memory. - Keep new state in psys.
get_running_fw_task_countand the FW-task mutex are psys concerns; storing them on the shared bus device is what creates the coupling. - Document the constraint. If the vendor tree is only supported when
intel_ipu7is also built from it, saying so in the README would save people a lot of time — the current failure gives no hint.
Happy to test patches; I have the hardware and a reproducer on two machines.
- Ngôn ngữ chính
- C
- Star
- 14
- Fork
- 39
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của intel/ipu7-drivers
-
MSI Prestige 16 AI+ (Lunar Lake): OV5675 not probed — TPS68470 “No board-data found for this model”Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
intel/ipu7-drivers#115 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
intel/ipu7-drivers#111 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
intel/ipu7-drivers#102 · 4 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
intel/ipu7-drivers#92 · 1 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
intel/ipu7-drivers#86 ·
Tất cả issue của intel/ipu7-drivers
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
elf_loader: Xtensa ignores the addend of R_XTENSA_GLOB_DAT / R_XTENSA_JMP_SLOT (C++ vtables)Có thể đã có người làm @diplfranzhoepfinger đã nhận hôm nay. Đang mởelf_loader
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
espressif/esp-iot-solution#813 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Status: Opened Type: Bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 1 ngày