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 B8E5EC433FE for ; Mon, 14 Nov 2022 03:02:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EC25B6B0072; Sun, 13 Nov 2022 22:02:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E71706B0073; Sun, 13 Nov 2022 22:02:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D38E28E0001; Sun, 13 Nov 2022 22:02:41 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id C0B636B0072 for ; Sun, 13 Nov 2022 22:02:41 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 87E6640380 for ; Mon, 14 Nov 2022 03:02:41 +0000 (UTC) X-FDA: 80130550122.25.46B4BA2 Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by imf02.hostedemail.com (Postfix) with ESMTP id 2F2F780006 for ; Mon, 14 Nov 2022 03:02:40 +0000 (UTC) Received: by mail-pg1-f193.google.com with SMTP id 62so817632pgb.13 for ; Sun, 13 Nov 2022 19:02:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1jNzjIIGaNWRSoePM8YAxJiE54VMGSbC0iksQUaSkt0=; b=FQkAN9AewYwroQ1aZJ1Yo5hDn/l4puoTTLKJ8wQmLSbxrzZT6I0MRz2o2cCrB1YZsE lW/C+yJRTYuwgSXPw1qBTG9AgoPBATarcFZndMv05skoGwHkvAJ7NZfSvQmSpVEz6Is1 mtdUAliWGK+Kpr+Zd9ukxZ6BUUVZGKC1iUMVuYPFjW6HVxQgS+NqVyeQ+RHfsQD2eZvK BZ2o39Wb7UziqurPs2LptQyIyaPhudSqc4A2A0htOI9QuwlaKiKIU5J71NWTqRXNEvsT zcuS1zkmeB+FSbLQ4BSgyJZYGcV5PKHTSI9j4ywchJ3exkh/DZbuFJyzU98Q6/9odBfL vGdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1jNzjIIGaNWRSoePM8YAxJiE54VMGSbC0iksQUaSkt0=; b=woXMUhkHfYN0Y/ZMl22X3Wk3IKCeWXHjUP6S8xFyNmefcwWEOXBlI1kzZQeFGcqXzh z4WDsWctqyXYTHDsAEk1eePbxryZddPJQZ2UEj7hwXnfZZLBUx22o/bFGhKcr+ju/W66 u3BSBQ9hRAql6J+5eC/RUrQ8KQdvOU1ZIBsY34eUgAAyINfFH3FNub64S7YPwXCs8bet L4JMTh15IlT0Jb5hKk6BgpAFL3nBKsHP2I4gd8/hg3rUKLOLyUNGM+E46S3RObY6GqCH ye7ZW9v0RzO3h0Sz5Tgk/Fpq8M/sWE9DrVLY2gZDC5Su08TyU1+TQ1wpQtlpzg9IMyuM LksA== X-Gm-Message-State: ANoB5pl02ox0geHomXRMctdqeg1DX911id/TTXmwFMqfXDfe9K4Vtlir LtpqTOe6bD1qsKEbC6Oz+6w= X-Google-Smtp-Source: AA0mqf4tYkipmJhdV7TI8IpfoVHr0ro+Fskvyq0Br7HeJD2vN+GpdEQC6nb5rzRIuba1QxRUCuHE/w== X-Received: by 2002:a63:195c:0:b0:46f:b6e1:1966 with SMTP id 28-20020a63195c000000b0046fb6e11966mr9984215pgz.625.1668394960121; Sun, 13 Nov 2022 19:02:40 -0800 (PST) Received: from localhost.localdomain ([193.203.214.57]) by smtp.gmail.com with ESMTPSA id h9-20020aa796c9000000b00571f4386697sm2373196pfq.24.2022.11.13.19.02.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Nov 2022 19:02:39 -0800 (PST) From: xu xin X-Google-Original-From: xu xin To: david@redhat.com Cc: akpm@linux-foundation.org, imbrenda@linux.ibm.com, jiang.xuexin@zte.com.cn, linux-kernel@vger.kernel.org, linux-mm@kvack.org, ran.xiaokai@zte.com.cn, xu.xin.sc@gmail.com, xu.xin16@zte.com.cn, yang.yang29@zte.com.cn Subject: Re: [PATCH v3 2/5] ksm: support unsharing zero pages placed by KSM Date: Mon, 14 Nov 2022 03:02:36 +0000 Message-Id: <20221114030236.513178-1-xu.xin16@zte.com.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <3e61fb01-5277-80a4-610e-0608475637f8@redhat.com> References: <3e61fb01-5277-80a4-610e-0608475637f8@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1668394961; a=rsa-sha256; cv=none; b=7nYEehNUym1iZm8moP9C0pcHds81JOMsnpCAT+pZ3fC5fMtpzj9KV3NSMUVNV89TW0cyZU I7CBK0FbFvMZ2X7gIwAluEkbuqw/2ubHsyYesujwjEfAngjrmUdqimDuh3/HQPb3F2mq07 rmyCCZmEizGOVQ+0bfln+NpuIqvxO0E= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=FQkAN9Ae; spf=pass (imf02.hostedemail.com: domain of xu.xin.sc@gmail.com designates 209.85.215.193 as permitted sender) smtp.mailfrom=xu.xin.sc@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=1668394961; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=1jNzjIIGaNWRSoePM8YAxJiE54VMGSbC0iksQUaSkt0=; b=rUM6E21K0B/cFVeU0w9cwQ/XluliSDY7mhMTEOhu5yKhPSVVceGvsz/LTIbBQOnLVgPK9C NokhDxxus4uoYjZXswKiIZfv1EbZ+U5v//NEJNMiRb7KReQAAqRPyKrRJ/vBSR80QJ3DfE 12qQi9ikcUj3T159l6vRj8WKGUhpMU0= X-Stat-Signature: kboye1fixmzf8kfq11ec5n4xqiwxw3i6 Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=FQkAN9Ae; spf=pass (imf02.hostedemail.com: domain of xu.xin.sc@gmail.com designates 209.85.215.193 as permitted sender) smtp.mailfrom=xu.xin.sc@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspamd-Server: rspam10 X-Rspam-User: X-Rspamd-Queue-Id: 2F2F780006 X-HE-Tag: 1668394960-121153 X-Bogosity: Ham, tests=bogofilter, spamicity=0.002671, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: >>>> - * We use break_ksm to break COW on a ksm page: it's a stripped down >>>> + * We use break_ksm to break COW on a ksm page or KSM-placed zero page (only >>>> + * happen when enabling use_zero_pages): it's a stripped down >>>> * >>>> * if (get_user_pages(addr, 1, FOLL_WRITE, &page, NULL) == 1) >>>> * put_page(page); >>>> @@ -434,7 +428,8 @@ static inline bool ksm_test_exit(struct mm_struct *mm) >>>> * of the process that owns 'vma'. We also do not want to enforce >>>> * protection keys here anyway. >>>> */ >>>> -static int break_ksm(struct vm_area_struct *vma, unsigned long addr) >>>> +static int break_ksm(struct vm_area_struct *vma, unsigned long addr, >>>> + bool ksm_check_bypass) >>>> { >>>> struct page *page; >>>> vm_fault_t ret = 0; >>>> @@ -449,6 +444,16 @@ static int break_ksm(struct vm_area_struct *vma, unsigned long addr) >>>> ret = handle_mm_fault(vma, addr, >>>> FAULT_FLAG_WRITE | FAULT_FLAG_REMOTE, >>>> NULL); >>>> + else if (ksm_check_bypass && is_zero_pfn(page_to_pfn(page))) { >>>> + /* >>>> + * Although it's not ksm page, it's zero page as placed by >>>> + * KSM use_zero_page, so we should unshare it when >>>> + * ksm_check_bypass is true. >>>> + */ >>>> + ret = handle_mm_fault(vma, addr, >>>> + FAULT_FLAG_WRITE | FAULT_FLAG_REMOTE, >>>> + NULL); >>>> + } >>> >>> Please don't duplicate that page fault triggering code. >>> >>> Also, please be aware that this collides with >>> >>> https://lkml.kernel.org/r/20221021101141.84170-1-david@redhat.com >>> >>> Adjustments should be comparatively easy. >> >> ... except that I'm still working on FAULT_FLAG_UNSHARE support for the >> shared zeropage. That will be posted soonish (within next 2 weeks). >> > >Posted: https://lkml.kernel.org/r/20221107161740.144456-1-david@redhat.com > >With that, we can use FAULT_FLAG_UNSHARE also to break COW on the shared >zeropage. Sounds a better way for breaking COW working with reliable R/O long-tern pinning. >-- >Thanks, > >David / dhildenb