Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751764AbdGZIeP (ORCPT ); Wed, 26 Jul 2017 04:34:15 -0400 Received: from mail-wr0-f196.google.com ([209.85.128.196]:37788 "EHLO mail-wr0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751327AbdGZIdz (ORCPT ); Wed, 26 Jul 2017 04:33:55 -0400 From: Michal Hocko To: linux-mm@kvack.org Cc: Andrew Morton , Mel Gorman , Vlastimil Babka , Andrea Arcangeli , Jerome Glisse , Reza Arbab , Yasuaki Ishimatsu , qiuxishi@huawei.com, Kani Toshimitsu , slaoub@gmail.com, Joonsoo Kim , Andi Kleen , Daniel Kiper , Igor Mammedov , Vitaly Kuznetsov , LKML , Michal Hocko Subject: [RFC PATCH 4/5] mm, sparse: complain about implicit altmap usage in vmemmap_populate Date: Wed, 26 Jul 2017 10:33:32 +0200 Message-Id: <20170726083333.17754-5-mhocko@kernel.org> X-Mailer: git-send-email 2.13.2 In-Reply-To: <20170726083333.17754-1-mhocko@kernel.org> References: <20170726083333.17754-1-mhocko@kernel.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1165 Lines: 34 From: Michal Hocko All current users of the altmap are in the memory hotplug code and they use __vmemmap_populate explicitly (via __sparse_mem_map_populate). Complain if somebody uses vmemmap_populate with altmap registered because that could be an unexpected usage. Also call __vmemmap_populate with NULL from that code path. Signed-off-by: Michal Hocko --- include/linux/mm.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 3ce673570fb8..ae1fa053d09e 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2456,8 +2456,12 @@ int __vmemmap_populate(unsigned long start, unsigned long end, int node, static inline int vmemmap_populate(unsigned long start, unsigned long end, int node) { - struct vmem_altmap *altmap = to_vmem_altmap(start); - return __vmemmap_populate(start, end, node, altmap); + /* + * All users of the altmap have to be explicit and use + * __vmemmap_populate directly + */ + WARN_ON(to_vmem_altmap(start)); + return __vmemmap_populate(start, end, node, NULL); } void vmemmap_populate_print_last(void); -- 2.13.2