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

Re: [XEN PATCH] xen/arm: Hide Pointer Authentication (PAC)



Hi Vladimir,

On 20/01/2021 11:27, Vladimir Murzin wrote:
The ARMv8.3 Pointer Authentication extension is not supported by Xen
at the moment, so do not expose that via ID register.

Signed-off-by: Vladimir Murzin <vladimir.murzin@xxxxxxx>
Reviewed-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>
---
  xen/arch/arm/cpufeature.c        |  6 +++++
  xen/include/asm-arm/cpufeature.h | 38 +++++++++++++++++++++++++++++++-
  2 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/cpufeature.c b/xen/arch/arm/cpufeature.c
index 99fe4db28..1d8878380 100644
--- a/xen/arch/arm/cpufeature.c
+++ b/xen/arch/arm/cpufeature.c
@@ -187,6 +187,12 @@ static int __init create_guest_cpuinfo(void)
/* Hide MTE support as Xen does not support it */
      guest_cpuinfo.pfr64.mte = 0;
+
+    /* Hide PAC support as Xen does not support it */
+    guest_cpuinfo.isa64.apa = 0;
+    guest_cpuinfo.isa64.api = 0;
+    guest_cpuinfo.isa64.gpa = 0;
+    guest_cpuinfo.isa64.gpi = 0;
  #endif
/* Hide AMU support */
diff --git a/xen/include/asm-arm/cpufeature.h b/xen/include/asm-arm/cpufeature.h
index c6e5711b2..43135abef 100644
--- a/xen/include/asm-arm/cpufeature.h
+++ b/xen/include/asm-arm/cpufeature.h
@@ -212,8 +212,44 @@ struct cpuinfo_arm {
          };
      } mm64;
- struct {
+    union {
          uint64_t bits[2];
+        struct {
+            /* ISAR0 */
+            unsigned long __res0:4;
+            unsigned long aes:4;
+            unsigned long sha1:4;
+            unsigned long sha2:4;
+            unsigned long crc32:4;
+            unsigned long atomic:4;
+            unsigned long __res1:4;
+            unsigned long rdm:4;
+            unsigned long sha3:4;
+            unsigned long sm3:4;
+            unsigned long sm4:4;
+            unsigned long dp:4;
+            unsigned long fhm:4;
+            unsigned long ts:4;
+            unsigned long tlb:4;
+            unsigned long rndr:4;
+
+            /* ISAR1 */
+            unsigned long dpb:4;
+            unsigned long apa:4;
+            unsigned long api:4;
+            unsigned long jscvt:4;
+            unsigned long fcma:4;
+            unsigned long lrcpc:4;
+            unsigned long gpa:4;
+            unsigned long gpi:4;
+            unsigned long frintts:4;
+            unsigned long sb:4;
+            unsigned long specres:4;
+            unsigned long bf16:4;
+            unsigned long dgh:4;
+            unsigned long i8mm:4;
+            unsigned long __res0:8;

This unfortunately break the build on arm64 becase __res0 is defined twiced in the structure:

oss/xen/xen/include/asm/cpufeature.h:251:27: error: duplicate member ‘__res0’
             unsigned long __res0:8;
                           ^~~~~~

The change is trivial, so I have resolved it (see change below) and committed it:

diff --git a/xen/include/asm-arm/cpufeature.h b/xen/include/asm-arm/cpufeature.h
index 2baf7919615d..70cb67301f74 100644
--- a/xen/include/asm-arm/cpufeature.h
+++ b/xen/include/asm-arm/cpufeature.h
@@ -248,7 +248,7 @@ struct cpuinfo_arm {
             unsigned long bf16:4;
             unsigned long dgh:4;
             unsigned long i8mm:4;
-            unsigned long __res0:8;
+            unsigned long __res2:8;
         };
     } isa64;

Cheers,

--
Julien Grall



 


Rackspace

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