In order to map the override of idregs to options that a user
can easily understand, let's introduce yet another option
array, which maps an option to the corresponding idreg options.

Signed-off-by: Marc Zyngier <m...@kernel.org>
Reviewed-by: Catalin Marinas <catalin.mari...@arm.com>
Acked-by: David Brazdil <dbraz...@google.com>
---
 arch/arm64/kernel/idreg-override.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/arch/arm64/kernel/idreg-override.c 
b/arch/arm64/kernel/idreg-override.c
index 2da11bf60195..226bac544e20 100644
--- a/arch/arm64/kernel/idreg-override.c
+++ b/arch/arm64/kernel/idreg-override.c
@@ -16,6 +16,8 @@
 
 #define FTR_DESC_NAME_LEN      20
 #define FTR_DESC_FIELD_LEN     10
+#define FTR_ALIAS_NAME_LEN     30
+#define FTR_ALIAS_OPTION_LEN   80
 
 struct ftr_set_desc {
        char                            name[FTR_DESC_NAME_LEN];
@@ -39,6 +41,12 @@ static const struct ftr_set_desc * const regs[] __initconst 
= {
        &mmfr1,
 };
 
+static const struct {
+       char    alias[FTR_ALIAS_NAME_LEN];
+       char    feature[FTR_ALIAS_OPTION_LEN];
+} aliases[] __initconst = {
+};
+
 static int __init find_field(const char *cmdline,
                             const struct ftr_set_desc *reg, int f, u64 *v)
 {
@@ -81,7 +89,7 @@ static void __init match_options(const char *cmdline)
        }
 }
 
-static __init void __parse_cmdline(const char *cmdline)
+static __init void __parse_cmdline(const char *cmdline, bool parse_aliases)
 {
        do {
                char buf[256];
@@ -105,6 +113,9 @@ static __init void __parse_cmdline(const char *cmdline)
 
                match_options(buf);
 
+               for (i = 0; parse_aliases && i < ARRAY_SIZE(aliases); i++)
+                       if (parameq(buf, aliases[i].alias))
+                               __parse_cmdline(aliases[i].feature, false);
        } while (1);
 }
 
@@ -127,14 +138,14 @@ static __init void parse_cmdline(void)
                if (!prop)
                        goto out;
 
-               __parse_cmdline(prop);
+               __parse_cmdline(prop, true);
 
                if (!IS_ENABLED(CONFIG_CMDLINE_EXTEND))
                        return;
        }
 
 out:
-       __parse_cmdline(CONFIG_CMDLINE);
+       __parse_cmdline(CONFIG_CMDLINE, true);
 }
 
 /* Keep checkers quiet */
-- 
2.29.2

_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to