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

[Xen-changelog] [xen master] xen/arm: Introduce a initcall to update cpu_hwcaps by serror_op



commit 4e1e4a9848518ab98aa7c309a46874bc343a8e75
Author:     Wei Chen <Wei.Chen@xxxxxxx>
AuthorDate: Wed Apr 5 17:09:10 2017 +0800
Commit:     Stefano Stabellini <sstabellini@xxxxxxxxxx>
CommitDate: Wed Apr 5 12:12:24 2017 -0700

    xen/arm: Introduce a initcall to update cpu_hwcaps by serror_op
    
    In the later patches of this series, we want to use the alternative
    patching framework to avoid synchronizing serror_op in every entries
    and exits. So we define a new cpu feature 
"SKIP_SYNCHRONIZE_SERROR_ENTRY_EXIT"
    for serror_op. When serror_op is not equal to SERROR_DIVERSE, this
    feature will be set to cpu_hwcaps.
    
    Currently, the default serror_op is SERROR_DIVERSE, if we want to
    change the serror_op value we have to place the serror parameter
    in command line. It seems no problem to update cpu_hwcaps directly
    in the serror parameter parsing function.
    
    While the default option will be diverse today, this may change in the
    future. So we introduce this initcall to guarantee the cpu_hwcaps can be
    updated no matter the serror parameter is placed in the command line
    or not.
    
    Signed-off-by: Wei Chen <Wei.Chen@xxxxxxx>
    Acked-by: Julien Grall <julien.grall@xxxxxxx>
    Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
---
 xen/arch/arm/traps.c             | 9 +++++++++
 xen/include/asm-arm/cpufeature.h | 3 ++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 41955af..1e130fb 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -162,6 +162,15 @@ static void __init parse_serrors_behavior(const char *str)
 }
 custom_param("serrors", parse_serrors_behavior);
 
+static int __init update_serrors_cpu_caps(void)
+{
+    if ( serrors_op != SERRORS_DIVERSE )
+        cpus_set_cap(SKIP_SYNCHRONIZE_SERROR_ENTRY_EXIT);
+
+    return 0;
+}
+__initcall(update_serrors_cpu_caps);
+
 void init_traps(void)
 {
     /* Setup Hyp vector base */
diff --git a/xen/include/asm-arm/cpufeature.h b/xen/include/asm-arm/cpufeature.h
index c0a25ae..9eb72e1 100644
--- a/xen/include/asm-arm/cpufeature.h
+++ b/xen/include/asm-arm/cpufeature.h
@@ -40,8 +40,9 @@
 #define ARM32_WORKAROUND_766422 2
 #define ARM64_WORKAROUND_834220 3
 #define LIVEPATCH_FEATURE   4
+#define SKIP_SYNCHRONIZE_SERROR_ENTRY_EXIT 5
 
-#define ARM_NCAPS           5
+#define ARM_NCAPS           6
 
 #ifndef __ASSEMBLY__
 
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

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