From patchwork Mon Oct 7 07:50:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oscar Salvador X-Patchwork-Id: 13824291 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 E6308CFB441 for ; Mon, 7 Oct 2024 07:51:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 28E546B00FC; Mon, 7 Oct 2024 03:50:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 179BD6B00FD; Mon, 7 Oct 2024 03:50:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E22186B00FE; Mon, 7 Oct 2024 03:50:58 -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 B9AF76B00FC for ; Mon, 7 Oct 2024 03:50:58 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 5A93E161484 for ; Mon, 7 Oct 2024 07:50:58 +0000 (UTC) X-FDA: 82646034996.16.D4A8C86 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf15.hostedemail.com (Postfix) with ESMTP id 2703AA000B for ; Mon, 7 Oct 2024 07:50:55 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=jjDvyrXZ; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=Is+1Jb6y; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=jjDvyrXZ; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=Is+1Jb6y; spf=pass (imf15.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.130 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=1728287388; 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=PljpHijC2le6TjcuL38vbgVuWWQAUhtZMhhfqH3Mudw=; b=cW9POUMFQjnqpn+4BVr+S9leRdHOojwBZdTzYF5USL/uZdSvsHpZJEwqoYyxBkM7ENW8sF CEne5cBlDoLeXvsTc3l2I+9bf14irP+FEb4pUxJgGX8I/NGDwWo19rA/REDyezE9pc8Cyv eQtkoNYUP/TB4CBGLQV+ZII8ELRzLDI= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=jjDvyrXZ; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=Is+1Jb6y; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=jjDvyrXZ; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=Is+1Jb6y; spf=pass (imf15.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.130 as permitted sender) smtp.mailfrom=osalvador@suse.de; dmarc=pass (policy=none) header.from=suse.de ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728287388; a=rsa-sha256; cv=none; b=NcxN0B1Qae3tWEi4BywYcwnR4ARSvehBWZdQXVPf6K+CVqH2iL2NbrMQ78qsT3iXH2eBuh g5Gr94rg43VXODpzu36V0MpOHHDW76lWAWE8XgLKsquyPj6n81bDI7ds6nbsHyJKjPaPAS +uf4ZBk5Cydd9Xpz1P5ldEi2skQt4tU= 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-out1.suse.de (Postfix) with ESMTPS id D800621F3D; Mon, 7 Oct 2024 07:50:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1728287454; 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: in-reply-to:in-reply-to:references:references; bh=PljpHijC2le6TjcuL38vbgVuWWQAUhtZMhhfqH3Mudw=; b=jjDvyrXZLGwRxc+rhEwW0WySw7JheFddYHFILlj3PfC7Y/9i690Lm64tsU5bBkQ46gwGVH /dsv1MVTizOb3LlOBcyDKQfcHu4kRD5rDT1/yl/yAbB4QU3WlxbCQ6IFYE+W+S2H6FosTw /JlR9d4fwEU/BV0lM0sI/ruESP2H/HE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1728287454; 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: in-reply-to:in-reply-to:references:references; bh=PljpHijC2le6TjcuL38vbgVuWWQAUhtZMhhfqH3Mudw=; b=Is+1Jb6y0qzHi/vp/JmfqJaQQVmgHUXIKRdJY8ZWMyL7a/Axz1IY3IbojyAKX1mGQF0rb1 Q0cv/yTKNl4NPgAg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1728287454; 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: in-reply-to:in-reply-to:references:references; bh=PljpHijC2le6TjcuL38vbgVuWWQAUhtZMhhfqH3Mudw=; b=jjDvyrXZLGwRxc+rhEwW0WySw7JheFddYHFILlj3PfC7Y/9i690Lm64tsU5bBkQ46gwGVH /dsv1MVTizOb3LlOBcyDKQfcHu4kRD5rDT1/yl/yAbB4QU3WlxbCQ6IFYE+W+S2H6FosTw /JlR9d4fwEU/BV0lM0sI/ruESP2H/HE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1728287454; 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: in-reply-to:in-reply-to:references:references; bh=PljpHijC2le6TjcuL38vbgVuWWQAUhtZMhhfqH3Mudw=; b=Is+1Jb6y0qzHi/vp/JmfqJaQQVmgHUXIKRdJY8ZWMyL7a/Axz1IY3IbojyAKX1mGQF0rb1 Q0cv/yTKNl4NPgAg== 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 380B0132BD; Mon, 7 Oct 2024 07:50:54 +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 GJDPCt6SA2d6cQAAD6G6ig (envelope-from ); Mon, 07 Oct 2024 07:50:54 +0000 From: Oscar Salvador To: Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Peter Xu , Muchun Song , David Hildenbrand , Donet Tom , Vlastimil Babka , Michal Hocko , Lorenzo Stoakes , Oscar Salvador Subject: [PATCH v4 5/9] arch/powerpc: Teach book3s64 arch_get_unmapped_area{_topdown} to handle hugetlb mappings Date: Mon, 7 Oct 2024 09:50:33 +0200 Message-ID: <20241007075037.267650-6-osalvador@suse.de> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20241007075037.267650-1-osalvador@suse.de> References: <20241007075037.267650-1-osalvador@suse.de> MIME-Version: 1.0 X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 2703AA000B X-Stat-Signature: jhnwudhad4o6ittys63mk16dq7cd8zh8 X-HE-Tag: 1728287455-588348 X-HE-Meta: U2FsdGVkX1/JuHgWmtNxcG56/8i0L2AwMtY9mBAOWgT8khQDgL4xAiICQf5MXj877fI3r8lTGQGv7uz+5J71SyFr0ZkeBY8m/yaNpzlA9Mq0OIEEkd4goR5SeHMGKLk83GL2N1YipXBsENZZTJNGrWVC/fpB6vUGDT8irQ2qSnq3kwA4X0+U8X/gSoUrs0JpVMnk5DYkWdiRl8Gyae9TYT1ifdQmTsUoyOoyCgAiJN8X4h1yV0XAewGNac99R3/p/5htspg68iFZs54Xo6xKu57KAteDN9Hl56vM7ex481U9mU3t3ZKfHuxYRYVEuukjfHxkr4WWcswtF84lRfC7ZAKPwM80GdVCjEY0KPj2IlssR2/cBrMsc/9WI4aNkXgg3dgDbt1N3kEoSjXAKgQfl+W/FAb+Q9BWva4m5fI1sEzTjxXnPLSsFdxX2HT+Ego422VIWeoPtLVRIvkGq4ybC7eGyUTtnNB163N7mezT0gzZT2JJXaKCV3A1gDkkXKVw7eZ8jX4rWQKzGC+a2EjxZMsfQVFLSMzujBdlHYcf2kUBTR2xgxY+9YE5RaXwc1QaNj4a/WU8aAIukeVjj/+AGKh6XK8txkSa8fmyBYRyKYUdgPzOQ1Nz6bVozELSm4cMNBYHwyvXzidBZBWif+RgN8g8O9WaUNbYoSUjNwrPg4JpaeklRavqOtTddvfDLR9dQDXoWxcYqfZ87LqCxkLQK2LB44tuAIsIJu5RPMIZj2n7Ilu93d/FfAz3d84Zl+uYY5xsg5S9n3+wOsMyBHaZabkX8Ue/aYeVrdY96ohY+r9nqoVihWf+gWYNA+TWFaPZKSsf7WH/sc9QoE68c3xkZYwGWDyj1fZ3px7yXBuJKWJxeVdu2lfyCesg9DgoXyzS4C1xymB0G4y7Hgfq0l7LApCl3BEY2f9VjRts/Bdn5dscIzfyLveECE4kWlwx/oQME2HzZlmJBPN0VN08HgF Swz7X/W5 4IgxRk3YzDSDf0Mv5COaOOZxNjRHhxov2wnwj1jhDARHhybWb5WTeMWv3FoR8eeEgrJARwTEy6NnzjkjX5aYG1pb12qWKpCpcj1ioszjdDuMFtKmBYMsyUYEX08ZeLdPQ6DYVefAHMb0QH82EaIHsUCMu6ZHhwS+wH4kLHrGKSr5G7q7JlxhM3/VmkW2GdvYMAkB1XdCYmJBKjrGXD8VjHHkrrY4epJmZ3VwwqHGaGfes0utw2WD6dmRmwwXaUXgrFbSmtFAkN5GZuMqbqUme/XsDvRWqdZ7vLtBI42Pwa7lbrKOxw2/aaZRIRQ== 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: We want to stop special casing hugetlb mappings and make them go through generic channels, so teach arch_get_unmapped_area{_topdown} to handle those. Reshuffle file_to_psize() definition so arch_get_unmapped_area{_topdown} can make use of it. Signed-off-by: Oscar Salvador --- arch/powerpc/mm/book3s64/slice.c | 40 ++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/mm/book3s64/slice.c b/arch/powerpc/mm/book3s64/slice.c index 87307d0fc3b8..3a858f6b7270 100644 --- a/arch/powerpc/mm/book3s64/slice.c +++ b/arch/powerpc/mm/book3s64/slice.c @@ -633,6 +633,20 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len, } EXPORT_SYMBOL_GPL(slice_get_unmapped_area); +#ifdef CONFIG_HUGETLB_PAGE +static int file_to_psize(struct file *file) +{ + struct hstate *hstate = hstate_file(file); + + return shift_to_mmu_psize(huge_page_shift(hstate)); +} +#else +static int file_to_psize(struct file *file) +{ + return 0; +} +#endif + unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len, @@ -640,11 +654,17 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long flags, vm_flags_t vm_flags) { + unsigned int psize; + if (radix_enabled()) return generic_get_unmapped_area(filp, addr, len, pgoff, flags, vm_flags); - return slice_get_unmapped_area(addr, len, flags, - mm_ctx_user_psize(¤t->mm->context), 0); + if (filp && is_file_hugepages(filp)) + psize = file_to_psize(filp); + else + psize = mm_ctx_user_psize(¤t->mm->context); + + return slice_get_unmapped_area(addr, len, flags, psize, 0); } unsigned long arch_get_unmapped_area_topdown(struct file *filp, @@ -654,11 +674,17 @@ unsigned long arch_get_unmapped_area_topdown(struct file *filp, const unsigned long flags, vm_flags_t vm_flags) { + unsigned int psize; + if (radix_enabled()) return generic_get_unmapped_area_topdown(filp, addr0, len, pgoff, flags, vm_flags); - return slice_get_unmapped_area(addr0, len, flags, - mm_ctx_user_psize(¤t->mm->context), 1); + if (filp && is_file_hugepages(filp)) + psize = file_to_psize(filp); + else + psize = mm_ctx_user_psize(¤t->mm->context); + + return slice_get_unmapped_area(addr0, len, flags, psize, 1); } unsigned int notrace get_slice_psize(struct mm_struct *mm, unsigned long addr) @@ -789,12 +815,6 @@ unsigned long vma_mmu_pagesize(struct vm_area_struct *vma) return 1UL << mmu_psize_to_shift(get_slice_psize(vma->vm_mm, vma->vm_start)); } -static int file_to_psize(struct file *file) -{ - struct hstate *hstate = hstate_file(file); - return shift_to_mmu_psize(huge_page_shift(hstate)); -} - unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags)