From: Adam Stylinski <kungfujesus06@gmail.com>
To: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Cc: linux-pci@vger.kernel.org
Subject: Re: Kernel regression in 6.13
Date: Wed, 14 Jan 2026 18:40:30 -0500 [thread overview]
Message-ID: <aWgpbG1I6a2VChM4@thinkpad> (raw)
In-Reply-To: <aWgnZLSenkOiXiuM@thinkpad>
On Wed, Jan 14, 2026 at 06:31:51PM -0500, Adam Stylinski wrote:
> On Tue, Jan 13, 2026 at 07:15:11PM +0200, Ilpo Järvinen wrote:
> > On Mon, 5 Jan 2026, Adam Stylinski wrote:
> >
> > > On Fri, Dec 19, 2025 at 12:09:52PM -0500, Adam Stylinski wrote:
> > > > On Fri, Dec 19, 2025 at 05:28:09PM +0200, Ilpo Järvinen wrote:
> > > > > On Thu, 18 Dec 2025, Adam Stylinski wrote:
> > > > >
> > > > > > On Thu, Dec 18, 2025 at 03:54:32PM +0200, Ilpo Järvinen wrote:
> > > > > > > On Tue, 16 Dec 2025, Adam Stylinski wrote:
> > > > > > > > On Tue, Dec 16, 2025 at 04:14:10PM +0200, Ilpo Järvinen wrote:
> > > > > > > > > On Tue, 16 Dec 2025, Adam Stylinski wrote:
> > > > > > > > >
> > > > > > > > > > On Tue, Dec 16, 2025 at 11:49:45AM +0200, Ilpo Järvinen wrote:
> > > > > > > > > > > On Mon, 15 Dec 2025, Adam Stylinski wrote:
> > > > > > > > > > >
> > > > > > > > > > > > Hello,
> > > > > > > > > > > >
> > > > > > > > > > > > I seem to be encountering a regression that prevents my system from
> > > > > > > > > > > > booting. The regression occurred between 6.12 and 6.13. I've bisected
> > > > > > > > > > > > it to this commit:
> > > > > > > > > > > > 665745f274870c921020f610e2c99a3b1613519b
> > > > > > > > > > > >
> > > > > > > > > > > > Some info about this system: it's ancient. It's a Q9650 that I used as a
> > > > > > > > > > > > mythbackend/frontend for over a decade. This booting failure on newer
> > > > > > > > > > > > kernels finally forced my hand to buy new a "new" PCI Express based
> > > > > > > > > > > > tuner and upgrade the system into the modern age. It boots via MBR on a
> > > > > > > > > > > > P45 based chipset (A P5Q Plus board, to be precise). Given the age, I
> > > > > > > > > > > > chalked the issue up to possibly some failing hardware or memory
> > > > > > > > > > > > corruption that happened at compile time. I recently pulled the system
> > > > > > > > > > > > back out again to do some performance testing in zlib-ng only to find
> > > > > > > > > > > > out it hangs on the latest Ubuntu server ISO. I figured at this point it
> > > > > > > > > > > > wasn't something specific to my kernel config / compilation and it's
> > > > > > > > > > > > likely a regression. It's also old enough that I may be in the position
> > > > > > > > > > > > of the only one having this problem, so I took it upon myself to bisect
> > > > > > > > > > > > what was going on. Let me know if there's anything you'd like me to test
> > > > > > > > > > > > or try.
> > > > > > > > > > >
> > > > > > > > > > > Hi,
> > > > > > > > > > >
> > > > > > > > > > > Thanks for the report.
> > > > > > > > > > >
> > > > > > > > > > > In pcie_bwnotif_enable() there's pcie_capability_set_word() that enables
> > > > > > > > > > > bandwidth notifications:
> > > > > > > > > > >
> > > > > > > > > > > pcie_capability_set_word(port, PCI_EXP_LNKCTL,
> > > > > > > > > > > PCI_EXP_LNKCTL_LBMIE | PCI_EXP_LNKCTL_LABIE);
> > > > > > > > > > >
> > > > > > > > > > > So as the first step change those PCI_EXP_LNKCTL_LBMIE |
> > > > > > > > > > > PCI_EXP_LNKCTL_LABIE into 0 to see if not enabling the bandwitdh
> > > > > > > > > > > notification allows the system to come up.
> > > > > > > > > > >
> > > > > > > > > > > I suggest not trying this directly at the top of 665745f27487
> > > > > > > > > > > ("PCI/bwctrl: Re-add BW notification portdrv as PCIe BW controller")
> > > > > > > > > > > but on a kernel that is expected to have fixes since 665745f27487
> > > > > > > > > > > including those made to the other PCIe service drivers that share
> > > > > > > > > > > interrupt handler with bwctrl (so basically some stable version).
> > > > > > > > > > >
> > > > > > > > > > > If that works try to enable those bits one at a time.
> > > > > > > > > > >
> > > > > > > > > > > Please also send lspci -vvv.
> > > > > > > > > > >
> > > > > > > > > > > --
> > > > > > > > > > > i.
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > I'll try changing those values atop of the 6.18 tagged commit and let you know how it goes. Thanks for looking into this.
> > > > > > > > > > The privileged lspci -vv output is below:
> > > > > > > > > >
> > > > > > > > > > 00:00.0 Host bridge: Intel Corporation 4 Series Chipset DRAM Controller (rev 03)
> > > > > > > > > > Subsystem: ASUSTeK Computer Inc. P5Q Deluxe Motherboard
> > > > > > > > > > Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > > > > > > > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > > > > > > > > Latency: 0
> > > > > > > > > > Capabilities: [e0] Vendor Specific Information: Intel <unknown>
> > > > > > > > > >
> > > > > > > > > > 00:01.0 PCI bridge: Intel Corporation 4 Series Chipset PCI Express Root Port (rev 03) (prog-if 00 [Normal decode])
> > > > > > > > > > Subsystem: ASUSTeK Computer Inc. P5Q Deluxe Motherboard
> > > > > > > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > > > > > > > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > > > > > > Latency: 0, Cache Line Size: 32 bytes
> > > > > > > > > > Interrupt: pin A routed to IRQ 24
> > > > > > > > > > Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> > > > > > > > > > I/O behind bridge: c000-cfff [size=4K] [16-bit]
> > > > > > > > > > Memory behind bridge: fd000000-fe9fffff [size=26M] [32-bit]
> > > > > > > > > > Prefetchable memory behind bridge: c0000000-dfffffff [size=512M] [32-bit]
> > > > > > > > > > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
> > > > > > > > > > BridgeCtl: Parity- SERR+ NoISA- VGA+ VGA16+ MAbort- >Reset- FastB2B-
> > > > > > > > > > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > > > > > > > > > Capabilities: [88] Subsystem: ASUSTeK Computer Inc. P5Q Deluxe Motherboard
> > > > > > > > > > Capabilities: [80] Power Management version 3
> > > > > > > > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > > > > > > > > Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> > > > > > > > > > Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
> > > > > > > > > > Address: fee02000 Data: 0020
> > > > > > > > > > Capabilities: [a0] Express (v2) Root Port (Slot+), IntMsgNum 0
> > > > > > > > > > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > > > > > > > > > ExtTag- RBE+ TEE-IO-
> > > > > > > > > > DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
> > > > > > > > > > RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> > > > > > > > > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > > > > > > > > DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
> > > > > > > > > > LnkCap: Port #2, Speed 5GT/s, Width x16, ASPM L0s, Exit Latency L0s <256ns
> > > > > > > > > > ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp-
> > > > > > > > > > LnkCtl: ASPM Disabled; RCB 64 bytes, LnkDisable- CommClk+
> > > > > > > > > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- FltModeDis-
> > > > > > > > > > LnkSta: Speed 2.5GT/s, Width x16
> > > > > > > > > > TrErr- Train- SlotClk+ DLActive- BWMgmt+ ABWMgmt+
> > > > > > > > >
> > > > > > > > > At least this Root Port has both BWMgmt and ABWMgmt asserted (not a
> > > > > > > > > problem in itself, necessarily).
> > > > > > > > >
> > > > > > > > > If you get the system working by changing that set_word call, it's worth
> > > > > > > > > to check if these got reasserted (bwctrl tries to clear them right after
> > > > > > > > > the set word call but it could be they get reasserted).
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > i.
> > > > > > > >
> > > > > > > > Yes, I was able to boot after forcing those flags to zero. Here's lspci -vvv after booting into 6.18:
> > > > > > > >
> > > > > > > > 00:00.0 Host bridge: Intel Corporation 4 Series Chipset DRAM Controller (rev 03)
> > > > > > > > Subsystem: ASUSTeK Computer Inc. P5Q Deluxe Motherboard
> > > > > > > > Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > > > > > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > > > > > > Latency: 0
> > > > > > > > Capabilities: [e0] Vendor Specific Information: Intel <unknown>
> > > > > > > > lspci: Unable to load libkmod resources: error -2
> > > > > > > >
> > > > > > > > 00:01.0 PCI bridge: Intel Corporation 4 Series Chipset PCI Express Root Port (rev 03) (prog-if 00 [Normal decode])
> > > > > > > > Subsystem: ASUSTeK Computer Inc. P5Q Deluxe Motherboard
> > > > > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > > > > > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > > > > Latency: 0, Cache Line Size: 32 bytes
> > > > > > > > Interrupt: pin A routed to IRQ 24
> > > > > > > > Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> > > > > > > > I/O behind bridge: c000-cfff [size=4K] [16-bit]
> > > > > > > > Memory behind bridge: fd000000-fe9fffff [size=26M] [32-bit]
> > > > > > > > Prefetchable memory behind bridge: c0000000-dfffffff [size=512M] [32-bit]
> > > > > > > > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
> > > > > > > > BridgeCtl: Parity- SERR+ NoISA- VGA+ VGA16+ MAbort- >Reset- FastB2B-
> > > > > > > > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > > > > > > > Capabilities: [88] Subsystem: ASUSTeK Computer Inc. P5Q Deluxe Motherboard
> > > > > > > > Capabilities: [80] Power Management version 3
> > > > > > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > > > > > > Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> > > > > > > > Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
> > > > > > > > Address: fee02000 Data: 0020
> > > > > > > > Capabilities: [a0] Express (v2) Root Port (Slot+), IntMsgNum 0
> > > > > > > > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > > > > > > > ExtTag- RBE+ TEE-IO-
> > > > > > > > DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
> > > > > > > > RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> > > > > > > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > > > > > > DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
> > > > > > > > LnkCap: Port #2, Speed 5GT/s, Width x16, ASPM L0s, Exit Latency L0s <256ns
> > > > > > > > ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp-
> > > > > > > > LnkCtl: ASPM Disabled; RCB 64 bytes, LnkDisable- CommClk+
> > > > > > > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- FltModeDis-
> > > > > > > > LnkSta: Speed 2.5GT/s, Width x16
> > > > > > > > TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > > > > > > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > > > > > > > Slot #0, PowerLimit 75W; Interlock- NoCompl-
> > > > > > > > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > > > > > > > Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
> > > > > > > > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > > > > > > > Changed: MRL- PresDet+ LinkState-
> > > > > > > > RootCap: CRSVisible-
> > > > > > > > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > > > > > > > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > > > > > > > DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR-
> > > > > > > > 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
> > > > > > > > EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
> > > > > > > > FRS- LN System CLS Not Supported, TPHComp- ExtTPHComp- ARIFwd-
> > > > > > > > AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
> > > > > > > > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- ARIFwd-
> > > > > > > > AtomicOpsCtl: ReqEn- EgressBlck-
> > > > > > > > IDOReq- IDOCompl- LTR- EmergencyPowerReductionReq-
> > > > > > > > 10BitTagReq- OBFF Disabled, EETLPPrefixBlk-
> > > > > > > > LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
> > > > > > > > Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> > > > > > > > Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
> > > > > > > > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
> > > > > > > > EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
> > > > > > > > Retimer- 2Retimers- CrosslinkRes: unsupported, FltMode-
> > > > > > > > Capabilities: [100 v1] Virtual Channel
> > > > > > > > Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> > > > > > > > Arb: Fixed- WRR32- WRR64- WRR128-
> > > > > > > > Ctrl: ArbSelect=Fixed
> > > > > > > > Status: InProgress-
> > > > > > > > VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> > > > > > > > Arb: Fixed+ WRR32- WRR64- WRR128- TWRR128- WRR256-
> > > > > > > > Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01
> > > > > > > > Status: NegoPending- InProgress-
> > > > > > > > Capabilities: [140 v1] Root Complex Link
> > > > > > > > Desc: PortNumber=02 ComponentID=01 EltType=Config
> > > > > > > > Link0: Desc: TargetPort=00 TargetComponent=01 AssocRCRB- LinkType=MemMapped LinkValid+
> > > > > > > > Addr: 00000000fed19000
> > > > > > > > Kernel driver in use: pcieport
> > > > > > >
> > > > > > > Hi.
> > > > > > >
> > > > > > > Here's a quirk patch to disable bwctrl on this Root Port, assuming I
> > > > > > > guessed the PCI device ID for it right, please check it matches to 00:01.0
> > > > > > > (I should have asked lspci with -n to see the raw number but you can
> > > > > > > easily correct it yourself too before compiling the kernel).
> > > > > > >
> > > > > > > From 1e13651f8789fb9df060269a7b7c396211d910f8 Mon Sep 17 00:00:00 2001
> > > > > > > From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>
> > > > > > > Date: Thu, 18 Dec 2025 15:45:25 +0200
> > > > > > > Subject: [PATCH 1/1] PCI/bwctrl: Disable BW controller on Intel P45 using a quirk
> > > > > > > MIME-Version: 1.0
> > > > > > > Content-Type: text/plain; charset=UTF-8
> > > > > > > Content-Transfer-Encoding: 8bit
> > > > > > >
> > > > > > > The commit 665745f27487 ("PCI/bwctrl: Re-add BW notification portdrv as
> > > > > > > PCIe BW controller") was found to lead to a boot hang on a Intel P45
> > > > > > > system. Testing without setting Link Bandwidth Management Interrupt
> > > > > > > Enable (LBMIE) and Link Autonomous Bandwidth Interrupt Enable (LABIE)
> > > > > > > (PCIe r7.0, sec. 7.5.3.7) in bwctrl allowed system to come up.
> > > > > > >
> > > > > > > Add no_bw_notif into the struct pci_dev and quirk Intel P45 Root Port
> > > > > > > with it.
> > > > > > >
> > > > > > > Reported-by: Adam Stylinski <kungfujesus06@gmail.com>
> > > > > > > Link: https://lore.kernel.org/linux-pci/aUCt1tHhm_-XIVvi@eggsbenedict/
> > > > > > > Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
> > > > > > > ---
> > > > > > > drivers/pci/pcie/bwctrl.c | 3 +++
> > > > > > > drivers/pci/quirks.c | 10 ++++++++++
> > > > > > > include/linux/pci.h | 1 +
> > > > > > > 3 files changed, 14 insertions(+)
> > > > > > >
> > > > > > > diff --git a/drivers/pci/pcie/bwctrl.c b/drivers/pci/pcie/bwctrl.c
> > > > > > > index 36f939f23d34..4ae92c9f912a 100644
> > > > > > > --- a/drivers/pci/pcie/bwctrl.c
> > > > > > > +++ b/drivers/pci/pcie/bwctrl.c
> > > > > > > @@ -250,6 +250,9 @@ static int pcie_bwnotif_probe(struct pcie_device *srv)
> > > > > > > struct pci_dev *port = srv->port;
> > > > > > > int ret;
> > > > > > >
> > > > > > > + if (port->no_bw_notif)
> > > > > > > + return -ENODEV;
> > > > > > > +
> > > > > > > /* Can happen if we run out of bus numbers during enumeration. */
> > > > > > > if (!port->subordinate)
> > > > > > > return -ENODEV;
> > > > > > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> > > > > > > index b9c252aa6fe0..6ef42a2c4831 100644
> > > > > > > --- a/drivers/pci/quirks.c
> > > > > > > +++ b/drivers/pci/quirks.c
> > > > > > > @@ -1359,6 +1359,16 @@ static void quirk_transparent_bridge(struct pci_dev *dev)
> > > > > > > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82380FB, quirk_transparent_bridge);
> > > > > > > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TOSHIBA, 0x605, quirk_transparent_bridge);
> > > > > > >
> > > > > > > +/*
> > > > > > > + * Enabling Link Bandwidth Management Interrupts (BW notifications) can cause
> > > > > > > + * boot hangs on P45.
> > > > > > > + */
> > > > > > > +static void quirk_p45_bw_notifications(struct pci_dev *dev)
> > > > > > > +{
> > > > > > > + dev->no_bw_notif = 1;
> > > > > > > +}
> > > > > > > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e21, quirk_p45_bw_notifications);
> > > > > > > +
> > > > > > > /*
> > > > > > > * Common misconfiguration of the MediaGX/Geode PCI master that will reduce
> > > > > > > * PCI bandwidth from 70MB/s to 25MB/s. See the GXM/GXLV/GX1 datasheets
> > > > > > > diff --git a/include/linux/pci.h b/include/linux/pci.h
> > > > > > > index 864775651c6f..3a556cd749e3 100644
> > > > > > > --- a/include/linux/pci.h
> > > > > > > +++ b/include/linux/pci.h
> > > > > > > @@ -406,6 +406,7 @@ struct pci_dev {
> > > > > > > user sysfs */
> > > > > > > unsigned int clear_retrain_link:1; /* Need to clear Retrain Link
> > > > > > > bit manually */
> > > > > > > + unsigned int no_bw_notif:1; /* BW notifications may cause issues */
> > > > > > > unsigned int d3hot_delay; /* D3hot->D0 transition time in ms */
> > > > > > > unsigned int d3cold_delay; /* D3cold->D0 transition time in ms */
> > > > > > >
> > > > > > >
> > > > > > > base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
> > > > > > > --
> > > > > > > 2.39.5
> > > > > >
> > > > > > You are correct on the ID, however I'm having some issues applying that
> > > > > > patch. The pcie_bwnotif_probe functions do no return in 6.18, 6.13, or
> > > > > > even on master.
> > > > >
> > > > > I didn't get what you meant with that "no return" description.
> > > > >
> > > > > > Am I missing a patch or maybe you did that on top of a
> > > > > > WIP branch?
> > > > >
> > > > > The patch is made on top of 6.19-rc1. I don't see what would prevent
> > > > > applying it to 6.18 (in fact, I just tried and it applied cleanly on top
> > > > > of 6.18.2). Maybe it got corrupted somehow while you were saving the patch
> > > > > from email.
> > > > >
> > > > > I've attached a "backport" made on top of 6.18.2, it shouldn't get as
> > > > > easily corrupted while saving.
> > > > >
> > > > > --
> > > > > i.
> > > >
> > > > > From 17d1513a976d94d55dbeb497ac679db9182f7cb4 Mon Sep 17 00:00:00 2001
> > > > > From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>
> > > > > Date: Thu, 18 Dec 2025 15:45:25 +0200
> > > > > Subject: [PATCH 1/1] PCI/bwctrl: Disable BW controller on Intel P45 using a
> > > > > quirk
> > > > > MIME-Version: 1.0
> > > > > Content-Type: text/plain; charset=UTF-8
> > > > > Content-Transfer-Encoding: 8bit
> > > > >
> > > > > The commit 665745f27487 ("PCI/bwctrl: Re-add BW notification portdrv as
> > > > > PCIe BW controller") was found to lead to a boot hang on a Intel P45
> > > > > system. Testing without setting Link Bandwidth Management Interrupt
> > > > > Enable (LBMIE) and Link Autonomous Bandwidth Interrupt Enable (LABIE)
> > > > > (PCIe r7.0, sec. 7.5.3.7) in bwctrl allowed system to come up.
> > > > >
> > > > > Add no_bw_notif into the struct pci_dev and quirk Intel P45 Root Port
> > > > > with it.
> > > > >
> > > > > Reported-by: Adam Stylinski <kungfujesus06@gmail.com>
> > > > > Link: https://lore.kernel.org/linux-pci/aUCt1tHhm_-XIVvi@eggsbenedict/
> > > > > Signed-off-by: Ilpo J??rvinen <ilpo.jarvinen@linux.intel.com>
> > > > > ---
> > > > > drivers/pci/pcie/bwctrl.c | 3 +++
> > > > > drivers/pci/quirks.c | 10 ++++++++++
> > > > > include/linux/pci.h | 1 +
> > > > > 3 files changed, 14 insertions(+)
> > > > >
> > > > > diff --git a/drivers/pci/pcie/bwctrl.c b/drivers/pci/pcie/bwctrl.c
> > > > > index 36f939f23d34..4ae92c9f912a 100644
> > > > > --- a/drivers/pci/pcie/bwctrl.c
> > > > > +++ b/drivers/pci/pcie/bwctrl.c
> > > > > @@ -250,6 +250,9 @@ static int pcie_bwnotif_probe(struct pcie_device *srv)
> > > > > struct pci_dev *port = srv->port;
> > > > > int ret;
> > > > >
> > > > > + if (port->no_bw_notif)
> > > > > + return -ENODEV;
> > > > > +
> > > > > /* Can happen if we run out of bus numbers during enumeration. */
> > > > > if (!port->subordinate)
> > > > > return -ENODEV;
> > > > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> > > > > index b9c252aa6fe0..6ef42a2c4831 100644
> > > > > --- a/drivers/pci/quirks.c
> > > > > +++ b/drivers/pci/quirks.c
> > > > > @@ -1359,6 +1359,16 @@ static void quirk_transparent_bridge(struct pci_dev *dev)
> > > > > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82380FB, quirk_transparent_bridge);
> > > > > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TOSHIBA, 0x605, quirk_transparent_bridge);
> > > > >
> > > > > +/*
> > > > > + * Enabling Link Bandwidth Management Interrupts (BW notifications) can cause
> > > > > + * boot hangs on P45.
> > > > > + */
> > > > > +static void quirk_p45_bw_notifications(struct pci_dev *dev)
> > > > > +{
> > > > > + dev->no_bw_notif = 1;
> > > > > +}
> > > > > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e21, quirk_p45_bw_notifications);
> > > > > +
> > > > > /*
> > > > > * Common misconfiguration of the MediaGX/Geode PCI master that will reduce
> > > > > * PCI bandwidth from 70MB/s to 25MB/s. See the GXM/GXLV/GX1 datasheets
> > > > > diff --git a/include/linux/pci.h b/include/linux/pci.h
> > > > > index bf97d49c23cf..05aeee8c8844 100644
> > > > > --- a/include/linux/pci.h
> > > > > +++ b/include/linux/pci.h
> > > > > @@ -406,6 +406,7 @@ struct pci_dev {
> > > > > user sysfs */
> > > > > unsigned int clear_retrain_link:1; /* Need to clear Retrain Link
> > > > > bit manually */
> > > > > + unsigned int no_bw_notif:1; /* BW notifications may cause issues */
> > > > > unsigned int d3hot_delay; /* D3hot->D0 transition time in ms */
> > > > > unsigned int d3cold_delay; /* D3cold->D0 transition time in ms */
> > > > >
> > > > >
> > > > > base-commit: 78d82960b939df64cf7d26ca5ed34eb87f44c9e5
> > > > > --
> > > > > 2.39.5
> > > > >
> > > >
> > > > Yes, that patch applied cleanly. Looking back, I must have attempted to patch the wrong function by hand somehow, because that function does indeed return an integer. Sorry for the confusion - that fix definitely works.
> > > >
> > >
> > > Is there anything else you'd like me to test with this? I realize this
> > > is low priority and probably fell off your radar but it'd be nice to not
> > > have to remember to manually patch this each kernel bump. just let me
> > > know.
> >
> > Hi,
> >
> > Thanks for testing.
> >
> > Do you want to give your Tested-by tag for this? If yes, please post that
> > into that public thread. I'll then include it into the real submission of
> > the patch for inclusion (please note that if you give a tag, it will
> > become a public record in the kernel's git history).
> >
> > --
> > i.
>
> Sure thing.
> Tested-by: Adam Stylinski <kungfujesus06@gmail.com>
CC'ing list
prev parent reply other threads:[~2026-01-14 23:40 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-16 0:54 Kernel regression in 6.13 Adam Stylinski
2025-12-16 9:49 ` Ilpo Järvinen
2025-12-16 13:57 ` Adam Stylinski
2025-12-16 14:14 ` Ilpo Järvinen
2025-12-16 14:23 ` Adam Stylinski
2025-12-18 13:54 ` Ilpo Järvinen
[not found] ` <aURK74sGvdTGBMdb@eggsbenedict>
[not found] ` <3fd99997-a639-d971-e43e-bcc973aa6d04@linux.intel.com>
[not found] ` <aUWG4H3GH-k2ebpa@eggsbenedict>
[not found] ` <aVyBBOXXDEN8dses@thinkpad>
[not found] ` <2c078897-3a1e-a016-1d93-237cfb71fb94@linux.intel.com>
[not found] ` <aWgnZLSenkOiXiuM@thinkpad>
2026-01-14 23:40 ` Adam Stylinski [this message]
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=aWgpbG1I6a2VChM4@thinkpad \
--to=kungfujesus06@gmail.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=linux-pci@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox