diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py
index e65d3309c914c5e0ffaaac96664a6a691bfe113d..475b99d7e529e7d05ac91d671f2866ebd9bde1af 100644
--- a/lib/hypervisor/hv_kvm.py
+++ b/lib/hypervisor/hv_kvm.py
@@ -857,11 +857,13 @@ class KVMHypervisor(hv_base.BaseHypervisor):
       utils.EnsureDirs([(self._InstanceChrootDir(name),
                          constants.SECURE_DIR_MODE)])
 
-    if not incoming:
-      # Configure the network now for starting instances, during
-      # FinalizeMigration for incoming instances
-      for nic_seq, nic in enumerate(kvm_nics):
-        self._ConfigureNIC(instance, nic_seq, nic, taps[nic_seq])
+    # Configure the network now for starting instances and bridged interfaces,
+    # during FinalizeMigration for incoming instances' routed interfaces
+    for nic_seq, nic in enumerate(kvm_nics):
+      if (incoming and
+          nic.nicparams[constants.NIC_MODE] != constants.NIC_MODE_BRIDGED):
+        continue
+      self._ConfigureNIC(instance, nic_seq, nic, taps[nic_seq])
 
     if security_model == constants.HT_SM_POOL:
       ss = ssconf.SimpleStore()
@@ -1026,6 +1028,9 @@ class KVMHypervisor(hv_base.BaseHypervisor):
       kvm_nics = kvm_runtime[1]
 
       for nic_seq, nic in enumerate(kvm_nics):
+        if nic.nicparams[constants.NIC_MODE] == constants.NIC_MODE_BRIDGED:
+          # Bridged interfaces have already been configured
+          continue
         try:
           tap = utils.ReadFile(self._InstanceNICFile(instance.name, nic_seq))
         except EnvironmentError, err: