[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 0/2] xen/common: llc-coloring parser fixes


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Mykola Kvach <xakep.amatop@xxxxxxxxx>
  • Date: Mon, 18 May 2026 11:04:31 +0300
  • Arc-authentication-results: i=1; mx.google.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=99gwQBe9ex5niKZl03wLsIShBZ012H4z1zs12SCF99U=; fh=22AKn4tiP/brJKt2z+QCRavBTlFZKpxhtfgZsL2okpI=; b=AxgT95gAzIU+ktvo0fKub6bSs2+0p7zctSDaaeCWpwWTIKWeI7GQ0lvgaRsdzbEm0U YdDBN9ifD1cTn2qMU6SqcpZX6IiX2IM4nZhfrSaLKJcWLjBPLSJG8i27q1NsMEjsi5Je sfvblICvPHbz94smuFQH9u0Iau5tInTw9d/WnI6OpDZDMajEW9OyhKdJyY0DjAo30Id/ DFif/GhgFdLeiJmFTI7SWknvKfZPbJJN10sXrh0ROX9KYj4y4XV5nRrzznM9icIymvQT 7yx7SppYROyVtREmzKkUaNpDNKHZW2Ui/rSEQ10zaAgotU3DmeOamyPodel5MkP3t8oI PPyw==; darn=lists.xenproject.org
  • Arc-seal: i=1; a=rsa-sha256; t=1779091484; cv=none; d=google.com; s=arc-20240605; b=SPwAWHivt7g+w4GualnuGarInFiMdDhSk1pXiJYcf8ZfiFcE5AIQ8bsWRPEp0cUpBp VVIANaIp2eCDzu+4DilXW2V1EOTFjLHCHoHPnVw8ER+8tphSCvSSNLTpIWXp8z3OXDXI 4Wx5ntGs4cikeSui6evH875eLT/vUFUqTMPkdpY0arivwBS2ANEODVgcFlps6/5HfUr9 8KM/vpZmGnqtJTAQgduz71SjglEClmgKJlafoTkoB3OpAzRZqMocSW1Aa+x55Uz2Spt5 cXWCSHLqgq+zFKNWCxBpIty3MDFiNOKgZ4QLSFZ5d3y1C4NbzpX1oiC9yiMqziM8LAOf emxA==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
  • Cc: Mykola Kvach <mykola_kvach@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Julien Grall <julien@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx, Carlo Nonato <carlo.nonato@xxxxxxxxxxxxxxx>, Marco Solieri <marco.solieri@xxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 18 May 2026 08:04:54 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Mon, May 18, 2026 at 10:43 AM Jan Beulich <jbeulich@xxxxxxxx> wrote:
