From patchwork Thu Jan 5 16:05:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liam R. Howlett" X-Patchwork-Id: 13090123 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 4AF00C3DA7A for ; Thu, 5 Jan 2023 16:06:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9EB818E0003; Thu, 5 Jan 2023 11:06:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 99B818E0001; Thu, 5 Jan 2023 11:06:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7C6BC8E0003; Thu, 5 Jan 2023 11:06:02 -0500 (EST) 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 668468E0001 for ; Thu, 5 Jan 2023 11:06:02 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 26D591C641F for ; Thu, 5 Jan 2023 16:06:02 +0000 (UTC) X-FDA: 80321221764.24.5721433 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf30.hostedemail.com (Postfix) with ESMTP id 1AB1980026 for ; Thu, 5 Jan 2023 16:05:56 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=hrSwSuJL; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=jzhii8yu; spf=pass (imf30.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1672934757; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=jf2uzyQ1jJ2FkS8pnNO0zC2YrHsdKmkV9ZY4OKhMHnY=; b=2qPsI0S6Bb4aHVakPeGsv5BSy5Bj6VasquLGdaCStg19tmVN6vZ9YfkESmIeJM91ruXXfj EcODVjcMFQ//2hc99kuOyZ/my1ZponJb2S9Ysy0qPKqZfbDuebRUWzNoEQstEZexqrlq24 xhVpowdK3+rPgWZccfFlG6LfF54+QQs= ARC-Authentication-Results: i=2; imf30.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=hrSwSuJL; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=jzhii8yu; spf=pass (imf30.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1672934757; a=rsa-sha256; cv=pass; b=WJKJ1RGpgN07A48A90K34ZcSHToMneWlCpBVzYLkLer/9cSHufYrXKqk2nu1Yh5Y72Uqdn 1tKMVP2g5mjeFn7lQs1I+3t6MOyP2C8b9ldiVUHX9+PpkKKqhh+JV6pN0GL29umDZQn/7K sH82hplkE5lKbAjGcOQWrml3r5cVPVI= Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 305E3krZ015836; Thu, 5 Jan 2023 16:05:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : content-type : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=jf2uzyQ1jJ2FkS8pnNO0zC2YrHsdKmkV9ZY4OKhMHnY=; b=hrSwSuJLpbL4psuiG5VCjqnlVG6N3VyZA+p9zYxO2vien/prYDHjdSG7i0DmI3NchmDi DxmnKKj0vFXYUvFxw/f1mN4CfI4mdYIcgzZSsbWYL2kR9bKb6Bf9Tbo/iTk1CqZgHsqf DQa+0xX2I593kaUN7wRXNhT4Rs3eS6MnZnhS8rK3n/UZReDRbWz98Oq+nMuXznNRnvSA A44kf3adU42XoAl2BaiClImNBcro9kdXMXtocTK5y65hhzExEZVyVCxEEUkrSu+i+HoA 8BKGValSuriAnc8Mgqy7wjmr5W1+WnPP8v/BmfAg+0zD07cR/5Dk0Gota5UJBmrhpJGv 5g== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mtbgqs6nr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 05 Jan 2023 16:05:38 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 305EPLAe040358; Thu, 5 Jan 2023 16:05:37 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2108.outbound.protection.outlook.com [104.47.58.108]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3mwevjpra7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 05 Jan 2023 16:05:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k+uX0RdHJV12Ejf8mm9+AYgb8cUKzaCV36xEtTApeeECctr53tR15uN+Njn0o79lQY/8GOXqqlXkExcoPTIouXTfB1X7tyR3vFIbCG0sDvwCeNxXHN3ejmoJNr9V6IKwc/kDfx56rqtbrNMNV6vjhd3EODuFZC9o3+NQNjf+olEMS3EgLzSidM1s8kq7b0b4xB7jW9MTSersfe07MJpIIbmlQTqoufrJrOW2wM9bJP613XeniJyo+T4TDP1C1D9TWYsSThgF9mXsVhkzP8EH79Wz9WM7Ta0hH7Hf0rSd4/3wRX/4UZXWTDdzkUHFoIM3FfdxLGeLkJqvrNkBUAgePA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jf2uzyQ1jJ2FkS8pnNO0zC2YrHsdKmkV9ZY4OKhMHnY=; b=Uu3BZiG5jUaoG+lLQ7BYD4vhWVVFZop0/0xKvqwJuahqlJcHk4151yD4EIISfWfqXpB1zDQvk6yvwyqL8CdUKGax5K1FE9ZXioidsCGCRWoFLRNPYqsp+/AajYiw1keEv93hYst2u3OcE2d5vblUVj3HQyentae1zFMnqbtXFsNWxx9jueftZy1waOAqnbdpbkRqVxkRfn5nUj5fQmVwEzKtOc2r9iieyfdlrAIgPEtvJ4kNXbhPF4t9F3KyS26OWifLPfSHAiNFTNvyd7Fc2fs9o5CNMDicgjvA5NRBw71LXaRXFtUXWmuFGzANbVSFyH5PQ4Ks2TI8O3+35LxskQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jf2uzyQ1jJ2FkS8pnNO0zC2YrHsdKmkV9ZY4OKhMHnY=; b=jzhii8yulm5fc4oDU/hHFDpAcJ24BFqIxY4fabjRR3zr0F4AOh0O0hK+ry+6nV5AjFVT50XCN6VFPKV/jBes/0NwG72H84110NyxufX6unyZ/P6WMuPfYNxxREgAu8a9oNVzd81NYefPWBlaUvHj4LM7/tr3rOrRMrb6xC96v6E= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by SA1PR10MB6566.namprd10.prod.outlook.com (2603:10b6:806:2bf::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 16:05:35 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::a02:2ac8:ee3e:682]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::a02:2ac8:ee3e:682%4]) with mapi id 15.20.5944.019; Thu, 5 Jan 2023 16:05:35 +0000 From: Liam Howlett To: "maple-tree@lists.infradead.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , Andrew Morton CC: Liam Howlett , Jirka Hladky , Matthew Wilcox Subject: [PATCH] maple_tree: Remove GFP_ZERO from kmem_cache_alloc() and kmem_cache_alloc_bulk() Thread-Topic: [PATCH] maple_tree: Remove GFP_ZERO from kmem_cache_alloc() and kmem_cache_alloc_bulk() Thread-Index: AQHZIR+LoHdY1LXO4kqyIytgW9FJPw== Date: Thu, 5 Jan 2023 16:05:34 +0000 Message-ID: <20230105160427.2988454-1-Liam.Howlett@oracle.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.35.1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR10MB3022:EE_|SA1PR10MB6566:EE_ x-ms-office365-filtering-correlation-id: c1497f28-271a-4395-f2ac-08daef36ade6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 09sBCPO67BBbPeUMusWzKAllq2WlT6BDfJx/9JYAqSF4140ErM2xFjmiMvCye0s5t4A8gYiViajzeh8IJfZ/AvYhPYrLK0RRVend70FVuX06nXHTupIDdAZJnVDv6EKQhG+ZY3CEqKra3r5Ms7uWtHg6YHQ79yldkssf3NDlK9EgZXMv+dURrm2zefr0hEn2R6kePLN7rJbPbAUU5IaGaENvk82J3cCHdcTrHnwEUR+VACunWURlgHpz+Qvpi2q6Z20AMh514K+afT07YQleImEbK4GgqatAdrhUoEKlUj13AYTHs6YD5ctq2nGqaBjMZL2kcg82JKmZU6WB7OXRWir7E25rQSrGyopB2xYiapZ3h6W24hmE91DKFGevzfN3YEoT5sRy6O7A6IbTLxJbAN+nKAZaCIbH/QfLrKbKwj2xlfC6pvKtucYrb2TMSEgawnUCDGkxDmx4rXbuQst+ffwMvhRwoFDuRDytMoITdS7dWXN5qbmFK0PkMlfziI75zT5+GLwlcA5PdfawvbT8VpLAdhheW75+bJmWCtLXzJ8jsNKarp4MRXjoXaCIfIcbgYUyu+cHTJqQeUCA0tH5T0EKPHmgxbWgCoJ18gwU2A6duPqzvRWv9mARtCutso4XYByI4W3vFYCGHnGUvDnFdETdiEDJo7Gv8JWHjkkMtYYQ09LD/QrhQ/S5T1liRL6uXQiiSUI6MiykTuCCSkxGUA7iYLrOogYQbbQq20b7h6Y= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR10MB3022.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(376002)(366004)(136003)(396003)(39860400002)(346002)(451199015)(6512007)(54906003)(122000001)(316002)(71200400001)(186003)(110136005)(26005)(478600001)(66556008)(66476007)(66446008)(76116006)(64756008)(66946007)(1076003)(4326008)(8676002)(966005)(2616005)(6486002)(6506007)(91956017)(41300700001)(5660300002)(8936002)(83380400001)(44832011)(2906002)(38100700002)(36756003)(38070700005)(86362001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?cRfCGy1H+JwM8lWgqyZRdh5?= =?iso-8859-1?q?4kul0GIIQVXRU63DHeY46xon+LEzrf7icZ3c63mig07+LwYLF/0ixG0Lsozc?= =?iso-8859-1?q?FfVOTxTk4anXgMLa4pguQBsL87JPtKp6xzPumaB0UcDr6RuwpnyG4ruUWucB?= =?iso-8859-1?q?gxtc+PBm006awJC+NxT6wUhFnAiG2//xefOKdnBWpJj+rWaITZPCQbU2L528?= =?iso-8859-1?q?hgfRO6uwVJtV+EZCXRwhaqwhtBHbNLZ7SMnVz7YZ+E01k9ZFevNB/1jYejzQ?= =?iso-8859-1?q?d792KCc6JMBRNbH4gc+dcg6AOuNN6yifxOFYFfUBXNvVAu7nrPCptbRHi6Dw?= =?iso-8859-1?q?Up9p6S2eqSGvxGzPaC+3iOzRy113JAYiUfO4VuiymxA4KGRA/df9rlLRiX30?= =?iso-8859-1?q?unK8h0eBuXi3Md58sU+q/JWL/AEJrjKaxUT5DJ4upDg5RaJn8UcHSO7DDP59?= =?iso-8859-1?q?5v9tDH0OPazy1mk/JDhHMX3v5AZAcD27v9oQUEeFeY1KZkzmEZ9g/BGVU0VN?= =?iso-8859-1?q?SCbY9CcGykixgeqxVbD+jSYR6sYrT05IvXOOpWPqeyNaf7Bcwfh16GoZzNPl?= =?iso-8859-1?q?fM0E1QHgJPtgoPiBNXSm7AvM8Ouk3N8eke2t8SaJ7CxBMCfW07ZkzdWBLrx7?= =?iso-8859-1?q?DkszD8zmTOjIEF7NO6pNiN24+Os4IOK37hJ7XT/AjdzDfgZ5dZNF6SOXtTLG?= =?iso-8859-1?q?m3kbOl1WwurfvI6lMggda0KrYjmT61PYHreYmyDUC0EP2TDT401UmaQViLhT?= =?iso-8859-1?q?GVvfNpqmxqFV6Lkx/CDQupG/JcwsosCFvpL/hN/VdOyZt1AgCz1iOvGHjizH?= =?iso-8859-1?q?nll+zcKqwjAlthWChwaPrCuopZuHbxn/uDS1TICrgRKMZqYDhYcgSc07czt0?= =?iso-8859-1?q?mb8K5vZapPeVIH7Xbsh2IFauZ+LcwwDl9NS7S7kGb6btr4fXeOLomtzrboC8?= =?iso-8859-1?q?UFt4fXerF2HHGX+dGjcaOYKTk/4OmgAL3cxYiHG7srICt09iRQghchJz7IvQ?= =?iso-8859-1?q?zn58yAH0J02nyitxquxNoLKSgoehLHvE4uw7ryiP3o7ku80YhEjaeNKeUoti?= =?iso-8859-1?q?gZWT2/2yVQ/uVN3meMW+0A2InSR5ravIwyZm5c95jsA2nG68ofZhubGaRnIA?= =?iso-8859-1?q?jCyNs5ONVp/Nbhv3QjQKTphlu1UrytTyBXwOJWnOg29HgOtfJ/Vp1LOni7T8?= =?iso-8859-1?q?KKcTYQO1aKn/Jh0d5U+fZcuoJSeU/jRz7SQ9BTDNVUn4CvDgeiY/wNCd3aj2?= =?iso-8859-1?q?xs3N0C1ve3DtsbECK0CkTI9lEVf/cinylS3zX+DvZOyCh9bxk5gzeYQnLTgA?= =?iso-8859-1?q?5J+15DGYDHFbn8AOhZ+3LKLMp129OqU6PcIpbaitrtC3o6OgvXdTv55jyyZj?= =?iso-8859-1?q?BjDg4lN64OZPy4m2G69WXRozwqhSwqG+9V7Wfkzp/gzl6CUZnxs6kmaVinps?= =?iso-8859-1?q?EiuWrta8U9Z4wLBNHYZnFJ/vDP2kkLr8XhJoc/nRyQjWKMuNtf2iK/22splZ?= =?iso-8859-1?q?7CtWsFPzvIzlvmiUDch8qj87eYuHVg4s+lSisJEJkswK69h+acwFnV5rdIDM?= =?iso-8859-1?q?D1aqD/383h2sMPajWzv6+4MchoK9XVi7oZo4WlNXhupauDqGjtoQ9HTv7OqA?= =?iso-8859-1?q?EX7onlm45Dkwt3V1XRojU3mdaKmjXjegwDmbuvw=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?iso-8859-1?q?/tp87pGjT4L?= =?iso-8859-1?q?5ZYUV0U4+bowGnLSaBJ2x9e+1dGxRH5f/81hJ8adYGDon8OJRiy8AYGG5dOF?= =?iso-8859-1?q?vuPxCim4gyu0dqCuCyh3kaSR2ecIUQJ+dUo0MYfjH0uW6ChuQL8UKDpVRbMz?= =?iso-8859-1?q?ETA9Jm+3Evyb6izM2EUyerKbV8smjNFxZIOJu+lASMadKtv7eVw/igxSe4SM?= =?iso-8859-1?q?bmQUQL0Igy7EgXry1dveGSOTEdZ7rTaFBqmkejKHzG27QOkrzZOzM96aue/E?= =?iso-8859-1?q?T8K7hzCadWlO4xUnXRQOPYPFE+CJo+6fDyuMxtoWx4aWmAQ+351Ll4OghjTl?= =?iso-8859-1?q?qup4RCOztWAbGKgchLcXRxnRd7zCrROAV/DYR1YjDCXB6YBQYb29lPMK6WA/?= =?iso-8859-1?q?RTdyvnb3WD8ouJ+0Da+yhRiMf/OMKa4xZVfN1lW2DUwBfmKJZXZElfYQ2LYN?= =?iso-8859-1?q?UhlLuO+8/caNYaxFw8GZGUKk2tl46Oj66AgiTOysxsxtgWZJ9YZISQaWBKlL?= =?iso-8859-1?q?xg+gn889bqBcsjug8kAvgV5nkurFCotrqxFV43sDuVqZRn3dbRX1gtXiO9g4?= =?iso-8859-1?q?hH91CfqGzjuclQ9lS73P3Y3aX0mGiLtj2qhZYT1AGyz/ID7Unn4hwbVWIY0S?= =?iso-8859-1?q?Rys8asOpopDcJKz4StYK4NwglyimYpVgysQyCnAnjqsUXRSJ1aJ7F+ftlb+4?= =?iso-8859-1?q?fnpBLMKj2zzfezIqcL7s16vzxNORc1adTCfz8keUNxC5/Wh0BJ9PpEjuNxiX?= =?iso-8859-1?q?hko/68QcKpe4kPJVTZhINptUaPQzGAZha0ie0eGtOsGQdMdq+DkTFTd0nHTV?= =?iso-8859-1?q?WzDZr301KEwyfuvFZ1xmPoVcyt65e+tjGHmXiF+USSuD1LqCFTg2+MBrt/kr?= =?iso-8859-1?q?ocF6dcD2hzPE7/mq2ghm4LjkW1VRB41CmJej74ALavrwxUpWVowF4U2+w2p5?= =?iso-8859-1?q?p46GMYwQBQcIJuEISaEZ4CWSjBun8b88j91rz45CQAt9qF7YjaHSu0HWMb1L?= =?iso-8859-1?q?0llBftrffQg=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1497f28-271a-4395-f2ac-08daef36ade6 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2023 16:05:35.0744 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: E8PBumO96Golfyng0DRUUzJgNNwej76IF3pkcPI6BbKlW7t88yzDynt65tTPyfZ6LHQdpXD9hbZB6zXCne0Mgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6566 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-05_06,2023-01-05_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 phishscore=0 malwarescore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301050126 X-Proofpoint-GUID: yD9OR7Y8ftRPQdh5Q86f4LJ4TGnnMiBT X-Proofpoint-ORIG-GUID: yD9OR7Y8ftRPQdh5Q86f4LJ4TGnnMiBT X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 1AB1980026 X-Stat-Signature: kix3x7j9wqi5k8by5rqth611azx61uyo X-HE-Tag: 1672934756-33997 X-HE-Meta: U2FsdGVkX1/AsytBOra2GNZvobvCiA/HCV3W5TcSK5wD21u7QFOH4GVq/kB1ROGo4ef+dc9tcmXjbFFiC/RoVn/pG+t9Kq51SD0iIZK4v0It0jUx/QicjfyUivWpcDSCtK6DZR/zhKDwlE/T1cTBqUen5Om4/Uog7L3ZN16i6dTkG5taoZQesBNHoMBKnIT4a55TsxtuwL6BPJ/U5rgoGWvCJ5Xulup3zufOdtMhkySfBUmbheriEdLzYrnRrnFfaymgRwvXVXJPNTM+36zukApCZyhLkhMXrS40P06das2chc5K3bFiR2gKdyLLX+cFcNKTiJu/uKUUEqMkdKaM19ovc8nl/PYXyKWDUKFB+lyg78p8T6xLvRu9iSwtqGz3JGOFdn7+UHm8RPhktGXWihb6MGB4Mg4jdBFImPyywANawP2qNy/fk8WuBr4wOyUutqnQdasKvl+c5ifarjDPBTdTSpIez4iMv9KzYWmdSd7NCyQTWi3nS8iH7G93xB4ErY9AXD98C6sPYnuiIF1CS0awIEB9YYEZcSJQKXFg2uAbsZFJLI8KMDF2GCfUcbDokqeoIUiOJXMHwEibtbX2hqaXhFivDp9M4h3VWeyv6LPETS7VpDeaCk2eXjd+Z4Jc9+Je+shDvr/j39zVeagNiSd3Rwc0XtcCmTaJ1/KvVF5jDPFWENjobp/PXCCEqnAIV7wwxbogFB9sP+tznAqsiTmHm1+Wt2xyMwd3Yv4E31Kur0kcTtOQuSSpwxDFqXBJ2gHp9a3FFixj5EASTaqYsXPt1+soVfreLVtpRnjZmqTnISyawKz708mlNcplE8rIiuNC25w0nJmO00ZXGTVwo1bG5XwETeHbICggLg1yoIuKahQ2QqeHq3m283MORlpQFeF+Knj+4rO3jtcIn7oO5fcD/sXEOPpku3Qtb7qKMbhiTWBvlXdcsWFrwHqhDNTEAZ0tpupN4nytblr2Dyk RZW1Wbkw ZIyY3J3I71n5kusCkU+RgxgMZ6E6z3TpEW9peex4IdD+aLzeFM63ComSOs17ARc6KIm6/VX5o18SmsbVWFdTN5BeoYjm3wZ6jfOfekm8FWuS7n79CppMVgGyteX1cPBMJROj2nzZdbZMIe/940gdOBnsasA== 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: Preallocations are common in the VMA code to avoid allocating under certain locking conditions. The preallocations must also cover the worst-case scenario. Removing the GFP_ZERO flag from the kmem_cache_alloc() (and bulk variant) calls will reduce the amount of time spent zeroing memory that may not be used. Only zero out the necessary area to keep track of the allocations in the maple state. Zero the entire node prior to using it in the tree. This required internal changes to node counting on allocation, so the test code is also updated. This restores some micro-benchmark performance: up to +9% in mmtests mmap1 by my testing +10% to +20% in mmap, mmapaddr, mmapmany tests reported by Red Hat Link: https://bugzilla.redhat.com/show_bug.cgi?id=2149636 Reported-by: Jirka Hladky Suggested-by: Matthew Wilcox (Oracle) Signed-off-by: Liam Howlett --- lib/maple_tree.c | 80 +++++++++++++++++--------------- tools/testing/radix-tree/maple.c | 18 +++---- 2 files changed, 52 insertions(+), 46 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 26e2045d3cda..82a8121fe49b 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -149,13 +149,12 @@ struct maple_subtree_state { /* Functions */ static inline struct maple_node *mt_alloc_one(gfp_t gfp) { - return kmem_cache_alloc(maple_node_cache, gfp | __GFP_ZERO); + return kmem_cache_alloc(maple_node_cache, gfp); } static inline int mt_alloc_bulk(gfp_t gfp, size_t size, void **nodes) { - return kmem_cache_alloc_bulk(maple_node_cache, gfp | __GFP_ZERO, size, - nodes); + return kmem_cache_alloc_bulk(maple_node_cache, gfp, size, nodes); } static inline void mt_free_bulk(size_t size, void __rcu **nodes) @@ -1127,9 +1126,10 @@ static inline struct maple_node *mas_pop_node(struct ma_state *mas) { struct maple_alloc *ret, *node = mas->alloc; unsigned long total = mas_allocated(mas); + unsigned int req = mas_alloc_req(mas); /* nothing or a request pending. */ - if (unlikely(!total)) + if (WARN_ON(!total)) return NULL; if (total == 1) { @@ -1139,27 +1139,25 @@ static inline struct maple_node *mas_pop_node(struct ma_state *mas) goto single_node; } - if (!node->node_count) { + if (node->node_count == 1) { /* Single allocation in this node. */ mas->alloc = node->slot[0]; - node->slot[0] = NULL; mas->alloc->total = node->total - 1; ret = node; goto new_head; } - node->total--; - ret = node->slot[node->node_count]; - node->slot[node->node_count--] = NULL; + ret = node->slot[--node->node_count]; + node->slot[node->node_count] = NULL; single_node: new_head: - ret->total = 0; - ret->node_count = 0; - if (ret->request_count) { - mas_set_alloc_req(mas, ret->request_count + 1); - ret->request_count = 0; + if (req) { + req++; + mas_set_alloc_req(mas, req); } + + memset(ret, 0, sizeof(*ret)); return (struct maple_node *)ret; } @@ -1178,21 +1176,20 @@ static inline void mas_push_node(struct ma_state *mas, struct maple_node *used) unsigned long count; unsigned int requested = mas_alloc_req(mas); - memset(reuse, 0, sizeof(*reuse)); count = mas_allocated(mas); - if (count && (head->node_count < MAPLE_ALLOC_SLOTS - 1)) { - if (head->slot[0]) - head->node_count++; - head->slot[head->node_count] = reuse; + reuse->request_count = 0; + reuse->node_count = 0; + if (count && (head->node_count < MAPLE_ALLOC_SLOTS)) { + head->slot[head->node_count++] = reuse; head->total++; goto done; } reuse->total = 1; if ((head) && !((unsigned long)head & 0x1)) { - head->request_count = 0; reuse->slot[0] = head; + reuse->node_count = 1; reuse->total += head->total; } @@ -1211,7 +1208,6 @@ static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp) { struct maple_alloc *node; unsigned long allocated = mas_allocated(mas); - unsigned long success = allocated; unsigned int requested = mas_alloc_req(mas); unsigned int count; void **slots = NULL; @@ -1227,24 +1223,29 @@ static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp) WARN_ON(!allocated); } - if (!allocated || mas->alloc->node_count == MAPLE_ALLOC_SLOTS - 1) { + if (!allocated || mas->alloc->node_count == MAPLE_ALLOC_SLOTS) { node = (struct maple_alloc *)mt_alloc_one(gfp); if (!node) goto nomem_one; - if (allocated) + if (allocated) { node->slot[0] = mas->alloc; + node->node_count = 1; + } else { + node->node_count = 0; + } - success++; mas->alloc = node; + node->total = ++allocated; requested--; } node = mas->alloc; + node->request_count = 0; while (requested) { max_req = MAPLE_ALLOC_SLOTS; - if (node->slot[0]) { - unsigned int offset = node->node_count + 1; + if (node->node_count) { + unsigned int offset = node->node_count; slots = (void **)&node->slot[offset]; max_req -= offset; @@ -1258,15 +1259,13 @@ static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp) goto nomem_bulk; node->node_count += count; - /* zero indexed. */ - if (slots == (void **)&node->slot) - node->node_count--; - - success += count; + allocated += count; node = node->slot[0]; + node->node_count = 0; + node->request_count = 0; requested -= count; } - mas->alloc->total = success; + mas->alloc->total = allocated; return; nomem_bulk: @@ -1275,7 +1274,7 @@ static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp) nomem_one: mas_set_alloc_req(mas, requested); if (mas->alloc && !(((unsigned long)mas->alloc & 0x1))) - mas->alloc->total = success; + mas->alloc->total = allocated; mas_set_err(mas, -ENOMEM); return; @@ -5745,6 +5744,7 @@ int mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp) void mas_destroy(struct ma_state *mas) { struct maple_alloc *node; + unsigned long total; /* * When using mas_for_each() to insert an expected number of elements, @@ -5767,14 +5767,20 @@ void mas_destroy(struct ma_state *mas) } mas->mas_flags &= ~(MA_STATE_BULK|MA_STATE_PREALLOC); - while (mas->alloc && !((unsigned long)mas->alloc & 0x1)) { + total = mas_allocated(mas); + while (total) { node = mas->alloc; mas->alloc = node->slot[0]; - if (node->node_count > 0) - mt_free_bulk(node->node_count, - (void __rcu **)&node->slot[1]); + if (node->node_count > 1) { + size_t count = node->node_count - 1; + + mt_free_bulk(count, (void __rcu **)&node->slot[1]); + total -= count; + } kmem_cache_free(maple_node_cache, node); + total--; } + mas->alloc = NULL; } EXPORT_SYMBOL_GPL(mas_destroy); diff --git a/tools/testing/radix-tree/maple.c b/tools/testing/radix-tree/maple.c index 81fa7ec2e66a..1f36bc1c5d36 100644 --- a/tools/testing/radix-tree/maple.c +++ b/tools/testing/radix-tree/maple.c @@ -173,11 +173,11 @@ static noinline void check_new_node(struct maple_tree *mt) if (!MAPLE_32BIT) { if (i >= 35) - e = i - 35; + e = i - 34; else if (i >= 5) - e = i - 5; + e = i - 4; else if (i >= 2) - e = i - 2; + e = i - 1; } else { if (i >= 4) e = i - 4; @@ -305,17 +305,17 @@ static noinline void check_new_node(struct maple_tree *mt) MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM)); MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1); - MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1); + MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS); mn = mas_pop_node(&mas); /* get the next node. */ MT_BUG_ON(mt, mn == NULL); MT_BUG_ON(mt, not_empty(mn)); MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS); - MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 2); + MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1); mas_push_node(&mas, mn); MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1); - MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1); + MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS); /* Check the limit of pop/push/pop */ mas_node_count(&mas, MAPLE_ALLOC_SLOTS + 2); /* Request */ @@ -323,14 +323,14 @@ static noinline void check_new_node(struct maple_tree *mt) MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM)); MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); MT_BUG_ON(mt, mas_alloc_req(&mas)); - MT_BUG_ON(mt, mas.alloc->node_count); + MT_BUG_ON(mt, mas.alloc->node_count != 1); MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 2); mn = mas_pop_node(&mas); MT_BUG_ON(mt, not_empty(mn)); MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1); - MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1); + MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS); mas_push_node(&mas, mn); - MT_BUG_ON(mt, mas.alloc->node_count); + MT_BUG_ON(mt, mas.alloc->node_count != 1); MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 2); mn = mas_pop_node(&mas); MT_BUG_ON(mt, not_empty(mn));