On 25-09-20, 17:15, kernel test robot wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master > head: d1d2220c7f39d0fca302c4ba6cca4ede01660a2b > commit: b89c01c960511dcffe3666d89645c95445d00902 [7640/10763] cpufreq: tegra186: Fix initial frequency > config: arm64-randconfig-s031-20200923 (attached as .config) > compiler: aarch64-linux-gcc (GCC) 9.3.0 > reproduce: > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # apt-get install sparse > # sparse version: v0.6.2-201-g24bdaac6-dirty > # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=b89c01c960511dcffe3666d89645c95445d00902 > git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git > git fetch --no-tags linux-next master > git checkout b89c01c960511dcffe3666d89645c95445d00902 > # save the attached .config to linux build tree > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64 > > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot > > > sparse warnings: (new ones prefixed by >>) > > drivers/cpufreq/tegra186-cpufreq.c:72:37: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *driver_data @@ got void [noderef] __iomem * @@ > drivers/cpufreq/tegra186-cpufreq.c:72:37: sparse: expected void *driver_data > drivers/cpufreq/tegra186-cpufreq.c:72:37: sparse: got void [noderef] __iomem * > drivers/cpufreq/tegra186-cpufreq.c:87:40: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *edvd_reg @@ got void *driver_data @@ > drivers/cpufreq/tegra186-cpufreq.c:87:40: sparse: expected void [noderef] __iomem *edvd_reg > drivers/cpufreq/tegra186-cpufreq.c:87:40: sparse: got void *driver_data > >> drivers/cpufreq/tegra186-cpufreq.c:108:18: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *edvd_reg @@ got void *driver_data @@ > drivers/cpufreq/tegra186-cpufreq.c:108:18: sparse: expected void [noderef] __iomem *edvd_reg > drivers/cpufreq/tegra186-cpufreq.c:108:18: sparse: got void *driver_data > > vim +108 drivers/cpufreq/tegra186-cpufreq.c > > 53 > 54 static int tegra186_cpufreq_init(struct cpufreq_policy *policy) > 55 { > 56 struct tegra186_cpufreq_data *data = cpufreq_get_driver_data(); > 57 unsigned int i; > 58 > 59 for (i = 0; i < data->num_clusters; i++) { > 60 struct tegra186_cpufreq_cluster *cluster = &data->clusters[i]; > 61 const struct tegra186_cpufreq_cluster_info *info = > 62 cluster->info; > 63 int core; > 64 > 65 for (core = 0; core < ARRAY_SIZE(info->cpus); core++) { > 66 if (info->cpus[core] == policy->cpu) > 67 break; > 68 } > 69 if (core == ARRAY_SIZE(info->cpus)) > 70 continue; > 71 > > 72 policy->driver_data = > 73 data->regs + info->offset + EDVD_CORE_VOLT_FREQ(core); > 74 policy->freq_table = cluster->table; > 75 break; > 76 } > 77 > 78 policy->cpuinfo.transition_latency = 300 * 1000; > 79 > 80 return 0; > 81 } > 82 > 83 static int tegra186_cpufreq_set_target(struct cpufreq_policy *policy, > 84 unsigned int index) > 85 { > 86 struct cpufreq_frequency_table *tbl = policy->freq_table + index; > 87 void __iomem *edvd_reg = policy->driver_data; > 88 u32 edvd_val = tbl->driver_data; > 89 > 90 writel(edvd_val, edvd_reg); > 91 > 92 return 0; > 93 } > 94 > 95 static unsigned int tegra186_cpufreq_get(unsigned int cpu) > 96 { > 97 struct cpufreq_frequency_table *tbl; > 98 struct cpufreq_policy *policy; > 99 void __iomem *edvd_reg; > 100 unsigned int i, freq = 0; > 101 u32 ndiv; > 102 > 103 policy = cpufreq_cpu_get(cpu); > 104 if (!policy) > 105 return 0; > 106 > 107 tbl = policy->freq_table; > > 108 edvd_reg = policy->driver_data; > 109 ndiv = readl(edvd_reg) & EDVD_CORE_VOLT_FREQ_F_MASK; > 110 > 111 for (i = 0; tbl[i].frequency != CPUFREQ_TABLE_END; i++) { > 112 if ((tbl[i].driver_data & EDVD_CORE_VOLT_FREQ_F_MASK) == ndiv) { > 113 freq = tbl[i].frequency; > 114 break; > 115 } > 116 } > 117 > 118 cpufreq_cpu_put(policy); > 119 > 120 return freq; > 121 } > 122 Jon, Please send a fix for this. -- viresh