From mboxrd@z Thu Jan 1 00:00:00 1970 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 74BBAC433F5 for ; Tue, 19 Apr 2022 20:56:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242996AbiDSU7b (ORCPT ); Tue, 19 Apr 2022 16:59:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49550 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344945AbiDSU72 (ORCPT ); Tue, 19 Apr 2022 16:59:28 -0400 Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com [67.231.145.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4CD7341635 for ; Tue, 19 Apr 2022 13:56:44 -0700 (PDT) Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 23JJOC9R012971 for ; Tue, 19 Apr 2022 13:56:44 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=facebook; bh=fPHGeG+neE3I76c0vAUWHgTbfQNQ/CjjhRCrJn38dEY=; b=WA+BWTDXm7zZyDzjRmkY21U2C9Xs0kZ9r9G6jBKfJQdllaNx/kwm/9aTYxNSuUrRy0gi QXNHcqjzqUKjvLMQVSPRxq2t0y2QEXBAG+8l9ts5yITXFl4r0OZy8rvLp44XjMEzUqVO n8RjI3dquuNvz3ttA7gDgKV/C4+7ICem3Kw= Received: from mail.thefacebook.com ([163.114.132.120]) by mx0a-00082601.pphosted.com (PPS) with ESMTPS id 3fj36t0mv4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 19 Apr 2022 13:56:43 -0700 Received: from twshared14141.02.ash7.facebook.com (2620:10d:c085:208::11) by mail.thefacebook.com (2620:10d:c085:11d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 19 Apr 2022 13:56:43 -0700 Received: by devvm225.atn0.facebook.com (Postfix, from userid 425415) id DF76BDD45FDB; Tue, 19 Apr 2022 13:56:35 -0700 (PDT) From: Stefan Roesch To: , CC: Subject: [PATCH v1 00/11] add large CQE support for io-uring Date: Tue, 19 Apr 2022 13:56:13 -0700 Message-ID: <20220419205624.1546079-1-shr@fb.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-FB-Internal: Safe Content-Type: text/plain X-Proofpoint-GUID: gVYrptisVwT4HXakQRvDiOLWBtxEu7gF X-Proofpoint-ORIG-GUID: gVYrptisVwT4HXakQRvDiOLWBtxEu7gF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-04-19_08,2022-04-15_01,2022-02-23_01 Precedence: bulk List-ID: X-Mailing-List: io-uring@vger.kernel.org This adds the large CQE support for io-uring. Large CQE's are 16 bytes lo= nger. To support the longer CQE's the allocation part is changed and when the C= QE is accessed. The allocation of the large CQE's is twice as big, so the allocation size= is doubled. The ring size calculation needs to take this into account. All accesses to the large CQE's need to be shifted by 1 to take the bigge= r size of each CQE into account. The existing index manipulation does not need t= o be changed and can stay the same. The setup and the completion processing needs to take the new fields into account and initialize them. For the completion processing these fields n= eed to be passed through. The flush completion processing needs to fill the additional CQE32 fields= . The code for overflows needs to be adapted accordingly: the allocation ne= eds to take large CQE's into account. This means that the order of the fields in= the io overflow structure needs to be changed and the allocation needs to be enl= arged for big CQE's. In addition the two new fields need to be copied for large CQE's. The new fields are added to the tracing statements, so the extra1 and ext= ra2 fields are exposed in tracing. For testing purposes the extra1 and extra2 fields are used by the nop ope= ration. Testing: The exisiting tests have been run with the following configurations and t= hey all pass: - Default config - Large SQE - Large CQE - Large SQE and large CQE. In addition a new test has been added to liburing to verify that extra1 a= nd extra2 are set as expected for the nop operation. Note: To use this patch also the corresponding changes to the client library liburing are required. A different patch series is sent out for this. This is based of the jens/io_uring-big-sqe branch. Stefan Roesch (11): io_uring: support CQE32 in io_uring_cqe io_uring: wire up inline completion path for CQE32 io_uring: change ring size calculation for CQE32 io_uring: add CQE32 setup processing io_uring: add CQE32 completion processing io_uring: modify io_get_cqe for CQE32 io_uring: flush completions for CQE32 io_uring: overflow processing for CQE32 io_uring: add tracing for additional CQE32 fields io_uring: enable CQE32 io_uring: support CQE32 for nop operation fs/io_uring.c | 209 +++++++++++++++++++++++++++----- include/trace/events/io_uring.h | 18 ++- include/uapi/linux/io_uring.h | 12 ++ 3 files changed, 207 insertions(+), 32 deletions(-) --=20 2.30.2