Hi Tejun, FYI, the error/warning still remains. tree: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.9.y head: e4f10e5782ccc49ac2a6a8e32afb5e570a6dfc7b commit: 8c36cde29ad1e563def83c41094a96027b7a9b1b [549/1978] libata: implement ATA_HORKAGE_MAX_TRIM_128M and apply to Sandisks config: powerpc-randconfig-s031-20210307 (attached as .config) compiler: powerpc-linux-gcc (GCC) 7.5.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-245-gacc5c298-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?id=8c36cde29ad1e563def83c41094a96027b7a9b1b git remote add stable https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git git fetch --no-tags stable linux-4.9.y git checkout 8c36cde29ad1e563def83c41094a96027b7a9b1b # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-7.5.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=powerpc If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): ^ arch/powerpc/include/asm/bug.h:76:7: note: in definition of macro 'BUG_ON' if (x) \ ^ include/linux/dma-mapping.h:284:9: note: in expansion of macro 'pfn_valid' BUG_ON(pfn_valid(PHYS_PFN(phys_addr))); ^~~~~~~~~ arch/powerpc/include/asm/page.h:129:32: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits] #define pfn_valid(pfn) ((pfn) >= ARCH_PFN_OFFSET && (pfn) < max_mapnr) ^ arch/powerpc/include/asm/bug.h:84:25: note: in definition of macro 'BUG_ON' "r" ((__force long)(x))); \ ^ include/linux/dma-mapping.h:284:9: note: in expansion of macro 'pfn_valid' BUG_ON(pfn_valid(PHYS_PFN(phys_addr))); ^~~~~~~~~ In file included from drivers/ata/libata-scsi.c:43:0: include/scsi/scsi_cmnd.h: At top level: include/scsi/scsi_cmnd.h:30:25: warning: "BLK_MAX_CDB" is not defined, evaluates to 0 [-Wundef] #if (MAX_COMMAND_SIZE > BLK_MAX_CDB) ^~~~~~~~~~~ include/scsi/scsi_cmnd.h:31:3: error: #error MAX_COMMAND_SIZE can not be bigger than BLK_MAX_CDB # error MAX_COMMAND_SIZE can not be bigger than BLK_MAX_CDB ^~~~~ include/scsi/scsi_cmnd.h: In function 'scsi_cmd_to_driver': include/scsi/scsi_cmnd.h:155:45: error: dereferencing pointer to incomplete type 'struct request' return *(struct scsi_driver **)cmd->request->rq_disk->private_data; ^~ include/scsi/scsi_cmnd.h: In function 'scsi_bidi_cmnd': include/scsi/scsi_cmnd.h:201:9: error: implicit declaration of function 'blk_bidi_rq' [-Werror=implicit-function-declaration] return blk_bidi_rq(cmd->request) && ^~~~~~~~~~~ include/scsi/scsi_cmnd.h: In function 'scsi_get_lba': include/scsi/scsi_cmnd.h:294:9: error: implicit declaration of function 'blk_rq_pos' [-Werror=implicit-function-declaration] return blk_rq_pos(scmd->request); ^~~~~~~~~~ In file included from drivers/ata/libata-scsi.c:44:0: include/scsi/scsi_eh.h: At top level: include/scsi/scsi_eh.h:42:24: error: 'BLK_MAX_CDB' undeclared here (not in a function); did you mean 'BLK_MQ_H'? unsigned char eh_cmnd[BLK_MAX_CDB]; ^~~~~~~~~~~ BLK_MQ_H In file included from include/asm-generic/bug.h:4:0, from arch/powerpc/include/asm/bug.h:127, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/slab.h:14, from drivers/ata/libata-scsi.c:36: drivers/ata/libata-scsi.c: In function 'atapi_drain_needed': drivers/ata/libata-scsi.c:1189:29: error: 'REQ_TYPE_BLOCK_PC' undeclared (first use in this function) if (likely(rq->cmd_type != REQ_TYPE_BLOCK_PC)) ^ include/linux/compiler.h:183:40: note: in definition of macro 'likely' # define likely(x) __builtin_expect(!!(x), 1) ^ drivers/ata/libata-scsi.c:1189:29: note: each undeclared identifier is reported only once for each function it appears in if (likely(rq->cmd_type != REQ_TYPE_BLOCK_PC)) ^ include/linux/compiler.h:183:40: note: in definition of macro 'likely' # define likely(x) __builtin_expect(!!(x), 1) ^ drivers/ata/libata-scsi.c:1192:7: error: implicit declaration of function 'blk_rq_bytes'; did you mean 'clear_bits'? [-Werror=implicit-function-declaration] if (!blk_rq_bytes(rq) || op_is_write(req_op(rq))) ^~~~~~~~~~~~ clear_bits drivers/ata/libata-scsi.c:1192:27: error: implicit declaration of function 'op_is_write'; did you mean 'acpi_write'? [-Werror=implicit-function-declaration] if (!blk_rq_bytes(rq) || op_is_write(req_op(rq))) ^~~~~~~~~~~ acpi_write drivers/ata/libata-scsi.c:1192:39: error: implicit declaration of function 'req_op'; did you mean 'seq_open'? [-Werror=implicit-function-declaration] if (!blk_rq_bytes(rq) || op_is_write(req_op(rq))) ^~~~~~ seq_open drivers/ata/libata-scsi.c: In function 'ata_scsi_dev_config': drivers/ata/libata-scsi.c:1207:2: error: implicit declaration of function 'blk_queue_max_hw_sectors' [-Werror=implicit-function-declaration] blk_queue_max_hw_sectors(q, dev->max_sectors); ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/ata/libata-scsi.c:1215:3: error: implicit declaration of function 'blk_queue_update_dma_pad' [-Werror=implicit-function-declaration] blk_queue_update_dma_pad(q, ATA_DMA_PAD_SZ - 1); ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/ata/libata-scsi.c:1218:35: error: dereferencing pointer to incomplete type 'struct request_queue' buf = kmalloc(ATAPI_MAX_DRAIN, q->bounce_gfp | GFP_KERNEL); ^~ drivers/ata/libata-scsi.c:1224:3: error: implicit declaration of function 'blk_queue_dma_drain' [-Werror=implicit-function-declaration] blk_queue_dma_drain(q, atapi_drain_needed, buf, ATAPI_MAX_DRAIN); ^~~~~~~~~~~~~~~~~~~ drivers/ata/libata-scsi.c:1242:2: error: implicit declaration of function 'blk_queue_update_dma_alignment'; did you mean '__assume_page_alignment'? [-Werror=implicit-function-declaration] blk_queue_update_dma_alignment(q, sdev->sector_size - 1); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ __assume_page_alignment drivers/ata/libata-scsi.c:1255:2: error: implicit declaration of function 'blk_queue_flush_queueable'; did you mean 'blk_needs_flush_plug'? [-Werror=implicit-function-declaration] blk_queue_flush_queueable(q, false); ^~~~~~~~~~~~~~~~~~~~~~~~~ blk_needs_flush_plug drivers/ata/libata-scsi.c: In function 'ata_check_nblocks': drivers/ata/libata-scsi.c:1742:7: error: implicit declaration of function 'blk_rq_is_passthrough' [-Werror=implicit-function-declaration] if (!blk_rq_is_passthrough(rq)) ^~~~~~~~~~~~~~~~~~~~~ drivers/ata/libata-scsi.c: In function 'ata_scsiop_inq_b0': >> drivers/ata/libata-scsi.c:2346:30: error: 'SECTOR_SHIFT' undeclared (first use in this function); did you mean 'SOFTIRQ_SHIFT'? max_blocks = 128 << (20 - SECTOR_SHIFT); ^~~~~~~~~~~~ SOFTIRQ_SHIFT drivers/ata/libata-scsi.c: In function 'atapi_drain_needed': drivers/ata/libata-scsi.c:1196:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ drivers/ata/libata-scsi.c: In function 'ata_scsiop_maint_in': drivers/ata/libata-scsi.c:3601:6: warning: this statement may fall through [-Wimplicit-fallthrough=] if (!ata_id_sct_write_same(dev->id)) ^ drivers/ata/libata-scsi.c:3604:2: note: here case ZBC_IN: ^~~~ cc1: some warnings being treated as errors -- ^ arch/powerpc/include/asm/bug.h:76:7: note: in definition of macro 'BUG_ON' if (x) \ ^ include/linux/dma-mapping.h:284:9: note: in expansion of macro 'pfn_valid' BUG_ON(pfn_valid(PHYS_PFN(phys_addr))); ^~~~~~~~~ arch/powerpc/include/asm/page.h:129:32: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits] #define pfn_valid(pfn) ((pfn) >= ARCH_PFN_OFFSET && (pfn) < max_mapnr) ^ arch/powerpc/include/asm/bug.h:84:25: note: in definition of macro 'BUG_ON' "r" ((__force long)(x))); \ ^ include/linux/dma-mapping.h:284:9: note: in expansion of macro 'pfn_valid' BUG_ON(pfn_valid(PHYS_PFN(phys_addr))); ^~~~~~~~~ In file included from drivers/ata/libata-scsi.c:43:0: include/scsi/scsi_cmnd.h: At top level: include/scsi/scsi_cmnd.h:30:25: warning: "BLK_MAX_CDB" is not defined, evaluates to 0 [-Wundef] #if (MAX_COMMAND_SIZE > BLK_MAX_CDB) ^~~~~~~~~~~ include/scsi/scsi_cmnd.h:31:3: error: #error MAX_COMMAND_SIZE can not be bigger than BLK_MAX_CDB # error MAX_COMMAND_SIZE can not be bigger than BLK_MAX_CDB ^~~~~ include/scsi/scsi_cmnd.h: In function 'scsi_cmd_to_driver': include/scsi/scsi_cmnd.h:155:45: error: dereferencing pointer to incomplete type 'struct request' return *(struct scsi_driver **)cmd->request->rq_disk->private_data; ^~ include/scsi/scsi_cmnd.h: In function 'scsi_bidi_cmnd': include/scsi/scsi_cmnd.h:201:9: error: implicit declaration of function 'blk_bidi_rq' [-Werror=implicit-function-declaration] return blk_bidi_rq(cmd->request) && ^~~~~~~~~~~ include/scsi/scsi_cmnd.h: In function 'scsi_get_lba': include/scsi/scsi_cmnd.h:294:9: error: implicit declaration of function 'blk_rq_pos' [-Werror=implicit-function-declaration] return blk_rq_pos(scmd->request); ^~~~~~~~~~ In file included from drivers/ata/libata-scsi.c:44:0: include/scsi/scsi_eh.h: At top level: include/scsi/scsi_eh.h:42:24: error: 'BLK_MAX_CDB' undeclared here (not in a function); did you mean 'BLK_MQ_H'? unsigned char eh_cmnd[BLK_MAX_CDB]; ^~~~~~~~~~~ BLK_MQ_H In file included from include/asm-generic/bug.h:4:0, from arch/powerpc/include/asm/bug.h:127, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/slab.h:14, from drivers/ata/libata-scsi.c:36: drivers/ata/libata-scsi.c: In function 'atapi_drain_needed': drivers/ata/libata-scsi.c:1189:29: error: 'REQ_TYPE_BLOCK_PC' undeclared (first use in this function) if (likely(rq->cmd_type != REQ_TYPE_BLOCK_PC)) ^ include/linux/compiler.h:183:40: note: in definition of macro 'likely' # define likely(x) __builtin_expect(!!(x), 1) ^ drivers/ata/libata-scsi.c:1189:29: note: each undeclared identifier is reported only once for each function it appears in if (likely(rq->cmd_type != REQ_TYPE_BLOCK_PC)) ^ include/linux/compiler.h:183:40: note: in definition of macro 'likely' # define likely(x) __builtin_expect(!!(x), 1) ^ drivers/ata/libata-scsi.c:1192:7: error: implicit declaration of function 'blk_rq_bytes'; did you mean 'clear_bits'? [-Werror=implicit-function-declaration] if (!blk_rq_bytes(rq) || op_is_write(req_op(rq))) ^~~~~~~~~~~~ clear_bits drivers/ata/libata-scsi.c:1192:27: error: implicit declaration of function 'op_is_write'; did you mean 'acpi_write'? [-Werror=implicit-function-declaration] if (!blk_rq_bytes(rq) || op_is_write(req_op(rq))) ^~~~~~~~~~~ acpi_write drivers/ata/libata-scsi.c:1192:39: error: implicit declaration of function 'req_op'; did you mean 'seq_open'? [-Werror=implicit-function-declaration] if (!blk_rq_bytes(rq) || op_is_write(req_op(rq))) ^~~~~~ seq_open drivers/ata/libata-scsi.c: In function 'ata_scsi_dev_config': drivers/ata/libata-scsi.c:1207:2: error: implicit declaration of function 'blk_queue_max_hw_sectors' [-Werror=implicit-function-declaration] blk_queue_max_hw_sectors(q, dev->max_sectors); ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/ata/libata-scsi.c:1215:3: error: implicit declaration of function 'blk_queue_update_dma_pad' [-Werror=implicit-function-declaration] blk_queue_update_dma_pad(q, ATA_DMA_PAD_SZ - 1); ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/ata/libata-scsi.c:1218:35: error: dereferencing pointer to incomplete type 'struct request_queue' buf = kmalloc(ATAPI_MAX_DRAIN, q->bounce_gfp | GFP_KERNEL); ^~ drivers/ata/libata-scsi.c:1224:3: error: implicit declaration of function 'blk_queue_dma_drain' [-Werror=implicit-function-declaration] blk_queue_dma_drain(q, atapi_drain_needed, buf, ATAPI_MAX_DRAIN); ^~~~~~~~~~~~~~~~~~~ drivers/ata/libata-scsi.c:1242:2: error: implicit declaration of function 'blk_queue_update_dma_alignment'; did you mean '__assume_page_alignment'? [-Werror=implicit-function-declaration] blk_queue_update_dma_alignment(q, sdev->sector_size - 1); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ __assume_page_alignment drivers/ata/libata-scsi.c:1255:2: error: implicit declaration of function 'blk_queue_flush_queueable'; did you mean 'blk_needs_flush_plug'? [-Werror=implicit-function-declaration] blk_queue_flush_queueable(q, false); ^~~~~~~~~~~~~~~~~~~~~~~~~ blk_needs_flush_plug drivers/ata/libata-scsi.c: In function 'ata_check_nblocks': drivers/ata/libata-scsi.c:1742:7: error: implicit declaration of function 'blk_rq_is_passthrough' [-Werror=implicit-function-declaration] if (!blk_rq_is_passthrough(rq)) ^~~~~~~~~~~~~~~~~~~~~ drivers/ata/libata-scsi.c: In function 'ata_scsiop_inq_b0': >> drivers/ata/libata-scsi.c:2346:30: error: 'SECTOR_SHIFT' undeclared (first use in this function); did you mean 'SOFTIRQ_SHIFT'? max_blocks = 128 << (20 - SECTOR_SHIFT); ^~~~~~~~~~~~ SOFTIRQ_SHIFT drivers/ata/libata-scsi.c: In function 'atapi_drain_needed': drivers/ata/libata-scsi.c:1196:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ drivers/ata/libata-scsi.c: In function 'ata_scsiop_maint_in': drivers/ata/libata-scsi.c:3601:6: warning: this statement may fall through [-Wimplicit-fallthrough=] if (!ata_id_sct_write_same(dev->id)) ^ drivers/ata/libata-scsi.c:3604:2: note: here case ZBC_IN: ^~~~ cc1: some warnings being treated as errors vim +2346 drivers/ata/libata-scsi.c 2314 2315 static unsigned int ata_scsiop_inq_b0(struct ata_scsi_args *args, u8 *rbuf) 2316 { 2317 struct ata_device *dev = args->dev; 2318 u16 min_io_sectors; 2319 2320 rbuf[1] = 0xb0; 2321 rbuf[3] = 0x3c; /* required VPD size with unmap support */ 2322 2323 /* 2324 * Optimal transfer length granularity. 2325 * 2326 * This is always one physical block, but for disks with a smaller 2327 * logical than physical sector size we need to figure out what the 2328 * latter is. 2329 */ 2330 min_io_sectors = 1 << ata_id_log2_per_physical_sector(args->id); 2331 put_unaligned_be16(min_io_sectors, &rbuf[6]); 2332 2333 /* 2334 * Optimal unmap granularity. 2335 * 2336 * The ATA spec doesn't even know about a granularity or alignment 2337 * for the TRIM command. We can leave away most of the unmap related 2338 * VPD page entries, but we have specifify a granularity to signal 2339 * that we support some form of unmap - in thise case via WRITE SAME 2340 * with the unmap bit set. 2341 */ 2342 if (ata_id_has_trim(args->id)) { 2343 u64 max_blocks = 65535 * ATA_MAX_TRIM_RNUM; 2344 2345 if (dev->horkage & ATA_HORKAGE_MAX_TRIM_128M) > 2346 max_blocks = 128 << (20 - SECTOR_SHIFT); 2347 2348 put_unaligned_be64(max_blocks, &rbuf[36]); 2349 put_unaligned_be32(1, &rbuf[28]); 2350 } 2351 2352 return 0; 2353 } 2354 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org