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 37868C61DA4 for ; Sun, 5 Mar 2023 06:56:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A21536B0071; Sun, 5 Mar 2023 01:56:42 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9D01E6B0073; Sun, 5 Mar 2023 01:56:42 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 896296B0074; Sun, 5 Mar 2023 01:56:42 -0500 (EST) 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 7A3016B0071 for ; Sun, 5 Mar 2023 01:56:42 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 1608FA0919 for ; Sun, 5 Mar 2023 06:56:42 +0000 (UTC) X-FDA: 80533936644.21.C5BA93A Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) by imf12.hostedemail.com (Postfix) with ESMTP id 4E72D4000C for ; Sun, 5 Mar 2023 06:56:40 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b="m6dpF/zT"; spf=pass (imf12.hostedemail.com: domain of jiaqiyan@google.com designates 209.85.210.171 as permitted sender) smtp.mailfrom=jiaqiyan@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1677999400; a=rsa-sha256; cv=none; b=Lprxzz1ucYeLmcu7ihk/MM0zmJ9vX1HjhNbieCBxbuMJG8DsZK7uO7BqMG/+yaev2C4UDW fixZCKQbQh3qGsb8O70EhiMg51EjXIKmyR5gt6n9lxBkfOzLHposUbYKTnMyH+lz8eIICN g/5K/tBcGrvRM4d1Sg8NPx7x2rJSvQ8= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b="m6dpF/zT"; spf=pass (imf12.hostedemail.com: domain of jiaqiyan@google.com designates 209.85.210.171 as permitted sender) smtp.mailfrom=jiaqiyan@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1677999400; 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=k5CB+w5ffy0g50XUfFwQ76ikaH7n+Axb+Udex08qEWk=; b=b7yUq6xTDBj6kAzkEeEBL+c4JMAamcbyrVr33WIDJ5wVz/Z3tFVF3dApnx1M1a7Q1Ggr5S 9sD/0De70v/UIfAgFfGvJTqEXcJMPZ6YkDLmp5XUI1ig3250dCQ+Z2Z22ydbudyU7zSwWm VHh2ItY/GcD8uc5enE/nElR5QzaVyjw= Received: by mail-pf1-f171.google.com with SMTP id fd25so3896846pfb.1 for ; Sat, 04 Mar 2023 22:56:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1677999399; 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=k5CB+w5ffy0g50XUfFwQ76ikaH7n+Axb+Udex08qEWk=; b=m6dpF/zTBlVVX/KeC7qN0eSHv0o/vvIKMQSFwBkqsb3qcMfnv08NIJyerxJwQm+uwY pl1DFf0XbulKM6a6j4UVPaVP/45iQuSlhil8qUS06spT6do6N7GE4Ms8is2ubU6bnIcQ +Ov/Y2HSYSpQ39db8ggP/bTOCBVxJLENXxbBqxlPw5kASJEDaQO4FqD0uypJtJVHa4Gk xv47tr0uPH0CDMJkYaEPcRt09XaJvPbzJeyKh8Bg5lFLHN+guwoHqXtuGaPzXal15+iN oGCn0Txb8FB5tF80NeXfwG261pqTI9IWQE/pV8WwPBaXZnX2dd9fMY7S6/CuF3EbG8wT m04Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677999399; 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=k5CB+w5ffy0g50XUfFwQ76ikaH7n+Axb+Udex08qEWk=; b=fuXFHaGYkJa8gmXiCsKuyK0YPcBixeF8mjLC/5IHZxnwTyXxqbmsDpdi4Xl1xa8wTl 2/VK5KRNpRUkzDkNVpSJZnqOUkJjekIgF/9eIdI0JCUCDVRpXqjVAj5WRAPqBkEDA65I K1GvqcLWUnFxK0yg8LRkLr56lkmAB0Wmwn2kIHen5yeqhzMXVrMaSqhy7iEV6s68DQlz SVwSVT6mAgpzn3/QqfCNTPBNJAjxfu2fEf+bov37frEnPhVpmKV8hCgq59qmw5n/8IHA pi3UJjav9ZCukZ55huEb+LQC14Rq2JhP0yxw2ONb6F/y74GREa4ELkhknA3dsM+RABOD bKrw== X-Gm-Message-State: AO0yUKVrkbwW54zeJ32b5UtYO9PjZLfGuQ8kwx8RysftoohkUkAdwfAP KFFLvO5a/d205xwQlYgkFhnbz7n05wM7LfT3VrOtJw== X-Google-Smtp-Source: AK7set/DGpAxwcx00j60KI+tk7Q0W4S+eOozvwYQwvGLBvJLyJiRUM/bmeemFgxYRoLUqyHTvsH/UDxZPeM0z1M+4kM= X-Received: by 2002:a62:d41a:0:b0:5a8:e197:736f with SMTP id a26-20020a62d41a000000b005a8e197736fmr2992486pfh.0.1677999398790; Sat, 04 Mar 2023 22:56:38 -0800 (PST) MIME-Version: 1.0 References: <20230305065112.1932255-1-jiaqiyan@google.com> <20230305065112.1932255-3-jiaqiyan@google.com> In-Reply-To: <20230305065112.1932255-3-jiaqiyan@google.com> From: Jiaqi Yan Date: Sat, 4 Mar 2023 22:56:27 -0800 Message-ID: Subject: Re: [PATCH v10 2/3] mm/hwpoison: introduce copy_mc_highpage To: kirill.shutemov@linux.intel.com, kirill@shutemov.name, shy828301@gmail.com, tongtiangen@huawei.com, tony.luck@intel.com, akpm@linux-foundation.org Cc: naoya.horiguchi@nec.com, linmiaohe@huawei.com, linux-mm@kvack.org, osalvador@suse.de, wangkefeng.wang@huawei.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 4E72D4000C X-Rspamd-Server: rspam01 X-Stat-Signature: co6q1ywps9qn9rjo5chh1atzof33wiau X-HE-Tag: 1677999400-131724 X-HE-Meta: U2FsdGVkX19l3EiuzKTt833BiQfdKwKo7BVFpP2sHEXLUUiwMgr2U5cGXSgYP6y3JsdMjcCrh74GC7B0eJ6+9uSc2Kh3F1NyN2n70DKeSRSPIswasXWdJ5TEWzXJIpYvdKI15lW+U+6XsKclWd7yyQ0igVnMS6GXNEa9WyhNpnPimVEGAK6Mu3DpgzxA+tPNr7RMT8t6I+7zStjSjKgtKbCXFu2QQbkYtFvIvPVBUkZsNF7SupSsm7P82aD4W+TP3RwOAcAeOao3RkCebhhZYii9mrMhceaeUgX/8pXe1/u94GbCYJR4YfSWJF61K7f/8L0Tn1uqxqD1PyrDVkrhOftm7gDlXwS58FH6yI18xopHnp5cd/O5WvEZCRt/kTHjukSVfy5Kq74SqoQNZGWcW0/hWYkkc9O6gSIwtfutznPfn/27MBjn7P/8Kj4jcTb9HyNDpjJxravL0Xi1OLjbnxx+12EiJrWx/NYOrVoUcdKGMhcya+B+6cv5yn6VnIgCoQDNq2fY+5q3Tr4dWxJo4Npq11bpCQT/oAPb9ASCURbrmItNxZTkdQ5tBUlCSZW9tj71mZxbzGpc8+3Kofhbc5wrWBF5Osbs+JIPDuy9IJZ8vxq2U4bCa+PaYBkOGD7VzW1iFajY4Uo9/eieaRWXHMscBCpSTZ6YPJnLKhHnr4oCtoPzgUwEiaY7p3yccu61PDOsaO2GPyEgPTYHXhCvqXrIzJR/uGrj99dkjwObiL7QvSULuh6xuIWpVJpRtTbI3/w8VEELklWkvszb/Kt1buMl8FcLAxAM77F2mAIuRWnft3HfZem3Yr9mgoI0eIfEhTI/u8s4JkS+07jEP5Iwk8iDmgBrsnVt+U8H7DgIU39Pyn6lTAGDQO4nXpPvowIyB3UMU8imEKKjPbRvHlpCf+rcLGWuSq6RcAGs8NPi/WSRnzmP7pOxfHGpQg51Yyooj3xrlXT++noypi/ooWJ +/7t4QJp Mg3Xa0i5kZFlEvIAOxMMSUVmhbCfheaRMhcZ6QnUk3DlkwVRspXLCskDygaBb3S8ukF3AI9URoyuW+s8AWgthv5hqTKBcfbw1PT1fve8FArc0nDM95I3jj/MHlPdQocSwFo1J6YA9wEZmfjrDCmyGjMv3KoohHcF7qA/hdSA8BAEohg7YxAkjfwnSGFpJxbfjtRAxEJ0YaUZo+MsP4WXpyt/hGuSW4o78qkzbR4yT3LvL4vqs9Tkbt6qYCI2eI+HKjCPgEO5cLxK4TadtaRwLPSVnsPLFu8Ui1aEmISD3DYN26wOR5tEKK4dGSPAca//HWbVd 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 Sat, Mar 4, 2023 at 10:51=E2=80=AFPM Jiaqi Yan wro= te: > > Similar to how copy_mc_user_highpage is implemented for > copy_user_highpage on #MC supported architecture, introduce > the #MC handled version of copy_highpage. > > This helper has immediate usage when khugepaged wants to copy > file-backed memory pages and tolerate #MC. > > Signed-off-by: Jiaqi Yan > --- > include/linux/highmem.h | 54 +++++++++++++++++++++++++++++++---------- > 1 file changed, 41 insertions(+), 13 deletions(-) > > diff --git a/include/linux/highmem.h b/include/linux/highmem.h > index 1128b7114931f..7cbecae39b3eb 100644 > --- a/include/linux/highmem.h > +++ b/include/linux/highmem.h > @@ -315,7 +315,29 @@ static inline void copy_user_highpage(struct page *t= o, struct page *from, > > #endif > > +#ifndef __HAVE_ARCH_COPY_HIGHPAGE > + > +static inline void copy_highpage(struct page *to, struct page *from) > +{ > + char *vfrom, *vto; > + > + vfrom =3D kmap_local_page(from); > + vto =3D kmap_local_page(to); > + copy_page(vto, vfrom); > + kmsan_copy_page_meta(to, from); > + kunmap_local(vto); > + kunmap_local(vfrom); > +} > + > +#endif > + > #ifdef copy_mc_to_kernel > +/* > + * If architecture supports machine check exception handling, define the > + * #MC versions of copy_user_highpage and copy_highpage. They copy a mem= ory > + * page with #MC in source page (@from) handled, and return the number > + * of bytes not copied if there was a #MC, otherwise 0 for success. > + */ I know that back in v8, Andrew said copy_mc_* should not be inline, but I am still putting them here as inline functions because to me they blend in this file well. However, if you have strong opinions, let me know and I will move copy_mc_user_highpage + copy_mc_highpage to a .c file (maybe highmem.c?). > static inline int copy_mc_user_highpage(struct page *to, struct page *fr= om, > unsigned long vaddr, struct vm_ar= ea_struct *vma) > { > @@ -332,29 +354,35 @@ static inline int copy_mc_user_highpage(struct page= *to, struct page *from, > > return ret; > } > -#else > -static inline int copy_mc_user_highpage(struct page *to, struct page *fr= om, > - unsigned long vaddr, struct vm_ar= ea_struct *vma) > -{ > - copy_user_highpage(to, from, vaddr, vma); > - return 0; > -} > -#endif > > -#ifndef __HAVE_ARCH_COPY_HIGHPAGE > - > -static inline void copy_highpage(struct page *to, struct page *from) > +static inline int copy_mc_highpage(struct page *to, struct page *from) > { > + unsigned long ret; > char *vfrom, *vto; > > vfrom =3D kmap_local_page(from); > vto =3D kmap_local_page(to); > - copy_page(vto, vfrom); > - kmsan_copy_page_meta(to, from); > + ret =3D copy_mc_to_kernel(vto, vfrom, PAGE_SIZE); > + if (!ret) > + kmsan_copy_page_meta(to, from); > kunmap_local(vto); > kunmap_local(vfrom); > + > + return ret; > +} > +#else > +static inline int copy_mc_user_highpage(struct page *to, struct page *fr= om, > + unsigned long vaddr, struct vm_ar= ea_struct *vma) > +{ > + copy_user_highpage(to, from, vaddr, vma); > + return 0; > } > > +static inline int copy_mc_highpage(struct page *to, struct page *from) > +{ > + copy_highpage(to, from); > + return 0; > +} > #endif > > static inline void memcpy_page(struct page *dst_page, size_t dst_off, > -- > 2.40.0.rc0.216.gc4246ad0f0-goog >