On Mon, Sep 24, 2018 at 01:52:30PM +0200, Greg Kroah-Hartman wrote: > 4.18-stable review patch. If anyone has any objections, please let me know. I bisected a boot failure on an x15 (arm) board to this commit on 4.18.10-rc1. I'm also seeing issues on 4.14 and 4.18 with arm64 boards hikey and dragonboard 410c, but I have not investigated them yet (they could be unrelated). I see there are fixes to this commit that have not been backported. Namely: 823dd71f58eb ("pinctrl: ingenic: Fix group & function error checking") a203728ac6bb ("pinctrl: core: Return selector to the pinctrl driver") However, I tried adding those two in but I still see the boot failure on x15. Dan > > ------------------ > > From: Tony Lindgren <tony@xxxxxxxxxxx> > > [ Upstream commit f913cfce4ee49a3382a9ff95696f49a46e56e974 ] > > We must return the selector from pinmux_generic_add_function() so > pin controller device drivers can remove the right group if needed > for deferred probe for example. And we now must make sure that a > proper name is passed so we can use it to check if the entry already > exists. > > Note that fixes are also needed for the pin controller drivers to > use the selector value. > > Fixes: a76edc89b100 ("pinctrl: core: Add generic pinctrl functions for > managing groups") > Reported-by: H. Nikolaus Schaller <hns@xxxxxxxxxxxxx> > Cc: Christ van Willegen <cvwillegen@xxxxxxxxx> > Cc: Haojian Zhuang <haojian.zhuang@xxxxxxxxxx> > Cc: Jacopo Mondi <jacopo+renesas@xxxxxxxxxx> > Cc: Paul Cercueil <paul@xxxxxxxxxxxxxxx> > Cc: Sean Wang <sean.wang@xxxxxxxxxxxx> > Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx> > Tested-By: H. Nikolaus Schaller <hns@xxxxxxxxxxxxx> > Reviewed-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx> > Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx> > Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxxxx> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > --- > drivers/pinctrl/pinmux.c | 16 ++++++++++++---- > 1 file changed, 12 insertions(+), 4 deletions(-) > > --- a/drivers/pinctrl/pinmux.c > +++ b/drivers/pinctrl/pinmux.c > @@ -308,7 +308,6 @@ static int pinmux_func_name_to_selector( > selector++; > } > > - dev_err(pctldev->dev, "function '%s' not supported\n", function); > return -EINVAL; > } > > @@ -775,6 +774,16 @@ int pinmux_generic_add_function(struct p > void *data) > { > struct function_desc *function; > + int selector; > + > + if (!name) > + return -EINVAL; > + > + selector = pinmux_func_name_to_selector(pctldev, name); > + if (selector >= 0) > + return selector; > + > + selector = pctldev->num_functions; > > function = devm_kzalloc(pctldev->dev, sizeof(*function), GFP_KERNEL); > if (!function) > @@ -785,12 +794,11 @@ int pinmux_generic_add_function(struct p > function->num_group_names = num_groups; > function->data = data; > > - radix_tree_insert(&pctldev->pin_function_tree, pctldev->num_functions, > - function); > + radix_tree_insert(&pctldev->pin_function_tree, selector, function); > > pctldev->num_functions++; > > - return 0; > + return selector; > } > EXPORT_SYMBOL_GPL(pinmux_generic_add_function); > > >