On Thu, 2017-12-14 at 13:13 +0800, kbuild test robot wrote: > 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] As what I have said in [PATCH 0/4], this serial patches are apply to Martin's 4.16/scsi-queue only. Now scsi/for-next and next-20171213 are synchronized to Martin's 4.16/scsi-queue, so these patches can apply to them. But v4.15-rc3 has to do some patches like 4.16/scsi-queue done before, or this patch can not apply. > > 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