From patchwork Fri Oct 12 03:59:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anshuman Khandual X-Patchwork-Id: 10637821 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 76A6813AD for ; Fri, 12 Oct 2018 04:00:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6650C2BDF0 for ; Fri, 12 Oct 2018 04:00:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5A9572BE0B; Fri, 12 Oct 2018 04:00:41 +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 E87432BDF0 for ; Fri, 12 Oct 2018 04:00:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C9DC36B000E; Fri, 12 Oct 2018 00:00:39 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C4C8D6B0010; Fri, 12 Oct 2018 00:00:39 -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 B180B6B0266; Fri, 12 Oct 2018 00:00:39 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi1-f197.google.com (mail-oi1-f197.google.com [209.85.167.197]) by kanga.kvack.org (Postfix) with ESMTP id 83D036B000E for ; Fri, 12 Oct 2018 00:00:39 -0400 (EDT) Received: by mail-oi1-f197.google.com with SMTP id d23-v6so7575287oib.6 for ; Thu, 11 Oct 2018 21:00:39 -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; bh=zCPHxGOshzy5k42z2TRpHkM0RKgtw+KCKPngt8Us5fo=; b=qP5H48Zqz3j8AJml5iEKHBzSeTG7wO+CLnAfnh0IXf4NFxmiOCGD0Fhgb4IVGCxPGY opVEbu4f1PSvnAIRoG14hpmRGQRRSiFsURx9f0lgJEMVF5xGLwmoQn9F6pvcD50JPvam MMKYJKBLIUHvEq4SeMxTjELvDC6tNTaMFyAClwbBI6UT0f5/3yUaANbqnm4H0JkR43l5 +elgG7BFQ84F9ZnQ3YADabBBZgU4x5J2l/MIn4gIigzERlKeu8mvO2f0biodtzDE/TYd 0O2hZsDa9prjCKXPleNshKN2l63xZEXY02frB1RH+TbKIbPZqvTga3oG9hhFBKqvlciY hA/g== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of anshuman.khandual@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com X-Gm-Message-State: ABuFfoijVxDHgjHzaBbb2UiWf6lr63yVPrVU2jL2GUt7MJr48R/w1f2d OXiLDak+kKyOthCn3Y6rUhUvkRovE7FECGEnqYsfJmGDoKCHcXhonnc9fyjjUcYH1Zj7GfdPIH1 mu59YFGlvJuh2mzYbxFwSI2adqKGc/V8oBZz7fGZKkw0eizQoF505kReu+WuElj9aGA== X-Received: by 2002:a54:4e0f:: with SMTP id a15-v6mr2426014oiy.346.1539316839288; Thu, 11 Oct 2018 21:00:39 -0700 (PDT) X-Google-Smtp-Source: ACcGV63B8HLrH/dwoQ1UTXJEjQa+5Hhdh7aRd+LA9OeGTcoc6BQAYo5DcLyWSDEwYO2aTHBYm8c5 X-Received: by 2002:a54:4e0f:: with SMTP id a15-v6mr2425996oiy.346.1539316838630; Thu, 11 Oct 2018 21:00:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539316838; cv=none; d=google.com; s=arc-20160816; b=PXqZ5CJuIkrxjUb8N7E7EXhtCqmTFm5J39dt/+QBEDe6w4DC4SzCq2ZJYBSV6oW5aP 4FD/wdg8GCGT+3seN2EJmJ6+gea5MPYtRRgKo+5ehPUqWnpCFrjYCJAlfSjHZlEWlvst PUg1C0grqvO5E2Ovze11CbM5MrS062c4vYGYVVqj5HDfZVz5Hk+6qwfswJ+AINFvQhA+ eeI6ZEdOtC7Y4ZGGM5LzS6XvlSRnRdKYJ3sBDFHKu9S8YTRhYN+ngCWZz2vXBSY2lsz9 LUyqXr4MoiXR5ZCdo30IpLFp1lGljqI/0nJufWukiPoG+VBIBwKEAcDwKodfoL/cewlt Y0Nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=zCPHxGOshzy5k42z2TRpHkM0RKgtw+KCKPngt8Us5fo=; b=pj2bu+PFr7DDuVuBWoJuU4fQmEM9LuJO5kdauYqabsQeD+GN3eE1bYAfxea38OOsZN hxZYuE8teeoz2KkdL7WQ3wxt9DhglFlFZQW2/WF11YNFhJsiUCwnYRqXURR9gy8RsFot OTOPYtgPcDRFLVkA2UEriTobNrUSeXgvhlm1Lk19KXT38UR8KRgSAnzT7ZJlmY+J+nR+ p+G9tLMRVRTQSU7IvLgOqp0E3axjMaJIqdE/Vs0HXaLx8zkMqY0oYFJP7CZlXJjGecng ffcJndXjUh6Td3LxSiWxucq/ZuH62MVgUdUy+5AWEKo9YchHsxFM/8yafMLgh6IFLHkf 4HJA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of anshuman.khandual@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com. [217.140.101.70]) by mx.google.com with ESMTP id b6si15514427otj.236.2018.10.11.21.00.38 for ; Thu, 11 Oct 2018 21:00:38 -0700 (PDT) Received-SPF: pass (google.com: domain of anshuman.khandual@arm.com designates 217.140.101.70 as permitted sender) client-ip=217.140.101.70; Authentication-Results: mx.google.com; spf=pass (google.com: domain of anshuman.khandual@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 332E71682; Thu, 11 Oct 2018 21:00:38 -0700 (PDT) Received: from p8cg001049571a15.blr.arm.com (p8cg001049571a15.blr.arm.com [10.162.0.72]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 73BD73F5B7; Thu, 11 Oct 2018 21:00:34 -0700 (PDT) From: Anshuman Khandual To: linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: suzuki.poulose@arm.com, punit.agrawal@arm.com, will.deacon@arm.com, Steven.Price@arm.com, steve.capper@arm.com, catalin.marinas@arm.com, mhocko@kernel.org, akpm@linux-foundation.org, mike.kravetz@oracle.com, n-horiguchi@ah.jp.nec.com Subject: [PATCH V2 3/5] mm/hugetlb: Enable arch specific huge page size support for migration Date: Fri, 12 Oct 2018 09:29:57 +0530 Message-Id: <1539316799-6064-4-git-send-email-anshuman.khandual@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1539316799-6064-1-git-send-email-anshuman.khandual@arm.com> References: <1539316799-6064-1-git-send-email-anshuman.khandual@arm.com> 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 Architectures like arm64 have HugeTLB page sizes which are different than generic sizes at PMD, PUD, PGD level and implemented via contiguous bits. At present these special size HugeTLB pages cannot be identified through macros like (PMD|PUD|PGDIR)_SHIFT and hence chosen not be migrated. Enabling migration support for these special HugeTLB page sizes along with the generic ones (PMD|PUD|PGD) would require identifying all of them on a given platform. A platform specific hook can precisely enumerate all huge page sizes supported for migration. Instead of comparing against standard huge page orders let hugetlb_migration_support() function call a platform hook arch_hugetlb_migration_support(). Default definition for the platform hook maintains existing semantics which checks standard huge page order. But an architecture can choose to override the default and provide support for a comprehensive set of huge page sizes. Signed-off-by: Anshuman Khandual --- include/linux/hugetlb.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 456cb60..97a2fdb 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -479,18 +479,29 @@ static inline pgoff_t basepage_index(struct page *page) extern int dissolve_free_huge_page(struct page *page); extern int dissolve_free_huge_pages(unsigned long start_pfn, unsigned long end_pfn); -static inline bool hugepage_migration_supported(struct hstate *h) -{ + #ifdef CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION +#ifndef arch_hugetlb_migration_supported +static inline bool arch_hugetlb_migration_supported(struct hstate *h) +{ if ((huge_page_shift(h) == PMD_SHIFT) || (huge_page_shift(h) == PUD_SHIFT) || (huge_page_shift(h) == PGDIR_SHIFT)) return true; else return false; +} +#endif #else +static inline bool arch_hugetlb_migration_supported(struct hstate *h) +{ return false; +} #endif + +static inline bool hugepage_migration_supported(struct hstate *h) +{ + return arch_hugetlb_migration_supported(h); } /*