Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932410AbeALA2a (ORCPT + 1 other); Thu, 11 Jan 2018 19:28:30 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:46682 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932187AbeALA22 (ORCPT ); Thu, 11 Jan 2018 19:28:28 -0500 Date: Thu, 11 Jan 2018 16:28:25 -0800 From: Andrew Morton To: Alexandre Ghiti Cc: Michal Hocko , linux-mm@kvack.org, kirill.shutemov@linux.intel.com, dan.j.williams@intel.com, zi.yan@cs.rutgers.edu, gregkh@linuxfoundation.org, n-horiguchi@ah.jp.nec.com, willy@linux.intel.com, mark.rutland@arm.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm, THP: vmf_insert_pfn_pud depends on CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD Message-Id: <20180111162825.4cdaba2a21d8f15b21c45c75@linux-foundation.org> In-Reply-To: <71853228-0beb-1e69-df47-59fa1bc5bd2f@upmem.com> References: <1515660811-12293-1-git-send-email-aghiti@upmem.com> <20180111100620.GY1732@dhcp22.suse.cz> <71853228-0beb-1e69-df47-59fa1bc5bd2f@upmem.com> X-Mailer: Sylpheed 3.4.1 (GTK+ 2.24.23; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On Thu, 11 Jan 2018 14:05:34 +0100 Alexandre Ghiti wrote: > On 11/01/2018 11:06, Michal Hocko wrote: > > On Thu 11-01-18 09:53:31, Alexandre Ghiti wrote: > >> The only definition of vmf_insert_pfn_pud depends on > >> CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD being defined. Then its declaration in > >> include/linux/huge_mm.h should have the same restriction so that we do > >> not expose this function if CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD is > >> not defined. > > Why is this a problem? Compiler should simply throw away any > > declarations which are not used? > It is not a big problem but surrounding the declaration with the #ifdef > makes the compilation of external modules fail with an "error: implicit > declaration of function vmf_insert_pfn_pud" if > CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD is not defined. I think it is > cleaner than generating a .ko which would not load anyway. Disagree. We'd have to put an absolutely vast amount of complex and hard-to-maintain ifdefs in headers if we were to ensure that such errors were to be detected at compile time. Whereas if we defer the detection of the errors until link time (or depmod or modprobe time) then yes, a handful of people will detect their mistake a minute or three later but that's a small cost compared to permanently and badly messing up the header files.