mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
@ 2026-09-16 10:02 Thorsten Blum
  2026-10-03 11:49 ` Thorsten Blum
  2026-10-26 18:37 ` Bjorn Helgaas
  0 siblings, 2 replies; 12+ messages in thread
From: Thorsten Blum @ 2026-09-16 10:02 UTC (permalink / raw)
  To: Bjorn Helgaas, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin, Jesse Barnes
  Cc: Thorsten Blum, Lukas Wunner, Ingo Molnar, linux-pci, linux-kernel

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)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
  2026-09-16 10:02 [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus() Thorsten Blum
@ 2026-10-03 11:49 ` Thorsten Blum
  2026-10-03 11:55   ` Dave Hansen
  2026-10-26 18:37 ` Bjorn Helgaas
  1 sibling, 1 reply; 12+ messages in thread
From: Thorsten Blum @ 2026-10-03 11:49 UTC (permalink / raw)
  To: Bjorn Helgaas, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin
  Cc: Lukas Wunner, linux-pci, linux-kernel

On Wed, Sep 16, 2026 at 12:02:07PM +0200, Thorsten Blum wrote:
> 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(-)

Gentle ping. Is there anything you'd like to be changed here, or could
someone please pick this up? Thanks.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
  2026-10-03 11:49 ` Thorsten Blum
@ 2026-10-03 11:55   ` Dave Hansen
  2026-10-05  0:35     ` Thorsten Blum
  0 siblings, 1 reply; 12+ messages in thread
From: Dave Hansen @ 2026-10-03 11:55 UTC (permalink / raw)
  To: Thorsten Blum, Bjorn Helgaas, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, Dave Hansen, x86, H. Peter Anvin
  Cc: Lukas Wunner, linux-pci, linux-kernel

On 10/3/26 04:49, Thorsten Blum wrote:
> Gentle ping. Is there anything you'd like to be changed here, or could
> someone please pick this up? Thanks.

How has this patch been tested?

One of those links is from 2014.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
  2026-10-03 11:55   ` Dave Hansen
@ 2026-10-05  0:35     ` Thorsten Blum
  2026-10-12 18:28       ` Thorsten Blum
  0 siblings, 1 reply; 12+ messages in thread
From: Thorsten Blum @ 2026-10-05  0:35 UTC (permalink / raw)
  To: Dave Hansen
  Cc: Bjorn Helgaas, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin, Lukas Wunner, linux-pci,
	linux-kernel

On Sat, Oct 03, 2026 at 04:55:54AM -0700, Dave Hansen wrote:
> On 10/3/26 04:49, Thorsten Blum wrote:
> > Gentle ping. Is there anything you'd like to be changed here, or could
> > someone please pick this up? Thanks.
> 
> How has this patch been tested?

I tested it on an iMac13,1, and dmesg confirms the quirk is loaded, but
only when this patch is applied:

[    0.023863] Resetting Apple AirPort card (left enabled by EFI)

lspci also confirms the hole at 00:1c.1.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
  2026-10-05  0:35     ` Thorsten Blum
@ 2026-10-12 18:28       ` Thorsten Blum
  2026-10-25  8:07         ` Maciej W. Rozycki
  0 siblings, 1 reply; 12+ messages in thread
From: Thorsten Blum @ 2026-10-12 18:28 UTC (permalink / raw)
  To: Dave Hansen
  Cc: Bjorn Helgaas, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin, Lukas Wunner, linux-pci,
	linux-kernel

On Mon, Oct 05, 2026 at 02:35:47AM +0200, Thorsten Blum wrote:
> On Sat, Oct 03, 2026 at 04:55:54AM -0700, Dave Hansen wrote:
> > On 10/3/26 04:49, Thorsten Blum wrote:
> > > Gentle ping. Is there anything you'd like to be changed here, or could
> > > someone please pick this up? Thanks.
> > 
> > How has this patch been tested?
> 
> I tested it on an iMac13,1, and dmesg confirms the quirk is loaded, but
> only when this patch is applied:
> 
> [    0.023863] Resetting Apple AirPort card (left enabled by EFI)
> 
> lspci also confirms the hole at 00:1c.1.

Hi Dave,

Is there anything else I can do to help get this queued?

Thanks,
Thorsten

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
  2026-10-12 18:28       ` Thorsten Blum
@ 2026-10-25  8:07         ` Maciej W. Rozycki
  2026-10-25 17:50           ` H. Peter Anvin
  0 siblings, 1 reply; 12+ messages in thread
From: Maciej W. Rozycki @ 2026-10-25  8:07 UTC (permalink / raw)
  To: Thorsten Blum
  Cc: Dave Hansen, Bjorn Helgaas, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, Dave Hansen, x86, H. Peter Anvin, Lukas Wunner,
	linux-pci, linux-kernel

On Mon, 12 Oct 2026, Thorsten Blum wrote:

> Is there anything else I can do to help get this queued?

 FWIW, it's not unusual even if not common for multifunction devices to 
have "holes" in functions, e.g.:

07:00.0 Parallel controller [0701]: Oxford Semiconductor Ltd OXPCIe952 Parallel Port [1415:c118]
07:00.3 Serial controller [0700]: Oxford Semiconductor Ltd OXPCIe952 Native 950 UART [1415:c11b]

which is a chip the functions of which (one or two native or legacy serial 
ports, one parallel port, one GPIO interface) can be activated selectively 
with reset straps, however the resulting numeric 0-3 function assignments 
for individual interfaces are not necessarily contiguous, presumably to 
simplify internal decoding logic.

  Maciej

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
  2026-10-25  8:07         ` Maciej W. Rozycki
@ 2026-10-25 17:50           ` H. Peter Anvin
  0 siblings, 0 replies; 12+ messages in thread
From: H. Peter Anvin @ 2026-10-25 17:50 UTC (permalink / raw)
  To: Maciej W. Rozycki, Thorsten Blum
  Cc: Dave Hansen, Bjorn Helgaas, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, Dave Hansen, x86, Lukas Wunner, linux-pci,
	linux-kernel

On October 25, 2026 1:07:28 AM PDT, "Maciej W. Rozycki" <macro@orcam.me.uk> wrote:
>On Mon, 12 Oct 2026, Thorsten Blum wrote:
>
>> Is there anything else I can do to help get this queued?
>
> FWIW, it's not unusual even if not common for multifunction devices to 
>have "holes" in functions, e.g.:
>
>07:00.0 Parallel controller [0701]: Oxford Semiconductor Ltd OXPCIe952 Parallel Port [1415:c118]
>07:00.3 Serial controller [0700]: Oxford Semiconductor Ltd OXPCIe952 Native 950 UART [1415:c11b]
>
>which is a chip the functions of which (one or two native or legacy serial 
>ports, one parallel port, one GPIO interface) can be activated selectively 
>with reset straps, however the resulting numeric 0-3 function assignments 
>for individual interfaces are not necessarily contiguous, presumably to 
>simplify internal decoding logic.
>
>  Maciej

Indeed, or there might be multiple versions of a chip with different feature sets – often the same physical chip in different packages, so some features are fused or strapped off because they aren't pinned out.

The assumption that a multifunction service will have all its functions contiguous is absolutely false.

Acked-by: H. Peter Anvin (Rosaic) <hpa@zytor.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
  2026-09-16 10:02 [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus() Thorsten Blum
  2026-10-03 11:49 ` Thorsten Blum
@ 2026-10-26 18:37 ` Bjorn Helgaas
  2026-10-27 10:40   ` Thorsten Blum
  1 sibling, 1 reply; 12+ messages in thread
From: Bjorn Helgaas @ 2026-10-26 18:37 UTC (permalink / raw)
  To: Thorsten Blum
  Cc: Bjorn Helgaas, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin, Jesse Barnes, Lukas Wunner,
	Ingo Molnar, linux-pci, linux-kernel

On Wed, Sep 16, 2026 at 12:02:07PM +0200, Thorsten Blum wrote:
> 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>

Acked-by: Bjorn Helgaas <bhelgaas@google.com>

Let me know if you'd prefer this to be merged via the PCI tree.

> ---
> 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)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
  2026-10-26 18:37 ` Bjorn Helgaas
@ 2026-10-27 10:40   ` Thorsten Blum
  2026-10-27 20:13     ` Bjorn Helgaas
  0 siblings, 1 reply; 12+ messages in thread
From: Thorsten Blum @ 2026-10-27 10:40 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Bjorn Helgaas, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin, Jesse Barnes, Lukas Wunner,
	Ingo Molnar, linux-pci, linux-kernel

Hi Bjorn,

On Mon, Oct 26, 2026 at 01:37:18PM -0500, Bjorn Helgaas wrote:
> On Wed, Sep 16, 2026 at 12:02:07PM +0200, Thorsten Blum wrote:
> > 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>
> 
> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> 
> Let me know if you'd prefer this to be merged via the PCI tree.

Thanks for the Ack.

I'd appreciate it if you could take this through the PCI tree.

Thanks,
Thorsten

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
  2026-10-27 10:40   ` Thorsten Blum
