
tree: https://gitee.com/openeuler/kernel.git OLK-6.6 head: 3e16741023a15d92f4be3343cb4d8b508327dda3 commit: bbaaa756ad25c0e792fcd195d32acd5715f76b12 [2938/2938] iommu: Enable smmu-v3 when 3408iMR/3416iMRraid card exist config: arm64-randconfig-004-20250926 (https://download.01.org/0day-ci/archive/20250926/202509261305.DCaV219R-lkp@i...) compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project cafc064fc7a96b3979a023ddae1da2b499d6c954) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250926/202509261305.DCaV219R-lkp@i...) 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/202509261305.DCaV219R-lkp@intel.com/ All errors (new ones prefixed by >>): In file included from drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c:15: In file included from include/linux/crash_dump.h:5: In file included from include/linux/kexec.h:18: In file included from include/linux/crash_core.h:6: In file included from include/linux/elfcore.h:11: In file included from include/linux/ptrace.h:10: In file included from include/linux/pid_namespace.h:7: In file included from include/linux/mm.h:2181: include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 509 | item]; | ~~~~ include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 516 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion] 522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_" | ~~~~~~~~~~~ ^ ~~~ include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 528 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ include/linux/vmstat.h:536:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 536 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 537 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c:3168:27: error: use of undeclared identifier 'pci_bus_type'; did you mean 'pci_pcie_type'? 3168 | ret = bus_for_each_dev(&pci_bus_type, NULL, (void *)smmu, | ^~~~~~~~~~~~ | pci_pcie_type include/linux/pci.h:2453:19: note: 'pci_pcie_type' declared here 2453 | static inline int pci_pcie_type(const struct pci_dev *dev) | ^
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c:3168:26: error: incompatible pointer types passing 'int (*)(const struct pci_dev *)' to parameter of type 'const struct bus_type *' [-Wincompatible-pointer-types] 3168 | ret = bus_for_each_dev(&pci_bus_type, NULL, (void *)smmu, | ^~~~~~~~~~~~~ include/linux/device/bus.h:144:45: note: passing argument to parameter 'bus' here 144 | int bus_for_each_dev(const struct bus_type *bus, struct device *start, void *data, | ^ 5 warnings and 2 errors generated.
vim +3168 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c 3129 3130 static int arm_smmu_init_strtab_2lvl(struct arm_smmu_device *smmu) 3131 { 3132 void *strtab; 3133 u64 reg; 3134 u32 size, l1size; 3135 struct arm_smmu_strtab_cfg *cfg = &smmu->strtab_cfg; 3136 int ret; 3137 3138 /* Calculate the L1 size, capped to the SIDSIZE. */ 3139 size = STRTAB_L1_SZ_SHIFT - (ilog2(STRTAB_L1_DESC_DWORDS) + 3); 3140 size = min(size, smmu->sid_bits - STRTAB_SPLIT); 3141 cfg->num_l1_ents = 1 << size; 3142 3143 size += STRTAB_SPLIT; 3144 if (size < smmu->sid_bits) 3145 dev_warn(smmu->dev, 3146 "2-level strtab only covers %u/%u bits of SID\n", 3147 size, smmu->sid_bits); 3148 3149 l1size = cfg->num_l1_ents * (STRTAB_L1_DESC_DWORDS << 3); 3150 strtab = dmam_alloc_coherent(smmu->dev, l1size, &cfg->strtab_dma, 3151 GFP_KERNEL); 3152 if (!strtab) { 3153 dev_err(smmu->dev, 3154 "failed to allocate l1 stream table (%u bytes)\n", 3155 l1size); 3156 return -ENOMEM; 3157 } 3158 cfg->strtab = strtab; 3159 3160 /* Configure strtab_base_cfg for 2 levels */ 3161 reg = FIELD_PREP(STRTAB_BASE_CFG_FMT, STRTAB_BASE_CFG_FMT_2LVL); 3162 reg |= FIELD_PREP(STRTAB_BASE_CFG_LOG2SIZE, size); 3163 reg |= FIELD_PREP(STRTAB_BASE_CFG_SPLIT, STRTAB_SPLIT); 3164 cfg->strtab_base_cfg = reg; 3165 ret = arm_smmu_init_l1_strtab(smmu); 3166 #ifdef CONFIG_SMMU_BYPASS_DEV 3167 if (!ret && smmu_bypass_devices_num) {
3168 ret = bus_for_each_dev(&pci_bus_type, NULL, (void *)smmu, 3169 arm_smmu_prepare_init_l2_strtab); 3170 } 3171 #endif 3172 return ret; 3173 } 3174
-- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki