2022-04-22 22:29:35

by Brian Norris

[permalink] [raw]
Subject: [PATCH] soc: rockchip: Fix compile-testing SoC drivers

Similar to commit 7f94b69ece51 ("ARM: ixp4xx: fix compile-testing soc
drivers").

drivers/soc/rockchip/Kconfig makes plenty of provision for configuring
drivers either for ARCH_ROCKCHIP or for COMPILE_TEST. But
drivers/soc/Makefile pulls the rug out from under us, by refusing to
build anything if we specified COMPILE_TEST but not ARCH_ROCKCHIP.

Currently, I'm not aware of anything that breaks without this patch, but
it certainly makes for confusing builds (CONFIG_ROCKCHIP_PM_DOMAINS=y,
but we didn't actually compile the driver?) and leaves room for future
error (I have pending patches that break confusingly with COMPILE_TEST=y
even though their Kconfig dependencies seem correct [1]).

Defer to drivers/soc/rockchip/{Makefile,Kconfig} to do the right thing.

[1] e.g.,
https://lore.kernel.org/linux-rockchip/20220405184816.RFC.2.I2d73b403944f0b8b5871a77585b73f31ccc62999@changeid/
[RFC PATCH 2/2] PM / devfreq: rk3399_dmc: Block PMU during transitions

Signed-off-by: Brian Norris <[email protected]>
---

drivers/soc/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
index fd7717d597fc..4c91705a8bb3 100644
--- a/drivers/soc/Makefile
+++ b/drivers/soc/Makefile
@@ -23,7 +23,7 @@ obj-y += pxa/
obj-y += amlogic/
obj-y += qcom/
obj-y += renesas/
-obj-$(CONFIG_ARCH_ROCKCHIP) += rockchip/
+obj-y += rockchip/
obj-$(CONFIG_SOC_SAMSUNG) += samsung/
obj-$(CONFIG_SOC_SIFIVE) += sifive/
obj-y += sunxi/
--
2.36.0.rc2.479.g8af0fa9b8e-goog


2022-04-22 22:49:06

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH] soc: rockchip: Fix compile-testing SoC drivers

On Fri, Apr 22, 2022 at 11:19:19AM -0700, Brian Norris wrote:
> Similar to commit 7f94b69ece51 ("ARM: ixp4xx: fix compile-testing soc
> drivers").
>
> drivers/soc/rockchip/Kconfig makes plenty of provision for configuring
> drivers either for ARCH_ROCKCHIP or for COMPILE_TEST. But
> drivers/soc/Makefile pulls the rug out from under us, by refusing to
> build anything if we specified COMPILE_TEST but not ARCH_ROCKCHIP.
>
> Currently, I'm not aware of anything that breaks without this patch, but
> it certainly makes for confusing builds (CONFIG_ROCKCHIP_PM_DOMAINS=y,
> but we didn't actually compile the driver?) and leaves room for future
> error (I have pending patches that break confusingly with COMPILE_TEST=y
> even though their Kconfig dependencies seem correct [1]).
>
> Defer to drivers/soc/rockchip/{Makefile,Kconfig} to do the right thing.
>
> [1] e.g.,
> https://lore.kernel.org/linux-rockchip/20220405184816.RFC.2.I2d73b403944f0b8b5871a77585b73f31ccc62999@changeid/
> [RFC PATCH 2/2] PM / devfreq: rk3399_dmc: Block PMU during transitions
>
> Signed-off-by: Brian Norris <[email protected]>

Tested-by: Guenter Roeck <[email protected]>

> ---
>
> drivers/soc/Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
> index fd7717d597fc..4c91705a8bb3 100644
> --- a/drivers/soc/Makefile
> +++ b/drivers/soc/Makefile
> @@ -23,7 +23,7 @@ obj-y += pxa/
> obj-y += amlogic/
> obj-y += qcom/
> obj-y += renesas/
> -obj-$(CONFIG_ARCH_ROCKCHIP) += rockchip/
> +obj-y += rockchip/
> obj-$(CONFIG_SOC_SAMSUNG) += samsung/
> obj-$(CONFIG_SOC_SIFIVE) += sifive/
> obj-y += sunxi/
> --
> 2.36.0.rc2.479.g8af0fa9b8e-goog
>

2022-04-23 10:28:56

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH] soc: rockchip: Fix compile-testing SoC drivers

Hi Brian,

I love your patch! Yet something to improve:

[auto build test ERROR on rockchip/for-next]
[also build test ERROR on soc/for-next linus/master v5.18-rc3 next-20220422]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/intel-lab-lkp/linux/commits/Brian-Norris/soc-rockchip-Fix-compile-testing-SoC-drivers/20220423-022353
base: https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git for-next
config: sh-allmodconfig (https://download.01.org/0day-ci/archive/20220423/[email protected]/config)
compiler: sh4-linux-gcc (GCC) 11.2.0
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/intel-lab-lkp/linux/commit/bb37a0dd33d08baf273f38dbea4951d50f020588
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Brian-Norris/soc-rockchip-Fix-compile-testing-SoC-drivers/20220423-022353
git checkout bb37a0dd33d08baf273f38dbea4951d50f020588
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross W=1 O=build_dir ARCH=sh SHELL=/bin/bash drivers/soc/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All errors (new ones prefixed by >>):

drivers/soc/rockchip/pm_domains.c: In function 'rockchip_pmu_set_idle_request':
>> drivers/soc/rockchip/pm_domains.c:181:9: error: implicit declaration of function 'dsb' [-Werror=implicit-function-declaration]
181 | dsb(sy);
| ^~~
>> drivers/soc/rockchip/pm_domains.c:181:13: error: 'sy' undeclared (first use in this function); did you mean 's8'?
181 | dsb(sy);
| ^~
| s8
drivers/soc/rockchip/pm_domains.c:181:13: note: each undeclared identifier is reported only once for each function it appears in
drivers/soc/rockchip/pm_domains.c: In function 'rockchip_do_pmu_set_power_domain':
drivers/soc/rockchip/pm_domains.c:288:13: error: 'sy' undeclared (first use in this function); did you mean 's8'?
288 | dsb(sy);
| ^~
| s8
cc1: some warnings being treated as errors


vim +/dsb +181 drivers/soc/rockchip/pm_domains.c

e4c8cd82d5e114 Caesar Wang 2016-10-13 159
7c696693a4f54d Caesar Wang 2015-09-08 160 static int rockchip_pmu_set_idle_request(struct rockchip_pm_domain *pd,
7c696693a4f54d Caesar Wang 2015-09-08 161 bool idle)
7c696693a4f54d Caesar Wang 2015-09-08 162 {
7c696693a4f54d Caesar Wang 2015-09-08 163 const struct rockchip_domain_info *pd_info = pd->info;
e4c8cd82d5e114 Caesar Wang 2016-10-13 164 struct generic_pm_domain *genpd = &pd->genpd;
7c696693a4f54d Caesar Wang 2015-09-08 165 struct rockchip_pmu *pmu = pd->pmu;
e4c8cd82d5e114 Caesar Wang 2016-10-13 166 unsigned int target_ack;
7c696693a4f54d Caesar Wang 2015-09-08 167 unsigned int val;
e4c8cd82d5e114 Caesar Wang 2016-10-13 168 bool is_idle;
e4c8cd82d5e114 Caesar Wang 2016-10-13 169 int ret;
7c696693a4f54d Caesar Wang 2015-09-08 170
6aa841c8097fee Elaine Zhang 2016-03-10 171 if (pd_info->req_mask == 0)
6aa841c8097fee Elaine Zhang 2016-03-10 172 return 0;
79bb17ce8edb31 Elaine Zhang 2016-12-23 173 else if (pd_info->req_w_mask)
79bb17ce8edb31 Elaine Zhang 2016-12-23 174 regmap_write(pmu->regmap, pmu->info->req_offset,
79bb17ce8edb31 Elaine Zhang 2016-12-23 175 idle ? (pd_info->req_mask | pd_info->req_w_mask) :
79bb17ce8edb31 Elaine Zhang 2016-12-23 176 pd_info->req_w_mask);
79bb17ce8edb31 Elaine Zhang 2016-12-23 177 else
7c696693a4f54d Caesar Wang 2015-09-08 178 regmap_update_bits(pmu->regmap, pmu->info->req_offset,
7c696693a4f54d Caesar Wang 2015-09-08 179 pd_info->req_mask, idle ? -1U : 0);
7c696693a4f54d Caesar Wang 2015-09-08 180
7c696693a4f54d Caesar Wang 2015-09-08 @181 dsb(sy);
7c696693a4f54d Caesar Wang 2015-09-08 182
e4c8cd82d5e114 Caesar Wang 2016-10-13 183 /* Wait util idle_ack = 1 */
e4c8cd82d5e114 Caesar Wang 2016-10-13 184 target_ack = idle ? pd_info->ack_mask : 0;
e4c8cd82d5e114 Caesar Wang 2016-10-13 185 ret = readx_poll_timeout_atomic(rockchip_pmu_read_ack, pmu, val,
e4c8cd82d5e114 Caesar Wang 2016-10-13 186 (val & pd_info->ack_mask) == target_ack,
e4c8cd82d5e114 Caesar Wang 2016-10-13 187 0, 10000);
e4c8cd82d5e114 Caesar Wang 2016-10-13 188 if (ret) {
e4c8cd82d5e114 Caesar Wang 2016-10-13 189 dev_err(pmu->dev,
e4c8cd82d5e114 Caesar Wang 2016-10-13 190 "failed to get ack on domain '%s', val=0x%x\n",
e4c8cd82d5e114 Caesar Wang 2016-10-13 191 genpd->name, val);
e4c8cd82d5e114 Caesar Wang 2016-10-13 192 return ret;
e4c8cd82d5e114 Caesar Wang 2016-10-13 193 }
7c696693a4f54d Caesar Wang 2015-09-08 194
e4c8cd82d5e114 Caesar Wang 2016-10-13 195 ret = readx_poll_timeout_atomic(rockchip_pmu_domain_is_idle, pd,
e4c8cd82d5e114 Caesar Wang 2016-10-13 196 is_idle, is_idle == idle, 0, 10000);
e4c8cd82d5e114 Caesar Wang 2016-10-13 197 if (ret) {
e4c8cd82d5e114 Caesar Wang 2016-10-13 198 dev_err(pmu->dev,
e4c8cd82d5e114 Caesar Wang 2016-10-13 199 "failed to set idle on domain '%s', val=%d\n",
e4c8cd82d5e114 Caesar Wang 2016-10-13 200 genpd->name, is_idle);
e4c8cd82d5e114 Caesar Wang 2016-10-13 201 return ret;
e4c8cd82d5e114 Caesar Wang 2016-10-13 202 }
7c696693a4f54d Caesar Wang 2015-09-08 203
7c696693a4f54d Caesar Wang 2015-09-08 204 return 0;
7c696693a4f54d Caesar Wang 2015-09-08 205 }
7c696693a4f54d Caesar Wang 2015-09-08 206

--
0-DAY CI Kernel Test Service
https://01.org/lkp