@ 2026-10-27 20:13     ` Bjorn Helgaas
  2026-10-27 20:31       ` Thorsten Blum
  0 siblings, 1 reply; 12+ messages in thread
From: Bjorn Helgaas @ 2026-10-27 20:13 UTC (permalink / raw)
  To: Thorsten Blum
  Cc: Bjorn Helgaas, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin, Jesse Barnes, Lukas Wunner,
	Ingo Molnar, linux-pci, linux-kernel

On Tue, Oct 27, 2026 at 11:40:07AM +0100, Thorsten Blum wrote:
> Hi Bjorn,
> 
> On Mon, Oct 26, 2026 at 01:37:18PM -0500, Bjorn Helgaas wrote:
> > On Wed, Sep 16, 2026 at 12:02:07PM +0200, Thorsten Blum wrote:
> > > 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>
> > 
> > Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> > 
> > Let me know if you'd prefer this to be merged via the PCI tree.
> 
> Thanks for the Ack.
> 
> I'd appreciate it if you could take this through the PCI tree.

I don't mind doing that but would like to have an ack from the x86
folks.

I wish we didn't have this early-quirk thing at all because (a) it's
x86-only, and (b) it only works on domain 0, but obviously those are
known issues and we don't have a better way to solve them so I'm not
here to fight that battle.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
  2026-10-27 20:13     ` Bjorn Helgaas
@ 2026-10-27 20:31       ` Thorsten Blum
  2026-10-27 20:59         ` Bjorn Helgaas
  0 siblings, 1 reply; 12+ messages in thread
From: Thorsten Blum @ 2026-10-27 20:31 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Bjorn Helgaas, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin, Jesse Barnes, Lukas Wunner,
	Ingo Molnar, linux-pci, linux-kernel

On Tue, Oct 27, 2026 at 03:13:38PM -0500, Bjorn Helgaas wrote:
> On Tue, Oct 27, 2026 at 11:40:07AM +0100, Thorsten Blum wrote:
> > Hi Bjorn,
> > 
> > On Mon, Oct 26, 2026 at 01:37:18PM -0500, Bjorn Helgaas wrote:
> > > On Wed, Sep 16, 2026 at 12:02:07PM +0200, Thorsten Blum wrote:
> > > > 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>
> > > 
> > > Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> > > 
> > > Let me know if you'd prefer this to be merged via the PCI tree.
> > 
> > Thanks for the Ack.
> > 
> > I'd appreciate it if you could take this through the PCI tree.
> 
> I don't mind doing that but would like to have an ack from the x86
> folks.

Does the Acked-by: from H. Peter Anvin count?

https://lore.kernel.org/lkml/74A9835A-4B16-409E-B13A-4C34FAB5DC8E@zytor.com/

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus()
  2026-10-27 20:31       ` Thorsten Blum
