On Fri, Jan 18, 2019 at 1:53 AM Tobias Ulmer <tobi...@tmux.org> wrote: > > On Fri, Jan 18, 2019 at 09:32:07AM +1100, Benjamin Herrenschmidt wrote: > > On Thu, 2019-01-17 at 10:42 +0100, Tobias Ulmer wrote: > > > On Wed, Jan 16, 2019 at 12:15:14PM +1100, Benjamin Herrenschmidt wrote: > > > > On Tue, 2019-01-15 at 23:49 +0100, Tobias Ulmer wrote: > > > > > Hi, > > > > > > > > > > both the latest stable 4.20.2 and 5.0 rc2+ hang early on the G5 Quad. > > > > > > > > > > Surely I'm not the first to run into this, but I couldn't find any > > > > > discussion or bug report. Sorry if you're already aware. > > > > > > > > > > You can see it hang here (5.0 rc2+, 4.20.2 is nearly identical) until > > > > > the watchdog triggers a reboot: > > > > > > > > > > https://i.imgur.com/UiCVRuG.jpg > > > > > > ... > > I'll be back on monday or tuesday, let me know where you got up to then > > and I'll take it from there. Also email me your .config please. > > > Hi, > > this was caused by 5c63e407aaabb0464236cfc6279a2d79aede7073 > (fbdev: Convert to using %pOFn instead of device_node.name)
See: https://patchwork.kernel.org/patch/10750931/ > name can't be NULL into offb_init_fb, there's a printk and the call to > offb_init_palette_hacks where name is matched against OF device names. > > With the partial revert below, both 5.0-rc2+ and 4.20 are happy. > > diff --git a/drivers/video/fbdev/offb.c b/drivers/video/fbdev/offb.c > index 31f769d67195..77c0a2f45b3b 100644 > --- a/drivers/video/fbdev/offb.c > +++ b/drivers/video/fbdev/offb.c > @@ -419,13 +419,9 @@ static void __init offb_init_fb(const char *name, > var = &info->var; > info->par = par; > > - if (name) { > - strcpy(fix->id, "OFfb "); > - strncat(fix->id, name, sizeof(fix->id) - sizeof("OFfb ")); > - fix->id[sizeof(fix->id) - 1] = '\0'; > - } else > - snprintf(fix->id, sizeof(fix->id), "OFfb %pOFn", dp); > - > + strcpy(fix->id, "OFfb "); > + strncat(fix->id, name, sizeof(fix->id) - sizeof("OFfb ")); > + fix->id[sizeof(fix->id) - 1] = '\0'; > > var->xres = var->xres_virtual = width; > var->yres = var->yres_virtual = height; > @@ -648,7 +644,7 @@ static void __init offb_init_nodriver(struct device_node > *dp, int no_real_node) > /* kludge for valkyrie */ > if (strcmp(dp->name, "valkyrie") == 0) > address += 0x1000; > - offb_init_fb(no_real_node ? "bootx" : NULL, > + offb_init_fb(no_real_node ? "bootx" : dp->name, > width, height, depth, pitch, address, > foreign_endian, no_real_node ? NULL : dp); > }