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

Re: [Minios-devel] [UNIKRAFT PATCHv5 26/46] plat/common: Add counter workaround for Cortex-A73 erratum 858921


  • To: Julien Grall <Julien.Grall@xxxxxxx>, Simon Kuenzer <simon.kuenzer@xxxxxxxxx>, "minios-devel@xxxxxxxxxxxxxxxxxxxx" <minios-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: "Wei Chen (Arm Technology China)" <Wei.Chen@xxxxxxx>
  • Date: Mon, 10 Sep 2018 09:25:19 +0000
  • Accept-language: en-US
  • Authentication-results: spf=none (sender IP is ) smtp.mailfrom=Wei.Chen@xxxxxxx;
  • Cc: "Kaly Xin \(Arm Technology China\)" <Kaly.Xin@xxxxxxx>, nd <nd@xxxxxxx>
  • Delivery-date: Mon, 10 Sep 2018 09:25:28 +0000
  • List-id: Mini-os development list <minios-devel.lists.xenproject.org>
  • Nodisclaimer: True
  • Spamdiagnosticmetadata: NSPM
  • Spamdiagnosticoutput: 1:99
  • Thread-index: AQHUMHkzs05avpMi10WYY1WMz4LVEaS9aByAgCdZeoCAAADNkIAASF+AgARLbDCAABgBgIAAAJzg
  • Thread-topic: [Minios-devel] [UNIKRAFT PATCHv5 26/46] plat/common: Add counter workaround for Cortex-A73 erratum 858921

Hi Julien,

