drm/amd/display: Fix underflow issue on 175hz timing
authorjsg <jsg@openbsd.org>
Mon, 25 Sep 2023 03:04:40 +0000 (03:04 +0000)
committerjsg <jsg@openbsd.org>
Mon, 25 Sep 2023 03:04:40 +0000 (03:04 +0000)
From Leo Ma
2ec715bf881696b23caa06953c8c9309c2ce5224 in linux-6.1.y/6.1.55
735688eb905db529efea0c78466fccc1461c3fde in mainline linux

sys/dev/pci/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c

index b53feea..23e4be2 100644 (file)
@@ -3454,6 +3454,7 @@ bool dml32_CalculatePrefetchSchedule(
        double TimeForFetchingMetaPTE = 0;
        double TimeForFetchingRowInVBlank = 0;
        double LinesToRequestPrefetchPixelData = 0;
+       double LinesForPrefetchBandwidth = 0;
        unsigned int HostVMDynamicLevelsTrips;
        double  trip_to_mem;
        double  Tvm_trips;
@@ -3883,11 +3884,15 @@ bool dml32_CalculatePrefetchSchedule(
                        TimeForFetchingMetaPTE = Tvm_oto;
                        TimeForFetchingRowInVBlank = Tr0_oto;
                        *PrefetchBandwidth = prefetch_bw_oto;
+                       /* Clamp to oto for bandwidth calculation */
+                       LinesForPrefetchBandwidth = dst_y_prefetch_oto;
                } else {
                        *DestinationLinesForPrefetch = dst_y_prefetch_equ;
                        TimeForFetchingMetaPTE = Tvm_equ;
                        TimeForFetchingRowInVBlank = Tr0_equ;
                        *PrefetchBandwidth = prefetch_bw_equ;
+                       /* Clamp to equ for bandwidth calculation */
+                       LinesForPrefetchBandwidth = dst_y_prefetch_equ;
                }
 
                *DestinationLinesToRequestVMInVBlank = dml_ceil(4.0 * TimeForFetchingMetaPTE / LineTime, 1.0) / 4.0;
@@ -3895,7 +3900,7 @@ bool dml32_CalculatePrefetchSchedule(
                *DestinationLinesToRequestRowInVBlank =
                                dml_ceil(4.0 * TimeForFetchingRowInVBlank / LineTime, 1.0) / 4.0;
 
-               LinesToRequestPrefetchPixelData = *DestinationLinesForPrefetch -
+               LinesToRequestPrefetchPixelData = LinesForPrefetchBandwidth -
                                *DestinationLinesToRequestVMInVBlank - 2 * *DestinationLinesToRequestRowInVBlank;
 
 #ifdef __DML_VBA_DEBUG__