* [chrome-os:chromeos-6.6 16/16] drivers/remoteproc/mtk_vcp_rproc.c:891:9: warning: variable 'mblock_start_size' set but not used
@ 2025-02-02 15:48 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-02-02 15:48 UTC (permalink / raw)
To: cros-kernel-buildreports; +Cc: oe-kbuild-all
tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-6.6
head: 65b501d72807a421824c8b0da783b7f0c4f92d0c
commit: 65b501d72807a421824c8b0da783b7f0c4f92d0c [16/16] CHROMIUM: remoteproc: vcp: add vcp kernel driver
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20250202/202502022322.9lLmWfKN-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250202/202502022322.9lLmWfKN-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>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502022322.9lLmWfKN-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/remoteproc/mtk_vcp_rproc.c:891:9: warning: variable 'mblock_start_size' set but not used [-Wunused-but-set-variable]
891 | size_t mblock_start_size;
| ^
>> drivers/remoteproc/mtk_vcp_rproc.c:1077:29: warning: cast to smaller integer type 'enum vcp_core_id' from 'void *' [-Wvoid-pointer-to-enum-cast]
1077 | enum vcp_core_id core_id = (enum vcp_core_id) vcp_core_id;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/remoteproc/mtk_vcp_rproc.c:1108:29: warning: cast to smaller integer type 'enum vcp_core_id' from 'void *' [-Wvoid-pointer-to-enum-cast]
1108 | enum vcp_core_id core_id = (enum vcp_core_id) vcp_core_id;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/remoteproc/mtk_vcp_rproc.c:80:18: warning: unused variable 'vcp_reserve_mblock_remap' [-Wunused-const-variable]
80 | static const int vcp_reserve_mblock_remap[] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~
4 warnings generated.
--
>> drivers/remoteproc/mtk_vcp_loader.c:77:16: warning: variable 'ld_ptr' set but not used [-Wunused-but-set-variable]
77 | void __iomem *ld_ptr;
| ^
>> drivers/remoteproc/mtk_vcp_loader.c:79:16: warning: variable 'dram_img_backup_ptr' set but not used [-Wunused-but-set-variable]
79 | void __iomem *dram_img_backup_ptr;
| ^
>> drivers/remoteproc/mtk_vcp_loader.c:80:14: warning: variable 'ld_ptr_phy' set but not used [-Wunused-but-set-variable]
80 | phys_addr_t ld_ptr_phy;
| ^
>> drivers/remoteproc/mtk_vcp_loader.c:81:14: warning: variable 'dram_img_ptr_phy' set but not used [-Wunused-but-set-variable]
81 | phys_addr_t dram_img_ptr_phy;
| ^
drivers/remoteproc/mtk_vcp_loader.c:170:16: warning: variable 'ld_ptr' set but not used [-Wunused-but-set-variable]
170 | void __iomem *ld_ptr;
| ^
drivers/remoteproc/mtk_vcp_loader.c:172:16: warning: variable 'dram_img_backup_ptr' set but not used [-Wunused-but-set-variable]
172 | void __iomem *dram_img_backup_ptr;
| ^
drivers/remoteproc/mtk_vcp_loader.c:173:14: warning: variable 'ld_ptr_phy' set but not used [-Wunused-but-set-variable]
173 | phys_addr_t ld_ptr_phy;
| ^
drivers/remoteproc/mtk_vcp_loader.c:174:14: warning: variable 'dram_img_ptr_phy' set but not used [-Wunused-but-set-variable]
174 | phys_addr_t dram_img_ptr_phy;
| ^
>> drivers/remoteproc/mtk_vcp_loader.c:260:6: warning: variable 'img_buf_size' set but not used [-Wunused-but-set-variable]
260 | u32 img_buf_size;
| ^
9 warnings generated.
--
>> drivers/remoteproc/mtk_vcp_rproc.c:195: warning: Function parameter or member 'vcp' not described in 'vcp_put'
>> drivers/remoteproc/mtk_vcp_rproc.c:195: warning: Excess function parameter 'scp' description in 'vcp_put'
vim +/mblock_start_size +891 drivers/remoteproc/mtk_vcp_rproc.c
873
874 #if IS_ENABLED(CONFIG_OF_RESERVED_MEM)
875 static int vcp_reserve_memory_ioremap(struct mtk_vcp_device *vcp)
876 {
877 #define MEMORY_TBL_ELEM_NUM (2)
878 u32 num = (u32)(sizeof(vcp_reserve_mblock)
879 / sizeof(vcp_reserve_mblock[0]));
880 enum vcp_reserve_mem_id_t id;
881 u32 vcp_mem_num = 0;
882 u32 i = 0, m_idx = 0, m_size = 0;
883 u32 offset;
884 struct device_node *rmem_node;
885 struct resource res;
886 struct iommu_domain *domain;
887 void __iomem *share_memory_virt;
888 phys_addr_t mblock_start_phys;
889 dma_addr_t share_memory_iova;
890 size_t share_memory_size;
> 891 size_t mblock_start_size;
892 int ret;
893
894 if (num != NUMS_MEM_ID) {
895 dev_err(vcp->dev, "actual memory num(%u) is not match mem ID table (%u)\n",
896 num, NUMS_MEM_ID);
897 WARN_ON(1);
898 return -EINVAL;
899 }
900
901 rmem_node = of_parse_phandle(vcp->dev->of_node, "memory-region", 0);
902 if (!rmem_node) {
903 dev_err(vcp->dev, "No reserved memory region found.\n");
904 return -EINVAL;
905 }
906
907 ret = of_address_to_resource(rmem_node, 0, &res);
908 if (ret) {
909 dev_err(vcp->dev, "failed to parse reserved memory: %d\n", ret);
910 return ret;
911 }
912
913 mblock_start_phys = (phys_addr_t)res.start;
914 mblock_start_size = (u32)resource_size(&res);
915
916 /* Set reserved memory table */
917 vcp_mem_num = of_property_count_u32_elems(vcp->dev->of_node, "vcp-mem-tbl")
918 / MEMORY_TBL_ELEM_NUM;
919 if (vcp_mem_num <= 0) {
920 dev_info(vcp->dev, "vcp-mem-tbl not found\n");
921 vcp_mem_num = 0;
922 }
923
924 for (i = 0; i < vcp_mem_num; i++) {
925 ret = of_property_read_u32_index(vcp->dev->of_node, "vcp-mem-tbl",
926 i * MEMORY_TBL_ELEM_NUM, &m_idx);
927 if (ret) {
928 dev_err(vcp->dev, "cannot get memory index(%d)\n", i);
929 return -EINVAL;
930 }
931
932 ret = of_property_read_u32_index(vcp->dev->of_node, "vcp-mem-tbl",
933 (i * MEMORY_TBL_ELEM_NUM) + 1, &m_size);
934 if (ret) {
935 dev_err(vcp->dev, "Cannot get memory size(%d)(%d)\n", i, m_idx);
936 return -EINVAL;
937 }
938
939 if (m_idx >= NUMS_MEM_ID) {
940 dev_dbg(vcp->dev, "skip unexpected index, %d\n", m_idx);
941 continue;
942 }
943
944 vcp_reserve_mblock[m_idx].size = m_size;
945 dev_dbg(vcp->dev, "reserved: <%d %d>\n", m_idx, m_size);
946 }
947
948 vcp_reserve_mblock[VCP_RTOS_MEM_ID].start_phys = mblock_start_phys;
949 vcp_reserve_mblock[VCP_RTOS_MEM_ID].start_virt = devm_ioremap(vcp->dev,
950 vcp_reserve_mblock[VCP_RTOS_MEM_ID].start_phys,
951 vcp_reserve_mblock[VCP_RTOS_MEM_ID].size);
952 domain = iommu_get_domain_for_dev(vcp->dev);
953 ret = iommu_map(domain, IMG_MEMORY_STATIC_IOVA,
954 vcp_reserve_mblock[VCP_RTOS_MEM_ID].start_phys,
955 vcp_reserve_mblock[VCP_RTOS_MEM_ID].size,
956 IOMMU_READ | IOMMU_WRITE | IOMMU_PRIV, GFP_KERNEL);
957 if (ret) {
958 dev_err(vcp->dev, "%s iommu map fail, ret:%d.\n", __func__, ret);
959 return ret;
960 }
961 vcp_reserve_mblock[VCP_RTOS_MEM_ID].start_iova = IMG_MEMORY_STATIC_IOVA;
962
963 share_memory_size = 0;
964 for (id = VDEC_MEM_ID; id < NUMS_MEM_ID; id++) {
965 if (vcp_reserve_mblock[id].size == 0)
966 continue;
967 share_memory_size += vcp_reserve_mblock[id].size;
968 }
969
970 ret = dma_set_mask_and_coherent(vcp->dev, DMA_BIT_MASK(DMA_MAX_MASK_BIT));
971 if (ret) {
972 dev_err(vcp->dev, "64-bit DMA enable failed\n");
973 return ret;
974 }
975
976 if (!vcp->dev->dma_parms) {
977 vcp->dev->dma_parms = devm_kzalloc(vcp->dev, sizeof(*vcp->dev->dma_parms), GFP_KERNEL);
978 if (vcp->dev->dma_parms) {
979 ret = dma_set_max_seg_size(vcp->dev, (u32)DMA_BIT_MASK(33));
980 if (ret) {
981 dev_err(vcp->dev, "Failed to set DMA segment size\n");
982 return ret;
983 }
984 } else {
985 dev_err(vcp->dev, "Failed to set DMA parms\n");
986 return -EINVAL;
987 }
988 }
989 share_memory_virt = dma_alloc_coherent(vcp->dev, share_memory_size,
990 &share_memory_iova, GFP_KERNEL);
991 if (!share_memory_virt)
992 return -ENOMEM;
993 offset = 0;
994 for (id = VDEC_MEM_ID; id < NUMS_MEM_ID; id++) {
995 if (vcp_reserve_mblock[id].size == 0)
996 continue;
997
998 vcp_reserve_mblock[id].start_phys = vcp_reserve_mblock[VCP_RTOS_MEM_ID].start_phys +
999 vcp_reserve_mblock[VCP_RTOS_MEM_ID].size + offset;
1000 vcp_reserve_mblock[id].start_iova = share_memory_iova + offset;
1001 vcp_reserve_mblock[id].start_virt = share_memory_virt + offset;
1002 offset += (u32)vcp_reserve_mblock[id].size;
1003
1004 dev_dbg(vcp->dev, "share memory [%d] pa:%pa, iova:%pa, virt:%p, len:0x%zx\n",
1005 id, &vcp_reserve_mblock[id].start_phys,
1006 &vcp_reserve_mblock[id].start_iova,
1007 vcp_reserve_mblock[id].start_virt,
1008 vcp_reserve_mblock[id].size);
1009 }
1010
1011 vcp_mem_base_iova = share_memory_iova;
1012 vcp_mem_size = share_memory_size;
1013 vcp_mem_logger_iova = vcp_reserve_mblock[VCP_A_LOGGER_MEM_ID].start_iova;
1014 vcp_mem_logger_size = vcp_reserve_mblock[VCP_A_LOGGER_MEM_ID].size;
1015
1016 return 0;
1017 }
1018 #endif
1019
1020 static int vcp_A_register_feature(struct mtk_vcp_device *vcp, enum feature_id id)
1021 {
1022 u32 i;
1023 int ret = 0;
1024
1025 if (id >= NUM_FEATURE_ID) {
1026 dev_info(vcp->dev, "%s unsupported feature id %d\n",
1027 __func__, id);
1028 return -EINVAL;
1029 }
1030 mutex_lock(&vcp_feature_mutex);
1031 for (i = 0; i < NUM_FEATURE_ID; i++) {
1032 if (feature_table[i].feature == id)
1033 feature_table[i].enable++;
1034 }
1035 ret = vcp_enable_pm_clk(vcp, id);
1036 mutex_unlock(&vcp_feature_mutex);
1037
1038 return ret;
1039 }
1040
1041 static int vcp_A_deregister_feature(struct mtk_vcp_device *vcp, enum feature_id id)
1042 {
1043 u32 i;
1044 int ret = 0;
1045
1046 if (id >= NUM_FEATURE_ID) {
1047 dev_info(vcp->dev, "%s unsupported feature id %d\n",
1048 __func__, id);
1049 return -EINVAL;
1050 }
1051 mutex_lock(&vcp_feature_mutex);
1052 for (i = 0; i < NUM_FEATURE_ID; i++) {
1053 if (feature_table[i].feature == id) {
1054 if (feature_table[i].enable == 0) {
1055 dev_warn(vcp->dev, "%s unbalanced feature id %d enable cnt %d\n",
1056 __func__, id, feature_table[i].enable);
1057 mutex_unlock(&vcp_feature_mutex);
1058 return -EINVAL;
1059 }
1060 feature_table[i].enable--;
1061 }
1062 }
1063 ret = vcp_disable_pm_clk(vcp, id);
1064 mutex_unlock(&vcp_feature_mutex);
1065
1066 return ret;
1067 }
1068
1069 /*
1070 * acquire vcp lock flag, keep vcp awake
1071 * @param vcp_core_id: vcp core id
1072 * return 0 :get lock success
1073 * -EINVAL :get lock timeout
1074 */
1075 int vcp_awake_lock(void *vcp_core_id)
1076 {
> 1077 enum vcp_core_id core_id = (enum vcp_core_id) vcp_core_id;
1078 unsigned long spin_flags;
1079 int *vcp_awake_count;
1080
1081 if (core_id >= VCP_CORE_TOTAL)
1082 return -EINVAL;
1083
1084 vcp_awake_count = (int *)&vcp_awake_counts[core_id];
1085
1086 if (is_vcp_ready_by_coreid(core_id) == false)
1087 return -EINVAL;
1088
1089 /* vcp unlock awake */
1090 spin_lock_irqsave(&vcp_awake_spinlock, spin_flags);
1091
1092 /* vcp lock awake success*/
1093 *vcp_awake_count = *vcp_awake_count + 1;
1094
1095 spin_unlock_irqrestore(&vcp_awake_spinlock, spin_flags);
1096
1097 return 0;
1098 }
1099
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-02-02 15:49 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-02 15:48 [chrome-os:chromeos-6.6 16/16] drivers/remoteproc/mtk_vcp_rproc.c:891:9: warning: variable 'mblock_start_size' set but not used 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.