All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/msm/a6xx: Vote for a reasonable bus quota before starting GMU init
@ 2018-09-28 14:31 Jordan Crouse
       [not found] ` <20180928143106.28417-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Jordan Crouse @ 2018-09-28 14:31 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

To avoid possible issues during GMU init make sure to vote the bus
quota to a reasonable level before starting the sequence. Also
remove the bus vote during power off to avoid leaking power we don't
need.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
---
 drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
index bce66ed9638d..9ddf64ff968e 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
@@ -692,6 +692,8 @@ int a6xx_gmu_reset(struct a6xx_gpu *a6xx_gpu)
 
 int a6xx_gmu_resume(struct a6xx_gpu *a6xx_gpu)
 {
+	struct adreno_gpu *adreno_gpu = &a6xx_gpu->base;
+	struct msm_gpu *gpu = &adreno_gpu->base;
 	struct a6xx_gmu *gmu = &a6xx_gpu->gmu;
 	int status, ret;
 
@@ -707,6 +709,9 @@ int a6xx_gmu_resume(struct a6xx_gpu *a6xx_gpu)
 	if (ret)
 		goto out;
 
+	/* Set the bus quota to a reasonable value for boot */
+	icc_set(gpu->icc_path, 0, 3072000000);
+
 	a6xx_gmu_irq_enable(gmu);
 
 	/* Check to see if we are doing a cold or warm boot */
@@ -747,6 +752,8 @@ bool a6xx_gmu_isidle(struct a6xx_gmu *gmu)
 
 int a6xx_gmu_stop(struct a6xx_gpu *a6xx_gpu)
 {
+	struct adreno_gpu *adreno_gpu = &a6xx_gpu->base;
+	struct msm_gpu *gpu = &adreno_gpu->base;
 	struct a6xx_gmu *gmu = &a6xx_gpu->gmu;
 	u32 val;
 
@@ -793,6 +800,9 @@ int a6xx_gmu_stop(struct a6xx_gpu *a6xx_gpu)
 	/* Tell RPMh to power off the GPU */
 	a6xx_rpmh_stop(gmu);
 
+	/* Remove the bus vote */
+	icc_set(gpu->icc_path, 0, 0);
+
 	clk_bulk_disable_unprepare(gmu->nr_clocks, gmu->clocks);
 
 	pm_runtime_put_sync(gmu->dev);
-- 
2.18.0

_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] drm/msm/a6xx: Vote for a reasonable bus quota before starting GMU init
       [not found] ` <20180928143106.28417-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
@ 2018-09-28 16:55   ` kbuild test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kbuild test robot @ 2018-09-28 16:55 UTC (permalink / raw)
  To: Jordan Crouse
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	kbuild-all-JC7UmRfGjtg,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

[-- Attachment #1: Type: text/plain, Size: 3406 bytes --]

Hi Jordan,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on robclark/msm-next]
[also build test ERROR on v4.19-rc5 next-20180928]
[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/Jordan-Crouse/drm-msm-a6xx-Vote-for-a-reasonable-bus-quota-before-starting-GMU-init/20180928-223510
base:   git://people.freedesktop.org/~robclark/linux msm-next
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.2.0 make.cross ARCH=arm 

All error/warnings (new ones prefixed by >>):

   drivers/gpu//drm/msm/adreno/a6xx_gmu.c: In function 'a6xx_gmu_resume':
>> drivers/gpu//drm/msm/adreno/a6xx_gmu.c:658:2: error: implicit declaration of function 'icc_set' [-Werror=implicit-function-declaration]
     icc_set(gpu->icc_path, 0, 3072000000);
     ^~~~~~~
>> drivers/gpu//drm/msm/adreno/a6xx_gmu.c:658:13: error: 'struct msm_gpu' has no member named 'icc_path'
     icc_set(gpu->icc_path, 0, 3072000000);
                ^~
>> drivers/gpu//drm/msm/adreno/a6xx_gmu.c:658:2: warning: this decimal constant is unsigned only in ISO C90
     icc_set(gpu->icc_path, 0, 3072000000);
     ^~~~~~~
   drivers/gpu//drm/msm/adreno/a6xx_gmu.c: In function 'a6xx_gmu_stop':
   drivers/gpu//drm/msm/adreno/a6xx_gmu.c:749:13: error: 'struct msm_gpu' has no member named 'icc_path'
     icc_set(gpu->icc_path, 0, 0);
                ^~
   cc1: some warnings being treated as errors

vim +/icc_set +658 drivers/gpu//drm/msm/adreno/a6xx_gmu.c

   637	
   638	int a6xx_gmu_resume(struct a6xx_gpu *a6xx_gpu)
   639	{
   640		struct adreno_gpu *adreno_gpu = &a6xx_gpu->base;
   641		struct msm_gpu *gpu = &adreno_gpu->base;
   642		struct a6xx_gmu *gmu = &a6xx_gpu->gmu;
   643		int status, ret;
   644	
   645		if (WARN(!gmu->mmio, "The GMU is not set up yet\n"))
   646			return 0;
   647	
   648		/* Turn on the resources */
   649		pm_runtime_get_sync(gmu->dev);
   650	
   651		/* Use a known rate to bring up the GMU */
   652		clk_set_rate(gmu->core_clk, 200000000);
   653		ret = clk_bulk_prepare_enable(gmu->nr_clocks, gmu->clocks);
   654		if (ret)
   655			goto out;
   656	
   657		/* Set the bus quota to a reasonable value for boot */
 > 658		icc_set(gpu->icc_path, 0, 3072000000);
   659	
   660		a6xx_gmu_irq_enable(gmu);
   661	
   662		/* Check to see if we are doing a cold or warm boot */
   663		status = gmu_read(gmu, REG_A6XX_GMU_GENERAL_7) == 1 ?
   664			GMU_WARM_BOOT : GMU_COLD_BOOT;
   665	
   666		ret = a6xx_gmu_fw_start(gmu, status);
   667		if (ret)
   668			goto out;
   669	
   670		ret = a6xx_hfi_start(gmu, status);
   671	
   672		/* Set the GPU to the highest power frequency */
   673		a6xx_gmu_set_freq(gmu, gmu->nr_gpu_freqs - 1);
   674	
   675	out:
   676		/* Make sure to turn off the boot OOB request on error */
   677		if (ret)
   678			a6xx_gmu_clear_oob(gmu, GMU_OOB_BOOT_SLUMBER);
   679	
   680		return ret;
   681	}
   682	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 66168 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-09-28 16:55 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-28 14:31 [PATCH] drm/msm/a6xx: Vote for a reasonable bus quota before starting GMU init Jordan Crouse
     [not found] ` <20180928143106.28417-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-09-28 16:55   ` kbuild test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.