#1142004 linux-image-6.12.95+deb13-amd64: i915 probe wedges Xiaomi Mi Pad 2 during power init

Package:
src:linux
Source:
src:linux
Submitter:
Juan Jesús Fraire González
Date:
2026-07-13 17:07:02 UTC
Severity:
normal
Tags:
#1142004#5
Date:
2026-07-13 17:02:56 UTC
From:
To:
Summary
=======

On a Xiaomi Mi Pad 2 (DMI `Xiaomi Inc` / `Mipad2`) with an Intel
Cherryview GPU (`8086:22b0`, subsystem `1d72:1502`), the unmodified
Debian i915 module for kernel `6.12.95+deb13-amd64` consistently wedges
the entire platform during PCI probe and display power-domain
initialization.

This is not only a black screen and it is not a GPU engine hang. SSH and
userspace stop progressing. Recovery requires the ACPI WDAT watchdog or a
forced power cycle.

The issue has been reported upstream with the complete evidence set:

https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/16616

Affected Debian system
======================

Distribution: Debian GNU/Linux 13.6 (trixie), amd64
Kernel:       6.12.95+deb13-amd64
Linux pkg:    6.12.95-1
GPU:          Intel Cherryview 8086:22b0
Subsystem:    Xiaomi 1d72:1502
DMI vendor:   Xiaomi Inc
DMI product:  Mipad2
BIOS:         MIPad-P4.X64.0043.R03.1601112038
Panel:        MIPI DSI, 1536x2048
Secure Boot:  enabled

Reproduction
============

1. Boot without `nomodeset` and without blacklisting i915.
2. Allow i915 to bind to PCI device `0000:00:02.0`.
3. The complete platform wedges during i915 probe.

The same failure was reproduced from a multi-user boot by registering
i915 while keeping the GPU unbound and then binding the device manually.
SDDM and Xorg are not required. `disable_display=1` did not avoid the
early power-domain path.

Controlled localization
=======================

A WDAT-protected function-graph trace localized the last persisted
execution to:

    intel_power_domains_init_hw()
      chv_phy_control_init()
        intel_power_well_is_enabled()
          vlv_power_well_enabled()
            vlv_punit_read()
              vlv_sideband_rw()
                __intel_wait_for_register_fw()

A first narrow experiment that skipped only the later control-register
consistency read allowed probe progress, but then exposed a second
failure:

- `dpio-common-bc` timed out while being enabled;
- Display PHY 0 was reported as not powered;
- the driver continued into DPIO sideband accesses;
- a DPIO read returned `0xffffffff`;
- the complete platform wedged again.

Local proof of concept
======================

The attached proof-of-concept patch is restricted to Cherryview systems
whose DMI matches `Xiaomi Inc` / `Mipad2`. For the DPIO common B/C and D
power wells only, it returns before `is_enabled`, `enable`, and `disable`
hardware operations.

This is evidence and a local workaround, not an upstream-ready design.
The preferred fix may instead change the platform power-domain map,
place the quirk at another layer, or stop safely after a failed
transition.

Validation
==========

The local module was built specifically for
`6.12.95+deb13-amd64`, signed with a locally enrolled MOK, installed in
`/lib/modules/6.12.95+deb13-amd64/updates/i915.ko`, and added to the
matching initramfs without overwriting the Debian stock module.

Validated results:

- WDAT-protected full-display bind completed in about 3.1 seconds;
- 60-second protected soak passed;
- DSI-1 connected and enabled;
- native mode 1536x2048 at 60 Hz;
- i915drmfb active;
- SDDM, Xorg, and LXQt active;
- normal graphical boot passed;
- explicit GRUB recovery boot and return to normal boot passed;
- no known critical power-well timeout, unpowered-PHY, DPIO
  `0xffffffff`, GPU hang, or reset signature in the validated patched
  boot.

Safety and limitations
======================

The ordinary unpatched reproduction can wedge the complete SoC.
Please do not request an uncontrolled normal-boot reproduction.

A validated GRUB recovery route and a WDAT-protected staged-bind procedure
are available for testing a maintainer-selected kernel or patch.

The failure has not yet been reproduced on a recent upstream-built kernel
or drm-tip. External DP/HDMI and suspend/resume were not validated with
the local workaround. The local module must not be reused on another
kernel.

Attachments
===========

This report includes:

- public system information;
- complete dmesg from the working patched boot;
- local proof-of-concept patch;
- original WDAT/ftrace wedge localization;
- source-path analysis;
- patched full-display bind validation.

The upstream issue additionally contains the VBT binary, XRandR output,
and the complete initial evidence set.