Received: by 2002:ac0:8845:0:0:0:0:0 with SMTP id g63csp564296img; Thu, 28 Feb 2019 04:22:46 -0800 (PST) X-Google-Smtp-Source: AHgI3IYfAgNVHP0BCfCfCbufOKTCMlD0grMS2KH4kjTEfYok9ppQikjnLsmnMg79j839O7nBscdW X-Received: by 2002:a17:902:56a:: with SMTP id 97mr7720276plf.15.1551356566190; Thu, 28 Feb 2019 04:22:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551356566; cv=none; d=google.com; s=arc-20160816; b=gtIUe7bkcsKlUVjDVlBeNpJoJ8Q4KSWw/vSGovP0KDQqDcQyko0UaVup6oNh2b+Dt3 sPPAPCG4dRv+Oj/vhrSgQQgonZkSIn7vB7vxpIAxSuAtSOiW6GH5kRVuLZGxEdvULl1X QztNX5c2FOKDSszl8h2ipWLXDpD9dIQ5Ca7GHRnxqbqKfRcoKorVEovtOPVURK7iYhhU sc0sC3Jd+l5BfaxYHV2zTM9l4B15s2x1S6QeB9Mq6VaV9glsHKvLhuppTLrAL/IlQdFV 7FDLysbqskfNQbNx1i0/LRTB1naWGIGuno+K1ES8Kd5nZHtFdPRruCX6cZrnx/UrBoO7 Uuvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=h5GH7Vl9yaJj/czE7BPBMi+uiO5bJ5BjuoyhFZ7G1TU=; b=kyEUJtBJ3ZiLV3JZM0hMMGwKq53R6ZqNcEqrXYnfbGIVNGyeLWbvSGhzu0535Ihj8x lPW0fTPxKJHkyRSHI9jzQhmCyorxaoQd/GqnUKMoNfc9Omi5LH0uiTq34Ze/MjEOx/nb 8YwCB5RNB9hVQTnHIYYKis2vqW7SShGMwrinApfOiRP0Pz7kC7tG79XaxFG0IPeEqiCu Y1pgiips1NeWnltZwn3Zcgvz1EXllCwbUJVis/0BrGmyOF4bD+/wmUydU8xuHCWRR4Ie ma1cDlWXbossDVoPqJ2UsQq7rAygOLMnmK0Uv8uPekFrj+WMAsQuTH/8qMau+TP/10yJ wRUg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l2si17828907pfc.287.2019.02.28.04.22.30; Thu, 28 Feb 2019 04:22:46 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732717AbfB1MEO (ORCPT + 99 others); Thu, 28 Feb 2019 07:04:14 -0500 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:46522 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730524AbfB1MEN (ORCPT ); Thu, 28 Feb 2019 07:04:13 -0500 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 Cc: Mark Rutland , the arch/x86 maintainers , Arnd Bergmann , Ard Biesheuvel , Peter Zijlstra , Catalin Marinas , Dave Hansen , 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" 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-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.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.