intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang
@ 2018-10-16 12:29 Jani Nikula
  2018-10-16 12:29 ` [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() " Jani Nikula
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: Jani Nikula @ 2018-10-16 12:29 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, natechancellor, swboyd, ndesaulniers

When building the kernel with Clang with defconfig and CONFIG_64BIT
disabled, vmlinux fails to link because of the BUILD_BUG in
_print_param.

ld: drivers/gpu/drm/i915/i915_params.o: in function `i915_params_dump':
i915_params.c:(.text+0x56): undefined reference to
`__compiletime_assert_191'

This function is semantically invalid unless the code is first inlined
then constant folded, which doesn't work for Clang because semantic
analysis happens before optimization/inlining.

[The above written by Nathan Chancellor <natechancellor@gmail.com>]

Use WARN_ONCE() instead of BUILD_BUG() to avoid the problem. The
WARN_ONCE() should get optimized away unless there's a type that's not
handled by _print_param().

References: https://github.com/ClangBuiltLinux/linux/issues/191
References: http://mid.mail-archive.com/20181009171401.14980-1-natechancellor@gmail.com
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Nathan Chancellor <natechancellor@gmail.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reported-by: Nick Desaulniers <ndesaulniers@google.com>
Reported-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_params.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
index bd6bd8879cab..8d71886b5f03 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
@@ -184,7 +184,8 @@ static __always_inline void _print_param(struct drm_printer *p,
 	else if (!__builtin_strcmp(type, "char *"))
 		drm_printf(p, "i915.%s=%s\n", name, *(const char **)x);
 	else
-		BUILD_BUG();
+		WARN_ONCE(1, "no printer defined for param type %s (i915.%s)\n",
+			  type, name);
 }
 
 /**
-- 
2.11.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2018-10-22 21:19 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-16 12:29 [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang Jani Nikula
2018-10-16 12:29 ` [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() " Jani Nikula
2018-10-16 15:11   ` Nathan Chancellor
2018-10-16 15:18   ` Chris Wilson
2018-10-16 15:35   ` Stephen Boyd
2018-10-16 18:33     ` Nick Desaulniers
2018-10-17  7:24       ` Jani Nikula
2018-10-22 21:10         ` Nick Desaulniers
2018-10-22 21:19           ` Nick Desaulniers
2018-10-16 12:35 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915: Ensure _print_param() " Patchwork
2018-10-16 13:00 ` ✓ Fi.CI.BAT: success " Patchwork
2018-10-16 14:14 ` ✗ Fi.CI.IGT: failure " Patchwork
2018-10-16 15:10 ` [PATCH 1/2] " Nathan Chancellor
2018-10-16 15:16 ` Chris Wilson
2018-10-16 18:38   ` Nick Desaulniers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).