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 B9958C54E58 for ; Mon, 11 Mar 2024 19:32:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EDE816B0112; Mon, 11 Mar 2024 15:32:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E68076B0113; Mon, 11 Mar 2024 15:32:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D2FD26B0114; Mon, 11 Mar 2024 15:32:16 -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 BDF2D6B0112 for ; Mon, 11 Mar 2024 15:32:16 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 8CA321A06A2 for ; Mon, 11 Mar 2024 19:32:16 +0000 (UTC) X-FDA: 81885754272.26.C50CE11 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf14.hostedemail.com (Postfix) with ESMTP id 5809B100008 for ; Mon, 11 Mar 2024 19:32:14 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=AtSFm+ip; spf=none (imf14.hostedemail.com: domain of rdunlap@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=rdunlap@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710185535; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to: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=al2BeY7F3MvEo+q4vRxj8v8pOQ0OOeW+T6MKcDYMKXM=; b=5LnWt+Boy7ltW03InSdVsuJkeRS4Pg/dFnMHrON+hlDzqwTaS9W8d/3jOYmBOaRXq27dAp 4vsV5a1T9rb/X6HqQ2P/o+9QWnT8iqN98KXe5qH2IIwrFQRgUxETStzNNG26boLfeQFr6a F1l4JB35/pMwwEboVfaQWogGOP8wgpE= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=AtSFm+ip; spf=none (imf14.hostedemail.com: domain of rdunlap@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=rdunlap@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710185535; a=rsa-sha256; cv=none; b=6afA+JZw2AR+AgQDq1XjU0tgb+c+0Iz0elcpp7N6texHa54rn/3cJhpLteIDKfCW3ktM/+ d/JTbKaii1RFmjIKAikQbU0O+TMrbLDk761DZvLPHPCM0vqLQwNOl8EnazApgJQFbD9Lpz ZzT0YWR/6fvwLGB4/HvkkhZQ/FA+ypo= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:From:References:To:Subject:MIME-Version:Date: Message-ID:Sender:Reply-To:Cc:Content-ID:Content-Description; bh=al2BeY7F3MvEo+q4vRxj8v8pOQ0OOeW+T6MKcDYMKXM=; b=AtSFm+iprDE9NWh0ucDbEU2QwY lVfmHy0oRdNyjRo8WqR6iS0stl/f4tLRpwThMbQtaEmCA9e9Pc9us4Za+oAG+neeSz49fhH78JwE+ Bgk4kh4fZUQ+IwZ9Tj9XArj5pUSbpb7ejgpdp+sbfyjXRrfGueEyg6xdVwUQnuahuWqPd5oCdjJFF BbRKvC0GWvGzZWrEWbeGXDeVCmtv3w01xk+D5QIV4o9byiQtuMeuSyNAL/PLeI6Ch/+A9IT6eudZm aYILmFdZABeDwpn9yy+WbL1cM0Dq2sY3omOBrb0cq5lN0gmhsIVRvrzEmSKLCRv2BhSpB637Zht9Q 0TfGuAEQ==; Received: from [50.53.50.0] (helo=[192.168.254.15]) by bombadil.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux)) id 1rjlNb-00000002woS-0ya6; Mon, 11 Mar 2024 19:32:11 +0000 Message-ID: <4f77c04b-5fe3-4618-aaaf-7bcc6058591e@infradead.org> Date: Mon, 11 Mar 2024 12:32:09 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC 10/14] fork: Dynamic Kernel Stacks Content-Language: en-US To: Pasha Tatashin , linux-kernel@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, x86@kernel.org, bp@alien8.de, brauner@kernel.org, bristot@redhat.com, bsegall@google.com, dave.hansen@linux.intel.com, dianders@chromium.org, dietmar.eggemann@arm.com, eric.devolder@oracle.com, hca@linux.ibm.com, hch@infradead.org, hpa@zytor.com, jacob.jun.pan@linux.intel.com, jgg@ziepe.ca, jpoimboe@kernel.org, jroedel@suse.de, juri.lelli@redhat.com, kent.overstreet@linux.dev, kinseyho@google.com, kirill.shutemov@linux.intel.com, lstoakes@gmail.com, luto@kernel.org, mgorman@suse.de, mic@digikod.net, michael.christie@oracle.com, mingo@redhat.com, mjguzik@gmail.com, mst@redhat.com, npiggin@gmail.com, peterz@infradead.org, pmladek@suse.com, rick.p.edgecombe@intel.com, rostedt@goodmis.org, surenb@google.com, tglx@linutronix.de, urezki@gmail.com, vincent.guittot@linaro.org, vschneid@redhat.com References: <20240311164638.2015063-1-pasha.tatashin@soleen.com> <20240311164638.2015063-11-pasha.tatashin@soleen.com> From: Randy Dunlap In-Reply-To: <20240311164638.2015063-11-pasha.tatashin@soleen.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 5809B100008 X-Rspam-User: X-Stat-Signature: 718mciz3we9cm5wc3mds5w9eetrycutj X-Rspamd-Server: rspam01 X-HE-Tag: 1710185534-191696 X-HE-Meta: U2FsdGVkX1953VY1Sg6jGHmGJdoMshrLDZy1Nwn5Zc6TYpA/kWz19qhgEOONBLaiTl4kjuONKze1Xi79DZkfYYS03cOqDNB9WksUZ8JhUtrV/N+FOJp1Lj6mVf1IxeaEv/8TwWff15n4xEpsgub8br2XxKBMNgVsJvMKWew2hexCdAv3hMKn0Gyjp7uRcQWYVUWt3kna0X4tw7nqBpy7bf/eJhxZ+KHgTj9X1NAUQ1pej0WAEIOLtUweaZcaeYGwbB/cvakOGDQ6k9GPE3+6XcXrJpEzG8+hs8Qya+SqRPP+Gev4Mn7lL/aLrYctqOF7q6mVjf8i7mYhfJmFN9x0A0p0NxNzJTHhEBUS9VyUvqibYhTE/L4RoDuc888vcKvj9GsZzpAEaOSFjEgRCo7GJeR1QHub3W6k9b54R3wO2LHfrQCaMqxUG0E7+RviVvAe59TICTCFSdkHWpHgMUeDuVG+dLaRPqNtQaPBsL2AGBMjVb+d24VTkoA/cJ1T/XB0NCgwBTt46vzMCY0U3DDGBBa8CTsOtNvmyHK3XjWsmboPIiRTy61bSee8dnaVvMsFTi6mdMjuwk7uHmQ0TzMx1LvvEVgQp3Hfqv1y0N8r2xLv+PoNedMzth/9WsyBNca+ao4CT5ivoWUnVOzH7AanJVB02R6FSUIZ8U+xvT2XgBrR4a3jqCESjxBajd2VlaGhnx8TOrs2500nIYZ1tVBilzP0xmFj6jxOZ7XUC7wG746G8JR1aViJ4AqjrWh25YbdhMUixOAcWyYUoQZur8oxRtYK44IaHGRrV5sGjet2J8uMJyDx6b08BaFclcvEp+GVM8iQFeqF+y42lX9uY6mILdeHkWZbnEQAHHf9s8Nypyf/O2kxnlA0Ozf41+IgAMypy/vzn30bYkw2PhWVrgyWHSy2Bi7yR2/BxxMqlQR7+9wIDS5/y+FoQ09RbWYqne3mkHoYxr74d5XHZ0uTtbK cJoQytvX AbMtDACn13ois3BbKba6Y6Cd69rqbGIQxCnZnM4N27cbgYLpqndYk1rDVVWyCq9f7uzSVYhPCcqf0rl9g9RYY22XwTi+Jq6Cp1Ee6VvAE5JERxlnNxZnFANhyEewZ26/k39dcn0moEban+DHHSWq/rPH62fih9sh1nHbylrEuqrgqeTCwpCJq233TnZcEyaQm186A6CMPR64BVa5CjsBDCeIratBzOzEZ721F1SUb79PNGV2z+mAIZoUbnc14bzwfCCSnnENlGC4859bUJrbBAu/xLg== 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: Hi, just typos etc. On 3/11/24 09:46, Pasha Tatashin wrote: > The core implementation of dynamic kernel stacks. > ... > > Signed-off-by: Pasha Tatashin > --- > arch/Kconfig | 34 +++++ > include/linux/sched.h | 2 +- > include/linux/sched/task_stack.h | 41 +++++- > kernel/fork.c | 239 +++++++++++++++++++++++++++++++ > kernel/sched/core.c | 1 + > 5 files changed, 315 insertions(+), 2 deletions(-) > > diff --git a/arch/Kconfig b/arch/Kconfig > index a5af0edd3eb8..da3df347b069 100644 > --- a/arch/Kconfig > +++ b/arch/Kconfig > @@ -1241,6 +1241,40 @@ config VMAP_STACK > backing virtual mappings with real shadow memory, and KASAN_VMALLOC > must be enabled. > > +config HAVE_ARCH_DYNAMIC_STACK > + def_bool n > + help > + An arch should select this symbol if it can support kernel stacks > + dynamic growth. > + > + - Arch must have support for HAVE_ARCH_VMAP_STACK, in order to handle > + stack related page faults stack-related > + > + - Arch must be able to faults from interrupt context. fault > + - Arch must allows the kernel to handle stack faults gracefully, even allow > + during interrupt handling. > + > + - Exceptions such as no pages available should be handled the same handled in the same > + in the consitent and predictable way. I.e. the exception should be consistent > + handled the same as when stack overflow occurs when guard pages are > + touched with extra information about the allocation error. > + > +config DYNAMIC_STACK > + default y > + bool "Dynamically grow kernel stacks" > + depends on THREAD_INFO_IN_TASK > + depends on HAVE_ARCH_DYNAMIC_STACK > + depends on VMAP_STACK > + depends on !KASAN > + depends on !DEBUG_STACK_USAGE > + depends on !STACK_GROWSUP > + help > + Dynamic kernel stacks allow to save memory on machines with a lot of > + threads by starting with small stacks, and grow them only when needed. > + On workloads where most of the stack depth do not reach over one page does > + the memory saving can be subsentantial. The feature requires virtually substantial. > + mapped kernel stacks in order to handle page faults. > + > config HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET > def_bool n > help > +/* > + * This flag is used to pass information from fault handler to refill about > + * which pages were allocated, and should be charged to memcg. > + */ > +#define DYNAMIC_STACK_PAGE_AQUIRED_FLAG 0x1 ACQUIRED please -- #Randy