<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 2, 2023, 23:12 Sivaprasad Tummala <<a href="mailto:sivaprasad.tummala@amd.com" rel="noreferrer noreferrer" target="_blank">sivaprasad.tummala@amd.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This patch removes RTE_CPUFLAG_NUMFLAGS to allow new CPU<br>
features without breaking ABI each time.<br></blockquote></div></div><div dir="auto">I'm not sure I understand the reason for removing the last element canary. It's quite useful in the coffee that you're refactoring.</div><div dir="auto">Isn't it so that you want to essentially remove the test (other commit in this series)?</div><div dir="auto">Because that I can understand as a forward compatibility measure.</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Signed-off-by: Sivaprasad Tummala <<a href="mailto:sivaprasad.tummala@amd.com" rel="noreferrer noreferrer noreferrer" target="_blank">sivaprasad.tummala@amd.com</a>><br>
---<br>
 lib/eal/arm/include/rte_cpuflags_32.h    | 1 -<br>
 lib/eal/arm/include/rte_cpuflags_64.h    | 1 -<br>
 lib/eal/arm/rte_cpuflags.c               | 7 +++++--<br>
 lib/eal/loongarch/include/rte_cpuflags.h | 1 -<br>
 lib/eal/loongarch/rte_cpuflags.c         | 7 +++++--<br>
 lib/eal/ppc/include/rte_cpuflags.h       | 1 -<br>
 lib/eal/ppc/rte_cpuflags.c               | 7 +++++--<br>
 lib/eal/riscv/include/rte_cpuflags.h     | 1 -<br>
 lib/eal/riscv/rte_cpuflags.c             | 7 +++++--<br>
 lib/eal/x86/include/rte_cpuflags.h       | 1 -<br>
 lib/eal/x86/rte_cpuflags.c               | 7 +++++--<br>
 11 files changed, 25 insertions(+), 16 deletions(-)<br>
<br>
diff --git a/lib/eal/arm/include/rte_cpuflags_32.h b/lib/eal/arm/include/rte_cpuflags_32.h<br>
index 4e254428a2..41ab0d5f21 100644<br>
--- a/lib/eal/arm/include/rte_cpuflags_32.h<br>
+++ b/lib/eal/arm/include/rte_cpuflags_32.h<br>
@@ -43,7 +43,6 @@ enum rte_cpu_flag_t {<br>
        RTE_CPUFLAG_V7L,<br>
        RTE_CPUFLAG_V8L,<br>
        /* The last item */<br>
-       RTE_CPUFLAG_NUMFLAGS,/**< This should always be the last! */<br>
 };<br>
<br>
 #include "generic/rte_cpuflags.h"<br>
diff --git a/lib/eal/arm/include/rte_cpuflags_64.h b/lib/eal/arm/include/rte_cpuflags_64.h<br>
index aa7a56d491..ea5193e510 100644<br>
--- a/lib/eal/arm/include/rte_cpuflags_64.h<br>
+++ b/lib/eal/arm/include/rte_cpuflags_64.h<br>
@@ -37,7 +37,6 @@ enum rte_cpu_flag_t {<br>
        RTE_CPUFLAG_SVEBF16,<br>
        RTE_CPUFLAG_AARCH64,<br>
        /* The last item */<br>
-       RTE_CPUFLAG_NUMFLAGS,/**< This should always be the last! */<br>
 };<br>
<br>
 #include "generic/rte_cpuflags.h"<br>
