drm/amd/display: Simplify the per-CPU usage.
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Thu, 21 Sep 2023 14:15:13 +0000 (16:15 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 5 Oct 2023 21:50:50 +0000 (17:50 -0400)
commitde5e73dc6baf4a2969493a2f16aed3fe222eb363
treea176ea28a474993ffefda660ed9151e9e412b6c7
parent9c77dcf6a5b179a9574b2f9633c6e2cdf52fafec
drm/amd/display: Simplify the per-CPU usage.

The fpu_recursion_depth counter is used to ensure that dc_fpu_begin()
can be invoked multiple times while the FPU-disable function itself is
only invoked once. Also the counter part (dc_fpu_end()) is ballanced
properly.

Instead of using the get_cpu_ptr() dance around the inc it is simpler to
increment the per-CPU variable directly. Also the per-CPU variable has
to be incremented and decremented on the same CPU. This is ensured by
the inner-part which disables preemption. This is kind of not obvious,
works and the preempt-counter is touched a few times for no reason.

Disable preemption before incrementing fpu_recursion_depth for the first
time. Keep preemption disabled until dc_fpu_end() where the counter is
decremented making it obvious that the preemption has to stay disabled
while the counter is non-zero.
Use simple inc/dec functions.
Remove the nested preempt_disable/enable functions which are now not
needed.

Acked-by: Harry Wentland <harry.wentland@amd.com>
Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c