From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Return-Path: Date: Wed, 24 Aug 2016 19:23:46 +0200 (CEST) From: Thomas Gleixner To: Jan Kiszka cc: Bjorn Helgaas , LKML , x86@kernel.org, Bjorn Helgaas , linux-pci@vger.kernel.org, Benedikt Spranger , Lukas Wunner Subject: Re: x86/PCI: Scan all functions during probing In-Reply-To: <73341fe4-9017-7dcb-7ae3-a993428c11fc@siemens.com> Message-ID: References: <20160809134452.GA27301@localhost> <20160818203348.GK27353@localhost> <73341fe4-9017-7dcb-7ae3-a993428c11fc@siemens.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII List-ID: On Wed, 24 Aug 2016, Jan Kiszka wrote: > On 2016-08-24 04:39, Thomas Gleixner wrote: > > On Thu, 18 Aug 2016, Bjorn Helgaas wrote: > >> I looked up the spec: PCI (not PCIe) r3.0, sec 3.2.2.3.4, says: > >> > >> A single-function device may optionally respond to all function > >> numbers as the same function or may ... respond only to function 0 > >> and not respond to the other function numbers. > >> > >> I'm concerned that a single-function device that responds to all > >> function numbers might break with this patch. > >> > >> [multi-function devices] are also required to always implement > >> function 0 in the device. > >> > >> Here's the reason we can advance by 8 in the "Go find them" loop. > >> > >> If a single function device is detected (i.e., bit 7 in the Header > >> Type register of function 0 is 0), no more functions for that Device > >> Number will be checked. If a multi-function device is detected > >> (i.e., bit 7 in the Header Type register of function 0 is 1), then > >> all remaining Function Numbers will be checked. > >> > >> This patch does the opposite of what the first sentence recommends. > > > > Fair enough. We'll need to find a way to deal with that in jailhouse then. > > Wouldn't it also be an option to have this fine-grained scanning only > activated if we detect to run over Jailhouse (which we have to anyway)? > Such code hasn't been proposed for upstream yet, but we will eventually. That might be an option. Thanks, tglx