diff --git a/x11/driver/xorg-video-s3virge/files/check-max-value.patch b/x11/driver/xorg-video-s3virge/files/check-max-value.patch
new file mode 100644
index 0000000000..0573a05c9c
--- /dev/null
+++ b/x11/driver/xorg-video-s3virge/files/check-max-value.patch
@@ -0,0 +1,24 @@
+--- a/src/s3v_driver.c
++++ b/src/s3v_driver.c
+@@ -1212,8 +1212,6 @@
+ /* todo - The virge limit is 2048 vertical & horizontal */
+ /* pixels, not clock register settings. */
+ /* true for all ViRGE? */
+- pScrn->maxHValue = 2048;
+- pScrn->maxVValue = 2048;
+
+ /* Lower depths default to config file */
+ pScrn->virtualX = pScrn->display->virtualX;
+@@ -2566,6 +2564,12 @@
+ if ((pScrn->bitsPerPixel + 7)/8 * mode->HDisplay > 4095)
+ return MODE_VIRTUAL_X;
+
++ if (mode->HTotal > 2048)
++ return MODE_BAD_HVALUE;
++
++ if (mode->VTotal > 2048)
++ return MODE_BAD_VVALUE;
++
+ return MODE_OK;
+ }
+
diff --git a/x11/driver/xorg-video-s3virge/pspec.xml b/x11/driver/xorg-video-s3virge/pspec.xml
index 695a528cb1..68e1b66d3f 100644
--- a/x11/driver/xorg-video-s3virge/pspec.xml
+++ b/x11/driver/xorg-video-s3virge/pspec.xml
@@ -18,7 +18,7 @@
util-macros
-
+ check-max-value.patch