From patchwork Mon Jun 15 22:15:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Xu X-Patchwork-Id: 11605973 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AD4D313A0 for ; Mon, 15 Jun 2020 22:16:28 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7DA1520739 for ; Mon, 15 Jun 2020 22:16:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="EQCqrEU4"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="XzjbGjYS" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7DA1520739 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=hvwMzqOE+UxXHcpOm53jV3rdS0A2xvUbF8YZ2K7+6LE=; b=EQCqrEU4zlR65F VPtJ4JI0zUVM1fkjDiXJ6SYKJxsup7pygYh9HnyiJHu1GaiOLchIjmvoMgsKrvnbt4wes28OD24a5 YrK2/HVMwZUADRoKCrpMVBHe6lK/N9VKIcr3fnCK3c5G3E8lXATGQHb66XuX7OPHd2oXAQmZlU5/k nYIpjMIV2aEJMngQ2ahKKxsWTIEwimhYHBAXfsq1ChJyEyneoVzGICmvoArpAoVD1dEyW4OkCGJRF 3pbpH6OZqDQbr/dvZsBZ7i2Y7fSFykX3UANMLJjJEXtzTlByCo7xE+dOd6y1qNhK4xijSKWYBNy2Q Q6O3JTf1pdNiDcIeGI4A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jkxOy-0008Go-Hl; Mon, 15 Jun 2020 22:16:24 +0000 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120] helo=us-smtp-1.mimecast.com) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jkxOv-0008FZ-M5 for linux-arm-kernel@lists.infradead.org; Mon, 15 Jun 2020 22:16:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592259380; h=from:from: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=KKXlC2Ik8MurO5EQW9zZhxy63+C0QjUDgELZmh6OLDU=; b=XzjbGjYSO2ZZ0YPuDEfe5hlMZ+8jzM0eBMEMih5xZm0rVqn1E31JbYmv/vK8lBQmDzTw0p 5OHcLdy2pm9NzbqVjT9jy0ILTYVjjsUiMIp1z1CJUGSa7KMuqX30wft1zRdqfSPtWVg/vt 7AhVK6usG+dHFogTO7MvUzdrT1jZsDc= Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-273-SbTEflwCNwqpfdK_E0kEvg-1; Mon, 15 Jun 2020 18:16:19 -0400 X-MC-Unique: SbTEflwCNwqpfdK_E0kEvg-1 Received: by mail-qv1-f69.google.com with SMTP id j4so14112010qvt.20 for ; Mon, 15 Jun 2020 15:16:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KKXlC2Ik8MurO5EQW9zZhxy63+C0QjUDgELZmh6OLDU=; b=ZO/yuMu3ud7c7J/cSan5J9Sc64IzE5ZMszzDcD3mraKyxXmUg1uXgvgT71rRGVJ2tu MlZPtDVE0a5Uy4Nr3zjKTni68Djt0+KOUdcb1XUK4k+u0HzKLnF9yQ7nY+yupCzb/xyJ Haf+ZWx0FiVKpTzOdtpD7RVBsf08YQj3RkgovAszvPntbesx16KDck+Hfj0125Af3NNI I8zd+O+vGMUw1Kfg1oNwe/6theK58T3Ucb3DV0BBoLL64eoQkfAij7nLKjnQDI8Yb5MY H33RcRsNaMxFllJVmOB817JUHGH/RMivg9nn3TXUNu7+ZFEvUZJrC9wHmrVS/SaJXnS6 xScA== X-Gm-Message-State: AOAM531exNm36jRVqHyvoslg5OiBZCoBl9ZySTz0q/cIdrxKH0Zol1XQ Flp/1BJtqpTOvmwyRq0x5BruY9Gb1DEqlte+QpT1j9ZaZfpj6YDjnD9iFXXtSKB/ldisCuXM+wS RzEKHQb4seDptyBjcvNrE6EY4r0apE7mCrzs= X-Received: by 2002:a05:6214:17cb:: with SMTP id cu11mr26619258qvb.202.1592259378652; Mon, 15 Jun 2020 15:16:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzYdEz/PXgGWV8lG2AkZeCE0DWjNT0NnU9fGbVJx/ytdFI4o+mld4AJShPV7+8taxw+Ukt3hQ== X-Received: by 2002:a05:6214:17cb:: with SMTP id cu11mr26619231qvb.202.1592259378438; Mon, 15 Jun 2020 15:16:18 -0700 (PDT) Received: from xz-x1.hitronhub.home ([2607:9880:19c0:32::2]) by smtp.gmail.com with ESMTPSA id w13sm12351509qkb.91.2020.06.15.15.16.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Jun 2020 15:16:17 -0700 (PDT) From: Peter Xu To: linux-kernel@vger.kernel.org Subject: [PATCH 05/25] mm/arm: Use mm_fault_accounting() Date: Mon, 15 Jun 2020 18:15:47 -0400 Message-Id: <20200615221607.7764-6-peterx@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200615221607.7764-1-peterx@redhat.com> References: <20200615221607.7764-1-peterx@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200615_151621_791707_678D0938 X-CRM114-Status: GOOD ( 14.37 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [207.211.31.120 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [207.211.31.120 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 DKIMWL_WL_HIGH DKIMwl.org - Whitelisted High sender X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrea Arcangeli , Will Deacon , Russell King , peterx@redhat.com, linux-arm-kernel@lists.infradead.org, Andrew Morton , Linus Torvalds , Gerald Schaefer Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Use the new mm_fault_accounting() helper for page fault accounting. Avoid doing page fault accounting multiple times if the page fault is retried. Meanwhile, take the page fault as a major fault as long as any of the retried page fault is a major fault. CC: Russell King CC: Will Deacon CC: linux-arm-kernel@lists.infradead.org Signed-off-by: Peter Xu --- arch/arm/mm/fault.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index 2dd5c41cbb8d..92d4436e74da 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -240,7 +240,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) struct task_struct *tsk; struct mm_struct *mm; int sig, code; - vm_fault_t fault; + vm_fault_t fault, major = 0; unsigned int flags = FAULT_FLAG_DEFAULT; if (kprobe_page_fault(regs, fsr)) @@ -290,6 +290,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) } fault = __do_page_fault(mm, addr, fsr, flags, tsk); + major |= fault & VM_FAULT_MAJOR; /* If we need to retry but a fatal signal is pending, handle the * signal first. We do not need to release the mmap_sem because @@ -301,23 +302,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) return 0; } - /* - * Major/minor page fault accounting is only done on the - * initial attempt. If we go through a retry, it is extremely - * likely that the page will be found in page cache at that point. - */ - - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr); if (!(fault & VM_FAULT_ERROR) && flags & FAULT_FLAG_ALLOW_RETRY) { - if (fault & VM_FAULT_MAJOR) { - tsk->maj_flt++; - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, - regs, addr); - } else { - tsk->min_flt++; - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, - regs, addr); - } if (fault & VM_FAULT_RETRY) { flags |= FAULT_FLAG_TRIED; goto retry; @@ -326,6 +311,8 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) up_read(&mm->mmap_sem); + mm_fault_accounting(tsk, regs, addr, major); + /* * Handle the "normal" case first - VM_FAULT_MAJOR */ From patchwork Mon Jun 15 22:15:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Xu X-Patchwork-Id: 11605975 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 98EBC60D for ; Mon, 15 Jun 2020 22:16:40 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 55BCD20739 for ; Mon, 15 Jun 2020 22:16:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Gl6FeKDH"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="jWGBCE26" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 55BCD20739 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Ts7vABXKev5w9QPkxZUpcG/AXR5pM9ucCsOwPY/FpP8=; b=Gl6FeKDHTERWUR fN93q2C3nhBubf9F5C63rwRvj+nHBrO7aOjglrO4JtAQ9sahT5MKpknzHh93zacvmbRTdlh1JElXU AJqjLUXQSMiXAEOqDelxSLIqasD6hiWD/Y5X7dFFwE9zT0AJxiFm8v1Lw6jbjuE9voZPwEjwqvhxU 8zUrP9Sf+kar+dYzbtlCZi2SwhO8g8bnBaOYHiaC7Yh/sxYfqzz9sopvZZGj5yoYTBw2DOA3eP3Oy tynnwMtkAGIOqvSvBJD+sMAsFGSEyHyGiWLsodO0gf2JzQiIbyAeXoscFYv7YOrstw3yBpATRibsh 43btEMmcfS3x2rdb0YuA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jkxPA-0008US-3L; Mon, 15 Jun 2020 22:16:36 +0000 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120] helo=us-smtp-1.mimecast.com) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jkxOx-0008G5-E8 for linux-arm-kernel@lists.infradead.org; Mon, 15 Jun 2020 22:16:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592259382; h=from:from: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=Ls9QmJCLOm68CvolACOW0xbuhdSZty4Jnv9TrFZw+qw=; b=jWGBCE26ipHnzPJXDX6JF58tafabZF16DdvFWfyhGEq4gUckbZSX1L5cIUQGp0j6R94OMV lWunxxBW6Q080GO3JDVkhvlCqc0O8DUyC/29I5JM+nIJE+yI7KakZ7aLXtDGFsMY+HXm57 jicUPpUxH67zZbBbPnPjftQmM/XZ9ws= Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-315-gM7EtScfNYyPXqaMHirSVA-1; Mon, 15 Jun 2020 18:16:20 -0400 X-MC-Unique: gM7EtScfNYyPXqaMHirSVA-1 Received: by mail-qv1-f69.google.com with SMTP id r4so14080961qvh.10 for ; Mon, 15 Jun 2020 15:16:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ls9QmJCLOm68CvolACOW0xbuhdSZty4Jnv9TrFZw+qw=; b=nALQDnfXox3S6fhstnQrLJHDSoKCM0QDEB7SYNFwicI1iluFuRZOjoKHeT22vdu8gf Fe8+Pae5Dav2L4UMQ5dYDrWYxz+Ai5hJ/lGCVdudLVJBxLzF/WkYJp6RRR3I+yHhytw1 FEw5LKfQ423HJ9OWi3IvQjy+E/mD5kXwzZ6En7bPxqiCTYNZCe74G58owTBb4dgswDby y2LRo2A/urqVNNN5ljRW6q3oZDOp5p0QRDJHKmp6VMPoE+Lc/SebDsJvxX/4eNlG+s6k eV8nThl3QnBoo8HsALMsAn8ARr2BM1wL1CV7LySoBMBB3igCJbsELjTYwG8Y/MhR2+Jw GcDw== X-Gm-Message-State: AOAM531D7rYKhZ5YeYkNXq6wzJ+esiIV9qO8YV0cgvfCUDe22UaQBXvT c0CfKcUQBH2bgt1kQzTBUiX7ZLfjcub09Abu2yJlDpxK+zkgFjlo6Jzmx8Xi6SXjJKfbpgYevrp h7E3K6fkYG5j7GtIu3U9Uj+7Wd6BndvBBYgs= X-Received: by 2002:a0c:b256:: with SMTP id k22mr4540376qve.115.1592259380199; Mon, 15 Jun 2020 15:16:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPmau1M6QKWc6GHncKWYMz7eFkgSphlbSZomzioBm+KJn2NkIvBOjAdW7fQwymnkxPP7AAIg== X-Received: by 2002:a0c:b256:: with SMTP id k22mr4540360qve.115.1592259380012; Mon, 15 Jun 2020 15:16:20 -0700 (PDT) Received: from xz-x1.hitronhub.home ([2607:9880:19c0:32::2]) by smtp.gmail.com with ESMTPSA id w13sm12351509qkb.91.2020.06.15.15.16.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Jun 2020 15:16:19 -0700 (PDT) From: Peter Xu To: linux-kernel@vger.kernel.org Subject: [PATCH 06/25] mm/arm64: Use mm_fault_accounting() Date: Mon, 15 Jun 2020 18:15:48 -0400 Message-Id: <20200615221607.7764-7-peterx@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200615221607.7764-1-peterx@redhat.com> References: <20200615221607.7764-1-peterx@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200615_151623_553062_9F5C6C09 X-CRM114-Status: GOOD ( 13.92 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [207.211.31.120 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [207.211.31.120 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 DKIMWL_WL_HIGH DKIMwl.org - Whitelisted High sender X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrea Arcangeli , Will Deacon , Catalin Marinas , peterx@redhat.com, linux-arm-kernel@lists.infradead.org, Andrew Morton , Linus Torvalds , Gerald Schaefer Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Use the new mm_fault_accounting() helper for page fault accounting. CC: Catalin Marinas CC: Will Deacon CC: linux-arm-kernel@lists.infradead.org Signed-off-by: Peter Xu --- arch/arm64/mm/fault.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index c9cedc0432d2..09af7d7a60ec 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c @@ -484,8 +484,6 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr, addr, esr, regs); } - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr); - /* * As per x86, we may deadlock here. However, since the kernel only * validly references user space from well defined areas of the code, @@ -535,20 +533,9 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr, VM_FAULT_BADACCESS)))) { /* * Major/minor page fault accounting is only done - * once. If we go through a retry, it is extremely - * likely that the page will be found in page cache at - * that point. + * once. */ - if (major) { - current->maj_flt++; - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, regs, - addr); - } else { - current->min_flt++; - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, regs, - addr); - } - + mm_fault_accounting(current, regs, address, major); return 0; }