CC: [email protected] CC: [email protected] BCC: [email protected] CC: [email protected] TO: Krzysztof Kozlowski <[email protected]>
tree: https://github.com/krzk/linux n/qcom-ufs-opp-v3 head: 22a49fd92d5e31234d4174cdf1fdade79f38ae3d commit: ff3c34983e1cca80d8c081ea99e0117c5c38c6c3 [10/13] PM: opp: allow control of multiple clocks :::::: branch date: 28 hours ago :::::: commit date: 31 hours ago config: i386-randconfig-c001-20220509 (https://download.01.org/0day-ci/archive/20220510/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 18dd123c56754edf62c7042dcf23185c3727610f) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/krzk/linux/commit/ff3c34983e1cca80d8c081ea99e0117c5c38c6c3 git remote add krzk-github https://github.com/krzk/linux git fetch --no-tags krzk-github n/qcom-ufs-opp-v3 git checkout ff3c34983e1cca80d8c081ea99e0117c5c38c6c3 # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^~~~~~~~ drivers/firmware/efi/efi.c:792:3: warning: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] snprintf(pos, size, ^~~~~~~~ drivers/firmware/efi/efi.c:792:3: note: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11 snprintf(pos, size, ^~~~~~~~ Suppressed 41 warnings (40 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 41 warnings generated. drivers/pinctrl/intel/pinctrl-intel.c:1149:15: warning: Value stored to 'pin' during its initialization is never read [clang-analyzer-deadcode.DeadStores] unsigned int pin = intel_gpio_to_pin(pctrl, irqd_to_hwirq(d), NULL, NULL); ^~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/intel/pinctrl-intel.c:1149:15: note: Value stored to 'pin' during its initialization is never read unsigned int pin = intel_gpio_to_pin(pctrl, irqd_to_hwirq(d), NULL, NULL); ^~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/intel/pinctrl-intel.c:1745:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = pctrl->dev; ^~~ ~~~~~~~~~~ drivers/pinctrl/intel/pinctrl-intel.c:1745:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = pctrl->dev; ^~~ ~~~~~~~~~~ drivers/pinctrl/intel/pinctrl-intel.c:1765:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = pctrl->dev; ^~~ ~~~~~~~~~~ drivers/pinctrl/intel/pinctrl-intel.c:1765:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = pctrl->dev; ^~~ ~~~~~~~~~~ drivers/pinctrl/intel/pinctrl-intel.c:1777:15: warning: Value stored to 'n' during its initialization is never read [clang-analyzer-deadcode.DeadStores] unsigned int n = reg / sizeof(u32); ^ ~~~~~~~~~~~~~~~~~ drivers/pinctrl/intel/pinctrl-intel.c:1777:15: note: Value stored to 'n' during its initialization is never read unsigned int n = reg / sizeof(u32); ^ ~~~~~~~~~~~~~~~~~ drivers/pinctrl/intel/pinctrl-intel.c:1778:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = pctrl->dev; ^~~ ~~~~~~~~~~ drivers/pinctrl/intel/pinctrl-intel.c:1778:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = pctrl->dev; ^~~ ~~~~~~~~~~ Suppressed 36 warnings (36 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 36 warnings generated. Suppressed 36 warnings (36 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 36 warnings generated. Suppressed 36 warnings (36 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 36 warnings generated. Suppressed 36 warnings (36 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 45 warnings generated. drivers/i3c/master/mipi-i3c-hci/core.c:145:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memset(&info, 0, sizeof(info)); ^ arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset' #define memset(s, c, count) __builtin_memset(s, c, count) ^~~~~~~~~~~~~~~~ drivers/i3c/master/mipi-i3c-hci/core.c:145:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 memset(&info, 0, sizeof(info)); ^ arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset' #define memset(s, c, count) __builtin_memset(s, c, count) ^~~~~~~~~~~~~~~~ Suppressed 44 warnings (44 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 45 warnings generated. drivers/i3c/master/mipi-i3c-hci/ext_caps.c:78:7: warning: Value stored to 'mode_entry' during its initialization is never read [clang-analyzer-deadcode.DeadStores] u32 mode_entry = readl(base); ^~~~~~~~~~ drivers/i3c/master/mipi-i3c-hci/ext_caps.c:78:7: note: Value stored to 'mode_entry' during its initialization is never read u32 mode_entry = readl(base); ^~~~~~~~~~ Suppressed 44 warnings (44 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 48 warnings generated. drivers/opp/core.c:1034:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memcpy(data->old_opp.supplies, old_opp->supplies, size); ^ arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy' #define memcpy(t, f, n) __builtin_memcpy(t, f, n) ^~~~~~~~~~~~~~~~ drivers/opp/core.c:1034:3: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 memcpy(data->old_opp.supplies, old_opp->supplies, size); ^ arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy' #define memcpy(t, f, n) __builtin_memcpy(t, f, n) ^~~~~~~~~~~~~~~~ drivers/opp/core.c:1035:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memcpy(data->new_opp.supplies, opp->supplies, size); ^ arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy' #define memcpy(t, f, n) __builtin_memcpy(t, f, n) ^~~~~~~~~~~~~~~~ drivers/opp/core.c:1035:3: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 memcpy(data->new_opp.supplies, opp->supplies, size); ^ arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy' #define memcpy(t, f, n) __builtin_memcpy(t, f, n) ^~~~~~~~~~~~~~~~ >> drivers/opp/core.c:1335:2: warning: Undefined or garbage value returned to >> caller [clang-analyzer-core.uninitialized.UndefReturn] return ret; ^ ~~~ drivers/opp/core.c:1280:2: note: 'ret' declared without an initial value int ret; ^~~~~~~ drivers/opp/core.c:1283:2: note: Taking false branch if (IS_ERR(opp_table)) { ^ drivers/opp/core.c:1288:6: note: Assuming 'target_freq' is not equal to 0 if (target_freq) { ^~~~~~~~~~~ drivers/opp/core.c:1288:2: note: Taking true branch if (target_freq) { ^ drivers/opp/core.c:1296:7: note: Assuming the condition is true if (!_get_opp_count(opp_table)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/opp/core.c:1296:3: note: Taking true branch if (!_get_opp_count(opp_table)) { ^ drivers/opp/core.c:1297:8: note: Assuming field 'clks' is null if (opp_table->clks) ^~~~~~~~~~~~~~~ drivers/opp/core.c:1297:4: note: Taking false branch if (opp_table->clks) ^ drivers/opp/core.c:1301:4: note: Control jumps to line 1334 goto put_opp_table; ^ drivers/opp/core.c:1335:2: note: Undefined or garbage value returned to caller return ret; ^ ~~~ Suppressed 45 warnings (44 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 43 warnings generated. drivers/of/address.c:89:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memset(addr, 0, na * 4); ^ arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset' #define memset(s, c, count) __builtin_memset(s, c, count) ^~~~~~~~~~~~~~~~ drivers/of/address.c:89:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 memset(addr, 0, na * 4); ^ arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset' #define memset(s, c, count) __builtin_memset(s, c, count) ^~~~~~~~~~~~~~~~ drivers/of/address.c:430:3: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memset(addr, 0, pna * 4); ^ arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset' #define memset(s, c, count) __builtin_memset(s, c, count) ^~~~~~~~~~~~~~~~ drivers/of/address.c:430:3: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 memset(addr, 0, pna * 4); ^ arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset' #define memset(s, c, count) __builtin_memset(s, c, count) ^~~~~~~~~~~~~~~~ drivers/of/address.c:449:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memcpy(addr, ranges + na, 4 * pna); ^ arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy' #define memcpy(t, f, n) __builtin_memcpy(t, f, n) ^~~~~~~~~~~~~~~~ drivers/of/address.c:449:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 memcpy(addr, ranges + na, 4 * pna); ^ arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy' #define memcpy(t, f, n) __builtin_memcpy(t, f, n) ^~~~~~~~~~~~~~~~ drivers/of/address.c:502:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memcpy(addr, in_addr, na * 4); ^ arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy' #define memcpy(t, f, n) __builtin_memcpy(t, f, n) ^~~~~~~~~~~~~~~~ drivers/of/address.c:502:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 memcpy(addr, in_addr, na * 4); ^ arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy' #define memcpy(t, f, n) __builtin_memcpy(t, f, n) ^~~~~~~~~~~~~~~~ drivers/of/address.c:820:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memset(r, 0, sizeof(struct resource)); ^ arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset' #define memset(s, c, count) __builtin_memset(s, c, count) ^~~~~~~~~~~~~~~~ drivers/of/address.c:820:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 memset(r, 0, sizeof(struct resource)); ^ arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset' #define memset(s, c, count) __builtin_memset(s, c, count) ^~~~~~~~~~~~~~~~ Suppressed 38 warnings (38 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 45 warnings generated. Suppressed 45 warnings (45 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. vim +1335 drivers/opp/core.c 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1263 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1264 /** 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1265 * dev_pm_opp_set_rate() - Configure new OPP based on frequency 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1266 * @dev: device for which we do this operation 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1267 * @target_freq: frequency to achieve 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1268 * 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1269 * This configures the power-supplies to the levels specified by the OPP 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1270 * corresponding to the target_freq, and programs the clock to a value <= 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1271 * target_freq, as rounded by clk_round_rate(). Device wanting to run at fmax 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1272 * provided by the opp, should have already rounded to the target OPP's 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1273 * frequency. 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1274 */ 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1275 int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq) 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1276 { 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1277 struct opp_table *opp_table; 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1278 unsigned long freq = 0, temp_freq; 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1279 struct dev_pm_opp *opp = NULL; 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1280 int ret; 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1281 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1282 opp_table = _find_opp_table(dev); 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1283 if (IS_ERR(opp_table)) { 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1284 dev_err(dev, "%s: device's opp table doesn't exist\n", __func__); 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1285 return PTR_ERR(opp_table); 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1286 } 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1287 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1288 if (target_freq) { 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1289 /* 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1290 * For IO devices which require an OPP on some platforms/SoCs 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1291 * while just needing to scale the clock on some others 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1292 * we look for empty OPP tables with just a clock handle and 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1293 * scale only the clk. This makes dev_pm_opp_set_rate() 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1294 * equivalent to a clk_set_rate() 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1295 */ 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1296 if (!_get_opp_count(opp_table)) { ff3c34983e1cca8 drivers/opp/core.c Krzysztof Kozlowski 2022-04-05 1297 if (opp_table->clks) ff3c34983e1cca8 drivers/opp/core.c Krzysztof Kozlowski 2022-04-05 1298 ret = _generic_set_opp_clk_only(dev, ff3c34983e1cca8 drivers/opp/core.c Krzysztof Kozlowski 2022-04-05 1299 opp_table->clks[0], ff3c34983e1cca8 drivers/opp/core.c Krzysztof Kozlowski 2022-04-05 1300 target_freq); 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1301 goto put_opp_table; 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1302 } 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1303 ff3c34983e1cca8 drivers/opp/core.c Krzysztof Kozlowski 2022-04-05 1304 if (opp_table->clks) ff3c34983e1cca8 drivers/opp/core.c Krzysztof Kozlowski 2022-04-05 1305 freq = clk_round_rate(opp_table->clks[0], target_freq); 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1306 if ((long)freq <= 0) 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1307 freq = target_freq; 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1308 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1309 /* 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1310 * The clock driver may support finer resolution of the 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1311 * frequencies than the OPP table, don't update the frequency we 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1312 * pass to clk_set_rate() here. 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1313 */ 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1314 temp_freq = freq; 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1315 opp = _find_freq_ceil(opp_table, &temp_freq); 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1316 if (IS_ERR(opp)) { 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1317 ret = PTR_ERR(opp); 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1318 dev_err(dev, "%s: failed to find OPP for freq %lu (%d)\n", 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1319 __func__, freq, ret); 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1320 goto put_opp_table; 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1321 } ff3c34983e1cca8 drivers/opp/core.c Krzysztof Kozlowski 2022-04-05 1322 /* ff3c34983e1cca8 drivers/opp/core.c Krzysztof Kozlowski 2022-04-05 1323 * opp->rates are used for scaling clocks, so be sure accurate ff3c34983e1cca8 drivers/opp/core.c Krzysztof Kozlowski 2022-04-05 1324 * 'freq' is used, instead what was defined via e.g. Devicetree. ff3c34983e1cca8 drivers/opp/core.c Krzysztof Kozlowski 2022-04-05 1325 */ ff3c34983e1cca8 drivers/opp/core.c Krzysztof Kozlowski 2022-04-05 1326 opp->rates[0] = freq; 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1327 } 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1328 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1329 ret = _set_opp(dev, opp_table, opp, freq); 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1330 386ba854d9f3163 drivers/opp/core.c Viresh Kumar 2021-01-21 1331 if (target_freq) 8a31d9d94297b1e drivers/base/power/opp/core.c Viresh Kumar 2017-01-23 1332 dev_pm_opp_put(opp); 052c6f19141dd13 drivers/base/power/opp/core.c Viresh Kumar 2017-01-23 1333 put_opp_table: 5b650b388844f26 drivers/base/power/opp/core.c Viresh Kumar 2017-01-23 1334 dev_pm_opp_put_opp_table(opp_table); 052c6f19141dd13 drivers/base/power/opp/core.c Viresh Kumar 2017-01-23 @1335 return ret; 6a0712f6f199e73 drivers/base/power/opp/core.c Viresh Kumar 2016-02-09 1336 } 6a0712f6f199e73 drivers/base/power/opp/core.c Viresh Kumar 2016-02-09 1337 EXPORT_SYMBOL_GPL(dev_pm_opp_set_rate); 6a0712f6f199e73 drivers/base/power/opp/core.c Viresh Kumar 2016-02-09 1338 :::::: The code at line 1335 was first introduced by commit :::::: 052c6f19141dd13f266cc465fde6f38ddc93d5fb PM / OPP: Move away from RCU locking :::::: TO: Viresh Kumar <[email protected]> :::::: CC: Rafael J. Wysocki <[email protected]> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
