From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Chen, Tiejun" Subject: Re: [v8][PATCH 06/16] hvmloader/pci: disable all pci devices conflicting with rdm Date: Thu, 16 Jul 2015 21:48:55 +0800 Message-ID: <55A7B647.8080808@intel.com> References: <1437029582-19564-1-git-send-email-tiejun.chen@intel.com> <1437029582-19564-7-git-send-email-tiejun.chen@intel.com> <55A79AFA.3040500@intel.com> <55A7AFF4.1040909@intel.com> <55A7CE890200007800091EC8@mail.emea.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <55A7CE890200007800091EC8@mail.emea.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich Cc: Wei Liu , Ian Campbell , Stefano Stabellini , George Dunlap , Andrew Cooper , Ian Jackson , "xen-devel@lists.xen.org" , Keir Fraser List-Id: xen-devel@lists.xenproject.org > 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