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 421C6C6FD18 for ; Tue, 28 Mar 2023 16:00:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 785C46B0071; Tue, 28 Mar 2023 12:00:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 735766B0074; Tue, 28 Mar 2023 12:00:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 58866900002; Tue, 28 Mar 2023 12:00:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 452E46B0071 for ; Tue, 28 Mar 2023 12:00:15 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 0B53A140A0A for ; Tue, 28 Mar 2023 16:00:15 +0000 (UTC) X-FDA: 80618768790.26.111452D Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com [209.85.216.50]) by imf13.hostedemail.com (Postfix) with ESMTP id 0E56D2002F for ; Tue, 28 Mar 2023 16:00:12 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=YNqiznxQ; spf=pass (imf13.hostedemail.com: domain of shy828301@gmail.com designates 209.85.216.50 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=1680019213; a=rsa-sha256; cv=none; b=YQXt4N3rRmLVcqSke4fTmHQIYRM0/z+8FQsWGlUm+0Z1nY1ezSkaItCYnzKPvu3QiZfGPZ uHixegBX6ZfmpwQSvK+U8tVcy1pKI40Kh/F+ui4ypjqAw6E/B8vmAjYX2B3/rIKICX4h29 thO5MZH0cvyuYUVmpmZdKrMCxkPhiks= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=YNqiznxQ; spf=pass (imf13.hostedemail.com: domain of shy828301@gmail.com designates 209.85.216.50 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=1680019213; 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=7Sq2T1hA7m0Ixr/YYbwjrCthQRKAsqdaYhVbJei/0ZA=; b=A3GXJvskROMaDfoyQkst1kVCDaig4DsAFWz+CHxqb+KzaEjefVJ/T/FrQG2xQMksfHMDq4 u4c4iAghqRnIeSdIelRUnlpFduZNXL9ds3oaPZc1vP2w73ZHPKIZPRVDVaOGB+zuLRWKts VVBhGxwKfkUy3hJCUUojZn+hqkY+6ko= Received: by mail-pj1-f50.google.com with SMTP id lr16-20020a17090b4b9000b0023f187954acso13098281pjb.2 for ; Tue, 28 Mar 2023 09:00:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680019212; 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=7Sq2T1hA7m0Ixr/YYbwjrCthQRKAsqdaYhVbJei/0ZA=; b=YNqiznxQJGLlhSNa5o9AAoot7kuJMj1yMEm7BUfXw31OstsqvGvj4HbnT80w46G/9Y dXKdJtnphZXrSGRq0DhZH7n3eIdElQ48yVzUsQ49p1jT5o2WJ9EATXFR8XPobBsQ2TRU vu2D9DfKFV7oT/HKTm9MG+SCIaK3Ktx8Ous0Duy7vJAEwqLs8NDZG7feq1Eo8FCIdxZT 07N3Ed/Xg2uRC9SEPeCZeWaBGk41IVlJWf8rS3JnlXzsfcFi/t8u504P0JU/8XZbRIzK BN/ml2zemtTiX6H+8wrfDIei86Q+S6KK+J9Gf7DwXRK0P2+KsaH4N0OQs+3VRUfqCzzA PAOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680019212; 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=7Sq2T1hA7m0Ixr/YYbwjrCthQRKAsqdaYhVbJei/0ZA=; b=0uBXHy6X0Ff97H9CwWoCv7lfOUKRnI44qhhh4dcptkULrPyz7FORKHPcwjAGaXcUsU KkmcM1sPgymR+46uuf4AydWXhH3fga8ubMQY9rg0P2MxfmGzX9kSGiPipsIkcsSZ3tRN 3wc5kuQGyFvplLxYCjmcC3X4IwisWqGf4VSQ/dOD0CQAb5lEfzy5z4Vfw9mwO+hZkaZ9 n8qFMsLVviw9Si5b+nrNVhwPveSaLvaBHlEfGu1cR2EJC7GtsJVj1wqGjpByEM7QRt9f VI8c6CpwbVoRhlEYUGcJfCtSkdLfASWv5N6/vxqP480D4q5X50nv4BxDynYME70PkdfR OzRg== X-Gm-Message-State: AAQBX9e2ovYTzKW8RMjSUygo64P9H4VRRA13ThsLud5qBXHGZ0NAYx98 UW822r8D3d6pNC24LF/SFD9rYGeTU45YF9nXYrA= X-Google-Smtp-Source: AKy350ZV/+bcIf5YMxMokuloqzLJGDAFSYm4w+/AFh1zXTgsMEv7O+IlpuKJZNy0aSJhhwde6XTyFVexqG0eZHELW4c= X-Received: by 2002:a17:902:b94b:b0:19f:6f30:a3f6 with SMTP id h11-20020a170902b94b00b0019f6f30a3f6mr5931752pls.1.1680019211619; Tue, 28 Mar 2023 09:00:11 -0700 (PDT) MIME-Version: 1.0 References: <20230327211548.462509-1-jiaqiyan@google.com> <20230327211548.462509-3-jiaqiyan@google.com> In-Reply-To: <20230327211548.462509-3-jiaqiyan@google.com> From: Yang Shi Date: Tue, 28 Mar 2023 09:00:00 -0700 Message-ID: Subject: Re: [PATCH v11 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, naoya.horiguchi@nec.com, linmiaohe@huawei.com, linux-mm@kvack.org, akpm@linux-foundation.org, osalvador@suse.de, wangkefeng.wang@huawei.com, stevensd@chromium.org, hughd@google.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 0E56D2002F X-Rspamd-Server: rspam01 X-Stat-Signature: 64r7trexwy3tycnwjgoegdn93kngzjkd X-HE-Tag: 1680019212-396483 X-HE-Meta: U2FsdGVkX19mYpZvC4GhEhHt6hhjq3kYUB2Ofn0lI+36qQb9zskXFJGkjbvKkNC+5tBIM2tQ7cJf6LaX8aEFhq110Gu6rgPx0d0RhBTd5I6CWbsF1wVGA3iYWCyhWruqLBApMm+I0eToJxgXomxuUGCvYqZhahyDz92UOsHy3vAhZCspMlxiWO6wu815UF20uDFJ22HkXpn+Re8p2ImgC1rCihSpyrhLAQZUvDdcVXQDy/m/4a3wRcRFvmH3ih088VkaynwKKJpVgMSruXUrg45cjjGHSAz/KJf3hLAMkv+z7H+QG2pUlvrTpqqeH3L1uPcwqdpW2QAT6eBCwU2IPUeqw+qPFCFs+Ss/hf5R+/1csVUiPQ6SigXty6+fMGaGsQQQ/m2qMBjeNYRYF/WVpm/jHfOd8r39B7zOLSv7hD+wbDryY0a1yNWyy1P0a06/k/2jo5ms0BLhHQJw5c7MplGHQhAjZUvOjl0q1+Q6Hlw4Ze423W8anFECJY3mUuzq0ucOpW0294x3j0Wq6ZAbj8BZ2pWaTov+QkGG+boKduAaU/+4g9Cxv+ccUZ2C9MJpZKIkS3kLTllbvP9Tti0WDaOfcQTueVoFOgHhC6Aa5Op1VglX5jQ4tQTSBRHB1lGueWkJ5XoOax8cWxK+3EuT8z9Bjv0yL6PinIuviw5uR813olhD9yZO4dpmeocRlbGuT6hqbHbzMP5Zx9f89U7Q3hmEztF2UHt8R8dpEQTa6xHAx8H4SzfyZV6EdazLgj3r0C3S/R1dipwlGTAdJMzVr5Dyul8xxr1n2Lun8n3SXOZD7JUqkM3IEWfgiiDRYv07GNcCOgwLuH+KoWC+svYJ/lCe9edCEYvGpWKS+HmsnCS8u+ZL42ZYdFY5xEoPot3ulZqYXc5sTA+vfPjScproG9V2oXfMDKOyp+i8hY03eSqzN6Ft9dTLrtkPhtyQQxXh2r9nP46WNpLQC+TwiFQ GsVoO23N Bg0jJZ0BeDuGFMiXcSkQQJGsxAtIiEYBu7trXxFbT0PhPJJEMXuIoYe9y5v6bUQ2G2kBUSnzR+uK9tv3e6F/YAjVZwGMudxQW8gUB+X8pFT9Fw03rxT6yqvUK2+McItjcrO8hdPGXkWcVg+h3MhqWYKUgDjOyVAttK0h84jlroaODbpoGWbjPnLVOxLRTGjmrH9MUPfcc/TIl/S4Pztu3C86D3hv7ShmfIPhqG/zYooQZitp13oL1dINAD7O0WqEGPQk+SAOB6QH8JAklyEU01XuwEsZl2gnOox5RpVN1ouBUOW5cs26yzqTgZr8hmQv9RFuVPCtnUU9F3jjha61ZWPyX6ycssyFfU208lClLz27l2cbUzpZKe20NZb7hT6+3r+pVRtZhYsKcAEa6ufAvgq/BeWVnUb2OGOb66nSYocXXwQV5ERct22oZBWXBqifzCYv2NVQAwDblI+B+GwrolT6tgg== 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 Mon, Mar 27, 2023 at 2:15=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 Reviewed-by: Yang Shi BTW, you could preserve the reviewed/acked tags as long as there is no significant change between two versions. > --- > 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 9c7cdaa3de8cd..4de1dbcd3ef64 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.348.gf938b09366-goog >