mbox series

[RESEND,v2,00/13] Enable GPU for SM8150 and SM8250

Message ID 20200629211725.2592-1-jonathan@marek.ca (mailing list archive)
Headers show
Series Enable GPU for SM8150 and SM8250 | expand

Message

Jonathan Marek June 29, 2020, 9:17 p.m. UTC
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

Jonathan Marek (13):
  clk: qcom: gcc: fix sm8150 GPU and NPU clocks
  clk: qcom: clk-alpha-pll: remove unused/incorrect PLL_CAL_VAL
  clk: qcom: clk-alpha-pll: same regs and ops for trion and lucid
  clk: qcom: clk-alpha-pll: use the right PCAL_DONE value for lucid pll
  clk: qcom: gcc: remove unnecessary vco_table from SM8150
  dt-bindings: clock: Introduce SM8150 QCOM Graphics clock bindings
  dt-bindings: clock: Introduce SM8250 QCOM Graphics clock bindings
  clk: qcom: add common gdsc_gx_do_nothing_enable for gpucc drivers
  clk: qcom: Add graphics clock controller driver for SM8150
  clk: qcom: Add graphics clock controller driver for SM8250
  dt-bindings: power: Add missing rpmpd rpmh regulator level
  arm64: dts: qcom: add sm8150 GPU nodes
  arm64: dts: qcom: add sm8250 GPU nodes

 .../bindings/clock/qcom,sm8150-gpucc.yaml     |  74 +++
 .../bindings/clock/qcom,sm8250-gpucc.yaml     |  74 +++
 arch/arm64/boot/dts/qcom/sm8150.dtsi          | 136 ++++++
 arch/arm64/boot/dts/qcom/sm8250.dtsi          | 143 ++++++
 drivers/clk/qcom/Kconfig                      |  16 +
 drivers/clk/qcom/Makefile                     |   2 +
 drivers/clk/qcom/clk-alpha-pll.c              |  70 ++-
 drivers/clk/qcom/clk-alpha-pll.h              |  15 +-
 drivers/clk/qcom/gcc-sm8150.c                 |  26 +-
 drivers/clk/qcom/gdsc.c                       |  25 +
 drivers/clk/qcom/gdsc.h                       |   1 +
 drivers/clk/qcom/gpucc-sc7180.c               |  27 +-
 drivers/clk/qcom/gpucc-sdm845.c               |  27 +-
 drivers/clk/qcom/gpucc-sm8150.c               | 421 ++++++++++++++++
 drivers/clk/qcom/gpucc-sm8250.c               | 450 ++++++++++++++++++
 include/dt-bindings/clock/qcom,gpucc-sm8150.h |  40 ++
 include/dt-bindings/clock/qcom,gpucc-sm8250.h |  40 ++
 include/dt-bindings/power/qcom-rpmpd.h        |   1 +
 18 files changed, 1479 insertions(+), 109 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/clock/qcom,sm8150-gpucc.yaml
 create mode 100644 Documentation/devicetree/bindings/clock/qcom,sm8250-gpucc.yaml
 create mode 100644 drivers/clk/qcom/gpucc-sm8150.c
 create mode 100644 drivers/clk/qcom/gpucc-sm8250.c
 create mode 100644 include/dt-bindings/clock/qcom,gpucc-sm8150.h
 create mode 100644 include/dt-bindings/clock/qcom,gpucc-sm8250.h

Comments

Dmitry Baryshkov July 3, 2020, 3:03 p.m. UTC | #1
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
Jonathan Marek July 3, 2020, 3:08 p.m. UTC | #2
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?
Dmitry Baryshkov July 3, 2020, 3:14 p.m. UTC | #3
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 .
Dmitry Baryshkov July 3, 2020, 5:29 p.m. UTC | #4
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
Jonathan Marek July 5, 2020, 9:08 p.m. UTC | #5
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
Dmitry Baryshkov July 6, 2020, 10:28 a.m. UTC | #6
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
Dmitry Baryshkov July 6, 2020, 7:50 p.m. UTC | #7
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.