From patchwork Mon Jul 16 17:44:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Tatashin X-Patchwork-Id: 10527371 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 2BC7A6037E for ; Mon, 16 Jul 2018 17:45:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 17ABB28421 for ; Mon, 16 Jul 2018 17:45:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0BB7928DEF; Mon, 16 Jul 2018 17:45: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=-3.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, UNPARSEABLE_RELAY 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 D3F6E28421 for ; Mon, 16 Jul 2018 17:45:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5F18F6B000A; Mon, 16 Jul 2018 13:45:09 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 5C7D66B000C; Mon, 16 Jul 2018 13:45:09 -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 48EF46B000E; Mon, 16 Jul 2018 13:45:09 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-io0-f198.google.com (mail-io0-f198.google.com [209.85.223.198]) by kanga.kvack.org (Postfix) with ESMTP id 1FD6A6B000C for ; Mon, 16 Jul 2018 13:45:09 -0400 (EDT) Received: by mail-io0-f198.google.com with SMTP id d11-v6so20898081iok.21 for ; Mon, 16 Jul 2018 10:45:09 -0700 (PDT) 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:subject:date:message-id :in-reply-to:references; bh=fsHN3cRqNwz0z/QFyBgyDamE+zttx1UR+T0B3voIMew=; b=IDnz//yM4+ETl5l8aFpSTaBLpoeuw9SHfSAwexI+cHHVQtfB9lPnztzoR8dkbnmeEC 9rlSrJDWjlsesNGV1AmhllaIn4CIQzuR5qvMMxQ+lN5uUdLWgDbdLC5X4HzBRjkOT7f6 SxJNJH1eKLLM4sj4pT3AROpj3bfz7WLvv5W22cykyRC0DCkUaxamE5y2vKdh+pVg4KPQ NRrVUwXVCtc9gceH4rwQ+2Iv1oD50a/ePpmKzbkJ7JCDKNWf6CWwAOJWX/FmdYOfWONP vNj7xB1iT7GVBPFjvRyHeBmVTrBUE++o8jKagle9ha2hWiHUMgMwMo63tSvfwKmI48Rn RUXg== X-Gm-Message-State: AOUpUlG41A1XRStlXshlO2CCJbDlP64J0O2i1+ShlxKFt5dCmApbkJ3e nM0bU18gbDESp5o28DYeD7n6SfX710526l4A53JJw42SSVaT4aDagKutip4b8j85XsXprEFyKWL R7kBUGKn6ETFsOyfgktfawxs8qAMjHMwPtniuaLxwQ05VsT3DsFpNRxXglu4GcPbAoQ== X-Received: by 2002:a24:988b:: with SMTP id n133-v6mr7330554itd.10.1531763108910; Mon, 16 Jul 2018 10:45:08 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdBsSANZLsmE/z+KAY7HQBRuWEnIKZbc89JR7hn2oVTpXAj73Q0jSIR5kkBDt0U+AaU8K23 X-Received: by 2002:a24:988b:: with SMTP id n133-v6mr7330507itd.10.1531763108255; Mon, 16 Jul 2018 10:45:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531763108; cv=none; d=google.com; s=arc-20160816; b=cHXD7MUdcYrj+QvJLxvzpgrfOQ0vV79Yaybsf1X+XDfvy6dgH3xtvpcwlLkviJ3QgN cqfT+Fgx9mKfQZj/DgtpayZVmxJVu26FRnabdvq2UaqV5qzN0zr1pdWMUwPMsQVOTHbh 8ePharC9HJyssl0AfQ1pH24ZfCGYRl87QoPh26n6YtBG5dBIS2iy7CZRgkUDuILooDIA VIsViXF+IEM6QUMrHqJSIzDM952+MGqmoM7FjW9+PKHndCYhPZ+qsU5VZJqU4RdoSuMs Gi7Ol/MljTqthGpGq+l8GhZB/pWlzVWXdUpFeAFfMCYXvmkbb36FbG5hblokSTbozKD8 UVzQ== 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:to:from :dkim-signature:arc-authentication-results; bh=fsHN3cRqNwz0z/QFyBgyDamE+zttx1UR+T0B3voIMew=; b=hG9XTSWK6258y+q5c14pr+82N4vqL4l1xjX9GFbf30doxUR2c+ldysLgGjc9UxijvV 82QGrrfnc7+6UPoSraT/vukZb+aHtkPJ9b1JoIWPsIt2rp30WA4gXIQxDeU5ZGncsnIf xg/ugK02Z4/SbsECA2mZQLTg5mnHMk1P7OIJ0Rh9BooU4HWQkZy1yhj1hjIInrcfTeWD M1L8K579tUnmnaJW/GFh6PiauZ1iS9U1GbCMeOsysWVX43S3n5r5gVvLZvKGXFu0y/RH HMTv4TsbBRNQ/fcYh6afOtzC2daZ4uTb3D18mBmOWfUbSXrRimj06XmkXVTmx6g+IW4t KQYw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2018-07-02 header.b=jFUGJQ6J; spf=pass (google.com: domain of pasha.tatashin@oracle.com designates 156.151.31.85 as permitted sender) smtp.mailfrom=pasha.tatashin@oracle.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from userp2120.oracle.com (userp2120.oracle.com. [156.151.31.85]) by mx.google.com with ESMTPS id j185-v6si9726046itb.69.2018.07.16.10.45.08 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 16 Jul 2018 10:45:08 -0700 (PDT) Received-SPF: pass (google.com: domain of pasha.tatashin@oracle.com designates 156.151.31.85 as permitted sender) client-ip=156.151.31.85; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2018-07-02 header.b=jFUGJQ6J; spf=pass (google.com: domain of pasha.tatashin@oracle.com designates 156.151.31.85 as permitted sender) smtp.mailfrom=pasha.tatashin@oracle.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w6GHi8Im163733; Mon, 16 Jul 2018 17:45:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references; s=corp-2018-07-02; bh=fsHN3cRqNwz0z/QFyBgyDamE+zttx1UR+T0B3voIMew=; b=jFUGJQ6Jfnp0RMT3ry6S14XBk7FO02491Lh9YN7xPoI5jj2HvN2k3YMVvTKDlv5qSLlf hsAZnj2DeV9bHldsstCfMOY0qJpZXE6z43ePtrcTqRRMO097HFQpT3RPH7a8YF00yGJO +WmRx7LeBKel2QPMMt4EYIpEnHOD67xTrE3EW5npykFqcJe5mF/iE8UsuKn6/qnqSEHM y0JUUMpcWj1QaXLrKsT1+BQGAuNwhvqIcCPzGEdzPEbm4XSkJNUXSTfWIKFbp0ykhodq ZFhjIxav1Kp4vywdN9Q3wodqqZpjnTsX13IwvAfsUtYOhgT1zJcWRzaYSJwSO1F8X9Py WQ== Received: from aserv0021.oracle.com (aserv0021.oracle.com [141.146.126.233]) by userp2120.oracle.com with ESMTP id 2k7a3jnh0x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Jul 2018 17:44:59 +0000 Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserv0021.oracle.com (8.14.4/8.14.4) with ESMTP id w6GHixeW001747 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Jul 2018 17:44:59 GMT Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id w6GHiwxG011063; Mon, 16 Jul 2018 17:44:58 GMT Received: from localhost.localdomain (/73.69.118.222) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 16 Jul 2018 10:44:57 -0700 From: Pavel Tatashin To: steven.sistare@oracle.com, daniel.m.jordan@oracle.com, linux-kernel@vger.kernel.org, akpm@linux-foundation.org, kirill.shutemov@linux.intel.com, mhocko@suse.com, linux-mm@kvack.org, dan.j.williams@intel.com, jack@suse.cz, jglisse@redhat.com, jrdr.linux@gmail.com, bhe@redhat.com, gregkh@linuxfoundation.org, vbabka@suse.cz, richard.weiyang@gmail.com, dave.hansen@intel.com, rientjes@google.com, mingo@kernel.org, osalvador@techadventures.net, pasha.tatashin@oracle.com, abdhalee@linux.vnet.ibm.com, mpe@ellerman.id.au Subject: [PATCH v6 2/5] mm/sparse: use the new sparse buffer functions in non-vmemmap Date: Mon, 16 Jul 2018 13:44:44 -0400 Message-Id: <20180716174447.14529-3-pasha.tatashin@oracle.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180716174447.14529-1-pasha.tatashin@oracle.com> References: <20180716174447.14529-1-pasha.tatashin@oracle.com> X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8956 signatures=668706 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1806210000 definitions=main-1807160202 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 non-vmemmap sparse also allocated large contiguous chunk of memory, and if fails falls back to smaller allocations. Use the same functions to allocate buffer as the vmemmap-sparse Signed-off-by: Pavel Tatashin Reviewed-by: Oscar Salvador --- mm/sparse.c | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/mm/sparse.c b/mm/sparse.c index 9a0a5f598469..db4867b62fff 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -408,13 +408,20 @@ unsigned long __init section_map_size(void) } #else +unsigned long __init section_map_size(void) +{ + return PAGE_ALIGN(sizeof(struct page) * PAGES_PER_SECTION); +} + struct page __init *sparse_mem_map_populate(unsigned long pnum, int nid, struct vmem_altmap *altmap) { - struct page *map; - unsigned long size; + unsigned long size = section_map_size(); + struct page *map = sparse_buffer_alloc(size); + + if (map) + return map; - size = PAGE_ALIGN(sizeof(struct page) * PAGES_PER_SECTION); map = memblock_virt_alloc_try_nid(size, PAGE_SIZE, __pa(MAX_DMA_ADDRESS), BOOTMEM_ALLOC_ACCESSIBLE, nid); @@ -425,42 +432,22 @@ void __init sparse_mem_maps_populate_node(struct page **map_map, unsigned long pnum_end, unsigned long map_count, int nodeid) { - void *map; unsigned long pnum; - unsigned long size = sizeof(struct page) * PAGES_PER_SECTION; - int nr_consumed_maps; - - size = PAGE_ALIGN(size); - map = memblock_virt_alloc_try_nid_raw(size * map_count, - PAGE_SIZE, __pa(MAX_DMA_ADDRESS), - BOOTMEM_ALLOC_ACCESSIBLE, nodeid); - if (map) { - nr_consumed_maps = 0; - for (pnum = pnum_begin; pnum < pnum_end; pnum++) { - if (!present_section_nr(pnum)) - continue; - map_map[nr_consumed_maps] = map; - map += size; - nr_consumed_maps++; - } - return; - } + unsigned long size = section_map_size(); + int nr_consumed_maps = 0; - /* fallback */ - nr_consumed_maps = 0; + sparse_buffer_init(size * map_count, nodeid); for (pnum = pnum_begin; pnum < pnum_end; pnum++) { - struct mem_section *ms; - if (!present_section_nr(pnum)) continue; map_map[nr_consumed_maps] = sparse_mem_map_populate(pnum, nodeid, NULL); if (map_map[nr_consumed_maps++]) continue; - ms = __nr_to_section(pnum); pr_err("%s: sparsemem memory map backing failed some memory will not be available\n", __func__); } + sparse_buffer_fini(); } #endif /* !CONFIG_SPARSEMEM_VMEMMAP */