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 96AF1C48BC1 for ; Tue, 13 Feb 2024 11:14:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 199E56B0088; Tue, 13 Feb 2024 06:14:08 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 149A76B0089; Tue, 13 Feb 2024 06:14:08 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F2D756B008A; Tue, 13 Feb 2024 06:14:07 -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 DC37F6B0088 for ; Tue, 13 Feb 2024 06:14:07 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id B38BF140B4B for ; Tue, 13 Feb 2024 11:14:07 +0000 (UTC) X-FDA: 81786521334.21.0328B5A Received: from out-173.mta0.migadu.com (out-173.mta0.migadu.com [91.218.175.173]) by imf07.hostedemail.com (Postfix) with ESMTP id EC3BC4000A for ; Tue, 13 Feb 2024 11:14:05 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=ZPI670aF; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf07.hostedemail.com: domain of gang.li@linux.dev designates 91.218.175.173 as permitted sender) smtp.mailfrom=gang.li@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707822846; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=3HNW+BWPQLZLSA9Wsdie7SM7+Z9Dq4YTo1Xwh/Ut0N0=; b=ydxIJxGNBggeWjqqQAznyY6ATepbasz1x20Y5B6KoPWMdulaE01HrJIBhlhPN1laqE8Oc1 GDuJojQVh1MXs3UhlJg8Pk0079ZSi5CUUwOTVDnDmvQrMiNr51WE5z7iQosifSHj9mqt7a KlLiGPFaW/Yg2f4VNtY/MnOReymVSOM= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=ZPI670aF; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf07.hostedemail.com: domain of gang.li@linux.dev designates 91.218.175.173 as permitted sender) smtp.mailfrom=gang.li@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707822846; a=rsa-sha256; cv=none; b=4LH/0pyy3721tlwkCXV2iozzOOh2H0KQZY8BoW4vA8asnq7Z1yALFHASZ5qzcfQu6VfE/b A7TxHXyXXa7SSeorYnVSkIeTNWpqPidf8a1EzYKoPpIHX7kzM4rfR3K1RrzM4g26l5S++Z LOO5LyditJhMDWaopNb7KDVWqbuNlEo= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1707822844; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3HNW+BWPQLZLSA9Wsdie7SM7+Z9Dq4YTo1Xwh/Ut0N0=; b=ZPI670aF7l5C2zzwKvIqmcFcaMTzMQXxlEsYJ10wrPsJHywJ67w1IkzFeJ/ZcwvX7xafSW yXfXogGU+DMHmth/vH46c00MhNvLCEPEGGBlvc7AN/c1ZL/3/ha2zPzbUzKY1h4fRsHcas pZeE8v64mDTmFPEItAV5JpOFcIUSt4s= From: Gang Li To: Andrew Morton , Steffen Klassert , Daniel Jordan , Jane Chu , "Paul E . McKenney" , Muchun Song , Gang Li , Randy Dunlap , kernel test robot , Gang Li Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v1 1/2] padata: downgrade padata_do_multithreaded to serial execution for non-SMP Date: Tue, 13 Feb 2024 19:13:46 +0800 Message-Id: <20240213111347.3189206-2-gang.li@linux.dev> In-Reply-To: <20240213111347.3189206-1-gang.li@linux.dev> References: <20240213111347.3189206-1-gang.li@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: EC3BC4000A X-Stat-Signature: bocrdgoo99r44uh4t1ybkbeby6ck8fgw X-HE-Tag: 1707822845-111148 X-HE-Meta: U2FsdGVkX18qTSlKfkM28CoVwE0K5tCAS+0FxvxK0hvNKC1vEOQOBxrcURAa+e/MZq3bZS5/NXLNNrG5akpY5E7hGpRFzk0tzhPkU3IiNmHNM2rXiuXf4T1thfdgNLu0T+AxfIlHCVCglBjm2jllvNXfYT2aLRsE/d9nisqOLJYMWsLsy34L9BrfUxXfHI3j23ltjsRLgB6AGxleKw4+Yn3g4GQeh3u8VJPwMxFc2AgIB16Kd3CsBUlwHt1eVXXh/JJZUB9Uy3JGmqELaHrIeUHS8CgQQzWgTprNcE8CMQqMebJi3VzaN0diigO5aAHXUgIFCtf+3FODtWWkIkBA9X53zp/EfYYTsg+XYXgRvSmX7eWPI7s91qhsU66rlJbjSinfzL5xQWOp+qPuX1kW6xm2fGwDozIZBX2/SjpcAgBvUdxhcbOTRhBFTc4UUNJ2ipwXttrNDFUS9Z8lHaZlZszEHTHQBVHgCi2VKRT0LbK/RXmWDN2gWNpG6+x5fTVkANJPwZABEIJzh2++JPgBX+ABSQFOEQOGEvKDLht6WQitB4EwBSyyPxZp8G1YuSAGYCagn9RPIPq+XgIrb7c7/qA4aNerkMJkcP41pUNM4seHKLCJAlJUn+u2F7w7T9bTig28VC4o+YCVq6LMcmRLoF53iZNQonCjDp1KHC9J5CCPl9IlHmbMQ4k9AJTJrMGNoFQCrI5x9FflekE+6R0e8NsPMmmChEjZ5C1Ali280Tg4+h3qESZpq2NMmUE5ojfgmoACy965tvTf/BZvS5+ysCC8bAUp7cvGY0ZoHwf2sajXQgjjG72cNwJxDXgwzxTHSTMhkwTKp0day8bAp11M7hFkdYx8tupRUIEbktVB+HO76y0V9Y4LAczq9g4xnfGqGYN0KjNlIKWPCkLmfcpc1q7J2LcJHkroTbWeP7otVeo4dgRGK5Y8TZpbSsVi+Dfi2emtr4rX+dHmifwlNRt ncbrMdcU ZN+XBeDvJSDYUZaahabNG/36zSGOu8FzHe5f07MlHN3MXkvIPPltyo60JRatfjR+QadNHqWCcdK+yQF4NMEqDE7wW8skjbT+4Pw7Dr3R8p8DGdjppW12sYXf5bNiHGJD9QIElLKiYSBFDv/2ufS70OnVc5d412HMmVHQgMcqy7M1ONafTJzDzvfNVBR9XPFNcPmwWXSsq33CzHZTMEGIjEhr1AOKfv7Y3WzydojhJ3qN315cibR7RaN45nHo/rfV1bPlNHC8Axbxf3EP0YXOHDlIbiKHkbwZ0o9EGKqrpIRjnghoqLY3xGityJLPVnuqmLrlb1xrg93tsW3Q= 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: Randy Dunlap and kernel test robot reported a warning: ``` WARNING: unmet direct dependencies detected for PADATA Depends on [n]: SMP [=n] Selected by [y]: - HUGETLBFS [=y] && (X86 [=y] || SPARC64 || ARCH_SUPPORTS_HUGETLBFS [=n] || BROKEN [=n]) && (SYSFS [=y] || SYSCTL [=n]) ``` hugetlb parallelization depends on PADATA, and PADATA depends on SMP. PADATA consists of two distinct functionality: One part is padata_do_multithreaded which disregards order and simply divides tasks into several groups for parallel execution. Hugetlb init parallelization depends on padata_do_multithreaded. The other part is composed of a set of APIs that, while handling data in an out-of-order parallel manner, can eventually return the data with ordered sequence. Currently Only `crypto/pcrypt.c` use them. All users of PADATA of non-SMP case currently only use padata_do_multithreaded. It is easy to implement a serial one in include/linux/padata.h. And it is not necessary to implement another functionality unless the only user of crypto/pcrypt.c does not depend on SMP in the future. Fixes: a2cefb08be66 ("hugetlb: have CONFIG_HUGETLBFS select CONFIG_PADATA") Reported-by: Randy Dunlap Closes: https://lore.kernel.org/lkml/ec5dc528-2c3c-4444-9e88-d2c48395b433@infradead.org/ Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202402020454.6EPkP1hi-lkp@intel.com/ Signed-off-by: Gang Li --- fs/Kconfig | 2 +- include/linux/padata.h | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/fs/Kconfig b/fs/Kconfig index 4a51331f172e5..7963939592d70 100644 --- a/fs/Kconfig +++ b/fs/Kconfig @@ -261,7 +261,7 @@ menuconfig HUGETLBFS depends on X86 || SPARC64 || ARCH_SUPPORTS_HUGETLBFS || BROKEN depends on (SYSFS || SYSCTL) select MEMFD_CREATE - select PADATA + select PADATA if SMP help hugetlbfs is a filesystem backing for HugeTLB pages, based on ramfs. For architectures that support it, say Y here and read diff --git a/include/linux/padata.h b/include/linux/padata.h index 8f418711351bc..7b84eb7d73e7f 100644 --- a/include/linux/padata.h +++ b/include/linux/padata.h @@ -180,10 +180,6 @@ struct padata_instance { #ifdef CONFIG_PADATA extern void __init padata_init(void); -#else -static inline void __init padata_init(void) {} -#endif - extern struct padata_instance *padata_alloc(const char *name); extern void padata_free(struct padata_instance *pinst); extern struct padata_shell *padata_alloc_shell(struct padata_instance *pinst); @@ -194,4 +190,13 @@ extern void padata_do_serial(struct padata_priv *padata); extern void __init padata_do_multithreaded(struct padata_mt_job *job); extern int padata_set_cpumask(struct padata_instance *pinst, int cpumask_type, cpumask_var_t cpumask); +#else +static inline void __init padata_init(void) {} +static inline void __init padata_do_multithreaded(struct padata_mt_job *job) +{ + if (job->size) + job->thread_fn(job->start, job->start + job->size, job->fn_arg); +} +#endif + #endif -- 2.20.1