>
> On 18.05.2026 09:19, Mykola Kvach wrote:
> > On Mon, May 18, 2026 at 10:06 AM Jan Beulich <jbeulich@xxxxxxxx> wrote:
> >> On 18.05.2026 09:01, Mykola Kvach wrote:
> >>> On Mon, May 18, 2026 at 9:52 AM Jan Beulich <jbeulich@xxxxxxxx> wrote:
> >>>> On 18.05.2026 08:42, Mykola Kvach wrote:
> >>>>> On Mon, May 18, 2026 at 9:20 AM Jan Beulich <jbeulich@xxxxxxxx> wrote:
> >>>>>> On 16.05.2026 17:03, Mykola Kvach wrote:
> >>>>>>> This small series fixes two issues in parse_color_config().
> >>>>>>>
> >>>>>>> The first patch makes parse failures leave the caller-visible color 
> >>>>>>> count
> >>>>>>> at zero.  This prevents a rejected command-line value from leaving a
> >>>>>>> partially parsed configuration behind for later init paths to consume.
> >>>>>>>
> >>>>>>> The second patch rejects empty color tokens.  Previously, delimiters 
> >>>>>>> in
> >>>>>>> places where a color value was expected could be interpreted as color 
> >>>>>>> 0,
> >>>>>>> because simple_strtoul() returns zero without advancing the input 
> >>>>>>> pointer.
> >>>>>>> The patch checks that each parsed color value consumed input.  It also
> >>>>>>> adds the missing newline to the DT color parsing error message.
> >>>>>>>
> >>>>>>> Mykola Kvach (2):
> >>>>>>>   xen/common: llc-coloring: clear color count on parse failure
> >>>>>>>   xen/common: llc-coloring: reject empty color tokens
> >>>>>>
> >>>>>> For both of these, a question which isn't even considered in the 
> >>>>>> reasoning
> >>>>>> is whether the present behavior may be intentional. Especially for the 
> >>>>>> 2nd
> >>>>>> ISTR Stefano(?) not so long ago indicating that the behavior is indeed
> >>>>>> intended to be this way. That may have been somewhere on Matrix rather 
> >>>>>> than
> >>>>>> on the list, though.
> >>>>>
> >>>>> Thank you for pointing this out.
> >>>>>
> >>>>> For the first patch, my reasoning was that returning an error while
> >>>>> leaving a partially parsed caller-visible color count behind looks
> >>>>> surprising. If the value is rejected, I think later init paths should
> >>>>> not be able to consume the partially parsed state.
> >>>>>
> >>>>> For the second patch, my reasoning was that the current behavior looks
> >>>>> accidental rather than an intentional extension of the syntax.
> >>>>
> >>>> That was my impression as well, hence why I had raised the question back
> >>>> then.
> >>>>
> >>>>> The parser comment says:
> >>>>>
> >>>>> COLOR_CONFIGURATION ::= COLOR | RANGE,...,COLOR | RANGE
> >>>>> RANGE ::= COLOR-COLOR
> >>>>>
> >>>>> The user guide also describes this as a comma-separated list of colors
> >>>>> or ranges, with ranges written as hyphen-separated inclusive intervals.
> >>>>> I don't see an empty-token production there.
> >>>>
> >>>> What you quote is insufficient to determine: COLOR may be allowed to be
> >>>> <nothing>. Iirc the reasoning went in particular towards a range with
> >>>> merely the upper end specified being something (halfway) meaningful.
> >>>
> >>> Right, I see your point.
> >>>
> >>> The grammar does not define COLOR explicitly, so it does not by itself
> >>> prove that an empty token is invalid. I was implicitly reading COLOR as
> >>> a numeric color value, partly because all examples seem to use numeric
> >>> values, but I agree that this is not stated there.
> >>>
> >>> If this behavior is intentional, then I agree the second patch should
> >>> not go in as-is.
> >>
> >> Just to mention: Something like "-5" won't be interpreted as "0-5" even
> >> right now. Instead it's taken as a single color with value -5U, afaict.
> >
> > I don't think that is what happens with the current parser.
> >
> > I tested this without the patches from this series:
> >
> > (XEN) Command line: dom0_mem=2048M console=dtuart dtuart=serial0
> > (XEN) loglvl=all console_timestamps=boot llc-coloring=on
> > (XEN) xen-llc-colors=-5
> > ...
> > (XEN) LLC coloring info:
> > (XEN) Number of LLC colors supported: 32
> > (XEN) Xen LLC colors (6): { 0-5 }
> >
> > So "-5" is currently interpreted as "0-5", not as a single color with
> > value -5U.
> >
> > That seems to happen because simple_strtoul() does not consume the
> > leading '-', so start remains 0 and the parser then takes the range
> > path.
>
> Oh, I didn't recall this incompatibility with strtoul(). We also don't
> permit a leading + there. IOW the behavior of the color parsing would
> change if we made the functions (more) compatible with the standard.

Right.

The patch makes this explicit in one direction: a COLOR must consume
input. If "-N" is intended to be valid syntax, then I think it should be
handled as a separate explicit case, rather than relying on
simple_strtoul() stopping at '-'.

Best regards,
Mykola



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.