mbox series

[Xen-devel,for-4.12,v2,0/7] xen/arm: Workaround for Cortex-A76 erratum 1165522

Message ID 20190128115026.3336-1-julien.grall@arm.com
Headers show
Series xen/arm: Workaround for Cortex-A76 erratum 1165522 | expand

Message

Julien Grall Jan. 28, 2019, 11:50 a.m. UTC
Hi all,

Early version of Cortex-A76 can end-up with corrupt TLBs if they
speculate an AT instruction while the S1/S2 system registers are in an
inconsistent state.

This can happen during guest context switch and when invalidating the
TLBs for other than the current VMID.

The workaround implemented in Xen will:
    - Use an empty stage-2 with a reserved VMID while context
      switching between 2 guests
    - Use an empty stage-2 with the VMID where TLBs need to
      be flushed

Cheers,

CC: <jgross@suse.com>

Julien Grall (7):
  xen/arm: Only set necessary flags when initializing HCR_EL2
  xen/arm: p2m: Provide an helper to generate the VTTBR
  xen/arm: p2m: Introduce an helper to allocate the root page-table
  xen/arm: domain_build: Don't switch to the guest P2M when copying data
  xen/arm: p2m: Only use isb() when it is necessary
  xen/arm: Implement workaround for Cortex-A76 erratum 1165522
  DO NOT APPLY Allow testing the new AT speculate workaround code

 docs/misc/arm/silicon-errata.txt |   1 +
 xen/arch/arm/cpuerrata.c         |  16 ++++++
 xen/arch/arm/domain.c            |   8 ++-
 xen/arch/arm/domain_build.c      |  13 -----
 xen/arch/arm/p2m.c               | 118 +++++++++++++++++++++++++++++++++++----
 xen/arch/arm/traps.c             |   8 ++-
 xen/include/asm-arm/cpufeature.h |   3 +-
 xen/include/asm-arm/processor.h  |   2 +
 8 files changed, 139 insertions(+), 30 deletions(-)

Comments

Juergen Gross Jan. 28, 2019, 12:12 p.m. UTC | #1
On 28/01/2019 12:50, Julien Grall wrote:
> Hi all,
> 
> Early version of Cortex-A76 can end-up with corrupt TLBs if they
> speculate an AT instruction while the S1/S2 system registers are in an
> inconsistent state.
> 
> This can happen during guest context switch and when invalidating the
> TLBs for other than the current VMID.
> 
> The workaround implemented in Xen will:
>     - Use an empty stage-2 with a reserved VMID while context
>       switching between 2 guests
>     - Use an empty stage-2 with the VMID where TLBs need to
>       be flushed
> 
> Cheers,
> 
> CC: <jgross@suse.com>
> 
> Julien Grall (7):
>   xen/arm: Only set necessary flags when initializing HCR_EL2
>   xen/arm: p2m: Provide an helper to generate the VTTBR
>   xen/arm: p2m: Introduce an helper to allocate the root page-table
>   xen/arm: domain_build: Don't switch to the guest P2M when copying data
>   xen/arm: p2m: Only use isb() when it is necessary
>   xen/arm: Implement workaround for Cortex-A76 erratum 1165522
>   DO NOT APPLY Allow testing the new AT speculate workaround code
> 
>  docs/misc/arm/silicon-errata.txt |   1 +
>  xen/arch/arm/cpuerrata.c         |  16 ++++++
>  xen/arch/arm/domain.c            |   8 ++-
>  xen/arch/arm/domain_build.c      |  13 -----
>  xen/arch/arm/p2m.c               | 118 +++++++++++++++++++++++++++++++++++----
>  xen/arch/arm/traps.c             |   8 ++-
>  xen/include/asm-arm/cpufeature.h |   3 +-
>  xen/include/asm-arm/processor.h  |   2 +
>  8 files changed, 139 insertions(+), 30 deletions(-)
> 

Release-acked-by: Juergen Gross <jgross@suse.com>


Juergen