@ 2026-10-27 20:59         ` Bjorn Helgaas
  0 siblings, 0 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2026-10-27 20:59 UTC (permalink / raw)
  To: Thorsten Blum
  Cc: Bjorn Helgaas, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin, Jesse Barnes, Lukas Wunner,
	Ingo Molnar, linux-pci, linux-kernel

On Tue, Oct 27, 2026 at 09:31:07PM +0100, Thorsten Blum wrote:
> On Tue, Oct 27, 2026 at 03:13:38PM -0500, Bjorn Helgaas wrote:
> > On Tue, Oct 27, 2026 at 11:40:07AM +0100, Thorsten Blum wrote:
> > > On Mon, Oct 26, 2026 at 01:37:18PM -0500, Bjorn Helgaas wrote:
> > > > On Wed, Sep 16, 2026 at 12:02:07PM +0200, Thorsten Blum wrote:
> > > > > 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>
> > > > 
> > > > Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> > > > 
> > > > Let me know if you'd prefer this to be merged via the PCI tree.
> > > 
> > > Thanks for the Ack.
> > > 
> > > I'd appreciate it if you could take this through the PCI tree.
> > 
> > I don't mind doing that but would like to have an ack from the x86
> > folks.
> 
> Does the Acked-by: from H. Peter Anvin count?
> 
> https://lore.kernel.org/lkml/74A9835A-4B16-409E-B13A-4C34FAB5DC8E@zytor.com/

I saw that and intended no slight to Peter, but MAINTAINERS says
"reviewer", suggesting he might want less responsibility.  I was
hoping for Thomas, Ingo, Boris, or Dave to step up, especially since
Dave did ask a question.

I'm guessing this is v7.5 material since 15650a2f644a dates to 2008
and abb2bafd295f dates to 2016?

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2026-10-27 20:59 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-16 10:02 [PATCH RESEND v2] x86/early-quirks: Scan all functions in early_pci_scan_bus() Thorsten Blum
2026-10-03 11:49 ` Thorsten Blum
2026-10-03 11:55   ` Dave Hansen
2026-10-05  0:35     ` Thorsten Blum
2026-10-12 18:28       ` Thorsten Blum
2026-10-25  8:07         ` Maciej W. Rozycki
2026-10-25 17:50           ` H. Peter Anvin
2026-10-26 18:37 ` Bjorn Helgaas
2026-10-27 10:40   ` Thorsten Blum
2026-10-27 20:13     ` Bjorn Helgaas
2026-10-27 20:31       ` Thorsten Blum
2026-10-27 20:59         ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®