powerpc/pseries: Use ARRAY_SIZE to iterate over firmware_features_table array
authorNathan Fontenot <nfont@linux.vnet.ibm.com>
Wed, 24 Apr 2013 05:55:08 +0000 (05:55 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 26 Apr 2013 06:08:21 +0000 (16:08 +1000)
When iterating over the entries in firmware_features_table we only need
to go over the actual number of entries in the array instead of declaring
it to be bigger and checking to make sure there is a valid entry in every
slot.

This patch removes the FIRMWARE_MAX_FEATURES #define and replaces the
array looping with the use of ARRAY_SIZE().

Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/include/asm/firmware.h
arch/powerpc/platforms/pseries/firmware.c

index 097dee57a7a9d5f1a3c3ddb39e1cf08fab4b611d..f9651b288da1a9c2f723c112b435a25f1a5717c8 100644 (file)
@@ -18,7 +18,6 @@
 #include <asm/feature-fixups.h>
 
 /* firmware feature bitmask values */
-#define FIRMWARE_MAX_FEATURES 63
 
 #define FW_FEATURE_PFT         ASM_CONST(0x0000000000000001)
 #define FW_FEATURE_TCE         ASM_CONST(0x0000000000000002)
index aa3693f7fb2736de9f6fc3abd9fdd6f19f181530..1236a9d6146a686a60285c8173346535fd10275a 100644 (file)
@@ -39,7 +39,7 @@ typedef struct {
  * string must match.
  */
 static __initdata firmware_feature_t
-firmware_features_table[FIRMWARE_MAX_FEATURES] = {
+firmware_features_table[] = {
        {FW_FEATURE_PFT,                "hcall-pft"},
        {FW_FEATURE_TCE,                "hcall-tce"},
        {FW_FEATURE_SPRG0,              "hcall-sprg0"},
@@ -77,12 +77,10 @@ void __init fw_feature_init(const char *hypertas, unsigned long len)
        pr_debug(" -> fw_feature_init()\n");
 
        for (s = hypertas; s < hypertas + len; s += strlen(s) + 1) {
-               for (i = 0; i < FIRMWARE_MAX_FEATURES; i++) {
+               for (i = 0; i < ARRAY_SIZE(firmware_features_table); i++) {
                        const char *name = firmware_features_table[i].name;
                        size_t size;
-                       /* check value against table of strings */
-                       if (!name)
-                               continue;
+
                        /*
                         * If there is a '*' at the end of name, only check
                         * upto there