All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v16 00/14] Add support for MT8195 SCP 2nd core
@ 2023-07-28  2:39 ` Tinghan Shen
  0 siblings, 0 replies; 35+ messages in thread
From: Tinghan Shen @ 2023-07-28  2:39 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
	AngeloGioacchino Del Regno, Tinghan Shen
  Cc: linux-remoteproc, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, Project_Global_Chrome_Upstream_Group

The mediatek remoteproc driver currently only allows bringing up a 
single core SCP, e.g. MT8183. It also only bringing up the 1st 
core in SoCs with a dual-core SCP, e.g. MT8195. This series support 
to bring-up the 2nd core of the dual-core SCP.

v15 -> v16:
1. fix the checkpatch warning at patchset 1 
2. Move changes on scp_probe() to the new added patchset 6
3. revise platform_set_drvdata() at patchset 8
4. fix commit message at patchset 9

v15 -> v14:
1. Use the common SCP registers in struct mtk_scp_of_cluster instead of
   copy it to struct mtk_scp at patchset 5 
2. Use platform_set_drvdata instead of platform_device_add_data at patchset 5 
3. Rename l2tcm_lock to cluster_lock at patchset 8
4. Check l2tcm_refcnt value before decreasing at patchset 8
5. Revise the commit message at patchset 11

v13 -> v14:
1. add review tag to patchset 1,6
2. exchange the order of sram power on and reset assert in
mt8195_scp_c1_before_load at patchset 2
3. Use ERR_CAST in patchset 5
4. Re-write patchset 7 to remove dependency between core 0 and core 1 
5. Add patch set 10 to report watchdot timeout to all cores

v12 -> v13:
1. replace subdevice with new mediatek scp operations in patchset 7 
2. add review tag to patchset 3
3. modify mediatek,scp phandle name of video-codec@18000000 at patchset 11

v11 -> v12:
1. add scp_add_single/multi_core() to patchset 6
2. remove unused comment in patchset 6
3. rename list name from mtk_scp_cluster to mtk_scp_list
4. rewrite the multi-core probe flow 
5. disable rproc->autoboot and boot rproc by request_firmware_nowait at patchset 7 
6. remove patchset 7 review tag  

v10 -> v11:
1. rewrite patchset 5 to probe single-core SCP with the cluster list
2. Also in patchset 5, move the pointer of mtk_scp object from the
   platform data property to the driver data property 
3. move the appearance of mtk_scp cluster property to patcheset 7

v9 -> v10:
1. move the global mtk_scp list into the platform device driver data structure
2. remove an unnecessary if() condition

v8 -> v9:
1. initialize l1tcm_size/l1tcm_phys at patchset 05/11 
2. rewrite patchset 06/11 to unify the flow and remove hacks

v7 -> v8:
1. update the node name of mt8192 asurada SCP rpmsg subnode
2. squash register definitions into driver patches
3. initialize local variables on the declaration at patch v8 06/11 

v6 -> v7:
1. merge the mtk_scp_cluster struct into the mtk_scp structure
   at the "Probe multi-core SCP" patch

v5 -> v6:
1. move the mtk_scp_of_regs structure from mtk_common.h to mtk_scp.c
2. rename the SCP core 0 label from 'scp' to 'scp_c0'

v4 -> v5:
1. move resource release actions to the platform driver remove operation 
2. fix dual-core watchdog handling

v3 -> v4:
1. change the representation of dual-core SCP in dts file and update SCP yaml
2. rewrite SCP driver to reflect the change of dts node
3. drop 'remove redundant call of rproc_boot for SCP' in v3 for further investigation

v2 -> v3:
1. change the representation of dual-core SCP in dts file and update SCP yaml
2. rewrite SCP driver to reflect the change of dts node
3. add SCP core 1 node to mt8195.dtsi
4. remove redundant call of rproc_boot for SCP
5. refine IPI error message

v1 -> v2:
1. update dt-binding property description
2. remove kconfig for scp dual driver
3. merge mtk_scp_dual.c and mtk_scp_subdev.c to mtk_scp.c


Tinghan Shen (14):
  dt-bindings: remoteproc: mediatek: Improve the rpmsg subnode
    definition
  arm64: dts: mediatek: Update the node name of SCP rpmsg subnode
  dt-bindings: remoteproc: mediatek: Support MT8195 dual-core SCP
  remoteproc: mediatek: Add MT8195 SCP core 1 operations
  remoteproc: mediatek: Extract SCP common registers
  remoteproc: mediatek: Revise SCP rproc initialization flow for
    multi-core SCP
  remoteproc: mediatek: Probe SCP cluster on single-core SCP
  remoteproc: mediatek: Probe SCP cluster on multi-core SCP
  remoteproc: mediatek: Remove dependency of MT8195 SCP L2TCM power
    control on dual-core SCP
  remoteproc: mediatek: Setup MT8195 SCP core 1 SRAM offset
  remoteproc: mediatek: Handle MT8195 SCP core 1 watchdog timeout
  remoteproc: mediatek: Report watchdog crash to all cores
  remoteproc: mediatek: Refine ipi handler error message
  arm64: dts: mediatek: mt8195: Add SCP 2nd core

 .../bindings/remoteproc/mtk,scp.yaml          | 176 +++++-
 .../arm64/boot/dts/mediatek/mt8183-kukui.dtsi |   2 +-
 .../boot/dts/mediatek/mt8192-asurada.dtsi     |   2 +-
 .../boot/dts/mediatek/mt8195-cherry.dtsi      |   6 +-
 arch/arm64/boot/dts/mediatek/mt8195.dtsi      |  34 +-
 drivers/remoteproc/mtk_common.h               |  39 +-
 drivers/remoteproc/mtk_scp.c                  | 534 ++++++++++++++----
 drivers/remoteproc/mtk_scp_ipi.c              |   4 +-
 8 files changed, 651 insertions(+), 146 deletions(-)

-- 
2.18.0



^ permalink raw reply	[flat|nested] 35+ messages in thread
* Re: [PATCH v16 08/14] remoteproc: mediatek: Probe SCP cluster on multi-core SCP
@ 2023-08-04 15:08 kernel test robot
  0 siblings, 0 replies; 35+ messages in thread
From: kernel test robot @ 2023-08-04 15:08 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20230728023959.12293-9-tinghan.shen@mediatek.com>
References: <20230728023959.12293-9-tinghan.shen@mediatek.com>
TO: Tinghan Shen <tinghan.shen@mediatek.com>
TO: Bjorn Andersson <andersson@kernel.org>
TO: Mathieu Poirier <mathieu.poirier@linaro.org>
TO: Rob Herring <robh+dt@kernel.org>
TO: Krzysztof Kozlowski <krzk@kernel.org>
TO: Conor Dooley <conor+dt@kernel.org>
TO: Matthias Brugger <matthias.bgg@gmail.com>
TO: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
TO: Tinghan Shen <tinghan.shen@mediatek.com>
CC: linux-remoteproc@vger.kernel.org
CC: devicetree@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: linux-arm-kernel@lists.infradead.org
CC: linux-mediatek@lists.infradead.org
CC: Project_Global_Chrome_Upstream_Group@mediatek.com

Hi Tinghan,

kernel test robot noticed the following build warnings:

[auto build test WARNING on remoteproc/rproc-next]
[also build test WARNING on robh/for-next linus/master v6.5-rc4 next-20230804]
[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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Tinghan-Shen/dt-bindings-remoteproc-mediatek-Improve-the-rpmsg-subnode-definition/20230728-104236
base:   git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux.git rproc-next
patch link:    https://lore.kernel.org/r/20230728023959.12293-9-tinghan.shen%40mediatek.com
patch subject: [PATCH v16 08/14] remoteproc: mediatek: Probe SCP cluster on multi-core SCP
:::::: branch date: 8 days ago
:::::: commit date: 8 days ago
config: riscv-randconfig-m031-20230730 (https://download.01.org/0day-ci/archive/20230804/202308042238.WSseyykL-lkp@intel.com/config)
compiler: riscv64-linux-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230804/202308042238.WSseyykL-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202308042238.WSseyykL-lkp@intel.com/

smatch warnings:
drivers/remoteproc/mtk_scp.c:1031 scp_add_multi_core() error: uninitialized symbol 'scp'.

vim +/scp +1031 drivers/remoteproc/mtk_scp.c

76e4473e739c8f Tinghan Shen 2023-07-28   978  
9d6dcc98542358 Tinghan Shen 2023-07-28   979  static int scp_add_multi_core(struct platform_device *pdev,
9d6dcc98542358 Tinghan Shen 2023-07-28   980  			      struct mtk_scp_of_cluster *scp_cluster)
9d6dcc98542358 Tinghan Shen 2023-07-28   981  {
9d6dcc98542358 Tinghan Shen 2023-07-28   982  	struct device *dev = &pdev->dev;
9d6dcc98542358 Tinghan Shen 2023-07-28   983  	struct device_node *np = dev_of_node(dev);
9d6dcc98542358 Tinghan Shen 2023-07-28   984  	struct platform_device *cpdev;
9d6dcc98542358 Tinghan Shen 2023-07-28   985  	struct device_node *child;
9d6dcc98542358 Tinghan Shen 2023-07-28   986  	struct list_head *scp_list = &scp_cluster->mtk_scp_list;
9d6dcc98542358 Tinghan Shen 2023-07-28   987  	const struct mtk_scp_of_data **cluster_of_data;
9d6dcc98542358 Tinghan Shen 2023-07-28   988  	struct mtk_scp *scp, *temp;
9d6dcc98542358 Tinghan Shen 2023-07-28   989  	int core_id = 0;
9d6dcc98542358 Tinghan Shen 2023-07-28   990  	int ret;
9d6dcc98542358 Tinghan Shen 2023-07-28   991  
9d6dcc98542358 Tinghan Shen 2023-07-28   992  	cluster_of_data = (const struct mtk_scp_of_data **)of_device_get_match_data(dev);
9d6dcc98542358 Tinghan Shen 2023-07-28   993  
9d6dcc98542358 Tinghan Shen 2023-07-28   994  	for_each_available_child_of_node(np, child) {
9d6dcc98542358 Tinghan Shen 2023-07-28   995  		if (!cluster_of_data[core_id]) {
9d6dcc98542358 Tinghan Shen 2023-07-28   996  			ret = -EINVAL;
9d6dcc98542358 Tinghan Shen 2023-07-28   997  			dev_err(dev, "Not support core %d\n", core_id);
9d6dcc98542358 Tinghan Shen 2023-07-28   998  			of_node_put(child);
9d6dcc98542358 Tinghan Shen 2023-07-28   999  			goto init_fail;
9d6dcc98542358 Tinghan Shen 2023-07-28  1000  		}
9d6dcc98542358 Tinghan Shen 2023-07-28  1001  
9d6dcc98542358 Tinghan Shen 2023-07-28  1002  		cpdev = of_find_device_by_node(child);
9d6dcc98542358 Tinghan Shen 2023-07-28  1003  		if (!cpdev) {
9d6dcc98542358 Tinghan Shen 2023-07-28  1004  			ret = -ENODEV;
9d6dcc98542358 Tinghan Shen 2023-07-28  1005  			dev_err(dev, "Not found platform device for core %d\n", core_id);
9d6dcc98542358 Tinghan Shen 2023-07-28  1006  			of_node_put(child);
9d6dcc98542358 Tinghan Shen 2023-07-28  1007  			goto init_fail;
9d6dcc98542358 Tinghan Shen 2023-07-28  1008  		}
9d6dcc98542358 Tinghan Shen 2023-07-28  1009  
9d6dcc98542358 Tinghan Shen 2023-07-28  1010  		scp = scp_rproc_init(cpdev, scp_cluster, cluster_of_data[core_id]);
9d6dcc98542358 Tinghan Shen 2023-07-28  1011  		put_device(&cpdev->dev);
9d6dcc98542358 Tinghan Shen 2023-07-28  1012  		if (IS_ERR(scp)) {
9d6dcc98542358 Tinghan Shen 2023-07-28  1013  			ret = PTR_ERR(scp);
9d6dcc98542358 Tinghan Shen 2023-07-28  1014  			dev_err(dev, "Failed to initialize core %d rproc\n", core_id);
9d6dcc98542358 Tinghan Shen 2023-07-28  1015  			of_node_put(child);
9d6dcc98542358 Tinghan Shen 2023-07-28  1016  			goto init_fail;
9d6dcc98542358 Tinghan Shen 2023-07-28  1017  		}
9d6dcc98542358 Tinghan Shen 2023-07-28  1018  
9d6dcc98542358 Tinghan Shen 2023-07-28  1019  		ret = rproc_add(scp->rproc);
9d6dcc98542358 Tinghan Shen 2023-07-28  1020  		if (ret) {
9d6dcc98542358 Tinghan Shen 2023-07-28  1021  			dev_err(dev, "Failed to add rproc of core %d\n", core_id);
9d6dcc98542358 Tinghan Shen 2023-07-28  1022  			of_node_put(child);
9d6dcc98542358 Tinghan Shen 2023-07-28  1023  			scp_free(scp);
9d6dcc98542358 Tinghan Shen 2023-07-28  1024  			goto init_fail;
9d6dcc98542358 Tinghan Shen 2023-07-28  1025  		}
9d6dcc98542358 Tinghan Shen 2023-07-28  1026  
9d6dcc98542358 Tinghan Shen 2023-07-28  1027  		list_add_tail(&scp->elem, scp_list);
9d6dcc98542358 Tinghan Shen 2023-07-28  1028  		core_id++;
9d6dcc98542358 Tinghan Shen 2023-07-28  1029  	}
9d6dcc98542358 Tinghan Shen 2023-07-28  1030  
9d6dcc98542358 Tinghan Shen 2023-07-28 @1031  	platform_set_drvdata(pdev, scp);
9d6dcc98542358 Tinghan Shen 2023-07-28  1032  
9d6dcc98542358 Tinghan Shen 2023-07-28  1033  	return 0;
9d6dcc98542358 Tinghan Shen 2023-07-28  1034  
9d6dcc98542358 Tinghan Shen 2023-07-28  1035  init_fail:
9d6dcc98542358 Tinghan Shen 2023-07-28  1036  	list_for_each_entry_safe_reverse(scp, temp, scp_list, elem) {
9d6dcc98542358 Tinghan Shen 2023-07-28  1037  		list_del(&scp->elem);
9d6dcc98542358 Tinghan Shen 2023-07-28  1038  		rproc_del(scp->rproc);
9d6dcc98542358 Tinghan Shen 2023-07-28  1039  		scp_free(scp);
9d6dcc98542358 Tinghan Shen 2023-07-28  1040  	}
9d6dcc98542358 Tinghan Shen 2023-07-28  1041  
9d6dcc98542358 Tinghan Shen 2023-07-28  1042  	return ret;
9d6dcc98542358 Tinghan Shen 2023-07-28  1043  }
9d6dcc98542358 Tinghan Shen 2023-07-28  1044  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

end of thread, other threads:[~2023-08-30  2:38 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-28  2:39 [PATCH v16 00/14] Add support for MT8195 SCP 2nd core Tinghan Shen
2023-07-28  2:39 ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 01/14] dt-bindings: remoteproc: mediatek: Improve the rpmsg subnode definition Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 02/14] arm64: dts: mediatek: Update the node name of SCP rpmsg subnode Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 03/14] dt-bindings: remoteproc: mediatek: Support MT8195 dual-core SCP Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 04/14] remoteproc: mediatek: Add MT8195 SCP core 1 operations Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 05/14] remoteproc: mediatek: Extract SCP common registers Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 06/14] remoteproc: mediatek: Revise SCP rproc initialization flow for multi-core SCP Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 07/14] remoteproc: mediatek: Probe SCP cluster on single-core SCP Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 08/14] remoteproc: mediatek: Probe SCP cluster on multi-core SCP Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-08-28 17:59   ` Mathieu Poirier
2023-08-28 17:59     ` Mathieu Poirier
2023-08-30  2:36     ` TingHan Shen (沈廷翰)
2023-08-30  2:36       ` TingHan Shen (沈廷翰)
2023-07-28  2:39 ` [PATCH v16 09/14] remoteproc: mediatek: Remove dependency of MT8195 SCP L2TCM power control on dual-core SCP Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 10/14] remoteproc: mediatek: Setup MT8195 SCP core 1 SRAM offset Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 11/14] remoteproc: mediatek: Handle MT8195 SCP core 1 watchdog timeout Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 12/14] remoteproc: mediatek: Report watchdog crash to all cores Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 13/14] remoteproc: mediatek: Refine ipi handler error message Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
2023-07-28  2:39 ` [PATCH v16 14/14] arm64: dts: mediatek: mt8195: Add SCP 2nd core Tinghan Shen
2023-07-28  2:39   ` Tinghan Shen
  -- strict thread matches above, loose matches on Subject: below --
2023-08-04 15:08 [PATCH v16 08/14] remoteproc: mediatek: Probe SCP cluster on multi-core SCP kernel 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.