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 08739C10F1A for ; Thu, 9 May 2024 22:48:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DD2F96B0083; Thu, 9 May 2024 18:48:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DA9E16B0087; Thu, 9 May 2024 18:48:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C71EB6B0088; Thu, 9 May 2024 18:48:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id A7C376B0083 for ; Thu, 9 May 2024 18:48:10 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 261A3140203 for ; Thu, 9 May 2024 22:48:10 +0000 (UTC) X-FDA: 82100347140.07.CA0E4CE Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by imf21.hostedemail.com (Postfix) with ESMTP id 4982D1C0004 for ; Thu, 9 May 2024 22:48:08 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=f6wQ7klD; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf21.hostedemail.com: domain of axelrasmussen@google.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=axelrasmussen@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1715294888; 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=YIWDSYU6OuwVNwMdVt3NyqDL4ZMH/MF1rCPe+F0j3bE=; b=RGYoeKB3mVfSPtcppbGpTzqC2ZQE2N8hpPHRpnQEUVfr2PPfo5Zxoytov82cDzGO0PUzSc I9Z9dKxb6wg9xl734HJ4HPF9jOgvSz+tcdJ7P1YUfg8B5xtrOs1ZZyNWsWdxA5kP0TF7xr 1W4mAsJqsPYMRswqAvqYtGWhuYDqWQM= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=f6wQ7klD; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf21.hostedemail.com: domain of axelrasmussen@google.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=axelrasmussen@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1715294888; a=rsa-sha256; cv=none; b=V/q0VAQEUptnScy/g84wPF846RfnmPEkMMgN1easc+g1ZDPp5rkVMekH1w66O6ZtinXMB/ HKKxlVUKP4BuNJQ9yTwm/tm9S3uwnSMPRmI6b2hYDlVxAmRxALa7kcAjt8mBQdup0Bqdto vXHaFuio0vmvOcITFT+UGzl+LlNiA4E= Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-41dc9c83e57so13885035e9.0 for ; Thu, 09 May 2024 15:48:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1715294886; x=1715899686; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=YIWDSYU6OuwVNwMdVt3NyqDL4ZMH/MF1rCPe+F0j3bE=; b=f6wQ7klDgyd/jTI3vxX8gciTbl01eZGx5vr+jVu1JC6ZTFjlaWUMWb1mGMrB6QQJ3L UOmJOiY+hIqbEIiPdYoFB7Yrp+xLgDLOb8I54EX39f7aNs8YbEw6GhEd5AcCxJ7zDetD 6NlUMTsROikUvmFes89y4lQyMIy+a/jE6I7/AdmfB3ZRUnrMBJa3WfadBkaTrZqCtokM E75TnBV23QkOMylUlWYRqHsev0lA7lIts4JN0JOVK0loZuzdFIxzvhmzyJoqaQWXEkgf K/GHXwIe9GUDj/2qQ4BU9varJ+znEMFKU7N6EFdOrNghWZ1AmSB3DiyyLvHBvcnEx8iX 3deA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715294886; x=1715899686; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YIWDSYU6OuwVNwMdVt3NyqDL4ZMH/MF1rCPe+F0j3bE=; b=QWv95L7AS/Vi9WyiOOhLcV3x+TGRTi1/JR37Ht4wjkPr1LyVIrXOtNy6rpY+lIrItP bJILqthMqCVDD3EyVffm1UMcMfkPar72PnDtPMlOvVGNF1Ookr74cSZN9i2VAYFF6Uso aDn0YRaAv8BgjWAXtDLPWLJC8GBlfHxwr8lsJwlXVf9CebIoDHHQtpreivvFPzGfoOAT FdM2+H54NmE+a9A4Fe5HAsPrRen0B7C85dJ0ozPO/6qxhfIhdrSL34jVnSMWXiuBDUIQ UBnr1VA4bjFytAyf2Xap3MS29vQ8/ern40UNOph9kTFnVG1pg6hBAkESG7phbY+80oq9 efUA== X-Forwarded-Encrypted: i=1; AJvYcCXpMJ9QYcOfYcRTb8hsd2ICSkdtHe1/SHCHSTyTEuZ2q8aiQyBbCzhxkr6lQfOy5v05K0SnporcM6HLqhem+hxFVPU= X-Gm-Message-State: AOJu0YzfiL6LAR8iLgayoCmtPa85+D66FsFkiKDO5FL2jp7VMn7I8xUy M/4vUB1QYipyYu2MfOkUiXb7DtxYm6JCxWOeQ8cm+hc0iNU/6MIu3jUJGC37cOdIFVwP2Qde5BG XsEuxuRRhHzCQ+rR1ETF1C1MR3LCtHVZnRhvg X-Google-Smtp-Source: AGHT+IGJ/kKXUorUaZZLbLqtiS22JS9DgQC8DqDR6SQS2KcbUYgiLFSj2QMhwsrOQuNMZTIT+bZq0i18Q89RY9Bdtlc= X-Received: by 2002:a5d:5f4e:0:b0:350:4da3:db43 with SMTP id ffacd0b85a97d-3504da3dde7mr436361f8f.35.1715294886227; Thu, 09 May 2024 15:48:06 -0700 (PDT) MIME-Version: 1.0 References: <20240509203907.504891-1-axelrasmussen@google.com> <20240509203907.504891-2-axelrasmussen@google.com> In-Reply-To: From: Axel Rasmussen Date: Thu, 9 May 2024 15:47:29 -0700 Message-ID: Subject: Re: [PATCH 1/1] arch/fault: don't print logs for simulated poison errors To: John Hubbard Cc: Andrew Morton , Andy Lutomirski , "Aneesh Kumar K.V" , Borislav Petkov , Christophe Leroy , Dave Hansen , David Hildenbrand , "H. Peter Anvin" , Helge Deller , Ingo Molnar , "James E.J. Bottomley" , Liu Shixin , "Matthew Wilcox (Oracle)" , Michael Ellerman , Muchun Song , "Naveen N. Rao" , Nicholas Piggin , Oscar Salvador , Peter Xu , Peter Zijlstra , Suren Baghdasaryan , Thomas Gleixner , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, x86@kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 4982D1C0004 X-Stat-Signature: 3j9png9b8t1d3m94q8aoc8ka7kp3pe7n X-Rspam-User: X-HE-Tag: 1715294888-102390 X-HE-Meta: U2FsdGVkX18lAnIaIv4wPDJjl7vPP58GAuB+k/LdlVmveS/ZBh+XB5nnmvjiwxa9j01DQMZrx3JzrgEK8HFxEJ8sFmwagaHdcxQ5NPFTM+I/9pgFLC69jWAscVE1Aqjl/MzgOr4Q22310FWapqdpfb6XEyDgVrEtdFbzIGn4vpAjyEQuix/lmT1H7/U6rpcO7ljj2Rqk7Aj6oHQtrjL/bgALEcbAq0B1/08nfpcJxlWiYA8GP9YK79siUwf8sp44zzsEZTtHJPnXGNwVmdDtUhiznv5/SBriBpKMK3d6lhJX1FZ33DNamBGr7fDLz4rAFD0Wzmc/CfBLQvT2W9hDLJKFioEMygN+VnZ15Sl79Pyr3PNEVVOH6QWBFWxJwtXT2dkJAGh6Gcqz0y/ItXVtoKGwhD9bC9EnYgn0B+Ff2xzDPIZ30V8gb8PXgbpB1wxdnmHgjWqHX0Getb4kxAKTEOClTAIeCyjUMUvZifNFfEGoS8DXvOFET2prvy60Bw6O9lsTwFxTNTPQH1xTkNgrm6kvzd7u1Jn08GjTjJbPpphsAyFhn9IdQd3QLLkTpQ0a/YVISWcK7CZ/yW/0W43F5zJQ0w4wzAFZAPNubnCgbAK2DVEyptpSpA2hCPweww6CnJSib9dMFRZtoOfnFtCpEUvuEFg9Q9QXEsC80UIvXlySIzOCXTYL58a4BDchoD5sCMJ9oEI1rxCmWY3h4pvx3Ls60TZQRQyFsE+nwcb9L43CWv16z5BdPDGoCBanrTiKw1Bsv9gVs+uG1Ly82oj0oKzp2ZqEgqc7w2Kqhn9LNhW50AvjbpOpl4fIZK20efkEWyKV18Kb+3MIz/FhSANslqMaA6rhZR10cgmUDnf8bkTPFq5oYb2xmrAGwtbz8iUj5hvhU2m8oofspKV4ddxRd7RRTDuvl3MSkI5jm15Ot/FfKZR94awo59HAvqWu4dCun6SkelakK0na++jUiXZ MPQSFZs1 U17E48iE/U/mPafiC5LKfKNFZqxqgATy1VNisMbKZ+cUk7Cnsl1VCEaMeSE0/9MKKe9NOOowvOKQ+IKT3u4qXg55oyrDB09bl/8zNREbnMSH26RfokvHNOMHbbW5p/H2Irx5OJh87REU4egoWjMgtVCNGc1I56sy0VXtIWI76QlGJ4G3dNezZyO/1WdbG9vgx93aJlEUItBH++GzxW1ejZLBvDG+XKOfjNWK852YBCMyIpl/jPlyVpX94oJzEr+uhLReG87Yft/w3HuDATC25xqZZ8w== 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 Thu, May 9, 2024 at 2:30=E2=80=AFPM John Hubbard w= rote: > > On 5/9/24 1:39 PM, Axel Rasmussen wrote: > > For real MCEs, various architectures print log messages when poisoned > > memory is accessed (which results in a SIGBUS). These messages can be > > important for users to understand the issue. > > > > On the other hand, we have the userfaultfd UFFDIO_POISON operation, > > which can "simulate" memory poisoning. That particular process will get > > SIGBUS on access to the memory, but this effect is tied to an MM, rathe= r > > than being global like a real poison event. So, we don't want to log > > about this case to the global kernel log; instead, let the process > > itself log or whatever else it wants to do. This avoids spamming the > > kernel log, and avoids e.g. drowning out real events with simulated > > ones. > > > > To identify this situation, add a new VM_FAULT_HWPOISON_SIM flag. This > > is expected to be set *in addition to* one of the existing > > VM_FAULT_HWPOISON or VM_FAULT_HWPOISON_LARGE flags (which are mutually > > exclusive). > > > > Signed-off-by: Axel Rasmussen > > --- > > arch/parisc/mm/fault.c | 7 +++++-- > > arch/powerpc/mm/fault.c | 6 ++++-- > > arch/x86/mm/fault.c | 6 ++++-- > > include/linux/mm_types.h | 5 +++++ > > mm/hugetlb.c | 3 ++- > > mm/memory.c | 2 +- > > 6 files changed, 21 insertions(+), 8 deletions(-) > > > > This completely fixes the uffd-unit-test behavior, I just did a quick > test run to be sure as well. > > Reviewed-by: John Hubbard Thanks John! And, no problem about the other patch, they aren't functionally dependent, I just hoped to save Andrew dealing with the small merge conflict. :) I'll base a v2 on mm-unstable directly and that should clear everything up. > > thanks, > -- > John Hubbard > NVIDIA > > > > diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c > > index c39de84e98b0..e5370bcadf27 100644 > > --- a/arch/parisc/mm/fault.c > > +++ b/arch/parisc/mm/fault.c > > @@ -400,9 +400,12 @@ void do_page_fault(struct pt_regs *regs, unsigned = long code, > > #ifdef CONFIG_MEMORY_FAILURE > > if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) = { > > unsigned int lsb =3D 0; > > - printk(KERN_ERR > > + > > + if (!(fault & VM_FAULT_HWPOISON_SIM)) { > > + pr_err( > > "MCE: Killing %s:%d due to hardware memory corruption fault at %0= 8lx\n", > > - tsk->comm, tsk->pid, address); > > + tsk->comm, tsk->pid, address); > > + } > > /* > > * Either small page or large page may be poisone= d. > > * In other words, VM_FAULT_HWPOISON_LARGE and > > diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c > > index 53335ae21a40..ac5e8a3c7fba 100644 > > --- a/arch/powerpc/mm/fault.c > > +++ b/arch/powerpc/mm/fault.c > > @@ -140,8 +140,10 @@ static int do_sigbus(struct pt_regs *regs, unsigne= d long address, > > if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) { > > unsigned int lsb =3D 0; /* shutup gcc */ > > > > - pr_err("MCE: Killing %s:%d due to hardware memory corrupt= ion fault at %lx\n", > > - current->comm, current->pid, address); > > + if (!(fault & VM_FAULT_HWPOISON_SIM)) { > > + pr_err("MCE: Killing %s:%d due to hardware memory= corruption fault at %lx\n", > > + current->comm, current->pid, address); > > + } > > > > if (fault & VM_FAULT_HWPOISON_LARGE) > > lsb =3D hstate_index_to_shift(VM_FAULT_GET_HINDEX= (fault)); > > diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c > > index e4f3c7721f45..16d077a3ad14 100644 > > --- a/arch/x86/mm/fault.c > > +++ b/arch/x86/mm/fault.c > > @@ -928,9 +928,11 @@ do_sigbus(struct pt_regs *regs, unsigned long erro= r_code, unsigned long address, > > struct task_struct *tsk =3D current; > > unsigned lsb =3D 0; > > > > - pr_err_ratelimited( > > + if (!(fault & VM_FAULT_HWPOISON_SIM)) { > > + pr_err_ratelimited( > > "MCE: Killing %s:%d due to hardware memory corruption fault at %l= x\n", > > - tsk->comm, tsk->pid, address); > > + tsk->comm, tsk->pid, address); > > + } > > if (fault & VM_FAULT_HWPOISON_LARGE) > > lsb =3D hstate_index_to_shift(VM_FAULT_GET_HINDEX= (fault)); > > if (fault & VM_FAULT_HWPOISON) > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > > index 5240bd7bca33..7f8fc3efc5b2 100644 > > --- a/include/linux/mm_types.h > > +++ b/include/linux/mm_types.h > > @@ -1226,6 +1226,9 @@ typedef __bitwise unsigned int vm_fault_t; > > * @VM_FAULT_HWPOISON_LARGE: Hit poisoned large page. Index en= coded > > * in upper bits > > * @VM_FAULT_SIGSEGV: segmentation fault > > + * @VM_FAULT_HWPOISON_SIM Hit poisoned, PTE marker; this indicates = a > > + * simulated poison (e.g. via usefaultfd's I'll also fix this small typo in a v2. :P > > + * UFFDIO_POISON), not a "real" hwerror. > > * @VM_FAULT_NOPAGE: ->fault installed the pte, not re= turn page > > * @VM_FAULT_LOCKED: ->fault locked the returned page > > * @VM_FAULT_RETRY: ->fault blocked, must retry > > @@ -1245,6 +1248,7 @@ enum vm_fault_reason { > > VM_FAULT_HWPOISON =3D (__force vm_fault_t)0x000010, > > VM_FAULT_HWPOISON_LARGE =3D (__force vm_fault_t)0x000020, > > VM_FAULT_SIGSEGV =3D (__force vm_fault_t)0x000040, > > + VM_FAULT_HWPOISON_SIM =3D (__force vm_fault_t)0x000080, > > VM_FAULT_NOPAGE =3D (__force vm_fault_t)0x000100, > > VM_FAULT_LOCKED =3D (__force vm_fault_t)0x000200, > > VM_FAULT_RETRY =3D (__force vm_fault_t)0x000400, > > @@ -1270,6 +1274,7 @@ enum vm_fault_reason { > > { VM_FAULT_HWPOISON, "HWPOISON" }, \ > > { VM_FAULT_HWPOISON_LARGE, "HWPOISON_LARGE" }, \ > > { VM_FAULT_SIGSEGV, "SIGSEGV" }, \ > > + { VM_FAULT_HWPOISON_SIM, "HWPOISON_SIM" }, \ > > { VM_FAULT_NOPAGE, "NOPAGE" }, \ > > { VM_FAULT_LOCKED, "LOCKED" }, \ > > { VM_FAULT_RETRY, "RETRY" }, \ > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > > index 65456230cc71..2b4e0173e806 100644 > > --- a/mm/hugetlb.c > > +++ b/mm/hugetlb.c > > @@ -6485,7 +6485,8 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, st= ruct vm_area_struct *vma, > > pte_marker_get(pte_to_swp_entry(entry)); > > > > if (marker & PTE_MARKER_POISONED) { > > - ret =3D VM_FAULT_HWPOISON_LARGE | > > + ret =3D VM_FAULT_HWPOISON_SIM | > > + VM_FAULT_HWPOISON_LARGE | > > VM_FAULT_SET_HINDEX(hstate_index(h)= ); > > goto out_mutex; > > } > > diff --git a/mm/memory.c b/mm/memory.c > > index d2155ced45f8..29a833b996ae 100644 > > --- a/mm/memory.c > > +++ b/mm/memory.c > > @@ -3910,7 +3910,7 @@ static vm_fault_t handle_pte_marker(struct vm_fau= lt *vmf) > > > > /* Higher priority than uffd-wp when data corrupted */ > > if (marker & PTE_MARKER_POISONED) > > - return VM_FAULT_HWPOISON; > > + return VM_FAULT_HWPOISON | VM_FAULT_HWPOISON_SIM; > > > > if (pte_marker_entry_uffd_wp(entry)) > > return pte_marker_handle_uffd_wp(vmf); > >