From patchwork Wed Jul 10 10:50:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oscar Salvador X-Patchwork-Id: 13729169 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 C3B94C3DA42 for ; Wed, 10 Jul 2024 10:51:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 21DB36B009B; Wed, 10 Jul 2024 06:51:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1F4CB6B009C; Wed, 10 Jul 2024 06:51:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 094FD6B009D; Wed, 10 Jul 2024 06:51:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id DE8D86B009B for ; Wed, 10 Jul 2024 06:51:26 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 799CB121C25 for ; Wed, 10 Jul 2024 10:51:26 +0000 (UTC) X-FDA: 82323526572.11.2FEC6FA Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by imf18.hostedemail.com (Postfix) with ESMTP id 535081C001D for ; Wed, 10 Jul 2024 10:51:24 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=MBNmnGWt; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b="RRkG/rNk"; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=MBNmnGWt; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b="RRkG/rNk"; spf=pass (imf18.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.131 as permitted sender) smtp.mailfrom=osalvador@suse.de; dmarc=pass (policy=none) header.from=suse.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720608653; 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:references:dkim-signature; bh=lrvDJU5l0ovDwxP58k+bdBMB6XPqMoeORnc5Pk5QfAg=; b=vDxTLQ/7VqJVjvoIfppxZB7DRtZ6oFoeL1QUKCgMdONj0xlxEDEu5+07MRn567YRrh4ASC TmPQ52HKZjxXfWrbOe5DrGWonT1dxthtMst+AdDD6/MneHkgsIUbKEw9Ct4YgNb1nBS5gz 4fN5YY8kdHYrsQTc8ZkQ0KgVCirmY1g= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720608653; a=rsa-sha256; cv=none; b=vmtWlJiX/cfWlaE4DBjy7OP21RwIKO6VIC1WBIn0MyBwMqiRncVExJQwuu16j+RDv4gV5j wC3CjK7IbleN6soNsD2DCuX5fRPn5bDotT3O81HFHEwt8rZJGj7LnZtW+H4q3NlQmzkcrE gq+LU3S/DKe005ZafPWr9hRLQxT3cE0= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=MBNmnGWt; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b="RRkG/rNk"; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=MBNmnGWt; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b="RRkG/rNk"; spf=pass (imf18.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.131 as permitted sender) smtp.mailfrom=osalvador@suse.de; dmarc=pass (policy=none) header.from=suse.de Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id A44CC1F827; Wed, 10 Jul 2024 10:51:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1720608682; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=lrvDJU5l0ovDwxP58k+bdBMB6XPqMoeORnc5Pk5QfAg=; b=MBNmnGWtS9A/JKjJJfjp3uPtoUEOogBb+ZcM9IGAbRTHitdeUx6B18/6Tez6OlPCZRq7Je YuwVDLHZYgnAr4n5j0IFVT/uyoumfLhfT53iXQR0k8Nwpe4UJHiN0lriIx3XQnYIphd0fb S51sfCM5M/d1vR0E9ktYIahAL1k5/04= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1720608682; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=lrvDJU5l0ovDwxP58k+bdBMB6XPqMoeORnc5Pk5QfAg=; b=RRkG/rNk+i5L7QD+eXwAXJ1qZaTXOUJB8E1OIRbUSds0D3zKRcaCq/tQAJbgtDdPu3vTPU dkUGvxTcWR4JkoBg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1720608682; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=lrvDJU5l0ovDwxP58k+bdBMB6XPqMoeORnc5Pk5QfAg=; b=MBNmnGWtS9A/JKjJJfjp3uPtoUEOogBb+ZcM9IGAbRTHitdeUx6B18/6Tez6OlPCZRq7Je YuwVDLHZYgnAr4n5j0IFVT/uyoumfLhfT53iXQR0k8Nwpe4UJHiN0lriIx3XQnYIphd0fb S51sfCM5M/d1vR0E9ktYIahAL1k5/04= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1720608682; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=lrvDJU5l0ovDwxP58k+bdBMB6XPqMoeORnc5Pk5QfAg=; b=RRkG/rNk+i5L7QD+eXwAXJ1qZaTXOUJB8E1OIRbUSds0D3zKRcaCq/tQAJbgtDdPu3vTPU dkUGvxTcWR4JkoBg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 7C98D1369A; Wed, 10 Jul 2024 10:51:21 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id SI+DGalnjmazcwAAD6G6ig (envelope-from ); Wed, 10 Jul 2024 10:51:21 +0000 From: Oscar Salvador To: Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Muchun Song , David Hildenbrand , Michal Hocko , Donet Tom , "Kirill A . Shutemov" , Matthew Wilcox , Vlastimil Babka , Oscar Salvador Subject: [RFC PATCH 0/8] Unify hugetlb into arch_get_unmapped_area functions Date: Wed, 10 Jul 2024 12:50:34 +0200 Message-ID: <20240710105042.30165-1-osalvador@suse.de> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 535081C001D X-Stat-Signature: hhigoby5wxpzuayyjf4e5q6tswjtp7dp X-HE-Tag: 1720608684-91813 X-HE-Meta: U2FsdGVkX1+Dk/E3qkNA/tPA84meSses/HCAPxoIVH5CyTCUmM0hV+MA0AVAwGf0Jgok2vV2DygWvds5ZxA8BolsINqKgmrOo12iuOwDD71RqMaCD7l99EbaHmtsAGiIVSj84fyQlHhntYfgcGEokun+RuzL4BH5uAjySYCX7BQRIMOXs4SjTRdHDewZ4UFjFEd4B/qdRdT9UST/zApM2VhXHdRFA0jO9xz9JOzyjDUVcuITfPJ7iNw9UL9Rgk33cAu/8gwCXLVI12+SvZPgfReTWP67ixW3UssXLbda+4CsrC7WrYuFRKXOYXN5knMm8G/UvgCHjXtVrtufX/oNR2bZN71IZgr8PmY0pf2zzH09dHZYN6uG+sS1vMm+LdGrWuwGtbC4rvKW1vDqAmJhip5dtWn1lpQ28h9FWcxbQv+HgcxXEVEH2U+acDzh6tKyq+lUEsIloi7mcmMx4nR3cw5EJ49XdDVtnJ0nNONtTt+UGO8KfESeEwcr7K2JqgU5h6TAr8DigKDdxt1dKPFx7XGPYkBTGbaMUdGYO8czDKwnQ4uRHs+Wl0f+Iobw+FaFQhaa7ZJ/HOjQpKrAnO9DnoMAjeSeEku8SsyAEvSmddSE9cR5hO1GLkFcJXvI579RuIAD5BQYEJ5sccTa5EiSuKlgkP3Pq658jvOjrnruvj/UMcVg5UgAuxS6PSr0jb8StGM7RycrXOZ4Kt4dW1Z/jRuAE0q0cxpAmwbOd2i2E9FjYLtmbVuXsgwXQArqRtzd7u9qB2AqNDDHWC2fhoxWtO1WJikRztrBOnEbdbiPmx5r9q5r8kjYKvAjC1sSdkVfio1U01IqfogUeeKF5dF4Duo59diS/nsNWXz2IT6XyGFXTmJZUajF9M05OrDzeEFaL4Y2MnbAafzX8Y+QvTPgvs7fNpaafaZrzKYZcWANxxEZxdlS2NwFO5SFynAuTX45kciugDBkW43NJGGX8eW 3rmwcAmX cRI/3M7x0XoSRXWAAUXKj0rCQ+iJ/6LA8qwiN2DLDhTyGg+Q53zgcA8ZJi4dPhuxstC+B+Wcx9c2jrmPRzhwuT+bTUyET1LIQU8EecfM4hkqZrF5hXUTyFLdOzrorpCECREX47H2JzuAxfLI/xrM12SpHwzKedRetLgLI1T4jS1ZQWmlsQDmsapBoA7aYmzQcss8iqzoNLKHWY5Tz5FgwKF2Q7LH2AUXV+2g81UbHpOOK9UAmB8uBXpZDGq/0eEA7ayr12F1gf1GoDC6IG+G4a8PdPw== 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 all, this is a first attempt to get rid of a fair amount of duplicated code wrt. hugetlb and *get_unmapped_area* functions. HugeTLB registers a .get_unmapped_area function which gets called from __get_unmapped_area(). hugetlb_get_unmapped_area() is defined by a bunch of architectures and it also has a generic definition for those that do not define it. Short-long story is that there is a ton of duplicated code between specific hugetlb *_get_unmapped_area_* functions and mm-core functions, so we can do better by teaching arch_get_unmapped_area* functions how to deal with hugetlb mappings. Note that not a lot of things need to be taught though. hugetlb_mmap_check_and_align(), that gets called for hugetlb mappings prior to call mm_get_unmapped_area_vmflags(), runs some sanity checks and aligns the addr to huge_page_size(), so we do not need to that down the road in the respective {generic,arch}_get_unmapped_area* functions. More information can be found in the respective patches. LTP mmapstress and hugemmap testcases were ran on arm64, powerpc64le and x86_64 without raising any issue. Oscar Salvador (8): mm/mmap: Teach generic_get_unmapped_area{_topdown} to handle hugetlb mappings arch/s390: Teach arch_get_unmapped_area{_topdown} to handle hugetlb mappings arch/x86: Teach arch_get_unmapped_area_vmflags to handle hugetlb mappings arch/sparc: Teach arch_get_unmapped_area{_topdown} to handle hugetlb mappings arch/powerpc: Teach book3s64 arch_get_unmapped_area{_topdown} to handle hugetlb mappings mm: Make hugetlb mappings go through mm_get_unmapped_area_vmflags mm: Drop hugetlb_get_unmapped_area{_*} functions mm: Consolidate common checks in hugetlb_mmap_check_and_align arch/loongarch/include/asm/hugetlb.h | 4 - arch/mips/include/asm/hugetlb.h | 4 - arch/parisc/include/asm/hugetlb.h | 15 ---- arch/parisc/mm/hugetlbpage.c | 23 ------ arch/powerpc/mm/book3s64/slice.c | 49 +++++++----- arch/s390/include/asm/hugetlb.h | 16 ---- arch/s390/mm/hugetlbpage.c | 84 --------------------- arch/s390/mm/mmap.c | 8 +- arch/sh/include/asm/hugetlb.h | 15 ---- arch/sparc/kernel/sys_sparc_32.c | 16 +++- arch/sparc/kernel/sys_sparc_64.c | 36 +++++++-- arch/sparc/mm/hugetlbpage.c | 108 --------------------------- arch/x86/kernel/sys_x86_64.c | 24 ++++-- arch/x86/mm/hugetlbpage.c | 100 ------------------------- fs/hugetlbfs/inode.c | 92 ++--------------------- include/asm-generic/hugetlb.h | 7 -- include/linux/hugetlb.h | 21 +++--- mm/mmap.c | 19 ++++- 18 files changed, 129 insertions(+), 512 deletions(-)