From: Thorsten Blum <blum@kernel.org>
To: Bjorn Helgaas <bhelgaas@google.com>,
Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
Jesse Barnes <jbarnes@hobbes.lan>
Cc: Thorsten Blum <blum@kernel.org>, Lukas Wunner <lukas@wunner.de>,
Ingo Molnar <mingo@elte.hu>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
Date: Wed, 16 Sep 2026 12:02:07 +0200 [thread overview]
Message-ID: <20260916100206.92853-2-blum@kernel.org> (raw)
early_pci_scan_bus() stops scanning a PCI slot when check_dev_quirk()
returns nonzero, which avoids probing functions 1-7 on single-function
devices, but also stops scanning when a function is absent on a
multifunction device.
This can skip early quirks on multifunction devices with holes in their
function numbering.
On iMac13,1 and iMac13,2, the BCM4331 AirPort card is behind root port
00:1c.3, also documented by the model list in commit abb2bafd295f
("x86/quirks: Add early quirk to reset Apple AirPort card").
Public lspci output for 2012 iMacs [1][2] shows that 00:1c.0, 00:1c.2,
00:1c.3 and 00:1c.4 are present, but 00:1c.1 is missing. The old code
stops at 00:1c.1 and never reaches 00:1c.3, so the AirPort reset quirk
is silently skipped on these machines.
Check function 0 first, and if it indicates a multifunction device, scan
functions 1-7 independently so that absent functions do not cause later
ones to be skipped.
Fixes: 15650a2f644a ("x86/PCI: fixup early quirk probing")
Cc: stable@vger.kernel.org
Signed-off-by: Thorsten Blum <blum@kernel.org>
Link: https://forum.libreelec.tv/thread/26799-wifi-not-detected-on-2012-imac-in-11-0/ [1]
Link: https://zoringroup.com/forum/5/7170/ [2]
Reviewed-by: Lukas Wunner <lukas@wunner.de>
---
Changes in v2:
- Add iMac13,x background information and supporting links (Lukas)
- v1: https://lore.kernel.org/r/20260807094601.263450-2-thorsten.blum@linux.dev/
---
arch/x86/kernel/early-quirks.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
index 6b6f32f40cbe..c641f38eca3a 100644
--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -795,12 +795,14 @@ static void __init early_pci_scan_bus(int bus)
int slot, func;
/* Poor man's PCI discovery */
- for (slot = 0; slot < 32; slot++)
- for (func = 0; func < 8; func++) {
- /* Only probe function 0 on single fn devices */
- if (check_dev_quirk(bus, slot, func))
- break;
- }
+ for (slot = 0; slot < 32; slot++) {
+ /* Only multifunction devices may have functions 1-7 */
+ if (check_dev_quirk(bus, slot, 0))
+ continue;
+
+ for (func = 1; func < 8; func++)
+ check_dev_quirk(bus, slot, func);
+ }
}
void __init early_quirks(void)
next reply other threads:[~2026-09-16 10:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-16 10:02 Thorsten Blum [this message]
2026-09-16 10:05 ` [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus() sashiko-bot
2026-10-03 11:49 ` Thorsten Blum
2026-10-03 11:55 ` Dave Hansen
2026-10-05 0:35 ` Thorsten Blum
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=20260916100206.92853-2-blum@kernel.org \
--to=blum@kernel.org \
--cc=bhelgaas@google.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jbarnes@hobbes.lan \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=mingo@elte.hu \
--cc=mingo@redhat.com \
--cc=tglx@kernel.org \
--cc=x86@kernel.org \
/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.