From patchwork Mon Nov 14 07:07:38 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Huang Shijie X-Patchwork-Id: 9426671 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0F52060484 for ; Mon, 14 Nov 2016 07:12:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 01469288FA for ; Mon, 14 Nov 2016 07:12:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E905E2890F; Mon, 14 Nov 2016 07:12:44 +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=-4.1 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 6208D288FA for ; Mon, 14 Nov 2016 07:12:44 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1c6BQ5-0003k5-Vf; Mon, 14 Nov 2016 07:11:10 +0000 Received: from mail-db5eur01on0040.outbound.protection.outlook.com ([104.47.2.40] helo=EUR01-DB5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1c6BOV-000118-Cn for linux-arm-kernel@lists.infradead.org; Mon, 14 Nov 2016 07:09:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=hqz+MgAWdyh9dGxri8VgRdeFPTUPyGF16LfjC26UqGQ=; b=D8UIJtmZBT4L3FEuczjz8AO/We3ENqZ2gIb6pE4UTNtT5SIlb5b2GEE58X1Pxdj3n6omFTCl7MZ9tAQzIDlFDC5OvnJ3m/NPxA3KgArLnm7eb5ddQ8q56xQkwS36CT1SHpd4ohwo1ePGKzLATitCbQRJR57u1KUt+3bjc88stsE= Received: from DB6PR0802CA0042.eurprd08.prod.outlook.com (10.172.252.156) by DB6PR0801MB1784.eurprd08.prod.outlook.com (10.169.227.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.721.10; Mon, 14 Nov 2016 07:09:07 +0000 Received: from DB3FFO11FD015.protection.gbl (2a01:111:f400:7e04::145) by DB6PR0802CA0042.outlook.office365.com (2603:10a6:4:a3::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.721.10 via Frontend Transport; Mon, 14 Nov 2016 07:09:07 +0000 Authentication-Results: spf=pass (sender IP is 217.140.96.140) smtp.mailfrom=arm.com; oracle.com; dkim=none (message not signed) header.d=none;oracle.com; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 217.140.96.140 as permitted sender) receiver=protection.outlook.com; client-ip=217.140.96.140; helo=nebula.arm.com; Received: from nebula.arm.com (217.140.96.140) by DB3FFO11FD015.mail.protection.outlook.com (10.47.216.189) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.721.5 via Frontend Transport; Mon, 14 Nov 2016 07:09:07 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:1087; Count:13 Received: from sha-win-210.shanghai.arm.com (10.1.2.79) by mail.arm.com (10.1.105.66) with Microsoft SMTP Server id 14.3.294.0; Mon, 14 Nov 2016 07:08:50 +0000 From: Huang Shijie To: , Subject: [PATCH v2 5/6] mm: hugetlb: add a new function to allocate a new gigantic page Date: Mon, 14 Nov 2016 15:07:38 +0800 Message-ID: <1479107259-2011-6-git-send-email-shijie.huang@arm.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1479107259-2011-1-git-send-email-shijie.huang@arm.com> References: <1479107259-2011-1-git-send-email-shijie.huang@arm.com> MIME-Version: 1.0 X-IncomingHeaderCount: 13 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:217.140.96.140; IPV:CAL; SCL:-1; CTRY:GB; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(336003)(189002)(199003)(47776003)(6636002)(26826002)(36756003)(6666003)(33646002)(76176999)(50986999)(5660300001)(48376002)(356003)(2950100002)(7846002)(626004)(189998001)(586003)(8936002)(50466002)(50226002)(106466001)(305945005)(104016004)(77096005)(87936001)(8676002)(92566002)(5003940100001)(5001770100001)(4326007)(246002)(86362001)(2906002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0801MB1784; H:nebula.arm.com; FPR:; SPF:Pass; PTR:fw-tnat.cambridge.arm.com; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; DB3FFO11FD015; 1:BCBEKqRjKZj+eKAMduwoyJ28QW26mL4sfr0Ck++x8MwnGYODWH7t8b6UQSJJdgumAidTk7XqoDv7RnzpPWmyBmVTS0IZ+AhITKAAHghmh8qNwUQod+XPYziczU6yvpfeI/VJDEoZ1s9MuolbVJyYH8ETvyxRxNs71nfksRdKxlulQDjh2XhKjkLwy94E0EJBDkyIvvMYRKb1FbZXdN3ydd+gPovDerqil1IFJnISkDeL6ao0lIRsQSvjBWzCYwezav4RAzok3baAPA6WQmyy+TcqV9p1CzB85NhQEUqndQBAqzM2jkHX2zyRZ60oEtBHY86JKK1SsRWC38/CPagD6TUQfRhJkiSwtMnNDtFOFQEkv5cZlwNWCiRspxLlYkLzzFCAQ/pAz9l4HVlUXUqyMgDthj8kMegQ/GebAyYkAnG246OXlSXBJJng22Ri0GmpPDSQKLD3wZKSSQIuRC69Ql8IFBfxGI/mysaKSAXwd0crrAIILVqQamuo58yaVQs1kgBngoqJhJ7vv9kJ+1Xch/XdTw326k9qLoaRs/XZAxBB3JxapaCf49MJO5bJ1nBKlMkWfmxHjD4LrXAYcy0N00OJMo7F8mwT/zvpqO8cC/01KZDS0y/LJm86hu/7HMmw4F2NxgBG8ezKPflf7ReTRgv6yIvCXmPpA4KUOWxsOt0= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB1784; 2:QJ53yl4/yRrN4jxjsWspkBUJ5uboC+Q+vJxBeou89Hcr2fwIBqLUNpRzkoQwPf0Z0ujmIszmC9ETH3vNe0qd5tlwfnAed7Z0g6FGl9WcbazQ4Kz4eBLe6HjLWUKCPgRUknvaew0V9oF8u1446GLJAxzqnaqv/wIxJUSbTXHRKRg=; 3:8jt/azB1M5RxhUp/sKJotGJ+jED7fQo5iwLyBQ7dFu30SwKJMHBR7gimJGY12JKudKa6JJolSc6p2ZPfHz+JBVyOifjImqt2OXmY/bWwAPRxsTKyV37loj0rWbxt4LT5YYY3DraZq1WcpVBvQ5LWAFjP0Je7yYEiwJu00oJJvtsXCj3gf1sYpmgbhB/AovG81wI8oKWxmEbjxhzAcS8VzGyvwZXksx9dxtLgbxJRpevp4CHAzJNYa3VDg17hxBtarIHAgdjXYy+DZDhW5h3n0m7p+BdZYhG9uOceSyYoXK0=; 25:tvPX38E/OqOcZyM82JQtpyAtnrgqnshcljVK22naU2+xoQBHhtMIT3wJVus2sy41WmZQUw93kwwxkvBDdgd/Mv7Yw54X7Bw9SEiwtMDvQFUjM99V7E2Z1WRCCoi6Dl/fI2DUQgBjQBV3wpO7ZcVdNuXDHX4uPUc0unEVIxkDiFHed0HBftNENcz/7EQThMdwaC0q4sciRhzwECJgd9Up9khg3PLNiRzrKeBSGZnzY4MeBKcdp0k0QfO0CHguPw1K2CByKcttEZXam6Hs/+ezG3qhnFRgqt4/nv9uNARRsPc08PDy2nTUfobi/jXwHm4ohfKYtv4NfxlBdDPN2Et14OG91uuF4SR9Kqrds5EqGix6q8jrRRaZvp7Rp2W5hbaOUhE15ePuJMCCuJ/BQYgsA21vi1AjEQVr97xI9LHHsen+sMV5UJRDBHQz6VmLp1YE X-MS-Office365-Filtering-Correlation-Id: 499d0ca4-53df-4353-7453-08d40c5d200b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(8251501002); SRVR:DB6PR0801MB1784; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB1784; 31:aJ/2YlBhVL0W6El7fQ61tV7XCv3FNUvByzZayBV7BYw2OFNarUIv2TLlBIo8PaZzIetmCAOyliI8sSRPnxWDSTxskiq4sdBC3RftAPtJOQNHrfawi+2jstEnx/Fyo4XgWvyUad1Rac976BOeaTQamPJUcMzKqHiJtK/5ZwPyxy99hTG5NAF1aWBw2gt4UxOa/J1uTbadVFumknEsH5qR3WR57SyrSCGmWXR8ZgDOaMgPXDIqcy9KZqv4Os50gvx2NCHbgeEmXD9v10s83qF3RfGupRih976xA4MWIL86El4=; 20:I0lyuAJMYul7ZFTLrdGRiZ474dffRVNgpf0Fab+Xngt+JSDeo06iCLD0jYcqfMCVYeqnoOvpsoSVQTqdVf3EwrPHc0hmeUASOGW9ymdmsxMRds9hM9YLm5q1tHzcIRueIaDKjb1A7r3h0ooqyqWyoqfMAgwnhqlwrt9fXfUYWsj8a7jSScrJMGgDb2K4aD0lnja6cQNc3VM5LMCEc1L1MXFH3shyohGSZBMep2yfftX6SyJONVD+e3Y9BwvSQz4b NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6060322)(601004)(2401047)(13013025)(13024025)(13020025)(13023025)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6061317); SRVR:DB6PR0801MB1784; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0801MB1784; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB1784; 4:GAn3i26QoSu1NurcGRMwgLjrCjhm84pSA1gKF5wEfHvmIvtNmG0pMDBgpuCAKX9aY818SDp/m5nAYQkFc7UNGwqUxfIXGI+d3rLwWIy2W9ZET/hIy5n99NDQTI/p+EvD0p47TKjRN6O6s5G9lbuFdH6LbkCvCQaezwti5Ecau+izZfmYW7HIzkYaLOUjpemNxuieGZ5cIevQAufj7dbpk19IhHKHqRRw1Zz9eX+W3En2NoDWNCVLB2txfj2r7ECpat4iwzlwO7v9ouIj6lE8JyFIqs04bPa1HBQ19n5mtiiylKqnxh1P8i1YIB5FXnJt66HauxjFtrRtb41pMclpMtQ4Idf3sljC2FNtqDwMdZvf0e1USFQjsXFb4EyyElU11SJc41nIs6QG//a5s8BWkq2bqOT2fZItynyD3rv2zE4cM8d3zkCaNwlplk4ysP+zwvbOB6jGCKg5j9o3zgHnoUHPoGl6EeezCR+650/q8+slM6xcL1qOXFL8BLuWXlyaabIEqDFeiHuDdUUCx51nqjRdX/gJQSRCxSVtWdQBVYeyt3G/FaFjzDQ+CjIO1l1R X-Forefront-PRVS: 0126A32F74 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0801MB1784; 23:7Q5tkJzQ96uos//VmxrAh8VQpXTi+ZOtgh/DXN6?= =?us-ascii?Q?vSR2pmiTPOmEnZR/K13R1pBNjoK4/iv+j18vTAXGPq+Z7vsq1hmOgULrzVVD?= =?us-ascii?Q?fmHlnN9u200FLL01SdPTho4WkBs/opD9z7LpdkOjlvG7OKk8qxyFryRRoBr5?= =?us-ascii?Q?eAY/qwuOcyz7AfO/WOFQRRmmXWdWpbrklWbhAO9r+b3dlcmWXhEgtgdFOVEX?= =?us-ascii?Q?GFA+SudVRAG4q2rUJfyeaoICF2gcPl1lo3GoAq9uKFYQWRnxxNEJuKVpyRjT?= =?us-ascii?Q?n3DnprYRNOWJLzFpR5yqozBglZQMvR4xxd/5GZpO4h1+XXsjol7jNSkMMNtg?= =?us-ascii?Q?wxHYTle1QuICfzaNlGeoFfLIly/MdFaQPSNZ7ZNrjA+NsDlBYIAfau7YmlCA?= =?us-ascii?Q?e5BUoUKXIZLsLw6yG1+JhSP/iOuzTIAasnjvnZuRF6dCT14UC1w+nDQ0t+CJ?= =?us-ascii?Q?k4ThhjBvxh+eaLv7h4QC8P05FiY5CwRDCeMJegGNKBjc5+dfnrKh0GiobGjQ?= =?us-ascii?Q?kqm3ec1fwynxoeZAAvgsmWhlTqHC+aNWFK5dFhFQTekgJ1BhF7Aj4UxD9VI3?= =?us-ascii?Q?VikIM0IzNqLg2aeKtIkvzr+GmuWa2iSH0phZwJ4ajzvO5RQTBIbXVZtWgfUL?= =?us-ascii?Q?zM5q5+9NqXnXIFpIt4aHz1Gj1snwP+7VcG5PTM7vTG2NKtN0xxUe3zzCACXO?= =?us-ascii?Q?fkSR5+8mBc/IwDj39lbjfTqTB0C2uiczrw625dkz+9dvJSKDxZAoiXLYFGkU?= =?us-ascii?Q?sP10aRMy9X+ujq6q4xfCzhDq2+0z0XlGEH0cEIP9T55tzOZE8bBG7+Fv2CmY?= =?us-ascii?Q?tMfPGcShCG5r31lM/k+xKpR0YTWp4VmKiP9MS9OvW8MC451wVmbUR6pLI1pQ?= =?us-ascii?Q?mXSyuv/srYnC5APCwAr7OKFVg7NW90qMcErOg61iIiRpOxn8HPZMDhh6PShf?= =?us-ascii?Q?VYKsIO/85JqBL5YJ2OGWFv27+PbnijG9ossxi4XJNn9cEv3mY7cujZ4076YA?= =?us-ascii?Q?I+Io=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB1784; 6:BKjakRvg0/plTRiPCl846IUkH5qxPRQT9eltxCBC7IqyZuRjMojBygCRNrgovJJd0pQBEL4elel83aPuiSqHque2LhXt9fGa2GzRop8LbsSzZQTuariDTbl3/ipRIyhNyWN7Mk4byBLYz7t3h6iOWuMT76kOifneildkzlahQpmMMpP4abv4XnnCY1XSszbodrxjlyaHI5hNm2NVJcsnU7/ozVrQloXi+ZfAXOsgWGoA2EIpsht5qIgBQKfoKsMH7J+FPmj2Pl62zbYLwkYSioVl6o+tJtpBguQ7yMhu8FS9DU+DylNg6Mb7l7FC3yeMl4dIXVr06PfDS3mbVfBc0axr6z7VEP29icJ/wP9yJTNYJgtMfBYLx2NsBjoTeDJI; 5:5JnA/KlsRGILs2w/jzjSJ4e0uiOCJ+8bbN3Isd4FbggO8ifuBmD0B/a8QBuuaJQm4au2vwXM90UIh9OIOsTDgrkBrZsg5h3E+74q8+0gdNqICGIn+zZ9qWPm8K632ruGNOULeOZzcjgdp5VJo+S5Uw==; 24:YFAs8mtvFTC/uJ4phX7F42SGG2j+xrebPQQ76dg18jgQ6VZc9npJDfJSRrcO7mMpbCYQLiw1na2Mra21e3baUymvMPFAO5BFVJvjqGjb7T4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB6PR0801MB1784; 7:PxT3lRFSgt2HVM88yD/tehRu3r6DqUqlkaMW3GV7HoJ+nnKgtKYmmWxu9HP6yW+3KUbFF97MRpuSde4WTdBSehGQVKJam9XT6QfHokoEkR3bZ7yp9uWGQo1G0UC77v7zv4a9yR2bDO4icSNpyMBifv7Xm2UHj3GtUvBYVK3f95TYE6PdgWiI7AzE2G8GfWvB4FdGR9vskNm8js0rTzNuEw3Aj4Chlg4IwyyBafHagNnhd7dmijqapXB+9flN1jjPMlxNC0sb8EhJkvXNC8JhRkikZBgs2mzjnndEnNz06DzrotUGxDjb9GN9prA/SQl91/NbN4+z1F31LNGucC0ZDNsY+A3ai3QY1z+7A4RBDD4= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2016 07:09:07.2387 (UTC) X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[217.140.96.140]; Helo=[nebula.arm.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1784 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20161113_230932_083314_728A6F01 X-CRM114-Status: GOOD ( 14.14 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arm-kernel@lists.infradead.org, kaly.xin@arm.com, mhocko@suse.com, kirill.shutemov@linux.intel.com, steve.capper@arm.com, will.deacon@arm.com, linux-mm@kvack.org, aneesh.kumar@linux.vnet.ibm.com, Huang Shijie , n-horiguchi@ah.jp.nec.com, nd@arm.com, gerald.schaefer@de.ibm.com, mike.kravetz@oracle.com Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP There are three ways we can allocate a new gigantic page: 1. When the NUMA is not enabled, use alloc_gigantic_page() to get the gigantic page. 2. The NUMA is enabled, but the vma is NULL. There is no memory policy we can refer to. So create a @nodes_allowed, initialize it with init_nodemask_of_mempolicy() or init_nodemask_of_node(). Then use alloc_fresh_gigantic_page() to get the gigantic page. 3. The NUMA is enabled, and the vma is valid. We can follow the memory policy of the @vma. Get @nodes_mask by huge_nodemask(), and use alloc_fresh_gigantic_page() to get the gigantic page. Signed-off-by: Huang Shijie --- mm/hugetlb.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 6995087..58a59f0 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -1502,6 +1502,73 @@ int dissolve_free_huge_pages(unsigned long start_pfn, unsigned long end_pfn) /* * There are 3 ways this can get called: + * + * 1. When the NUMA is not enabled, use alloc_gigantic_page() to get + * the gigantic page. + * + * 2. The NUMA is enabled, but the vma is NULL. + * Create a @nodes_allowed, use alloc_fresh_gigantic_page() to get + * the gigantic page. + * + * 3. The NUMA is enabled, and the vma is valid. + * Use the @vma's memory policy. + * Get @nodes_mask by huge_nodemask(), and use alloc_fresh_gigantic_page() + * to get the gigantic page. + */ +static struct page *__hugetlb_alloc_gigantic_page(struct hstate *h, + struct vm_area_struct *vma, unsigned long addr, int nid) +{ + struct page *page; + nodemask_t *nodes_mask; + + /* Not NUMA */ + if (!IS_ENABLED(CONFIG_NUMA)) { + if (nid == NUMA_NO_NODE) + nid = numa_mem_id(); + + page = alloc_gigantic_page(nid, huge_page_order(h)); + if (page) + prep_compound_gigantic_page(page, huge_page_order(h)); + + return page; + } + + /* NUMA && !vma */ + if (!vma) { + NODEMASK_ALLOC(nodemask_t, nodes_allowed, + GFP_KERNEL | __GFP_NORETRY); + + if (nid == NUMA_NO_NODE) { + if (!init_nodemask_of_mempolicy(nodes_allowed)) { + NODEMASK_FREE(nodes_allowed); + nodes_allowed = &node_states[N_MEMORY]; + } + } else if (nodes_allowed) { + init_nodemask_of_node(nodes_allowed, nid); + } else { + nodes_allowed = &node_states[N_MEMORY]; + } + + page = alloc_fresh_gigantic_page(h, nodes_allowed, true); + + if (nodes_allowed != &node_states[N_MEMORY]) + NODEMASK_FREE(nodes_allowed); + + return page; + } + + /* NUMA && vma */ + nodes_mask = huge_nodemask(vma, addr); + if (nodes_mask) { + page = alloc_fresh_gigantic_page(h, nodes_mask, true); + if (page) + return page; + } + return NULL; +} + +/* + * There are 3 ways this can get called: * 1. With vma+addr: we use the VMA's memory policy * 2. With !vma, but nid=NUMA_NO_NODE: We try to allocate a huge * page from any node, and let the buddy allocator itself figure