Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp3320404ybi; Mon, 29 Jul 2019 04:39:46 -0700 (PDT) X-Google-Smtp-Source: APXvYqz8P7wo9OU6icbCBvu9/nQj4Oi82KbB75UlZl6f5UlDXUCyezyM63GzyFhZ34MIzAHT+qH3 X-Received: by 2002:a17:90a:360c:: with SMTP id s12mr113296483pjb.30.1564400386755; Mon, 29 Jul 2019 04:39:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564400386; cv=none; d=google.com; s=arc-20160816; b=kxyD3TvkiAHbRMF2XglfR/fERWRnlKvtDrO7cmMHR5oB/cqfVjU7kxyv1+e4YGYnZy aK+/3Kxd/G5vweo2JIjpLaG1sEtBF4CeiQNElH3XS4oA7g4lQPipefj1YgJIfkGjl1im 8Xryoao1dv5IB/0QHvh0PEKeAn7WiuCGnEiUipZMkH7PWXoom/nZe/BirC7QVPs3vTY2 Ybm5HlH9itQT5iwZ5XoHSKIBD7S8Mjygen3/bmooLFhOpiV7KaDDG1R0ehrowIJqPgqk F+YUlHYB6rT/gAShcb7DPLPXZCmgYh1awIm7CA3XUjV6loq+yTBoikYBJUTrhDIz2iK4 /wZg== 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=tdXnCls1/dKVBUI6AJDlG+b/2njgx4f0JtKfYJzU9tk=; b=d7C0lkGzMKbuXiuIh+J8QICm2XJanPLofjFr5OrmZJviRSK6hLyrL5C6nwU7eIahEx 6LFzKCwgXAmqrwW1sCizyh+Ks16FlntH7fXoTaizz6M3D+gqgJgvTlp9RUIHCT6cYe9z FETqLYy50rcr8q2r0JWMBUiDfXryhFgMQRFIi4vvAc0MOVu9ULdGaKWS09FTC3dxAqyc d8q+ZP4YcT9F0axHvn6e3PDAUvfDFijyNnB3EICYg7JxEfuv9tBg8xWsplKnjcoKIUtd tF+6v9guor5AUNmEY+3ZTvKrhlQ+A98lHBsi5CoqlXvAMA8su94lqkszdbUUM2cL4GhC 23jA== 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 l13si26987990pgp.133.2019.07.29.04.39.31; Mon, 29 Jul 2019 04:39:46 -0700 (PDT) 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 S2387750AbfG2Lit (ORCPT + 99 others); Mon, 29 Jul 2019 07:38:49 -0400 Received: from foss.arm.com ([217.140.110.172]:42546 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387467AbfG2Lis (ORCPT ); Mon, 29 Jul 2019 07:38:48 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id ECCD228; Mon, 29 Jul 2019 04:38:47 -0700 (PDT) Received: from [10.1.196.133] (e112269-lin.cambridge.arm.com [10.1.196.133]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4E2E03F694; Mon, 29 Jul 2019 04:38:45 -0700 (PDT) Subject: Re: [PATCH v9 10/21] mm: Add generic p?d_leaf() macros To: Anshuman Khandual , Mark Rutland Cc: x86@kernel.org, Arnd Bergmann , Ard Biesheuvel , Peter Zijlstra , Catalin Marinas , Dave Hansen , linux-kernel@vger.kernel.org, linux-mm@kvack.org, =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Ingo Molnar , Borislav Petkov , Andy Lutomirski , "H. Peter Anvin" , James Morse , Thomas Gleixner , Will Deacon , Andrew Morton , linux-arm-kernel@lists.infradead.org, "Liang, Kan" References: <20190722154210.42799-1-steven.price@arm.com> <20190722154210.42799-11-steven.price@arm.com> <20190723094113.GA8085@lakrids.cambridge.arm.com> From: Steven Price Message-ID: <674bd809-f853-adb0-b1ab-aa4404093083@arm.com> Date: Mon, 29 Jul 2019 12:38:44 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.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/07/2019 12:44, Anshuman Khandual wrote: > > > On 07/23/2019 03:11 PM, Mark Rutland wrote: >> On Mon, Jul 22, 2019 at 04:41:59PM +0100, Steven Price wrote: >>> Exposing the pud/pgd levels of the page tables to walk_page_range() means >>> we may come across the exotic large mappings that come with large areas >>> of contiguous memory (such as the kernel's linear map). >>> >>> For architectures that don't provide all p?d_leaf() macros, provide >>> generic do nothing default that are suitable where there cannot be leaf >>> pages that that level. >>> >>> Signed-off-by: Steven Price >> >> Not a big deal, but it would probably make sense for this to be patch 1 >> in the series, given it defines the semantic of p?d_leaf(), and they're >> not used until we provide all the architectural implemetnations anyway. > > Agreed. > >> >> It might also be worth pointing out the reasons for this naming, e.g. >> p?d_large() aren't currently generic, and this name minimizes potential >> confusion between p?d_{large,huge}(). > > Agreed. But these fallback also need to first check non-availability of large > pages. I am not sure whether CONFIG_HUGETLB_PAGE config being clear indicates > that conclusively or not. Being a page table leaf entry has a broader meaning > than a large page but that is really not the case today. All leaf entries here > are large page entries from MMU perspective. This dependency can definitely be > removed when there are other types of leaf entries but for now IMHO it feels > bit problematic not to directly associate leaf entries with large pages in > config restriction while doing exactly the same. The intention here is that the page walkers are able to walk any type of page table entry which the kernel may use. CONFIG_HUGETLB_PAGE only controls whether "huge TLB pages" are used by user space processes. It's quite possible that option to not be selected but the linear mapping to have been mapped using "large pages" (i.e. leaf entries further up the tree than normal). One of the goals was to avoid tying the new functions to a configuration option but instead match the hardware architecture. Of course this isn't possible in the most general case (e.g. an architecture may have multiple hardware page table formats). But to the extent that other functions like p?d_none() work the desire is that p?d_leaf() should also work. Steve