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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 C2BA8C43381 for ; Thu, 28 Feb 2019 12:04:19 +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 375ED2084D for ; Thu, 28 Feb 2019 12:04:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="aMzag3gs" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 375ED2084D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com 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:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=HOnRfnJ+57xjhmnYJEg+1EgcXHH5yxRQzkCscbjXeeE=; b=aMzag3gszt1EC9 mMuIk7mV1eneTFrIWGfgj7cdayOuNrFMioeHlGRmxQxUWzziQAmYW9bpsgR1d4zTDxaiEu95eWhf1 wuNCYjQj28P7kS7fB/+HnewX0ixEqLufQVNIvBXxGMSVht7iKr74BiM7rXbHKVEVNClK/oiQ7Qq4m 4+JLEiWYkcutWk24PpffX+i6blfwNLcwHX0glsz5IzaGTsN/kKDcWCZIeCMfbK/lL10AWETXbKWDd SP4pnWPThW6icfRbg6oG6oEZJKpc0EiSsloxnFKIC4rGzf4GGzpYiynh6LHkoFnn5JTZ0gi/22yvg 5Tnhti7uUbYmbGXgYDZw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gzKQD-0002Dv-NL; Thu, 28 Feb 2019 12:04:17 +0000 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70] helo=foss.arm.com) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gzKQA-0002DP-2P for linux-arm-kernel@lists.infradead.org; Thu, 28 Feb 2019 12:04:16 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 394E180D; Thu, 28 Feb 2019 04:04:13 -0800 (PST) Received: from [10.1.196.69] (e112269-lin.cambridge.arm.com [10.1.196.69]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C7A4E3F738; Thu, 28 Feb 2019 04:04:09 -0800 (PST) Subject: Re: [PATCH v3 09/34] m68k: mm: Add p?d_large() definitions To: Geert Uytterhoeven , Mike Rapoport References: <20190227170608.27963-1-steven.price@arm.com> <20190227170608.27963-10-steven.price@arm.com> <20190228113653.GB3766@rapoport-lnx> From: Steven Price Message-ID: Date: Thu, 28 Feb 2019 12:04:08 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-GB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190228_040414_124326_4CEB3B3B X-CRM114-Status: GOOD ( 24.15 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Dave Hansen , Arnd Bergmann , Ard Biesheuvel , Peter Zijlstra , Catalin Marinas , the arch/x86 maintainers , Will Deacon , Linux Kernel Mailing List , Linux MM , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Ingo Molnar , Borislav Petkov , Andy Lutomirski , "H. Peter Anvin" , James Morse , Thomas Gleixner , linux-m68k , Linux ARM , "Liang, Kan" 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 On 28/02/2019 11:53, Geert Uytterhoeven wrote: > Hi Mike, > > On Thu, Feb 28, 2019 at 12:37 PM Mike Rapoport wrote: >> On Wed, Feb 27, 2019 at 08:27:40PM +0100, Geert Uytterhoeven wrote: >>> On Wed, Feb 27, 2019 at 6:07 PM Steven Price wrote: >>>> walk_page_range() is going to be allowed to walk page tables other than >>>> those of user space. For this it needs to know when it has reached a >>>> 'leaf' entry in the page tables. This information is provided by the >>>> p?d_large() functions/macros. >>>> >>>> For m68k, we don't support large pages, so add stubs returning 0 >>>> >>>> CC: Geert Uytterhoeven >>>> CC: linux-m68k@lists.linux-m68k.org >>>> Signed-off-by: Steven Price >>> >>> Thanks for your patch! >>> >>>> arch/m68k/include/asm/mcf_pgtable.h | 2 ++ >>>> arch/m68k/include/asm/motorola_pgtable.h | 2 ++ >>>> arch/m68k/include/asm/pgtable_no.h | 1 + >>>> arch/m68k/include/asm/sun3_pgtable.h | 2 ++ >>>> 4 files changed, 7 insertions(+) >>> >>> If the definitions are the same, why not add them to >>> arch/m68k/include/asm/pgtable.h instead? I don't really understand the structure of m68k, so I just followed the existing layout (arch/m68k/include/asm/pgtable.h is basically empty). I believe the following patch would be functionally equivalent. ----8<---- diff --git a/arch/m68k/include/asm/pgtable.h b/arch/m68k/include/asm/pgtable.h index ad15d655a9bf..6f6d463e69c1 100644 --- a/arch/m68k/include/asm/pgtable.h +++ b/arch/m68k/include/asm/pgtable.h @@ -3,4 +3,9 @@ #include #else #include + +#define pmd_large(pmd) (0) + #endif + +#define pgd_large(pgd) (0) ----8<---- Let me know if you'd prefer that >> Maybe I'm missing something, but why the stubs have to be defined in >> arch/*/include/asm/pgtable.h rather than in include/asm-generic/pgtable.h? > > That would even make more sense, given most architectures don't > support huge pages. Where the architecture has folded a level stubs are provided by the asm-generic layer, see this later patch: https://lore.kernel.org/lkml/20190227170608.27963-25-steven.price@arm.com/ However just because an architecture port doesn't (currently) support huge pages doesn't mean that the architecture itself can't have large[1] mappings at higher levels of the page table. For instance an architecture might use large pages for the linear map but not support huge page mappings for user space. My previous posting of this series attempted to define generic versions of p?d_large(), but it was pointed out to me that this was fragile and having a way of knowing whether the page table was a 'leaf' is actually useful, so I've attempted to implement for all architectures. See the discussion here: https://lore.kernel.org/lkml/20190221113502.54153-1-steven.price@arm.com/T/#mf0bd0155f185a19681b48a288be212ed1596e85d Steve [1] Note I've tried to use the term "large page" where I mean that page table walk terminates early, and "huge page" for the Linux concept of combining a large area of memory to reduce TLB pressure. Some architectures have ways of mapping a large block in the TLB without reducing the number of levels in the table walk - for example contiguous hint bits in the page table entries. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel