> Except that this isn't valid C (no statement following the label). I can
accept goto-s for some error handling cases where the alternatives
might be considered even more ugly than using goto. But the way
this or your original proposal look, I'd rather not have goto-s used
like this.


What about this?

+    bool is_conflict = false;

     for ( devfn = 0; devfn < 256; devfn++ )
     {
@@ -60,7 +61,7 @@ static void disable_conflicting_devices(void)
             continue;

         /* Check all bars */
-        for ( bar = 0; bar < 7; bar++ )
+        for ( bar = 0; bar < 7 && !is_conflict; bar++ )
         {
             bar_reg = PCI_BASE_ADDRESS_0 + 4*bar;
             if ( bar == 6 )
@@ -89,7 +90,7 @@ static void disable_conflicting_devices(void)
             bar_sz = pci_readl(devfn, bar_reg);
             bar_sz &= PCI_BASE_ADDRESS_MEM_MASK;

-            for ( i = 0; i < memory_map.nr_map ; i++ )
+            for ( i = 0; i < memory_map.nr_map && !is_conflict; i++ )
             {
                 if ( memory_map.map[i].type == E820_RESERVED )
                 {
@@ -105,13 +106,13 @@ static void disable_conflicting_devices(void)
                                devfn>>3, devfn&7, bar_reg, bar_data);
                         cmd = pci_readw(devfn, PCI_COMMAND);
                         pci_writew(devfn, PCI_COMMAND, ~cmd);
-                        /* Jump next device. */
-                        goto check_next_device;
+                        /* So need to jump next device. */
+                        is_conflict = true;
                     }
                 }
             }
         }
- check_next_device:
+        is_conflict = false;
     }
 }

Thanks
Tiejun

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to