struct dmub_srv_base_funcs funcs;
        struct dmub_srv_hw_funcs hw_funcs;
        struct dmub_rb inbox1_rb;
+       uint32_t inbox1_last_wptr;
        /**
         * outbox1_rb is accessed without locks (dal & dc)
         * and to be used only in dmub_srv_stat_get_notification()
 
 
 enum dmub_status dmub_srv_cmd_execute(struct dmub_srv *dmub)
 {
+       struct dmub_rb flush_rb;
+
        if (!dmub->hw_init)
                return DMUB_STATUS_INVALID;
 
         * been flushed to framebuffer memory. Otherwise DMCUB might
         * read back stale, fully invalid or partially invalid data.
         */
-       dmub_rb_flush_pending(&dmub->inbox1_rb);
+       flush_rb = dmub->inbox1_rb;
+       flush_rb.rptr = dmub->inbox1_last_wptr;
+       dmub_rb_flush_pending(&flush_rb);
 
                dmub->hw_funcs.set_inbox1_wptr(dmub, dmub->inbox1_rb.wrpt);
+
+       dmub->inbox1_last_wptr = dmub->inbox1_rb.wrpt;
+
        return DMUB_STATUS_OK;
 }