Hi Luca,

On 25/05/2023 11:01, Luca Fancellu wrote:
On 25 May 2023, at 10:09, Julien Grall <jul...@xen.org> wrote:
diff --git a/xen/arch/arm/include/asm/arm64/vfp.h 
b/xen/arch/arm/include/asm/arm64/vfp.h
index e6e8c363bc16..4aa371e85d26 100644
--- a/xen/arch/arm/include/asm/arm64/vfp.h
+++ b/xen/arch/arm/include/asm/arm64/vfp.h
@@ -6,7 +6,19 @@
    struct vfp_state
  {
+    /*
+     * When SVE is enabled for the guest, fpregs memory will be used to
+     * save/restore P0-P15 registers, otherwise it will be used for the V0-V31
+     * registers.
+     */
      uint64_t fpregs[64] __vfp_aligned;
+    /*
+     * When SVE is enabled for the guest, sve_zreg_ctx_end points to memory
+     * where Z0-Z31 registers and FFR can be saved/restored, it points at the
+     * end of the Z0-Z31 space and at the beginning of the FFR space, it's done
+     * like that to ease the save/restore assembly operations.
+     */
+    uint64_t *sve_zreg_ctx_end;

Sorry I only noticed now. But shouldn't this be protected with #ifdef 
CONFIG_SVE? Same...

      register_t fpcr;
      register_t fpexc32_el2;
      register_t fpsr;
diff --git a/xen/arch/arm/include/asm/domain.h 
b/xen/arch/arm/include/asm/domain.h
index 331da0f3bcc3..814652d92568 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -195,6 +195,8 @@ struct arch_vcpu
      register_t tpidrro_el0;
        /* HYP configuration */
+    register_t zcr_el1;
+    register_t zcr_el2;

... here.

Sure I can protect them. It was done on purpose before to avoid ifdefs but I 
think saving space
is better here and also there won’t be any use of them when the config is off.

I wasn't thinking about saving space. I was more thinking about catching any (mis)use of the fields in common code. With the #ifdef, the compilation would fail.

Cheers,

--
Julien Grall

Reply via email to