linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [[RFC PATCH v1] 1/1] PCI: Add pci=nobbn to ignore ACPI _BBN method to override host bridge bus window
       [not found] <PSXP216MB043839BFAE70C02DB13DEA4A80310@PSXP216MB0438.KORP216.PROD.OUTLOOK.COM>
@ 2020-01-17 16:05 ` Bjorn Helgaas
  2020-01-18 13:39   ` Nicholas Johnson
  0 siblings, 1 reply; 2+ messages in thread
From: Bjorn Helgaas @ 2020-01-17 16:05 UTC (permalink / raw)
  To: Nicholas Johnson
  Cc: Thomas Gleixner, linux-kernel, x86, H. Peter Anvin,
	Rafael J. Wysocki, linux-acpi

[+cc Rafael, linux-acpi, start of thread at
https://lore.kernel.org/lkml/PSXP216MB0438F3D8C09957C6A45BC43D80580@PSXP216MB0438.KORP216.PROD.OUTLOOK.COM/T/#u]

On Fri, Jan 17, 2020 at 03:00:11PM +0000, Nicholas Johnson wrote:
> On Thu, Jan 16, 2020 at 11:13:13PM +0100, Thomas Gleixner wrote:
> > Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au> writes:
> > 
> > > Add pci=nobbn kernel parameter.
> > >
> > > Override the host bridge bus resource to [bus 00-ff] when specified.
> > 
> > Fine, but you completely fail to explain why this is useful and why
> > someone would utilize this command line parameter.
>
> There are motherboards with single PCIe root complex which give 
> significantly less than [bus 00-ff] via CRS. I own one with [bus 00-7f] 
> and have seen some with significantly less.
> 
> A user who wants to use more busses than the motherboard advertises will 
> want to use this kernel parameter, for instance if they have a lot of 
> PCIe switches or Thunderbolt 3 devices.

I don't think this is a good idea.  "pci=nocrs" was mainly useful to
work around Linux defects in handling _CRS methods.  I don't think we
have comparable defects in our handling of _BBN.

In your example, the BIOS is telling us the bridge leads to [bus
00-7f].  We don't know what is at [bus 80-ff].  Maybe that range is
valid and usable, and maybe it's not.  It could be routed to a
different host bridge, it could contain devices the BIOS uses for its
own purposes, it could be completely invalid.

If we *did* decide this is a good idea, "nobbn" is a misleading name.
_BBN evaluates to a single bus number, not a range.  In your example,
BIOS is supplying _BBN=0 and _CRS that contains [bus 00-7f].  "nobbn"
suggests that'd we'd ignore _BBN.  But this patch actually ignores the
bus number range from _CRS, so it has nothing to do with _BBN.

> This is similar to how we have pci=nocrs to override motherboards with 
> issues. The bus resource is not overridden by pci=nocrs, even though it 
> will usually come from the same method. However, I believe it would be 
> unwise to change pci=nocrs to include bus resource, as detailed in my 
> original RFC.

For reference, I think this original RFC was
https://lore.kernel.org/r/PSXP216MB04385B2C1BB518E5219C30CE80580@PSXP216MB0438.KORP216.PROD.OUTLOOK.COM

Bjorn

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

* Re: [[RFC PATCH v1] 1/1] PCI: Add pci=nobbn to ignore ACPI _BBN method to override host bridge bus window
  2020-01-17 16:05 ` [[RFC PATCH v1] 1/1] PCI: Add pci=nobbn to ignore ACPI _BBN method to override host bridge bus window Bjorn Helgaas
@ 2020-01-18 13:39   ` Nicholas Johnson
  0 siblings, 0 replies; 2+ messages in thread
From: Nicholas Johnson @ 2020-01-18 13:39 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Thomas Gleixner, linux-kernel, x86, H. Peter Anvin,
	Rafael J. Wysocki, linux-acpi

On Fri, Jan 17, 2020 at 10:05:02AM -0600, Bjorn Helgaas wrote:
> [+cc Rafael, linux-acpi, start of thread at
> https://lore.kernel.org/lkml/PSXP216MB0438F3D8C09957C6A45BC43D80580@PSXP216MB0438.KORP216.PROD.OUTLOOK.COM/T/#u]
> 
> On Fri, Jan 17, 2020 at 03:00:11PM +0000, Nicholas Johnson wrote:
> > On Thu, Jan 16, 2020 at 11:13:13PM +0100, Thomas Gleixner wrote:
> > > Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au> writes:
> > > 
> > > > Add pci=nobbn kernel parameter.
> > > >
> > > > Override the host bridge bus resource to [bus 00-ff] when specified.
> > > 
> > > Fine, but you completely fail to explain why this is useful and why
> > > someone would utilize this command line parameter.
> >
> > There are motherboards with single PCIe root complex which give 
> > significantly less than [bus 00-ff] via CRS. I own one with [bus 00-7f] 
> > and have seen some with significantly less.
> > 
> > A user who wants to use more busses than the motherboard advertises will 
> > want to use this kernel parameter, for instance if they have a lot of 
> > PCIe switches or Thunderbolt 3 devices.
> 
> I don't think this is a good idea.  "pci=nocrs" was mainly useful to
> work around Linux defects in handling _CRS methods.  I don't think we
> have comparable defects in our handling of _BBN.
What about motherboards with poor implementations, where they have 
possibly not given us all the busses solely becuase they thought nobody 
would need them all? Ideally, Linux would not have to deal with broken 
hardware - but yet, the world is full of poor implementations, hence the 
need for quirks.

> 
> In your example, the BIOS is telling us the bridge leads to [bus
> 00-7f].  We don't know what is at [bus 80-ff].  Maybe that range is
> valid and usable, and maybe it's not.  It could be routed to a
> different host bridge, it could contain devices the BIOS uses for its
> own purposes, it could be completely invalid.
If it is unusable, the system crashes and the user ceases to use the 
option. The option works wonders for me - no issues. This is the same as 
nocrs, which can lead to us using "unusable" memory from hidden devices. 
It is a risk, but there are people happy to live life on the edge, and 
giving them that option can enable those people to do what they want. 
Those who value stability will not use such options.

> 
> If we *did* decide this is a good idea, "nobbn" is a misleading name.
> _BBN evaluates to a single bus number, not a range.  In your example,
> BIOS is supplying _BBN=0 and _CRS that contains [bus 00-7f].  "nobbn"
> suggests that'd we'd ignore _BBN.  But this patch actually ignores the
> bus number range from _CRS, so it has nothing to do with _BBN.
Perhaps pci=nocrsbus - this is up for discussion. I am aware that it 
normally comes from crs but could not come up with a good parameter 
name.

> 
> > This is similar to how we have pci=nocrs to override motherboards with 
> > issues. The bus resource is not overridden by pci=nocrs, even though it 
> > will usually come from the same method. However, I believe it would be 
> > unwise to change pci=nocrs to include bus resource, as detailed in my 
> > original RFC.
> 
> For reference, I think this original RFC was
> https://lore.kernel.org/r/PSXP216MB04385B2C1BB518E5219C30CE80580@PSXP216MB0438.KORP216.PROD.OUTLOOK.COM
> 
> Bjorn

Regards,
Nicholas

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

end of thread, other threads:[~2020-01-18 13:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <PSXP216MB043839BFAE70C02DB13DEA4A80310@PSXP216MB0438.KORP216.PROD.OUTLOOK.COM>
2020-01-17 16:05 ` [[RFC PATCH v1] 1/1] PCI: Add pci=nobbn to ignore ACPI _BBN method to override host bridge bus window Bjorn Helgaas
2020-01-18 13:39   ` Nicholas Johnson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).