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 39C90CD1297 for ; Thu, 11 Apr 2024 01:18:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A4FEA6B00A1; Wed, 10 Apr 2024 21:18:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9FFB76B00A3; Wed, 10 Apr 2024 21:18:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8C6BD6B00A4; Wed, 10 Apr 2024 21:18:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 6F5F86B00A1 for ; Wed, 10 Apr 2024 21:18:06 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 52DB9809BF for ; Thu, 11 Apr 2024 01:18:05 +0000 (UTC) X-FDA: 81995489730.04.1EC8683 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf04.hostedemail.com (Postfix) with ESMTP id 5CE2840006 for ; Thu, 11 Apr 2024 01:18:01 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=none; spf=pass (imf04.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=1712798283; 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=WEtDSoHIHRfRxRbEUC5Mzj+F6DCAb3ip2m3FGnQETK0=; b=Uv6xAZvCFyO5/9QS52cKyCjtqN8pggJjjoIdDQuN2McPCAJNXYD6p4FSC5ZRYVs+fghDvD QJUoAn00WvsPPm7oYAAolhlFcDfgqa3DL+F/TQINE3cmsrR0EvY59q5Ue4n62cgS7AGHdx Q3UMN+3zJBjdRAj34SSxnF08YSU7tO8= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=none; spf=pass (imf04.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-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712798283; a=rsa-sha256; cv=none; b=MppW8d28C0+Tp669UNek8zr1bOQb7Uer/iUlC05NA3RLTYnMdJ6LL1wiYgyatw/ufWzaoL guuq0kZHUwKPM/ycpzLfX9uGLG2zB52i8Ncdalr9knmnzsaysgDpvZjhrz/gTB7b1lIX2X 6RYP4o7PMTklN461LsisY8E7NwW0F+8= Received: from mail.maildlp.com (unknown [172.19.163.252]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4VFMFF2htSztSMV; Thu, 11 Apr 2024 09:15:13 +0800 (CST) Received: from dggpemm100001.china.huawei.com (unknown [7.185.36.93]) by mail.maildlp.com (Postfix) with ESMTPS id 93B58180072; Thu, 11 Apr 2024 09:17:57 +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_256_GCM_SHA384) id 15.1.2507.35; Thu, 11 Apr 2024 09:17:56 +0800 Message-ID: Date: Thu, 11 Apr 2024 09:17:56 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 5/7] riscv: mm: accelerate pagefault when badaccess Content-Language: en-US To: Alexandre Ghiti , CC: Russell King , Catalin Marinas , Will Deacon , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexander Gordeev , Gerald Schaefer , Dave Hansen , Andy Lutomirski , Peter Zijlstra , , , , , , , References: <20240403083805.1818160-1-wangkefeng.wang@huawei.com> <20240403083805.1818160-6-wangkefeng.wang@huawei.com> <8fe1a53f-f031-4423-97e1-28d93d0cd59e@ghiti.fr> <3493a2f4-9cae-4773-a6a1-2eeb2d23f0c8@ghiti.fr> From: Kefeng Wang In-Reply-To: <3493a2f4-9cae-4773-a6a1-2eeb2d23f0c8@ghiti.fr> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To dggpemm100001.china.huawei.com (7.185.36.93) X-Rspamd-Queue-Id: 5CE2840006 X-Rspam-User: X-Stat-Signature: c4o14iebbzknnz33bfoncnuq5rmtz5i3 X-Rspamd-Server: rspam01 X-HE-Tag: 1712798281-866131 X-HE-Meta: U2FsdGVkX18V3ERBxqxZgTNFzIN4bWmiIokavGXf87pACK2QHP52Qpot4H8KHABM1HrvpCc1ESQv0Ceh3WW9b+mcUYuH5TP0uU42IK0sdlHe84Xg22D3CnB0pENFe/LOTJcXHZPFqmISAYkzxRgvni2ZxC0Z0MNq8iOURjLAu0e2vTKDqydMunbD263lqzxs5cmRc9PwpFkTqrJuJe/3stw00PbgAC9Zq7ItKpmEFpLp8RheVsLUdUBNJ8yfxorxt4osgPS+6eXkLOKPFTNaJEw67B6dNY6aTq/ukrW48w7Cb0nDQ7yOD6xJL/dWOasqYkQj2g/gduW6ZgkfdgrqDXlLZRSKNhY6fH5FSXy5fEw32Kl+kv7kftaDw5RX/mmejF30Q+YaXNPOI6O2xgsPPYzyNVGU99yR7egqw3VoBMUiZK80ASEr4tcoKNMd/grJFH045ffT5BWQB0geA78bU0Prrk+YohLKdFHr8G+XXZg92Nd2utqQLlkI2U/w14Z0/MtSXoRWqLxYw7/mJOc/D+c2XgjEtr6ycN19Pymn/EB5igI406QeBq6omwtteM+P3a3De8mAxWeZnum2tx4oHk0ZMWO9R5HDvuOe10gl2B2S49v23vSN8N85cts2odU46Mgu1Q/66nMg2Ua7pNm0fBfDt5y9NAzew60E6ZJj33GaAlesqQy2Af4uRK+GNAQjAr89Awd3pg8pHiZApyg4HQDwOM/ygdignp3InN51WPGDeh2JRuEI4o4tqNYot3dM1gcbin9LDTjdWdQXAXe12xF9BjcZLHHt7tOg/Q2Y/0dUAbmwXoRtdrR6FoFomKre4mSybaI+RRiYCbBzM1v9Ifk/6U6ay+5ci9ZPf5pyPuQ5pmrdPQRPzSEx70hVeLZFFfNRFMhujg7Nr0ScT5E1ENys7ZBKyBiNVUJ8wMrjSqgnaDQOm9A7lVcPJrCyYWS+JQfoHbJxEpNcUvyXw0o tbMhIiFi R5CdEBmlqI/w2hLnTCJWuph4gJMxSGcMs5P9jgflfz/6ft6ydGvDUkwuBOo/Jb6Lu2QIDUXlmVXvp1WyO0NxsFRrAtxLs4Oe3BDh9i4QK5iyVeaOosseRB0WrHGoQv9GaesLlv+UD/9kljmZ7D7AzcyZxXOkO35Rynb6pFfCvhh0fEMTm4++xFLUaCgpyLH2uCzfYWo1KeG+wc/z/vLCjmbThJiGhcL8QjzHCPpW8EhQujaO6iVDRB7ZAcrk50YHqvq8ZWNGLwYesaEityVLZAy8vvZ92baH4mHL5SJF+nYgc2ZpIUkP47AV0Yg== 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: List-Subscribe: List-Unsubscribe: On 2024/4/11 1:28, Alexandre Ghiti wrote: > On 10/04/2024 10:07, Kefeng Wang wrote: >> >> >> On 2024/4/10 15:32, Alexandre Ghiti wrote: >>> Hi Kefeng, >>> >>> On 03/04/2024 10:38, Kefeng Wang wrote: >>>> The access_error() of vma already checked under per-VMA lock, if it >>>> is a bad access, directly handle error, no need to retry with mmap_lock >>>> again. Since the page faut is handled under per-VMA lock, count it as >>>> a vma lock event with VMA_LOCK_SUCCESS. >>>> >>>> Reviewed-by: Suren Baghdasaryan >>>> Signed-off-by: Kefeng Wang >>>> --- >>>>   arch/riscv/mm/fault.c | 5 ++++- >>>>   1 file changed, 4 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c >>>> index 3ba1d4dde5dd..b3fcf7d67efb 100644 >>>> --- a/arch/riscv/mm/fault.c >>>> +++ b/arch/riscv/mm/fault.c >>>> @@ -292,7 +292,10 @@ void handle_page_fault(struct pt_regs *regs) >>>>       if (unlikely(access_error(cause, vma))) { >>>>           vma_end_read(vma); >>>> -        goto lock_mmap; >>>> +        count_vm_vma_lock_event(VMA_LOCK_SUCCESS); >>>> +        tsk->thread.bad_cause = SEGV_ACCERR; >>> >>> >>> I think we should use the cause variable here instead of SEGV_ACCERR, >>> as bad_cause is a riscv internal status which describes the real >>> fault that happened. >> >> Oh, I see, it is exception causes on riscv, so it should be >> >> diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c >> index b3fcf7d67efb..5224f3733802 100644 >> --- a/arch/riscv/mm/fault.c >> +++ b/arch/riscv/mm/fault.c >> @@ -293,8 +293,8 @@ void handle_page_fault(struct pt_regs *regs) >>         if (unlikely(access_error(cause, vma))) { >>                 vma_end_read(vma); >>                 count_vm_vma_lock_event(VMA_LOCK_SUCCESS); >> -               tsk->thread.bad_cause = SEGV_ACCERR; >> -               bad_area_nosemaphore(regs, code, addr); >> +               tsk->thread.bad_cause = cause; >> +               bad_area_nosemaphore(regs, SEGV_ACCERR, addr); >>                 return; >>         } >> >> Hi Alex, could you help to check it? >> >> Hi Andrew, please help to squash it after Alex ack it. >> >> Thanks both. > > > So I have just tested Kefeng's fixup on my usual CI and with a simple > program that triggers such bad access, everything went fine so with the > fixup applied: > > Reviewed-by: Alexandre Ghiti > Tested-by: Alexandre Ghiti Great, thanks. > > Thanks, > > Alex > > > >> >> >>> >>> Thanks, >>> >>> Alex >>> >>> >>>> +        bad_area_nosemaphore(regs, code, addr); >>>> +        return; >>>>       } >>>>       fault = handle_mm_fault(vma, addr, flags | >>>> FAULT_FLAG_VMA_LOCK, regs);