diff --git a/src/via_display.c b/src/via_display.c
index 80c5d26..97473f0 100644
--- a/src/via_display.c
+++ b/src/via_display.c
@@ -957,8 +957,6 @@ iga1_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode,
     ScrnInfoPtr pScrn = crtc->scrn;
     VIAPtr pVia = VIAPTR(pScrn);
 
-    pVia->OverlaySupported = FALSE;
-
     if (!pVia->pVbe) {
         if (!vgaHWInit(pScrn, adjusted_mode))
             return;
@@ -1357,8 +1355,6 @@ iga2_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode,
     ScrnInfoPtr pScrn = crtc->scrn;
     VIAPtr pVia = VIAPTR(pScrn);
 
-    pVia->OverlaySupported = FALSE;
-
     if (pVia->pVbe) {
         if (!ViaVbeSetMode(pScrn, adjusted_mode))
             return;
diff --git a/src/via_driver.h b/src/via_driver.h
index 65b7a46..80f13fb 100644
--- a/src/via_driver.h
+++ b/src/via_driver.h
@@ -363,7 +363,6 @@ typedef struct _VIA {
     CARD32              VideoStatus;
     VIAHWDiff           HWDiff;
     unsigned long       dwV1, dwV3;
-    unsigned long       OverlaySupported;
     unsigned long       dwFrameNum;
 
     CARD32*             VidRegBuffer; /* Temporary buffer for video overlay registers. */
diff --git a/src/via_vbe.c b/src/via_vbe.c
index d2e19d0..776ed2f 100644
--- a/src/via_vbe.c
+++ b/src/via_vbe.c
@@ -193,8 +193,6 @@ ViaVbeSetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode)
     int mode;
     int refreshRate;
 
-    pVia->OverlaySupported = FALSE;
-
     data = (VbeModeInfoData *) pMode->Private;
 
     mode = data->mode | (1 << 15);
diff --git a/src/via_xv.c b/src/via_xv.c
index 36b9741..1d445c4 100644
--- a/src/via_xv.c
+++ b/src/via_xv.c
@@ -357,8 +357,7 @@ DecideOverlaySupport(xf86CrtcPtr crtc)
                 memEfficiency = (float)SINGLE_3205_133;
                 break;
             default:
-                /*Unknow DRAM Type */
-                DBG_DD(ErrorF("Unknow DRAM Type!\n"));
+                ErrorF("Unknow DRAM Type!\n");
                 mClock = 166;
                 memEfficiency = (float)SINGLE_3205_133;
                 break;
@@ -367,6 +366,11 @@ DecideOverlaySupport(xf86CrtcPtr crtc)
         width = mode->HDisplay;
         height = mode->VDisplay;
         refresh = mode->VRefresh;
+        
+        if (refresh==0) {
+            refresh=60;
+            ErrorF("Unable to fetch vertical refresh value, need for bandwidth calculation. \n");
+        }
 
         /*
          * Approximative, VERY conservative formula in some cases.
@@ -388,10 +392,10 @@ DecideOverlaySupport(xf86CrtcPtr crtc)
             DBG_DD(ErrorF(" via_xv.c : mClk= %f : \n", mClock));
             DBG_DD(ErrorF(" via_xv.c : memEfficiency= %f : \n",
                 memEfficiency));
-            DBG_DD(ErrorF(" via_xv.c : needBandwidth= %f : \n",
-                needBandWidth));
-            DBG_DD(ErrorF(" via_xv.c : totalBandwidth= %f : \n",
-                totalBandWidth));
+            ErrorF(" via_xv.c : needBandwidth= %f : \n",
+                needBandWidth);
+            ErrorF(" via_xv.c : totalBandwidth= %f : \n",
+                totalBandWidth);
             if (needBandWidth < totalBandWidth)
                 return TRUE;
         }
@@ -1274,8 +1278,7 @@ viaPutImage(ScrnInfoPtr pScrn,
             }
 
             /* If there is bandwidth issue, block the H/W overlay */
-            if (!pVia->OverlaySupported &&
-                    !(pVia->OverlaySupported = DecideOverlaySupport(crtc))) {
+            if (!(DecideOverlaySupport(crtc))) {
                 DBG_DD(ErrorF
                         (" via_xv.c : Xv Overlay rejected due to insufficient "
                                 "memory bandwidth.\n"));
