* [PATCH 1/2 v2] cpufreq: qoriq: added arm64 socs support @ 2017-02-08 5:43 yuantian.tang at nxp.com 2017-02-08 5:43 ` [PATCH 2/2 v2] cpufreq: qoriq: Don't look at clock implementation details yuantian.tang at nxp.com 2017-02-08 20:51 ` [PATCH 1/2 v2] cpufreq: qoriq: added arm64 socs support kbuild test robot 0 siblings, 2 replies; 5+ messages in thread From: yuantian.tang at nxp.com @ 2017-02-08 5:43 UTC (permalink / raw) To: linux-arm-kernel From: Tang Yuantian <Yuantian.Tang@nxp.com> Add arm64 config to Kconfig to enable cpu frequency feature on nxp arm64 socs. Signed-off-by: Tang Yuantian <yuantian.tang@nxp.com> --- v2: - no change drivers/cpufreq/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig index 15adef4..3964383 100644 --- a/drivers/cpufreq/Kconfig +++ b/drivers/cpufreq/Kconfig @@ -324,7 +324,7 @@ endif config QORIQ_CPUFREQ tristate "CPU frequency scaling driver for Freescale QorIQ SoCs" - depends on OF && COMMON_CLK && (PPC_E500MC || ARM) + depends on OF && COMMON_CLK && (PPC_E500MC || ARM || ARM64) depends on !CPU_THERMAL || THERMAL select CLK_QORIQ help -- 2.1.0.27.g96db324 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2 v2] cpufreq: qoriq: Don't look at clock implementation details 2017-02-08 5:43 [PATCH 1/2 v2] cpufreq: qoriq: added arm64 socs support yuantian.tang at nxp.com @ 2017-02-08 5:43 ` yuantian.tang at nxp.com 2017-02-08 11:19 ` kbuild test robot 2017-02-08 20:51 ` [PATCH 1/2 v2] cpufreq: qoriq: added arm64 socs support kbuild test robot 1 sibling, 1 reply; 5+ messages in thread From: yuantian.tang at nxp.com @ 2017-02-08 5:43 UTC (permalink / raw) To: linux-arm-kernel From: Tang Yuantian <Yuantian.Tang@nxp.com> Get the CPU clock's potential parent clocks from the clock interface itself, rather than manually parsing the clocks property to find a phandle, looking at the clock-names property of that, and assuming that those are valid parent clocks for the cpu clock. This is necessary now that the clocks are generated based on the clock driver's knowledge of the chip rather than a fragile device-tree description of the mux options. We can now rely on the clock driver to ensure that the mux only exposes options that are valid. The cpufreq driver was currently being overly conservative in some cases -- for example, the "min_cpufreq = get_bus_freq()" restriction only applies to chips with erratum A-004510, and whether the freq_mask used on p5020 is needed depends on the actual frequencies of the PLLs (FWIW, p5040 has a similar limitation but its .freq_mask was zero) -- and the frequency mask mechanism made assumptions about particular parent clock indices that are no longer valid. Signed-off-by: Scott Wood <scottwood@nxp.com> Signed-off-by: Tang Yuantian <yuantian.tang@nxp.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> --- v2: - added more soc compatible strings drivers/cpufreq/qoriq-cpufreq.c | 145 +++++++++++++--------------------------- 1 file changed, 48 insertions(+), 97 deletions(-) diff --git a/drivers/cpufreq/qoriq-cpufreq.c b/drivers/cpufreq/qoriq-cpufreq.c index 53d8c3f..eee83c1 100644 --- a/drivers/cpufreq/qoriq-cpufreq.c +++ b/drivers/cpufreq/qoriq-cpufreq.c @@ -11,6 +11,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include <linux/clk.h> +#include <linux/clk-provider.h> #include <linux/cpufreq.h> #include <linux/cpu_cooling.h> #include <linux/errno.h> @@ -37,53 +38,20 @@ struct cpu_data { struct thermal_cooling_device *cdev; }; +/* + * Don't use cpufreq on this SoC -- used when the SoC would have otherwise + * matched a more generic compatible. + */ +#define SOC_BLACKLIST 1 + /** * struct soc_data - SoC specific data - * @freq_mask: mask the disallowed frequencies - * @flag: unique flags + * @flags: SOC_xxx */ struct soc_data { - u32 freq_mask[4]; - u32 flag; -}; - -#define FREQ_MASK 1 -/* see hardware specification for the allowed frqeuencies */ -static const struct soc_data sdata[] = { - { /* used by p2041 and p3041 */ - .freq_mask = {0x8, 0x8, 0x2, 0x2}, - .flag = FREQ_MASK, - }, - { /* used by p5020 */ - .freq_mask = {0x8, 0x2}, - .flag = FREQ_MASK, - }, - { /* used by p4080, p5040 */ - .freq_mask = {0}, - .flag = 0, - }, + u32 flags; }; -/* - * the minimum allowed core frequency, in Hz - * for chassis v1.0, >= platform frequency - * for chassis v2.0, >= platform frequency / 2 - */ -static u32 min_cpufreq; -static const u32 *fmask; - -#if defined(CONFIG_ARM) -static int get_cpu_physical_id(int cpu) -{ - return topology_core_id(cpu); -} -#else -static int get_cpu_physical_id(int cpu) -{ - return get_hard_smp_processor_id(cpu); -} -#endif - static u32 get_bus_freq(void) { struct device_node *soc; @@ -101,9 +69,10 @@ static u32 get_bus_freq(void) return sysfreq; } -static struct device_node *cpu_to_clk_node(int cpu) +static struct clk *cpu_to_clk(int cpu) { - struct device_node *np, *clk_np; + struct device_node *np; + struct clk *clk; if (!cpu_present(cpu)) return NULL; @@ -112,37 +81,28 @@ static struct device_node *cpu_to_clk_node(int cpu) if (!np) return NULL; - clk_np = of_parse_phandle(np, "clocks", 0); - if (!clk_np) - return NULL; - + clk = of_clk_get(np, 0); of_node_put(np); - - return clk_np; + return clk; } /* traverse cpu nodes to get cpu mask of sharing clock wire */ static void set_affected_cpus(struct cpufreq_policy *policy) { - struct device_node *np, *clk_np; struct cpumask *dstp = policy->cpus; + struct clk *clk; int i; - np = cpu_to_clk_node(policy->cpu); - if (!np) - return; - for_each_present_cpu(i) { - clk_np = cpu_to_clk_node(i); - if (!clk_np) + clk = cpu_to_clk(i); + if (IS_ERR(clk)) { + pr_err("%s: no clock for cpu %d\n", __func__, i); continue; + } - if (clk_np == np) + if (clk_is_match(policy->clk, clk)) cpumask_set_cpu(i, dstp); - - of_node_put(clk_np); } - of_node_put(np); } /* reduce the duplicated frequencies in frequency table */ @@ -200,8 +160,9 @@ static int qoriq_cpufreq_cpu_init(struct cpufreq_policy *policy) { struct device_node *np, *pnode; int i, count, ret; - u32 freq, mask; + u32 freq; struct clk *clk; + const struct clk_hw *hwclk; struct cpufreq_frequency_table *table; struct cpu_data *data; unsigned int cpu = policy->cpu; @@ -221,17 +182,13 @@ static int qoriq_cpufreq_cpu_init(struct cpufreq_policy *policy) goto err_nomem2; } - pnode = of_parse_phandle(np, "clocks", 0); - if (!pnode) { - pr_err("%s: could not get clock information\n", __func__); - goto err_nomem2; - } + hwclk = __clk_get_hw(policy->clk); + count = clk_hw_get_num_parents(hwclk); - count = of_property_count_strings(pnode, "clock-names"); data->pclk = kcalloc(count, sizeof(struct clk *), GFP_KERNEL); if (!data->pclk) { pr_err("%s: no memory\n", __func__); - goto err_node; + goto err_nomem2; } table = kcalloc(count + 1, sizeof(*table), GFP_KERNEL); @@ -240,23 +197,11 @@ static int qoriq_cpufreq_cpu_init(struct cpufreq_policy *policy) goto err_pclk; } - if (fmask) - mask = fmask[get_cpu_physical_id(cpu)]; - else - mask = 0x0; - for (i = 0; i < count; i++) { - clk = of_clk_get(pnode, i); + clk = clk_hw_get_parent_by_index(hwclk, i)->clk; data->pclk[i] = clk; freq = clk_get_rate(clk); - /* - * the clock is valid if its frequency is not masked - * and large than minimum allowed frequency. - */ - if (freq < min_cpufreq || (mask & (1 << i))) - table[i].frequency = CPUFREQ_ENTRY_INVALID; - else - table[i].frequency = freq / 1000; + table[i].frequency = freq / 1000; table[i].driver_data = i; } freq_table_redup(table, count); @@ -290,10 +235,7 @@ static int qoriq_cpufreq_cpu_init(struct cpufreq_policy *policy) kfree(table); err_pclk: kfree(data->pclk); -err_node: - of_node_put(pnode); err_nomem2: - policy->driver_data = NULL; kfree(data); err_np: of_node_put(np); @@ -357,12 +299,25 @@ static struct cpufreq_driver qoriq_cpufreq_driver = { .attr = cpufreq_generic_attr, }; +static const struct soc_data blacklist = { + .flags = SOC_BLACKLIST, +}; + static const struct of_device_id node_matches[] __initconst = { - { .compatible = "fsl,p2041-clockgen", .data = &sdata[0], }, - { .compatible = "fsl,p3041-clockgen", .data = &sdata[0], }, - { .compatible = "fsl,p5020-clockgen", .data = &sdata[1], }, - { .compatible = "fsl,p4080-clockgen", .data = &sdata[2], }, - { .compatible = "fsl,p5040-clockgen", .data = &sdata[2], }, + /* e6500 cannot use cpufreq due to erratum A-008083 */ + { .compatible = "fsl,b4420-clockgen", &blacklist }, + { .compatible = "fsl,b4860-clockgen", &blacklist }, + { .compatible = "fsl,t2080-clockgen", &blacklist }, + { .compatible = "fsl,t4240-clockgen", &blacklist }, + + { .compatible = "fsl,ls1012a-clockgen", }, + { .compatible = "fsl,ls1021a-clockgen", }, + { .compatible = "fsl,ls1043a-clockgen", }, + { .compatible = "fsl,ls1046a-clockgen", }, + { .compatible = "fsl,ls1088a-clockgen", }, + { .compatible = "fsl,ls2080a-clockgen", }, + { .compatible = "fsl,p4080-clockgen", }, + { .compatible = "fsl,qoriq-clockgen-1.0", }, { .compatible = "fsl,qoriq-clockgen-2.0", }, {} }; @@ -380,16 +335,12 @@ static int __init qoriq_cpufreq_init(void) match = of_match_node(node_matches, np); data = match->data; - if (data) { - if (data->flag) - fmask = data->freq_mask; - min_cpufreq = get_bus_freq(); - } else { - min_cpufreq = get_bus_freq() / 2; - } of_node_put(np); + if (data && data->flags & SOC_BLACKLIST) + return -ENODEV; + ret = cpufreq_register_driver(&qoriq_cpufreq_driver); if (!ret) pr_info("Freescale QorIQ CPU frequency scaling driver\n"); -- 2.1.0.27.g96db324 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2 v2] cpufreq: qoriq: Don't look at clock implementation details 2017-02-08 5:43 ` [PATCH 2/2 v2] cpufreq: qoriq: Don't look at clock implementation details yuantian.tang at nxp.com @ 2017-02-08 11:19 ` kbuild test robot 0 siblings, 0 replies; 5+ messages in thread From: kbuild test robot @ 2017-02-08 11:19 UTC (permalink / raw) To: linux-arm-kernel Hi Tang, [auto build test WARNING on pm/linux-next] [also build test WARNING on v4.10-rc7 next-20170208] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/yuantian-tang-nxp-com/cpufreq-qoriq-added-arm64-socs-support/20170208-163748 base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next config: arm-multi_v7_defconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm Note: it may well be a FALSE warning. FWIW you are at least aware of it now. http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings All warnings (new ones prefixed by >>): drivers/cpufreq/qoriq-cpufreq.c: In function 'qoriq_cpufreq_cpu_init': >> drivers/cpufreq/qoriq-cpufreq.c:230:2: warning: 'pnode' may be used uninitialized in this function [-Wmaybe-uninitialized] of_node_put(pnode); ^~~~~~~~~~~~~~~~~~ vim +/pnode +230 drivers/cpufreq/qoriq-cpufreq.c defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 214 pr_err("invalid frequency table: %d\n", ret); defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 215 goto err_nomem1; defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 216 } defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 217 defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 218 data->table = table; defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 219 defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 220 /* update ->cpus if we have cluster, no harm if not */ a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 221 set_affected_cpus(policy); a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 222 policy->driver_data = data; defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 223 906fe033 drivers/cpufreq/ppc-corenet-cpufreq.c Ed Swarthout 2014-06-05 224 /* Minimum transition latency is 12 platform clocks */ 906fe033 drivers/cpufreq/ppc-corenet-cpufreq.c Ed Swarthout 2014-06-05 225 u64temp = 12ULL * NSEC_PER_SEC; a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 226 do_div(u64temp, get_bus_freq()); 906fe033 drivers/cpufreq/ppc-corenet-cpufreq.c Ed Swarthout 2014-06-05 227 policy->cpuinfo.transition_latency = u64temp + 1; 6712d293 drivers/cpufreq/ppc-corenet-cpufreq.c Tim Gardner 2014-04-28 228 defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 229 of_node_put(np); 8a95c144 drivers/cpufreq/qoriq-cpufreq.c Tang Yuantian 2015-06-04 @230 of_node_put(pnode); defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 231 defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 232 return 0; defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 233 defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 234 err_nomem1: defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 235 kfree(table); 8a95c144 drivers/cpufreq/qoriq-cpufreq.c Tang Yuantian 2015-06-04 236 err_pclk: 8a95c144 drivers/cpufreq/qoriq-cpufreq.c Tang Yuantian 2015-06-04 237 kfree(data->pclk); defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 238 err_nomem2: :::::: The code at line 230 was first introduced by commit :::::: 8a95c1441c799bb0f0d31cdb11523d91923d51a7 cpufreq: qoriq: optimize the CPU frequency switching time :::::: TO: Tang Yuantian <Yuantian.Tang@freescale.com> :::::: CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation -------------- next part -------------- A non-text attachment was scrubbed... Name: .config.gz Type: application/gzip Size: 39884 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20170208/d515f106/attachment-0001.gz> ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2 v2] cpufreq: qoriq: added arm64 socs support 2017-02-08 5:43 [PATCH 1/2 v2] cpufreq: qoriq: added arm64 socs support yuantian.tang at nxp.com 2017-02-08 5:43 ` [PATCH 2/2 v2] cpufreq: qoriq: Don't look at clock implementation details yuantian.tang at nxp.com @ 2017-02-08 20:51 ` kbuild test robot 2017-02-09 0:00 ` Rafael J. Wysocki 1 sibling, 1 reply; 5+ messages in thread From: kbuild test robot @ 2017-02-08 20:51 UTC (permalink / raw) To: linux-arm-kernel Hi Tang, [auto build test ERROR on pm/linux-next] [also build test ERROR on v4.10-rc7 next-20170208] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/yuantian-tang-nxp-com/cpufreq-qoriq-added-arm64-socs-support/20170208-163748 base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next config: arm64-allyesconfig (attached as .config) compiler: aarch64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm64 Note: the linux-review/yuantian-tang-nxp-com/cpufreq-qoriq-added-arm64-socs-support/20170208-163748 HEAD bf166f8dd442ff4715f94496bc14e12a1d0778f1 builds fine. It only hurts bisectibility. All errors (new ones prefixed by >>): drivers/cpufreq/qoriq-cpufreq.c: In function 'get_cpu_physical_id': >> drivers/cpufreq/qoriq-cpufreq.c:83:9: error: implicit declaration of function 'get_hard_smp_processor_id' [-Werror=implicit-function-declaration] return get_hard_smp_processor_id(cpu); ^~~~~~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +/get_hard_smp_processor_id +83 drivers/cpufreq/qoriq-cpufreq.c defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 67 /* defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 68 * the minimum allowed core frequency, in Hz defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 69 * for chassis v1.0, >= platform frequency defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 70 * for chassis v2.0, >= platform frequency / 2 defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 71 */ defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 72 static u32 min_cpufreq; defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 73 static const u32 *fmask; defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 74 a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 75 #if defined(CONFIG_ARM) a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 76 static int get_cpu_physical_id(int cpu) a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 77 { a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 78 return topology_core_id(cpu); a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 79 } a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 80 #else a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 81 static int get_cpu_physical_id(int cpu) a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 82 { a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 @83 return get_hard_smp_processor_id(cpu); a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 84 } a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 85 #endif defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 86 a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 87 static u32 get_bus_freq(void) a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 88 { a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 89 struct device_node *soc; a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 90 u32 sysfreq; defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 91 :::::: The code at line 83 was first introduced by commit :::::: a4f207428b53975069d12d49a509b440c707d691 cpufreq: qoriq: Make the driver usable on all QorIQ platforms :::::: TO: Tang Yuantian <Yuantian.Tang@freescale.com> :::::: CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation -------------- next part -------------- A non-text attachment was scrubbed... Name: .config.gz Type: application/gzip Size: 53673 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20170209/c8db2bfc/attachment-0001.gz> ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2 v2] cpufreq: qoriq: added arm64 socs support 2017-02-08 20:51 ` [PATCH 1/2 v2] cpufreq: qoriq: added arm64 socs support kbuild test robot @ 2017-02-09 0:00 ` Rafael J. Wysocki 0 siblings, 0 replies; 5+ messages in thread From: Rafael J. Wysocki @ 2017-02-09 0:00 UTC (permalink / raw) To: linux-arm-kernel On Thursday, February 09, 2017 04:51:46 AM kbuild test robot wrote: > Hi Tang, > > [auto build test ERROR on pm/linux-next] > [also build test ERROR on v4.10-rc7 next-20170208] > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] Please fix this. Thanks, Rafael > url: https://github.com/0day-ci/linux/commits/yuantian-tang-nxp-com/cpufreq-qoriq-added-arm64-socs-support/20170208-163748 > base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next > config: arm64-allyesconfig (attached as .config) > compiler: aarch64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 > reproduce: > wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # save the attached .config to linux build tree > make.cross ARCH=arm64 > > Note: the linux-review/yuantian-tang-nxp-com/cpufreq-qoriq-added-arm64-socs-support/20170208-163748 HEAD bf166f8dd442ff4715f94496bc14e12a1d0778f1 builds fine. > It only hurts bisectibility. > > All errors (new ones prefixed by >>): > > drivers/cpufreq/qoriq-cpufreq.c: In function 'get_cpu_physical_id': > >> drivers/cpufreq/qoriq-cpufreq.c:83:9: error: implicit declaration of function 'get_hard_smp_processor_id' [-Werror=implicit-function-declaration] > return get_hard_smp_processor_id(cpu); > ^~~~~~~~~~~~~~~~~~~~~~~~~ > cc1: some warnings being treated as errors > > vim +/get_hard_smp_processor_id +83 drivers/cpufreq/qoriq-cpufreq.c > > defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 67 /* > defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 68 * the minimum allowed core frequency, in Hz > defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 69 * for chassis v1.0, >= platform frequency > defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 70 * for chassis v2.0, >= platform frequency / 2 > defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 71 */ > defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 72 static u32 min_cpufreq; > defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 73 static const u32 *fmask; > defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 74 > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 75 #if defined(CONFIG_ARM) > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 76 static int get_cpu_physical_id(int cpu) > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 77 { > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 78 return topology_core_id(cpu); > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 79 } > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 80 #else > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 81 static int get_cpu_physical_id(int cpu) > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 82 { > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 @83 return get_hard_smp_processor_id(cpu); > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 84 } > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 85 #endif > defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 86 > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 87 static u32 get_bus_freq(void) > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 88 { > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 89 struct device_node *soc; > a4f20742 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2015-03-13 90 u32 sysfreq; > defa4c73 drivers/cpufreq/ppc-corenet-cpufreq.c Tang Yuantian 2013-06-05 91 > > :::::: The code at line 83 was first introduced by commit > :::::: a4f207428b53975069d12d49a509b440c707d691 cpufreq: qoriq: Make the driver usable on all QorIQ platforms > > :::::: TO: Tang Yuantian <Yuantian.Tang@freescale.com> > :::::: CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-02-09 0:00 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-02-08 5:43 [PATCH 1/2 v2] cpufreq: qoriq: added arm64 socs support yuantian.tang at nxp.com 2017-02-08 5:43 ` [PATCH 2/2 v2] cpufreq: qoriq: Don't look at clock implementation details yuantian.tang at nxp.com 2017-02-08 11:19 ` kbuild test robot 2017-02-08 20:51 ` [PATCH 1/2 v2] cpufreq: qoriq: added arm64 socs support kbuild test robot 2017-02-09 0:00 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).