On Tue, Oct 20, 2026 at 01:01:55AM -0700, sushi wrote:
> >Synopsis:
> inteldrm page fault panic on boot with Intel Arc A550M
> 
> >Category:    kernel
> >Environment:
>       System      : OpenBSD 8.0
>       Details     : OpenBSD 8.0 (GENERIC.MP) #84: Tue Oct  6 23:13:49 MDT 2026
>                        
> [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> 
>       Architecture: OpenBSD.amd64
>       Machine     : amd64
> >Description:
> During an upgrade from OpenBSD 7.9 to 8.0, the system panics consistently
> during boot while initializing the inteldrm / i915 driver stack. The crash
> occurs specifically during backlight configuration.
> >How-To-Repeat:
> Attempt to boot OpenBSD 8.0 normally with 'inteldrm' enabled on a system
> utilizing an Intel Arc A550M graphics card.
> >Fix:
> workaround:
> boot> -c
> UKC> disable inteldrm
> UKC> quit
> 
> [Crash Traceback Summary]
> kernel: page fault trap, code=0
> stopped at drm_connector_list_iter_next+0x70
>   drm_connector_list_iter_next(...)
>   inteldrm_native_backlight(...) at inteldrm_native_backlight
>   inteldrm_init_backlight(...) at inteldrm_init_backlight
>   i915_driver_probe(...) at i915_driver_probe
>   inteldrm_attachhook(...) at inteldrm_attachhook
>   config_process_deferred_mountroot()
>   main() at main

The connector state is not initialised when the device has no
display controller.

Try this:

Index: sys/dev/pci/drm/i915/i915_driver.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_driver.c,v
diff -u -p -r1.37 i915_driver.c
--- sys/dev/pci/drm/i915/i915_driver.c  5 Oct 2026 08:20:26 -0000       1.37
+++ sys/dev/pci/drm/i915/i915_driver.c  21 Oct 2026 05:42:29 -0000
@@ -2582,9 +2582,14 @@ void
 inteldrm_native_backlight(struct drm_i915_private *dev_priv)
 {
        struct drm_device *dev = &dev_priv->drm;
+       struct intel_display *display = dev_priv->display;
        struct drm_connector_list_iter conn_iter;
        struct drm_connector *connector;
 
+       /* connector state not initialised with no crtc */
+       if (!intel_display_device_present(display))
+               return;
+
        drm_connector_list_iter_begin(dev, &conn_iter);
        drm_for_each_connector_iter(connector, &conn_iter) {
                struct intel_connector *intel_connector;
@@ -2628,10 +2633,15 @@ inteldrm_firmware_backlight(struct drm_i
     struct wsdisplay_param *dp)
 {
        struct drm_device *dev = &dev_priv->drm;
+       struct intel_display *display = dev_priv->display;
        struct drm_connector_list_iter conn_iter;
        struct drm_connector *connector;
        struct backlight_properties props;
        struct backlight_device *bd;
+
+       /* connector state not initialised with no crtc */
+       if (!intel_display_device_present(display))
+               return;
 
        memset(&props, 0, sizeof(props));
        props.type = BACKLIGHT_FIRMWARE;

Reply via email to