All of lore.kernel.org
 help / color / mirror / Atom feed
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

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