Skip to content

Commit

Permalink
drm/amdgpu: enable -msse2 for GCC 7.1+ users
Browse files Browse the repository at this point in the history
A final attempt at enabling sse2 for GCC users.

Orininally attempted in:
commit 1011745 ("drm/amd/display: add -msse2 to prevent Clang from emitting libcalls to undefined SW FP routines")

Reverted due to "reported instability" in:
commit 193392e ("Revert "drm/amd/display: add -msse2 to prevent Clang from emitting libcalls to undefined SW FP routines"")

Re-added just for Clang in:
commit 0f0727d ("drm/amd/display: readd -msse2 to prevent Clang from emitting libcalls to undefined SW FP routines")

The original report didn't have enough information to know if the GPF
was due to misalignment, but I suspect that it was. (The missing
information was the disassembly of the function at the bottom of the
trace, to see if the instruction pointer pointed to an instruction with
16B alignment memory operand requirements.  The stack trace does show
the stack was only 8B but not 16B aligned though, which makes this a
strong possibility).

Now that the stack misalignment issue has been fixed for users of GCC
7.1+, reattempt adding -msse2. This matches Clang.

It will likely never be safe to enable this for pre-GCC 7.1 AND use a
16B aligned stack in these translation units.

This is only a functional change for GCC 7.1+ users, and should be boot
tested.

Link: https://bugs.freedesktop.org/show_bug.cgi?id=109487
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
  • Loading branch information
Nick Desaulniers authored and Alex Deucher committed Oct 30, 2019
1 parent 00db297 commit e8a170f
Show file tree
Hide file tree
Showing 5 changed files with 5 additions and 15 deletions.
4 changes: 1 addition & 3 deletions drivers/gpu/drm/amd/display/dc/calcs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@ ifdef IS_OLD_GCC
# GCC < 7.1 cannot compile code using `double` and -mpreferred-stack-boundary=3
# (8B stack alignment).
calcs_ccflags += -mpreferred-stack-boundary=4
endif

ifdef CONFIG_CC_IS_CLANG
else
calcs_ccflags += -msse2
endif

Expand Down
4 changes: 1 addition & 3 deletions drivers/gpu/drm/amd/display/dc/dcn20/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,7 @@ ifdef IS_OLD_GCC
# GCC < 7.1 cannot compile code using `double` and -mpreferred-stack-boundary=3
# (8B stack alignment).
CFLAGS_$(AMDDALPATH)/dc/dcn20/dcn20_resource.o += -mpreferred-stack-boundary=4
endif

ifdef CONFIG_CC_IS_CLANG
else
CFLAGS_$(AMDDALPATH)/dc/dcn20/dcn20_resource.o += -msse2
endif

Expand Down
4 changes: 1 addition & 3 deletions drivers/gpu/drm/amd/display/dc/dcn21/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@ ifdef IS_OLD_GCC
# GCC < 7.1 cannot compile code using `double` and -mpreferred-stack-boundary=3
# (8B stack alignment).
CFLAGS_$(AMDDALPATH)/dc/dcn21/dcn21_resource.o += -mpreferred-stack-boundary=4
endif

ifdef CONFIG_CC_IS_CLANG
else
CFLAGS_$(AMDDALPATH)/dc/dcn21/dcn21_resource.o += -msse2
endif

Expand Down
4 changes: 1 addition & 3 deletions drivers/gpu/drm/amd/display/dc/dml/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@ ifdef IS_OLD_GCC
# GCC < 7.1 cannot compile code using `double` and -mpreferred-stack-boundary=3
# (8B stack alignment).
dml_ccflags += -mpreferred-stack-boundary=4
endif

ifdef CONFIG_CC_IS_CLANG
else
dml_ccflags += -msse2
endif

Expand Down
4 changes: 1 addition & 3 deletions drivers/gpu/drm/amd/display/dc/dsc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@ ifdef IS_OLD_GCC
# GCC < 7.1 cannot compile code using `double` and -mpreferred-stack-boundary=3
# (8B stack alignment).
dsc_ccflags += -mpreferred-stack-boundary=4
endif

ifdef CONFIG_CC_IS_CLANG
else
dsc_ccflags += -msse2
endif

Expand Down

0 comments on commit e8a170f

Please sign in to comment.