From patchwork Sun Mar 17 16:28:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Ghiti X-Patchwork-Id: 10856409 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9212D6C2 for ; Sun, 17 Mar 2019 16:30:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 81A9229268 for ; Sun, 17 Mar 2019 16:30:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 73CF12927F; Sun, 17 Mar 2019 16:30:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2A94529268 for ; Sun, 17 Mar 2019 16:30:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 58D166B02F2; Sun, 17 Mar 2019 12:30:12 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 53A306B02F4; Sun, 17 Mar 2019 12:30:12 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 429E16B02F5; Sun, 17 Mar 2019 12:30:12 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by kanga.kvack.org (Postfix) with ESMTP id DEC506B02F2 for ; Sun, 17 Mar 2019 12:30:11 -0400 (EDT) Received: by mail-ed1-f70.google.com with SMTP id o27so5934126edc.14 for ; Sun, 17 Mar 2019 09:30:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=r/Vjiixhx3FNLOyNCupP3O6rpRbR7vCnpvYlarBDlm4=; b=YCxesaDQXQRAnUU6anAbGbze9BjkJzy9JgcVMEcQXNDbv8USemejYPGQyU5DWXMB7o Du4q2y7y3j8b8R6NVLe6K/mvJFs9wB/gF5UQKnefAHq3qNB8oB+faaHegBvZ7rxStBp2 FBzrtlFtJ0qBPeO0eLRdjWQ0iVlK62V+B71q1p2CHtnzVSKyVkETs1I2oDWROFqwHmTh zrH8MOU76sSup4SbxfP1DoGw3wtu4wIVZ5PmxL+daHV3774Wco9y5TOL82kGIA4ZrZ2y 20SJIf7w34Wn+vU/we7tZV+eQJkk6FfPPQHRc/7W1onqbkaYPzgdYoeQAawTzFG9V/AC 4d4w== X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 217.70.183.195 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr X-Gm-Message-State: APjAAAXgbM2mDqwhS4fVV//fkVyun1LhZUNQ+tRxzdN0KhMtZ3DMo41Z RlOs/LE9GiCHfxXLPZoBLibaDdWRMr5HNeXTPk9jogNAcXzJfmeIvMPBgX0A0LG9kwxjQ31XYY3 lTLeg93Vi2bN0EI52ug2sTPKEU9+fI6vOljBKJ77aoojLaNIH3MKnWEk0rkbfZ5o= X-Received: by 2002:a17:906:2a98:: with SMTP id l24mr3833067eje.25.1552840211356; Sun, 17 Mar 2019 09:30:11 -0700 (PDT) X-Google-Smtp-Source: APXvYqxZ8gc+/0/VVY5Yi9Vh38qvNFXmXJQdOoJAYVSW+piWFYic+S25/oXn1d2v7asFY+D6C2GJ X-Received: by 2002:a17:906:2a98:: with SMTP id l24mr3833025eje.25.1552840210014; Sun, 17 Mar 2019 09:30:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552840210; cv=none; d=google.com; s=arc-20160816; b=nCpeOZK9HiTbjsjWNKWubyO30hl7To/xTfvlv7946+wX3U1nmptvt6Hx/9mI4yK8DD B6rV9HKJ+K/vd1KBISgxNpcYZ6X5jZeGARCuqMO4TiT68r8+GfXDf2KnJ5AmomDOH24T zPkmPG43OCA6CJN4cfxy9Ww7VQUJQjZJ9NJ+UF52fEcB4MBkjRsfwDuyxlfSQ5JepRUk jmQ/srQ0CJE6BzT5vaZ5O6qltVFNNBs1ADWPBfRt/u6xm1DeLBi/+Lw9epVA6YWtpYXi zE0eycpOCwkxyX2OdNUvK/TgVmU9WF8otnbdfG5z45qXMvqT/tRVUQZDvgqyRHQZtPEa SXMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=r/Vjiixhx3FNLOyNCupP3O6rpRbR7vCnpvYlarBDlm4=; b=a03DwRJr+8NFOUdIcMRJmqCHikmlLO9Z1p53DcM1VEtM5C26u4AKks0d9nnusoUA9e bQgLyc/mTVBK6JHVeFkDN8ZmR+swb5TqFcCCpGGYblggIFKdYLfHBDLsRBoBQtTL6cUn qb+l9ghwZA4Q9xcJQyJmpDMv+gRFqqsVA5EsOVix1lFVS6bffzK8TR+BHQqKVYkxtl8B 6ZoTKUJIYCG8Dnxxh0INxitIqwl8oCzwUghAIHpkSBruaa32/TQIwHtBYD8UD7SrbkhL Yfd4kTGcuY7QL9w68qWAa7l2cvh/jwE+V5C86vWySDTOi3EIkUYZZ3pqKKBdFaNvp+iH Md4Q== ARC-Authentication-Results: i=1; mx.google.com; spf=neutral (google.com: 217.70.183.195 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net. [217.70.183.195]) by mx.google.com with ESMTPS id m10si2805557ejb.232.2019.03.17.09.30.09 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 17 Mar 2019 09:30:10 -0700 (PDT) Received-SPF: neutral (google.com: 217.70.183.195 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) client-ip=217.70.183.195; Authentication-Results: mx.google.com; spf=neutral (google.com: 217.70.183.195 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr X-Originating-IP: 79.86.19.127 Received: from alex.numericable.fr (127.19.86.79.rev.sfr.net [79.86.19.127]) (Authenticated sender: alex@ghiti.fr) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 6C5CA60005; Sun, 17 Mar 2019 16:30:00 +0000 (UTC) From: Alexandre Ghiti To: aneesh.kumar@linux.ibm.com, mpe@ellerman.id.au, Andrew Morton , Vlastimil Babka , Catalin Marinas , Will Deacon , Benjamin Herrenschmidt , Paul Mackerras , Martin Schwidefsky , Heiko Carstens , Yoshinori Sato , Rich Felker , "David S . Miller" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H . Peter Anvin" , x86@kernel.org, Dave Hansen , Andy Lutomirski , Peter Zijlstra , Mike Kravetz , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-mm@kvack.org Cc: Alexandre Ghiti Subject: [PATCH v7 1/4] sh: Advertise gigantic page support Date: Sun, 17 Mar 2019 12:28:44 -0400 Message-Id: <20190317162847.14107-2-alex@ghiti.fr> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190317162847.14107-1-alex@ghiti.fr> References: <20190317162847.14107-1-alex@ghiti.fr> MIME-Version: 1.0 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: X-Virus-Scanned: ClamAV using ClamSMTP sh actually supports gigantic pages and selecting ARCH_HAS_GIGANTIC_PAGE allows it to allocate and free gigantic pages at runtime. At least sdk7786_defconfig exposes such a configuration with huge pages of 64MB, pages of 4KB and MAX_ORDER = 11: HPAGE_SHIFT (26) - PAGE_SHIFT (12) = 14 >= MAX_ORDER (11) Signed-off-by: Alexandre Ghiti --- arch/sh/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index a9c36f95744a..299a17bed67c 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -53,6 +53,7 @@ config SUPERH select HAVE_FUTEX_CMPXCHG if FUTEX select HAVE_NMI select NEED_SG_DMA_LENGTH + select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA help The SuperH is a RISC processor targeted for use in embedded systems From patchwork Sun Mar 17 16:28:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Ghiti X-Patchwork-Id: 10856415 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 269CE1823 for ; Sun, 17 Mar 2019 16:31:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 124312926B for ; Sun, 17 Mar 2019 16:31:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 03FA529296; Sun, 17 Mar 2019 16:31:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AB2A429290 for ; Sun, 17 Mar 2019 16:31:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D03976B02F4; Sun, 17 Mar 2019 12:31:22 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id CB3B96B02F6; Sun, 17 Mar 2019 12:31:22 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BCB846B02F7; Sun, 17 Mar 2019 12:31:22 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by kanga.kvack.org (Postfix) with ESMTP id 6627E6B02F4 for ; Sun, 17 Mar 2019 12:31:22 -0400 (EDT) Received: by mail-ed1-f70.google.com with SMTP id t4so5796733eds.1 for ; Sun, 17 Mar 2019 09:31:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=zQnpH8zaNMj9f8CSWUqk/1sf91xgKsQaG3Y3A4jkMj8=; b=dCYZYJbgae+lMDWU9oQ+PMTq6frVA5/9qjiC8Off7dXDPPOb7jn21r/lWwtvXHU8sW lFpA4Noysa6vtkxuXyW8wKk7M6zG2OKZxdz/EghAQfMXG0DGcp8WELBseoZ1N9aaLDy/ fuNnSE9fbhpW/Il3emMns7jRFhXN/mRSppBDVrhJJ9mHyPBTqEcFvOOK1kxYWZrprzo2 sddhiVUuI8eJl5jAuN+OM2yKMxJJroA2KN5yVeyvwC+JJdILyLFFXc3pOW6gywjXHGGg +l1MBS0lXX1XkOxA2wFZ44Ua9f3lWZF/raorVDjuHHLn8AwVgBNd65KUqdhvI5VYGuj7 a35A== X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 217.70.178.231 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr X-Gm-Message-State: APjAAAWMMfGYjERap5r/QEVt09Z87REeL7K1Qnybzo7vIY3DXziu1N0B Ol2V6W3sBIDV+/KWyxn6Jc0cfIZ7SiLjO/atnqrfC8az55wx7z7+bayyqpgPKKT30CSHIFrI//s v+/jQV1/mfjApucIuLptVBLuYJLLc3a0HoyW+MyxOOqgyB8WvZc+VuHaoDOOCW1E= X-Received: by 2002:a17:906:33d5:: with SMTP id w21mr8503525eja.152.1552840281866; Sun, 17 Mar 2019 09:31:21 -0700 (PDT) X-Google-Smtp-Source: APXvYqxzs02DOzq+eFRzn/AckrjtC4fL4V+o5cyqJhf4WmyckJeILFTt1fqhPlaeGlHJl4D/5+N4 X-Received: by 2002:a17:906:33d5:: with SMTP id w21mr8503487eja.152.1552840280629; Sun, 17 Mar 2019 09:31:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552840280; cv=none; d=google.com; s=arc-20160816; b=iOsGb5lI5PDfZSzibKeNcjSq4e9HcZWrTT71QZ38Ko/LmRIDk0HPVcCqjRsm/sXDWL pQJvcsTB+pcVkY5rP9MPlakvhOgTcY7vVO7D+4kbrkZfO13bR+DthJvz4oMUhkjhhxHl qIQCd9KGYDKAf3r9zTa1mNjBiboTqgyMpYkm0Y5VjqhyUxnF1d9ld2K9KnRRyRbajwor z5QCPn8wKj3mrIql1Qy38ni54iciTxIWkkOrZDepdpsRmsb4h+graaDHaBuTHL15OC46 M5iXSroFCFCH+BrvGtFXYCKDeZxfKMp73zZlBeNI/6KieZmVlI/urXsLHhBlAXVq2uB3 Zmcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=zQnpH8zaNMj9f8CSWUqk/1sf91xgKsQaG3Y3A4jkMj8=; b=K0BSTWzIL32aGAYfjxbeSf60HYsR9u8kTJtwvmUEw9bUCGm14iaNYhpoLcoxpvISZZ sr29rIVsHmRUUqRK2cc9THUcz8/B6CI0toOUifZcAL9sWxo1ZjleO3U7CJtyH7icxbdF guQivQR73l6lBWmPcAF8q4kD9b+r5TnXV1o0sg9hN/XC6tX5ggIYGKffIDW+Q70XKP5d 3uF462Z6IAsh86oAKPS8utUlASLsOMp6U3bcD3uyE90HcTp3dRYKmxpf4IGCACUkmt/T lIr8eyPlvudmeSX5ysXjnb3w6Bmi8Rs0daZowSGzD9wGuDtf53ASBTMLEv9Q0NUIhfUd dYqw== ARC-Authentication-Results: i=1; mx.google.com; spf=neutral (google.com: 217.70.178.231 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr Received: from relay11.mail.gandi.net (relay11.mail.gandi.net. [217.70.178.231]) by mx.google.com with ESMTPS id g1si1533841ejt.238.2019.03.17.09.31.20 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 17 Mar 2019 09:31:20 -0700 (PDT) Received-SPF: neutral (google.com: 217.70.178.231 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) client-ip=217.70.178.231; Authentication-Results: mx.google.com; spf=neutral (google.com: 217.70.178.231 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr Received: from alex.numericable.fr (127.19.86.79.rev.sfr.net [79.86.19.127]) (Authenticated sender: alex@ghiti.fr) by relay11.mail.gandi.net (Postfix) with ESMTPSA id 129DB100003; Sun, 17 Mar 2019 16:31:09 +0000 (UTC) From: Alexandre Ghiti To: aneesh.kumar@linux.ibm.com, mpe@ellerman.id.au, Andrew Morton , Vlastimil Babka , Catalin Marinas , Will Deacon , Benjamin Herrenschmidt , Paul Mackerras , Martin Schwidefsky , Heiko Carstens , Yoshinori Sato , Rich Felker , "David S . Miller" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H . Peter Anvin" , x86@kernel.org, Dave Hansen , Andy Lutomirski , Peter Zijlstra , Mike Kravetz , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-mm@kvack.org Cc: Alexandre Ghiti Subject: [PATCH v7 2/4] sparc: Advertise gigantic page support Date: Sun, 17 Mar 2019 12:28:45 -0400 Message-Id: <20190317162847.14107-3-alex@ghiti.fr> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190317162847.14107-1-alex@ghiti.fr> References: <20190317162847.14107-1-alex@ghiti.fr> MIME-Version: 1.0 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: X-Virus-Scanned: ClamAV using ClamSMTP sparc actually supports gigantic pages and selecting ARCH_HAS_GIGANTIC_PAGE allows it to allocate and free gigantic pages at runtime. sparc allows configuration such as huge pages of 16GB, pages of 8KB and MAX_ORDER = 13 (default): HPAGE_SHIFT (34) - PAGE_SHIFT (13) = 21 >= MAX_ORDER (13) Signed-off-by: Alexandre Ghiti Acked-by: David S. Miller --- arch/sparc/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index d5dd652fb8cc..0b7f0e0fefa5 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -90,6 +90,7 @@ config SPARC64 select ARCH_CLOCKSOURCE_DATA select ARCH_HAS_PTE_SPECIAL select PCI_DOMAINS if PCI + select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA config ARCH_DEFCONFIG string From patchwork Sun Mar 17 16:28:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Ghiti X-Patchwork-Id: 10856423 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D261A1390 for ; Sun, 17 Mar 2019 16:32:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C34A329193 for ; Sun, 17 Mar 2019 16:32:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B6DC729268; Sun, 17 Mar 2019 16:32:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3F00829193 for ; Sun, 17 Mar 2019 16:32:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8223B6B02F6; Sun, 17 Mar 2019 12:32:35 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 7F6EA6B02F8; Sun, 17 Mar 2019 12:32:35 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 70DB96B02F9; Sun, 17 Mar 2019 12:32:35 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by kanga.kvack.org (Postfix) with ESMTP id 1C5FD6B02F6 for ; Sun, 17 Mar 2019 12:32:35 -0400 (EDT) Received: by mail-ed1-f69.google.com with SMTP id k21so5973782eds.19 for ; Sun, 17 Mar 2019 09:32:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=UXIrtiJ9sbtD68WeT6RDPp8dZNW0OEGDh6qCE1vVu44=; b=XlePWYVsZbmO7eYTTSVizFZaXa5TtFG/sXSw456b7kzAXfYIstuP9FyFNAem3pRQO5 JeEmyu8L/6T1Or2W9G3dXCz8/AqXlD+U3inGzKkKGIMWtJin4I58hRMT+IzJcSTNGGBy P7gfsTS38nSBbIRkfXezx8bZsXAUPBE4nb/6mnS7bTYQ7r/CQ0lFzab/qLdKnIpvj4pf sg7Xb6211YikicaaGzcxSfItdoL5rVpTqh1Uy/nWaNo4Fi1yalrqtVEDsGO3LnIrAktR UEHgnXysAfhwD2Nk1VWgrXEIdYMH4SIrXe+Hai8mmUf53xpOWqJafCIUHBFmFlkLWCND 3llg== X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 217.70.178.232 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr X-Gm-Message-State: APjAAAW839r6XXJZgxWlnOTnaOYYY2wK1awjxJ9N2Z1JciGWSJuFagvK +kcL+J1PCe+2qHvdrF3BCG/y4q/kLwA55JHcES7oLRZDdfy+ZLIzEgU5MZFSdNvJimSGqyfgEh0 H9FTo7AbnqisSd+R8JTRZ7hF0o5LO5YU7I0ekvoDLJvoQp9N89bbdKsjhoFQDjFY= X-Received: by 2002:aa7:d892:: with SMTP id u18mr8647550edq.60.1552840354502; Sun, 17 Mar 2019 09:32:34 -0700 (PDT) X-Google-Smtp-Source: APXvYqwM8cUuKjPyKCMyVdR5MjWLZ41sn0YuFeWBGTC3VLVrl70jXCfEKqAseki8otQ60j2dqBiB X-Received: by 2002:aa7:d892:: with SMTP id u18mr8647490edq.60.1552840353188; Sun, 17 Mar 2019 09:32:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552840353; cv=none; d=google.com; s=arc-20160816; b=dRP9QCxNEuARtbiYQWTkAiYkT9NhXf8t05o9ajGSyoPEFjbHo3mE39wNaCnTsBXXGQ mFtBquunF4NvLp1OviKo/Ey9dysC+F58TSu25sffLViBS4xupsRPhqjgwLtt27CsDa9I SraRk7a8yz9ntfUt1pFPl3MC9rcYeughCC0/8ss9o2QNoN/I9sA7G5rutx2bOKLumsL1 8DX+R6ZfFr1mNemAovwCTnoRq1OmzAewXbFjkikOPN/8q1h3DR2qHT0aLofHV6u9pzpQ hjQB7OkuxjDBMR9YZ8Uqr6PxjSBH5WUNxJucXynnY6rFdU/vATTRW26nbgd1KX6/4Xtc 9y/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=UXIrtiJ9sbtD68WeT6RDPp8dZNW0OEGDh6qCE1vVu44=; b=lX7FmPbsm642H2Dsoz/X46ljw5/KAqgnmzWG5xVqgxdRnUel9awfe16BVggD0BEnBE knoJSXSft5nkGYLjvuz3zLlmlOL7nYiqFKXBIR0pFSpjW/2b5uEHoiWNmlvp9pKWMLZW hn7YDIox0u5W79vHXN5SJeHB2erW09EqPn3AlVcp9gzPWomPnwzYlmenLmU/0Ah7KaV1 WurtoUqYNagee2byYC5lGH+S8y+ZXEKq1K7CzCz4KiWbLbINHBqox7F6AGhZyyrr288F CCKL9sQfN3l4F1wM3XLolDn/wSwJWgY7ZbQdy8k42j5D7coU2iLsTFCockensyOkptbw l/ug== ARC-Authentication-Results: i=1; mx.google.com; spf=neutral (google.com: 217.70.178.232 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr Received: from relay12.mail.gandi.net (relay12.mail.gandi.net. [217.70.178.232]) by mx.google.com with ESMTPS id o45si1327714edc.369.2019.03.17.09.32.32 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 17 Mar 2019 09:32:33 -0700 (PDT) Received-SPF: neutral (google.com: 217.70.178.232 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) client-ip=217.70.178.232; Authentication-Results: mx.google.com; spf=neutral (google.com: 217.70.178.232 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr Received: from alex.numericable.fr (127.19.86.79.rev.sfr.net [79.86.19.127]) (Authenticated sender: alex@ghiti.fr) by relay12.mail.gandi.net (Postfix) with ESMTPSA id AE370200006; Sun, 17 Mar 2019 16:32:20 +0000 (UTC) From: Alexandre Ghiti To: aneesh.kumar@linux.ibm.com, mpe@ellerman.id.au, Andrew Morton , Vlastimil Babka , Catalin Marinas , Will Deacon , Benjamin Herrenschmidt , Paul Mackerras , Martin Schwidefsky , Heiko Carstens , Yoshinori Sato , Rich Felker , "David S . Miller" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H . Peter Anvin" , x86@kernel.org, Dave Hansen , Andy Lutomirski , Peter Zijlstra , Mike Kravetz , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-mm@kvack.org Cc: Alexandre Ghiti Subject: [PATCH v7 3/4] mm: Simplify MEMORY_ISOLATION && COMPACTION || CMA into CONTIG_ALLOC Date: Sun, 17 Mar 2019 12:28:46 -0400 Message-Id: <20190317162847.14107-4-alex@ghiti.fr> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190317162847.14107-1-alex@ghiti.fr> References: <20190317162847.14107-1-alex@ghiti.fr> MIME-Version: 1.0 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: X-Virus-Scanned: ClamAV using ClamSMTP This condition allows to define alloc_contig_range, so simplify it into a more accurate naming. Suggested-by: Vlastimil Babka Signed-off-by: Alexandre Ghiti Acked-by: Vlastimil Babka --- arch/arm64/Kconfig | 2 +- arch/powerpc/platforms/Kconfig.cputype | 2 +- arch/s390/Kconfig | 2 +- arch/sh/Kconfig | 2 +- arch/sparc/Kconfig | 2 +- arch/x86/Kconfig | 2 +- arch/x86/mm/hugetlbpage.c | 2 +- include/linux/gfp.h | 2 +- mm/Kconfig | 3 +++ mm/page_alloc.c | 3 +-- 10 files changed, 12 insertions(+), 10 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index a4168d366127..091a513b93e9 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -18,7 +18,7 @@ config ARM64 select ARCH_HAS_FAST_MULTIPLIER select ARCH_HAS_FORTIFY_SOURCE select ARCH_HAS_GCOV_PROFILE_ALL - select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA + select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC select ARCH_HAS_KCOV select ARCH_HAS_MEMBARRIER_SYNC_CORE select ARCH_HAS_PTE_SPECIAL diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype index 8c7464c3f27f..f677c8974212 100644 --- a/arch/powerpc/platforms/Kconfig.cputype +++ b/arch/powerpc/platforms/Kconfig.cputype @@ -319,7 +319,7 @@ config ARCH_ENABLE_SPLIT_PMD_PTLOCK config PPC_RADIX_MMU bool "Radix MMU Support" depends on PPC_BOOK3S_64 - select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA + select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC default y help Enable support for the Power ISA 3.0 Radix style MMU. Currently this diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index ed554b09eb3f..1c57b83c76f5 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -69,7 +69,7 @@ config S390 select ARCH_HAS_ELF_RANDOMIZE select ARCH_HAS_FORTIFY_SOURCE select ARCH_HAS_GCOV_PROFILE_ALL - select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA + select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC select ARCH_HAS_KCOV select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_SET_MEMORY diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 299a17bed67c..c7266302691c 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -53,7 +53,7 @@ config SUPERH select HAVE_FUTEX_CMPXCHG if FUTEX select HAVE_NMI select NEED_SG_DMA_LENGTH - select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA + select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC help The SuperH is a RISC processor targeted for use in embedded systems diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 0b7f0e0fefa5..ca33c80870e2 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -90,7 +90,7 @@ config SPARC64 select ARCH_CLOCKSOURCE_DATA select ARCH_HAS_PTE_SPECIAL select PCI_DOMAINS if PCI - select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA + select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC config ARCH_DEFCONFIG string diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 68261430fe6e..8ba90f3e0038 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -23,7 +23,7 @@ config X86_64 def_bool y depends on 64BIT # Options that are inherently 64-bit kernel only: - select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA + select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC select ARCH_SUPPORTS_INT128 select ARCH_USE_CMPXCHG_LOCKREF select HAVE_ARCH_SOFT_DIRTY diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c index 92e4c4b85bba..fab095362c50 100644 --- a/arch/x86/mm/hugetlbpage.c +++ b/arch/x86/mm/hugetlbpage.c @@ -203,7 +203,7 @@ static __init int setup_hugepagesz(char *opt) } __setup("hugepagesz=", setup_hugepagesz); -#if (defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || defined(CONFIG_CMA) +#ifdef CONFIG_CONTIG_ALLOC static __init int gigantic_pages_init(void) { /* With compaction or CMA we can allocate gigantic pages at runtime */ diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 5f5e25fd6149..1f1ad9aeebb9 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -585,7 +585,7 @@ static inline bool pm_suspended_storage(void) } #endif /* CONFIG_PM_SLEEP */ -#if (defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || defined(CONFIG_CMA) +#ifdef CONFIG_CONTIG_ALLOC /* The below functions must be run on a range from a single zone. */ extern int alloc_contig_range(unsigned long start, unsigned long end, unsigned migratetype, gfp_t gfp_mask); diff --git a/mm/Kconfig b/mm/Kconfig index 25c71eb8a7db..137eadc18732 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -258,6 +258,9 @@ config ARCH_ENABLE_HUGEPAGE_MIGRATION config ARCH_ENABLE_THP_MIGRATION bool +config CONTIG_ALLOC + def_bool (MEMORY_ISOLATION && COMPACTION) || CMA + config PHYS_ADDR_T_64BIT def_bool 64BIT diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 35fdde041f5c..ac9c45ffb344 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -8024,8 +8024,7 @@ bool has_unmovable_pages(struct zone *zone, struct page *page, int count, return true; } -#if (defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || defined(CONFIG_CMA) - +#ifdef CONFIG_CONTIG_ALLOC static unsigned long pfn_max_align_down(unsigned long pfn) { return pfn & ~(max_t(unsigned long, MAX_ORDER_NR_PAGES, From patchwork Sun Mar 17 16:28:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Ghiti X-Patchwork-Id: 10856427 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id ED13C6C2 for ; Sun, 17 Mar 2019 16:33:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D2E1F29193 for ; Sun, 17 Mar 2019 16:33:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C5DFD29268; Sun, 17 Mar 2019 16:33:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C5BB029193 for ; Sun, 17 Mar 2019 16:33:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E13C66B02F8; Sun, 17 Mar 2019 12:33:44 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id DC2556B02FA; Sun, 17 Mar 2019 12:33:44 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C64D76B02FB; Sun, 17 Mar 2019 12:33:44 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by kanga.kvack.org (Postfix) with ESMTP id 65AC06B02F8 for ; Sun, 17 Mar 2019 12:33:44 -0400 (EDT) Received: by mail-ed1-f69.google.com with SMTP id k21so5974342eds.19 for ; Sun, 17 Mar 2019 09:33:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=G1y6QFYkkPvajdMwD94q+O4CeZhkRTCXvnC9LVH9ftw=; b=V9O76JpG7ykqcnfMNyCwJ8ARw/tlCRNfCtoc/r3MMIzcr9K8skB/y9jhW5ixX7DVRC ljqYkPcbynUee1JiVEAuX5pkjeyny3XL4emTStkqHvSancH/bOaAIqE9BCNwd2mB6Nnj I0JiYWSz8LFNd8ivieWhQfxqb4pJYdCj6PJQFPeuvV5xY9NC4TcgjeEta4MqdtCmw/9G PEgUsIYWs0ajj6sEYJhFHbzDM/QND2ou5JtHAiiAqYm7k8y3cfSjYgG6jjOZUPHlbGpo hoBNsZEekLK+sjBUIT9zeIF4yrVrOKq/sIIEtL9u/JjVKVkQ35SUIJHke4gioDB7Nawd YxCw== X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 217.70.178.232 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr X-Gm-Message-State: APjAAAXFIXfZ8A0SDULie59lwvZLPzluexTnEs/P3mKB47+R0dpfzHaB poE0RJmLv0ZZEaOzhM7thz3AInRx84jpGLhJag97t0eg7cqZG6lGEI/0hvRYBj/MSm8jn8WOTpk 2HHUzoO5O+6ViReg73HpkfTXz8yfz0i8aQiU8offY2A112V4dlEbkuaQDxh+WqGc= X-Received: by 2002:a50:d889:: with SMTP id p9mr789369edj.96.1552840423845; Sun, 17 Mar 2019 09:33:43 -0700 (PDT) X-Google-Smtp-Source: APXvYqwByKFwC8v/63dVXsCXFzaQAn2LuVFZ+CL7airtsqiNF3ChdRTPjT7YwbXnFb1fPD2Vx/K2 X-Received: by 2002:a50:d889:: with SMTP id p9mr789305edj.96.1552840422287; Sun, 17 Mar 2019 09:33:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552840422; cv=none; d=google.com; s=arc-20160816; b=LmdUNknRC4k0TRvPhXrVkpBSqsFDQc70A/9+ihw5kGgOqyGJx1aiX3ewCcfAFKvzud 7rgF9Qv8kaPbRxT76avIzg/gs9QgW3FPqKZ8zpEgkottqcshI4/DL6fIoP9flvNSlfwI YpGrNe7IE2l7fdLYdwzr+WIVucuGBNWyBmkZUSknjj2ERwGUoIeMWFJcsaqK/ptq4lK7 olAzCHSY4LGPVdxlnC9YoXx7ZTiZ3oGXE+xC/Bm5kAsH10WTDpL6D44I/G5g6KuBumoG tXisw/LdO7tKORTCxvSTAarJRvz4d56MkCVRWgrfJJDtL9taY9IgjsBo0ogQpXVQBAmC 9lOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=G1y6QFYkkPvajdMwD94q+O4CeZhkRTCXvnC9LVH9ftw=; b=EYg9CnvuBFD30hUV3OykllOBqpGDnu57Zn6bV4nwjgnvbM2VDSdBYRquJzj5wJQp8C +aLC5jY+rv6cDxd1mkh8VV9+0bn4WJdvuz4lXcE15TZgLlcrPI5XvzWKOinRuRDrpTyQ PPBP4tW2OTfN4P7Jgdj0tqhWDII3MEXmQMiy/t+Wx9JdTPs7UZXER0UyEMuO/QgxNdSw 4MHiA5mHri84r5Bmn/OI1DmpEvd6hCdMIfbOGeu21mn1FN+wTXeHPhVkzxXt/dgV3YzZ v7UItAPoa0+6d9BQ+FbLx5KV3eLzq2sgABozmZ6gy3i+SORIYtsMednNTbHJcdLjurZW jt8w== ARC-Authentication-Results: i=1; mx.google.com; spf=neutral (google.com: 217.70.178.232 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr Received: from relay12.mail.gandi.net (relay12.mail.gandi.net. [217.70.178.232]) by mx.google.com with ESMTPS id b17si3044893edw.309.2019.03.17.09.33.42 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 17 Mar 2019 09:33:42 -0700 (PDT) Received-SPF: neutral (google.com: 217.70.178.232 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) client-ip=217.70.178.232; Authentication-Results: mx.google.com; spf=neutral (google.com: 217.70.178.232 is neither permitted nor denied by best guess record for domain of alex@ghiti.fr) smtp.mailfrom=alex@ghiti.fr Received: from alex.numericable.fr (127.19.86.79.rev.sfr.net [79.86.19.127]) (Authenticated sender: alex@ghiti.fr) by relay12.mail.gandi.net (Postfix) with ESMTPSA id 52E2A200003; Sun, 17 Mar 2019 16:33:33 +0000 (UTC) From: Alexandre Ghiti To: aneesh.kumar@linux.ibm.com, mpe@ellerman.id.au, Andrew Morton , Vlastimil Babka , Catalin Marinas , Will Deacon , Benjamin Herrenschmidt , Paul Mackerras , Martin Schwidefsky , Heiko Carstens , Yoshinori Sato , Rich Felker , "David S . Miller" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H . Peter Anvin" , x86@kernel.org, Dave Hansen , Andy Lutomirski , Peter Zijlstra , Mike Kravetz , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-mm@kvack.org Cc: Alexandre Ghiti Subject: [PATCH v7 4/4] hugetlb: allow to free gigantic pages regardless of the configuration Date: Sun, 17 Mar 2019 12:28:47 -0400 Message-Id: <20190317162847.14107-5-alex@ghiti.fr> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190317162847.14107-1-alex@ghiti.fr> References: <20190317162847.14107-1-alex@ghiti.fr> MIME-Version: 1.0 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: X-Virus-Scanned: ClamAV using ClamSMTP On systems without CONTIG_ALLOC activated but that support gigantic pages, boottime reserved gigantic pages can not be freed at all. This patch simply enables the possibility to hand back those pages to memory allocator. Signed-off-by: Alexandre Ghiti Acked-by: David S. Miller [sparc] --- arch/arm64/Kconfig | 2 +- arch/arm64/include/asm/hugetlb.h | 4 -- arch/powerpc/include/asm/book3s/64/hugetlb.h | 7 --- arch/powerpc/platforms/Kconfig.cputype | 2 +- arch/s390/Kconfig | 2 +- arch/s390/include/asm/hugetlb.h | 3 -- arch/sh/Kconfig | 2 +- arch/sparc/Kconfig | 2 +- arch/x86/Kconfig | 2 +- arch/x86/include/asm/hugetlb.h | 4 -- include/asm-generic/hugetlb.h | 14 +++++ include/linux/gfp.h | 2 +- mm/hugetlb.c | 54 ++++++++++++++------ mm/page_alloc.c | 4 +- 14 files changed, 61 insertions(+), 43 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 091a513b93e9..af687eff884a 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -18,7 +18,7 @@ config ARM64 select ARCH_HAS_FAST_MULTIPLIER select ARCH_HAS_FORTIFY_SOURCE select ARCH_HAS_GCOV_PROFILE_ALL - select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC + select ARCH_HAS_GIGANTIC_PAGE select ARCH_HAS_KCOV select ARCH_HAS_MEMBARRIER_SYNC_CORE select ARCH_HAS_PTE_SPECIAL diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h index fb6609875455..59893e766824 100644 --- a/arch/arm64/include/asm/hugetlb.h +++ b/arch/arm64/include/asm/hugetlb.h @@ -65,8 +65,4 @@ extern void set_huge_swap_pte_at(struct mm_struct *mm, unsigned long addr, #include -#ifdef CONFIG_ARCH_HAS_GIGANTIC_PAGE -static inline bool gigantic_page_supported(void) { return true; } -#endif - #endif /* __ASM_HUGETLB_H */ diff --git a/arch/powerpc/include/asm/book3s/64/hugetlb.h b/arch/powerpc/include/asm/book3s/64/hugetlb.h index 5b0177733994..d04a0bcc2f1c 100644 --- a/arch/powerpc/include/asm/book3s/64/hugetlb.h +++ b/arch/powerpc/include/asm/book3s/64/hugetlb.h @@ -32,13 +32,6 @@ static inline int hstate_get_psize(struct hstate *hstate) } } -#ifdef CONFIG_ARCH_HAS_GIGANTIC_PAGE -static inline bool gigantic_page_supported(void) -{ - return true; -} -#endif - /* hugepd entry valid bit */ #define HUGEPD_VAL_BITS (0x8000000000000000UL) diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype index f677c8974212..dc0328de20cd 100644 --- a/arch/powerpc/platforms/Kconfig.cputype +++ b/arch/powerpc/platforms/Kconfig.cputype @@ -319,7 +319,7 @@ config ARCH_ENABLE_SPLIT_PMD_PTLOCK config PPC_RADIX_MMU bool "Radix MMU Support" depends on PPC_BOOK3S_64 - select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC + select ARCH_HAS_GIGANTIC_PAGE default y help Enable support for the Power ISA 3.0 Radix style MMU. Currently this diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 1c57b83c76f5..d84e536796b1 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -69,7 +69,7 @@ config S390 select ARCH_HAS_ELF_RANDOMIZE select ARCH_HAS_FORTIFY_SOURCE select ARCH_HAS_GCOV_PROFILE_ALL - select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC + select ARCH_HAS_GIGANTIC_PAGE select ARCH_HAS_KCOV select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_SET_MEMORY diff --git a/arch/s390/include/asm/hugetlb.h b/arch/s390/include/asm/hugetlb.h index 2d1afa58a4b6..bd191560efcf 100644 --- a/arch/s390/include/asm/hugetlb.h +++ b/arch/s390/include/asm/hugetlb.h @@ -116,7 +116,4 @@ static inline pte_t huge_pte_modify(pte_t pte, pgprot_t newprot) return pte_modify(pte, newprot); } -#ifdef CONFIG_ARCH_HAS_GIGANTIC_PAGE -static inline bool gigantic_page_supported(void) { return true; } -#endif #endif /* _ASM_S390_HUGETLB_H */ diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index c7266302691c..404b12a0d871 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -53,7 +53,7 @@ config SUPERH select HAVE_FUTEX_CMPXCHG if FUTEX select HAVE_NMI select NEED_SG_DMA_LENGTH - select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC + select ARCH_HAS_GIGANTIC_PAGE help The SuperH is a RISC processor targeted for use in embedded systems diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index ca33c80870e2..234a6bd46e89 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -90,7 +90,7 @@ config SPARC64 select ARCH_CLOCKSOURCE_DATA select ARCH_HAS_PTE_SPECIAL select PCI_DOMAINS if PCI - select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC + select ARCH_HAS_GIGANTIC_PAGE config ARCH_DEFCONFIG string diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 8ba90f3e0038..ff24eaeef211 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -23,7 +23,7 @@ config X86_64 def_bool y depends on 64BIT # Options that are inherently 64-bit kernel only: - select ARCH_HAS_GIGANTIC_PAGE if CONTIG_ALLOC + select ARCH_HAS_GIGANTIC_PAGE select ARCH_SUPPORTS_INT128 select ARCH_USE_CMPXCHG_LOCKREF select HAVE_ARCH_SOFT_DIRTY diff --git a/arch/x86/include/asm/hugetlb.h b/arch/x86/include/asm/hugetlb.h index 7469d321f072..f65cfb48cfdd 100644 --- a/arch/x86/include/asm/hugetlb.h +++ b/arch/x86/include/asm/hugetlb.h @@ -17,8 +17,4 @@ static inline void arch_clear_hugepage_flags(struct page *page) { } -#ifdef CONFIG_ARCH_HAS_GIGANTIC_PAGE -static inline bool gigantic_page_supported(void) { return true; } -#endif - #endif /* _ASM_X86_HUGETLB_H */ diff --git a/include/asm-generic/hugetlb.h b/include/asm-generic/hugetlb.h index 71d7b77eea50..aaf14974ee5f 100644 --- a/include/asm-generic/hugetlb.h +++ b/include/asm-generic/hugetlb.h @@ -126,4 +126,18 @@ static inline pte_t huge_ptep_get(pte_t *ptep) } #endif +#ifndef __HAVE_ARCH_GIGANTIC_PAGE_RUNTIME_SUPPORTED +#ifdef CONFIG_ARCH_HAS_GIGANTIC_PAGE +static inline bool gigantic_page_runtime_supported(void) +{ + return true; +} +#else +static inline bool gigantic_page_runtime_supported(void) +{ + return false; +} +#endif /* CONFIG_ARCH_HAS_GIGANTIC_PAGE */ +#endif /* __HAVE_ARCH_GIGANTIC_PAGE_RUNTIME_SUPPORTED */ + #endif /* _ASM_GENERIC_HUGETLB_H */ diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 1f1ad9aeebb9..58ea44bf75de 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -589,8 +589,8 @@ static inline bool pm_suspended_storage(void) /* The below functions must be run on a range from a single zone. */ extern int alloc_contig_range(unsigned long start, unsigned long end, unsigned migratetype, gfp_t gfp_mask); -extern void free_contig_range(unsigned long pfn, unsigned nr_pages); #endif +extern void free_contig_range(unsigned long pfn, unsigned int nr_pages); #ifdef CONFIG_CMA /* CMA stuff */ diff --git a/mm/hugetlb.c b/mm/hugetlb.c index afef61656c1e..4e55aa38704f 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -1058,6 +1058,7 @@ static void free_gigantic_page(struct page *page, unsigned int order) free_contig_range(page_to_pfn(page), 1 << order); } +#ifdef CONFIG_CONTIG_ALLOC static int __alloc_gigantic_page(unsigned long start_pfn, unsigned long nr_pages, gfp_t gfp_mask) { @@ -1142,11 +1143,20 @@ static struct page *alloc_gigantic_page(struct hstate *h, gfp_t gfp_mask, static void prep_new_huge_page(struct hstate *h, struct page *page, int nid); static void prep_compound_gigantic_page(struct page *page, unsigned int order); +#else /* !CONFIG_CONTIG_ALLOC */ +static struct page *alloc_gigantic_page(struct hstate *h, gfp_t gfp_mask, + int nid, nodemask_t *nodemask) +{ + return NULL; +} +#endif /* CONFIG_CONTIG_ALLOC */ #else /* !CONFIG_ARCH_HAS_GIGANTIC_PAGE */ -static inline bool gigantic_page_supported(void) { return false; } static struct page *alloc_gigantic_page(struct hstate *h, gfp_t gfp_mask, - int nid, nodemask_t *nodemask) { return NULL; } + int nid, nodemask_t *nodemask) +{ + return NULL; +} static inline void free_gigantic_page(struct page *page, unsigned int order) { } static inline void destroy_compound_gigantic_page(struct page *page, unsigned int order) { } @@ -1156,7 +1166,7 @@ static void update_and_free_page(struct hstate *h, struct page *page) { int i; - if (hstate_is_gigantic(h) && !gigantic_page_supported()) + if (hstate_is_gigantic(h) && !gigantic_page_runtime_supported()) return; h->nr_huge_pages--; @@ -2276,13 +2286,27 @@ static int adjust_pool_surplus(struct hstate *h, nodemask_t *nodes_allowed, } #define persistent_huge_pages(h) (h->nr_huge_pages - h->surplus_huge_pages) -static unsigned long set_max_huge_pages(struct hstate *h, unsigned long count, - nodemask_t *nodes_allowed) +static int set_max_huge_pages(struct hstate *h, unsigned long count, + nodemask_t *nodes_allowed) { unsigned long min_count, ret; - if (hstate_is_gigantic(h) && !gigantic_page_supported()) - return h->max_huge_pages; + spin_lock(&hugetlb_lock); + + /* + * Gigantic pages runtime allocation depend on the capability for large + * page range allocation. + * If the system does not provide this feature, return an error when + * the user tries to allocate gigantic pages but let the user free the + * boottime allocated gigantic pages. + */ + if (hstate_is_gigantic(h) && !IS_ENABLED(CONFIG_CONTIG_ALLOC)) { + if (count > persistent_huge_pages(h)) { + spin_unlock(&hugetlb_lock); + return -EINVAL; + } + /* Fall through to decrease pool */ + } /* * Increase the pool size @@ -2295,7 +2319,6 @@ static unsigned long set_max_huge_pages(struct hstate *h, unsigned long count, * pool might be one hugepage larger than it needs to be, but * within all the constraints specified by the sysctls. */ - spin_lock(&hugetlb_lock); while (h->surplus_huge_pages && count > persistent_huge_pages(h)) { if (!adjust_pool_surplus(h, nodes_allowed, -1)) break; @@ -2350,9 +2373,10 @@ static unsigned long set_max_huge_pages(struct hstate *h, unsigned long count, break; } out: - ret = persistent_huge_pages(h); + h->max_huge_pages = persistent_huge_pages(h); spin_unlock(&hugetlb_lock); - return ret; + + return 0; } #define HSTATE_ATTR_RO(_name) \ @@ -2404,7 +2428,7 @@ static ssize_t __nr_hugepages_store_common(bool obey_mempolicy, int err; NODEMASK_ALLOC(nodemask_t, nodes_allowed, GFP_KERNEL | __GFP_NORETRY); - if (hstate_is_gigantic(h) && !gigantic_page_supported()) { + if (hstate_is_gigantic(h) && !gigantic_page_runtime_supported()) { err = -EINVAL; goto out; } @@ -2428,15 +2452,13 @@ static ssize_t __nr_hugepages_store_common(bool obey_mempolicy, } else nodes_allowed = &node_states[N_MEMORY]; - h->max_huge_pages = set_max_huge_pages(h, count, nodes_allowed); + err = set_max_huge_pages(h, count, nodes_allowed); +out: if (nodes_allowed != &node_states[N_MEMORY]) NODEMASK_FREE(nodes_allowed); - return len; -out: - NODEMASK_FREE(nodes_allowed); - return err; + return err ? err : len; } static ssize_t nr_hugepages_store_common(bool obey_mempolicy, diff --git a/mm/page_alloc.c b/mm/page_alloc.c index ac9c45ffb344..a4547d90fa7a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -8234,8 +8234,9 @@ int alloc_contig_range(unsigned long start, unsigned long end, pfn_max_align_up(end), migratetype); return ret; } +#endif /* CONFIG_CONTIG_ALLOC */ -void free_contig_range(unsigned long pfn, unsigned nr_pages) +void free_contig_range(unsigned long pfn, unsigned int nr_pages) { unsigned int count = 0; @@ -8247,7 +8248,6 @@ void free_contig_range(unsigned long pfn, unsigned nr_pages) } WARN(count != 0, "%d pages are still in use!\n", count); } -#endif #ifdef CONFIG_MEMORY_HOTPLUG /*