On Fri, Dec 11, 2015 at 09:39:18PM -0800, Brian Norris wrote: > On Sat, Dec 12, 2015 at 05:45:21AM +0100, Heiko Schocher wrote: > > Am 12.12.2015 um 00:58 schrieb Brian Norris: > > >Commit 807f16d4db95 ("mtd: core: set some defaults when dev.parent is > > >set") attempted to provide some default settings for MTDs that > > > (a) assign the parent device and > > > (b) don't provide their own name or owner > > > > > >However, this isn't a perfect drop-in replacement for the boilerplate > > >found in some drivers, because the MTD name is used by partition > > >parsers like cmdlinepart, but the name isn't set until add_mtd_device(), > > >after the parsing is completed. This means cmdlinepart sees a NULL name > > >and therefore will not work properly. > > > > > >Fix this by moving the default name and owner assignment to be first in > > >the MTD registration process. > > > > > >Fixes: 807f16d4db95 ("mtd: core: set some defaults when dev.parent is set") > > >Reported-by: Heiko Schocher <h...@denx.de> > > >Signed-off-by: Brian Norris <computersforpe...@gmail.com> > > >Cc: Heiko Schocher <h...@denx.de> > > >Cc: Frans Klaver <franskla...@gmail.com> > > >--- > > >Heiko, can you provide testing feedback (e.g., 'Tested-by: ...')? > > > > Sorry, does not work for me: > > > > Based on: > > pollux:linux hs [20151212] $ git describe master > > v4.4-rc4-135-gb9d8545 > > > > and this patch, shows the same problem, > > [...]
BTW, can you please include the relevant log snippets when replying in the future? > Ugh, I see the problem. In nand_base.c, nand_get_flash_type(): > > if (!mtd->name) > mtd->name = type->name; Specifically, I think we could hack around this with something like the following additional patch. Untested: diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index ece544efccc3..9f169566fba4 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -3826,6 +3826,9 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd, if (!type) type = nand_flash_ids; + if (!mtd->name && mtd->dev.parent) + mtd->name = dev_name(mtd->dev.parent); + for (; type->name != NULL; type++) { if (is_full_id_nand(type)) { if (find_full_id_nand(mtd, chip, type, id_data, &busw)) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/