Thread (10 messages) 10 messages, 5 authors, 2019-01-18

Re: G5 Quad hangs early on 4.20.2 / 5.0-rc2+

flat view

From: Mathieu Malaterre <hidden>
Date: 2019-01-18 10:11:44

On Fri, Jan 18, 2019 at 1:53 AM Tobias Ulmer [off-list ref] wrote:
On Fri, Jan 18, 2019 at 09:32:07AM +1100, Benjamin Herrenschmidt wrote:
quoted
On Thu, 2019-01-17 at 10:42 +0100, Tobias Ulmer wrote:
quoted
On Wed, Jan 16, 2019 at 12:15:14PM +1100, Benjamin Herrenschmidt wrote:
quoted
On Tue, 2019-01-15 at 23:49 +0100, Tobias Ulmer wrote:
quoted
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
...
quoted
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/


quoted hunk ↗ jump to hunk
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);
        }
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help