From patchwork Wed Jun 27 01:31:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baoquan He X-Patchwork-Id: 10490391 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 EDE1E60386 for ; Wed, 27 Jun 2018 01:31:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DF22C1FF29 for ; Wed, 27 Jun 2018 01:31:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D370626E78; Wed, 27 Jun 2018 01:31: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 708BD1FF29 for ; Wed, 27 Jun 2018 01:31:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 837B46B0269; Tue, 26 Jun 2018 21:31:40 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 7EA576B026A; Tue, 26 Jun 2018 21:31:40 -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 6FE6D6B026B; Tue, 26 Jun 2018 21:31:40 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qt0-f199.google.com (mail-qt0-f199.google.com [209.85.216.199]) by kanga.kvack.org (Postfix) with ESMTP id 452D26B0269 for ; Tue, 26 Jun 2018 21:31:40 -0400 (EDT) Received: by mail-qt0-f199.google.com with SMTP id j28-v6so459497qtc.10 for ; Tue, 26 Jun 2018 18:31:40 -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=8GwdkdlxcSSYJHufCtbXJe1IM6xEsW88gnYTD8bLO8k=; b=aMwqjGDJaq4q1xWgR+Jy+VvE0Pw5FeBTtkmxxEvxvtUZLjWjMtiAWyhsdV9vsypNKR sgFQ5rRmY89n0FKKl8TQGbFahS6hwGuyC1P0Rv3G1ed4zMJkQtWK64RuEJEya3BCqQf0 I4ySlVCpco9ROL4x6pgMEdic/tXP2KgZtTrGjRzIpRRWqefZwgZzHxU7lJsRzv3+A2WR 219plTLSoJuF/H0l2DzhYgIdsUvE4x5OtUWCeeuNYUe2Ogds/eRqpuOF4uz5Ot2Mr54N KuMAH4QbRpYyKLuyY5rSB1CeixMU1W85jnEhYMXbw1CyuEaPpIMY4b0ZaAr1QvvrEDeQ k3hw== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of bhe@redhat.com designates 66.187.233.73 as permitted sender) smtp.mailfrom=bhe@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: APt69E09NdT+0kKKMrrbaO/PPCtYCXlinwg2KUdCt9AoUODB9+G01C/K eZ8wnhIYUEdwdRb3rFIdcqy19t4rlVk03SbEKw+ooPnYIhpCse75+nfLo/DGrgaKyN+qs0isTrV yZ33l2ajvwNLasONtNjC1CEe418YkmZks8hnHg0FW8B3qpqYZQcyoY75g9l8qGfC19w== X-Received: by 2002:ac8:2a07:: with SMTP id k7-v6mr3744737qtk.300.1530063100054; Tue, 26 Jun 2018 18:31:40 -0700 (PDT) X-Google-Smtp-Source: AAOMgpeG5Mc77bihNclX8DPdHsk4f++LPvgcNOHpz3yjBAa/lpeyyxhu5bjkfsIOJUa/DFOyg+vN X-Received: by 2002:ac8:2a07:: with SMTP id k7-v6mr3744725qtk.300.1530063099482; Tue, 26 Jun 2018 18:31:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530063099; cv=none; d=google.com; s=arc-20160816; b=CPu5tGxK2zaaM6ZaIVSVkrQ/14MIiY8vYlZiPwp8vHG6g4EYNsnnaq/OfxLdwdREFd /rb42/cSR5zgle3y7cnPxBhYXbHpypaJMzFRLHO5f8sbiJzwZa8rBNQFDmNHLl43aNAy ruTl+a22csYlaZOoJaHH8U/eKx0MCU+oxhQ1LcHI/jtaxbjZKuZh642GsknIdlTgF8Gn hXDv26rrORpvZ0lSIZ77BT+7tZDgXZn/3oCa4+jHZo6X7gr3TN0HcQc/xmLc4deCju2v 8IGbjoJA/o6DGbP2hkeUEb29M8mbCZnWramCiwT5/3es9uiqiRqL9OQOHq5l4GPK1Cfd 6XCA== 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 :arc-authentication-results; bh=8GwdkdlxcSSYJHufCtbXJe1IM6xEsW88gnYTD8bLO8k=; b=r1JUDUrx0yCBhKzi89Z3a0VpZ/NSgq/SgNCDNg3hvq4EmNIzXaubsmMriQHMPGrti0 WMq55sgzMbZDmHmx7SuyUsBGUME1ob/VcbiAnrXpVXzS6qdU/fjowVUeeqOsh/boSmjw lRF0LRs0ujZ2/iJMOi7x0h4g+3gDFdqsHi72Rux7y2jWMj0ZtW5qI2LlxXbQVFg9MPI2 EWW/zOBpwTRWFnPdOSnVzinxMmYq3ybQHJFnfKJc1H8nLvvdHwHdKT6lpkPssf/RiJZm i8twYWRzm05AXtdD8piSJrYFveUuCUG6e3HqRwSsYDpcLD3RjxAV4ufzg7iGdFi2SHSi 0qcg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of bhe@redhat.com designates 66.187.233.73 as permitted sender) smtp.mailfrom=bhe@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx3-rdu2.redhat.com. [66.187.233.73]) by mx.google.com with ESMTPS id p123-v6si221486qkc.311.2018.06.26.18.31.39 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Jun 2018 18:31:39 -0700 (PDT) Received-SPF: pass (google.com: domain of bhe@redhat.com designates 66.187.233.73 as permitted sender) client-ip=66.187.233.73; Authentication-Results: mx.google.com; spf=pass (google.com: domain of bhe@redhat.com designates 66.187.233.73 as permitted sender) smtp.mailfrom=bhe@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2A620B5C9; Wed, 27 Jun 2018 01:31:39 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-8-24.pek2.redhat.com [10.72.8.24]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8FB70111764C; Wed, 27 Jun 2018 01:31:34 +0000 (UTC) From: Baoquan He To: linux-kernel@vger.kernel.org, akpm@linux-foundation.org, dave.hansen@intel.com, pagupta@redhat.com Cc: linux-mm@kvack.org, kirill.shutemov@linux.intel.com, Baoquan He Subject: [PATCH v5 3/4] mm/sparse: Add a new parameter 'data_unit_size' for alloc_usemap_and_memmap Date: Wed, 27 Jun 2018 09:31:15 +0800 Message-Id: <20180627013116.12411-4-bhe@redhat.com> In-Reply-To: <20180627013116.12411-1-bhe@redhat.com> References: <20180627013116.12411-1-bhe@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Wed, 27 Jun 2018 01:31:39 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Wed, 27 Jun 2018 01:31:39 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'bhe@redhat.com' RCPT:'' 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 alloc_usemap_and_memmap() is passing in a "void *" that points to usemap_map or memmap_map. In next patch we will change both of the map allocation from taking 'NR_MEM_SECTIONS' as the length to taking 'nr_present_sections' as the length. After that, the passed in 'void*' needs to update as things get consumed. But, it knows only the quantity of objects consumed and not the type. This effectively tells it enough about the type to let it update the pointer as objects are consumed. Signed-off-by: Baoquan He Reviewed-by: Pavel Tatashin --- mm/sparse.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mm/sparse.c b/mm/sparse.c index 71ad53da2cd1..b2848cc6e32a 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -489,10 +489,12 @@ void __weak __meminit vmemmap_populate_print_last(void) /** * alloc_usemap_and_memmap - memory alloction for pageblock flags and vmemmap * @map: usemap_map for pageblock flags or mmap_map for vmemmap + * @unit_size: size of map unit */ static void __init alloc_usemap_and_memmap(void (*alloc_func) (void *, unsigned long, unsigned long, - unsigned long, int), void *data) + unsigned long, int), void *data, + int data_unit_size) { unsigned long pnum; unsigned long map_count; @@ -569,7 +571,8 @@ void __init sparse_init(void) if (!usemap_map) panic("can not allocate usemap_map\n"); alloc_usemap_and_memmap(sparse_early_usemaps_alloc_node, - (void *)usemap_map); + (void *)usemap_map, + sizeof(usemap_map[0])); #ifdef CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER size2 = sizeof(struct page *) * NR_MEM_SECTIONS; @@ -577,7 +580,8 @@ void __init sparse_init(void) if (!map_map) panic("can not allocate map_map\n"); alloc_usemap_and_memmap(sparse_early_mem_maps_alloc_node, - (void *)map_map); + (void *)map_map, + sizeof(map_map[0])); #endif for_each_present_section_nr(0, pnum) {