CC: [email protected] CC: Atish Patra <[email protected]> CC: [email protected] TO: Tsukasa OI <[email protected]> CC: Atish Patra <[email protected]>
tree: https://github.com/atishp04/linux isa_framework head: db6ba78ead62e927c2057ba750765b070c8af8a6 commit: f4fd878dfb479e6db102addfdf545a32b76fbecd [3/8] RISC-V: Minimal parser for "riscv, isa" strings :::::: branch date: 11 hours ago :::::: commit date: 11 hours ago config: riscv-randconfig-m031-20220211 (https://download.01.org/0day-ci/archive/20220211/[email protected]/config) compiler: riscv32-linux-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: arch/riscv/kernel/cpufeature.c:153 riscv_fill_hwcap() error: uninitialized symbol 'ext_long'. vim +/ext_long +153 arch/riscv/kernel/cpufeature.c 6bcff51539ccae5 Anup Patel 2020-04-24 64 3df952ae2ac81fb Jisheng Zhang 2021-05-16 65 void __init riscv_fill_hwcap(void) e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 66 { dd81c8ab819d360 Johan Hovold 2019-01-18 67 struct device_node *node; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 68 const char *isa; d4d5a22e24d477a Tsukasa OI 2021-12-02 69 char print_str[NUM_ALPHA_EXTS + 1]; f4fd878dfb479e6 Tsukasa OI 2021-12-02 70 int i, j; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 71 static unsigned long isa2hwcap[256] = {0}; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 72 e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 73 isa2hwcap['i'] = isa2hwcap['I'] = COMPAT_HWCAP_ISA_I; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 74 isa2hwcap['m'] = isa2hwcap['M'] = COMPAT_HWCAP_ISA_M; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 75 isa2hwcap['a'] = isa2hwcap['A'] = COMPAT_HWCAP_ISA_A; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 76 isa2hwcap['f'] = isa2hwcap['F'] = COMPAT_HWCAP_ISA_F; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 77 isa2hwcap['d'] = isa2hwcap['D'] = COMPAT_HWCAP_ISA_D; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 78 isa2hwcap['c'] = isa2hwcap['C'] = COMPAT_HWCAP_ISA_C; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 79 e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 80 elf_hwcap = 0; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 81 6bcff51539ccae5 Anup Patel 2020-04-24 82 bitmap_zero(riscv_isa, RISCV_ISA_EXT_MAX); 6bcff51539ccae5 Anup Patel 2020-04-24 83 dd81c8ab819d360 Johan Hovold 2019-01-18 84 for_each_of_cpu_node(node) { fbdc6193dc706c8 Atish Patra 2019-02-22 85 unsigned long this_hwcap = 0; 6bcff51539ccae5 Anup Patel 2020-04-24 86 unsigned long this_isa = 0; fbdc6193dc706c8 Atish Patra 2019-02-22 87 fbdc6193dc706c8 Atish Patra 2019-02-22 88 if (riscv_of_processor_hartid(node) < 0) fbdc6193dc706c8 Atish Patra 2019-02-22 89 continue; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 90 e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 91 if (of_property_read_string(node, "riscv,isa", &isa)) { 7265d103902c0bc Johan Hovold 2019-01-18 92 pr_warn("Unable to find \"riscv,isa\" devicetree entry\n"); fbdc6193dc706c8 Atish Patra 2019-02-22 93 continue; e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 94 } e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 95 6bcff51539ccae5 Anup Patel 2020-04-24 96 #if IS_ENABLED(CONFIG_32BIT) 6bcff51539ccae5 Anup Patel 2020-04-24 97 if (!strncmp(isa, "rv32", 4)) f4fd878dfb479e6 Tsukasa OI 2021-12-02 98 isa += 4; 6bcff51539ccae5 Anup Patel 2020-04-24 99 #elif IS_ENABLED(CONFIG_64BIT) 6bcff51539ccae5 Anup Patel 2020-04-24 100 if (!strncmp(isa, "rv64", 4)) f4fd878dfb479e6 Tsukasa OI 2021-12-02 101 isa += 4; 6bcff51539ccae5 Anup Patel 2020-04-24 102 #endif f4fd878dfb479e6 Tsukasa OI 2021-12-02 103 for (; *isa; ++isa) { f4fd878dfb479e6 Tsukasa OI 2021-12-02 104 const char *ext = isa++; f4fd878dfb479e6 Tsukasa OI 2021-12-02 105 bool ext_long, ext_err = false; f4fd878dfb479e6 Tsukasa OI 2021-12-02 106 f4fd878dfb479e6 Tsukasa OI 2021-12-02 107 switch (*ext) { f4fd878dfb479e6 Tsukasa OI 2021-12-02 108 case 's': f4fd878dfb479e6 Tsukasa OI 2021-12-02 109 case 'x': f4fd878dfb479e6 Tsukasa OI 2021-12-02 110 case 'z': f4fd878dfb479e6 Tsukasa OI 2021-12-02 111 /** f4fd878dfb479e6 Tsukasa OI 2021-12-02 112 * 's' is a special case because: f4fd878dfb479e6 Tsukasa OI 2021-12-02 113 * It can be present in base extension for supervisor f4fd878dfb479e6 Tsukasa OI 2021-12-02 114 * Multi-letter extensions can start with 's' as well for f4fd878dfb479e6 Tsukasa OI 2021-12-02 115 * Supervisor extensions (i.e. sstc, sscofpmf, svinval) f4fd878dfb479e6 Tsukasa OI 2021-12-02 116 */ f4fd878dfb479e6 Tsukasa OI 2021-12-02 117 if (*ext == 's' && ext[-1] != '_') f4fd878dfb479e6 Tsukasa OI 2021-12-02 118 break; f4fd878dfb479e6 Tsukasa OI 2021-12-02 119 ext_long = true; f4fd878dfb479e6 Tsukasa OI 2021-12-02 120 /* Multi-letter extension must be delimited */ f4fd878dfb479e6 Tsukasa OI 2021-12-02 121 for (; *isa && *isa != '_'; ++isa) f4fd878dfb479e6 Tsukasa OI 2021-12-02 122 if (!islower(*isa) && !isdigit(*isa)) f4fd878dfb479e6 Tsukasa OI 2021-12-02 123 ext_err = true; f4fd878dfb479e6 Tsukasa OI 2021-12-02 124 /* ... but must be ignored. */ f4fd878dfb479e6 Tsukasa OI 2021-12-02 125 break; f4fd878dfb479e6 Tsukasa OI 2021-12-02 126 default: f4fd878dfb479e6 Tsukasa OI 2021-12-02 127 ext_long = false; f4fd878dfb479e6 Tsukasa OI 2021-12-02 128 if (!islower(*ext)) { f4fd878dfb479e6 Tsukasa OI 2021-12-02 129 ext_err = true; f4fd878dfb479e6 Tsukasa OI 2021-12-02 130 break; f4fd878dfb479e6 Tsukasa OI 2021-12-02 131 } f4fd878dfb479e6 Tsukasa OI 2021-12-02 132 /* Find next extension */ f4fd878dfb479e6 Tsukasa OI 2021-12-02 133 if (!isdigit(*isa)) f4fd878dfb479e6 Tsukasa OI 2021-12-02 134 break; f4fd878dfb479e6 Tsukasa OI 2021-12-02 135 while (isdigit(*++isa)) f4fd878dfb479e6 Tsukasa OI 2021-12-02 136 ; f4fd878dfb479e6 Tsukasa OI 2021-12-02 137 if (*isa != 'p') f4fd878dfb479e6 Tsukasa OI 2021-12-02 138 break; f4fd878dfb479e6 Tsukasa OI 2021-12-02 139 if (!isdigit(*++isa)) { f4fd878dfb479e6 Tsukasa OI 2021-12-02 140 --isa; f4fd878dfb479e6 Tsukasa OI 2021-12-02 141 break; f4fd878dfb479e6 Tsukasa OI 2021-12-02 142 } f4fd878dfb479e6 Tsukasa OI 2021-12-02 143 while (isdigit(*++isa)) f4fd878dfb479e6 Tsukasa OI 2021-12-02 144 ; f4fd878dfb479e6 Tsukasa OI 2021-12-02 145 break; f4fd878dfb479e6 Tsukasa OI 2021-12-02 146 } f4fd878dfb479e6 Tsukasa OI 2021-12-02 147 if (*isa != '_') f4fd878dfb479e6 Tsukasa OI 2021-12-02 148 --isa; 6bcff51539ccae5 Anup Patel 2020-04-24 149 /* f4fd878dfb479e6 Tsukasa OI 2021-12-02 150 * TODO: Full version-aware handling including f4fd878dfb479e6 Tsukasa OI 2021-12-02 151 * multi-letter extensions will be added in-future. 6bcff51539ccae5 Anup Patel 2020-04-24 152 */ f4fd878dfb479e6 Tsukasa OI 2021-12-02 @153 if (ext_err || ext_long) f4fd878dfb479e6 Tsukasa OI 2021-12-02 154 continue; f4fd878dfb479e6 Tsukasa OI 2021-12-02 155 this_hwcap |= isa2hwcap[(unsigned char)(*ext)]; f4fd878dfb479e6 Tsukasa OI 2021-12-02 156 this_isa |= (1UL << (*ext - 'a')); 6bcff51539ccae5 Anup Patel 2020-04-24 157 } fbdc6193dc706c8 Atish Patra 2019-02-22 158 fbdc6193dc706c8 Atish Patra 2019-02-22 159 /* fbdc6193dc706c8 Atish Patra 2019-02-22 160 * All "okay" hart should have same isa. Set HWCAP based on fbdc6193dc706c8 Atish Patra 2019-02-22 161 * common capabilities of every "okay" hart, in case they don't fbdc6193dc706c8 Atish Patra 2019-02-22 162 * have. fbdc6193dc706c8 Atish Patra 2019-02-22 163 */ fbdc6193dc706c8 Atish Patra 2019-02-22 164 if (elf_hwcap) fbdc6193dc706c8 Atish Patra 2019-02-22 165 elf_hwcap &= this_hwcap; fbdc6193dc706c8 Atish Patra 2019-02-22 166 else fbdc6193dc706c8 Atish Patra 2019-02-22 167 elf_hwcap = this_hwcap; 6bcff51539ccae5 Anup Patel 2020-04-24 168 6bcff51539ccae5 Anup Patel 2020-04-24 169 if (riscv_isa[0]) 6bcff51539ccae5 Anup Patel 2020-04-24 170 riscv_isa[0] &= this_isa; 6bcff51539ccae5 Anup Patel 2020-04-24 171 else 6bcff51539ccae5 Anup Patel 2020-04-24 172 riscv_isa[0] = this_isa; fbdc6193dc706c8 Atish Patra 2019-02-22 173 } e2c0cdfba7f6992 Palmer Dabbelt 2017-07-10 174 86e581e31078578 Palmer Dabbelt 2018-08-27 175 /* We don't support systems with F but without D, so mask those out 86e581e31078578 Palmer Dabbelt 2018-08-27 176 * here. */ 86e581e31078578 Palmer Dabbelt 2018-08-27 177 if ((elf_hwcap & COMPAT_HWCAP_ISA_F) && !(elf_hwcap & COMPAT_HWCAP_ISA_D)) { 7265d103902c0bc Johan Hovold 2019-01-18 178 pr_info("This kernel does not support systems with F but not D\n"); 86e581e31078578 Palmer Dabbelt 2018-08-27 179 elf_hwcap &= ~COMPAT_HWCAP_ISA_F; 86e581e31078578 Palmer Dabbelt 2018-08-27 180 } 86e581e31078578 Palmer Dabbelt 2018-08-27 181 6bcff51539ccae5 Anup Patel 2020-04-24 182 memset(print_str, 0, sizeof(print_str)); d4d5a22e24d477a Tsukasa OI 2021-12-02 183 for (i = 0, j = 0; i < NUM_ALPHA_EXTS; i++) 6bcff51539ccae5 Anup Patel 2020-04-24 184 if (riscv_isa[0] & BIT_MASK(i)) 6bcff51539ccae5 Anup Patel 2020-04-24 185 print_str[j++] = (char)('a' + i); 6bcff51539ccae5 Anup Patel 2020-04-24 186 pr_info("riscv: ISA extensions %s\n", print_str); 6bcff51539ccae5 Anup Patel 2020-04-24 187 6bcff51539ccae5 Anup Patel 2020-04-24 188 memset(print_str, 0, sizeof(print_str)); d4d5a22e24d477a Tsukasa OI 2021-12-02 189 for (i = 0, j = 0; i < NUM_ALPHA_EXTS; i++) 6bcff51539ccae5 Anup Patel 2020-04-24 190 if (elf_hwcap & BIT_MASK(i)) 6bcff51539ccae5 Anup Patel 2020-04-24 191 print_str[j++] = (char)('a' + i); 6bcff51539ccae5 Anup Patel 2020-04-24 192 pr_info("riscv: ELF capabilities %s\n", print_str); 9411ec60c23d868 Alan Kao 2018-10-09 193 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
