On Sun, Feb 14, 2016 at 1:10 PM, Lukas Wunner <lukas@xxxxxxxxx> wrote: > /** > + * vga_switcheroo_client_probe_defer() - whether to defer probing a given GPU > + * @pdev: pci device of GPU > + * > + * Determine whether any prerequisites are not fulfilled to probe a given GPU. I'd phrase this as "Determine whether the vgaswitcheroor support is fully loaded" and drop the GPU part - it could be needed by snd drivers eventually too. > + * DRM drivers should invoke this early on in their ->probe callback and return > + * %-EPROBE_DEFER if it evaluates to %true. The GPU need not be registered with > + * vga_switcheroo_register_client() beforehand. s/need not/must not/ ... is your native language German by any chance? Aside from that ... should vga_switcheroo_register_client call this helper instead directly and return the appropriate -EDEFER_PROBE error? I realize for some drivers it might be way too late to unrol from that point on, but e.g. i915 already uses -EDEFER_PROBE. And calling it unconditionally will make sure that it's easier to notice when people forget this. So maybe call it both from the register functions, and export as a separate hook? And for i915 we should be able to remove that early check entirely. > + * > + * Return: %false unless one of the following applies: > + * > + * * On pre-retina MacBook Pros, the apple-gmux driver is needed to temporarily > + * switch DDC to the inactive GPU so that it can probe the panel's EDID. > + * Therefore return %true if gmux is built into the machine, @pdev is the > + * inactive GPU and the apple-gmux driver has not registered its handler > + * flags, signifying it has not yet loaded or has not finished initializing. I think the apple-specific comment here should be a separate comment right above the if condition below - it doesn't explain the interface, only one specific case. And we might grow more of those. -Daniel > + */ > +bool vga_switcheroo_client_probe_defer(struct pci_dev *pdev) > +{ > + if (apple_gmux_present() && pdev != vga_default_device() && > + !vgasr_priv.handler_flags) > + return true; > + > + return false; > +} > +EXPORT_SYMBOL(vga_switcheroo_client_probe_defer); > + -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel