On Wed, May 20, 2026 at 1:50 AM Ray Wu <[email protected]> wrote: > > [Why] > With CONFIG_DRM_AMD_DC_KUNIT_TEST=m, allmodconfig only defines the > _MODULE variant. Four KUnit helper headers gate their declarations > with #ifdef CONFIG_DRM_AMD_DC_KUNIT_TEST, so the declarations vanish > while the matching .c files (driven by IS_ENABLED() via > STATIC_IFN_KUNIT) keep the functions non-static. The build breaks > with implicit declarations and -Werror=missing-prototypes. > > amdgpu_dm_crc.h additionally uses symbols that its test file does not > pull in indirectly, amdgpu_dm_colorop_test.c has a copy-paste > duplicate function, and the three colorop TF bitmasks are not > exported for modpost. > > [How] > - Switch the crc/hdcp/color/psr KUnit guards to IS_ENABLED(). > - Make amdgpu_dm_crc.h self-contained (dc_types.h + forward decl). > - Rename the duplicated shaper test back to its intended name. > - Export amdgpu_dm_supported_{degam,shaper,blnd}_tfs via > EXPORT_IF_KUNIT(). > > Assisted-by: Copilot:claude-4-opus > > Reviewed-by: Alex Hung <[email protected]> > Signed-off-by: Ray Wu <[email protected]>
Acked-by: Alex Deucher <[email protected]> > --- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.h | 2 +- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 4 ++++ > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.h | 5 ++++- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.h | 2 +- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.h | 2 +- > .../drm/amd/display/amdgpu_dm/tests/amdgpu_dm_colorop_test.c | 2 +- > 6 files changed, 12 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.h > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.h > index 5e484359b8a7..19d3a13572f5 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.h > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.h > @@ -42,7 +42,7 @@ struct dc_rgb; > struct fixed31_32; > struct tetrahedral_params; > > -#ifdef CONFIG_DRM_AMD_DC_KUNIT_TEST > +#if IS_ENABLED(CONFIG_DRM_AMD_DC_KUNIT_TEST) > /* > * Prototypes for functions exposed to KUnit tests. The enum types > * used below (dc_transfer_func_predefined, amdgpu_transfer_function, > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > index 212c13b745d0..7c83fe6df395 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c > @@ -31,6 +31,7 @@ > > #include "amdgpu.h" > #include "amdgpu_dm_colorop.h" > +#include "amdgpu_dm_kunit_helpers.h" > #include "dc.h" > > const u64 amdgpu_dm_supported_degam_tfs = > @@ -38,18 +39,21 @@ const u64 amdgpu_dm_supported_degam_tfs = > BIT(DRM_COLOROP_1D_CURVE_PQ_125_EOTF) | > BIT(DRM_COLOROP_1D_CURVE_BT2020_INV_OETF) | > BIT(DRM_COLOROP_1D_CURVE_GAMMA22); > +EXPORT_IF_KUNIT(amdgpu_dm_supported_degam_tfs); > > const u64 amdgpu_dm_supported_shaper_tfs = > BIT(DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF) | > BIT(DRM_COLOROP_1D_CURVE_PQ_125_INV_EOTF) | > BIT(DRM_COLOROP_1D_CURVE_BT2020_OETF) | > BIT(DRM_COLOROP_1D_CURVE_GAMMA22_INV); > +EXPORT_IF_KUNIT(amdgpu_dm_supported_shaper_tfs); > > const u64 amdgpu_dm_supported_blnd_tfs = > BIT(DRM_COLOROP_1D_CURVE_SRGB_EOTF) | > BIT(DRM_COLOROP_1D_CURVE_PQ_125_EOTF) | > BIT(DRM_COLOROP_1D_CURVE_BT2020_INV_OETF) | > BIT(DRM_COLOROP_1D_CURVE_GAMMA22); > +EXPORT_IF_KUNIT(amdgpu_dm_supported_blnd_tfs); > > #define MAX_COLOR_PIPELINE_OPS 10 > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.h > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.h > index 76731ee44e13..c9aa0c82038f 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.h > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.h > @@ -27,8 +27,11 @@ > #ifndef AMD_DAL_DEV_AMDGPU_DM_AMDGPU_DM_CRC_H_ > #define AMD_DAL_DEV_AMDGPU_DM_AMDGPU_DM_CRC_H_ > > +#include "dc_types.h" > + > struct drm_crtc; > struct dm_crtc_state; > +struct amdgpu_device; > > enum amdgpu_dm_pipe_crc_source { > AMDGPU_DM_PIPE_CRC_SOURCE_NONE = 0, > @@ -148,7 +151,7 @@ void amdgpu_dm_crtc_secure_display_create_contexts(struct > amdgpu_device *adev); > #define amdgpu_dm_crtc_secure_display_create_contexts(x) > #endif > > -#ifdef CONFIG_DRM_AMD_DC_KUNIT_TEST > +#if IS_ENABLED(CONFIG_DRM_AMD_DC_KUNIT_TEST) > enum amdgpu_dm_pipe_crc_source dm_parse_crc_source(const char *source); > bool dm_is_crc_source_crtc(enum amdgpu_dm_pipe_crc_source src); > bool dm_is_crc_source_dprx(enum amdgpu_dm_pipe_crc_source src); > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.h > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.h > index 4bb072cfac1e..90b18c450ca6 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.h > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.h > @@ -94,7 +94,7 @@ void hdcp_destroy(struct kobject *kobj, struct > hdcp_workqueue *work); > > struct hdcp_workqueue *hdcp_create_workqueue(struct amdgpu_device *adev, > struct cp_psp *cp_psp, struct dc *dc); > > -#ifdef CONFIG_DRM_AMD_DC_KUNIT_TEST > +#if IS_ENABLED(CONFIG_DRM_AMD_DC_KUNIT_TEST) > void process_output(struct hdcp_workqueue *hdcp_work); > #endif > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.h > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.h > index 1a41d9b99eb4..9f3e22520ca0 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.h > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.h > @@ -40,7 +40,7 @@ bool amdgpu_dm_psr_set_event(struct amdgpu_display_manager > *dm, > struct dc_stream_state *stream, bool set_event, enum > psr_event event, > bool wait_for_disable); > > -#ifdef CONFIG_DRM_AMD_DC_KUNIT_TEST > +#if IS_ENABLED(CONFIG_DRM_AMD_DC_KUNIT_TEST) > void amdgpu_dm_psr_fill_caps(struct dc_link *link, struct psr_caps *caps); > #endif > > diff --git > a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_colorop_test.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_colorop_test.c > index 8bdebcaf42b2..30b5adb23570 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_colorop_test.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_colorop_test.c > @@ -72,7 +72,7 @@ static void dm_test_supported_shaper_tfs_has_gamma22(struct > kunit *test) > BIT(DRM_COLOROP_1D_CURVE_GAMMA22)); > } > > -static void dm_test_supported_degam_tfs_no_extra_bits(struct kunit *test) > +static void dm_test_supported_shaper_tfs_no_extra_bits(struct kunit *test) > { > u64 expected = BIT(DRM_COLOROP_1D_CURVE_SRGB_EOTF) | > BIT(DRM_COLOROP_1D_CURVE_PQ_125_EOTF) | > -- > 2.43.0 >
