if (de_iir & DE_GSE)
                ironlake_opregion_gse_intr(dev);
 
-       if (de_iir & DE_PLANEA_FLIP_DONE)
+       if (de_iir & DE_PLANEA_FLIP_DONE) {
                intel_prepare_page_flip(dev, 0);
+               intel_finish_page_flip(dev, 0);
+       }
 
-       if (de_iir & DE_PLANEB_FLIP_DONE)
+       if (de_iir & DE_PLANEB_FLIP_DONE) {
                intel_prepare_page_flip(dev, 1);
+               intel_finish_page_flip(dev, 1);
+       }
 
-       if (de_iir & DE_PIPEA_VBLANK) {
+       if (de_iir & DE_PIPEA_VBLANK)
                drm_handle_vblank(dev, 0);
-               intel_finish_page_flip(dev, 0);
-       }
 
-       if (de_iir & DE_PIPEB_VBLANK) {
+       if (de_iir & DE_PIPEB_VBLANK)
                drm_handle_vblank(dev, 1);
-               intel_finish_page_flip(dev, 1);
-       }
 
        /* check event from PCH */
        if ((de_iir & DE_PCH_EVENT) &&