[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v1] xen/drivers: ns16550: Fix the return logic for pci_uart_config()
pci_uart_config() should return 0 when it probes the correct uart device and sets the properties of "struct ns16550". Else, it should return -ENODEV. Also before returning -ENODEV, it should restore the value of uart->io_base. The callers should check if pci_uart_config() has returned 0 (for success) or not. Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx> --- This was based on a discussion "[XEN v4 04/11] xen/drivers: ns16550: Use paddr_t for io_base/io_size" https://patchew.org/Xen/20230321140357.24094-1-ayan.kumar.halder@xxxxxxx/20230321140357.24094-5-ayan.kumar.halder@xxxxxxx/ xen/drivers/char/ns16550.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index 212a9c49ae..5a35498a06 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -1342,13 +1342,9 @@ pci_uart_config(struct ns16550 *uart, bool_t skip_amt, unsigned int idx) } } - if ( !skip_amt ) - return -1; - - /* No AMT found, fallback to the defaults. */ uart->io_base = orig_base; - return 0; + return -ENODEV; } static void enable_exar_enhanced_bits(const struct ns16550 *uart) @@ -1527,13 +1523,13 @@ static bool __init parse_positional(struct ns16550 *uart, char **str) #ifdef CONFIG_HAS_PCI if ( strncmp(conf, "pci", 3) == 0 ) { - if ( pci_uart_config(uart, 1/* skip AMT */, uart - ns16550_com) ) + if ( !pci_uart_config(uart, 1/* skip AMT */, uart - ns16550_com) ) return true; conf += 3; } else if ( strncmp(conf, "amt", 3) == 0 ) { - if ( pci_uart_config(uart, 0, uart - ns16550_com) ) + if ( !pci_uart_config(uart, 0, uart - ns16550_com) ) return true; conf += 3; } @@ -1642,13 +1638,17 @@ static bool __init parse_namevalue_pairs(char *str, struct ns16550 *uart) case device: if ( strncmp(param_value, "pci", 3) == 0 ) { - pci_uart_config(uart, 1/* skip AMT */, uart - ns16550_com); - dev_set = true; + if ( !pci_uart_config(uart, 1/* skip AMT */, uart - ns16550_com) ) + dev_set = true; + else + return false; } else if ( strncmp(param_value, "amt", 3) == 0 ) { - pci_uart_config(uart, 0, uart - ns16550_com); - dev_set = true; + if ( !pci_uart_config(uart, 0, uart - ns16550_com) ) + dev_set = true; + else + return false; } break; -- 2.25.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |