Error building v5.5-git on PowerPC32 - bisected to commit 7befe621ff81

From: Larry Finger
Date: Thu Feb 06 2020 - 17:46:56 EST


When building post V5.5 on my PowerBook G4 Aluminum, the build failed with the following error:

drivers/gpu/drm/drm_edid.c: In function âcea_mode_alternate_timingsâ:
drivers/gpu/drm/drm_edid.c:3275:2: error: call to â__compiletime_assert_3282â declared with attribute error: BUILD_BUG_ON failed: cea_mode_for_vic(8)->vtotal != 262 || cea_mode_for_vic(9)->vtotal != 262 || cea_mode_for_vic(12)->vtotal != 262 || cea_mode_for_vic(13)->vtotal != 262 || cea_mode_for_vic(23)->vtotal != 312 || cea_mode_for_vic(24)->vtotal != 312 || cea_mode_for_vic(27)->vtotal != 312 || cea_mode_for_vic(28)->vtotal != 312

This error was bisected to commit 7befe621ff81 ("drm/edid: Abstract away cea_edid_modes[]").

This problem is clearly a problem with the gcc compiler on the box, namely gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3. I had no success finding why the attributes were wrong, and finally settled on the following hack:

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 99769d6c9f84..062bbe2b254a 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -3272,6 +3272,7 @@ cea_mode_alternate_timings(u8 vic, struct drm_display_mode *mode)
* get the other variants by simply increasing the
* vertical front porch length.
*/
+#ifndef CONFIG_PPC32
BUILD_BUG_ON(cea_mode_for_vic(8)->vtotal != 262 ||
cea_mode_for_vic(9)->vtotal != 262 ||
cea_mode_for_vic(12)->vtotal != 262 ||
@@ -3280,6 +3281,7 @@ cea_mode_alternate_timings(u8 vic, struct drm_display_mode *mode)
cea_mode_for_vic(24)->vtotal != 312 ||
cea_mode_for_vic(27)->vtotal != 312 ||
cea_mode_for_vic(28)->vtotal != 312);
+#endif

if (((vic == 8 || vic == 9 ||
vic == 12 || vic == 13) && mode->vtotal < 263) ||

Disabling the build check allows me to build and test the post v5.5 versions.

Larry