Allow intermediate parts of the command line options to be absent (expressed by two immediately succeeding commas). Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -556,26 +556,23 @@ static void __init ns16550_parse_port_co else if ( (baud = simple_strtoul(conf, &conf, 10)) != 0 ) uart->baud = baud; - if ( *conf == ''/'') + if ( *conf == ''/'' ) { conf++; uart->clock_hz = simple_strtoul(conf, &conf, 0) << 4; } - if ( *conf != '','' ) - goto config_parsed; - conf++; - - uart->data_bits = simple_strtoul(conf, &conf, 10); + if ( *conf == '','' && *++conf != '','' ) + { + uart->data_bits = simple_strtoul(conf, &conf, 10); - uart->parity = parse_parity_char(*conf); - conf++; + uart->parity = parse_parity_char(*conf); - uart->stop_bits = simple_strtoul(conf, &conf, 10); + uart->stop_bits = simple_strtoul(conf + 1, &conf, 10); + } - if ( *conf == '','' ) + if ( *conf == '','' && *++conf != '','' ) { - conf++; if ( strncmp(conf, "pci", 3) == 0 ) { if ( pci_uart_config(uart, 1/* skip AMT */, uart - ns16550_com) ) @@ -592,24 +589,21 @@ static void __init ns16550_parse_port_co { uart->io_base = simple_strtoul(conf, &conf, 0); } + } - if ( *conf == '','' ) - { - conf++; - uart->irq = simple_strtoul(conf, &conf, 10); - if ( *conf == '','' ) - { - conf++; - uart->ps_bdf_enable = 1; - parse_pci_bdf(&conf, &uart->ps_bdf[0]); - if ( *conf == '','' ) - { - conf++; - uart->pb_bdf_enable = 1; - parse_pci_bdf(&conf, &uart->pb_bdf[0]); - } - } - } + if ( *conf == '','' && *++conf != '','' ) + uart->irq = simple_strtol(conf, &conf, 10); + + if ( *conf == '','' && *++conf != '','' ) + { + uart->ps_bdf_enable = 1; + parse_pci_bdf(&conf, &uart->ps_bdf[0]); + } + + if ( *conf == '','' && *++conf != '','' ) + { + uart->pb_bdf_enable = 1; + parse_pci_bdf(&conf, &uart->pb_bdf[0]); } config_parsed: _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Andrew Cooper
2012-Sep-11 10:22 UTC
Re: [PATCH 7/8] ns16550: command line parsing adjustments
On 11/09/12 11:20, Jan Beulich wrote:> Allow intermediate parts of the command line options to be absent > (expressed by two immediately succeeding commas). > > Signed-off-by: Jan Beulich <jbeulich@suse.com>Can you also update com{1,2} in the docs to reflect this?> > --- a/xen/drivers/char/ns16550.c > +++ b/xen/drivers/char/ns16550.c > @@ -556,26 +556,23 @@ static void __init ns16550_parse_port_co > else if ( (baud = simple_strtoul(conf, &conf, 10)) != 0 ) > uart->baud = baud; > > - if ( *conf == ''/'') > + if ( *conf == ''/'' ) > { > conf++; > uart->clock_hz = simple_strtoul(conf, &conf, 0) << 4; > } > > - if ( *conf != '','' ) > - goto config_parsed; > - conf++; > - > - uart->data_bits = simple_strtoul(conf, &conf, 10); > + if ( *conf == '','' && *++conf != '','' ) > + { > + uart->data_bits = simple_strtoul(conf, &conf, 10); > > - uart->parity = parse_parity_char(*conf); > - conf++; > + uart->parity = parse_parity_char(*conf); > > - uart->stop_bits = simple_strtoul(conf, &conf, 10); > + uart->stop_bits = simple_strtoul(conf + 1, &conf, 10); > + } > > - if ( *conf == '','' ) > + if ( *conf == '','' && *++conf != '','' ) > { > - conf++; > if ( strncmp(conf, "pci", 3) == 0 ) > { > if ( pci_uart_config(uart, 1/* skip AMT */, uart - ns16550_com) ) > @@ -592,24 +589,21 @@ static void __init ns16550_parse_port_co > { > uart->io_base = simple_strtoul(conf, &conf, 0); > } > + } > > - if ( *conf == '','' ) > - { > - conf++; > - uart->irq = simple_strtoul(conf, &conf, 10); > - if ( *conf == '','' ) > - { > - conf++; > - uart->ps_bdf_enable = 1; > - parse_pci_bdf(&conf, &uart->ps_bdf[0]); > - if ( *conf == '','' ) > - { > - conf++; > - uart->pb_bdf_enable = 1; > - parse_pci_bdf(&conf, &uart->pb_bdf[0]); > - } > - } > - } > + if ( *conf == '','' && *++conf != '','' ) > + uart->irq = simple_strtol(conf, &conf, 10); > + > + if ( *conf == '','' && *++conf != '','' ) > + { > + uart->ps_bdf_enable = 1; > + parse_pci_bdf(&conf, &uart->ps_bdf[0]); > + } > + > + if ( *conf == '','' && *++conf != '','' ) > + { > + uart->pb_bdf_enable = 1; > + parse_pci_bdf(&conf, &uart->pb_bdf[0]); > } > > config_parsed: > > >-- Andrew Cooper - Dom0 Kernel Engineer, Citrix XenServer T: +44 (0)1223 225 900, http://www.citrix.com
Jan Beulich
2012-Sep-11 10:48 UTC
Re: [PATCH 7/8] ns16550: command line parsing adjustments
>>> On 11.09.12 at 12:22, Andrew Cooper <andrew.cooper3@citrix.com> wrote: > On 11/09/12 11:20, Jan Beulich wrote: >> Allow intermediate parts of the command line options to be absent >> (expressed by two immediately succeeding commas). >> >> Signed-off-by: Jan Beulich <jbeulich@suse.com> > > Can you also update com{1,2} in the docs to reflect this?Sure - here''s the incremental diff. Jan --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -199,7 +199,7 @@ If set, override Xen''s calculation of th If set, override Xen''s default choice for the platform timer. ### com1,com2 -> `= <baud>[/<clock_hz>][,DPS[,<io-base>[,<irq>[,<port-bdf>[,<bridge-bdf>]]]] | pci | amt ] ` +> `= <baud>[/<clock_hz>][,[DPS][,[<io-base>|pci|amt][,[<irq>][,[<port-bdf>][,[<bridge-bdf>]]]]]]` Both option `com1` and `com2` follow the same format.