No output ports detected with Navi 10 (Radeon 5700 XT) on ppc64le (Fedora Rawhide)
I'm attempting to use a Radeon 5700 XT card on and OpenPOWER machine, specifically the talos II, and I'm running into an issue where no display output connections are found.
Relevant dmesg when drm.debug=0xff (note the lack of dm):
[ 3.174834] [drm] add ip block number 0 <nv_common>
[ 3.174834] [drm] add ip block number 1 <gmc_v10_0>
[ 3.174835] [drm] add ip block number 2 <navi10_ih>
[ 3.174837] [drm] add ip block number 3 <psp>
[ 3.174838] [drm] add ip block number 4 <smu>
[ 3.174839] [drm] add ip block number 5 <gfx_v10_0>
[ 3.174840] [drm] add ip block number 6 <sdma_v5_0>
[ 3.174841] [drm] add ip block number 7 <vcn_v2_0>
Relevant kernel config:
CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_CIK=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
CONFIG_DRM_AMD_ACP=y
CONFIG_DRM_AMD_DC=y
Kernel: 5.4.0-2.fc32.ppc64le
Mesa/libdri: 19.3.0~rc5-1.fc32
I've tracked this down to the following: https://github.com/torvalds/linux/blob/v5.4/drivers/gpu/drm/amd/display/Kconfig#L23
Essentially, the DNC 2.0 code is only being enabled on x86 and not on any other architecture. When I change this to enable it, I run into the reason why - the DCN 2.0 code is using floating point math within the kernel which is only supported on x86 (and it looks like s390). An example can be see here: https://github.com/torvalds/linux/blob/v5.4/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c#L629
Additionally, the associated makefiles assume that we are always running on a machine with sse support (x86): https://github.com/torvalds/linux/blob/v5.4/drivers/gpu/drm/amd/display/dc/calcs/Makefile#L27