[PATCH 0/2] Bluetooth: btintel_pcie: two PM fixes, assembled as one series

From: Sergey Lebedev

Date: Wed Sep 09 2026 - 08:43:54 EST


Two patches already on this list fix different halves of the same fault, and
each leaves a real failure behind when applied alone. This assembles them into
one series. I am the submitter only - authorship, Fixes: tags and existing
trailers are unchanged.

1/2 Vladimir V. Kondratyev - re-read BOOT_STAGE_REG before the fallback
check, so a missed alive interrupt is
survivable
2/2 Ravindra (Intel) - fix the PM flow for S0ix, S3 and S4, which
among other things stops .thaw running an FLR

Both carry Fixes: e57362f4911b.

How this came about, so nobody has to take my word for it. Ravindra agreed to
the assembly on 2026-09-08, on the condition that authorship and the Fixes:
tags be preserved and that his patch be rebased on top of Vladimir's; both are
done:

https://lore.kernel.org/linux-bluetooth/IA1PR11MB786922E0DBE2CDC8FB00C5B6DAB12@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/

Vladimir has not replied to the message that said this would go out unless he
objected, and I am not treating that silence as agreement. Vladimir - it is
your patch. If you would rather post the series yourself, or not at all, say
so and I will drop this:

https://lore.kernel.org/linux-bluetooth/20260908102758.72135-1-lsa.uz@xxxxx/

Why one series
==============

They were posted separately and read as alternatives. They are not. The
evidence now comes from two machines, two controller generations, and two
distinct faults:

Surface Pro 11, Lunar Lake, BE201 8086:a876, s2idle. With a fixture that
drops the alive interrupt on demand, Ravindra's change alone leaves the
missed-interrupt case failing exactly as unpatched; Vladimir's re-read fixes
it; together they do not interfere. The same failure was also caught
spontaneously with injection disabled, one run in six.

https://lore.kernel.org/linux-bluetooth/20260902133836.11786-1-lsa.uz@xxxxx/

ThinkPad X9-15p, Panther Lake 8086:e476, hibernation. Ferenc Lengyel reported
hibernation aborting with -EBUSY after the image was already written, and
tested both patches:

stock 3 aborts in 10 cycles
1/2 alone 2 aborts in 5
1/2 + 2/2 0 aborts in 10

He then instrumented 1/2's re-read and found why 1/2 alone is not enough on
his machine: the register honestly reports the controller is not in D3,
because .thaw has just run an FLR that dropped it to ROM, and firmware has
not reloaded by the time .poweroff asks for D3 some nine seconds later. 2/2
removes that FLR from .thaw and keeps it on .restore. His own caveat, which
he states himself: ten clean cycles against a roughly one-in-three prior
failure rate is Fisher p ~ 0.06 - consistent and matching the mechanism,
not a large sample.

https://lore.kernel.org/linux-bluetooth/df180a89-b214-41b4-b8ce-c6ed6b12372f@xxxxxxxxxxx/

What the rebase changed
=======================

Nothing but context. 2/2 needed one hand adjustment: its header hunk removes
u8 pm_sx_event from struct btintel_pcie_data, and bluetooth-next has since
gained struct btintel_pcie_mdbgc mdbgc between dbgc and dmp_hdr, so the
three-line context no longer matched. The resulting diffstat is identical to
Ravindra's posting - 64 lines in the .c, 2 in the .h, 44 insertions and 22
deletions - and no reference to pm_sx_event is left anywhere in
drivers/bluetooth.

Built against bluetooth-next at 701ca7188 with W=1: no warnings from either
file. The code is otherwise byte-for-byte what was tested on both machines.

One thing for Paul: you gave a Reviewed-by on v3 of 1/2 at 14:36 UTC on
2026-09-03 and v4 went out at 19:22 without carrying it. I have not added it
back, since it is not mine to move, but you may want to re-give it here.

Originals:
1/2 https://lore.kernel.org/linux-bluetooth/20260903192245.135310-2-vladimirkondratyev2@xxxxxxxxx/
2/2 https://lore.kernel.org/linux-bluetooth/20260902042840.2432862-1-ravindra@xxxxxxxxx/

Ravindra (1):
Bluetooth: btintel_pcie: fix PM flow for S0ix, S3 and S4

Vladimir V. Kondratyev (1):
Bluetooth: btintel_pcie: fix stale cache in set_dxstate fallback check

drivers/bluetooth/btintel_pcie.c | 72 ++++++++++++++++++++++----------
drivers/bluetooth/btintel_pcie.h | 3 +-
2 files changed, 50 insertions(+), 25 deletions(-)

--
2.50.1 (Apple Git-155)