diff --git a/drivers/block/tegra_virt_storage/tegra_hv_vblk.c b/drivers/block/tegra_virt_storage/tegra_hv_vblk.c index f5d61c87..876c783a 100644 --- a/drivers/block/tegra_virt_storage/tegra_hv_vblk.c +++ b/drivers/block/tegra_virt_storage/tegra_hv_vblk.c @@ -591,8 +591,12 @@ static bool submit_bio_req(struct vblk_dev *vblkdev) } sg_init_table(vsc_req->sg_lst, bio_req->nr_phys_segments); +#if defined(NV_BLK_RQ_MAP_SG_HAS_NO_QUEUE_ARG) /* Linux v6.15 */ + sg_cnt = blk_rq_map_sg(bio_req, vsc_req->sg_lst); +#else sg_cnt = blk_rq_map_sg(vblkdev->queue, bio_req, vsc_req->sg_lst); +#endif vsc_req->sg_num_ents = sg_nents(vsc_req->sg_lst); if (dma_map_sg(vblkdev->device, vsc_req->sg_lst, vsc_req->sg_num_ents, DMA_BIDIRECTIONAL) == 0) { diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile index ed1a1291..3dfd63d3 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -98,6 +98,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_mq_alloc_disk_for_queue NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_mq_alloc_queue NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_mq_destroy_queue NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_queue_max_hw_sectors +NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_rq_map_sg_has_no_queue_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += block_device_operations_open_has_gendisk_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += block_device_operations_release_has_no_mode_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += queue_limits_struct_has_features diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index d0ae5036..171cf642 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -6733,6 +6733,25 @@ compile_test() { "NV_BLK_MQ_F_SHOULD_MERGE" "" "types" ;; + blk_rq_map_sg_has_no_queue_arg) + # + # Determine if blk_rq_map_sg() no longer takes a request_queue parameter. + # + # Commit 75618ac6e98f ("block: remove unused parameter 'q' parameter + # in __blk_rq_map_sg()") removed the 'request_queue' parameter from the + # function blk_rq_map_sg() in Linux v6.15. + # + CODE=" + #include + + int conftest_blk_rq_map_sg_has_no_queue_arg(struct request *rq, + struct scatterlist *sg) { + return blk_rq_map_sg(rq, sg); + }" + + compile_check_conftest "$CODE" "NV_BLK_RQ_MAP_SG_HAS_NO_QUEUE_ARG" "" "types" + ;; + queue_limits_struct_has_features) # # Determine if the 'queue_limits' needs to use