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 A76BCC83F0C for ; Sat, 26 Aug 2023 00:56:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 245F52800E4; Fri, 25 Aug 2023 20:56:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1F6662800DF; Fri, 25 Aug 2023 20:56:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0E6A82800E4; Fri, 25 Aug 2023 20:56:40 -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 F38A92800DF for ; Fri, 25 Aug 2023 20:56:39 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id CCBE380713 for ; Sat, 26 Aug 2023 00:56:39 +0000 (UTC) X-FDA: 81164440518.19.98403F7 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf22.hostedemail.com (Postfix) with ESMTP id E8416C000D for ; Sat, 26 Aug 2023 00:56:36 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=none; spf=pass (imf22.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1693011398; 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; bh=ORHIcV/kP8dKy6nttupHtNKzDMXBbnelNnZQ7peTe2I=; b=s4F5kLqoPgsyD4rT4Q0rhC9i8gqtMwhMah9jesHFZWw7BRrFEEpPQ0hKtJ74PiGRZhikES YYGdb+U+TV/nuLpWCWk1B8gcpgsFNa2pWyDEImUatQ/HFIUAP3Ma9iZ+4xy+od6CTdwWuM xbY5CRbTs1ceTAvku0RR3rBM91XSG4I= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1693011398; a=rsa-sha256; cv=none; b=c6SWwGcolNBv1+dmLbZHN8Yus1uTePs8PycZtHVsQEB3mBQZSAp8nmPH8VnXR1l/F7wJkM b327G7CbT5SSWMGWShFCBI3RJojuMlDqNX8/aYBZx8B1HKUlF6lHnCI53mAnjEWwFeomuC 9h1M/8JmgEfGZPJY14LIZbhuRwoOaJk= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=none; spf=pass (imf22.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com Received: from dggpemm100001.china.huawei.com (unknown [172.30.72.57]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4RXdZy6d9WztRf4; Sat, 26 Aug 2023 08:52:42 +0800 (CST) Received: from [10.174.177.243] (10.174.177.243) by dggpemm100001.china.huawei.com (7.185.36.93) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Sat, 26 Aug 2023 08:56:28 +0800 Message-ID: <26989657-3ad9-48c5-9863-12993b78141c@huawei.com> Date: Sat, 26 Aug 2023 08:56:28 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH rfc v2 01/10] mm: add a generic VMA lock-based page fault handler Content-Language: en-US To: Alexander Gordeev CC: Andrew Morton , , , , Russell King , Catalin Marinas , Will Deacon , Huacai Chen , WANG Xuerui , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Paul Walmsley , Palmer Dabbelt , Albert Ou , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Sven Schnelle , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , , "H . Peter Anvin" , , , , , , References: <20230821123056.2109942-1-wangkefeng.wang@huawei.com> <20230821123056.2109942-2-wangkefeng.wang@huawei.com> From: Kefeng Wang In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To dggpemm100001.china.huawei.com (7.185.36.93) X-CFilter-Loop: Reflected X-Rspamd-Queue-Id: E8416C000D X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: kugy7ez31ysekj31f6zmbogb4erpoymo X-HE-Tag: 1693011396-126425 X-HE-Meta: U2FsdGVkX19E7dLJiyKn7M3Cdv4QYoMQNAJuIbytiJxMlaEHN9vVaePzPdaWXNMxqRe3XgIvbxeqb84bfk1sAk4mnTHc54L6rvL0eOHsO2vaOQUYdsRBzdqpekgVD0i+safqBrCzxJWBca2DVmnSod/FgP41UCt7qv7bV2k/hcS3ESOn9l2CMtfiuWfxv+Kr+gmh31nJDcuV7TC5gMAmO/Ucg8iFm12/hDXZ03fg6/iBqsRhHGDCZv6UNawZbA7MzUud+odVxlBoYWat6qFyHta/IKqw5k2DOyBUoTCsAgVth7PkinL91Nf/dPpIMulIVSiMxjXQTanzf+jfn+GYdI8jarXDfFDqUa1biSs8ERPzYc1fzUJQ1kZWN2Lm9yobyNuJ3/AQ31cJLR1C3RQL7YE2lpT4rsoCI3EgkiUSiOZKcaKn4HUyHb4UU+HgIQ/k6b11JoQLQDQb+RZsjGx51J6tJ7/h7Co673cVkUKm3SqQW601Si4TngrxRnz4kP2W9bi0i7NmswImeL7BQh/zKD4dys7M/xcOOiE1BF9hrnLm6GiFkg467flOiCRuf8OyousjYTqlLsEV9Ugw9n8MS2aVmJwjlvRyy2SgzX3aJ/IMGb+C0PzVkkAE0InAdZ5JryzuP0pr6z9h8CUoMq0WAGXDz5QvKxcArjLtazyy9LoguXeelkY5tEbO3A5zbK1sTi0WgN8u4v5JH9uB5UA/jP6KSoDAx/3ewnwq2yfc+HkiQf++QAwvzbvX3W/4qok8cviYMUY4jTQwmzvsJnd+3duhCKbXkLisDfWGs6Rwm8jOTfjVdpy3S4rrFOy7ZOB4CVJh8xy6eI6AR6G2RwvQZM4TaWKVUMU4KX4wrIAAqhUdydZyJbHO85Gxb/a8An4MbFctyeOyvJIQkuIaohvGn9MlFqPVdcpskeMCTkgfDaB4FJ8dGS5bHVc1s04D3JZwDhx3X9ce0CWvQSa+c2M VNDGEnjc H+r+hwt5CaxCvKB4OJNzCLhhSs58NfoMie8jJ/aJTaIuNtfTz9a0r4Rzo9j2/YWKXV+RCSWvrxvyS+rGi7Y3RWmgY6KCoQllbsQjZx4Ukjzxjo4H7r8UNPDnyhHY9G9jsicABy8AGpYVVWIIxyhBy9vAgcODL7MlybC+co1CqzT2dX2eFScSMmMycrdHwamMwsJWyQzLpP6AG2SFCfUIB8BzY+6wnKFuvTqBp0co63DXHIPV8Woy4SNwNpatsJe5sM4J7mb9MLufVRgUgen5TNC2Dnw== 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 2023/8/24 15:12, Alexander Gordeev wrote: > On Mon, Aug 21, 2023 at 08:30:47PM +0800, Kefeng Wang wrote: > > Hi Kefeng, > >> The ARCH_SUPPORTS_PER_VMA_LOCK are enabled by more and more architectures, >> eg, x86, arm64, powerpc and s390, and riscv, those implementation are very >> similar which results in some duplicated codes, let's add a generic VMA >> lock-based page fault handler try_to_vma_locked_page_fault() to eliminate >> them, and which also make us easy to support this on new architectures. >> >> Since different architectures use different way to check vma whether is >> accessable or not, the struct pt_regs, page fault error code and vma flags >> are added into struct vm_fault, then, the architecture's page fault code >> could re-use struct vm_fault to record and check vma accessable by each >> own implementation. >> >> Signed-off-by: Kefeng Wang >> --- ... >> + >> +vm_fault_t try_vma_locked_page_fault(struct vm_fault *vmf) >> +{ >> + vm_fault_t fault = VM_FAULT_NONE; >> + struct vm_area_struct *vma; >> + >> + if (!(vmf->flags & FAULT_FLAG_USER)) >> + return fault; >> + >> + vma = lock_vma_under_rcu(current->mm, vmf->real_address); >> + if (!vma) >> + return fault; >> + >> + if (arch_vma_access_error(vma, vmf)) { >> + vma_end_read(vma); >> + return fault; >> + } >> + >> + fault = handle_mm_fault(vma, vmf->real_address, >> + vmf->flags | FAULT_FLAG_VMA_LOCK, vmf->regs); >> + >> + if (!(fault & (VM_FAULT_RETRY | VM_FAULT_COMPLETED))) >> + vma_end_read(vma); > > Could you please explain how vma_end_read() call could be conditional? The check is added for swap and userfault, see https://lkml.kernel.org/r/20230630211957.1341547-4-surenb@google.com > >> + >> + if (fault & VM_FAULT_RETRY) >> + count_vm_vma_lock_event(VMA_LOCK_RETRY); >> + else >> + count_vm_vma_lock_event(VMA_LOCK_SUCCESS); >> + >> + return fault; >> +} >> + >> #endif /* CONFIG_PER_VMA_LOCK */ >> >> #ifndef __PAGETABLE_P4D_FOLDED