On 7.3 the in-tree IPU6 isys driver can be runtime-suspended while isys_probe() is still running, before it has set drvdata. The suspend callback then dereferences a NULL isys, oopses, and psys never probes, so /dev/ipu-psys0 is missing and the camera HAL fails with "Failed to open PSYS". Patch the isys runtime PM callbacks to return early when drvdata is not set yet. The patched module is built on its own from the kernel source and installed under updates/, so it overrides the in-tree one without having to rebuild the whole kernel.
23 lines
479 B
Diff
23 lines
479 B
Diff
--- a/drivers/media/pci/intel/ipu6/ipu6-isys.c
|
|
+++ b/drivers/media/pci/intel/ipu6/ipu6-isys.c
|
|
@@ -858,6 +858,9 @@
|
|
unsigned long flags;
|
|
int ret;
|
|
|
|
+ if (!isys)
|
|
+ return 0;
|
|
+
|
|
ret = ipu6_mmu_hw_init(adev->mmu);
|
|
if (ret)
|
|
return ret;
|
|
@@ -885,6 +888,9 @@
|
|
struct ipu6_isys *isys = dev_get_drvdata(dev);
|
|
unsigned long flags;
|
|
|
|
+ if (!isys)
|
|
+ return 0;
|
|
+
|
|
spin_lock_irqsave(&isys->power_lock, flags);
|
|
isys->power = 0;
|
|
spin_unlock_irqrestore(&isys->power_lock, flags);
|