for (i = 0; i < MAX_PIPES; i++) {
                struct pipe_ctx *pipe_ctx = &res_ctx->pipe_ctx[i];
 
-               if (pipe_ctx->stream != stream || (!pipe_ctx->plane_res.xfm &&
-                   !pipe_ctx->plane_res.dpp) || !pipe_ctx->plane_res.ipp)
+               if (pipe_ctx->stream != stream)
                        continue;
                if (pipe_ctx->top_pipe && pipe_ctx->plane_state != pipe_ctx->top_pipe->plane_state)
                        continue;
 
 {
        struct dc_cursor_attributes *attributes = &pipe_ctx->stream->cursor_attributes;
 
-       if (pipe_ctx->plane_res.ipp->funcs->ipp_cursor_set_attributes)
+       if (pipe_ctx->plane_res.ipp &&
+           pipe_ctx->plane_res.ipp->funcs->ipp_cursor_set_attributes)
                pipe_ctx->plane_res.ipp->funcs->ipp_cursor_set_attributes(
                                pipe_ctx->plane_res.ipp, attributes);
 
-       if (pipe_ctx->plane_res.mi->funcs->set_cursor_attributes)
+       if (pipe_ctx->plane_res.mi &&
+           pipe_ctx->plane_res.mi->funcs->set_cursor_attributes)
                pipe_ctx->plane_res.mi->funcs->set_cursor_attributes(
                                pipe_ctx->plane_res.mi, attributes);
 
-       if (pipe_ctx->plane_res.xfm->funcs->set_cursor_attributes)
+       if (pipe_ctx->plane_res.xfm &&
+           pipe_ctx->plane_res.xfm->funcs->set_cursor_attributes)
                pipe_ctx->plane_res.xfm->funcs->set_cursor_attributes(
                                pipe_ctx->plane_res.xfm, attributes);
 }