From nobody Sat Nov 15 08:45:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=meta.com ARC-Seal: i=1; a=rsa-sha256; t=1754059204; cv=none; d=zohomail.com; s=zohoarc; b=PnZTjANwfvEMERC+ElxrGKmpo/VQeGbiySWrlAJOGcGjXWlJCxxdhM6JTLH/Dz1u20dY2WKe0PBCtP5QJbBtYegplJbC9uomT3EN1uWsdjZxMlr+KyyIlwenlG5ENXQ+gId6gEoODbzVAP465ycleL/JW2H5w49zIVCZA2B3y74= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754059204; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3K1rEKbK4jOcJhrePDPVRMUiu8CTHWSOt03oR9yd6jQ=; b=m2nWLT7xARZ/XguCE1grC6gLfnezPOBUeSPfBEn9I9OHVnK5NKG6EhDXuYM/kfmUm2+2lPv3cba0c6EubFQDvwsIFd4GXsNmJZGI3YNoxjP0EhOaWwwyw/HtMCIbeCBskTm21zZU2Z3RV9d8vSsTpYtGJKp6gn1PN5fIMAZPXuQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1754059204837900.9489814034855; Fri, 1 Aug 2025 07:40:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhqnb-0007Qh-Lu; Fri, 01 Aug 2025 10:31:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhqhO-0005RO-HN for qemu-devel@nongnu.org; Fri, 01 Aug 2025 10:25:32 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhqhK-0002es-0l for qemu-devel@nongnu.org; Fri, 01 Aug 2025 10:25:29 -0400 Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 571E5Fjf015646 for ; Fri, 1 Aug 2025 07:25:15 -0700 Received: from mail.thefacebook.com ([163.114.134.16]) by mx0a-00082601.pphosted.com (PPS) with ESMTPS id 488rk2j4u5-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 01 Aug 2025 07:25:15 -0700 (PDT) Received: from twshared52133.15.frc2.facebook.com (2620:10d:c085:208::7cb7) by mail.thefacebook.com (2620:10d:c08b:78::c78f) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Fri, 1 Aug 2025 14:25:14 +0000 Received: by devbig197.nha3.facebook.com (Postfix, from userid 544533) id EDF3C2D1491; Fri, 1 Aug 2025 07:24:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=cc :content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=s2048-2025-q2; bh=3K1rEKbK4jOcJhrePD PVRMUiu8CTHWSOt03oR9yd6jQ=; b=azeUtV0souXp0U/YoPdoGvaMiUDHDgTFfH 8G7QbvPb0tKeDh1hX/ASC3fajOAd9vMDqJjWcYTEMNjyqLByFxnWiFresquMucV0 qcexATT7QcLJ4SmV9zVsLYKpZYqkTTBPDKuIldkhAvnYT9lv69d0Cobd/pL7LPwq bvB8byfLe9oP73SpoRzyM4bzroBooNkWc+tf3BAYVjCBYkedEX3Q4t9RrM9AO6gB d+Tsp1SgcL8nCnYvb9taME+NmT1GsyhW9uUM34URS7TFyi7VKj8bwVv26FaGkkdB pmsfc09gAeByBqnjXcqPVq566NSWp9nffgtDjYAoZCHU2dkc1usQ== From: Keith Busch To: , , CC: Keith Busch Subject: [PATCH] hw/nvme: cap MDTS value for internal limitation Date: Fri, 1 Aug 2025 07:24:57 -0700 Message-ID: <20250801142457.3012213-1-kbusch@meta.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-FB-Internal: Safe X-Authority-Analysis: v=2.4 cv=cfLSrmDM c=1 sm=1 tr=0 ts=688cce4b cx=c_pps a=CB4LiSf2rd0gKozIdrpkBw==:117 a=CB4LiSf2rd0gKozIdrpkBw==:17 a=2OwXVqhp2XgA:10 a=VwQbUJbxAAAA:8 a=byK5x53OG_9qB8zXzpQA:9 X-Proofpoint-ORIG-GUID: ZnkIsau4PpdldGX9lOTYZJNBEBp9D1eQ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODAxMDEwOSBTYWx0ZWRfX4vm3ECwM92oe fYteg48qcrqcHoyX/215TqClJ3VlUcmrmYBbv+FQtqPpjqBhU65uwa9N42YrRyxqZaDh+GQBmf0 xR1/Qj9y2jiZOpCosCgXNHUCu7FgVkvx+UK/otZKLF0q5o8ylcU5paxInhnvZz9DrvBFEs6o0SA 1uV23f9MAg4exURxmPpaj3CzPVdaOL1w/manCdUiRSW8eTyOJFeIQcsZ6gjwb6dFSMk5wD4SJWo WKgUh063P0R4DbdXHZiw+VtIU8XX5a8BE7U4lcE5W60Iv6fU2dLfQu+iL+BGr170MqrGeSBWAWT uQWXLNUhjjMZcIVywMj1G2CWPmPwk3NlMTc8T0MUy3cvse38W1cMAkDHsHgFBJdmBlKmy9c1mdc DbGhaYp8oP4/TbaIgQzzgMU25ZmnWonZrEftzRgJx7BkOoqw5nrq6KJr75ZXZcrDQoYYJmzm X-Proofpoint-GUID: ZnkIsau4PpdldGX9lOTYZJNBEBp9D1eQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-01_04,2025-08-01_01,2025-03-28_01 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=67.231.145.42; envelope-from=prvs=4308a69be5=kbusch@meta.com; helo=mx0a-00082601.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @meta.com) X-ZM-MESSAGEID: 1754059207959124100 Content-Type: text/plain; charset="utf-8" From: Keith Busch The emulated device had let the user set whatever max transfers size they wanted, including no limit. However the device does have an internal limit of 1024 segments. NVMe doesn't report max segments, though. This is implicitly inferred based on the MDTS and MPSMIN values. IOV_MAX is currently 1024 which 4k PRPs can exceed with 2MB transfers. Don't allow MDTS values that can exceed this, otherwise users risk seeing "internal error" status to their otherwise protocol compliant commands. Signed-off-by: Keith Busch --- hw/nvme/ctrl.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index e764ec7683..5bfb773b5a 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -8335,6 +8335,11 @@ static bool nvme_check_params(NvmeCtrl *n, Error **e= rrp) host_memory_backend_set_mapped(n->pmr.dev, true); } =20 + if (!n->params.mdts || ((1 << n->params.mdts) + 1) > IOV_MAX) { + error_setg(errp, "mdts exceeds IOV_MAX"); + return false; + } + if (n->params.zasl > n->params.mdts) { error_setg(errp, "zoned.zasl (Zone Append Size Limit) must be less= " "than or equal to mdts (Maximum Data Transfer Size)"); --=20 2.47.3