Re: [PATCH v3 3/8] platform/x86/intel: Add Primary to Sideband (P2SB) bridge support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 01, 2022 at 08:52:22PM +0200, Andy Shevchenko wrote:
> On Tue, Feb 01, 2022 at 12:14:01PM -0600, Bjorn Helgaas wrote:
> > On Fri, Jan 28, 2022 at 08:30:20PM +0200, Andy Shevchenko wrote:
> > > On Fri, Jan 07, 2022 at 11:11:08AM -0600, Bjorn Helgaas wrote:
> > > > On Fri, Jan 07, 2022 at 04:56:42PM +0200, Andy Shevchenko wrote:
> > > 
> > > ...
> > > 
> > > > My point is that the unhide is architecturally messed up.  The OS
> > > > runs on the platform as described by ACPI.  Devices that cannot be
> > > > enumerated are described in the ACPI namespace.
> > > 
> > > This device may or may not be _partially_ or _fully_ (due to being
> > > multifunctional) described in ACPI. I agree, that ideally the
> > > devices in question it has behind should be represented properly by
> > > firmware.  However, the firmwares in the wild for selected products
> > > / devices don't do that. We need to solve (work around) it in the
> > > software.
> > > 
> > > This is already done for a few devices. This series consolidates
> > > that and enables it for very known GPIO IPs.
> > 
> > Consolidating the code to unhide the device and size the BAR is fine.
> > 
> > I would prefer the PCI core to be involved as little as possible
> > because we're violating some key assumptions and we could trip over
> > those later.  We're assuming the existence of P2SB based on the fact
> > that we found some *other* device, we're assuming firmware isn't using
> > P2SB (may be true now, but impossible to verify), we're assuming the
> > P2SB BAR contains a valid address that's not used elsewhere but also
> > won't be assigned to anything.
> > 
> > > PCI core just provides a code that is very similar to what we need
> > > here. Are you specifically suggesting that we have to copy'n'paste
> > > that rather long function and maintain in parallel with PCI?
> > 
> > I think we're talking about __pci_read_base(), which is currently an
> > internal PCI interface.  This series adds pci_bus_info/warn/etc(),
> 
> The patch that adds those macros is good on its own, if you think so...
> I tried to submit it separately, but it was no response, so I don't know.

I'd rather not add pci_bus_info(), etc.  There are only a couple
places that could use it, and if we cared enough, I think those places
could avoid it by doing pci_alloc_dev() first.

What if you used pci_alloc_dev() and then called the current
__pci_read_base() on the pci_dev *?

The caller would still have the ugly #include path, but I guess you're
OK with that.

Since the P2SB BAR is not included in the host bridge _CRS, the
pcibios_bus_to_resource() done by __pci_read_base() won't work
correctly, so this only "works" on host bridges with no address
translation.  But that's also the case with your current series.
This is an example of one of the PCI core assumptions being violated,
so things can break.

Bjorn



[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux