diff --git a/lib/constants.py b/lib/constants.py
index 2e0b8d99a8d55f72220a7631b5b31a3d32037a07..b33054f77aa22c80a1de69ddb8abe491defaadf6 100644
--- a/lib/constants.py
+++ b/lib/constants.py
@@ -448,6 +448,7 @@ HVC_DEFAULTS = {
         HV_ROOT_PATH: '/dev/vda',
         HV_ACPI: True,
         HV_SERIAL_CONSOLE: True,
+        HV_VNC_BIND_ADDRESS: None,
         },
     HT_FAKE: {
         },
diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py
index 25fbb9d9e7a12ec4d2e03013cc4d22d15e3ba7bf..07c2a9d7cd9ccd5ff686154b0972ad673c92eaf7 100644
--- a/lib/hypervisor/hv_kvm.py
+++ b/lib/hypervisor/hv_kvm.py
@@ -54,6 +54,7 @@ class KVMHypervisor(hv_base.BaseHypervisor):
     constants.HV_ROOT_PATH,
     constants.HV_ACPI,
     constants.HV_SERIAL_CONSOLE,
+    constants.HV_VNC_BIND_ADDRESS,
     ]
 
   _MIGRATION_STATUS_RE = re.compile('Migration\s+status:\s+(\w+)',
@@ -649,6 +650,13 @@ class KVMHypervisor(hv_base.BaseHypervisor):
         raise errors.HypervisorError("The initrd path must an absolute path"
                                      ", if defined")
 
+    vnc_bind_address = hvparams[constants.HV_VNC_BIND_ADDRESS]
+    if vnc_bind_address:
+      if not utils.IsValidIP(vnc_bind_address):
+        raise errors.OpPrereqError("given VNC bind address '%s' doesn't look"
+                                   " like a valid IP address" %
+                                   vnc_bind_address)
+
   def ValidateParameters(self, hvparams):
     """Check the given parameters for validity.