> -----Original Message-----
> From: Julien Grall <julien.grall@xxxxxxx>
> Sent: 2018年9月10日 17:21
> To: Wei Chen (Arm Technology China) <Wei.Chen@xxxxxxx>; Simon Kuenzer
> <simon.kuenzer@xxxxxxxxx>; minios-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: Kaly Xin (Arm Technology China) <Kaly.Xin@xxxxxxx>; nd <nd@xxxxxxx>
> Subject: Re: [Minios-devel] [UNIKRAFT PATCHv5 26/46] plat/common: Add counter
> workaround for Cortex-A73 erratum 858921
> 
> 
> 
> On 10/09/18 09:12, Wei Chen (Arm Technology China) wrote:
> > Hi Julien,
> 
> Hi Wei,
> 
> >> -----Original Message-----
> >> From: Julien Grall <julien.grall@xxxxxxx>
> >> Sent: 2018年9月7日 22:20
> >> To: Wei Chen (Arm Technology China) <Wei.Chen@xxxxxxx>; Simon Kuenzer
> >> <simon.kuenzer@xxxxxxxxx>; minios-devel@xxxxxxxxxxxxxxxxxxxx
> >> Cc: Kaly Xin (Arm Technology China) <Kaly.Xin@xxxxxxx>; nd <nd@xxxxxxx>
> >> Subject: Re: [Minios-devel] [UNIKRAFT PATCHv5 26/46] plat/common: Add
> counter
> >> workaround for Cortex-A73 erratum 858921
> >>
> >> Hi,
> >>
> >> On 09/07/2018 11:01 AM, Wei Chen (Arm Technology China) wrote:
> >>>> -----Original Message-----
> >>>> From: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
> >>>> Sent: 2018年9月7日 17:58
> >>>> To: Julien Grall <Julien.Grall@xxxxxxx>; Wei Chen (Arm Technology China)
> >>>> <Wei.Chen@xxxxxxx>; minios-devel@xxxxxxxxxxxxxxxxxxxx
> >>>> Cc: Kaly Xin (Arm Technology China) <Kaly.Xin@xxxxxxx>; nd <nd@xxxxxxx>
> >>>> Subject: Re: [Minios-devel] [UNIKRAFT PATCHv5 26/46] plat/common: Add
> >> counter
> >>>> workaround for Cortex-A73 erratum 858921
> >>>>
> >>>>
> >>>>
> >>>> On 13.08.2018 11:03, Julien Grall wrote:
> >>>>> Hi Wei,
> >>>>>
> >>>>> On 10/08/18 08:08, Wei Chen wrote:
> >>>>>> The errata #858921 describes that Cortex-A73 (r0p0 - r0p2)
> >>>>>> counter read can return a wrong value when the counter crosses
> >>>>>> a 32bit boundary, but newer Cortex-A73 are not affected.
> >>>>>>
> >>>>>> The workaround involves performing the read twice, compare
> >>>>>> bit[32] of the two read values. If bit[32] is different,
> >>>>>> keep the first value, otherwise keep the second value.
> >>>>>>
> >>>>>> Signed-off-by: Wei Chen <wei.chen@xxxxxxx>
> >>>>>> ---
> >>>>>>     arch/arm/arm64/Config.uk |  9 +++++++++
> >>>>>>     plat/common/arm/time.c   | 20 ++++++++++++++++++++
> >>>>>>     2 files changed, 29 insertions(+)
> >>>>>>
> >>>>>> diff --git a/arch/arm/arm64/Config.uk b/arch/arm/arm64/Config.uk
> >>>>>> index 7797516..07bc8ec 100644
> >>>>>> --- a/arch/arm/arm64/Config.uk
> >>>>>> +++ b/arch/arm/arm64/Config.uk
> >>>>>> @@ -46,3 +46,12 @@ config MARCH_ARM64_CORTEXA75
> >>>>>>             Compile for Armv8.2 Cortex-A75 (and compatible) CPUs
> >>>>>>     endchoice
> >>>>>> +
> >>>>>> +config ARM64_ERRATUM_858921
> >>>>>> +    bool "Workaround for Cortex-A73 erratum 858921"
> >>>>>> +    default n
> >>>>>> +    depends on MARCH_ARM64_CORTEXA73
> >>>>>
> >>>>> I don't think this is correct here. MARCH_ARM64_CORTEXA73 is about how
> >>>>> the code was optimized for a given processor. It would still be possible
> >>>>> to run a code compiled with generic option on Cortex-A73.
> >>>>>
> >>>>> So you want to at least drop the depends on here and possibly default y
> >>>>> for CORTEX_A73 and GENERIC.
> >>>>>
> >>>>> Cheers,
> >>>>
> >>>> I am okay with Juliens suggestion. I agree that it is safer to have the
> >>>> erratum enabled on default for people that do not know if their SOC is
> >>>> affected or not.
> >>>> We may need to think about the MARCH_ARM64_NATIVE and the other cases
> >>>> where the could would run on A73. Probably these should also go to the
> >>>> `depends on` list?
> >>>>
> >>>
> >>> Ok, that sounds sensible. I will fix it in next version, and add
> >>> MARCH_ARM64_NATIVE to depends on list.
> >>
> >> What would prevent a binary optimized for Cortex-A53 to run on
> >> Cortex-A73? Technically, the optimization is just about how the
> >> instructions are going to get scheduled and may some ARMv8.x features
> >> turned on.
> >>
> >> Also, if you want your binary to run on multiple platform, it feels
> >> slightly odd to impose the errata for everyone. Imagine that now you are
> >> going to read twice the system register and doing some math on it...
> >>
> >
> > So, how about setting default to y and just depending on ARM64? (We can
> reach here
> > Means we have selected arm64 already, so, no explicit dependence for it)
> 
> That would be suitable for a first version. Later you might want to
> check the MIDR and avoid the erratum on affected platform via an
> alternative or jump table.
> 

OK, thanks!

> >
> >> Lastly, bear in mind you may have big.LITTLE system in place...
> >>
> >
> > Ahh, I don't want to consider so much in this stage, it would be an
> > infinite expanded topic that will make me crazy ; (
> 
> You would not be the only one ;). I just thought it would be worth
> keeping that in mind.
> 

Yes, I have kept a lot of TODO in my mind : (

> Cheers,
> 
> --
> Julien Grall
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

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