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 5B349C43334 for ; Wed, 15 Jun 2022 03:47:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BE1EB6B0071; Tue, 14 Jun 2022 23:47:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B75F36B0072; Tue, 14 Jun 2022 23:47:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9BCC76B0073; Tue, 14 Jun 2022 23:47:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 86F4D6B0071 for ; Tue, 14 Jun 2022 23:47:33 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 575E3613CC for ; Wed, 15 Jun 2022 03:47:33 +0000 (UTC) X-FDA: 79579085586.18.C77A2D4 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) by imf19.hostedemail.com (Postfix) with ESMTP id EF00F1A0081 for ; Wed, 15 Jun 2022 03:47:32 +0000 (UTC) Received: by mail-pf1-f176.google.com with SMTP id i64so10283367pfc.8 for ; Tue, 14 Jun 2022 20:47:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=bbj7gdCbxhJPducB10HcUuiKL2IqlcgBk1GHt6Qr9Ic=; b=TVk2+IfsATTM7Qa+CXYEZb1cZ/Jx5MV/zI+MetZCspzwMfmDK/jn8zWbT8WVkiAUkz LbMrfiyUic0p7YgwPjTUOrS28lgbmIoBa5Dr5enDpI+0nGH6nWQOTsTPHdpnPSVslO9h LuuFsisrU0wGj9K9ZyCMC/3G4cVJSy8eFO8PPwN9DRTKVpRh68vwP9RaJFv+O1WRT9CM BMRsotnt9XW5y3QEDtt5EkkkgkFn7m+Hc6BrbNattsd3KixF9IsOkaFYF9HBEwkl5dNg X//jU9WCLW5zuZG1gkLY58Vjuax4C089PYTGvV1L+WR6WDfNgeMbfV6QJZ8M42p8LRM6 YJcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=bbj7gdCbxhJPducB10HcUuiKL2IqlcgBk1GHt6Qr9Ic=; b=npCmXdnCS9QQLffGqI6FNJwuADtarc9N6CYbpdJtHA+XGkDFTCvrw5scGFTQRYEn64 sjYkgNpujsvmQuWDcCglR9fa0Csf4X5d/Oub8/w/yPNx0kBLzH80QuG4sM/Z1kqaOf3S sDJwVKuMlZ3QCR6wcNFVxFf0qv3S+8NV5t/ORUhz8KhVTAuPeY7yo6auPhviNQ+C5AaH DRcLSOH79qNeL+3NLaXsk6Y0F60D5G6yhozdQQzut2KqYNOfjeBMcfpKcgoIKY7TEF+8 k5lSY/7x3pf4imIrK6P7wRyQ4vobIPxD1TDJ3Fmm6Tp9PB8AzrbEOy6XWhVSKORmGNQu GugQ== X-Gm-Message-State: AOAM530AUjwQXvstu1ObnI4mNlOYqdXnUCHZ0kbeWmgWJmjjrBHG2ueU BKt3xv91BtUQvzu5YhV9Alk= X-Google-Smtp-Source: ABdhPJy3LyyU976fo49aqhto9E2QFCKO2uCwwnddNMTR/320TVvjlkrOYq81IzNhekDmcDcBeex3zQ== X-Received: by 2002:a05:6a00:10d4:b0:522:8c31:ec23 with SMTP id d20-20020a056a0010d400b005228c31ec23mr7743681pfu.67.1655264851909; Tue, 14 Jun 2022 20:47:31 -0700 (PDT) Received: from hyeyoo ([114.29.24.243]) by smtp.gmail.com with ESMTPSA id g6-20020a170902868600b0015e8d4eb25fsm8008196plo.169.2022.06.14.20.47.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jun 2022 20:47:31 -0700 (PDT) Date: Wed, 15 Jun 2022 12:47:23 +0900 From: Hyeonggon Yoo <42.hyeyoo@gmail.com> To: "Edgecombe, Rick P" Cc: "peterz@infradead.org" , "rppt@kernel.org" , "tglx@linutronix.de" , "linux-mm@kvack.org" , "dave.hansen@linux.intel.com" , "Williams, Dan J" , "hpa@zytor.com" , "mingo@redhat.com" , "Christopherson,, Sean" , "Lutomirski, Andy" , "pbonzini@redhat.com" , "Tianyu.Lan@microsoft.com" , "aneesh.kumar@linux.ibm.com" , "chu, jane" , "aarcange@redhat.com" , "bp@alien8.de" , "x86@kernel.org" Subject: Re: [RFC 2/2] x86/mm/cpa: drop pgprot_clear_protnone_bits() Message-ID: References: <20220614063933.13030-1-42.hyeyoo@gmail.com> <20220614063933.13030-3-42.hyeyoo@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1655264853; a=rsa-sha256; cv=none; b=RwfuKW4Q8Lnm6eP4wXn5yYVmBZfcDFgpGyNLdtAxrNbeq987QcHCSrpswB8XyYYfyBAciM fXI0yIpQvhfb8zuneXY8u8b4m7mck/RvgCI/f4Qho/zM3Qc7oIt5f9GoZXKI6zc70k71az q0OdGQUMUhrd/KRlRer5E/DOLFjQMMQ= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=TVk2+Ifs; spf=pass (imf19.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.210.176 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1655264853; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=bbj7gdCbxhJPducB10HcUuiKL2IqlcgBk1GHt6Qr9Ic=; b=qbg6+GUtSOXwPKylFNHNVv1oHHwqLcXpl70fEnxrkjjpYBU7N7KE755HvCPo7kGHGjwLYS DQwh7do8pGok18kUz8Y9B7hzQFnOhPtT8GAtGGXsdmZTk/00Ah5BARHc8rBmSe63BaEofb 91QTfpINofQ+ACnXBbXJWMlT1pgmZM4= X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: EF00F1A0081 X-Stat-Signature: n65nnt4id3jtae5o9jhmrzgfediwbnht Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=TVk2+Ifs; spf=pass (imf19.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.210.176 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-HE-Tag: 1655264852-494463 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: On Tue, Jun 14, 2022 at 06:23:43PM +0000, Edgecombe, Rick P wrote: > On Tue, 2022-06-14 at 15:53 +0900, Hyeonggon Yoo wrote: > > On Tue, Jun 14, 2022 at 03:39:33PM +0900, Hyeonggon Yoo wrote: > > > commit a8aed3e0752b4 ("x86/mm/pageattr: Prevent PSE and GLOABL > > > leftovers > > > to confuse pmd/pte_present and pmd_huge") made CPA clear > > > _PAGE_GLOBAL when > > > _PAGE_PRESENT is not set. This prevents kernel crashing when kernel > > > reads > > > a page with !_PAGE_PRESENT and _PAGE_PROTNONE (_PAGE_GLOBAL). And > > > then it > > > set _PAGE_GLOBAL back when setting _PAGE_PRESENT again. > > > > > > After commit d1440b23c922d ("x86/mm: Factor out pageattr > > > _PAGE_GLOBAL > > > setting") made kernel not set unconditionally _PAGE_GLOBAL, pages > > > lose > > > global flag after _set_pages_np() and _set_pages_p() are called. > > > > > > But after commit 3166851142411 ("x86: skip check for spurious > > > faults for > > > non-present faults"), spurious_kernel_fault() does not confuse > > > pte/pmd entries with _PAGE_PROTNONE as present anymore. So simply > > > drop pgprot_clear_protnone_bits(). > > > > > > Looks like I forgot to Cc: Andrea Arcangeli > > > > Plus I did check that kernel does not crash when reading from/writing > > to > > non-present pages with this patch applied. > > Thanks for the history. > > I think we should still fix pte_present() to not check prot_none if the > user bit is clear. I tried, but realized it wouldn't work :( For example, when a pte entry is used as swap entry, _PAGE_PRESENT is cleared and _PAGE_PROTNONE is set. And other bits are used as type and offset of swap entry. In that case, _PAGE_BIT_USER bit does not represent _PAGE_USER. It is just one of bits that represents type of swap entry. So checking if _PAGE_PROTNONE set only when _PAGE_USER is set will confuse some swap entries as non-present. > The spurious fault handler infinite loop may no > longer be a problem, but pte_present() still would return true for > kernel NP pages, so be fragile. Today I see at least the oops message > and memory hotunplug (see remove_pagetable()) that would get confused. As explained above, I don't think it's possible to make pte_present() accurate for both kernel and user ptes. Maybe we can implement pte_present_kernel()/pte_present_user() for when kernel knows it is user or kernel pte. or pte_present_with_address(pte, address) if we don't know it is user pte or kernel pte. -- Thanks, Hyeonggon