dc = stream->ctx->dc;
 
-       if (dc->debug.allow_sw_cursor_fallback && attributes->height * attributes->width * 4 > 16384)
-               if (stream->mall_stream_config.type == SUBVP_MAIN)
+       /* SubVP is not compatible with HW cursor larger than 64 x 64 x 4.
+        * Therefore, if cursor is greater than 64 x 64 x 4, fallback to SW cursor in the following case:
+        * 1. For single display cases, if resolution is >= 5K and refresh rate < 120hz
+        * 2. For multi display cases, if resolution is >= 4K and refresh rate < 120hz
+        *
+        * [< 120hz is a requirement for SubVP configs]
+        */
+       if (dc->debug.allow_sw_cursor_fallback && attributes->height * attributes->width * 4 > 16384) {
+               if (dc->current_state->stream_count == 1 && stream->timing.v_addressable >= 2880 &&
+                               ((stream->timing.pix_clk_100hz * 100) / stream->timing.v_total / stream->timing.h_total) < 120)
                        return false;
+               else if (dc->current_state->stream_count > 1 && stream->timing.v_addressable >= 2160 &&
+                               ((stream->timing.pix_clk_100hz * 100) / stream->timing.v_total / stream->timing.h_total) < 120)
+                       return false;
+       }
 
        stream->cursor_attributes = *attributes;
 
 
        /* Must match enable_single_display_2to1_odm_policy to support dynamic ODM transitions*/
        .enable_double_buffered_dsc_pg_support = true,
        .enable_dp_dig_pixel_rate_div_policy = 1,
-       .allow_sw_cursor_fallback = false,
+       .allow_sw_cursor_fallback = false, // Linux can't do SW cursor "fallback"
        .alloc_extra_way_for_cursor = true,
        .min_prefetch_in_strobe_ns = 60000, // 60us
 };
 
        /*must match enable_single_display_2to1_odm_policy to support dynamic ODM transitions*/
        .enable_double_buffered_dsc_pg_support = true,
        .enable_dp_dig_pixel_rate_div_policy = 1,
-       .allow_sw_cursor_fallback = false,
+       .allow_sw_cursor_fallback = false, // Linux can't do SW cursor "fallback"
        .alloc_extra_way_for_cursor = true,
        .min_prefetch_in_strobe_ns = 60000, // 60us
 };