Hi Ching, Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on scsi/for-next] [also build test WARNING on next-20171213] [cannot apply to v4.15-rc3] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Ching-Huang/scsi-arcmsr-simplify-hba_get_config-routine/20171213-224803 base: https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) vim +2971 drivers/scsi/arcmsr/arcmsr_hba.c 2958 2959 static void arcmsr_get_adapter_config(struct AdapterControlBlock *pACB, uint32_t *rwbuffer) 2960 { 2961 int count; 2962 uint32_t *acb_firm_model = (uint32_t *)pACB->firm_model; 2963 uint32_t *acb_firm_version = (uint32_t *)pACB->firm_version; 2964 uint32_t *acb_device_map = (uint32_t *)pACB->device_map; 2965 uint32_t *firm_model = &rwbuffer[15]; 2966 uint32_t *firm_version = &rwbuffer[17]; 2967 uint32_t *device_map = &rwbuffer[21]; 2968 2969 count = 2; 2970 while (count) { > 2971 *acb_firm_model = readl(firm_model); 2972 acb_firm_model++; 2973 firm_model++; 2974 count--; 2975 } 2976 count = 4; 2977 while (count) { 2978 *acb_firm_version = readl(firm_version); 2979 acb_firm_version++; 2980 firm_version++; 2981 count--; 2982 } 2983 count = 4; 2984 while (count) { 2985 *acb_device_map = readl(device_map); 2986 acb_device_map++; 2987 device_map++; 2988 count--; 2989 } 2990 pACB->signature = readl(&rwbuffer[0]); 2991 pACB->firm_request_len = readl(&rwbuffer[1]); 2992 pACB->firm_numbers_queue = readl(&rwbuffer[2]); > 2993 pACB->firm_sdram_size = readl(&rwbuffer[3]); > 2994 pACB->firm_hd_channels = readl(&rwbuffer[4]); 2995 pACB->firm_cfg_version = readl(&rwbuffer[25]); 2996 pr_notice("Areca RAID Controller%d: Model %s, F/W %s\n", 2997 pACB->host->host_no, 2998 pACB->firm_model, 2999 pACB->firm_version); 3000 } 3001 3002 static bool arcmsr_hbaA_get_config(struct AdapterControlBlock *acb) 3003 { 3004 struct MessageUnit_A __iomem *reg = acb->pmuA; 3005 3006 arcmsr_wait_firmware_ready(acb); 3007 writel(ARCMSR_INBOUND_MESG0_GET_CONFIG, ®->inbound_msgaddr0); 3008 if (!arcmsr_hbaA_wait_msgint_ready(acb)) { 3009 printk(KERN_NOTICE "arcmsr%d: wait 'get adapter firmware \ 3010 miscellaneous data' timeout \n", acb->host->host_no); 3011 return false; 3012 } > 3013 arcmsr_get_adapter_config(acb, reg->message_rwbuffer); 3014 return true; 3015 } 3016 static bool arcmsr_hbaB_get_config(struct AdapterControlBlock *acb) 3017 { 3018 struct MessageUnit_B *reg = acb->pmuB; 3019 3020 arcmsr_wait_firmware_ready(acb); 3021 writel(ARCMSR_MESSAGE_START_DRIVER_MODE, reg->drv2iop_doorbell); 3022 if (!arcmsr_hbaB_wait_msgint_ready(acb)) { 3023 printk(KERN_ERR "arcmsr%d: can't set driver mode.\n", acb->host->host_no); 3024 return false; 3025 } 3026 writel(ARCMSR_MESSAGE_GET_CONFIG, reg->drv2iop_doorbell); 3027 if (!arcmsr_hbaB_wait_msgint_ready(acb)) { 3028 printk(KERN_NOTICE "arcmsr%d: wait 'get adapter firmware \ 3029 miscellaneous data' timeout \n", acb->host->host_no); 3030 return false; 3031 } > 3032 arcmsr_get_adapter_config(acb, reg->message_rwbuffer); 3033 return true; 3034 } 3035 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation