[xen staging] ns16550/PCI: fix skipping of devices

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[xen staging] ns16550/PCI: fix skipping of devices

patchbot
commit c34fe0468acc61aca62422483c37a1309708f1cb
Author:     Jan Beulich <[hidden email]>
AuthorDate: Fri Nov 30 12:07:33 2018 +0100
Commit:     Jan Beulich <[hidden email]>
CommitDate: Fri Nov 30 12:07:33 2018 +0100

    ns16550/PCI: fix skipping of devices
   
    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 <[hidden email]>
    Acked-by: Wei Liu <[hidden email]>
---
 xen/drivers/char/ns16550.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c
index 3c66e65b1c..3eba56eadc 100644
--- a/xen/drivers/char/ns16550.c
+++ b/xen/drivers/char/ns16550.c
@@ -1037,18 +1037,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);
--
generated by git-patchbot for /home/xen/git/xen.git#staging

_______________________________________________
Xen-changelog mailing list
[hidden email]
https://lists.xenproject.org/xen-changelog