From patchwork Thu Mar 20 11:13:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 14023726 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6727BC28B30 for ; Thu, 20 Mar 2025 11:13:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3A5A1280004; Thu, 20 Mar 2025 07:13:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EBCA2280001; Thu, 20 Mar 2025 07:13:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C42DA280003; Thu, 20 Mar 2025 07:13:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 8262B280003 for ; Thu, 20 Mar 2025 07:13:45 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 67149811B0 for ; Thu, 20 Mar 2025 11:13:46 +0000 (UTC) X-FDA: 83241669252.26.D8D0582 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf17.hostedemail.com (Postfix) with ESMTP id AF55640017 for ; Thu, 20 Mar 2025 11:13:44 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=MThVMap2; spf=none (imf17.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742469224; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=BLnLLbicrTWFog6kQ28fdP0bkjVVSVc398B1zInJJCs=; b=l9afC08VSUzczTueNtlHuA6jzCmBgra7V6lSDS4zx8HeCFv9Gd7UZ6qKs7e0SysJrcHMv/ s/iMufU17X0EsNtxHZwmc5O954L+ftHnZjebm0xOfQNnN2yp25S4nv0hu7hjODFNpYzblb 7tbFVd2AYuDlXmVNivfIXQ49lclfraE= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=MThVMap2; spf=none (imf17.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742469224; a=rsa-sha256; cv=none; b=yaYFwQqk1ZH5H66cF71/UcjDFX/HwZATXG0WUlMET3XLEOQPOWrWM0XcvZCQYfUmWFjV5I w0uMLBepyxSEA7lVYqEW7OUH5K+xqsdF3BUQ5AgVBaV8+LZxOufBl7IoQ5wA7IvIw84N5T wKXAeJdTxnZNrrQyyUDUT3KtBxjRT2w= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=BLnLLbicrTWFog6kQ28fdP0bkjVVSVc398B1zInJJCs=; b=MThVMap2jk+UZ2Ccgi50YbImvQ rpRcFTXCk6GDaic1nqElD9jqLc2R0U7i4oWXYFFmHHzyhnQW3ow6iiO5KlSMN3wGap4N2eHsyw2nf qerPxbcisn5RdWT702ZoFtRFiYbg/ZlUBnocITROFYnlAdfcw8juzW69qjopaD0b6420IdGbKG8Pq eXq1b0c2E8s36ED4JxHAjn+OLXTvcR/k+UvNSFvQakZ+buqMBHYd4UdIsVqIlEalwDmIWI5ShlcS4 po41BQ60nKFFQdwvIDddB8ioPnnlQkYJL0OQCoN3diLTvMrGlDTZIwF43RE3l0iy/uVIFFt8eczTW e58r3InQ==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tvDqB-0000000BvGJ-0leR; Thu, 20 Mar 2025 11:13:35 +0000 From: Luis Chamberlain To: leon@kernel.org, hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@kernel.dk, joro@8bytes.org, brauner@kernel.org, hare@suse.de, willy@infradead.org, david@fromorbit.com, djwong@kernel.org Cc: john.g.garry@oracle.com, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-mm@kvack.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [RFC 1/4] iomap: use BLK_MAX_BLOCK_SIZE for the iomap zero page Date: Thu, 20 Mar 2025 04:13:25 -0700 Message-ID: <20250320111328.2841690-2-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250320111328.2841690-1-mcgrof@kernel.org> References: <20250320111328.2841690-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam-User: X-Rspamd-Queue-Id: AF55640017 X-Rspamd-Server: rspam03 X-Stat-Signature: 8ywewtwix9sr7sig37iu4mby4jmnzbtm X-Rspam: Yes X-HE-Tag: 1742469224-378583 X-HE-Meta: U2FsdGVkX1/wb1XuWJ1OcVo50I6W5BGG8Tkows5T5oJD2srCGK20B1sEqL2hq/TVkJeh3K9dQrCx31bZCWeyoHVaEB65iZEPxAp/ThW7KY/+cLalyTXo2E9slycEnwdm+g8T1Yfj0/1WEGyVc4CUxcXQO8nQ/07m3Jc57HrfVB+DdHstzfjrmyAy76gGVAbn+bSRbx3zappsyTsNtuCLUUxJr53wHsDfBKdo0GqCZTyYorD3JwUvfp4xCH1SETSsE29N1Bu6nq4Qdrn8swkriWET30swuhPRQ7bIcnh5OAExxIiD78XxjTyW13DiwQjh07EoMAgWBM4iKfz2QUrqNcq1Fi/fyOacLOGiW+VjX6iPmG3Cfw/U5/wGCHEw50PL98wlRy+JdbEyGTjnhGELhY86375f5Pc06PY/BbTnC5ysyf7t6SHJkJfzjkXjepBdzq70n62M5ofp2S+5pHzyLHcaOGI7sUkBY3ClNpoTX1N1zO++0V99+p5UtU8yfbioMBUrpPa4QPboFVF7uesnYieiE6l+06NHeyZkNVgkj5/HNrAe500wLVQUOJXiPRwKDhkHL9/UADZnaNVQQgiUxRMJt9fY5V1A5aLaeg0JYLvSklJX+DZkY66/S7nJRvnqkSk21RIf6+C+BruAs9tw8PaVu7VCWFxQZrjQTrg4ZMgMZDuYnmK8mE1JN8QrCWbEsXzsswldOjxIYEkbODtynYIh3/Vrbt2OOUmnyzv7n98+t/9pyYUXmB/j4r+KFy1B4zfUfD6MZulx/TOaFWXjwq7kTo6F4/nOIzsSbfSIs9fHPo7SYne0qruqcj/VPYbYseOmIXHhfObjjqlIHpsXBhI/ll9hJCZiqrWh8tK6ztUuIr3T6sFYRtjeQIXdi8gu1UHNb0vW4lH/5SEKUhA4TJnWk7DFQydUFHlQwnsrYNFZNwfcdN85uWiDRPr30CkCgJ/bcVXphimMQpulrsc XMUrX7sw Q3ZCN+NBcVrlHT1SjX4LTuilcwRC48LehHaj8oevNNz8jfMGC4Nh6scjubPuMcndp7YjJGP/1wCKe/w6uAgSDL4o7Aecoi273FAKGFzPHWImk9LP0S+XCbk6ealvLWGb8RUrI5R882C3PUknJ7YD0tngSI0EeEIaB+hGzmSVIxI0qHocEoyQczvVA6Khg8f5Wl4iH+Yko8/fooDLuekSm1t9rBWSR0+hVZXjYr+ZTdNu0pc+4IMvEB17zSvLKjjrwwaePzi1i0C2rQuiF+vyZFWFq6WeDZ3RympeZKMg9QhHnSHis3KrJnqywarYaZEd1Aud/zGjRLTT5qNVCIv+ZewJ3K5spnlQ7rVZZmTbmxnGrXt4l7sPDAA0VdeehQJWKkahRB4pUlKFpralsil8BxWlz5a4LNITPamiwUR6srDOdz9C5xCNceShAw9ONL9H3dGedpygERtM1iZxhv765/ZkptZO29iJYBKezUCqaXShC8mMC+wvzzy8QO02NDqrVvo+B/3Fl4NOuke5dnVGColmMSP+YTMy86dupr1LaXsv/tVc= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: There is no point in modifying two locations now that we have a sensible BLK_MAX_BLOCK_SIZE defined which is only lifted once we have tested and validated things. Signed-off-by: Luis Chamberlain --- fs/iomap/direct-io.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c index 0e47da82b0c2..aa109f4ee491 100644 --- a/fs/iomap/direct-io.c +++ b/fs/iomap/direct-io.c @@ -30,7 +30,7 @@ /* * Used for sub block zeroing in iomap_dio_zero() */ -#define IOMAP_ZERO_PAGE_SIZE (SZ_64K) +#define IOMAP_ZERO_PAGE_SIZE (BLK_MAX_BLOCK_SIZE) #define IOMAP_ZERO_PAGE_ORDER (get_order(IOMAP_ZERO_PAGE_SIZE)) static struct page *zero_page; From patchwork Thu Mar 20 11:13:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 14023725 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0E22FC36002 for ; Thu, 20 Mar 2025 11:13:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 11A9A280002; Thu, 20 Mar 2025 07:13:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CDEDA280006; Thu, 20 Mar 2025 07:13:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AE41C280001; Thu, 20 Mar 2025 07:13:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 7D9F4280002 for ; Thu, 20 Mar 2025 07:13:45 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 6F2EA161253 for ; Thu, 20 Mar 2025 11:13:46 +0000 (UTC) X-FDA: 83241669252.18.081C5F1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf16.hostedemail.com (Postfix) with ESMTP id 31947180004 for ; Thu, 20 Mar 2025 11:13:43 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=SJBSMDr2; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf16.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742469224; a=rsa-sha256; cv=none; b=Tg0jf+remk+dr4K4hDZvX3/J5kuZt/4ql1gk5D1UwOFYHdYOzkJSECCTG2RGGjxdi6vRTF zH5wg/oN+8PkIusFGo5EFUbp8HbTph/MHHDp5Ch4bZbIGRYN5JCJp5ZQwWs62OpNXG3gWK PssNflCkmPXLlIVIDyPUl65DeUCsyGQ= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=SJBSMDr2; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf16.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742469224; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0HxLvE16YL9P1A4HpsuUtCMnn8D/Dk21qpZacVa2AGY=; b=F3U+YPQsRPP+7ClCeBAue6KKQYRW8FESTX/9lqMqNz93JrrzSQyyVv3zytTMZFLl5OpAoM mAUdHNa+ap9JgCsVE2/6ueVEmZ2gs0p3OMlEyoZJb2r1T9u7e5qdD17gRM8ZbOvNm2LC4R O6hB6eFvdUsQVmgDJmtaUN3xHFjvct8= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=0HxLvE16YL9P1A4HpsuUtCMnn8D/Dk21qpZacVa2AGY=; b=SJBSMDr2fNGmqh34vxJMTMJuHp dWkXnftkBc2gTsvYvyS36H/68CqyPbqCTB9yz17Scl40ZICNG8S8NTByCjs8lF3rTHmv40RQ184Ro lUS85Y9mbtnzp0Rspl7SgIIPAK7onAV3aSw79P1+gCr8XelQOMFmQm0wNT/OAviZ83ycE4GvdiE+j YFvW0H/3/avPMWtoXsR64Fk1y3w3iroPORvHXXV5YGy3u/0LG7x4jWhyIA8xgAxLREnrNGb83JbyN 4ygdycwkUG9H89wWa0z4ULeWpyAcyPAsabuRMiSFsMAHO0+fvWQ440SjFsqvLulRHo4Z3P9Gs1mY7 LT2pWB2g==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tvDqB-0000000BvGL-0uOZ; Thu, 20 Mar 2025 11:13:35 +0000 From: Luis Chamberlain To: leon@kernel.org, hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@kernel.dk, joro@8bytes.org, brauner@kernel.org, hare@suse.de, willy@infradead.org, david@fromorbit.com, djwong@kernel.org Cc: john.g.garry@oracle.com, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-mm@kvack.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [RFC 2/4] blkdev: lift BLK_MAX_BLOCK_SIZE to page cache limit Date: Thu, 20 Mar 2025 04:13:26 -0700 Message-ID: <20250320111328.2841690-3-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250320111328.2841690-1-mcgrof@kernel.org> References: <20250320111328.2841690-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Stat-Signature: jbwy84pyxnmm4ycqaontm8ke5y8niq3i X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 31947180004 X-Rspam-User: X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam: Yes X-HE-Tag: 1742469223-230161 X-HE-Meta: U2FsdGVkX1+hz4l3Rt/bqejrWYM7ReSjwPY1i4A6sScz93oshafgMxUQ5iE5g4ebIuBDphRc0XJVfv4Oqe838UBhnolAq9ayFypT6zH4DuuKmJJEzYux4+lUuTq9GTE1gZFxT2RbZmEgz/ilI2hVhgCepTlpKJvTL3Mu8Xn3cVPH56Fmhu79dLfZ5N3rgHdfi2mQqimm5onNj/COgtXWutdl6/GHyvkyZTkHRW8fGdj5XxQKXsFXfvlKxv0lSdzeTcvlK7gbQaazKAK2y5uQBW4ho1uF/Bi3VTM4CJlFpfUd+e9uMoYdBS1fuCtdmU6jPO8VimdN7mhkqmedGAA9QtVPvjH/azyiLWEOysfRplCftLnBK7Y9TgGkxMXtP2NOOJoo+p/pYEmZzkv/TMQ+JBNU0sKlr3REETGPNCWnIpGgAChyBZRigVhXR4n/b7xu2D63FR2yoDMmhhlxblnRopSJ2ISNNZriXqfRAWy1LYsiABJNNrfxXgw1Xk6p1EpmVonZXoKRENtXHIZMdjaX7I6oRRU2nOObd1DsD+YOG2PL8AcGX6b0gJNa7z99VGG5vwafam51EGAfwdl/9g1xK7Hb86/UTDue40ZV1j7hdWnUN7giJ5xB2DFuQ2/60ZCBlePxVylWU6s4FO+CcY5zUzj29akxleCZulUsuwx2p7S1tmbKDDctazbzbwdTMjQnoNXgQmZgZhAPu9sFyNJyjJb4GRYFQPb99ejCGidjj52OnryayH525XCig2gVIEDzhAL31p9Ai1mRJnoWk5iGBe44lhzfTJrq2miKGxFXL8XVbHQuU0keSsIk7clNsZsqcVUs1UK1Bp5JmR1W+j88mBzuhdQX9IQe0a5vQQm2Uow5LlmqbQzpfm0mlXIKPOSLkjj3c1KMhDCm2CDpwFe3bKR4pldj6YdaL166LwrAaUg5G+J1cQTi8mma6bk1Wblg5V+2eLc3O2Zq4sTeB0f gWgXY76Y O8iVjP6OmxYTTGidL4gGe2xIot0opjiGtR69cLHSX5HKCasGCcC3IgCinZIK3OGCpQ0xBwS3iZLuOfsRZWlQdCwZ2f4SW0axrVsI5iXdOLk2pF+zu6mRy3FY6ZCQACqJAwIu/kWh6U12nGnnM+EBxTcE2PJh1SecnN5lSe70hwXxHV6R4KZaXw/yWc4VkQceVgVkAYSB+3dDDTs7uyLoOSbKuYWjN1PJn+6YMPwSOBQeqsrTarTT2N8HXPOpz32SZ1bk1cd0aHzww9u5Kd6UaIiuOFw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: It's a brave new world. This is now part of the validation to get to at least the page cache limit. Signed-off-by: Luis Chamberlain --- include/linux/blkdev.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 1c0cf6af392c..9e1b3e7526d9 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -26,6 +26,7 @@ #include #include #include +#include struct module; struct request_queue; @@ -268,11 +269,7 @@ static inline dev_t disk_devt(struct gendisk *disk) return MKDEV(disk->major, disk->first_minor); } -/* - * We should strive for 1 << (PAGE_SHIFT + MAX_PAGECACHE_ORDER) - * however we constrain this to what we can validate and test. - */ -#define BLK_MAX_BLOCK_SIZE SZ_64K +#define BLK_MAX_BLOCK_SIZE 1 << (PAGE_SHIFT + MAX_PAGECACHE_ORDER) /* blk_validate_limits() validates bsize, so drivers don't usually need to */ static inline int blk_validate_block_size(unsigned long bsize) From patchwork Thu Mar 20 11:13:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 14023727 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CAA64C36000 for ; Thu, 20 Mar 2025 11:13:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5E44C280001; Thu, 20 Mar 2025 07:13:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 31A1B280003; Thu, 20 Mar 2025 07:13:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F2B7E280007; Thu, 20 Mar 2025 07:13:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id B434A280002 for ; Thu, 20 Mar 2025 07:13:45 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 6EF8EB9ADB for ; Thu, 20 Mar 2025 11:13:46 +0000 (UTC) X-FDA: 83241669252.22.35A406D Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf15.hostedemail.com (Postfix) with ESMTP id 0D64EA000E for ; Thu, 20 Mar 2025 11:13:43 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=4Es30ejs; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf15.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742469224; a=rsa-sha256; cv=none; b=El1TdtTK7dJdM7Qmh08B8uIjTV3dUuxIyXY0eBrmOVYs4jANJrKkP/HNRheXw2LmNcQbo1 wP7VKfE7i8zXQRyXGR2F+qBkMPFaKkYZanncO09jRQ4Q7ytGli0q4ZBHsdr4AHSUyg2zeT Ia+aVH2mbtc1djhJn+jI3nb5BtJGfCY= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=4Es30ejs; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf15.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742469224; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Jf1rG7AmJkP1u7S6fw0dmgKBHdEibmpz/cPja1fejVI=; b=BuCjX/iGWRf5ykFXlqtSJ699OKbn2UXZymX1K+dJvXNq9yKaHW3M5Bvf23Y9DlVONkDptT xWbhHMPVbl7K8fO3ByjV0KSJTyeih+A3B9GSmipAKKRKFk92TB+SPPhXdunArnjOAKv5Xj Cl7gJcob1fvWqUQWsV4bEBwZV27znN0= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=Jf1rG7AmJkP1u7S6fw0dmgKBHdEibmpz/cPja1fejVI=; b=4Es30ejsM1CkQnH1Jn7AIoeHqa CDzhhGO8nAeEq+AnFC4X0Zvc1qX8jnP1BRiLAGI2vqCMvDL+rwcs1bpoPvR0S6bbJKHcPEUt7BPOQ 4dJG4tZvciMICp/N3Fi2RnoQys+y8Do76hvPJRXVX3cZBARBQ73SxwCc8C7KO7PXWTD9yzCs8rRSZ KOBQ23r+c15c3XhGAbKO1n/C/8CcnF7UlG+ngv/M4L47QA0hmitDUc/RxF7i9GmphyuCaYt3rLXeR EQ2PFBCtH3/M/+GM6R3pz/r6/sGgHQJDoiPqOILmugJ+3MtN+M5Z+VaLxSPtlnEOsE+R7Hqbj/of9 9FAiHM1w==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tvDqB-0000000BvGN-13gs; Thu, 20 Mar 2025 11:13:35 +0000 From: Luis Chamberlain To: leon@kernel.org, hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@kernel.dk, joro@8bytes.org, brauner@kernel.org, hare@suse.de, willy@infradead.org, david@fromorbit.com, djwong@kernel.org Cc: john.g.garry@oracle.com, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-mm@kvack.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [RFC 3/4] nvme-pci: bump segments to what the device can use Date: Thu, 20 Mar 2025 04:13:27 -0700 Message-ID: <20250320111328.2841690-4-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250320111328.2841690-1-mcgrof@kernel.org> References: <20250320111328.2841690-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: 0D64EA000E X-Rspamd-Server: rspam07 X-Stat-Signature: cwwn5g1d1u6wnuiarsnogrdr16cxdfcw X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam: Yes X-HE-Tag: 1742469223-685917 X-HE-Meta: U2FsdGVkX1/iUcDCgbIZYpqk6NbFEXJbvUIjVi6hOqjqvWyPrduecgfvxqW8sGU/0Jw8TOPKVc4hYq6bQBbYs+y5GEdfTTzC32t+cOgguIYZxtJMYvTInSfg+5zOfKWywZfHIgdNZGZboNEN4qfwkICji8bdY5Z+RfNSUZroVPFsOQuHcche7arV/Ru8YhtGrxnF90S7stg4SPQlNtxxRZRDLQ57mcSULbIHzzm0k7MbIOrAaOjd8/jT5geyarwE7JbJWwfDuYSKTfaJQq0G0nvXDZAAwCVR48HhO5BIzBqZ1XqNty4DzLBIRrX9TYZXTG/8B9InEWjziS6DYCVDh1Px4Tj2IxoucG2BVr6vkiN9d6wPyYxMFxRjtwsCEscu0qkyo/FhDl6BMMyaCHuiMQlE82YihStfo8uJABnB9tNqVvLXUxEwUx5qsqitLcF3NIynbt15SH6Q7t5LHzMH/1ajGP5zTlG3GGqYGF97aDxjeWI3x3ge3HdZ6rXNp7rzz8kD8Jgb1d13c8W+ZprEwf4Hk/aQpd3kvL1WPD7WhJZH+IPygbnMFO3/9m0GUuHR/KtGNXjE9c+tqFydNKcZa8sEtRpRwWu2y+x+wvktcs0pvFfyCehHw8Vpgwlv2gQMKQiJbwmQWuhecaan5IOzS4p58imE0rBemqJF3EPhRPC/W2m4z73+lBKE7pt2sA+NoeCjZpNohkv78o/wkerFv6II1f5NwLlxu3YvAi4mnJ256Xmpaiulyxib3LGumhgW2iYbiXSDrXZxdaZ5NZrsT4N8pq6+WuYQOMkXzXiGdJnxbOOHNMxuk3Vqx2osInLtZx98JRw8HRp5fjOdn3ZWQH/MstLLAYQXd+FwDwVzjirWQ4dIrWDRLl6dMrfDxjqH+MA9BkumFyDp1uw8vSAkrbv4yzq4Qmvbdw3sff/YK0SFFtj0594GeQWIBlLwO+plq7qws4pyCCJ7XsH2GOl vSxjQUy8 JiNY5y+dGScNm5h1kpOxWzm34FWzu7h/b0+Gm5eMNkwqyR+i6HX2ojsnbGGNV1712Nk4VJR8NY0uFKHmSxr0/2E5w7SXDWGUX3zFxdhEb3BW+O0xjdCpBEoisnllhmCWv63vnVQN2zjBCi8TvJO9tYsNxGjPv26BSU/PMwNmLW29MvASmaczLHBmReMLGx+H9Px6TCfmZDJJGyDwL3RXk6cpxz/+yjHbBnsVa3KNNULD5gqEsUq+8sVOcyvVzCnXY+LwdoVUpYsKFJHyP/e7ZG9OtA2e/eiBT052SsHttisp6Wy6OmR1UCD+U0Sr45JkpXQ6E8Ej7ZGJViHZwbKn8zF495LtydpEbZiDb2MAIwBIfW8n+HBZ6zVFhcPqySznXh4Or4F7opAbIpFDRu/n137V97lCbA2cV0EriDnf2ltj36QrDiY5fjHbYI40Jc6SmhV8YbbVWg7arTM2xoxi3oGfG2oiFaIXYOMcc6Eq2SaVeqjaD1xxGjRjjEw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Now that we're not scatter list bound, just use the device limits. The blk integrity stuff needs to be converted to the new dma API first, so to enable large IO experimentation just remove it for now. The iod pools are not used anymore so just nuke them. Signed-off-by: Luis Chamberlain --- drivers/nvme/host/pci.c | 164 +--------------------------------------- 1 file changed, 3 insertions(+), 161 deletions(-) diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 1ca9ab2b8ec5..27b830072c14 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -40,8 +40,6 @@ * require an sg allocation that needs more than a page of data. */ #define NVME_MAX_KB_SZ 8192 -#define NVME_MAX_SEGS 128 -#define NVME_MAX_META_SEGS 15 #define NVME_MAX_NR_DESCRIPTORS 5 #define NVME_SMALL_DESCRIPTOR_SIZE 256 @@ -143,9 +141,6 @@ struct nvme_dev { bool hmb; struct sg_table *hmb_sgt; - mempool_t *iod_mempool; - mempool_t *iod_meta_mempool; - /* shadow doorbell buffer support: */ __le32 *dbbuf_dbs; dma_addr_t dbbuf_dbs_dma_addr; @@ -788,14 +783,6 @@ static void nvme_pci_sgl_set_data(struct nvme_sgl_desc *sge, sge->type = NVME_SGL_FMT_DATA_DESC << 4; } -static void nvme_pci_sgl_set_data_legacy(struct nvme_sgl_desc *sge, - struct scatterlist *sg) -{ - sge->addr = cpu_to_le64(sg_dma_address(sg)); - sge->length = cpu_to_le32(sg_dma_len(sg)); - sge->type = NVME_SGL_FMT_DATA_DESC << 4; -} - static void nvme_pci_sgl_set_seg(struct nvme_sgl_desc *sge, dma_addr_t dma_addr, int entries) { @@ -859,84 +846,6 @@ static blk_status_t nvme_map_data(struct nvme_dev *dev, struct request *req, return nvme_pci_setup_prps(dev, req, &cmnd->rw); } -static blk_status_t nvme_pci_setup_meta_sgls(struct nvme_dev *dev, - struct request *req) -{ - struct nvme_iod *iod = blk_mq_rq_to_pdu(req); - struct nvme_rw_command *cmnd = &iod->cmd.rw; - struct nvme_sgl_desc *sg_list; - struct scatterlist *sgl, *sg; - unsigned int entries; - dma_addr_t sgl_dma; - int rc, i; - - iod->meta_sgt.sgl = mempool_alloc(dev->iod_meta_mempool, GFP_ATOMIC); - if (!iod->meta_sgt.sgl) - return BLK_STS_RESOURCE; - - sg_init_table(iod->meta_sgt.sgl, req->nr_integrity_segments); - iod->meta_sgt.orig_nents = blk_rq_map_integrity_sg(req, - iod->meta_sgt.sgl); - if (!iod->meta_sgt.orig_nents) - goto out_free_sg; - - rc = dma_map_sgtable(dev->dev, &iod->meta_sgt, rq_dma_dir(req), - DMA_ATTR_NO_WARN); - if (rc) - goto out_free_sg; - - sg_list = dma_pool_alloc(dev->prp_small_pool, GFP_ATOMIC, &sgl_dma); - if (!sg_list) - goto out_unmap_sg; - - entries = iod->meta_sgt.nents; - iod->meta_descriptors[0] = sg_list; - iod->meta_dma = sgl_dma; - - cmnd->flags = NVME_CMD_SGL_METASEG; - cmnd->metadata = cpu_to_le64(sgl_dma); - - sgl = iod->meta_sgt.sgl; - if (entries == 1) { - nvme_pci_sgl_set_data_legacy(sg_list, sgl); - return BLK_STS_OK; - } - - sgl_dma += sizeof(*sg_list); - nvme_pci_sgl_set_seg(sg_list, sgl_dma, entries); - for_each_sg(sgl, sg, entries, i) - nvme_pci_sgl_set_data_legacy(&sg_list[i + 1], sg); - - return BLK_STS_OK; - -out_unmap_sg: - dma_unmap_sgtable(dev->dev, &iod->meta_sgt, rq_dma_dir(req), 0); -out_free_sg: - mempool_free(iod->meta_sgt.sgl, dev->iod_meta_mempool); - return BLK_STS_RESOURCE; -} - -static blk_status_t nvme_pci_setup_meta_mptr(struct nvme_dev *dev, - struct request *req) -{ - struct nvme_iod *iod = blk_mq_rq_to_pdu(req); - struct bio_vec bv = rq_integrity_vec(req); - struct nvme_command *cmnd = &iod->cmd; - - iod->meta_dma = dma_map_bvec(dev->dev, &bv, rq_dma_dir(req), 0); - if (dma_mapping_error(dev->dev, iod->meta_dma)) - return BLK_STS_IOERR; - cmnd->rw.metadata = cpu_to_le64(iod->meta_dma); - return BLK_STS_OK; -} - -static blk_status_t nvme_map_metadata(struct nvme_dev *dev, struct request *req) -{ - if (nvme_pci_metadata_use_sgls(dev, req)) - return nvme_pci_setup_meta_sgls(dev, req); - return nvme_pci_setup_meta_mptr(dev, req); -} - static blk_status_t nvme_prep_rq(struct nvme_dev *dev, struct request *req) { struct nvme_iod *iod = blk_mq_rq_to_pdu(req); @@ -958,17 +867,8 @@ static blk_status_t nvme_prep_rq(struct nvme_dev *dev, struct request *req) goto out_free_cmd; } - if (blk_integrity_rq(req)) { - ret = nvme_map_metadata(dev, req); - if (ret) - goto out_unmap_data; - } - nvme_start_request(req); return BLK_STS_OK; -out_unmap_data: - if (blk_rq_nr_phys_segments(req)) - nvme_unmap_data(dev, req); out_free_cmd: nvme_cleanup_cmd(req); return ret; @@ -1057,32 +957,11 @@ static void nvme_queue_rqs(struct rq_list *rqlist) *rqlist = requeue_list; } -static __always_inline void nvme_unmap_metadata(struct nvme_dev *dev, - struct request *req) -{ - struct nvme_iod *iod = blk_mq_rq_to_pdu(req); - - if (!iod->meta_sgt.nents) { - dma_unmap_page(dev->dev, iod->meta_dma, - rq_integrity_vec(req).bv_len, - rq_dma_dir(req)); - return; - } - - dma_pool_free(dev->prp_small_pool, iod->meta_descriptors[0], - iod->meta_dma); - dma_unmap_sgtable(dev->dev, &iod->meta_sgt, rq_dma_dir(req), 0); - mempool_free(iod->meta_sgt.sgl, dev->iod_meta_mempool); -} - static __always_inline void nvme_pci_unmap_rq(struct request *req) { struct nvme_queue *nvmeq = req->mq_hctx->driver_data; struct nvme_dev *dev = nvmeq->dev; - if (blk_integrity_rq(req)) - nvme_unmap_metadata(dev, req); - if (blk_rq_nr_phys_segments(req)) nvme_unmap_data(dev, req); } @@ -2874,31 +2753,6 @@ static void nvme_release_prp_pools(struct nvme_dev *dev) dma_pool_destroy(dev->prp_small_pool); } -static int nvme_pci_alloc_iod_mempool(struct nvme_dev *dev) -{ - size_t meta_size = sizeof(struct scatterlist) * (NVME_MAX_META_SEGS + 1); - size_t alloc_size = sizeof(struct scatterlist) * NVME_MAX_SEGS; - - dev->iod_mempool = mempool_create_node(1, - mempool_kmalloc, mempool_kfree, - (void *)alloc_size, GFP_KERNEL, - dev_to_node(dev->dev)); - if (!dev->iod_mempool) - return -ENOMEM; - - dev->iod_meta_mempool = mempool_create_node(1, - mempool_kmalloc, mempool_kfree, - (void *)meta_size, GFP_KERNEL, - dev_to_node(dev->dev)); - if (!dev->iod_meta_mempool) - goto free; - - return 0; -free: - mempool_destroy(dev->iod_mempool); - return -ENOMEM; -} - static void nvme_free_tagset(struct nvme_dev *dev) { if (dev->tagset.tags) @@ -2962,7 +2816,7 @@ static void nvme_reset_work(struct work_struct *work) goto out; if (nvme_ctrl_meta_sgl_supported(&dev->ctrl)) - dev->ctrl.max_integrity_segments = NVME_MAX_META_SEGS; + dev->ctrl.max_integrity_segments = 0; else dev->ctrl.max_integrity_segments = 1; @@ -3234,7 +3088,6 @@ static struct nvme_dev *nvme_pci_alloc_dev(struct pci_dev *pdev, */ dev->ctrl.max_hw_sectors = min_t(u32, NVME_MAX_KB_SZ << 1, dma_opt_mapping_size(&pdev->dev) >> 9); - dev->ctrl.max_segments = NVME_MAX_SEGS; dev->ctrl.max_integrity_segments = 1; return dev; @@ -3267,15 +3120,11 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id) if (result) goto out_dev_unmap; - result = nvme_pci_alloc_iod_mempool(dev); - if (result) - goto out_release_prp_pools; - dev_info(dev->ctrl.device, "pci function %s\n", dev_name(&pdev->dev)); result = nvme_pci_enable(dev); if (result) - goto out_release_iod_mempool; + goto out_release_prp_pools; result = nvme_alloc_admin_tag_set(&dev->ctrl, &dev->admin_tagset, &nvme_mq_admin_ops, sizeof(struct nvme_iod)); @@ -3298,7 +3147,7 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id) goto out_disable; if (nvme_ctrl_meta_sgl_supported(&dev->ctrl)) - dev->ctrl.max_integrity_segments = NVME_MAX_META_SEGS; + dev->ctrl.max_integrity_segments = 0; else dev->ctrl.max_integrity_segments = 1; @@ -3342,9 +3191,6 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id) nvme_dev_remove_admin(dev); nvme_dbbuf_dma_free(dev); nvme_free_queues(dev, 0); -out_release_iod_mempool: - mempool_destroy(dev->iod_mempool); - mempool_destroy(dev->iod_meta_mempool); out_release_prp_pools: nvme_release_prp_pools(dev); out_dev_unmap: @@ -3409,8 +3255,6 @@ static void nvme_remove(struct pci_dev *pdev) nvme_dev_remove_admin(dev); nvme_dbbuf_dma_free(dev); nvme_free_queues(dev, 0); - mempool_destroy(dev->iod_mempool); - mempool_destroy(dev->iod_meta_mempool); nvme_release_prp_pools(dev); nvme_dev_unmap(dev); nvme_uninit_ctrl(&dev->ctrl); @@ -3804,8 +3648,6 @@ static int __init nvme_init(void) BUILD_BUG_ON(sizeof(struct nvme_create_sq) != 64); BUILD_BUG_ON(sizeof(struct nvme_delete_queue) != 64); BUILD_BUG_ON(IRQ_AFFINITY_MAX_SETS < 2); - BUILD_BUG_ON(NVME_MAX_SEGS > SGES_PER_PAGE); - BUILD_BUG_ON(sizeof(struct scatterlist) * NVME_MAX_SEGS > PAGE_SIZE); BUILD_BUG_ON(nvme_pci_npages_prp() > NVME_MAX_NR_DESCRIPTORS); return pci_register_driver(&nvme_driver); From patchwork Thu Mar 20 11:13:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 14023861 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D096FC28B30 for ; Thu, 20 Mar 2025 12:04:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 16D96280002; Thu, 20 Mar 2025 08:04:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 11D20280001; Thu, 20 Mar 2025 08:04:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F25FD280002; Thu, 20 Mar 2025 08:04:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id D5DA9280001 for ; Thu, 20 Mar 2025 08:04:03 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 98C121A13B5 for ; Thu, 20 Mar 2025 12:04:04 +0000 (UTC) X-FDA: 83241796008.16.B369F68 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf03.hostedemail.com (Postfix) with ESMTP id CE69D2001C for ; Thu, 20 Mar 2025 12:04:02 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=k1i6JkBH; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf03.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742472243; a=rsa-sha256; cv=none; b=UOdbLTXghPqBng397qbl1VSPNm84XncEOv1t1rHhvNUn8jD1RdOgxYaVj63OKzX3/48AIf Hy5JA2R1UMy8DblQORej+N3sEBnbhtdbKvBNtEG2miYDmVXXlmG6G3VdwATvLRnnkREhr7 Kkxumu4YN8PzHWe23NpalCdYITQuz7A= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=k1i6JkBH; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf03.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742472243; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=gs4mQgpvMaKPx1XMegy2dt340WQwRma2LYoA2+CbDAc=; b=jI0D7mZcrX0XdxiucPfljHDuv3YJEonhGa4oW+2O3PigteNbRG6T90cEqufjNh2oPtHUIk oyGDl7EMRUPIl84BjWG2uK3QhEKlHlLKWqXgBG7Iq9PwHmbAkmEd0xOW5DVVtYby9ldG6I v4v4pNwF+H8zQxI4LE450tBSv34MFgs= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=gs4mQgpvMaKPx1XMegy2dt340WQwRma2LYoA2+CbDAc=; b=k1i6JkBHSHT0fr3QGyBpbdKsKs qwtzxHS2sxeO/5RW2t/2epVt9HQlqit7a1xKKEr6Ekf/btQ9vTKoA0rCyc0w8E6PSbY0VZ3Gt0Gzx FWphpz71JxF3i0wY6vjNTs4+Y1NTDvvsCNmGFfVDDaAPxPfc7G/Yx4n09nQu8tCz5zNhMODlArXcS hFAVGvl521m/au46cLJvAKxQwm5pfoFd591QFVEMXYhBWmuD1xCarxZDjVOVdARnWnKCEiVjBb0LL hFg5owWxQH9jv1x8Lc/M48kTqeVHRznRau24Jro+rjaqhzXaBHEWDGL/fPmwRIFl3HoEPffitH5A9 oyrGnhWQ==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tvDqB-0000000BvGP-1BwN; Thu, 20 Mar 2025 11:13:35 +0000 From: Luis Chamberlain To: leon@kernel.org, hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@kernel.dk, joro@8bytes.org, brauner@kernel.org, hare@suse.de, willy@infradead.org, david@fromorbit.com, djwong@kernel.org Cc: john.g.garry@oracle.com, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-mm@kvack.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [RFC 4/4] nvme-pci: add quirk for qemu with bogus NOWS Date: Thu, 20 Mar 2025 04:13:28 -0700 Message-ID: <20250320111328.2841690-5-mcgrof@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250320111328.2841690-1-mcgrof@kernel.org> References: <20250320111328.2841690-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: CE69D2001C X-Rspam-User: X-Stat-Signature: kr9p1d1jsxyqhbwkeieqeskkaafpwf8w X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam: Yes X-HE-Tag: 1742472242-73455 X-HE-Meta: U2FsdGVkX193ztXMX9LPF056/qML8q/DXn6qpL53QGS+bAEgILNRNMNfauUygHRGCJzUAnmaKHm1bQx4LpwxuY3wn+UW/XW5SFryynvq6c+rJyBQMrDVZVJxNufUdfXnfn4s1aNLZtdCELCw7EK3uVXg8ssu5SMihXJfnv3teXzQU+hzJW5X3cPY6zLKFm4VPsXhiswrQ0Or0Kait7TEowk6aqrIU1bg6izmoV6ZbKOJ/jAh7ma9S1d4YETwNLspY+pwFZszyCAj85QDOSH72zQUr/gTYoSjieHyAfjqoluPb82KMfvip8w96f+3Wfo2rDkttnySIrIOJqtuDZCVfLpIPhql+76x9ZxIsK+Xha6+p1Ikb5tIjX52JlTvZAPN87MK2HZKcXlw7u7psj7J6h+8xUy/rWNm3tkTmG9SMHJTWCPnBN7YSgEEImdUx5+2uE92XyOnmbbkCxNsZLIvfft8wTM/8liTm5t082YTNevqj3YfZ8V/uQcAKSjWVDLmYR8KUdylBb5+3KZUMAPTtJDBXZI4hXQmsXTUVfr3bj9TrQfNzY2//Q+RDPFl4NNs076nviDOXxbYuNVBlfBYl1n+oCWrWCIPl4kzLO0RfIE6z+vGC8kR+jBwCWwEigI4P/UgHSLBBoo/j4d2JqawY/QjLG/+IZag0DvfdCcJgGcatMMVHtDE1U2votPh5PXM+j+p78t4dX59ceCnQAmVX9hLlB/2issIcU/h6kMrR1GCiMkpQ7UTt+Ai3GPkJeVmm3Gv8Y1MrlAiGfSpTqusUeu0Afdkx2z+NJKg6I4+fsOwX0TLHSCs5MgKRnWLr1rC7f0H2414sLMQeeUlKHwRrLe/t0fRdj/nEfXItu428Gsr/kmjEnWnAEl5I/6KFAB9spVdjGWrH051jqE49kgBSGgeChwdMmEstrnyZn5RGYbidPpPRrqMG3IjN07QPCJ5qHNyFRShUImyWcYWzH0 44QcKw13 rBiVF8uRi8Vgl4UThcnGxA2SbNgkqbWOIz8hjGAaabfaIPanpXZUuLw/hTQud+MOMtS4PTqL5SUYk6ZJuzm67ucySKbQeYg6pCvNRNMF+R4S1oFQDzb2ijYc2jmLwLbRZallzS+jtsm5axK4XVea+ZRRJswbUuvoV0dS6I5Nnu3CJ4QmFUUEAywuyAB0dOUJJBC/n2V6WBywgd3pj6jap/ume2CUD5Eg8vaRQ X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: The NOWS value for qemu is bogus but that means we need to be mucking with userspace when testing large IO, so just add a quirk to use sensible max limits, in this case just use MDTS as these drives are virtualized. Signed-off-by: Luis Chamberlain --- drivers/nvme/host/core.c | 2 ++ drivers/nvme/host/nvme.h | 5 +++++ drivers/nvme/host/pci.c | 3 ++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index f028913e2e62..8f516de16281 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -2070,6 +2070,8 @@ static bool nvme_update_disk_info(struct nvme_ns *ns, struct nvme_id_ns *id, /* NOWS = Namespace Optimal Write Size */ if (id->nows) io_opt = bs * (1 + le16_to_cpu(id->nows)); + else if (ns->ctrl->quirks & NVME_QUIRK_BOGUS_NOWS) + io_opt = lim->max_hw_sectors << SECTOR_SHIFT; } /* diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h index 7be92d07430e..c63a804db462 100644 --- a/drivers/nvme/host/nvme.h +++ b/drivers/nvme/host/nvme.h @@ -178,6 +178,11 @@ enum nvme_quirks { * Align dma pool segment size to 512 bytes */ NVME_QUIRK_DMAPOOL_ALIGN_512 = (1 << 22), + + /* + * Reports a NOWS of 0 which is 1 logical block size which is bogus + */ + NVME_QUIRK_BOGUS_NOWS = (1 << 23), }; /* diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 27b830072c14..577d8f909139 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -3469,7 +3469,8 @@ static const struct pci_device_id nvme_id_table[] = { NVME_QUIRK_DISABLE_WRITE_ZEROES | NVME_QUIRK_BOGUS_NID, }, { PCI_VDEVICE(REDHAT, 0x0010), /* Qemu emulated controller */ - .driver_data = NVME_QUIRK_BOGUS_NID, }, + .driver_data = NVME_QUIRK_BOGUS_NID | + NVME_QUIRK_BOGUS_NOWS, }, { PCI_DEVICE(0x1217, 0x8760), /* O2 Micro 64GB Steam Deck */ .driver_data = NVME_QUIRK_DMAPOOL_ALIGN_512, }, { PCI_DEVICE(0x126f, 0x2262), /* Silicon Motion generic */