From: Sergey Lebedev <lsa.uz@pm.me>
To: "Vladimir V. Kondratyev" <vladimirkondratyev2@gmail.com>,
Marcel Holtmann <marcel@holtmann.org>,
Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Cc: Chandrashekar Devegowda <chandrashekar.devegowda@intel.com>,
Kiran K <kiran.k@intel.com>, Tedd Ho-Jeong An <tedd.an@intel.com>,
Paul Menzel <pmenzel@molgen.mpg.de>,
Arnd Bergmann <arnd@arndb.de>,
linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Bluetooth: btintel_pcie: fix stale cache in set_dxstate fallback check
Date: Sun, 30 Aug 2026 15:15:58 +0000 [thread overview]
Message-ID: <20260830151550.44687-1-lsa.uz@pm.me> (raw)
Hi Vladimir, Marcel, Luiz,
This patch is four months old and has had no reply other than the CI
bot. It fixes a real failure. Here is a report from the field and a
test of the patch itself.
Hardware: Microsoft Surface Pro 11 (Intel, Lunar Lake), Intel BE201,
8086:a876 rev 10, firmware timestamp 2026.8 buildtype 1 build 113003,
SHA1 0x08f159a0.
The failure, as it happened here on Ubuntu 7.0.0-28 before any
workaround existed:
Bluetooth: hci0: Timeout (200 ms) on alive interrupt for D2 entry, retry count 0
Bluetooth: hci0: Timeout (200 ms) on alive interrupt for D2 entry, retry count 1
Bluetooth: hci0: Timeout (200 ms) on alive interrupt for D2 entry, retry count 2
btintel_pcie 0000:00:14.7: PM: pci_pm_suspend(): btintel_pcie_suspend [btintel_pcie] returns -16
btintel_pcie 0000:00:14.7: PM: dpm_run_callback(): pci_pm_suspend returns -16
btintel_pcie 0000:00:14.7: PM: failed to suspend async: error -16
PM: Some devices failed to suspend, or early wake event detected
One device returning -EBUSY aborts the whole system suspend, so the
machine simply does not sleep. The workaround in use here since then
unloads btintel_pcie from a systemd sleep hook.
On the frequency I have to be honest rather than useful: it failed on
2 of the 3 suspends attempted before the workaround was installed, and
this week, on 7.0.0-30 with the workaround disabled, it succeeded 7
times out of 7 (3 of those with an LE scan running). Same firmware,
and no btintel_pcie change between the two kernels. So I cannot give
you a reproduction rate, and I am not going to invent one.
What I could do instead is exercise the exact path your patch touches,
deterministically. Method, so it can be judged:
- built v7.0 drivers/bluetooth/btintel_pcie.c out of tree against the
running kernel's headers, unmodified apart from the debug knob
below, and confirmed it loads and works;
- added a debug-only module parameter that returns from
btintel_pcie_msix_gp0_handler() before the boot_stage_cache
refresh, and only while alive_intr_ctxt is BTINTEL_PCIE_D0. That
leaves boot_stage_cache stale and gp0_received false, which is
precisely the state a genuinely missed alive interrupt leaves
behind, while the controller itself still reaches D3.
Without your patch, the emulated missed interrupt reproduces the
production failure exactly:
Timeout (200 ms) on alive interrupt for D2 entry, retry count 0
Timeout (200 ms) on alive interrupt for D2 entry, retry count 1
Timeout (200 ms) on alive interrupt for D2 entry, retry count 2
btintel_pcie 0000:00:14.7: PM: failed to suspend async: error -16
PM: Some devices failed to suspend, or early wake event detected
With your patch applied to that same build, and nothing else changed:
PM: suspend entry (s2idle)
Bluetooth: hci0: Timeout (200 ms) on alive interrupt for D2 entry, retry count 0
PM: suspend exit
One timeout, then the re-read observes D3, set_dxstate() returns 0, and
the system suspends and resumes normally. That is the difference the
two added lines make.
The debug knob is a test fixture, not a proposal; I am happy to send it
to anyone who wants to reproduce this.
Worth noting that btintel_pcie_set_dxstate() is byte-identical in v7.0
and v7.1-rc7, so this is current, not historical.
Tested-by: Sergey Lebedev <lsa.uz@pm.me>
I have the hardware and can re-test any revision of this patch.
Thanks,
Sergey
next reply other threads:[~2026-08-30 15:16 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-30 15:15 Sergey Lebedev [this message]
-- strict thread matches above, loose matches on Subject: below --
2026-05-07 20:34 [PATCH] Bluetooth: btintel_pcie: fix stale cache in set_dxstate fallback check Vladimir V. Kondratyev
2026-09-01 20:37 ` Vladimir V. Kondratyev
2026-09-02 5:35 ` Paul Menzel
2026-09-02 7:24 ` Sergey Lebedev
2026-09-02 8:38 ` Paul Menzel
2026-09-02 9:30 ` Sergey Lebedev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260830151550.44687-1-lsa.uz@pm.me \
--to=lsa.uz@pm.me \
--cc=arnd@arndb.de \
--cc=chandrashekar.devegowda@intel.com \
--cc=kiran.k@intel.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luiz.dentz@gmail.com \
--cc=marcel@holtmann.org \
--cc=pmenzel@molgen.mpg.de \
--cc=tedd.an@intel.com \
--cc=vladimirkondratyev2@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.