struct dc_debug_options *dbg,
                struct dc_state *context)
 {
+       int i;
+
+       for (i = 0; i < MAX_PIPES; i++) {
+               struct pipe_ctx *pipe = &context->res_ctx.pipe_ctx[i];
+
+               /**
+                * Workaround for avoiding pipe-split in cases where we'd split
+                * planes that are too small, resulting in splits that aren't
+                * valid for the scaler.
+                */
+               if (pipe->plane_state &&
+                   (pipe->plane_state->dst_rect.width <= 16 ||
+                    pipe->plane_state->dst_rect.height <= 16 ||
+                    pipe->plane_state->src_rect.width <= 16 ||
+                    pipe->plane_state->src_rect.height <= 16)) {
+                       hack_disable_optional_pipe_split(v);
+                       return;
+               }
+       }
+
        if (dbg->pipe_split_policy == MPC_SPLIT_AVOID)
                hack_disable_optional_pipe_split(v);
 
                hack_force_pipe_split(v, context->streams[0]->timing.pix_clk_100hz);
 }
 
-
 unsigned int get_highest_allowed_voltage_level(uint32_t hw_internal_rev, uint32_t pci_revision_id)
 {
        /* for low power RV2 variants, the highest voltage level we want is 0 */
 
        } else if (dc->debug.force_single_disp_pipe_split)
                        force_split = true;
 
-       /* TODO: fix dc bugs and remove this split threshold thing */
        for (i = 0; i < dc->res_pool->pipe_count; i++) {
                struct pipe_ctx *pipe = &context->res_ctx.pipe_ctx[i];
 
+               /**
+                * Workaround for avoiding pipe-split in cases where we'd split
+                * planes that are too small, resulting in splits that aren't
+                * valid for the scaler.
+                */
+               if (pipe->plane_state &&
+                   (pipe->plane_state->dst_rect.width <= 16 ||
+                    pipe->plane_state->dst_rect.height <= 16 ||
+                    pipe->plane_state->src_rect.width <= 16 ||
+                    pipe->plane_state->src_rect.height <= 16))
+                       avoid_split = true;
+
+               /* TODO: fix dc bugs and remove this split threshold thing */
                if (pipe->stream && !pipe->prev_odm_pipe &&
                                (!pipe->top_pipe || pipe->top_pipe->plane_state != pipe->plane_state))
                        ++plane_count;