Re: [tip:x86/urgent] x86/quirks: Add early quirk to reset Apple AirPort card

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

 



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



[Index of Archives]     [Linux Stable Commits]     [Linux Stable Kernel]     [Linux Kernel]     [Linux USB Devel]     [Linux Video &Media]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux