2023-09-15 18:13:44

by Bryan O'Donoghue

[permalink] [raw]
Subject: Re: [PATCH RFT 00/20] Venus cleanups

On 11/09/2023 16:10, Konrad Dybcio wrote:
> With the driver supporting multiple generations of hardware, some mold
> has definitely grown over the code..
>
> This series attempts to amend this situation a bit by commonizing some
> code paths and fixing some bugs while at it.
>
> Only tested on SM8250.
>
> Definitely needs testing on:
>
> - SDM845 with old bindings
> - SDM845 with new bindings or 7180
> - MSM8916
> - MSM8996
>
> Signed-off-by: Konrad Dybcio <[email protected]>
> ---
> Konrad Dybcio (20):
> media: venus: pm_helpers: Only set rate of the core clock in core_clks_enable
> media: venus: pm_helpers: Rename core_clks_get to venus_clks_get
> media: venus: pm_helpers: Add kerneldoc to venus_clks_get()
> media: venus: core: Set OPP clkname in a common code path
> media: venus: pm_helpers: Kill dead code
> media: venus: pm_helpers: Move reset acquisition to common code
> media: venus: pm_helpers: Use reset_bulk API
> media: venus: core: Constify all members of the resource struct
> media: venus: core: Deduplicate OPP genpd names
> media: venus: core: Get rid of vcodec_num
> media: venus: core: Drop cache properties in resource struct
> media: venus: core: Use GENMASK for dma_mask
> media: venus: core: Remove cp_start
> media: venus: pm_helpers: Commonize core_power
> media: venus: pm_helpers: Remove pm_ops->core_put
> media: venus: core: Define a pointer to core->res
> media: venus: pm_helpers: Simplify vcodec clock handling
> media: venus: pm_helpers: Commonize getting clocks and GenPDs
> media: venus: pm_helpers: Commonize vdec_get()
> media: venus: pm_helpers: Commonize venc_get()
>
> drivers/media/platform/qcom/venus/core.c | 138 ++++-------
> drivers/media/platform/qcom/venus/core.h | 64 +++--
> drivers/media/platform/qcom/venus/firmware.c | 3 +-
> drivers/media/platform/qcom/venus/hfi_venus.c | 7 +-
> drivers/media/platform/qcom/venus/pm_helpers.c | 328 +++++++++----------------
> drivers/media/platform/qcom/venus/pm_helpers.h | 10 +-
> drivers/media/platform/qcom/venus/vdec.c | 9 +-
> drivers/media/platform/qcom/venus/venc.c | 9 +-
> 8 files changed, 213 insertions(+), 355 deletions(-)
> ---
> base-commit: 7bc675554773f09d88101bf1ccfc8537dc7c0be9
> change-id: 20230911-topic-mars-e60bb2269411
>
> Best regards,

b4 shazam [email protected]
Grabbing thread from
lore.kernel.org/all/[email protected]/t.mbox.gz
Checking for newer revisions
Grabbing search results from lore.kernel.org
Analyzing 27 messages in the thread
Checking attestation on all messages, may take a moment...
---
[PATCH 1/20] media: venus: pm_helpers: Only set rate of the core
clock in core_clks_enable
[PATCH 2/20] media: venus: pm_helpers: Rename core_clks_get to
venus_clks_get
[PATCH 3/20] media: venus: pm_helpers: Add kerneldoc to venus_clks_get()
[PATCH 4/20] media: venus: core: Set OPP clkname in a common code path
[PATCH 5/20] media: venus: pm_helpers: Kill dead code
[PATCH 6/20] media: venus: pm_helpers: Move reset acquisition to
common code
[PATCH 7/20] media: venus: pm_helpers: Use reset_bulk API
[PATCH 8/20] media: venus: core: Constify all members of the resource
struct
[PATCH 9/20] media: venus: core: Deduplicate OPP genpd names
[PATCH 10/20] media: venus: core: Get rid of vcodec_num
[PATCH 11/20] media: venus: core: Drop cache properties in resource
struct
[PATCH 12/20] media: venus: core: Use GENMASK for dma_mask
[PATCH 13/20] media: venus: core: Remove cp_start
[PATCH 14/20] media: venus: pm_helpers: Commonize core_power
[PATCH 15/20] media: venus: pm_helpers: Remove pm_ops->core_put
[PATCH 16/20] media: venus: core: Define a pointer to core->res
[PATCH 17/20] media: venus: pm_helpers: Simplify vcodec clock handling
[PATCH 18/20] media: venus: pm_helpers: Commonize getting clocks and
GenPDs
[PATCH 19/20] media: venus: pm_helpers: Commonize vdec_get()
[PATCH 20/20] media: venus: pm_helpers: Commonize venc_get()
---
✗ No key: ed25519/[email protected]
---
NOTE: install dkimpy for DKIM signature verification
---
Total patches: 20
---
Base: base-commit 7bc675554773f09d88101bf1ccfc8537dc7c0be9 not known,
ignoring
Applying: media: venus: pm_helpers: Only set rate of the core clock in
core_clks_enable
Applying: media: venus: pm_helpers: Rename core_clks_get to venus_clks_get
Applying: media: venus: pm_helpers: Add kerneldoc to venus_clks_get()
Applying: media: venus: core: Set OPP clkname in a common code path
Applying: media: venus: pm_helpers: Kill dead code
Applying: media: venus: pm_helpers: Move reset acquisition to common code
Applying: media: venus: pm_helpers: Use reset_bulk API
Applying: media: venus: core: Constify all members of the resource struct
Applying: media: venus: core: Deduplicate OPP genpd names
Applying: media: venus: core: Get rid of vcodec_num
Applying: media: venus: core: Drop cache properties in resource struct
Applying: media: venus: core: Use GENMASK for dma_mask
Applying: media: venus: core: Remove cp_start
Applying: media: venus: pm_helpers: Commonize core_power
Applying: media: venus: pm_helpers: Remove pm_ops->core_put
Applying: media: venus: core: Define a pointer to core->res
Applying: media: venus: pm_helpers: Simplify vcodec clock handling
Applying: media: venus: pm_helpers: Commonize getting clocks and GenPDs
Applying: media: venus: pm_helpers: Commonize vdec_get()
Applying: media: venus: pm_helpers: Commonize venc_get()

