From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tony Lindgren Subject: Re: [PATCH 1/5] pinctrl: core: Use delayed work for hogs Date: Tue, 15 Nov 2016 07:41:24 -0800 Message-ID: <20161115154124.GI4082@atomide.com> References: <20161025210221.9150-1-tony@atomide.com> <20161025210221.9150-2-tony@atomide.com> <20161111202650.GI7138@atomide.com> <20161114205243.GU7138@atomide.com> <20161114220824.GC4082@atomide.com> <20161115004703.GG4082@atomide.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Linus Walleij Cc: Haojian Zhuang , Masahiro Yamada , Grygorii Strashko , Nishanth Menon , "linux-gpio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Linux-OMAP List-Id: devicetree@vger.kernel.org * Linus Walleij [161114 22:53]: > On Tue, Nov 15, 2016 at 1:47 AM, Tony Lindgren wrote: > > > 8< -------------------------------- > > From tony Mon Sep 17 00:00:00 2001 > > From: Tony Lindgren > > Date: Tue, 25 Oct 2016 08:33:35 -0700 > > Subject: [PATCH] pinctrl: core: Use delayed work for hogs > > > > Having the pin control framework call pin controller functions > > before it's probe has finished is not nice as the pin controller > > device driver does not yet have struct pinctrl_dev handle. > > > > Let's fix this issue by adding deferred work for late init. This is > > needed to be able to add pinctrl generic helper functions that expect > > to know struct pinctrl_dev handle. Note that we now need to call > > create_pinctrl() directly as we don't want to add the pin controller > > to the list of controllers until the hogs are claimed. We also need > > to pass the pinctrl_dev to the device tree parser functions as they > > otherwise won't find the right controller at this point. > > > > Signed-off-by: Tony Lindgren > > This looks a lot better! > > So if I understand correctly, we can guarantee that the delayed > work will not execute until the device driver probe() has finished, > and it *will* execute immediately after that? > > So: > - Device driver probes > - Delayed work is called > - Next initcall > > I'm not 100% familiar with how delayed work works... :/ Yeah well the delayed work gets scheduled for next jiffy but may be pre-empted as it runs in process context. So in the worst case it could that we still may need to fix few drivers to support -EPROBE_DEFER. I wonder if we should check for hogs in probe already and only defer if hogs are defined? Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html