Received: by 10.213.65.68 with SMTP id h4csp1026063imn; Wed, 4 Apr 2018 11:16:02 -0700 (PDT) X-Google-Smtp-Source: AIpwx48a7KtYbLJWfQaUJcnDDB7bYDdV6YTkS67Rn99gb/YAZaMWi1SG+HtepznXzwsJ/a7tWI+I X-Received: by 10.99.54.65 with SMTP id d62mr12592211pga.225.1522865762043; Wed, 04 Apr 2018 11:16:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522865761; cv=none; d=google.com; s=arc-20160816; b=AfN4RuZ5v8lUGVwKjNkOizYGTtig6oUyiorYatmXUxdKgVa+kjCQ4V/OF2J3ScGAX7 S3XbedqT56O6ZdhDMISfjy/fWpZSurPsZhpOp0b65JskrkK3m7pQns0eSQryZyu4NLWZ Rrp5r9CgDAvzrc2M3ZYkfSKb6kkkB35GzPB0fWoAAbuEPUpw7qNnXLZ4nnmpyZpSi3RU Wiofv8oZq3IE0TshidtFzN9KVfI5b04vx4tYFcnVjNDTdMBCX4BaeJz4xF7OqLeuPZ39 5CWNxq9ic7xvABrTc+kGh31LKWBFxeerVKTu9FTQBKDfnYB9OKAPoi4zbSW+DPDbRuHr BIyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :message-id:in-reply-to:subject:cc:to:from:date :arc-authentication-results; bh=aJTmE4CrNTzStMM3HzDXhDE/dDqa467PMjBCq5uhHCk=; b=ziNn0aN/olkWWwjcBXfvsXXWjPg1vh3Zsat7pdctDlE2rk7oa9LkmbxoI/W0K0DJfQ Ce25ur4oTAHSXAllSJMrLPFJIpKIoo5pTR6iMfpl6k2AtgZ646KwS1XfRtHf84XeCXeO AujMqZ0x5rbATRIeI4Oy8HASWwPeFYBse8zLU2va7ZG2g1zRMsDuoxsxwhZ+c7ON5djo rIoQ8kAC7XfpFfpI8pMJ5v5fQvuGNuMIb0VXYS55fUrOC6c3GSRqBCJEweYiijSSdgQ0 I5WF/2B3pup0b0mN3X2977jd0UyuPiZDfnOxFH7/Tjxo9feUJlRQmnkdrGVceKrJZ+Jt NKuQ== 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 76si4006317pge.732.2018.04.04.11.15.45; Wed, 04 Apr 2018 11:16:01 -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 S1751332AbeDDSOW (ORCPT + 99 others); Wed, 4 Apr 2018 14:14:22 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:34980 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750915AbeDDSOV (ORCPT ); Wed, 4 Apr 2018 14:14:21 -0400 Received: from p4fea5f09.dip0.t-ipconnect.de ([79.234.95.9] helo=nanos.glx-home) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1f3mvG-0000ai-V9; Wed, 04 Apr 2018 20:14:15 +0200 Date: Wed, 4 Apr 2018 20:14:11 +0200 (CEST) From: Thomas Gleixner To: Nadav Amit cc: Dave Hansen , LKML , "open list:MEMORY MANAGEMENT" , Andrea Arcangeli , Andy Lutomirski , Linus Torvalds , "keescook@google.com" , Hugh Dickins , Juergen Gross , "x86@kernel.org" Subject: Re: [PATCH 09/11] x86/pti: enable global pages for shared areas In-Reply-To: <2D4AE288-DD01-416B-9633-1BC9B6A20BFF@vmware.com> Message-ID: References: <20180404010946.6186729B@viggo.jf.intel.com> <20180404011007.A381CC8A@viggo.jf.intel.com> <5DEE9F6E-535C-4DBF-A513-69D9FD5C0235@vmware.com> <50385d91-58a9-4b14-06bc-2340b99933c3@linux.intel.com> <2D4AE288-DD01-416B-9633-1BC9B6A20BFF@vmware.com> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 4 Apr 2018, Nadav Amit wrote: > Dave Hansen wrote: > > On 04/03/2018 09:45 PM, Nadav Amit wrote: > >> Dave Hansen wrote: > >>> void cea_set_pte(void *cea_vaddr, phys_addr_t pa, pgprot_t flags) > >>> { > >>> unsigned long va = (unsigned long) cea_vaddr; > >>> + pte_t pte = pfn_pte(pa >> PAGE_SHIFT, flags); > >>> > >>> - set_pte_vaddr(va, pfn_pte(pa >> PAGE_SHIFT, flags)); > >>> + /* > >>> + * The cpu_entry_area is shared between the user and kernel > >>> + * page tables. All of its ptes can safely be global. > >>> + */ > >>> + if (boot_cpu_has(X86_FEATURE_PGE)) > >>> + pte = pte_set_flags(pte, _PAGE_GLOBAL); > >> > >> I think it would be safer to check that the PTE is indeed present before > >> setting _PAGE_GLOBAL. For example, percpu_setup_debug_store() sets PAGE_NONE > >> for non-present entries. In this case, since PAGE_NONE and PAGE_GLOBAL use > >> the same bit, everything would be fine, but it might cause bugs one day. > > > > That's a reasonable safety thing to add, I think. > > > > But, looking at it, I am wondering why we did this in > > percpu_setup_debug_store(): > > > > for (; npages; npages--, cea += PAGE_SIZE) > > cea_set_pte(cea, 0, PAGE_NONE); > > > > Did we really want that to be PAGE_NONE, or was it supposed to create a > > PTE that returns true for pte_none()? > > I yield it to others to answer... My bad. I should have used pgprot(0). Thanks, tglx