Message ID | 20200629211725.2592-1-jonathan@marek.ca (mailing list archive) |
---|---|
Headers | show |
Series | Enable GPU for SM8150 and SM8250 | expand |
On 30/06/2020 00:17, Jonathan Marek wrote: > This series adds the missing clock drivers and dts nodes to enable > the GPU on both SM8150 and SM8250. > > Note an extra patch [1] is still required for GPU to work on SM8250. > > Changes in V2: > * Added "clk: qcom: gcc: fix sm8150 GPU and NPU clocks" to fix the newly added > SM8150 GPU gcc clocks > * Added "Fixes:" tag to "clk: qcom: clk-alpha-pll: remove unused/incorrect PLL_CAL_VAL" > * Added yaml schemas to gpucc dt-bindings patches > * Added "clk: qcom: add common gdsc_gx_do_nothing_enable for gpucc drivers" and changed > gpucc patches to use it. > * Removed CLK_IS_CRITICAL from gpu_cc_ahb_clk > * Added missing rpmh regulator level for sm8250 GPU clock levels > * Use sm8150/sm8250 iommu compatibles in dts > * Add gcc_gpu_gpll0_clk_src/gcc_gpu_gpll0_div_clk_src to gpucc clocks in dts > > [1] https://gist.github.com/flto/784f1aca761ebf2fe6c105719a4a04ca With your patches applied: [ 56.751977] msm msm: [drm:adreno_request_fw] loaded qcom/a650_sqe.fw from new location [ 56.760166] msm msm: [drm:adreno_request_fw] loaded qcom/a650_gmu.bin from new location [ 56.768485] arm-smmu 3da0000.iommu: genpd_runtime_resume() [ 56.774196] PM: gpu_cx_gdsc: Power-on latency exceeded, new value 49531 ns [ 56.781730] arm-smmu 3da0000.iommu: resume latency exceeded, 462604 ns [ 56.799559] platform 3d6a000.gmu: [drm:a6xx_gmu_resume] *ERROR* GMU firmware initialization timed out [ 56.809260] arm-smmu 3da0000.iommu: genpd_runtime_suspend() [ 56.813062] msm msm: [drm:adreno_load_gpu] *ERROR* Couldn't power up the GPU: -110
On 7/3/20 11:03 AM, Dmitry Baryshkov wrote: > On 30/06/2020 00:17, Jonathan Marek wrote: >> This series adds the missing clock drivers and dts nodes to enable >> the GPU on both SM8150 and SM8250. >> >> Note an extra patch [1] is still required for GPU to work on SM8250. >> >> Changes in V2: >> * Added "clk: qcom: gcc: fix sm8150 GPU and NPU clocks" to fix the >> newly added >> SM8150 GPU gcc clocks >> * Added "Fixes:" tag to "clk: qcom: clk-alpha-pll: remove >> unused/incorrect PLL_CAL_VAL" >> * Added yaml schemas to gpucc dt-bindings patches >> * Added "clk: qcom: add common gdsc_gx_do_nothing_enable for gpucc >> drivers" and changed >> gpucc patches to use it. >> * Removed CLK_IS_CRITICAL from gpu_cc_ahb_clk >> * Added missing rpmh regulator level for sm8250 GPU clock levels >> * Use sm8150/sm8250 iommu compatibles in dts >> * Add gcc_gpu_gpll0_clk_src/gcc_gpu_gpll0_div_clk_src to gpucc clocks >> in dts >> >> [1] https://gist.github.com/flto/784f1aca761ebf2fe6c105719a4a04ca > > With your patches applied: > > [ 56.751977] msm msm: [drm:adreno_request_fw] loaded qcom/a650_sqe.fw > from new location > [ 56.760166] msm msm: [drm:adreno_request_fw] loaded qcom/a650_gmu.bin > from new location > [ 56.768485] arm-smmu 3da0000.iommu: genpd_runtime_resume() > [ 56.774196] PM: gpu_cx_gdsc: Power-on latency exceeded, new value > 49531 ns > [ 56.781730] arm-smmu 3da0000.iommu: resume latency exceeded, 462604 ns > [ 56.799559] platform 3d6a000.gmu: [drm:a6xx_gmu_resume] *ERROR* GMU > firmware initialization timed out > [ 56.809260] arm-smmu 3da0000.iommu: genpd_runtime_suspend() > [ 56.813062] msm msm: [drm:adreno_load_gpu] *ERROR* Couldn't power up > the GPU: -110 > > Do you have your branch published somewhere so I can see what could've went wrong?
On 03/07/2020 18:08, Jonathan Marek wrote: > On 7/3/20 11:03 AM, Dmitry Baryshkov wrote: >> On 30/06/2020 00:17, Jonathan Marek wrote: >>> This series adds the missing clock drivers and dts nodes to enable >>> the GPU on both SM8150 and SM8250. >>> >>> Note an extra patch [1] is still required for GPU to work on SM8250. >>> >>> Changes in V2: >>> * Added "clk: qcom: gcc: fix sm8150 GPU and NPU clocks" to fix the >>> newly added >>> SM8150 GPU gcc clocks >>> * Added "Fixes:" tag to "clk: qcom: clk-alpha-pll: remove >>> unused/incorrect PLL_CAL_VAL" >>> * Added yaml schemas to gpucc dt-bindings patches >>> * Added "clk: qcom: add common gdsc_gx_do_nothing_enable for gpucc >>> drivers" and changed >>> gpucc patches to use it. >>> * Removed CLK_IS_CRITICAL from gpu_cc_ahb_clk >>> * Added missing rpmh regulator level for sm8250 GPU clock levels >>> * Use sm8150/sm8250 iommu compatibles in dts >>> * Add gcc_gpu_gpll0_clk_src/gcc_gpu_gpll0_div_clk_src to gpucc clocks >>> in dts >>> >>> [1] https://gist.github.com/flto/784f1aca761ebf2fe6c105719a4a04ca >> >> With your patches applied: >> >> [ 56.751977] msm msm: [drm:adreno_request_fw] loaded >> qcom/a650_sqe.fw from new location >> [ 56.760166] msm msm: [drm:adreno_request_fw] loaded >> qcom/a650_gmu.bin from new location >> [ 56.768485] arm-smmu 3da0000.iommu: genpd_runtime_resume() >> [ 56.774196] PM: gpu_cx_gdsc: Power-on latency exceeded, new value >> 49531 ns >> [ 56.781730] arm-smmu 3da0000.iommu: resume latency exceeded, 462604 ns >> [ 56.799559] platform 3d6a000.gmu: [drm:a6xx_gmu_resume] *ERROR* GMU >> firmware initialization timed out >> [ 56.809260] arm-smmu 3da0000.iommu: genpd_runtime_suspend() >> [ 56.813062] msm msm: [drm:adreno_load_gpu] *ERROR* Couldn't power >> up the GPU: -110 >> >> > > Do you have your branch published somewhere so I can see what could've > went wrong? I've applied your patches (this series + the extra one for gpu/drm/msm) on top of https://git.linaro.org/landing-teams/working/qualcomm/kernel.git branch integration-linux-qcomlt .
On 03/07/2020 18:14, Dmitry Baryshkov wrote: > On 03/07/2020 18:08, Jonathan Marek wrote: >> On 7/3/20 11:03 AM, Dmitry Baryshkov wrote: >>> On 30/06/2020 00:17, Jonathan Marek wrote: >>>> This series adds the missing clock drivers and dts nodes to enable >>>> the GPU on both SM8150 and SM8250. >>>> >>>> Note an extra patch [1] is still required for GPU to work on SM8250. >>>> >>>> Changes in V2: >>>> * Added "clk: qcom: gcc: fix sm8150 GPU and NPU clocks" to fix the >>>> newly added >>>> SM8150 GPU gcc clocks >>>> * Added "Fixes:" tag to "clk: qcom: clk-alpha-pll: remove >>>> unused/incorrect PLL_CAL_VAL" >>>> * Added yaml schemas to gpucc dt-bindings patches >>>> * Added "clk: qcom: add common gdsc_gx_do_nothing_enable for gpucc >>>> drivers" and changed >>>> gpucc patches to use it. >>>> * Removed CLK_IS_CRITICAL from gpu_cc_ahb_clk >>>> * Added missing rpmh regulator level for sm8250 GPU clock levels >>>> * Use sm8150/sm8250 iommu compatibles in dts >>>> * Add gcc_gpu_gpll0_clk_src/gcc_gpu_gpll0_div_clk_src to gpucc >>>> clocks in dts >>>> >>>> [1] https://gist.github.com/flto/784f1aca761ebf2fe6c105719a4a04ca >>> >>> With your patches applied: >>> >>> [ 56.751977] msm msm: [drm:adreno_request_fw] loaded >>> qcom/a650_sqe.fw from new location >>> [ 56.760166] msm msm: [drm:adreno_request_fw] loaded >>> qcom/a650_gmu.bin from new location >>> [ 56.768485] arm-smmu 3da0000.iommu: genpd_runtime_resume() >>> [ 56.774196] PM: gpu_cx_gdsc: Power-on latency exceeded, new value >>> 49531 ns >>> [ 56.781730] arm-smmu 3da0000.iommu: resume latency exceeded, >>> 462604 ns >>> [ 56.799559] platform 3d6a000.gmu: [drm:a6xx_gmu_resume] *ERROR* >>> GMU firmware initialization timed out >>> [ 56.809260] arm-smmu 3da0000.iommu: genpd_runtime_suspend() >>> [ 56.813062] msm msm: [drm:adreno_load_gpu] *ERROR* Couldn't power >>> up the GPU: -110 >>> >>> >> >> Do you have your branch published somewhere so I can see what could've >> went wrong? > > I've applied your patches (this series + the extra one for gpu/drm/msm) > on top of > https://git.linaro.org/landing-teams/working/qualcomm/kernel.git branch > integration-linux-qcomlt . A trimmed down version: git.linaro.org/people/dmitry.baryshkov/kernel.git branch sm8250-gpu-test
On 7/3/20 1:29 PM, Dmitry Baryshkov wrote: > On 03/07/2020 18:14, Dmitry Baryshkov wrote: >> On 03/07/2020 18:08, Jonathan Marek wrote: >>> On 7/3/20 11:03 AM, Dmitry Baryshkov wrote: >>>> On 30/06/2020 00:17, Jonathan Marek wrote: >>>>> This series adds the missing clock drivers and dts nodes to enable >>>>> the GPU on both SM8150 and SM8250. >>>>> >>>>> Note an extra patch [1] is still required for GPU to work on SM8250. >>>>> >>>>> Changes in V2: >>>>> * Added "clk: qcom: gcc: fix sm8150 GPU and NPU clocks" to fix the >>>>> newly added >>>>> SM8150 GPU gcc clocks >>>>> * Added "Fixes:" tag to "clk: qcom: clk-alpha-pll: remove >>>>> unused/incorrect PLL_CAL_VAL" >>>>> * Added yaml schemas to gpucc dt-bindings patches >>>>> * Added "clk: qcom: add common gdsc_gx_do_nothing_enable for gpucc >>>>> drivers" and changed >>>>> gpucc patches to use it. >>>>> * Removed CLK_IS_CRITICAL from gpu_cc_ahb_clk >>>>> * Added missing rpmh regulator level for sm8250 GPU clock levels >>>>> * Use sm8150/sm8250 iommu compatibles in dts >>>>> * Add gcc_gpu_gpll0_clk_src/gcc_gpu_gpll0_div_clk_src to gpucc >>>>> clocks in dts >>>>> >>>>> [1] https://gist.github.com/flto/784f1aca761ebf2fe6c105719a4a04ca >>>> >>>> With your patches applied: >>>> >>>> [ 56.751977] msm msm: [drm:adreno_request_fw] loaded >>>> qcom/a650_sqe.fw from new location >>>> [ 56.760166] msm msm: [drm:adreno_request_fw] loaded >>>> qcom/a650_gmu.bin from new location >>>> [ 56.768485] arm-smmu 3da0000.iommu: genpd_runtime_resume() >>>> [ 56.774196] PM: gpu_cx_gdsc: Power-on latency exceeded, new value >>>> 49531 ns >>>> [ 56.781730] arm-smmu 3da0000.iommu: resume latency exceeded, >>>> 462604 ns >>>> [ 56.799559] platform 3d6a000.gmu: [drm:a6xx_gmu_resume] *ERROR* >>>> GMU firmware initialization timed out >>>> [ 56.809260] arm-smmu 3da0000.iommu: genpd_runtime_suspend() >>>> [ 56.813062] msm msm: [drm:adreno_load_gpu] *ERROR* Couldn't power >>>> up the GPU: -110 >>>> >>>> >>> >>> Do you have your branch published somewhere so I can see what >>> could've went wrong? >> >> I've applied your patches (this series + the extra one for >> gpu/drm/msm) on top of >> https://git.linaro.org/landing-teams/working/qualcomm/kernel.git >> branch integration-linux-qcomlt . > > A trimmed down version: > git.linaro.org/people/dmitry.baryshkov/kernel.git branch sm8250-gpu-test > > Hi, I tried this branch, with only the sm8250-hdk.dts from my other series added (USB nodes removed as you don't have those in your branch), and the GPU starts up without problems. Possible differences I can think of: 1) Different firmware version which behaves differently? These are the checksums for the firmware I have: /lib/firmware# md5sum a650_* f6536ba45c2f9f64ec31438217b6a027 a650_gmu.bin 897be740bed67deaa1943e9c36293165 a650_sqe.fw 00f1b291a2b30c98f05c25506e3f4761 a650_zap.b00 bec0f79c7c6f5b32254facf3c7e046c7 a650_zap.b01 35273e4135147a269076144a3051b498 a650_zap.b02 ce0dd1af27306eb341a01bda642f1c64 a650_zap.elf 09834955a8865073f6ee483f69a98b33 a650_zap.mdt 2) GPU revision is not 650.2 (the downstream driver had workarounds for bugs in the first revisions, which I didn't include in the upstream driver) 3) Something in the kernel config is making a difference. Here is the kernel config I used to test this: https://gist.github.com/flto/c6b1bc48abda6fb580a2f21c51039c81 -Jonathan
Hi, On 06/07/2020 00:08, Jonathan Marek wrote: > On 7/3/20 1:29 PM, Dmitry Baryshkov wrote: >> On 03/07/2020 18:14, Dmitry Baryshkov wrote: >>> On 03/07/2020 18:08, Jonathan Marek wrote: >>>> On 7/3/20 11:03 AM, Dmitry Baryshkov wrote: >>>>> On 30/06/2020 00:17, Jonathan Marek wrote: >>>>>> This series adds the missing clock drivers and dts nodes to enable >>>>>> the GPU on both SM8150 and SM8250. >>>>>> >>>>>> Note an extra patch [1] is still required for GPU to work on SM8250. >>>>>> >>>>>> Changes in V2: >>>>>> * Added "clk: qcom: gcc: fix sm8150 GPU and NPU clocks" to fix the >>>>>> newly added >>>>>> SM8150 GPU gcc clocks >>>>>> * Added "Fixes:" tag to "clk: qcom: clk-alpha-pll: remove >>>>>> unused/incorrect PLL_CAL_VAL" >>>>>> * Added yaml schemas to gpucc dt-bindings patches >>>>>> * Added "clk: qcom: add common gdsc_gx_do_nothing_enable for gpucc >>>>>> drivers" and changed >>>>>> gpucc patches to use it. >>>>>> * Removed CLK_IS_CRITICAL from gpu_cc_ahb_clk >>>>>> * Added missing rpmh regulator level for sm8250 GPU clock levels >>>>>> * Use sm8150/sm8250 iommu compatibles in dts >>>>>> * Add gcc_gpu_gpll0_clk_src/gcc_gpu_gpll0_div_clk_src to gpucc >>>>>> clocks in dts >>>>>> >>>>>> [1] https://gist.github.com/flto/784f1aca761ebf2fe6c105719a4a04ca >>>>> >>>>> With your patches applied: >>>>> >>>>> [ 56.751977] msm msm: [drm:adreno_request_fw] loaded >>>>> qcom/a650_sqe.fw from new location >>>>> [ 56.760166] msm msm: [drm:adreno_request_fw] loaded >>>>> qcom/a650_gmu.bin from new location >>>>> [ 56.768485] arm-smmu 3da0000.iommu: genpd_runtime_resume() >>>>> [ 56.774196] PM: gpu_cx_gdsc: Power-on latency exceeded, new >>>>> value 49531 ns >>>>> [ 56.781730] arm-smmu 3da0000.iommu: resume latency exceeded, >>>>> 462604 ns >>>>> [ 56.799559] platform 3d6a000.gmu: [drm:a6xx_gmu_resume] *ERROR* >>>>> GMU firmware initialization timed out >>>>> [ 56.809260] arm-smmu 3da0000.iommu: genpd_runtime_suspend() >>>>> [ 56.813062] msm msm: [drm:adreno_load_gpu] *ERROR* Couldn't >>>>> power up the GPU: -110 >>>>> >>>>> >>>> >>>> Do you have your branch published somewhere so I can see what >>>> could've went wrong? >>> >>> I've applied your patches (this series + the extra one for >>> gpu/drm/msm) on top of >>> https://git.linaro.org/landing-teams/working/qualcomm/kernel.git >>> branch integration-linux-qcomlt . >> >> A trimmed down version: >> git.linaro.org/people/dmitry.baryshkov/kernel.git branch sm8250-gpu-test >> >> > > Hi, > > I tried this branch, with only the sm8250-hdk.dts from my other series > added (USB nodes removed as you don't have those in your branch), and > the GPU starts up without problems. > > Possible differences I can think of: > > 1) Different firmware version which behaves differently? These are the > checksums for the firmware I have: > > /lib/firmware# md5sum a650_* > f6536ba45c2f9f64ec31438217b6a027 a650_gmu.bin > 897be740bed67deaa1943e9c36293165 a650_sqe.fw > 00f1b291a2b30c98f05c25506e3f4761 a650_zap.b00 > bec0f79c7c6f5b32254facf3c7e046c7 a650_zap.b01 > 35273e4135147a269076144a3051b498 a650_zap.b02 > ce0dd1af27306eb341a01bda642f1c64 a650_zap.elf > 09834955a8865073f6ee483f69a98b33 a650_zap.mdt Interesting. This is what I have here: 3a3a455289c8c36b97a76b95d1dda5cb a650_gmu.bin 9439db9b76c84f4aec625ff2bc4d1f90 a650_sqe.fw 00f1b291a2b30c98f05c25506e3f4761 a650_zap.b00 f30017eb17a440476a939d8eb1fbe102 a650_zap.b01 35273e4135147a269076144a3051b498 a650_zap.b02 03cef57e54ff48ab3ad49c7e2bcac56e a650_zap.elf 93f651f41f4bab30dfb8e2bbd8f64ffd a650_zap.mdt > 2) GPU revision is not 650.2 (the downstream driver had workarounds for > bugs in the first revisions, which I didn't include in the upstream driver) Interesting, I will take a look. The first obvious difference is the hang timeout and the a6xx_gmu_start() handling. > > 3) Something in the kernel config is making a difference. Here is the > kernel config I used to test this: > https://gist.github.com/flto/c6b1bc48abda6fb580a2f21c51039c81 No, your config produces the same result: [ 46.964891] msm msm: [drm:0xffffffc01049bd00] loaded qcom/a650_sqe.fw from new location [ 46.973156] msm msm: [drm:0xffffffc01049bd00] loaded qcom/a650_gmu.bin from new location [ 46.994573] platform 3d6a000.gmu: [drm:0xffffffc0104a85d4] *ERROR* GMU firmware initialization timed out [ 47.004537] msm msm: [drm:0xffffffc01049b584] *ERROR* Couldn't power up the GPU: -110
On 03/07/2020 18:03, Dmitry Baryshkov wrote: > On 30/06/2020 00:17, Jonathan Marek wrote: >> This series adds the missing clock drivers and dts nodes to enable >> the GPU on both SM8150 and SM8250. >> >> Note an extra patch [1] is still required for GPU to work on SM8250. >> >> Changes in V2: >> * Added "clk: qcom: gcc: fix sm8150 GPU and NPU clocks" to fix the >> newly added >> SM8150 GPU gcc clocks >> * Added "Fixes:" tag to "clk: qcom: clk-alpha-pll: remove >> unused/incorrect PLL_CAL_VAL" >> * Added yaml schemas to gpucc dt-bindings patches >> * Added "clk: qcom: add common gdsc_gx_do_nothing_enable for gpucc >> drivers" and changed >> gpucc patches to use it. >> * Removed CLK_IS_CRITICAL from gpu_cc_ahb_clk >> * Added missing rpmh regulator level for sm8250 GPU clock levels >> * Use sm8150/sm8250 iommu compatibles in dts >> * Add gcc_gpu_gpll0_clk_src/gcc_gpu_gpll0_div_clk_src to gpucc clocks >> in dts >> >> [1] https://gist.github.com/flto/784f1aca761ebf2fe6c105719a4a04ca > > With your patches applied: > > [ 56.751977] msm msm: [drm:adreno_request_fw] loaded qcom/a650_sqe.fw > from new location > [ 56.760166] msm msm: [drm:adreno_request_fw] loaded qcom/a650_gmu.bin > from new location > [ 56.768485] arm-smmu 3da0000.iommu: genpd_runtime_resume() > [ 56.774196] PM: gpu_cx_gdsc: Power-on latency exceeded, new value > 49531 ns > [ 56.781730] arm-smmu 3da0000.iommu: resume latency exceeded, 462604 ns > [ 56.799559] platform 3d6a000.gmu: [drm:a6xx_gmu_resume] *ERROR* GMU > firmware initialization timed out > [ 56.809260] arm-smmu 3da0000.iommu: genpd_runtime_suspend() > [ 56.813062] msm msm: [drm:adreno_load_gpu] *ERROR* Couldn't power up > the GPU: -110 Confirmed to be a firmware issue. With older firmware proposed patches work fine. A patch to support newer firmware releases will be submitted separately.