On Fri, Jun 10, 2016 at 02:59:57PM +0200, Ingo Molnar wrote: > * Lukas Wunner <lukas@xxxxxxxxx> wrote: > > On Fri, Jun 10, 2016 at 01:58:45PM +0200, Ingo Molnar wrote: > > > * Yinghai Lu <yinghai@xxxxxxxxxx> wrote: > > > > On 6/9/16, Lukas Wunner <lukas@xxxxxxxxx> wrote: > > > > > Well, the PCI core would also scan such a bus twice AFAICS. > > > > > And the performance penalty of scanning it twice seems negligible. > > > > > Early quirks can prevent double execution by setting QFLAG_APPLY_ONCE. > > > > > (Three quirks have set that flag already.) > > > > > > > > > > So I think this shouldn't be a concern. > > > > > > > > I don't know. I would like see sth like following, and that is simple > > > > enough. > > > > > > > > --- linux-2.6.orig/arch/x86/kernel/early-quirks.c > > > > +++ linux-2.6/arch/x86/kernel/early-quirks.c > > > > @@ -755,10 +755,16 @@ static int __init check_dev_quirk(int nu > > > > return 0; > > > > } > > > > > > > > +static unsigned char __initdata scanned[256]; > > > > static void __init early_pci_scan_bus(int bus) > > > > { > > > > int slot, func; > > > > > > > > + if (scanned[bus]) > > > > + return; > > > > + > > > > + scanned[bus] = 1; > > > > + > > > > /* Poor man's PCI discovery */ > > > > for (slot = 0; slot < 32; slot++) > > > > for (func = 0; func < 8; func++) { > > > > > > Ok, I removed the fix from tip:x86/urgent from the time being - could you > > > guys please send a full version once a final approach is agreed upon? > > > > IMHO the above patch to prevent double scanning isn't needed > > and less code is usually better. So my suggestion would be the > > patch as originally sent plus the delta fix I sent yesterday, > > either squashed or applied separately. > > > > Since Yinghai Lu seems to disagree I guess you as the maintainer > > will have to make a decision. :-) > > So I'd lean towards lower complexity, but since this is essentially > PCI code I'd like to defer to Bjorn on that detail. If I may add some additional information: drivers/pci/probe.c contains the following comment: /* * The bus might already exist for two reasons: Either we are * rescanning the bus or the bus is reachable through more than * one bridge. The second case can happen with the i450NX * chipset. */ So buses reachable through more than one bridge do exist, albeit they're assumedly rare. The question is, what are the consequences? (1) A minimal performance hit from scanning the bus multiple times. (2) Quirks for devices on that bus are executed multiple times. As said quirks can set QFLAG_APPLY_ONCE to prevent that. If it turns out this patch regresses because quirks are executed multiple times but shouldn't, that's a bug in those quirks and they need to be amended to set QFLAG_APPLY_ONCE. If we avoid scanning the bus multiple times, we'd essentially be papering over those bugs. Best regards, Lukas -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |