From patchwork Fri Jan 11 05:12:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pingfan Liu X-Patchwork-Id: 10757373 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 7C01C14E5 for ; Fri, 11 Jan 2019 05:13:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6DA75298E5 for ; Fri, 11 Jan 2019 05:13:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 61AE8299BE; Fri, 11 Jan 2019 05:13:57 +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=-3.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,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 D5735298E5 for ; Fri, 11 Jan 2019 05:13:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C92108E0008; Fri, 11 Jan 2019 00:13:55 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C41788E0001; Fri, 11 Jan 2019 00:13:55 -0500 (EST) 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 B59528E0008; Fri, 11 Jan 2019 00:13:55 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by kanga.kvack.org (Postfix) with ESMTP id 763AB8E0001 for ; Fri, 11 Jan 2019 00:13:55 -0500 (EST) Received: by mail-pf1-f198.google.com with SMTP id i3so9496944pfj.4 for ; Thu, 10 Jan 2019 21:13:55 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references; bh=HyITMNdELPclxNoKcR1zVio3u+9JmLHOG25CjPlIULI=; b=U10JcYYK0s8QDIe+e1GOm4EAF326v/XF+zdiiNWcsvyMtQ5XQz2bzCwoMVEdapbUfl gPjJxMrTO8C+HIt1aT6Shdd1ElFZxd53/eMcE4J+SS3GiimAlU+SBKDA4q2bUc+4Cbdp ds0LoXhV5rJXgfXRxjg9NmCK6EdrsnYDTUy5Zw7jdDPkKyubkcsk5S1/mRgrYWPu7jc9 5ZpVkF5zsDXftIQH6dJJQW3juh1s5nL/LEnhZB3MBOFYPJ3VTFEdFZ4zHGH/FXYGu4fy HbjYcda30526NLVRtOsKdyLgXRPHsPK/ioz0FIbblF5pM7L+NwmsHUpH8rP7LqUhXY+I 9fQg== X-Gm-Message-State: AJcUukeE9g0Dj5hy0223rRnPlklH3B0EEq9EA14V5qvEFI8skGzXXLbG bDYWKIuSVPoXNTVF/pJmSjKkIxDrrldv5aX4R7Wz1ToDJeB+oGlSLd0Lk9tqqhqWM09U3gHv2Kg LmpFKhZS7/yiDmrH8JZ1D2erSfUcLfW5ENyhAgwuMXQEyOc+c59FH24JKCl7xG0C9Z0smMwPZgv kLGi/ibEP6f/9mchVxKbzR/Z5t3tlnN7Mpp1ZwwLvq2HJg9D8Vt71rXlNtNFL3jUHWh3EcG6zKK yq+kigmX/HN0z9G+muZ40syuhLo64VWEt1pTHo1hAFvRnQK57Ud5t/Hk/bk6s3WeVHsdMFBOB+m bh651fPHCBkLH9qWsUOhWqZcaLyrHLotvFmH7vtpo6O2G7ml64z1FUs8+I4BgWfNmXpRpE68j6K g X-Received: by 2002:a65:5c4b:: with SMTP id v11mr12021496pgr.333.1547183635130; Thu, 10 Jan 2019 21:13:55 -0800 (PST) X-Received: by 2002:a65:5c4b:: with SMTP id v11mr12021463pgr.333.1547183634198; Thu, 10 Jan 2019 21:13:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547183634; cv=none; d=google.com; s=arc-20160816; b=PqDrDeDIiU29BILaig7dZdQprhmOj9QWl1Qbf4uz21rnv6R5mSGeRL9q5nuxn59AJ+ OhwSb6mkoKrGi78m15NV2yTBLVpfWPmo5miveW0i3dyL+bv2xG2o2N2sdNlM/NiTUv1B nDqmxVQOOZxx/RCPRTwoA0C7VvsQAPkcd6IuL1hcjb6bxyysfhdI1C82oMc9nRhFmVDt +C/kOkLWRYSpoFmeOv48Dtd4C6Zam9njYJmfZpsZNls8qGbejLnUP2Jel+Ww376CL3Hc 5wF9d+W7x3TM/2FvpEKFJK+gu7uE21JTkTwuyX+Vh0To8mi/8OT9EKqIYO13CZOFSW0X p8hg== 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 :dkim-signature; bh=HyITMNdELPclxNoKcR1zVio3u+9JmLHOG25CjPlIULI=; b=dRnmhNDFPI238b4aC8FuUGgItOJ39U1Me4Yf60n0plvi+h8XEjOgW5XYVpTTRWytPT g1CBbr5Gsoc7LZ6zkgdggquPnbH4E+PTIZrhK+W5TZUgfVYkGAjYqEuoQOYGeQeMGyfu 0Ul6/TTWok+LctCN+ObkVO2pQHP16NmmhCO7+CzbTXIAlx8aimNLniiEudbxCVTLFIYx mp13DJer83cTpkHy0n4RyOmSrtPf/DwCkw0pSkRPGedfZEFOWqM5wlYJSS4L7QvhT6fT 9b+nES0mecj7cgb7S5+f1HMTMlmR8SgQlaZk0TnnAbV72xdXm+Xxh99JnDIfcEdqvVKY OTJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=YzFAotY+; spf=pass (google.com: domain of kernelfans@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=kernelfans@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id w11sor1629716ply.14.2019.01.10.21.13.54 for (Google Transport Security); Thu, 10 Jan 2019 21:13:54 -0800 (PST) Received-SPF: pass (google.com: domain of kernelfans@gmail.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=YzFAotY+; spf=pass (google.com: domain of kernelfans@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=kernelfans@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=HyITMNdELPclxNoKcR1zVio3u+9JmLHOG25CjPlIULI=; b=YzFAotY+NwCnyRx28zQm2g9r3fmR7pCjWvfroJkraJswxUAdRRZ3wswDAug/7D59rL OcWULBgD5QWfA8kg2RcGMOk5TS5W5AJVPaKtuV20MwIueNXJIuGF9XBCaS9rx1Onb4Lq FYIxRx4oe7IL0rqgK7eAkqukFsispBSCEpJEXtTWIlMipIpMcB2CJ9fFoOVZvf61AqWR LI++l2sYxQL3hRHseTnz33T4U9gutvkdkmFCI3vcd7Im7W8FIJhnN5wkPoGKEXjeuHDr kBLmbgH4mBdsPxXKacs3HRy8u2xHlzPJLM8oQQ/qaud6Q/BL65/zInLq8YApNIs/eJbA ub0g== X-Google-Smtp-Source: ALg8bN7Dh/zgZ+YLM8araolSDXBBTDY8kyLtFO6bcLu5ojQxeeEy88HPlwMpDDXIALPqfSiTGOIk3w== X-Received: by 2002:a17:902:82c2:: with SMTP id u2mr13234631plz.110.1547183633911; Thu, 10 Jan 2019 21:13:53 -0800 (PST) Received: from mylaptop.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id q7sm93490471pgp.40.2019.01.10.21.13.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 10 Jan 2019 21:13:53 -0800 (PST) From: Pingfan Liu To: linux-kernel@vger.kernel.org Cc: Pingfan Liu , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , Dave Hansen , Andy Lutomirski , Peter Zijlstra , "Rafael J. Wysocki" , Len Brown , Yinghai Lu , Tejun Heo , Chao Fan , Baoquan He , Juergen Gross , Andrew Morton , Mike Rapoport , Vlastimil Babka , Michal Hocko , x86@kernel.org, linux-acpi@vger.kernel.org, linux-mm@kvack.org Subject: [PATCHv2 5/7] x86/mm: set allowed range for memblock allocator Date: Fri, 11 Jan 2019 13:12:55 +0800 Message-Id: <1547183577-20309-6-git-send-email-kernelfans@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547183577-20309-1-git-send-email-kernelfans@gmail.com> References: <1547183577-20309-1-git-send-email-kernelfans@gmail.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 Due to the incoming divergence of x86_32 and x86_64, there is requirement to set the allowed allocating range at the early boot stage. This patch also includes minor change to remove redundat cond check, refer to memblock_find_in_range_node(), memblock_find_in_range() has already protect itself from the case: start > end. Signed-off-by: Pingfan Liu Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: "H. Peter Anvin" Cc: Dave Hansen Cc: Andy Lutomirski Cc: Peter Zijlstra Cc: "Rafael J. Wysocki" Cc: Len Brown Cc: Yinghai Lu Cc: Tejun Heo Cc: Chao Fan Cc: Baoquan He Cc: Juergen Gross Cc: Andrew Morton Cc: Mike Rapoport Cc: Vlastimil Babka Cc: Michal Hocko Cc: x86@kernel.org Cc: linux-acpi@vger.kernel.org Cc: linux-mm@kvack.org --- arch/x86/mm/init.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index ef99f38..385b9cd 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -76,6 +76,14 @@ static unsigned long min_pfn_mapped; static bool __initdata can_use_brk_pgt = true; +static unsigned long min_pfn_allowed; +static unsigned long max_pfn_allowed; +void set_alloc_range(unsigned long low, unsigned long high) +{ + min_pfn_allowed = low; + max_pfn_allowed = high; +} + /* * Pages returned are already directly mapped. * @@ -100,12 +108,10 @@ __ref void *alloc_low_pages(unsigned int num) if ((pgt_buf_end + num) > pgt_buf_top || !can_use_brk_pgt) { unsigned long ret = 0; - if (min_pfn_mapped < max_pfn_mapped) { - ret = memblock_find_in_range( - min_pfn_mapped << PAGE_SHIFT, - max_pfn_mapped << PAGE_SHIFT, - PAGE_SIZE * num , PAGE_SIZE); - } + ret = memblock_find_in_range( + min_pfn_allowed << PAGE_SHIFT, + max_pfn_allowed << PAGE_SHIFT, + PAGE_SIZE * num, PAGE_SIZE); if (ret) memblock_reserve(ret, PAGE_SIZE * num); else if (can_use_brk_pgt) @@ -588,14 +594,17 @@ static void __init memory_map_top_down(unsigned long map_start, start = map_start; mapped_ram_size += init_range_memory_mapping(start, last_start); + set_alloc_range(min_pfn_mapped, max_pfn_mapped); last_start = start; min_pfn_mapped = last_start >> PAGE_SHIFT; if (mapped_ram_size >= step_size) step_size = get_new_step_size(step_size); } - if (real_end < map_end) + if (real_end < map_end) { init_range_memory_mapping(real_end, map_end); + set_alloc_range(min_pfn_mapped, max_pfn_mapped); + } } /** @@ -636,6 +645,7 @@ static void __init memory_map_bottom_up(unsigned long map_start, } mapped_ram_size += init_range_memory_mapping(start, next); + set_alloc_range(min_pfn_mapped, max_pfn_mapped); start = next; if (mapped_ram_size >= step_size)