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

Larry Finger
2020-02-06T22:46:56Z

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