Re: [PATCH] drm/amd/display: add -msse2 to prevent Clang from emitting libcalls to undefined SW FP routines

From: Wentland, Harry
Date: Tue Jan 29 2019 - 14:01:57 EST


On 2019-01-29 1:56 p.m., Guenter Roeck wrote:
> On Tue, Jan 29, 2019 at 10:30:31AM -0500, Alex Deucher wrote:
>> On Fri, Jan 25, 2019 at 10:29 AM Wentland, Harry <Harry.Wentland@xxxxxxx> wrote:
>>>
>>> On 2019-01-24 7:52 p.m., ndesaulniers@xxxxxxxxxx wrote:
>>>> arch/x86/Makefile disables SSE and SSE2 for the whole kernel. The
>>>> AMDGPU drivers modified in this patch re-enable SSE but not SSE2. Turn
>>>> on SSE2 to support emitting double precision floating point instructions
>>>> rather than calls to non-existent (usually available from gcc_s or
>>>> compiler_rt) floating point helper routines.
>>>>
>>>> Link: https://gcc.gnu.org/onlinedocs/gccint/Soft-float-library-routines.html
>>>> Link: https://github.com/ClangBuiltLinux/linux/issues/327
>>>> Cc: stable@xxxxxxxxxxxxxxx # 4.19
>>>> Reported-by: S, Shirish <Shirish.S@xxxxxxx>
>>>> Reported-by: Matthias Kaehlcke <mka@xxxxxxxxxx>
>>>> Suggested-by: James Y Knight <jyknight@xxxxxxxxxx>
>>>> Suggested-by: Nathan Chancellor <natechancellor@xxxxxxxxx>
>>>> Signed-off-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx>
>>>> Tested-by: Guenter Roeck <linux@xxxxxxxxxxxx>
>>>
>>> Reviewed-by: Harry Wentland <harry.wentland@xxxxxxx>
>>>
>>> and applied.
>>>
>>
>> This patch causes a segfault:
>> https://bugs.freedesktop.org/show_bug.cgi?id=109487
>>
>> Any ideas?
>>
>
> Set -msse2 only for clang ? I suspect, though, that this might only
> solve the compile problem. If I understand correctly, the first
> warning in the log is due to BREAK_TO_DEBUGGER(), suggesting that
> something is seriously wrong. Maybe enabling sse2 results in different
> results from floating point operations.
>
> Unfortunately I don't have a system with the affected GPU,
> so I can't run any tests on real hardware. Unless someone can test
> with real hardware, I think we have no choice but to revert the
> patch.
>

Might be a good idea. Even though, best to revert for now until we understand what's going on.

It seems like people at AMD building with gcc 5.4 are fine, but those using gcc 7.3 or 8.2 experience the crash.

Harry

> Guenter
>
>> Alex
>>
>>> Harry
>>>
>>>> ---
>>>> drivers/gpu/drm/amd/display/dc/calcs/Makefile | 2 +-
>>>> drivers/gpu/drm/amd/display/dc/dml/Makefile | 2 +-
>>>> 2 files changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/amd/display/dc/calcs/Makefile b/drivers/gpu/drm/amd/display/dc/calcs/Makefile
>>>> index 95f332ee3e7e..dc85a3c088af 100644
>>>> --- a/drivers/gpu/drm/amd/display/dc/calcs/Makefile
>>>> +++ b/drivers/gpu/drm/amd/display/dc/calcs/Makefile
>>>> @@ -30,7 +30,7 @@ else ifneq ($(call cc-option, -mstack-alignment=16),)
>>>> cc_stack_align := -mstack-alignment=16
>>>> endif
>>>>
>>>> -calcs_ccflags := -mhard-float -msse $(cc_stack_align)
>>>> +calcs_ccflags := -mhard-float -msse -msse2 $(cc_stack_align)
>>>>
>>>> CFLAGS_dcn_calcs.o := $(calcs_ccflags)
>>>> CFLAGS_dcn_calc_auto.o := $(calcs_ccflags)
>>>> diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile b/drivers/gpu/drm/amd/display/dc/dml/Makefile
>>>> index d97ca6528f9d..33c7d7588712 100644
>>>> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
>>>> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
>>>> @@ -30,7 +30,7 @@ else ifneq ($(call cc-option, -mstack-alignment=16),)
>>>> cc_stack_align := -mstack-alignment=16
>>>> endif
>>>>
>>>> -dml_ccflags := -mhard-float -msse $(cc_stack_align)
>>>> +dml_ccflags := -mhard-float -msse -msse2 $(cc_stack_align)
>>>>
>>>> CFLAGS_display_mode_lib.o := $(dml_ccflags)
>>>> CFLAGS_display_pipe_clocks.o := $(dml_ccflags)
>>>>
>>> _______________________________________________
>>> amd-gfx mailing list
>>> amd-gfx@xxxxxxxxxxxxxxxxxxxxx
>>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx