From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756247AbcH3QAE (ORCPT ); Tue, 30 Aug 2016 12:00:04 -0400 Received: from mail-pf0-f196.google.com ([209.85.192.196]:36636 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755250AbcH3QAC (ORCPT ); Tue, 30 Aug 2016 12:00:02 -0400 Date: Wed, 31 Aug 2016 00:59:19 +0900 From: Sergey Senozhatsky To: Aaron Lu Cc: Linux Memory Management List , "'Kirill A. Shutemov'" , Dave Hansen , Tim Chen , Huang Ying , Andrew Morton , Vlastimil Babka , Jerome Marchand , Andrea Arcangeli , Mel Gorman , Ebru Akagunduz , linux-kernel@vger.kernel.org Subject: Re: [PATCH] thp: reduce usage of huge zero page's atomic counter Message-ID: <20160830155919.GA482@swordfish> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.7.0 (2016-08-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On (08/29/16 14:31), Aaron Lu wrote: > > The global zero page is used to satisfy an anonymous read fault. If > THP(Transparent HugePage) is enabled then the global huge zero page is used. > The global huge zero page uses an atomic counter for reference counting > and is allocated/freed dynamically according to its counter value. > Hello, for !CONFIG_TRANSPARENT_HUGEPAGE configs mm_put_huge_zero_page() is BUILD_BUG(), which gives the following build error (mmots v4.8-rc4-mmots-2016-08-29-16-56) CC kernel/fork.o In file included from ./include/asm-generic/bug.h:4:0, from ./arch/x86/include/asm/bug.h:35, from ./include/linux/bug.h:4, from ./include/linux/mmdebug.h:4, from ./include/linux/gfp.h:4, from ./include/linux/slab.h:14, from kernel/fork.c:14: In function ‘mm_put_huge_zero_page’, inlined from ‘__mmput’ at kernel/fork.c:777:2, inlined from ‘mmput_async_fn’ at kernel/fork.c:806:2: ./include/linux/compiler.h:495:38: error: call to ‘__compiletime_assert_218’ declared with attribute error: BUILD_BUG failed _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) ^ ./include/linux/compiler.h:478:4: note: in definition of macro ‘__compiletime_assert’ prefix ## suffix(); \ ^~~~~~ ./include/linux/compiler.h:495:2: note: in expansion of macro ‘_compiletime_assert’ _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) ^~~~~~~~~~~~~~~~~~~ ./include/linux/bug.h:51:37: note: in expansion of macro ‘compiletime_assert’ #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^~~~~~~~~~~~~~~~~~ ./include/linux/bug.h:85:21: note: in expansion of macro ‘BUILD_BUG_ON_MSG’ #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed") ^~~~~~~~~~~~~~~~ ./include/linux/huge_mm.h:218:2: note: in expansion of macro ‘BUILD_BUG’ BUILD_BUG(); ^~~~~~~~~ In function ‘mm_put_huge_zero_page’, inlined from ‘__mmput’ at kernel/fork.c:777:2, inlined from ‘mmput’ at kernel/fork.c:798:3: ./include/linux/compiler.h:495:38: error: call to ‘__compiletime_assert_218’ declared with attribute error: BUILD_BUG failed _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) ^ ./include/linux/compiler.h:478:4: note: in definition of macro ‘__compiletime_assert’ prefix ## suffix(); \ ^~~~~~ ./include/linux/compiler.h:495:2: note: in expansion of macro ‘_compiletime_assert’ _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) ^~~~~~~~~~~~~~~~~~~ ./include/linux/bug.h:51:37: note: in expansion of macro ‘compiletime_assert’ #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^~~~~~~~~~~~~~~~~~ ./include/linux/bug.h:85:21: note: in expansion of macro ‘BUILD_BUG_ON_MSG’ #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed") ^~~~~~~~~~~~~~~~ ./include/linux/huge_mm.h:218:2: note: in expansion of macro ‘BUILD_BUG’ BUILD_BUG(); ^~~~~~~~~ make[1]: *** [scripts/Makefile.build:291: kernel/fork.o] Error 1 make: *** [Makefile:968: kernel] Error 2 -ss