From patchwork Thu May 17 11:06:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Dufour X-Patchwork-Id: 10406363 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id BC20760247 for ; Thu, 17 May 2018 11:06:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A7D4528A07 for ; Thu, 17 May 2018 11:06:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9B67128A69; Thu, 17 May 2018 11:06:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00, MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E28C828A07 for ; Thu, 17 May 2018 11:06:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2F6CE6B04A1; Thu, 17 May 2018 07:06:54 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 2A5FC6B04A2; Thu, 17 May 2018 07:06:54 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 121D06B04A3; Thu, 17 May 2018 07:06:54 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk0-f200.google.com (mail-qk0-f200.google.com [209.85.220.200]) by kanga.kvack.org (Postfix) with ESMTP id DFB536B04A1 for ; Thu, 17 May 2018 07:06:53 -0400 (EDT) Received: by mail-qk0-f200.google.com with SMTP id c8-v6so3546512qkb.21 for ; Thu, 17 May 2018 04:06:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:in-reply-to:references:message-id; bh=XfBm9gB1uDDYwZdoWGoARZuQoVGVKi+oMLo4/3QoUkM=; b=QG9pD6ilyq0RL9tt/WjlDDS6pQ/B2OcPLJXkw4ljaNSu7bfJusuYXHvd2hA/VjD9/y NE+6HqA0ho/RTSUhdA35SQPTYSzJLyW4CO4hXUsyXnZxhFlwmsaLnvZZdp8oK7fAHpnR t3cR+7O5duUmeUl9+V2kDx/KS1zXzoHcrdOAuRVkwbOsXOMxA9IUy7+KMTBv3gJ3Nh/t q+X28LhYZJPulTkHS9BKoHaKX2ier2WUD1XE78bq9G0mtYt+4e+z/hL3IKm4Q4eLQSvL +Bj6mHppX+P2vqBuAmixbF5bk2RV5lhtPXsmW3byPmfn+4gKTXgto6J+S4OUUKJqSpHL TBuQ== X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 148.163.156.1 is neither permitted nor denied by best guess record for domain of ldufour@linux.vnet.ibm.com) smtp.mailfrom=ldufour@linux.vnet.ibm.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com X-Gm-Message-State: ALKqPwcCYGBmvTxygh03gNOBcEnYFZNBZihgPsaz7NMTJvsQA4Yju1nO h8vaGQR2dRtTytFyLIc9oOweMOAPVcCO3SSi1x34K6Fr89+sptJF3lKMA9KGfnN2O3SH2rGvFlB pRKCiSMCjW/6unPd9yqeo70VY9M+B9xkzpK2h31TibNNlgnvkEVq8rHI0+HZbA4E= X-Received: by 2002:a37:1b28:: with SMTP id b40-v6mr4491367qkb.196.1526555213669; Thu, 17 May 2018 04:06:53 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrzl4bVocoUbLc2VAYVUbUe0UK1AMKlATfXRF2KxF+srQ4MU7Y6Ke/xyYW/SB8PtH7f6VQ/ X-Received: by 2002:a37:1b28:: with SMTP id b40-v6mr4491320qkb.196.1526555212912; Thu, 17 May 2018 04:06:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526555212; cv=none; d=google.com; s=arc-20160816; b=HWMWmC6Zd2jkpBbhwZdXaNgNch06WrFnnAalDo892cw5z0JzUJMl2eO+cA28UZBtpa j8rEgaI9OK5tZYETYJfDD2VmZLmbOp9fob9WmtAL6QpWx7OJbsjGjMp0pDBL8XPMwJYn imS3EWAxrqnra6ikeEdPUuiTn8U7U1IvWdb98clnZP6KsTY3ipI0Fwp04o92SZZPgFCR XU9xu/OYJqOaOObLxO8Xe61BfDqMkHo8UPSThLbUo8nnBIf+oBVMPhH6NzLq0F6cm3HI xINptmnTxzFBSv8ScLUaktzK00E5w1RTQCxUZLSzTAhDJhMIfW7rbjElwTP54v8U7rwS uvWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:references:in-reply-to:date:subject:cc:to:from :arc-authentication-results; bh=XfBm9gB1uDDYwZdoWGoARZuQoVGVKi+oMLo4/3QoUkM=; b=sB2oahsXq8dbQe0LUD3SU5+yhQFiLaaWEyJPqPGOa9C3teKjcqcasM64+uf8weAlUJ zIlEu5XaIsyTjUZej3dYyVOeeD47cXRjCfLVT+Uvn8aj0ypJCN9IipceKhslEaXoW6vp 35BxJT+uk+YSTrSVMh9j7cCCSDCVJ2HsybZEwPrZJEKwMB0nFd39CCalkvj2CyFedZwu g+EpQjUyPWRvW8B/N06ApbySf96rimkbTNEXgJzui3myeqJ4r7XTzarAWxPPfGGo5wwM e8T8i2dO47m5sz0IrCVQP1WgKVhKTuOCDV7Oyn7pAVrLUOUIB8aM/UItL4vpQaZz86Ng qJ2w== ARC-Authentication-Results: i=1; mx.google.com; spf=neutral (google.com: 148.163.156.1 is neither permitted nor denied by best guess record for domain of ldufour@linux.vnet.ibm.com) smtp.mailfrom=ldufour@linux.vnet.ibm.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com. [148.163.156.1]) by mx.google.com with ESMTPS id k188-v6si2262801qkb.338.2018.05.17.04.06.52 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 May 2018 04:06:52 -0700 (PDT) Received-SPF: neutral (google.com: 148.163.156.1 is neither permitted nor denied by best guess record for domain of ldufour@linux.vnet.ibm.com) client-ip=148.163.156.1; Authentication-Results: mx.google.com; spf=neutral (google.com: 148.163.156.1 is neither permitted nor denied by best guess record for domain of ldufour@linux.vnet.ibm.com) smtp.mailfrom=ldufour@linux.vnet.ibm.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from pps.filterd (m0098396.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w4HB4C7q144022 for ; Thu, 17 May 2018 07:06:51 -0400 Received: from e06smtp12.uk.ibm.com (e06smtp12.uk.ibm.com [195.75.94.108]) by mx0a-001b2d01.pphosted.com with ESMTP id 2j18ah0sdv-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 17 May 2018 07:06:51 -0400 Received: from localhost by e06smtp12.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 17 May 2018 12:06:47 +0100 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) by e06smtp12.uk.ibm.com (192.168.101.142) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 17 May 2018 12:06:38 +0100 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w4HB6bmX30867610 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 17 May 2018 11:06:37 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2A4834C044; Thu, 17 May 2018 11:58:26 +0100 (BST) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EE1C34C058; Thu, 17 May 2018 11:58:24 +0100 (BST) Received: from nimbus.lab.toulouse-stg.fr.ibm.com (unknown [9.101.4.33]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTP; Thu, 17 May 2018 11:58:24 +0100 (BST) From: Laurent Dufour To: akpm@linux-foundation.org, mhocko@kernel.org, peterz@infradead.org, kirill@shutemov.name, ak@linux.intel.com, dave@stgolabs.net, jack@suse.cz, Matthew Wilcox , khandual@linux.vnet.ibm.com, aneesh.kumar@linux.vnet.ibm.com, benh@kernel.crashing.org, mpe@ellerman.id.au, paulus@samba.org, Thomas Gleixner , Ingo Molnar , hpa@zytor.com, Will Deacon , Sergey Senozhatsky , sergey.senozhatsky.work@gmail.com, Andrea Arcangeli , Alexei Starovoitov , kemi.wang@intel.com, Daniel Jordan , David Rientjes , Jerome Glisse , Ganesh Mahendran , Minchan Kim , Punit Agrawal , vinayak menon , Yang Shi Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, haren@linux.vnet.ibm.com, npiggin@gmail.com, bsingharora@gmail.com, paulmck@linux.vnet.ibm.com, Tim Chen , linuxppc-dev@lists.ozlabs.org, x86@kernel.org Subject: [PATCH v11 01/26] mm: introduce CONFIG_SPECULATIVE_PAGE_FAULT Date: Thu, 17 May 2018 13:06:08 +0200 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1526555193-7242-1-git-send-email-ldufour@linux.vnet.ibm.com> References: <1526555193-7242-1-git-send-email-ldufour@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18051711-0008-0000-0000-000004F77970 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18051711-0009-0000-0000-00001E8BEDE3 Message-Id: <1526555193-7242-2-git-send-email-ldufour@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-05-17_05:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1805170100 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: X-Virus-Scanned: ClamAV using ClamSMTP This configuration variable will be used to build the code needed to handle speculative page fault. By default it is turned off, and activated depending on architecture support, ARCH_HAS_PTE_SPECIAL, SMP and MMU. The architecture support is needed since the speculative page fault handler is called from the architecture's page faulting code, and some code has to be added there to handle the speculative handler. The dependency on ARCH_HAS_PTE_SPECIAL is required because vm_normal_page() does processing that is not compatible with the speculative handling in the case ARCH_HAS_PTE_SPECIAL is not set. Suggested-by: Thomas Gleixner Suggested-by: David Rientjes Signed-off-by: Laurent Dufour --- mm/Kconfig | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/mm/Kconfig b/mm/Kconfig index 1d0888c5b97a..a38796276113 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -761,3 +761,25 @@ config GUP_BENCHMARK config ARCH_HAS_PTE_SPECIAL bool + +config ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT + def_bool n + +config SPECULATIVE_PAGE_FAULT + bool "Speculative page faults" + default y + depends on ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT + depends on ARCH_HAS_PTE_SPECIAL && MMU && SMP + help + Try to handle user space page faults without holding the mmap_sem. + + This should allow better concurrency for massively threaded process + since the page fault handler will not wait for other threads memory + layout change to be done, assuming that this change is done in another + part of the process's memory space. This type of page fault is named + speculative page fault. + + If the speculative page fault fails because of a concurrency is + detected or because underlying PMD or PTE tables are not yet + allocating, it is failing its processing and a classic page fault + is then tried.