From c34fe0468acc61aca62422483c37a1309708f1cb Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 30 Nov 2018 12:07:33 +0100 Subject: [PATCH] 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 Acked-by: Wei Liu --- 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); -- 2.39.5