]> xenbits.xensource.com Git - xen.git/commitdiff
ns16550/PCI: fix skipping of devices
authorJan Beulich <jbeulich@suse.com>
Fri, 1 Feb 2019 11:02:45 +0000 (12:02 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 1 Feb 2019 11:02:45 +0000 (12:02 +0100)
Selecting between single/multiple BAR mode should happen after checking
whether to skip the present device, or else multi-BAR devices won't be
skipped correctly, due to port_idx getting set to zero in that case.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
master commit: c34fe0468acc61aca62422483c37a1309708f1cb
master date: 2018-11-30 12:07:33 +0100

xen/drivers/char/ns16550.c

index e4de3b476c280861bb12cf3fe04d0f5404456ea6..b7a9c5e72a097cf247456bfe648aafb1b75cae68 100644 (file)
@@ -972,18 +972,18 @@ pci_uart_config(struct ns16550 *uart, bool_t skip_amt, unsigned int idx)
                     }
                 }
 
-                if ( !param->bar0 )
-                {
-                    bar_idx = idx;
-                    port_idx = 0;
-                }
-
                 if ( port_idx >= param->max_ports )
                 {
                     idx -= param->max_ports;
                     continue;
                 }
 
+                if ( !param->bar0 )
+                {
+                    bar_idx = idx;
+                    port_idx = 0;
+                }
+
                 uart->io_base = 0;
                 bar = pci_conf_read32(0, b, d, f,
                                       PCI_BASE_ADDRESS_0 + bar_idx*4);