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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6E7BAC433F5 for ; Fri, 7 Oct 2022 06:54:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E51808E0001; Fri, 7 Oct 2022 02:54:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DDA856B0073; Fri, 7 Oct 2022 02:54:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BDED08E0001; Fri, 7 Oct 2022 02:54:00 -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 A1EDF6B0072 for ; Fri, 7 Oct 2022 02:54:00 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 5F101120FC1 for ; Fri, 7 Oct 2022 06:54:00 +0000 (UTC) X-FDA: 79993238640.09.8B80CDA Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com [67.231.145.42]) by imf08.hostedemail.com (Postfix) with ESMTP id D3E1C16001B for ; Fri, 7 Oct 2022 06:53:59 +0000 (UTC) Received: from pps.filterd (m0109334.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 296NpBkh026941; Thu, 6 Oct 2022 23:53:52 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=facebook; bh=2McJ9JCCSce5EKvpgcjKAiLKa77ko7ouhZmc2wABHng=; b=jIfTu3wTHFrOmWzSFrGC72pZXWzVjG2ilTwhbkO/u2KjQ9eLSjyC5UWpv9EfVrxBcuNo N4FB6LfvtInCunimjhL8TWAi354OpP+5ch8c8uq13ZZyUSoapXZlH2IVe8Kw2TiJ+oD0 PDPM942Vi8lojUR1Ect4xrDmrblRrWa7Q1o= Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2169.outbound.protection.outlook.com [104.47.56.169]) by mx0a-00082601.pphosted.com (PPS) with ESMTPS id 3k2807t586-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 06 Oct 2022 23:53:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EA+UE9mENvGi/ZOSicpEgqVk1NfN+QvyxEuFReLzfPz0+AOM/rGkyZqEInlsJt2IxxCPOVagnAjKEaTXWuORCuY6gIQUKObKENkW7Gkgu/odgG32ncqM6EaLtk7Wg9mx8B0oisECDK/LVZnrg6zvGW4fqJjf26I4LuYSMgkG2gvaToEHixSIYkAD0eVXbc6VcBMsaetqwfVLz1ciKOHhSls8yfMt905arFKzND65B+nVTyd2h3BBd9ATytPGfHjPMpMr7UIT0DgI6I4VrrFKWVFzo2e9Y+2lCrT1MaI9ioK+EuN+NceOrRh/54Q5CVY7jOJnNCwR4R8MdqXF2T1dKg== 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=2McJ9JCCSce5EKvpgcjKAiLKa77ko7ouhZmc2wABHng=; b=TXvMypIakUcT1/38JCr5tnE8yyBH+qApAROTSAgguoyA3MsjoYI1Jo8HN5s79ZTYk4K7FnjQ62DNBivy3kLNcORn7A+c8ioF6bN56MrDm/6CsG29LI3kqbszLzOKmBJEzvcpJRBcIJszKi1HviObhFaDlpnO9gP+4hW4Q2BVfEiIbmXXDX4VE4bU2b1NI0pQhHVb02n+TLzlYdShl5J3rciN8d6zSy/Ywm0SvvXAAXjrxYbAYGzKJYoCIuLYXCs9uWCdQq2gVoqyo3F2gARXDzsgcN6FOfnxOJo2bD+pCTtcJsQFgFXyXp53tP0XUZ3rsMymdy41cK97CWARObgPxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fb.com; dmarc=pass action=none header.from=fb.com; dkim=pass header.d=fb.com; arc=none Received: from SA1PR15MB5109.namprd15.prod.outlook.com (2603:10b6:806:1dc::10) by MW3PR15MB3803.namprd15.prod.outlook.com (2603:10b6:303:41::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Fri, 7 Oct 2022 06:53:49 +0000 Received: from SA1PR15MB5109.namprd15.prod.outlook.com ([fe80::d70d:8cce:bb1:e537]) by SA1PR15MB5109.namprd15.prod.outlook.com ([fe80::d70d:8cce:bb1:e537%7]) with mapi id 15.20.5676.028; Fri, 7 Oct 2022 06:53:49 +0000 From: Song Liu To: Luis Chamberlain CC: Song Liu , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , "akpm@linux-foundation.org" , "x86@kernel.org" , "peterz@infradead.org" , "hch@lst.de" , Kernel Team , "rick.p.edgecombe@intel.com" , "dave.hansen@intel.com" Subject: Re: [RFC 4/5] vmalloc_exec: share a huge page with kernel text Thread-Topic: [RFC 4/5] vmalloc_exec: share a huge page with kernel text Thread-Index: AQHYs1V7xDsy5JGhgEqjLpcV4uJ0bq4CVGwAgAB4A4A= Date: Fri, 7 Oct 2022 06:53:49 +0000 Message-ID: References: <20220818224218.2399791-1-song@kernel.org> <20220818224218.2399791-5-song@kernel.org> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3696.120.41.1.1) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR15MB5109:EE_|MW3PR15MB3803:EE_ x-ms-office365-filtering-correlation-id: 582ea499-8a5f-4c24-6abf-08daa830b07a x-fb-source: Internal x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0FfZgqMRPsMHiFD9afsTJz0PYXtwaHUokdtJVi5TyB7iKQT4rdLNt+aqStWeO/Up1f6l8JVLF+Pji/Y2j/MWOAJsuiID/oEJa/F9aihI8H4QTd79seDy/rImWKQQ+GoLHd30V/K48L+VLYvKxJrvbtaOb4PFxCDzGvsZzV208JZjZLC2mURqV6y2TDxwXr78LgmjwDn9SGGhPyqzHWwCjVaG79aOdi1RFEA7wjXYIG7SHlCaxXm6+dHuVgYNS9V8aIZa8tXQMn4rZqpvVj+y/XqMLMb/33YiYnJNfntbG1ibQLUZaEEC2Bl1SElYnzHdT2y+3m81YKIk8FPEbM4ff0K3GN38WpYolfVndvGWaSYqBjZwILRwNl3ETEwI3bGaqG4rod3ml6H93G4RApYcF7ct3naQ7xeVFmTTjJxKFM19OZWJGEf237I+7XmBTCIgSkvVMcJYKDXVz/dM8i6B0aNTp+T5wlrRoCPHVvaLMSjfPR+bvbAH3+cvG0AKvDXS9mgVKLO50U6ElR6P+FiCNHKZozyHTBc0YCGFTADpd01e217cHvd3PUD247BAMz2qQRPbpQmv3evoboe7i4j+anqTa+ODSjd14WXb+DVM6NvObBXL77VFi2+sEag+ZS9jE1tCmX58z/vQ2Rx967UhWWwDyZpeskPVTxzS4KPZhIS0HpMgMQKhLRjEpXE4PHoaYvDFxUBTFJNyTchSjNDO71kDcyO1TTpmSq29w6R+Yzn/tXJwUmJjMuGHNUbJGkWNrPUKvpWug6ovTlmnVrc0pSLc8e9yVt0d9d7iIBhT7eoUZiefimfq+RTEpAziG7C88mg5aG87xA+O8x3yoTQvoQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1PR15MB5109.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(376002)(39860400002)(346002)(366004)(136003)(451199015)(8936002)(8676002)(5660300002)(2906002)(36756003)(7416002)(33656002)(41300700001)(4326008)(91956017)(54906003)(64756008)(86362001)(66476007)(66446008)(66556008)(76116006)(316002)(66946007)(6916009)(71200400001)(6486002)(478600001)(38070700005)(6506007)(6512007)(53546011)(122000001)(186003)(2616005)(38100700002)(83380400001)(14583001)(45980500001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?zxIhjDG6CS4HiJyDnTG5SW3Cng9HWjgRGbNehPYBtsx/JdPZuSmwUx1doI1P?= =?us-ascii?Q?DgoiSIAXK/ovheOipZu1QsVYnsEak1jvg6ahr495cKga+GVynW+KjORGpIAk?= =?us-ascii?Q?jphQjDR85ATzUHVq/6QN99Lv5tUGw7XkYbEAFvKi+n7DdAEJED1tcqLCdBgr?= =?us-ascii?Q?rd6GjR5EUAcbmf1i2O/NALuWDeTJ7RSoCwEeEAcy/qmeygSKL6ss80yB3uwJ?= =?us-ascii?Q?cdF9KAdON8WOByybszaDa49tZGAZEZe2rzEX1KxRSjIC6UTqwRra0loLUMcV?= =?us-ascii?Q?TXf6RgomOLdltIMhICL881h11yB5hscWNtgbzwZ/mS7Bog7s8aXVJtv9xuHr?= =?us-ascii?Q?cR96zuQtDSLnPFWx5uF/a5PlmQA5UskkV+tZB8f6TzqxyKZ2h6kUgoKW/p6X?= =?us-ascii?Q?Q3UK9P7/ID2ns9hROQy2RMusk0TqUTYhmHm3zTUDwGKxF99A0DJ0k6YpIaH5?= =?us-ascii?Q?krtdcnEKRjkl0YsI+P0iEzPPXJz/3eyThirUVkKxf5yhZLjmzg8jeJo0iEmb?= =?us-ascii?Q?3ezisydgnJurSBPwtxXRbEK55LSLy4eD3UaJDOW7tjKgkTJZF9ZYhnLYLrZP?= =?us-ascii?Q?QVWUp9JJvPNoJw9MF0LHq3/A2U5Z+LTPKu4Fjsbp2OOyGTAMiT99tr6c+McB?= =?us-ascii?Q?M7KGgxh0J9Z9kO03aGtaYXjSEaso7HwRUnBQJwUuvrUUWGjoOCStlhFrsDQ5?= =?us-ascii?Q?ggCCELm5d//jzBE7Un4Wb1Y5HsfHkBKIOeMP/vB4OHzsVGk4rmK38aaxW0jH?= =?us-ascii?Q?MRo7m+a3zbM1kheI5LK4D0RmpKQ1EGbvQWk4E9KH4ufPxgZviHMhnu81QjH7?= =?us-ascii?Q?HNnonkBRGwowPXwc8zrbk60+KB9crZB5JKjslM4ovFmLIAgyXIg5lH+FoYSH?= =?us-ascii?Q?xTeUARO85hRTODUMMIF2DX4hPrv1KJz57Q6heCXR8nBFQnjJJpw18JZWzTZW?= =?us-ascii?Q?sWoY9Fxq0AWPW2PuDwgCLUfMoCAi4oDA86kGmy0oOKavbsZtcRri0+3lZ7HZ?= =?us-ascii?Q?SH+5m2PRQv4ZxIb2OLxnwHH6v8s9iZcFwWvhmohbonDJzsAZekOJp9/lEr4f?= =?us-ascii?Q?bJ2zWutNA1NcOR/psCCApJtyX5l5KnmRmBlywCdew2a//IZWv45AqXcsDN++?= =?us-ascii?Q?fOLKVvOM7O6c7HOQsgl9YTxZS+MJKpXKmURDitRrPoQBSQD3x3nhMIwdTsx7?= =?us-ascii?Q?YBep4QQzAguaIJmIesh6oWMeaKbjkwKwK0mPVPi3iY09OnlCdkwWH6rlKUzR?= =?us-ascii?Q?c9AcMu9deni09pyRiuzu9Tobx/bWF9hNL9klgCfKo04E49XVcm2NfKHzMyLx?= =?us-ascii?Q?ZnIZZ52ByRDYFgVym/ptzcoyHk63I33J5PtdaUq/3UV60tUcc/VE4B3QSr15?= =?us-ascii?Q?uNep2/8Lp3gkEiahHo9LaAi3OfGtLn72WMWMWh9qKJ5v5XHW3GWU+xsG/o5I?= =?us-ascii?Q?sstt2mgj1nmiNZelOuJ3LSAICIU6hkDrSRUNXkVW/ItxmxuhZQwclukZGzSY?= =?us-ascii?Q?t19dz15frXW+y1JGRbCaUBjZoC7agCEUwhY2F5vkfG/4QujBODAJQ31BtOda?= =?us-ascii?Q?0RwtXvs08pnsB0QOyItJq0723WaaNqt+T1XgbNrTu+kGPCeTaGKO6LwLa3WU?= =?us-ascii?Q?5xPO3nALiLaXBOsVVODl9wg=3D?= Content-Type: text/plain; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: fb.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR15MB5109.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 582ea499-8a5f-4c24-6abf-08daa830b07a X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Oct 2022 06:53:49.8744 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: QifyNvId8bLzWYqE6whmOKhdOPZPz/u5BmGjfpUsj5Z+rDH7H0iMdvwoog3Oa/pBTDiPPnT5Dob+f+y54BhaJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR15MB3803 X-Proofpoint-ORIG-GUID: 4Hr7p9DX6Zsevtm345VIFy2eZxTFoaEf X-Proofpoint-GUID: 4Hr7p9DX6Zsevtm345VIFy2eZxTFoaEf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-10-06_05,2022-10-06_02,2022-06-22_01 ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1665125640; a=rsa-sha256; cv=pass; b=NvSHVXU4Zv9utWit0o9xwQVXB6H+u6qKWQROOm4CtCGnlMpocvu+kYukY/M64zvanfJPgf UYNSlU6xshJeJ9VE/mSiKT/Fzon9uc3erQI7Nvm48W0tVHZ9yEtJ6k0gefxFiupVxYbTTQ +eqEdp//SsJ7svz9wrQUG+3xeaMrPV4= ARC-Authentication-Results: i=2; imf08.hostedemail.com; dkim=pass header.d=fb.com header.s=facebook header.b=jIfTu3wT; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf08.hostedemail.com: domain of "prvs=1279faf8c2=songliubraving@fb.com" designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=1279faf8c2=songliubraving@fb.com"; dmarc=pass (policy=reject) header.from=fb.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1665125640; 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:in-reply-to:references:references:dkim-signature; bh=2McJ9JCCSce5EKvpgcjKAiLKa77ko7ouhZmc2wABHng=; b=dkK4oLyTRWR68ZLU1XAGsaKTMvWWEAIJnytQrkwrugy3NF1Eg297oYrYWb+IOnwWrYnWT/ SMa+nl7aBUhHfr2Gb0b4tSh6F84P/4wsybg0ioU7KrTrCI3mH7bLsonoG/rj0o/5s7CWfn 8Z+HbxoIypxrToq/6yb9akdlVI83LrM= X-Rspam-User: Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=fb.com header.s=facebook header.b=jIfTu3wT; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf08.hostedemail.com: domain of "prvs=1279faf8c2=songliubraving@fb.com" designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=1279faf8c2=songliubraving@fb.com"; dmarc=pass (policy=reject) header.from=fb.com X-Stat-Signature: 69ma5375xwacrzqbrerbznko5t1ek475 X-Rspamd-Queue-Id: D3E1C16001B X-Rspamd-Server: rspam01 X-HE-Tag: 1665125639-617564 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: > On Oct 6, 2022, at 4:44 PM, Luis Chamberlain wrote: >=20 > On Thu, Aug 18, 2022 at 03:42:17PM -0700, Song Liu wrote: >> On x86 kernel, we allocate 2MB pages for kernel text up to >> round_down(_etext, 2MB). Therefore, some of the kernel text is still >> on 4kB pages. With vmalloc_exec, we can allocate 2MB pages up to >> round_up(_etext, 2MB), and use the rest of the page for modules and >> BPF programs. >>=20 >> Here is an example: >>=20 >> [root@eth50-1 ~]# grep _etext /proc/kallsyms >> ffffffff82202a08 T _etext >>=20 >> [root@eth50-1 ~]# grep bpf_prog_ /proc/kallsyms | tail -n 3 >> ffffffff8220f920 t bpf_prog_cc61a5364ac11d93_handle__sched_wakeup = [bpf] >> ffffffff8220fa28 t bpf_prog_cc61a5364ac11d93_handle__sched_wakeup_new = [bpf] >> ffffffff8220fad4 t bpf_prog_3bf73fa16f5e3d92_handle__sched_switch = [bpf] >>=20 >> [root@eth50-1 ~]# grep 0xffffffff82200000 /sys/kernel/debug/page_tables= /kernel >> 0xffffffff82200000-0xffffffff82400000 2M ro PSE x pmd >>=20 >> [root@eth50-1 ~]# grep xfs_flush_inodes /proc/kallsyms >> ffffffff822ba910 t xfs_flush_inodes_worker [xfs] >> ffffffff822bc580 t xfs_flush_inodes [xfs] >>=20 >> ffffffff82200000-ffffffff82400000 is a 2MB page, serving kernel text, xf= s >> module, and bpf programs. >=20 > This is pretty rad. I'm not sure how you were able to squeeze xfs and > *more* into one 2 MiB huge page though at least on debian 5.17.0-1-amd64 > xfs is 3.6847 MiB. How big is your XFS module? In my build, xfs.ko is 50MB before strip, and 3.1MB after strip. But the text section is about 1.3MB, so it fits in one 2MB page.=20 >=20 > I don't grok mm stuff, but I'd like to understand why we gain the ability > of re-use the same 2 MiB page with this patch, from the code I really > can't tail. Any pointers? I don't quite follow the question here. In this case, we allocate one more 2MB page, so that some static kernel text can use it, and shall it with=20 dynamic kernel text. Does this answer your questions? I am working on a newer version of this. I am planning to resend when it=20 is stable for BPF programs. For modules, I think we will need more=20 discussion about the interface with arch code.=20 Thanks, Song >=20 > But, I'm still concerned about the free'ing case in terms of > fragmentation for contigous memory, when free huage pages are available. >=20 > Luis >=20 >> --- >> arch/x86/mm/init_64.c | 3 ++- >> mm/vmalloc.c | 27 +++++++++++++++++++++++++++ >> 2 files changed, 29 insertions(+), 1 deletion(-) >>=20 >> diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c >> index 39c5246964a9..d27d0af5beb5 100644 >> --- a/arch/x86/mm/init_64.c >> +++ b/arch/x86/mm/init_64.c >> @@ -1367,12 +1367,13 @@ int __init deferred_page_init_max_threads(const = struct cpumask *node_cpumask) >>=20 >> int kernel_set_to_readonly; >>=20 >> +#define PMD_ALIGN(x) (((unsigned long)(x) + (PMD_SIZE - 1)) & PMD_MASK) >> void mark_rodata_ro(void) >> { >> unsigned long start =3D PFN_ALIGN(_text); >> unsigned long rodata_start =3D PFN_ALIGN(__start_rodata); >> unsigned long end =3D (unsigned long)__end_rodata_hpage_align; >> - unsigned long text_end =3D PFN_ALIGN(_etext); >> + unsigned long text_end =3D PMD_ALIGN(_etext); >> unsigned long rodata_end =3D PFN_ALIGN(__end_rodata); >> unsigned long all_end; >>=20 >> diff --git a/mm/vmalloc.c b/mm/vmalloc.c >> index 472287e71bf1..5f3b5df9313f 100644 >> --- a/mm/vmalloc.c >> +++ b/mm/vmalloc.c >> @@ -72,6 +72,11 @@ early_param("nohugevmalloc", set_nohugevmalloc); >> static const bool vmap_allow_huge =3D false; >> #endif /* CONFIG_HAVE_ARCH_HUGE_VMALLOC */ >>=20 >> +#define PMD_ALIGN(x) (((unsigned long)(x) + (PMD_SIZE - 1)) & PMD_MASK) >> + >> +static struct vm_struct text_tail_vm; >> +static struct vmap_area text_tail_va; >> + >> bool is_vmalloc_addr(const void *x) >> { >> unsigned long addr =3D (unsigned long)kasan_reset_tag(x); >> @@ -634,6 +639,8 @@ int is_vmalloc_or_module_addr(const void *x) >> unsigned long addr =3D (unsigned long)kasan_reset_tag(x); >> if (addr >=3D MODULES_VADDR && addr < MODULES_END) >> return 1; >> + if (addr >=3D text_tail_va.va_start && addr < text_tail_va.va_end) >> + return 1; >> #endif >> return is_vmalloc_addr(x); >> } >> @@ -2371,6 +2378,25 @@ static void vmap_init_free_space(void) >> } >> } >>=20 >> +static void register_text_tail_vm(void) >> +{ >> + unsigned long start =3D PFN_ALIGN(_etext); >> + unsigned long end =3D PMD_ALIGN(_etext); >> + struct vmap_area *va; >> + >> + va =3D kmem_cache_zalloc(vmap_area_cachep, GFP_NOWAIT); >> + if (WARN_ON_ONCE(!va)) >> + return; >> + text_tail_vm.addr =3D (void *)start; >> + text_tail_vm.size =3D end - start; >> + text_tail_vm.flags =3D VM_KERNEL_EXEC; >> + text_tail_va.va_start =3D start; >> + text_tail_va.va_end =3D end; >> + text_tail_va.vm =3D &text_tail_vm; >> + memcpy(va, &text_tail_va, sizeof(*va)); >> + insert_vmap_area(va, &free_text_area_root, &free_text_area_list); >> +} >> + >> void __init vmalloc_init(void) >> { >> struct vmap_area *va; >> @@ -2381,6 +2407,7 @@ void __init vmalloc_init(void) >> * Create the cache for vmap_area objects. >> */ >> vmap_area_cachep =3D KMEM_CACHE(vmap_area, SLAB_PANIC); >> + register_text_tail_vm(); >>=20 >> for_each_possible_cpu(i) { >> struct vmap_block_queue *vbq; >> --=20 >> 2.30.2 >>=20