Message ID | 20130629225426.GA12221@quad.lixom.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, Jun 29, 2013 at 03:54:26PM -0700, Olof Johansson wrote: > Most of this ruffle seems to be about the fact that booting a kernel > with a device tree that doesn't conform to the brand spanking new, > and never previously enforced, binding for the cpu nodes will produce > a WARN_ON(). Lots of our in-tree device trees fall into this category. > > And while I think it was a bad idea for Lorenzo to ask for this to be > merged as a fix this late (and most in particular for stable), as far > as I can tell nothing (new) is broken by it -- just the alarming warning > is being printed. > > I think it probably makes sense to downgrade the WARN to just a printk, and > people will be a lot less worried. How about the below? > > If you're OK with it, Russell, can we get your ack so Linus can apply > directly given the imminence of final 3.10? Or, if you prefer, you can of > course apply and send it on instead. You can have my usual rmk+kernel ack for it with one change... > + if (!bootcpu_valid) { > + pr_warn("DT missing boot CPU MPIDR[23:0], fall back to " > + "default cpu_logical_map\n"); Don't wrap messages kernel messages inspite of what checkpatch says. Always keep messages like that on a single line so they're greppable. Checkpatch is far from perfect and does get stuff wrong, and this is one of its common mistakes. Incidentally, here's a few of fun ones I found today which illustrates why checkpatch can be bad news if everything it spits out is believed by the user: WARNING: simple_strtoul is obsolete, use kstrtoul instead #1424: FILE: drivers/gpu/drm/armada/armada_debugfs.c:90: + reg = simple_strtoul(buf, &p, 16); Umm yes, and to use kstrtoul(), I'd have to: - copy the string _safely_ to avoid any buffer overflow - find the first non-value character - terminate the string with a \0 or a \n\0 - remember where in the string I'd got to to parse the next argument And pushing that complexity into drivers, which if it's wrong causes security problems, is better than using simple_strtoul() because ...? ERROR: Macros with multiple statements should be enclosed in a do - while loop #2122: FILE: drivers/gpu/drm/armada/armada_fb.c:45: +#define FMT(drm, fmt, mod) \ + case DRM_FORMAT_##drm: \ + format = CFG_##fmt; \ + config = mod; \ + break Oh yea, that's really going to work for that isn't it! WARNING: externs should be avoided in .c files #2126: FILE: drivers/gpu/drm/armada/armada_fb.c:49: + break Err, what extern? :)
On Sun, Jun 30, 2013 at 12:14:26AM +0100, Russell King - ARM Linux wrote: > On Sat, Jun 29, 2013 at 03:54:26PM -0700, Olof Johansson wrote: > > Most of this ruffle seems to be about the fact that booting a kernel > > with a device tree that doesn't conform to the brand spanking new, > > and never previously enforced, binding for the cpu nodes will produce > > a WARN_ON(). Lots of our in-tree device trees fall into this category. > > > > And while I think it was a bad idea for Lorenzo to ask for this to be > > merged as a fix this late (and most in particular for stable), as far > > as I can tell nothing (new) is broken by it -- just the alarming warning > > is being printed. > > > > I think it probably makes sense to downgrade the WARN to just a printk, and > > people will be a lot less worried. How about the below? > > > > If you're OK with it, Russell, can we get your ack so Linus can apply > > directly given the imminence of final 3.10? Or, if you prefer, you can of > > course apply and send it on instead. > > You can have my usual rmk+kernel ack for it with one change... > > > + if (!bootcpu_valid) { > > + pr_warn("DT missing boot CPU MPIDR[23:0], fall back to " > > + "default cpu_logical_map\n"); > > Don't wrap messages kernel messages inspite of what checkpatch says. > Always keep messages like that on a single line so they're greppable. > Checkpatch is far from perfect and does get stuff wrong, and this is > one of its common mistakes. I didn't even run it through checkpatch, and I prefer greppable strings too -- I just went with what the rest of the file already used in this case to keep the change minimal given timing. I'll send a fresh copy with your ack and the above changed. Thanks. -Olof
diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c index 0905502..707f99e 100644 --- a/arch/arm/kernel/devtree.c +++ b/arch/arm/kernel/devtree.c @@ -152,9 +152,11 @@ void __init arm_dt_init_cpu_maps(void) tmp_map[i] = hwid; } - if (WARN(!bootcpu_valid, "DT missing boot CPU MPIDR[23:0], " - "fall back to default cpu_logical_map\n")) + if (!bootcpu_valid) { + pr_warn("DT missing boot CPU MPIDR[23:0], fall back to " + "default cpu_logical_map\n"); return; + } /* * Since the boot CPU node contains proper data, and all nodes have