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 76B9FC6FD1C for ; Fri, 24 Mar 2023 20:25:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8C9666B0072; Fri, 24 Mar 2023 16:25:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 879A66B0074; Fri, 24 Mar 2023 16:25:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7413E6B0075; Fri, 24 Mar 2023 16:25:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 63B266B0072 for ; Fri, 24 Mar 2023 16:25:07 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 210CEA09E1 for ; Fri, 24 Mar 2023 20:25:07 +0000 (UTC) X-FDA: 80604921054.10.AE08BFB Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) by imf17.hostedemail.com (Postfix) with ESMTP id 52E394000A for ; Fri, 24 Mar 2023 20:25:05 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=QVazfM3b; spf=pass (imf17.hostedemail.com: domain of shy828301@gmail.com designates 209.85.210.171 as permitted sender) smtp.mailfrom=shy828301@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=1679689505; 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=lyeb3vL3ZCx+a2/rmbhvpfmNgIb4fsbjhPm8fWDeR98=; b=GJ9B5AjRIumQjOUhyvbAwCgFjsCO3KRVGOwF5B3uxW4o1cfkf91uZg/biom6SdWa+0GUtb gSkEoHuhg0ge/2fsO7wBqrgug9NjsxT5hSQAv8geqIdhR9IS8A50OmVBCd963n9Yt63wJm 8LSdyxt9TmBtnaIDHs1fapn22JUWzVY= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=QVazfM3b; spf=pass (imf17.hostedemail.com: domain of shy828301@gmail.com designates 209.85.210.171 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1679689505; a=rsa-sha256; cv=none; b=y+0N8XEyrCpZih7MpwLXvqpCYnctPP/WWjiUSz3yFE2rTE8YCP4AlJrjRl2bX5luK6LCyC Dkp40yNgVztdtad/vmjAapz1qme5aA9xTRNvJTcUn7NmGUDMRr5Pg6+/9xudfTClEg1r4A TwDlk6xlufL3oc7OiQRtDO6YbwniRI8= Received: by mail-pf1-f171.google.com with SMTP id fb38so2019495pfb.7 for ; Fri, 24 Mar 2023 13:25:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679689504; 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=lyeb3vL3ZCx+a2/rmbhvpfmNgIb4fsbjhPm8fWDeR98=; b=QVazfM3bk5Wz7aNtYlwiaY+HrwZRhUj3vK8sy4HFSFyaOhr1qYo1/m3rlBlEEkSKCR 2md2LZynTa3TTm3WdlBOnastQNRVynLaIPRbwTlVE2TcI9qLLf4qU2mPiC+XP5WHj72L CCW6W3SUKqtPTMadcSC/BpBZzNbjDFA3FRi0zYnpzXH1zuwOnl5WIeBIUQPs93kCMWR6 F3DpendwySrPL4TrPDR0vw/CZoLla0sGK6I6lC4J6+ELnB2wI+vrlnWHUA/y2tusu9yP 65HSIx9OkJih8Q14PxjyqgBS0CeYEfrgON5fvMrqenmJVg4gjNq+tSk0EfS/Y+vvM4b+ rYKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679689504; 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=lyeb3vL3ZCx+a2/rmbhvpfmNgIb4fsbjhPm8fWDeR98=; b=dXeCTDH1GsjwdHk+Eh8Ci0ohTGnW5acwXxwGcgZ437j1C4fyNzPK5l9HjlXTnxfYD4 POeBzxEbhUvmvpNVemzdyYcadpD0mB5y8A7lPCpax/wjGlY38Tze77RsM+nIR/ayrr/s Ru5zoUVnuftTdGzLN3oGnxPy0ox4+ul2W+yodJ7+etmn2tt5xrdMiZA3cjGywf44Fs5J en1Z5+Jbg5IMr/6hKDDMqwzve1eKKA4kZ48qsCZwtKpnx713G5k+Ax+Ux1zbnoNHdJRE p/RR0uGEUsh52NAHn/a75VaDREjW6KsOUaQhdiX+wYxDOoLV6j6se+EQCdFTe9BeHVKc bB6g== X-Gm-Message-State: AAQBX9fYetUlGqVFTbcsdHyZKYQpk3qhBFfh/5UuNEVe1AFixOmfvXuS xybXJCHpct6E1ud8+9B2spQiDrfB1VP19YzumzE= X-Google-Smtp-Source: AKy350Z7Mtd+e17xrA0EvjPao5W8qyaDLHssEr7OYTnk9AxrbPaQtvtlkvzmRLULBdSPHsM0i6tX6fJaF2uIfhBQZbM= X-Received: by 2002:a63:dc0c:0:b0:50b:dca1:b6f9 with SMTP id s12-20020a63dc0c000000b0050bdca1b6f9mr970051pgg.1.1679689504141; Fri, 24 Mar 2023 13:25:04 -0700 (PDT) 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: Yang Shi Date: Fri, 24 Mar 2023 13:24:52 -0700 Message-ID: Subject: Re: [PATCH v10 2/3] mm/hwpoison: introduce copy_mc_highpage To: Jiaqi Yan Cc: kirill.shutemov@linux.intel.com, kirill@shutemov.name, tongtiangen@huawei.com, tony.luck@intel.com, akpm@linux-foundation.org, 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-Server: rspam04 X-Rspamd-Queue-Id: 52E394000A X-Stat-Signature: pbc4m5u79cojdbmw77e4o6dj6c67zirq X-HE-Tag: 1679689505-559267 X-HE-Meta: U2FsdGVkX1+LLrN+gAmTY2qy+4tuuVYBpX3E83nA9Jn1AnChyIVqfXxJ9dbjFgGBF5yAeX7thfBeKQXL3PNq0gEzDq1EJaNTjSWmfMNzczkpmahGvaVeIUNqr+RPaP/YPep14ORE/F1BPGsn/yuqe9F3AYNJLI0Wwfi3bLkePLQzftHCwcsSUeMIEV1p7zHaChOYnjFPLbPPrHwZE9ph/SM1ZsrutX1BwoDi3AE0cMck/fxo0AbX2PsWROjAFwPFmKYJSPpse7rvLlBAPp0X4C0Rx3BW1llSaM0QGTdOlJFfZHksKFaAhoDLVlBDPDk3I9NHXhTkx36croc+SNhmxCUYB6FUf2adzoyhcHMU/uQ00Mr56oZYvV6i5VspMXEYikDUzaTY1WtV5Z8/oQm0S/MRYYTr703AoIbOvLJo81y+MrUoeCK1PpDbdNPCVbzboSYryzy64s+En9Yp+cVNo9Fs28z7Cv817tWzOCvtkwkgTN1DwBAm4P5156xbNE1XIcjyge8o7b4ciZnL+ppYqrrh5RQTdxDI85SlYofoMI0GOCpT2XSb0cQ8dsljVyfvKOt+MFkiE6ksaxi6el9Kbbk/LBrAoPU0FBRsIIM9Fo9am1EKg4nv8Ci4BquZsUpaKu/qOnU7HkHWuGNlt3k5IRtDsKmY5qPzWjGJp8j/wvRXWIMRMhcpjT6ku1JryITsznEaECNFaZkKB6UKID6CA6JSa8NI7Pl+3WB/RzSB925cdJrfSiELvKfWPPLMPdVUzB0Q7/o7y0963qITd9RjOrbUkK15tp/tnHfwUI+xWc0vI0Htg4mvNWck6B+mnKMC4VQEEmlsUvyzZsb8/9R8U419ezIA1qcgBmDxBqQL1a+APIIfmTUNwqZ5zj7/MyNQMWhFG9c3E+j6tcR2+lA5zUkDRA96j9JQ3SVJlGqy/TCA6vW5KourUL5/qSm1fhs8Hn9qTmHW+Bu/qdQEpfI 3vNYGLKz qujlTMw7AayrpF6a0gdw39/YJP63PYT7d2f4qeMH3RFTZtkvtFb/EpmtD+cvoM9k9M1UhLIamP2PiKuWwA3C3ynC450gg1Z11W1mE2t+88MH5usAoeDzlXPtwbgIfAo8WV0prqIpNS8kb3J4IdHCSjFVT2lGkiEP326imEJd2wv28L7O+bq/7PyiSW17vpgiATvfXBeb7C8WxIqNpWfHwyJwctXXYLGOhitqf2/u2rsB6QlL6aM6GIs3MD1tMuB4uASbsZhzHMlNq8X9gToDkQWehO9rY6LdIW9FTGqNv2Th+0JBx5WuZdy5LR3uLTZtKfWNLjP+M88+uRxXcrlN3bqn+H4lFVotgArQ7uo4pAjxp8PoORb/UHDOm+b97DRHDpXsD7Ai/V3sSM1ujO8Igl7a+s3Vve4adV07LusyHOOnbsFrs5oXnbtNwyB+cfKUZRwsfCUz4C0VrgL3S1ZcnVtziPw== 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. I don't have a strong opinion on non-inline or inline. Putting copy_mc_highpage() together with copy_mc_user_highpage() makes sense to me. Reviewed-by: Yang Shi > > 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. > + */ > 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 >