MODPOST Module.symvers
^[[BERROR: modpost: "vcodec_clks_get"
[drivers/media/platform/qcom/venus/venus-dec.ko] undefined!
ERROR: modpost: "vcodec_clks_get"
[drivers/media/platform/qcom/venus/venus-enc.ko] undefined!
make[3]: ***
[/home/deckard/Development/qualcomm/qlt-kernel/scripts/Makefile.modpost:145:
Module.symvers] Error 1
make[2]: ***
[/home/deckard/Development/qualcomm/qlt-kernel/Makefile:1865: modpost]
Error 2
make[1]: ***
[/home/deckard/Development/qualcomm/qlt-kernel/Makefile:234: __sub-make]
Error 2

---
bod


2023-09-16 00:13:30

by Konrad Dybcio

[permalink] [raw]
Subject: Re: [PATCH RFT 00/20] Venus cleanups

On 15.09.2023 16:13, Bryan O'Donoghue wrote:
> On 11/09/2023 16:10, Konrad Dybcio wrote:
>> With the driver supporting multiple generations of hardware, some mold
>> has definitely grown over the code..
>>
>> This series attempts to amend this situation a bit by commonizing some
>> code paths and fixing some bugs while at it.
>>
>> Only tested on SM8250.
>>
>> Definitely needs testing on:
>>
>> - SDM845 with old bindings
>> - SDM845 with new bindings or 7180
>> - MSM8916
>> - MSM8996
>>
>> Signed-off-by: Konrad Dybcio <[email protected]>
>> ---
>> Konrad Dybcio (20):
>>        media: venus: pm_helpers: Only set rate of the core clock in core_clks_enable
>>        media: venus: pm_helpers: Rename core_clks_get to venus_clks_get
>>        media: venus: pm_helpers: Add kerneldoc to venus_clks_get()
>>        media: venus: core: Set OPP clkname in a common code path
>>        media: venus: pm_helpers: Kill dead code
>>        media: venus: pm_helpers: Move reset acquisition to common code
>>        media: venus: pm_helpers: Use reset_bulk API
>>        media: venus: core: Constify all members of the resource struct
>>        media: venus: core: Deduplicate OPP genpd names
>>        media: venus: core: Get rid of vcodec_num
>>        media: venus: core: Drop cache properties in resource struct
>>        media: venus: core: Use GENMASK for dma_mask
>>        media: venus: core: Remove cp_start
>>        media: venus: pm_helpers: Commonize core_power
>>        media: venus: pm_helpers: Remove pm_ops->core_put
>>        media: venus: core: Define a pointer to core->res
>>        media: venus: pm_helpers: Simplify vcodec clock handling
>>        media: venus: pm_helpers: Commonize getting clocks and GenPDs
>>        media: venus: pm_helpers: Commonize vdec_get()
>>        media: venus: pm_helpers: Commonize venc_get()
>>
>>   drivers/media/platform/qcom/venus/core.c       | 138 ++++-------
>>   drivers/media/platform/qcom/venus/core.h       |  64 +++--
>>   drivers/media/platform/qcom/venus/firmware.c   |   3 +-
>>   drivers/media/platform/qcom/venus/hfi_venus.c  |   7 +-
>>   drivers/media/platform/qcom/venus/pm_helpers.c | 328 +++++++++----------------
>>   drivers/media/platform/qcom/venus/pm_helpers.h |  10 +-
>>   drivers/media/platform/qcom/venus/vdec.c       |   9 +-
>>   drivers/media/platform/qcom/venus/venc.c       |   9 +-
>>   8 files changed, 213 insertions(+), 355 deletions(-)
>> ---
>> base-commit: 7bc675554773f09d88101bf1ccfc8537dc7c0be9
>> change-id: 20230911-topic-mars-e60bb2269411
>>
>> Best regards,
>
> b4 shazam [email protected]
> Grabbing thread from lore.kernel.org/all/[email protected]/t.mbox.gz
> Checking for newer revisions
> Grabbing search results from lore.kernel.org
> Analyzing 27 messages in the thread
> Checking attestation on all messages, may take a moment...
> ---
>   [PATCH 1/20] media: venus: pm_helpers: Only set rate of the core clock in core_clks_enable
>   [PATCH 2/20] media: venus: pm_helpers: Rename core_clks_get to venus_clks_get
>   [PATCH 3/20] media: venus: pm_helpers: Add kerneldoc to venus_clks_get()
>   [PATCH 4/20] media: venus: core: Set OPP clkname in a common code path
>   [PATCH 5/20] media: venus: pm_helpers: Kill dead code
>   [PATCH 6/20] media: venus: pm_helpers: Move reset acquisition to common code
>   [PATCH 7/20] media: venus: pm_helpers: Use reset_bulk API
>   [PATCH 8/20] media: venus: core: Constify all members of the resource struct
>   [PATCH 9/20] media: venus: core: Deduplicate OPP genpd names
>   [PATCH 10/20] media: venus: core: Get rid of vcodec_num
>   [PATCH 11/20] media: venus: core: Drop cache properties in resource struct
>   [PATCH 12/20] media: venus: core: Use GENMASK for dma_mask
>   [PATCH 13/20] media: venus: core: Remove cp_start
>   [PATCH 14/20] media: venus: pm_helpers: Commonize core_power
>   [PATCH 15/20] media: venus: pm_helpers: Remove pm_ops->core_put
>   [PATCH 16/20] media: venus: core: Define a pointer to core->res
>   [PATCH 17/20] media: venus: pm_helpers: Simplify vcodec clock handling
>   [PATCH 18/20] media: venus: pm_helpers: Commonize getting clocks and GenPDs
>   [PATCH 19/20] media: venus: pm_helpers: Commonize vdec_get()
>   [PATCH 20/20] media: venus: pm_helpers: Commonize venc_get()
>   ---
>   ✗ No key: ed25519/[email protected]
>   ---
>   NOTE: install dkimpy for DKIM signature verification
> ---
> Total patches: 20
> ---
>  Base: base-commit 7bc675554773f09d88101bf1ccfc8537dc7c0be9 not known, ignoring
> Applying: media: venus: pm_helpers: Only set rate of the core clock in core_clks_enable
> Applying: media: venus: pm_helpers: Rename core_clks_get to venus_clks_get
> Applying: media: venus: pm_helpers: Add kerneldoc to venus_clks_get()
> Applying: media: venus: core: Set OPP clkname in a common code path
> Applying: media: venus: pm_helpers: Kill dead code
> Applying: media: venus: pm_helpers: Move reset acquisition to common code
> Applying: media: venus: pm_helpers: Use reset_bulk API
> Applying: media: venus: core: Constify all members of the resource struct
> Applying: media: venus: core: Deduplicate OPP genpd names
> Applying: media: venus: core: Get rid of vcodec_num
> Applying: media: venus: core: Drop cache properties in resource struct
> Applying: media: venus: core: Use GENMASK for dma_mask
> Applying: media: venus: core: Remove cp_start
> Applying: media: venus: pm_helpers: Commonize core_power
> Applying: media: venus: pm_helpers: Remove pm_ops->core_put
> Applying: media: venus: core: Define a pointer to core->res
> Applying: media: venus: pm_helpers: Simplify vcodec clock handling
> Applying: media: venus: pm_helpers: Commonize getting clocks and GenPDs
> Applying: media: venus: pm_helpers: Commonize vdec_get()
> Applying: media: venus: pm_helpers: Commonize venc_get()
>
>   MODPOST Module.symvers
> ^[[BERROR: modpost: "vcodec_clks_get" [drivers/media/platform/qcom/venus/venus-dec.ko] undefined!
> ERROR: modpost: "vcodec_clks_get" [drivers/media/platform/qcom/venus/venus-enc.ko] undefined!
> make[3]: *** [/home/deckard/Development/qualcomm/qlt-kernel/scripts/Makefile.modpost:145: Module.symvers] Error 1
> make[2]: *** [/home/deckard/Development/qualcomm/qlt-kernel/Makefile:1865: modpost] Error 2
> make[1]: *** [/home/deckard/Development/qualcomm/qlt-kernel/Makefile:234: __sub-make] Error 2
Yeah I noticed after sending..

I have some fixups locally, see output of `b4 prep --compare-to v1`:

1: ef4effbdd61b = 1: 07193da8f8b2 media: venus: pm_helpers: Only set rate of the core clock in core_clks_enable
2: 46a6466fff36 = 2: c8598ffa711a media: venus: pm_helpers: Rename core_clks_get to venus_clks_get
3: 733411cd167d = 3: bcc0385fe8a3 media: venus: pm_helpers: Add kerneldoc to venus_clks_get()
4: 42f089b8ee90 = 4: 181a2a4f7a4b media: venus: core: Set OPP clkname in a common code path
5: e0cd37c576cf = 5: 182ba8feb561 media: venus: pm_helpers: Kill dead code
6: 232c32d813b8 = 6: 06fd32b2f112 media: venus: pm_helpers: Move reset acquisition to common code
7: 0ab76762c149 = 7: f0aaaca1fe70 media: venus: pm_helpers: Use reset_bulk API
8: e47564b87e77 = 8: 2ddb02b05d0f media: venus: core: Constify all members of the resource struct
9: c5e157de604e = 9: 918f3dc5f2f6 media: venus: core: Deduplicate OPP genpd names
10: 3500b515c0cb = 10: ee194c584ce0 media: venus: core: Get rid of vcodec_num
11: b179e47b6db6 ! 11: 81fa7517b057 media: venus: core: Drop cache properties in resource struct
@@ drivers/media/platform/qcom/venus/core.h: struct venus_resources {
const u32 cp_nonpixel_start;

## drivers/media/platform/qcom/venus/hfi_venus.c ##
+@@ drivers/media/platform/qcom/venus/hfi_venus.c: static void venus_process_msg_sys_error(struct venus_hfi_device *hdev,
+ static irqreturn_t venus_isr_thread(struct venus_core *core)
+ {
+ struct venus_hfi_device *hdev = to_hfi_priv(core);
+- const struct venus_resources *res;
+ void *pkt;
+ u32 msg_ret;
+
+ if (!hdev)
+ return IRQ_NONE;
+
+- res = hdev->core->res;
+ pkt = hdev->pkt_buf;
+
+-
+ while (!venus_iface_msgq_read(hdev, pkt)) {
+ msg_ret = hfi_process_msg_packet(core, pkt);
+ switch (msg_ret) {
@@ drivers/media/platform/qcom/venus/hfi_venus.c: static irqreturn_t venus_isr_thread(struct venus_core *core)
venus_process_msg_sys_error(hdev, pkt);
break;
12: aa122db08d64 = 12: 8cf3d701f0b4 media: venus: core: Use GENMASK for dma_mask
13: 548235220fcd = 13: 3aa4f40a1818 media: venus: core: Remove cp_start
14: 9fd8a8515795 = 14: 7f65994f7c7c media: venus: pm_helpers: Commonize core_power
15: 09c778667817 = 15: 45c51bcaeb17 media: venus: pm_helpers: Remove pm_ops->core_put
16: 955470ceffa0 = 16: 63aba2146a15 media: venus: core: Define a pointer to core->res
17: 3a6fbeac1f5c = 17: bafeb6dc5525 media: venus: pm_helpers: Simplify vcodec clock handling
18: ee1234ce5c19 = 18: e4500b65ff24 media: venus: pm_helpers: Commonize getting clocks and GenPDs
19: 155ca91c4ece ! 19: 8d86b33d0614 media: venus: pm_helpers: Commonize vdec_get()
@@ drivers/media/platform/qcom/venus/pm_helpers.c: static int core_clks_set_rate(st
{
char buf[13] = { 0 }; /* vcodecX_core\0 */

+@@ drivers/media/platform/qcom/venus/pm_helpers.c: static int vcodec_clks_get(struct venus_core *core, struct device *dev, u8 id)
+
+ return 0;
+ }
++EXPORT_SYMBOL_GPL(vcodec_clks_get);
+
+ static int vcodec_clks_enable(struct venus_core *core, u8 id)
+ {
@@ drivers/media/platform/qcom/venus/pm_helpers.c: vcodec_control_v3(struct venus_core *core, u32 session_type, bool enable)
writel(1, ctrl);
}


Konrad