From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ingo Molnar Date: Mon, 07 Oct 2019 13:06:17 +0000 Subject: Re: [PATCH V4 2/2] mm/pgtable/debug: Add test validating architecture page table helpers Message-Id: <20191007130617.GB56546@gmail.com> List-Id: References: <1570427124-21887-1-git-send-email-anshuman.khandual@arm.com> <1570427124-21887-3-git-send-email-anshuman.khandual@arm.com> In-Reply-To: <1570427124-21887-3-git-send-email-anshuman.khandual@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Anshuman Khandual Cc: Mark Rutland , linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org, Peter Zijlstra , James Hogan , Tetsuo Handa , Heiko Carstens , Michal Hocko , linux-mm@kvack.org, Dave Hansen , Paul Mackerras , sparclinux@vger.kernel.org, Thomas Gleixner , linux-s390@vger.kernel.org, Michael Ellerman , x86@kernel.org, Russell King - ARM Linux , Matthew Wilcox , Steven Price , Jason Gunthorpe , Gerald Schaefer , linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Kees Cook , Masahiro Yamada , Mark Brown , "Kirill A . Shutemov" , Dan Williams , Vlastimil Babka , Christophe Leroy , Sri Krishna chowdary , Ard Biesheuvel , Greg Kroah-Hartman , linux-mips@vger.kernel.org, Ralf Baechle , linux-kernel@vger.kernel.org, Paul Burton , Mike Rapoport , Vineet Gupta , Martin Schwidefsky , Andrew Morton , linuxppc-dev@lists.ozlabs.org, "David S. Miller" * Anshuman Khandual wrote: > This adds a test module which will validate architecture page table helpers > and accessors regarding compliance with generic MM semantics expectations. > This will help various architectures in validating changes to the existing > page table helpers or addition of new ones. > > Test page table and memory pages creating it's entries at various level are > all allocated from system memory with required alignments. If memory pages > with required size and alignment could not be allocated, then all depending > individual tests are skipped. > diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h > index 52e5f5f2240d..b882792a3999 100644 > --- a/arch/x86/include/asm/pgtable_64_types.h > +++ b/arch/x86/include/asm/pgtable_64_types.h > @@ -40,6 +40,8 @@ static inline bool pgtable_l5_enabled(void) > #define pgtable_l5_enabled() 0 > #endif /* CONFIG_X86_5LEVEL */ > > +#define mm_p4d_folded(mm) (!pgtable_l5_enabled()) > + > extern unsigned int pgdir_shift; > extern unsigned int ptrs_per_p4d; Any deep reason this has to be a macro instead of proper C? > diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug > index 327b3ebf23bf..683131b1ee7d 100644 > --- a/mm/Kconfig.debug > +++ b/mm/Kconfig.debug > @@ -117,3 +117,18 @@ config DEBUG_RODATA_TEST > depends on STRICT_KERNEL_RWX > ---help--- > This option enables a testcase for the setting rodata read-only. > + > +config DEBUG_ARCH_PGTABLE_TEST > + bool "Test arch page table helpers for semantics compliance" > + depends on MMU > + depends on DEBUG_KERNEL > + depends on !(ARM || IA64) Please add a proper enabling switch for architectures to opt in. Please also add it to Documentation/features/list-arch.sh so that it's listed as a 'TODO' entry on architectures where the tests are not enabled yet. > + help > + This options provides a kernel module which can be used to test > + architecture page table helper functions on various platform in > + verifying if they comply with expected generic MM semantics. This > + will help architectures code in making sure that any changes or > + new additions of these helpers will still conform to generic MM > + expected semantics. Typos and grammar fixed: help This option provides a kernel module which can be used to test architecture page table helper functions on various platforms in verifying if they comply with expected generic MM semantics. This will help architecture code in making sure that any changes or new additions of these helpers still conform to expected semantics of the generic MM. Also, more fundamentally: isn't a kernel module too late for such a debug check, should something break due to a core MM change? Have these debug checks caught any bugs or inconsistencies before? Why not call this as some earlier MM debug check, after enabling paging but before executing user-space binaries or relying on complex MM ops within the kernel, called at a stage when those primitives are all expected to work fine? It seems to me that arch_pgtable_tests_init) won't even context-switch normally, right? Finally, instead of inventing yet another randomly named .config debug switch, please fit it into the regular MM debug options which go along the CONFIG_DEBUG_VM* naming scheme. Might even make sense to enable these new debug checks by default if CONFIG_DEBUG_VM=y, that way we'll get a *lot* more debug coverage than some random module somewhere that few people will know about, let alone run. Thanks, Ingo From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FSL_HELO_FAKE,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4CF46C47404 for ; Mon, 7 Oct 2019 13:06:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 20B5821721 for ; Mon, 7 Oct 2019 13:06:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570453587; bh=orO2mi4AI+dl+SuRCInkOPjUbYuRB58I+gkFr24AZsg=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=paYjvkDIK7WW/Is1xAYjB9UoabTBuVX3cAW7n8junOw5pQ91z8J4L7h4XFnFuygGQ /qKLg3XaXf76dsZJIKJ4w5MxBzDYmSo0OQX3Pz3MDqXJIzRwxCgO8E1Qwv8WMbwQzi 4H5nJ0z+1MPMb1WCy7ai0wsnIikcRP+lDjRL0rNE= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728414AbfJGNG0 (ORCPT ); Mon, 7 Oct 2019 09:06:26 -0400 Received: from mail-wm1-f65.google.com ([209.85.128.65]:36683 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727742AbfJGNGZ (ORCPT ); Mon, 7 Oct 2019 09:06:25 -0400 Received: by mail-wm1-f65.google.com with SMTP id m18so12274421wmc.1; Mon, 07 Oct 2019 06:06:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=RZE8Cj868kn5EJS/0QY29Orx1bZsg1Fle+VfrZSmgF8=; b=tJAewuqAmBMfjpkJA/1enuzflTjuI48UJZ0Z0fdDtpXMvjWt8JagrRMgnZLLai9UeY mkbErQhWM39j4Hm1s7MX9m/lzVTnkp+OMeG5ZXtiir6jn8BLfHkzXnUShAGoykAHXOnf zYcGSR++z2tbIUzuTH5tpf5m9vIc8eF3O3REAZ36+mr/kHp8w4U5Z+7uVFz79ksG8TIC eqab017gzKxysvQg39onykCPqr4VZgoidG0IKRK7bzgdYmIjLQ14xRLyhnknxrgOj8o1 kkqFWIhWiVMX57N1WUPYfE6wABoyQFZVbrbpv3hVtkeFHgU3i9sImWF4xz9fwLCh2ch6 oGzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=RZE8Cj868kn5EJS/0QY29Orx1bZsg1Fle+VfrZSmgF8=; b=kDsKqAwuPWAL0bcQtAwiRJrJ71vM7e9hsBI27gGr9OpDwKOqF1Y4lqsJ9af8xZUkya nvdZPI8oP+5IvgU567nqDNLZvWjZgZ4pa7NV7Lgwe8yRudtL7oIrEER/JzUaqacIYtkP YBrNLy+ZZaqxMQbzMybcspG2CDkS52fA3ypS9hz8EZX8kRS1koBUWi871Rtesd2aAWez UBa6P+f1uQpxJmZhD1Gz3iDWKFQ40AWdymV5/H2Y3OHtPcY+EDNmUq1D9Xzt4kj954hX rSnZKNUlVqCJseqq7wuOx8V8qWnaGS10eeewUvktzU1+ZALZ96PXbbspK3durC5doxom ejyQ== X-Gm-Message-State: APjAAAWABw3yyyt1CuXYUJ/zGsY0vA16wmXwSEURVSIU3zauNwl3sQxD 6PAcaJ7NCjPzhvPXZqbf0bQ= X-Google-Smtp-Source: APXvYqwnZjlpL4PUUAvfK5d4pYWeE31TwsXrlSV5mEiGcVQWwRB9VHCMKlpm1WOlkrkBBukHu/Su/w== X-Received: by 2002:a1c:7fcc:: with SMTP id a195mr21060937wmd.27.1570453581529; Mon, 07 Oct 2019 06:06:21 -0700 (PDT) Received: from gmail.com (2E8B0CD5.catv.pool.telekom.hu. [46.139.12.213]) by smtp.gmail.com with ESMTPSA id l4sm14525979wrw.6.2019.10.07.06.06.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Oct 2019 06:06:20 -0700 (PDT) Date: Mon, 7 Oct 2019 15:06:17 +0200 From: Ingo Molnar To: Anshuman Khandual Cc: linux-mm@kvack.org, Andrew Morton , Vlastimil Babka , Greg Kroah-Hartman , Thomas Gleixner , Mike Rapoport , Jason Gunthorpe , Dan Williams , Peter Zijlstra , Michal Hocko , Mark Rutland , Mark Brown , Steven Price , Ard Biesheuvel , Masahiro Yamada , Kees Cook , Tetsuo Handa , Matthew Wilcox , Sri Krishna chowdary , Dave Hansen , Russell King - ARM Linux , Michael Ellerman , Paul Mackerras , Martin Schwidefsky , Heiko Carstens , "David S. Miller" , Vineet Gupta , James Hogan , Paul Burton , Ralf Baechle , "Kirill A . Shutemov" , Gerald Schaefer , Christophe Leroy , linux-snps-arc@lists.infradead.org, linux-mips@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-ia64@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH V4 2/2] mm/pgtable/debug: Add test validating architecture page table helpers Message-ID: <20191007130617.GB56546@gmail.com> References: <1570427124-21887-1-git-send-email-anshuman.khandual@arm.com> <1570427124-21887-3-git-send-email-anshuman.khandual@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1570427124-21887-3-git-send-email-anshuman.khandual@arm.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * Anshuman Khandual wrote: > This adds a test module which will validate architecture page table helpers > and accessors regarding compliance with generic MM semantics expectations. > This will help various architectures in validating changes to the existing > page table helpers or addition of new ones. > > Test page table and memory pages creating it's entries at various level are > all allocated from system memory with required alignments. If memory pages > with required size and alignment could not be allocated, then all depending > individual tests are skipped. > diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h > index 52e5f5f2240d..b882792a3999 100644 > --- a/arch/x86/include/asm/pgtable_64_types.h > +++ b/arch/x86/include/asm/pgtable_64_types.h > @@ -40,6 +40,8 @@ static inline bool pgtable_l5_enabled(void) > #define pgtable_l5_enabled() 0 > #endif /* CONFIG_X86_5LEVEL */ > > +#define mm_p4d_folded(mm) (!pgtable_l5_enabled()) > + > extern unsigned int pgdir_shift; > extern unsigned int ptrs_per_p4d; Any deep reason this has to be a macro instead of proper C? > diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug > index 327b3ebf23bf..683131b1ee7d 100644 > --- a/mm/Kconfig.debug > +++ b/mm/Kconfig.debug > @@ -117,3 +117,18 @@ config DEBUG_RODATA_TEST > depends on STRICT_KERNEL_RWX > ---help--- > This option enables a testcase for the setting rodata read-only. > + > +config DEBUG_ARCH_PGTABLE_TEST > + bool "Test arch page table helpers for semantics compliance" > + depends on MMU > + depends on DEBUG_KERNEL > + depends on !(ARM || IA64) Please add a proper enabling switch for architectures to opt in. Please also add it to Documentation/features/list-arch.sh so that it's listed as a 'TODO' entry on architectures where the tests are not enabled yet. > + help > + This options provides a kernel module which can be used to test > + architecture page table helper functions on various platform in > + verifying if they comply with expected generic MM semantics. This > + will help architectures code in making sure that any changes or > + new additions of these helpers will still conform to generic MM > + expected semantics. Typos and grammar fixed: help This option provides a kernel module which can be used to test architecture page table helper functions on various platforms in verifying if they comply with expected generic MM semantics. This will help architecture code in making sure that any changes or new additions of these helpers still conform to expected semantics of the generic MM. Also, more fundamentally: isn't a kernel module too late for such a debug check, should something break due to a core MM change? Have these debug checks caught any bugs or inconsistencies before? Why not call this as some earlier MM debug check, after enabling paging but before executing user-space binaries or relying on complex MM ops within the kernel, called at a stage when those primitives are all expected to work fine? It seems to me that arch_pgtable_tests_init) won't even context-switch normally, right? Finally, instead of inventing yet another randomly named .config debug switch, please fit it into the regular MM debug options which go along the CONFIG_DEBUG_VM* naming scheme. Might even make sense to enable these new debug checks by default if CONFIG_DEBUG_VM=y, that way we'll get a *lot* more debug coverage than some random module somewhere that few people will know about, let alone run. Thanks, Ingo From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, FSL_HELO_FAKE,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 538D3C47404 for ; Mon, 7 Oct 2019 13:15:27 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F07502084D for ; Mon, 7 Oct 2019 13:15:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="tJAewuqA" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F07502084D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from bilbo.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 46n1Dr3mfNzDqLN for ; Tue, 8 Oct 2019 00:15:24 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gmail.com (client-ip=2a00:1450:4864:20::344; helo=mail-wm1-x344.google.com; envelope-from=mingo.kernel.org@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="tJAewuqA"; dkim-atps=neutral Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 46n12X0GwCzDqL8 for ; Tue, 8 Oct 2019 00:06:25 +1100 (AEDT) Received: by mail-wm1-x344.google.com with SMTP id v17so12258193wml.4 for ; Mon, 07 Oct 2019 06:06:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=RZE8Cj868kn5EJS/0QY29Orx1bZsg1Fle+VfrZSmgF8=; b=tJAewuqAmBMfjpkJA/1enuzflTjuI48UJZ0Z0fdDtpXMvjWt8JagrRMgnZLLai9UeY mkbErQhWM39j4Hm1s7MX9m/lzVTnkp+OMeG5ZXtiir6jn8BLfHkzXnUShAGoykAHXOnf zYcGSR++z2tbIUzuTH5tpf5m9vIc8eF3O3REAZ36+mr/kHp8w4U5Z+7uVFz79ksG8TIC eqab017gzKxysvQg39onykCPqr4VZgoidG0IKRK7bzgdYmIjLQ14xRLyhnknxrgOj8o1 kkqFWIhWiVMX57N1WUPYfE6wABoyQFZVbrbpv3hVtkeFHgU3i9sImWF4xz9fwLCh2ch6 oGzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=RZE8Cj868kn5EJS/0QY29Orx1bZsg1Fle+VfrZSmgF8=; b=GlJX1eoXB1Lnm565fn9I9p+8eu78hYPFHHKwuKZJOTr6EX5TXTlbfGal3CwmNaLr+H HxRY/QjEA04b+uqkQ/HRaPWU8CCOYx0y2PipNrUvHhZaVIrWKfHjKbWnecd0d4bsscUd FigH5e6Q+Jd26kBnKLsXz1fer0Etx19EBunFh2mnvMyF1dQysy2y6uH9nYgZZhs642vQ rOTHN+BVCuUgiS5U/6uV1bccY35Wct1j5mz3HgJI4p6tVpKqfMS4m4FjI0e75Jh5Qdb8 CN8QBPdqCBTrkWvEbovwlZM2zrR2V1degRdalJCzYakJwHoLan/rAGFl3vR2GS5bR57j rgdg== X-Gm-Message-State: APjAAAVIC7Nb3hj9eGjojLzwEvdALeOvbL/X7lUiIXTwMan0MH9VMaIA 8QpCmjnJLqt96V9xgNKjaXM= X-Google-Smtp-Source: APXvYqwnZjlpL4PUUAvfK5d4pYWeE31TwsXrlSV5mEiGcVQWwRB9VHCMKlpm1WOlkrkBBukHu/Su/w== X-Received: by 2002:a1c:7fcc:: with SMTP id a195mr21060937wmd.27.1570453581529; Mon, 07 Oct 2019 06:06:21 -0700 (PDT) Received: from gmail.com (2E8B0CD5.catv.pool.telekom.hu. [46.139.12.213]) by smtp.gmail.com with ESMTPSA id l4sm14525979wrw.6.2019.10.07.06.06.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Oct 2019 06:06:20 -0700 (PDT) Date: Mon, 7 Oct 2019 15:06:17 +0200 From: Ingo Molnar To: Anshuman Khandual Subject: Re: [PATCH V4 2/2] mm/pgtable/debug: Add test validating architecture page table helpers Message-ID: <20191007130617.GB56546@gmail.com> References: <1570427124-21887-1-git-send-email-anshuman.khandual@arm.com> <1570427124-21887-3-git-send-email-anshuman.khandual@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1570427124-21887-3-git-send-email-anshuman.khandual@arm.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org, Peter Zijlstra , James Hogan , Tetsuo Handa , Heiko Carstens , Michal Hocko , linux-mm@kvack.org, Dave Hansen , Paul Mackerras , sparclinux@vger.kernel.org, Thomas Gleixner , linux-s390@vger.kernel.org, x86@kernel.org, Russell King - ARM Linux , Matthew Wilcox , Steven Price , Jason Gunthorpe , Gerald Schaefer , linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Kees Cook , Masahiro Yamada , Mark Brown , "Kirill A . Shutemov" , Dan Williams , Vlastimil Babka , Sri Krishna chowdary , Ard Biesheuvel , Greg Kroah-Hartman , linux-mips@vger.kernel.org, Ralf Baechle , linux-kernel@vger.kernel.org, Paul Burton , Mike Rapoport , Vineet Gupta , Martin Schwidefsky , Andrew Morton , linuxppc-dev@lists.ozlabs.org, "David S. Miller" Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" * Anshuman Khandual wrote: > This adds a test module which will validate architecture page table helpers > and accessors regarding compliance with generic MM semantics expectations. > This will help various architectures in validating changes to the existing > page table helpers or addition of new ones. > > Test page table and memory pages creating it's entries at various level are > all allocated from system memory with required alignments. If memory pages > with required size and alignment could not be allocated, then all depending > individual tests are skipped. > diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h > index 52e5f5f2240d..b882792a3999 100644 > --- a/arch/x86/include/asm/pgtable_64_types.h > +++ b/arch/x86/include/asm/pgtable_64_types.h > @@ -40,6 +40,8 @@ static inline bool pgtable_l5_enabled(void) > #define pgtable_l5_enabled() 0 > #endif /* CONFIG_X86_5LEVEL */ > > +#define mm_p4d_folded(mm) (!pgtable_l5_enabled()) > + > extern unsigned int pgdir_shift; > extern unsigned int ptrs_per_p4d; Any deep reason this has to be a macro instead of proper C? > diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug > index 327b3ebf23bf..683131b1ee7d 100644 > --- a/mm/Kconfig.debug > +++ b/mm/Kconfig.debug > @@ -117,3 +117,18 @@ config DEBUG_RODATA_TEST > depends on STRICT_KERNEL_RWX > ---help--- > This option enables a testcase for the setting rodata read-only. > + > +config DEBUG_ARCH_PGTABLE_TEST > + bool "Test arch page table helpers for semantics compliance" > + depends on MMU > + depends on DEBUG_KERNEL > + depends on !(ARM || IA64) Please add a proper enabling switch for architectures to opt in. Please also add it to Documentation/features/list-arch.sh so that it's listed as a 'TODO' entry on architectures where the tests are not enabled yet. > + help > + This options provides a kernel module which can be used to test > + architecture page table helper functions on various platform in > + verifying if they comply with expected generic MM semantics. This > + will help architectures code in making sure that any changes or > + new additions of these helpers will still conform to generic MM > + expected semantics. Typos and grammar fixed: help This option provides a kernel module which can be used to test architecture page table helper functions on various platforms in verifying if they comply with expected generic MM semantics. This will help architecture code in making sure that any changes or new additions of these helpers still conform to expected semantics of the generic MM. Also, more fundamentally: isn't a kernel module too late for such a debug check, should something break due to a core MM change? Have these debug checks caught any bugs or inconsistencies before? Why not call this as some earlier MM debug check, after enabling paging but before executing user-space binaries or relying on complex MM ops within the kernel, called at a stage when those primitives are all expected to work fine? It seems to me that arch_pgtable_tests_init) won't even context-switch normally, right? Finally, instead of inventing yet another randomly named .config debug switch, please fit it into the regular MM debug options which go along the CONFIG_DEBUG_VM* naming scheme. Might even make sense to enable these new debug checks by default if CONFIG_DEBUG_VM=y, that way we'll get a *lot* more debug coverage than some random module somewhere that few people will know about, let alone run. Thanks, Ingo From mboxrd@z Thu Jan 1 00:00:00 1970 From: mingo@kernel.org (Ingo Molnar) Date: Mon, 7 Oct 2019 15:06:17 +0200 Subject: [PATCH V4 2/2] mm/pgtable/debug: Add test validating architecture page table helpers In-Reply-To: <1570427124-21887-3-git-send-email-anshuman.khandual@arm.com> References: <1570427124-21887-1-git-send-email-anshuman.khandual@arm.com> <1570427124-21887-3-git-send-email-anshuman.khandual@arm.com> List-ID: Message-ID: <20191007130617.GB56546@gmail.com> To: linux-snps-arc@lists.infradead.org * Anshuman Khandual wrote: > This adds a test module which will validate architecture page table helpers > and accessors regarding compliance with generic MM semantics expectations. > This will help various architectures in validating changes to the existing > page table helpers or addition of new ones. > > Test page table and memory pages creating it's entries at various level are > all allocated from system memory with required alignments. If memory pages > with required size and alignment could not be allocated, then all depending > individual tests are skipped. > diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h > index 52e5f5f2240d..b882792a3999 100644 > --- a/arch/x86/include/asm/pgtable_64_types.h > +++ b/arch/x86/include/asm/pgtable_64_types.h > @@ -40,6 +40,8 @@ static inline bool pgtable_l5_enabled(void) > #define pgtable_l5_enabled() 0 > #endif /* CONFIG_X86_5LEVEL */ > > +#define mm_p4d_folded(mm) (!pgtable_l5_enabled()) > + > extern unsigned int pgdir_shift; > extern unsigned int ptrs_per_p4d; Any deep reason this has to be a macro instead of proper C? > diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug > index 327b3ebf23bf..683131b1ee7d 100644 > --- a/mm/Kconfig.debug > +++ b/mm/Kconfig.debug > @@ -117,3 +117,18 @@ config DEBUG_RODATA_TEST > depends on STRICT_KERNEL_RWX > ---help--- > This option enables a testcase for the setting rodata read-only. > + > +config DEBUG_ARCH_PGTABLE_TEST > + bool "Test arch page table helpers for semantics compliance" > + depends on MMU > + depends on DEBUG_KERNEL > + depends on !(ARM || IA64) Please add a proper enabling switch for architectures to opt in. Please also add it to Documentation/features/list-arch.sh so that it's listed as a 'TODO' entry on architectures where the tests are not enabled yet. > + help > + This options provides a kernel module which can be used to test > + architecture page table helper functions on various platform in > + verifying if they comply with expected generic MM semantics. This > + will help architectures code in making sure that any changes or > + new additions of these helpers will still conform to generic MM > + expected semantics. Typos and grammar fixed: help This option provides a kernel module which can be used to test architecture page table helper functions on various platforms in verifying if they comply with expected generic MM semantics. This will help architecture code in making sure that any changes or new additions of these helpers still conform to expected semantics of the generic MM. Also, more fundamentally: isn't a kernel module too late for such a debug check, should something break due to a core MM change? Have these debug checks caught any bugs or inconsistencies before? Why not call this as some earlier MM debug check, after enabling paging but before executing user-space binaries or relying on complex MM ops within the kernel, called at a stage when those primitives are all expected to work fine? It seems to me that arch_pgtable_tests_init) won't even context-switch normally, right? Finally, instead of inventing yet another randomly named .config debug switch, please fit it into the regular MM debug options which go along the CONFIG_DEBUG_VM* naming scheme. Might even make sense to enable these new debug checks by default if CONFIG_DEBUG_VM=y, that way we'll get a *lot* more debug coverage than some random module somewhere that few people will know about, let alone run. Thanks, Ingo From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.7 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,FSL_HELO_FAKE,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06772ECE596 for ; Mon, 7 Oct 2019 13:06:28 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CE1EB2070B for ; Mon, 7 Oct 2019 13:06:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="mIHMWlBm"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="tJAewuqA" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CE1EB2070B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=0fxmA4trJp0OKhqP+IAgVXePdWNqxj99e9gE/8OgLyQ=; b=mIHMWlBmFxXPTZ KuCumMnEAIBWYDTF1RT1n+XnOJ5f5u16aqrh3MEKh6U9sS/yobttrRuKYiIU42BYG37AOy1dHMI8o svaCy8VZqG2xKTwNdii1lWcR6iYd8nPlajhLwjGsDaOPiuJ/GWmfB3GyqeMdg8s9LoIy2J0oXRAwc JNwhY7JPA4pfccFvHyF+IH69TlbvdosX2S7LYuOiVsvnRurR7kIlR3FNj5jFKhRaQwXkwujytHVg0 0ylKa+AOZyn3YVJGuayPtErO59eB5aGM6b0oDZYKcXBvpGfSDQHGcG6NZjH8YxIXHJi+P/2g5V5c6 JnD4YTbNRvuYqOHBTbGA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1iHSiZ-0005Hr-A3; Mon, 07 Oct 2019 13:06:27 +0000 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iHSiV-0005Gw-BN; Mon, 07 Oct 2019 13:06:24 +0000 Received: by mail-wm1-x341.google.com with SMTP id b24so12237135wmj.5; Mon, 07 Oct 2019 06:06:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=RZE8Cj868kn5EJS/0QY29Orx1bZsg1Fle+VfrZSmgF8=; b=tJAewuqAmBMfjpkJA/1enuzflTjuI48UJZ0Z0fdDtpXMvjWt8JagrRMgnZLLai9UeY mkbErQhWM39j4Hm1s7MX9m/lzVTnkp+OMeG5ZXtiir6jn8BLfHkzXnUShAGoykAHXOnf zYcGSR++z2tbIUzuTH5tpf5m9vIc8eF3O3REAZ36+mr/kHp8w4U5Z+7uVFz79ksG8TIC eqab017gzKxysvQg39onykCPqr4VZgoidG0IKRK7bzgdYmIjLQ14xRLyhnknxrgOj8o1 kkqFWIhWiVMX57N1WUPYfE6wABoyQFZVbrbpv3hVtkeFHgU3i9sImWF4xz9fwLCh2ch6 oGzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=RZE8Cj868kn5EJS/0QY29Orx1bZsg1Fle+VfrZSmgF8=; b=elXCk6KtpH1/I/zEsq9nBG4r5WxSo7ksns6EJQYazmv9ijSZaTDTdWZgYBhcqrMjZP kJ4o95dexc1J7fxnY8s8hX29c7edMj19funz3Jlxc8a8CQ5UqXiMojUKHHI5rh2CTAL1 Ld/O1gMsR6bkbqZaFWNXjmlybTN41m451FabQZIE8HQtE/gUKAyKjYTYz5YTQkerLkLA iulU6V5TOlSpVvWTr+uDGErBDRP7+RyoVXpY1B3TOaPgqs5nN+iPtd7iBcIdrCu2G+gi nsL6UWrsOqLc77HWA9bLyRkuocNqGcL8TJVo75Hp7JTgqFpO6pJR0Yi/nIaE6VEiXEPc WYiw== X-Gm-Message-State: APjAAAXNRU+Udfx/DUcub45uTOm3kNR//gX1dUWTOFnbQ5CXIKc6YCX+ ITgfHmIHqFn3Cqqg3uYnjQw= X-Google-Smtp-Source: APXvYqwnZjlpL4PUUAvfK5d4pYWeE31TwsXrlSV5mEiGcVQWwRB9VHCMKlpm1WOlkrkBBukHu/Su/w== X-Received: by 2002:a1c:7fcc:: with SMTP id a195mr21060937wmd.27.1570453581529; Mon, 07 Oct 2019 06:06:21 -0700 (PDT) Received: from gmail.com (2E8B0CD5.catv.pool.telekom.hu. [46.139.12.213]) by smtp.gmail.com with ESMTPSA id l4sm14525979wrw.6.2019.10.07.06.06.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Oct 2019 06:06:20 -0700 (PDT) Date: Mon, 7 Oct 2019 15:06:17 +0200 From: Ingo Molnar To: Anshuman Khandual Subject: Re: [PATCH V4 2/2] mm/pgtable/debug: Add test validating architecture page table helpers Message-ID: <20191007130617.GB56546@gmail.com> References: <1570427124-21887-1-git-send-email-anshuman.khandual@arm.com> <1570427124-21887-3-git-send-email-anshuman.khandual@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1570427124-21887-3-git-send-email-anshuman.khandual@arm.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191007_060623_415379_29B4CCA0 X-CRM114-Status: GOOD ( 20.17 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org, Peter Zijlstra , James Hogan , Tetsuo Handa , Heiko Carstens , Michal Hocko , linux-mm@kvack.org, Dave Hansen , Paul Mackerras , sparclinux@vger.kernel.org, Thomas Gleixner , linux-s390@vger.kernel.org, Michael Ellerman , x86@kernel.org, Russell King - ARM Linux , Matthew Wilcox , Steven Price , Jason Gunthorpe , Gerald Schaefer , linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Kees Cook , Masahiro Yamada , Mark Brown , "Kirill A . Shutemov" , Dan Williams , Vlastimil Babka , Christophe Leroy , Sri Krishna chowdary , Ard Biesheuvel , Greg Kroah-Hartman , linux-mips@vger.kernel.org, Ralf Baechle , linux-kernel@vger.kernel.org, Paul Burton , Mike Rapoport , Vineet Gupta , Martin Schwidefsky , Andrew Morton , linuxppc-dev@lists.ozlabs.org, "David S. Miller" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org * Anshuman Khandual wrote: > This adds a test module which will validate architecture page table helpers > and accessors regarding compliance with generic MM semantics expectations. > This will help various architectures in validating changes to the existing > page table helpers or addition of new ones. > > Test page table and memory pages creating it's entries at various level are > all allocated from system memory with required alignments. If memory pages > with required size and alignment could not be allocated, then all depending > individual tests are skipped. > diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h > index 52e5f5f2240d..b882792a3999 100644 > --- a/arch/x86/include/asm/pgtable_64_types.h > +++ b/arch/x86/include/asm/pgtable_64_types.h > @@ -40,6 +40,8 @@ static inline bool pgtable_l5_enabled(void) > #define pgtable_l5_enabled() 0 > #endif /* CONFIG_X86_5LEVEL */ > > +#define mm_p4d_folded(mm) (!pgtable_l5_enabled()) > + > extern unsigned int pgdir_shift; > extern unsigned int ptrs_per_p4d; Any deep reason this has to be a macro instead of proper C? > diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug > index 327b3ebf23bf..683131b1ee7d 100644 > --- a/mm/Kconfig.debug > +++ b/mm/Kconfig.debug > @@ -117,3 +117,18 @@ config DEBUG_RODATA_TEST > depends on STRICT_KERNEL_RWX > ---help--- > This option enables a testcase for the setting rodata read-only. > + > +config DEBUG_ARCH_PGTABLE_TEST > + bool "Test arch page table helpers for semantics compliance" > + depends on MMU > + depends on DEBUG_KERNEL > + depends on !(ARM || IA64) Please add a proper enabling switch for architectures to opt in. Please also add it to Documentation/features/list-arch.sh so that it's listed as a 'TODO' entry on architectures where the tests are not enabled yet. > + help > + This options provides a kernel module which can be used to test > + architecture page table helper functions on various platform in > + verifying if they comply with expected generic MM semantics. This > + will help architectures code in making sure that any changes or > + new additions of these helpers will still conform to generic MM > + expected semantics. Typos and grammar fixed: help This option provides a kernel module which can be used to test architecture page table helper functions on various platforms in verifying if they comply with expected generic MM semantics. This will help architecture code in making sure that any changes or new additions of these helpers still conform to expected semantics of the generic MM. Also, more fundamentally: isn't a kernel module too late for such a debug check, should something break due to a core MM change? Have these debug checks caught any bugs or inconsistencies before? Why not call this as some earlier MM debug check, after enabling paging but before executing user-space binaries or relying on complex MM ops within the kernel, called at a stage when those primitives are all expected to work fine? It seems to me that arch_pgtable_tests_init) won't even context-switch normally, right? Finally, instead of inventing yet another randomly named .config debug switch, please fit it into the regular MM debug options which go along the CONFIG_DEBUG_VM* naming scheme. Might even make sense to enable these new debug checks by default if CONFIG_DEBUG_VM=y, that way we'll get a *lot* more debug coverage than some random module somewhere that few people will know about, let alone run. Thanks, Ingo _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel