Hi Narayana, kernel test robot noticed the following build warnings:
[auto build test WARNING on powerpc/next] [also build test WARNING on powerpc/fixes linus/master v6.18 next-20251209] [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/Narayana-Murty-N/powerpc-rtas-Handle-special-return-format-for-RTAS_FN_IBM_OPEN_ERRINJCT/20251205-214855 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next patch link: https://lore.kernel.org/r/20251205094510.4671-4-nnmlinux%40linux.ibm.com patch subject: [PATCH 3/4] powerpc/pseries: Add RTAS error injection validation helpers config: powerpc64-randconfig-r122-20251210 (https://download.01.org/0day-ci/archive/20251210/[email protected]/config) compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 6ec8c4351cfc1d0627d1633b02ea787bd29c77d8) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251210/[email protected]/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 <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ sparse warnings: (new ones prefixed by >>) arch/powerpc/platforms/pseries/eeh_pseries.c:743:55: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got restricted __be16 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:743:55: sparse: expected unsigned short [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:743:55: sparse: got restricted __be16 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:767:40: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got restricted __be16 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:767:40: sparse: expected unsigned short [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:767:40: sparse: got restricted __be16 [usertype] >> arch/powerpc/platforms/pseries/eeh_pseries.c:973:26: sparse: sparse: >> incorrect type in assignment (different base types) @@ expected unsigned >> int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:973:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:973:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:984:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:984:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:984:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:985:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:985:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:985:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:998:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:998:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:998:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:999:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:999:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:999:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1000:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1000:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1000:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1001:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1001:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1001:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1002:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1002:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1002:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1003:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1003:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1003:26: sparse: got restricted __be32 [usertype] >> arch/powerpc/platforms/pseries/eeh_pseries.c:1016:26: sparse: sparse: >> incorrect type in assignment (different base types) @@ expected unsigned >> long long [usertype] @@ got restricted __be64 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1016:26: sparse: expected unsigned long long [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1016:26: sparse: got restricted __be64 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1017:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] @@ got restricted __be64 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1017:26: sparse: expected unsigned long long [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1017:26: sparse: got restricted __be64 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1018:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1018:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1018:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1019:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1019:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1019:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1020:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1020:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1020:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1021:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1021:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1021:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1029:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1029:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1029:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1030:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1030:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1030:26: sparse: got restricted __be32 [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1036:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] @@ got restricted __be32 [usertype] @@ arch/powerpc/platforms/pseries/eeh_pseries.c:1036:26: sparse: expected unsigned int [usertype] arch/powerpc/platforms/pseries/eeh_pseries.c:1036:26: sparse: got restricted __be32 [usertype] vim +973 arch/powerpc/platforms/pseries/eeh_pseries.c 937 938 939 /** 940 * prepare_errinjct_buffer - Prepare RTAS error injection work buffer 941 * @pe: EEH PE for the target device(s) 942 * @type: RTAS error type 943 * @func: Error function selector (semantics vary by type) 944 * @addr: Address argument (type-dependent) 945 * @mask: Mask argument (type-dependent) 946 * 947 * Clears the global error injection work buffer and populates it based on 948 * the error type and parameters provided. Performs inline validation of the 949 * arguments for each supported error type. 950 * 951 * Return: 0 on success, or RTAS_INVALID_PARAMETER / -EINVAL on failure. 952 */ 953 954 static int prepare_errinjct_buffer(struct eeh_pe *pe, int type, int func, 955 unsigned long addr, unsigned long mask) 956 { 957 u64 *buf64; 958 u32 *buf32; 959 960 memset(rtas_errinjct_buf, 0, RTAS_ERRINJCT_BUF_SIZE); 961 buf64 = (u64 *)rtas_errinjct_buf; 962 buf32 = (u32 *)rtas_errinjct_buf; 963 964 switch (type) { 965 case RTAS_ERR_TYPE_RECOVERED_SPECIAL_EVENT: 966 /* func must be 1 = non-persistent or 2 = persistent */ 967 if (func < 1 || func > 2) 968 return RTAS_INVALID_PARAMETER; 969 970 if (validate_special_event(addr, mask)) 971 return RTAS_INVALID_PARAMETER; 972 > 973 buf32[0] = cpu_to_be32(func); 974 break; 975 976 case RTAS_ERR_TYPE_CORRUPTED_PAGE: 977 /* addr required: physical page address */ 978 if (addr == 0) 979 return RTAS_INVALID_PARAMETER; 980 981 if (validate_corrupted_page(pe, addr, mask)) 982 return RTAS_INVALID_PARAMETER; 983 984 buf32[0] = cpu_to_be32(upper_32_bits(addr)); 985 buf32[1] = cpu_to_be32(lower_32_bits(addr)); 986 break; 987 988 case RTAS_ERR_TYPE_IOA_BUS_ERROR: 989 /* 32-bit IOA bus error: addr/mask optional */ 990 if (func < EEH_ERR_FUNC_LD_MEM_ADDR || func > EEH_ERR_FUNC_MAX) 991 return RTAS_INVALID_PARAMETER; 992 993 if (addr || mask) { 994 if (validate_ioa_bus_error(pe, addr, mask)) 995 return RTAS_INVALID_PARAMETER; 996 } 997 998 buf32[0] = cpu_to_be32((u32)addr); 999 buf32[1] = cpu_to_be32((u32)mask); 1000 buf32[2] = cpu_to_be32(pe->addr); 1001 buf32[3] = cpu_to_be32(BUID_HI(pe->phb->buid)); 1002 buf32[4] = cpu_to_be32(BUID_LO(pe->phb->buid)); 1003 buf32[5] = cpu_to_be32(func); 1004 break; 1005 1006 case RTAS_ERR_TYPE_IOA_BUS_ERROR_64: 1007 /* 64-bit IOA bus error: addr/mask optional */ 1008 if (func < EEH_ERR_FUNC_MIN || func > EEH_ERR_FUNC_MAX) 1009 return RTAS_INVALID_PARAMETER; 1010 1011 if (addr || mask) { 1012 if (validate_ioa_bus_error(pe, addr, mask)) 1013 return RTAS_INVALID_PARAMETER; 1014 } 1015 > 1016 buf64[0] = cpu_to_be64(addr); 1017 buf64[1] = cpu_to_be64(mask); 1018 buf32[4] = cpu_to_be32(pe->addr); 1019 buf32[5] = cpu_to_be32(BUID_HI(pe->phb->buid)); 1020 buf32[6] = cpu_to_be32(BUID_LO(pe->phb->buid)); 1021 buf32[7] = cpu_to_be32(func); 1022 break; 1023 1024 case RTAS_ERR_TYPE_CORRUPTED_DCACHE_START: 1025 case RTAS_ERR_TYPE_CORRUPTED_DCACHE_END: 1026 case RTAS_ERR_TYPE_CORRUPTED_ICACHE_START: 1027 case RTAS_ERR_TYPE_CORRUPTED_ICACHE_END: 1028 /* addr/mask optional, no strict validation */ 1029 buf32[0] = cpu_to_be32(addr); 1030 buf32[1] = cpu_to_be32(mask); 1031 break; 1032 1033 case RTAS_ERR_TYPE_CORRUPTED_TLB_START: 1034 case RTAS_ERR_TYPE_CORRUPTED_TLB_END: 1035 /* only addr field relevant */ 1036 buf32[0] = cpu_to_be32(addr); 1037 break; 1038 1039 default: 1040 pr_err("Unsupported error type 0x%x\n", type); 1041 return -EINVAL; 1042 } 1043 1044 pr_debug("RTAS: errinjct buffer prepared: type=%d func=%d addr=0x%lx mask=0x%lx\n", 1045 type, func, addr, mask); 1046 1047 return 0; 1048 } 1049 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
