From: Jan Beulich Date: Fri, 1 Feb 2019 10:29:53 +0000 (+0100) Subject: ns16550/PCI: fix skipping of devices X-Git-Tag: archive/raspbian/4.11.1+26-g87f51bf366-3+rpi1~1^2~66^2~12 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=91f2ad76aa82aebb9ebf0f959a8218429838c0a8;p=xen.git 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 master commit: c34fe0468acc61aca62422483c37a1309708f1cb master date: 2018-11-30 12:07:33 +0100 --- diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index f32dbd3247..863647ce58 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);