int bochs_hw_init(struct drm_device *dev);
 void bochs_hw_fini(struct drm_device *dev);
 
+void bochs_hw_blank(struct bochs_device *bochs, bool blank);
 void bochs_hw_setmode(struct bochs_device *bochs,
                      struct drm_display_mode *mode);
 void bochs_hw_setformat(struct bochs_device *bochs,
 
 #include <drm/drm_drv.h>
 #include <drm/drm_fourcc.h>
 
+#include <video/vga.h>
 #include "bochs.h"
 
 /* ---------------------------------------------------------------------- */
        }
 }
 
+static u8 bochs_vga_readb(struct bochs_device *bochs, u16 ioport)
+{
+       if (WARN_ON(ioport < 0x3c0 || ioport > 0x3df))
+               return 0xff;
+
+       if (bochs->mmio) {
+               int offset = ioport - 0x3c0 + 0x400;
+               return readb(bochs->mmio + offset);
+       } else {
+               return inb(ioport);
+       }
+}
+
 static u16 bochs_dispi_read(struct bochs_device *bochs, u16 reg)
 {
        u16 ret = 0;
        kfree(bochs->edid);
 }
 
+void bochs_hw_blank(struct bochs_device *bochs, bool blank)
+{
+       DRM_DEBUG_DRIVER("hw_blank %d\n", blank);
+       /* discard ar_flip_flop */
+       (void)bochs_vga_readb(bochs, VGA_IS1_RC);
+       /* blank or unblank; we need only update index and set 0x20 */
+       bochs_vga_writeb(bochs, VGA_ATT_W, blank ? 0 : 0x20);
+}
+
 void bochs_hw_setmode(struct bochs_device *bochs,
                      struct drm_display_mode *mode)
 {
                         bochs->xres, bochs->yres, bochs->bpp,
                         bochs->yres_virtual);
 
-       bochs_vga_writeb(bochs, 0x3c0, 0x20); /* unblank */
+       bochs_hw_blank(bochs, false);
 
        bochs_dispi_write(bochs, VBE_DISPI_INDEX_ENABLE,      0);
        bochs_dispi_write(bochs, VBE_DISPI_INDEX_BPP,         bochs->bpp);
 
        bochs_plane_update(bochs, plane_state);
 }
 
+static void bochs_pipe_disable(struct drm_simple_display_pipe *pipe)
+{
+       struct bochs_device *bochs = pipe->crtc.dev->dev_private;
+
+       bochs_hw_blank(bochs, true);
+}
+
 static void bochs_pipe_update(struct drm_simple_display_pipe *pipe,
                              struct drm_plane_state *old_state)
 {
 
 static const struct drm_simple_display_pipe_funcs bochs_pipe_funcs = {
        .enable     = bochs_pipe_enable,
+       .disable    = bochs_pipe_disable,
        .update     = bochs_pipe_update,
        .prepare_fb = drm_gem_vram_simple_display_pipe_prepare_fb,
        .cleanup_fb = drm_gem_vram_simple_display_pipe_cleanup_fb,