[bootwrapper PATCH v3 01/15] aarch64: correct ZCR_EL3.LEN initialization

Mark Rutland mark.rutland at arm.com
Fri Jan 28 02:03:57 PST 2022


On Thu, Jan 27, 2022 at 06:55:00PM +0000, Mark Brown wrote:
> On Thu, Jan 27, 2022 at 04:08:50PM +0000, Mark Rutland wrote:
> > On Tue, Jan 25, 2022 at 05:44:47PM +0000, Mark Brown wrote:
> > > On Tue, Jan 25, 2022 at 04:33:39PM +0000, Mark Rutland wrote:
> > > > On Tue, Jan 25, 2022 at 03:59:38PM +0000, Mark Brown wrote:
> 
> > > > a) Use <register>_<field>_<valuename> definition, as here.
> 
> > > > b) Use <register>_<field>_MASK, and add comments at each usage as to why we use
> > > >    a mask as a value, to explain why that isn't a bug.
> 
> > > > c) Have both <register>_<field>_MASK and some value definition, and use some
> > > >    insertion helper to insert the value.
> 
> > > > ... and I went with (a) because it was the simplest.
> 
> > > > Is there a problem with this?
> 
> > > My concern is continuity of the enumeration algorithm between the
> > > various implementations we have, it's something we're not currently
> > > great with and this creates a separation between the kernel and the boot
> > > wrapper implementations.  There's no change in what's actually being
> > > done but it creates some additional effort to figure out why we're
> > > setting a maximum here and not trying to set all the bits as we do in
> > > the kernel.
> 
> > TBH, I'd argue if we're setting those bits in the kernel it's probably a bug,
> > because we don't know *exactly* what effect they'll have when allocated in the
> > future.
> 
> My comments there are related purely to the renaming of the constant,
> not to the narrowing of the bitmask which is less of an issue.

Ok.

> Basically avoiding the question "why is that a maximum and not a mask"
> and if there's limits on the valid values that are more restrictive than
> the representable values.
>
> The ideal thing for the boot wrapper would be option (c) with either a
> configuration option to set the maximum to something lower than all
> bits, unless someone was unduly enthusiastic and wanted to have an all
> CPUs enumeration algorithm, but both are probably more trouble than it's
> worth.

FWIW, if it's useful for testing to be able to configure the ZCR_EL3.LEN to
some smaller value, I'd be happy to move to (c) and get that plumbed into the
build system.

For now, I plan to take the series with this as-is, since having
ZCR_EL3_LEN_MAX is consistent with other field values we only insert, e.g.
MDCR_EL3_NSPB_NS_NOTRAP.

I'm happy to rejig that in future.

Thanks,
Mark



More information about the linux-arm-kernel mailing list