diff --git a/lib/eal/arm/rte_cpuflags.c b/lib/eal/arm/rte_cpuflags.c<br>
index 56e7b2e689..447a8d9f9f 100644<br>
--- a/lib/eal/arm/rte_cpuflags.c<br>
+++ b/lib/eal/arm/rte_cpuflags.c<br>
@@ -139,8 +139,9 @@ rte_cpu_get_flag_enabled(enum rte_cpu_flag_t feature)<br>
 {<br>
        const struct feature_entry *feat;<br>
        hwcap_registers_t regs = {0};<br>
+       unsigned int num_flags = RTE_DIM(rte_cpu_feature_table);<br>
<br>
-       if (feature >= RTE_CPUFLAG_NUMFLAGS)<br>
+       if (feature >= num_flags)<br>
                return -ENOENT;<br>
<br>
        feat = &rte_cpu_feature_table[feature];<br>
@@ -154,7 +155,9 @@ rte_cpu_get_flag_enabled(enum rte_cpu_flag_t feature)<br>
 const char *<br>
 rte_cpu_get_flag_name(enum rte_cpu_flag_t feature)<br>
 {<br>
-       if (feature >= RTE_CPUFLAG_NUMFLAGS)<br>
+       unsigned int num_flags = RTE_DIM(rte_cpu_feature_table);<br>
+<br>
+       if (feature >= num_flags)<br>
                return NULL;<br>
        return rte_cpu_feature_table[feature].name;<br>
 }<br>
diff --git a/lib/eal/loongarch/include/rte_cpuflags.h b/lib/eal/loongarch/include/rte_cpuflags.h<br>
index 1c80779262..9ff8baaa3c 100644<br>
--- a/lib/eal/loongarch/include/rte_cpuflags.h<br>
+++ b/lib/eal/loongarch/include/rte_cpuflags.h<br>
@@ -27,7 +27,6 @@ enum rte_cpu_flag_t {<br>
        RTE_CPUFLAG_LBT_ARM,<br>
        RTE_CPUFLAG_LBT_MIPS,<br>
        /* The last item */<br>
-       RTE_CPUFLAG_NUMFLAGS /**< This should always be the last! */<br>
 };<br>
<br>
 #include "generic/rte_cpuflags.h"<br>
diff --git a/lib/eal/loongarch/rte_cpuflags.c b/lib/eal/loongarch/rte_cpuflags.c<br>
index 0a75ca58d4..642eb42509 100644<br>
--- a/lib/eal/loongarch/rte_cpuflags.c<br>
+++ b/lib/eal/loongarch/rte_cpuflags.c<br>
@@ -66,8 +66,9 @@ rte_cpu_get_flag_enabled(enum rte_cpu_flag_t feature)<br>
 {<br>
        const struct feature_entry *feat;<br>
        hwcap_registers_t regs = {0};<br>
+       unsigned int num_flags = RTE_DIM(rte_cpu_feature_table);<br>
<br>
-       if (feature >= RTE_CPUFLAG_NUMFLAGS)<br>
+       if (feature >= num_flags)<br>
                return -ENOENT;<br>
<br>
        feat = &rte_cpu_feature_table[feature];<br>
@@ -81,7 +82,9 @@ rte_cpu_get_flag_enabled(enum rte_cpu_flag_t feature)<br>
 const char *<br>
 rte_cpu_get_flag_name(enum rte_cpu_flag_t feature)<br>
 {<br>
-       if (feature >= RTE_CPUFLAG_NUMFLAGS)<br>
+       unsigned int num_flags = RTE_DIM(rte_cpu_feature_table);<br>
+<br>
+       if (feature >= num_flags)<br>
                return NULL;<br>
        return rte_cpu_feature_table[feature].name;<br>
 }<br>
diff --git a/lib/eal/ppc/include/rte_cpuflags.h b/lib/eal/ppc/include/rte_cpuflags.h<br>
index a88355d170..b74e7a73ee 100644<br>
--- a/lib/eal/ppc/include/rte_cpuflags.h<br>
+++ b/lib/eal/ppc/include/rte_cpuflags.h<br>
@@ -49,7 +49,6 @@ enum rte_cpu_flag_t {<br>
        RTE_CPUFLAG_HTM,<br>
        RTE_CPUFLAG_ARCH_2_07,<br>
        /* The last item */<br>
-       RTE_CPUFLAG_NUMFLAGS,/**< This should always be the last! */<br>
 };<br>
<br>
 #include "generic/rte_cpuflags.h"<br>
diff --git a/lib/eal/ppc/rte_cpuflags.c b/lib/eal/ppc/rte_cpuflags.c<br>
index 61db5c216d..3a639ef45a 100644<br>
--- a/lib/eal/ppc/rte_cpuflags.c<br>
+++ b/lib/eal/ppc/rte_cpuflags.c<br>
@@ -90,8 +90,9 @@ rte_cpu_get_flag_enabled(enum rte_cpu_flag_t feature)<br>
 {<br>
        const struct feature_entry *feat;<br>
        hwcap_registers_t regs = {0};<br>
+       unsigned int num_flags = RTE_DIM(rte_cpu_feature_table);<br>
<br>
-       if (feature >= RTE_CPUFLAG_NUMFLAGS)<br>
+       if (feature >= num_flags)<br>
                return -ENOENT;<br>
<br>
        feat = &rte_cpu_feature_table[feature];<br>
@@ -105,7 +106,9 @@ rte_cpu_get_flag_enabled(enum rte_cpu_flag_t feature)<br>
 const char *<br>
 rte_cpu_get_flag_name(enum rte_cpu_flag_t feature)<br>
 {<br>
-       if (feature >= RTE_CPUFLAG_NUMFLAGS)<br>
+       unsigned int num_flags = RTE_DIM(rte_cpu_feature_table);<br>
+<br>
+       if (feature >= num_flags)<br>
                return NULL;<br>
        return rte_cpu_feature_table[feature].name;<br>
 }<br>
diff --git a/lib/eal/riscv/include/rte_cpuflags.h b/lib/eal/riscv/include/rte_cpuflags.h<br>
index 66e787f898..803c3655ae 100644<br>
--- a/lib/eal/riscv/include/rte_cpuflags.h<br>
+++ b/lib/eal/riscv/include/rte_cpuflags.h<br>
@@ -43,7 +43,6 @@ enum rte_cpu_flag_t {<br>
        RTE_CPUFLAG_RISCV_ISA_Y, /* Reserved */<br>
        RTE_CPUFLAG_RISCV_ISA_Z, /* Reserved */<br>
        /* The last item */<br>
-       RTE_CPUFLAG_NUMFLAGS,/**< This should always be the last! */<br>
 };<br>
<br>
 #include "generic/rte_cpuflags.h"<br>
diff --git a/lib/eal/riscv/rte_cpuflags.c b/lib/eal/riscv/rte_cpuflags.c<br>
index 4f6d29b947..a452261188 100644<br>
--- a/lib/eal/riscv/rte_cpuflags.c<br>
+++ b/lib/eal/riscv/rte_cpuflags.c<br>
@@ -95,8 +95,9 @@ rte_cpu_get_flag_enabled(enum rte_cpu_flag_t feature)<br>
 {<br>
        const struct feature_entry *feat;<br>
        hwcap_registers_t regs = {0};<br>
+       unsigned int num_flags = RTE_DIM(rte_cpu_feature_table);<br>
<br>
-       if (feature >= RTE_CPUFLAG_NUMFLAGS)<br>
+       if (feature >= num_flags)<br>
                return -ENOENT;<br>
<br>
        feat = &rte_cpu_feature_table[feature];<br>
@@ -110,7 +111,9 @@ rte_cpu_get_flag_enabled(enum rte_cpu_flag_t feature)<br>
 const char *<br>
 rte_cpu_get_flag_name(enum rte_cpu_flag_t feature)<br>
 {<br>
-       if (feature >= RTE_CPUFLAG_NUMFLAGS)<br>
+       unsigned int num_flags = RTE_DIM(rte_cpu_feature_table);<br>
+<br>
+       if (feature >= num_flags)<br>
                return NULL;<br>
        return rte_cpu_feature_table[feature].name;<br>
 }<br>
diff --git a/lib/eal/x86/include/rte_cpuflags.h b/lib/eal/x86/include/rte_cpuflags.h<br>
index 92e90fb6e0..7fc6117243 100644<br>
--- a/lib/eal/x86/include/rte_cpuflags.h<br>
+++ b/lib/eal/x86/include/rte_cpuflags.h<br>
@@ -135,7 +135,6 @@ enum rte_cpu_flag_t {<br>
        RTE_CPUFLAG_WAITPKG,                /**< UMONITOR/UMWAIT/TPAUSE */<br>
<br>
        /* The last item */<br>
-       RTE_CPUFLAG_NUMFLAGS,               /**< This should always be the last! */<br>
 };<br>
<br>
 #include "generic/rte_cpuflags.h"<br>
diff --git a/lib/eal/x86/rte_cpuflags.c b/lib/eal/x86/rte_cpuflags.c<br>
index d6b518251b..00d17c7515 100644<br>
--- a/lib/eal/x86/rte_cpuflags.c<br>
+++ b/lib/eal/x86/rte_cpuflags.c<br>
@@ -149,8 +149,9 @@ rte_cpu_get_flag_enabled(enum rte_cpu_flag_t feature)<br>
        const struct feature_entry *feat;<br>
        cpuid_registers_t regs;<br>
        unsigned int maxleaf;<br>
+       unsigned int num_flags = RTE_DIM(rte_cpu_feature_table);<br>
<br>
-       if (feature >= RTE_CPUFLAG_NUMFLAGS)<br>
+       if (feature >= num_flags)<br>
                /* Flag does not match anything in the feature tables */<br>
                return -ENOENT;<br>
<br>
@@ -176,7 +177,9 @@ rte_cpu_get_flag_enabled(enum rte_cpu_flag_t feature)<br>
 const char *<br>
 rte_cpu_get_flag_name(enum rte_cpu_flag_t feature)<br>
 {<br>
-       if (feature >= RTE_CPUFLAG_NUMFLAGS)<br>
+       unsigned int num_flags = RTE_DIM(rte_cpu_feature_table);<br>
+<br>
+       if (feature >= num_flags)<br>
                return NULL;<br>
        return rte_cpu_feature_table[feature].name;<br>
 }<br>
-- <br>
2.34.1<br>
<br>
</blockquote></div></div></div>