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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0785EC27C4F for ; Fri, 21 Jun 2024 14:51:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4C5778D017B; Fri, 21 Jun 2024 10:51:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 474F98D017A; Fri, 21 Jun 2024 10:51:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 315A98D017B; Fri, 21 Jun 2024 10:51:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 129E68D017A for ; Fri, 21 Jun 2024 10:51:32 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 7B150120DF5 for ; Fri, 21 Jun 2024 14:51:31 +0000 (UTC) X-FDA: 82255184382.24.7C603C8 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) by imf07.hostedemail.com (Postfix) with ESMTP id AA6074000B for ; Fri, 21 Jun 2024 14:51:28 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=NCXEkRhs; spf=pass (imf07.hostedemail.com: domain of dave.hansen@intel.com designates 198.175.65.21 as permitted sender) smtp.mailfrom=dave.hansen@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718981478; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=8YSD2su37iIS25PaxrqSNZZbKBLHHN9qiS+/z1vC7yE=; b=DmTXbEcBaQRMRYt9wS4973p+1rF5kgRAJn9aQv/by2Pq6J0KpZ7B8hnCYbhqy7DCJ3lm6i 1Dol7HwUOz4XxxSBf5qJ4leZCqYl6wdsuEeVVyLwN/q3KrZImFJ/67HccpZZrwYiWLY+WH Y7GJv+zm0wqAKYZ3BSnc/iHDbRt0zhk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718981478; a=rsa-sha256; cv=none; b=pOaM0HxyaSgYrZJ/bZobIDIpwHM4RD4I0WQnLAEv6Cvpdfsu7d9gOwJdstjtLZDnkncklz A/XUEIF2KBLAXeVtH2bs1j6BPnkz+FiHK7gjiwbaFdqq1Q+8gjPprZTklGzCY8ZEHNFJO1 kiBhaDwFy8TNHIER/kerdIPf4PPcw2E= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=NCXEkRhs; spf=pass (imf07.hostedemail.com: domain of dave.hansen@intel.com designates 198.175.65.21 as permitted sender) smtp.mailfrom=dave.hansen@intel.com; dmarc=pass (policy=none) header.from=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1718981489; x=1750517489; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=YRtouFPaW9U4NGyXBKaaDVSlzBvVKpAVa50I1FhWngU=; b=NCXEkRhsmmoLM7KfdiT3IZsTgSI+4jbAn2l0vrjGok7TPNn0yhP7IjQz OqXVf7Ns/sPixTFhSVtzrWvz7E3GCOGVCKuElMFFEB1yiB7EqduGg7L4r SdrzPvDShh2X28l7eOs7wvuhUbtXsKy12Pm7Ei0NXcMoPCdzFTMpcBKTD 2iQlzlQkCzXOgp6G2Qec5nJNoz3IyRaL/70SnIQRCd4KPkVVfqu9YR15q T7znbb1Yd6CMEx2vo7t+cbXi8u3Q1yVkgNQXTCmFQWe5KnjT8BGdINGdF aP3WFrNHGuCaqIPGjFPG7qnFiQHmyqc6gmX2QsvZms2tPRRXkUYnXsD9X g==; X-CSE-ConnectionGUID: kSeJlKZARR6RcprET8blYg== X-CSE-MsgGUID: tP4DjxvVS/yG46rM30T4nA== X-IronPort-AV: E=McAfee;i="6700,10204,11110"; a="15992023" X-IronPort-AV: E=Sophos;i="6.08,255,1712646000"; d="scan'208";a="15992023" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2024 07:51:27 -0700 X-CSE-ConnectionGUID: 9SR3JPeSS4SAMcyi1qiFXA== X-CSE-MsgGUID: QbFqJJkySc6MGHPzAp0EjQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,255,1712646000"; d="scan'208";a="47798662" Received: from bmurrell-mobl.amr.corp.intel.com (HELO [10.124.221.70]) ([10.124.221.70]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2024 07:51:26 -0700 Message-ID: <4fb4b087-cae2-4516-a34e-cb4c72be13eb@intel.com> Date: Fri, 21 Jun 2024 07:51:26 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 6/7] mm/x86: Add missing pud helpers To: Peter Xu , linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: x86@kernel.org, Borislav Petkov , Dave Jiang , "Kirill A . Shutemov" , Ingo Molnar , Oscar Salvador , Matthew Wilcox , Vlastimil Babka , Dan Williams , Andrew Morton , Hugh Dickins , Michael Ellerman , Dave Hansen , Thomas Gleixner , linuxppc-dev@lists.ozlabs.org, Christophe Leroy , Rik van Riel , Mel Gorman , "Aneesh Kumar K . V" , Nicholas Piggin , Huang Ying , "Edgecombe, Rick P" References: <20240621142504.1940209-1-peterx@redhat.com> <20240621142504.1940209-7-peterx@redhat.com> From: Dave Hansen Content-Language: en-US Autocrypt: addr=dave.hansen@intel.com; keydata= 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 In-Reply-To: <20240621142504.1940209-7-peterx@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Stat-Signature: jqb3jtjhtu8mhdiai1zpmn489hdg37yq X-Rspamd-Queue-Id: AA6074000B X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1718981488-334864 X-HE-Meta: U2FsdGVkX18v50QRLGJfxuoN9w296avnwx4IzBNj8qPlLGn5vHNUR5AU9OetvbGKMzj7ic6C1+HMmZVy2gzz8thMHEW57BU1pDuKq99INPp4mF/TAPOtTreYXUbRQyGZPUxVvjMZG4eJkw3lIc/nFIBL0KzdUPuvOM5AIlrfF4JCNPTi4+shdKXWe5y4FIqWauzKy2dZbNoYHPruuYRgyMpPl1DFuLqL5vBfPuGglw51nFEc9NhY+LwwLjME1x6cuLUSV+SdjDoIKQ5NmsFtDStTmY6veiYOuiSbkMe+AGHnDoNYE4ChXC4oFTl2/d27x5au1VslZFtm6GQZACkggEpf3+sb8wj8TrzFQZzqehikZGFKVkmsqx2wfHfPbjmrBU8V1NQEESBR1Oukecm5SSU52uCspADZhgllXngfalf02iYDKXpoF8pYHAzy2aZnbl8ThjhRJkAU6qQq99xuTvGGQ0tCEzmzQm49aeFmiwyVzpW72J4KQNuylxhbvffHvZ27CvLQUvR5RJirsIGZixd5xJ4EJYhClO3QfWkmoD7lqBlGsw+jEgxcjzAYNz7bzGCWds8IiZzI2xDFKzT/oPpNPaQJCiRuu3VEHurNKfz0IF/iN2ggHQsIq0sqewjfe5n2aITSbzwury/NYwlKy/8134z0fzDsYWxTRnc4Q49eSlGac1otJ6P4nbi4YaowQuUFUEpHOkUE3y/eFa43dN3xK5s/j2KdT8qDEinBPrjgAeNJgesA62Z6a2dCJSvrDYCOeNX2slo6MhZyqiVRWpEZYitng+rhz8DeOM+NaD4cCqRjGT5viWYy99JZOUNsxWp3wkY9XJ424Y/G5H4SeaBPGDPNXB891Dr/HpINK0z/g6j7f0pNXSUGFVQzYEBLkSVb2jEB+XwkncXZdWPj0YgMCexCIRn35e6HFO0QoFgeVVdkUpFrTd62a2rUsPWllpR82YYxNMA/bOB786G 4HViJ/DQ F7BxA/ZUtM7WMhIZJpZkJFaF28S+FgWmyKFqPvv2tU+dxEnN5zF1EXderSJbt/ahNQ2vOzl2ULqdXg2BUsXpoLxYGz6czL6YPgjqJ2vaIV8k4RehRFhPIhs+zTKiwQQGfeQlaDqB7s5nDgpuR2Qd4DFA5NYD3/IVNdd6EndWrTK8Wn9DRX+Kg70EviQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 6/21/24 07:25, Peter Xu wrote: > These new helpers will be needed for pud entry updates soon. Namely: > > - pudp_invalidate() > - pud_modify() I think it's also definitely worth noting where you got this code from. Presumably you copied, pasted and modified the PMD code. That's fine, but it should be called out. ... > +static inline pud_t pud_modify(pud_t pud, pgprot_t newprot) > +{ > + pudval_t val = pud_val(pud), oldval = val; > + > + /* > + * NOTE: no need to consider shadow stack complexities because it > + * doesn't support 1G mappings. > + */ > + val &= _HPAGE_CHG_MASK; > + val |= check_pgprot(newprot) & ~_HPAGE_CHG_MASK; > + val = flip_protnone_guard(oldval, val, PHYSICAL_PUD_PAGE_MASK); > + > + return __pud(val); > +} First of all, the comment to explain what you didn't do here is as many lines as the code to _actually_ implement it. Second, I believe this might have missed the purpose of the "shadow stack complexities". The pmd/pte code is there not to support modifying shadow stack mappings, it's there to avoid inadvertent shadow stack mapping creation. That "NOTE:" is ambiguous as to whether the shadow stacks aren't supported on 1G mappings in Linux or the hardware (I just checked the hardware docs and don't see anything making 1G mappings special, btw). But, still, what if you take a Dirty=1,Write=1 pud and pud_modify() it to make it Dirty=1,Write=0? What prevents that from being misinterpreted by the hardware as being a valid 1G shadow stack mapping? > /* > * mprotect needs to preserve PAT and encryption bits when updating > * vm_page_prot > @@ -1377,10 +1398,25 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma, > } > #endif > > +static inline pud_t pudp_establish(struct vm_area_struct *vma, > + unsigned long address, pud_t *pudp, pud_t pud) > +{ > + if (IS_ENABLED(CONFIG_SMP)) { > + return xchg(pudp, pud); > + } else { > + pud_t old = *pudp; > + WRITE_ONCE(*pudp, pud); > + return old; > + } > +} Why is there no: page_table_check_pud_set(vma->vm_mm, pudp, pud); ? Sure, it doesn't _do_ anything today. But the PMD code has it today. So leaving it out creates a divergence that honestly can only serve to bite us in the future and will create a head-scratching delta for anyone that is comparing PUD and PMD implementations in the future.