Received: by 2002:a25:f815:0:0:0:0:0 with SMTP id u21csp2024056ybd; Sun, 23 Jun 2019 22:42:10 -0700 (PDT) X-Google-Smtp-Source: APXvYqy0BMiZlC0vxelaXvTpTsrbNY4mR3ItXGdk/TBKG64bElWMwiFE2ij8wvX52JscBNmfQvm2 X-Received: by 2002:a17:902:b592:: with SMTP id a18mr121639062pls.278.1561354930147; Sun, 23 Jun 2019 22:42:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561354930; cv=none; d=google.com; s=arc-20160816; b=ipzDzY/KoRIHWiYXzN3UPpY/dRg83Pv++tGUxFtZBt25wliT52aj/7IONBkWefo/Bk 4sP76tEqSlshXfLMecg8LSosNlQzvkMH6dV6YaTgOCLkrvad3d9OSHci6Giu1lUzZohp znCmLGF1CsgcaWjW/qlfZUDUL9fmZjRS+FqTMtI1dyd6XQN+jfrqhRcnG+HFR/dNpjyj 4M94yLUf66x/tkBlInzNB6yyIs9NK1Yv2QfYIO3FXSGqXJ1+KGz/LWhtf9BdZ7Plu9tZ RcLXfqJTXyS/vWOPRxA14fsLFc5intBSDwRd4K0eCmTkcP0bvzkzivYjA4mAzF2Q3Clp ZA6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=/Vi0SmBJrr/dhcFyf+7ZAHJAQmuruaehm6iOPvzhh0A=; b=jg73aFUroRPQs/tfXpNrVqVP2I6duHd8hHDG/rPnQuxXSVrCgufXeOwE4vb1vUWFXR OFPgc4rEilhTPnF1tIkFj/B87qcCeutG/EC4U7pUqYNC41JHoMEsD6ZzGhgRPZ/H4Thf B/FdLbuloAKrPf9G6a+t2smM+6iLB4WxCL7YuVKsNrh0JwiYVjv8Wqv+q+TyahrbX39Q Y3pJ1Qht8cikONzfVV5fUF35umf/nMe9osmK3CVpjhTA8UyLkJ/QNSoX/d/jGaxJWACW DnxfWlVPieLBhNxIpeb6aiQMLnQDhFy44cgHMghwC6MlnMRj+o9fPyqI767yHuHHQAJp gCPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=BZ00Q4nD; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e4si9340609pjs.104.2019.06.23.22.41.54; Sun, 23 Jun 2019 22:42:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=BZ00Q4nD; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727789AbfFXEVY (ORCPT + 99 others); Mon, 24 Jun 2019 00:21:24 -0400 Received: from mail-pg1-f193.google.com ([209.85.215.193]:36188 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725769AbfFXEVY (ORCPT ); Mon, 24 Jun 2019 00:21:24 -0400 Received: by mail-pg1-f193.google.com with SMTP id f21so6395324pgi.3 for ; Sun, 23 Jun 2019 21:21:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=/Vi0SmBJrr/dhcFyf+7ZAHJAQmuruaehm6iOPvzhh0A=; b=BZ00Q4nDJWbfG8+WDCxOo9DiaRK/yg6Yn/n2eoMxTA6AukHxBQvZ4+mZP16keQzAgb aCsv4jtOVZi0/bgxePIWQmSeq2A2N7zo1ty8lDc6eAOwMd2YYfJY3C/wFotgvEVEmnyB 8/DgGIGsxZ8kk2ISnWjURBlXhlgWPpfWFRwr5CBk+ma0PfNx6V4v6/c1HQwctUNhXgHF YUmoVtW4aH+sw0cJQPaeBP2dq3g1jGkUWlPZRyyZ0z4hMy50mRrR/f/wIEnPmFifV64o uq+9VNBHCcsiEIIERe4TC4Kq1oC++FL/XWelwlAX+eliU/V0nipXL02bQBn0VfgV31u3 5nZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=/Vi0SmBJrr/dhcFyf+7ZAHJAQmuruaehm6iOPvzhh0A=; b=goTNvnyvcOEk3dfSAeKPs5KQ6QXZhZcssFPIWAPkc/yht0XZV8VTHikgZ5hwe6tY7q g4WAOdCg38RPQ0qZFd/TmcZ+o42JJbxDs0mmS5fo+rQC5Lw5d6fDKWlct54qU6whz4PO oris5s7iR+syvlFnjjuDk+jh7tUb4psAbYXWOiIL6r+Ma6qoaD24B8Y5T96s0RfX/QL8 Oso2eFn+cl57gE3ls31XiRZzfL5RNg+o3WqgxlWMvsgPsV1dtmUFM2dnicBExNa5re8N KAXisjmEqTzW7vBZkPzKfFn1orQm8bp6SknlYLoqqGMo7O1G4pWX/tukb/TP8LY3AwId poHQ== X-Gm-Message-State: APjAAAUFncT0KMuH4pqDcdhLGkXpcig2+kfykahJzqItxSv4fTpbBoBW V7+xtVboP785e6GJEBczTaajack= X-Received: by 2002:a63:8ac3:: with SMTP id y186mr24564759pgd.198.1561350083906; Sun, 23 Jun 2019 21:21:23 -0700 (PDT) Received: from mylaptop.nay.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id w14sm10047181pfn.47.2019.06.23.21.21.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 23 Jun 2019 21:21:23 -0700 (PDT) From: Pingfan Liu To: linux-mm@kvack.org Cc: Pingfan Liu , Mike Kravetz , Oscar Salvador , David Hildenbrand , Andrew Morton , linux-kernel@vger.kernel.org Subject: [PATCH] mm/hugetlb: allow gigantic page allocation to migrate away smaller huge page Date: Mon, 24 Jun 2019 12:21:08 +0800 Message-Id: <1561350068-8966-1-git-send-email-kernelfans@gmail.com> X-Mailer: git-send-email 2.7.5 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The current pfn_range_valid_gigantic() rejects the pud huge page allocation if there is a pmd huge page inside the candidate range. But pud huge resource is more rare, which should align on 1GB on x86. It is worth to allow migrating away pmd huge page to make room for a pud huge page. The same logic is applied to pgd and pud huge pages. Signed-off-by: Pingfan Liu Cc: Mike Kravetz Cc: Oscar Salvador Cc: David Hildenbrand Cc: Andrew Morton Cc: linux-kernel@vger.kernel.org --- mm/hugetlb.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index ac843d3..02d1978 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -1081,7 +1081,11 @@ static bool pfn_range_valid_gigantic(struct zone *z, unsigned long start_pfn, unsigned long nr_pages) { unsigned long i, end_pfn = start_pfn + nr_pages; - struct page *page; + struct page *page = pfn_to_page(start_pfn); + + if (PageHuge(page)) + if (compound_order(compound_head(page)) >= nr_pages) + return false; for (i = start_pfn; i < end_pfn; i++) { if (!pfn_valid(i)) @@ -1098,8 +1102,6 @@ static bool pfn_range_valid_gigantic(struct zone *z, if (page_count(page) > 0) return false; - if (PageHuge(page)) - return false; } return true; -- 2.7.5