From patchwork Tue May 22 12:00:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Dufour X-Patchwork-Id: 10418257 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 2FCF760545 for ; Tue, 22 May 2018 12:01:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 204C728C49 for ; Tue, 22 May 2018 12:01:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 14B0328C61; Tue, 22 May 2018 12:01:02 +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=unavailable 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 A516028C49 for ; Tue, 22 May 2018 12:01:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 512836B0284; Tue, 22 May 2018 08:01:00 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 4C0616B0285; Tue, 22 May 2018 08:01:00 -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 3617E6B0286; Tue, 22 May 2018 08:01:00 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-wr0-f199.google.com (mail-wr0-f199.google.com [209.85.128.199]) by kanga.kvack.org (Postfix) with ESMTP id CB9E96B0284 for ; Tue, 22 May 2018 08:00:59 -0400 (EDT) Received: by mail-wr0-f199.google.com with SMTP id 44-v6so14043628wrt.9 for ; Tue, 22 May 2018 05:00:59 -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=iaJ+HffG2+BsqHYRlKhRaebW2QzeilKK6Y1lX+tSdnk=; b=bMLs7AsTflkHTALm18iCP1Ahi7nzQYYGkTqHhSLCK3/7vfIG6L6Gn3fiW4PYqGaB3p OEnIvSLXdqBebwLeFPmPgMD5FM2EZtY9K6gUZ4tHam2VDnyd6/e0U4aw41atA/xt69Z/ 2MDR1U8NabmRMbdQHKQAJ8FVjQQLdiyIrNJZvRHGyrMnVkbuUh8AcokKLvTfzYjBvyHD rMdFaHKjruB1Zc+HjrDObAQK7nFB9HMDYVliUauwdIhAZ1hhvkWCI3DNoEkAlyjmpTUh +gsc2HERtpRvBMe2AxwjrKh09zg+7c0VpiSXvSI29DfIU1ft/cvLx2l5PsaJAfPOWOHv V88A== X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 148.163.158.5 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: ALKqPwcd7trBfyFGBoYgOpkE0yXsKX178UkPIBHjct7qLdPqoSnES9kT 1cMEOjAjMRI4Cu1AnhcTPwQrafIzaveHUey9UaeHZ9gqxuIRSs5NqMoG6FYi0gMUKo9bE3a8x+W EK8UEmtjKeu2eSiCVzosraBo50nSrQRHLC0l7DvWriDYolol8K/KokknKMlDeCh8= X-Received: by 2002:a1c:c6ca:: with SMTP id w193-v6mr980563wmf.68.1526990459366; Tue, 22 May 2018 05:00:59 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrompZjTxKYhTE622S9HUIqODpH5a8zh4yy+9UvfbZqgWDb0JKqo8f0iY2YHoB/ZLN3Sppw X-Received: by 2002:a1c:c6ca:: with SMTP id w193-v6mr980516wmf.68.1526990458513; Tue, 22 May 2018 05:00:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526990458; cv=none; d=google.com; s=arc-20160816; b=WibizmfUD6IseIOOHCw6KJFm3NBo15k2c+F4HrnIUjXd2qt1d74b72Wdm2dH3zYz1I X3cwQJoh3tPbPbFBdJIDPrdA+d0AJE0If2mYUI68fLcwc/kXJ3RRe5kz4sNVuoIuAews SH2Tuvn0OMYB94hcQ31khu747NfQRSo0gufgoq8HRORZz3LeEsDMNhJlflmEfjXxUchk WDaAQFymYX9hxTar06Rh+uhXPxDVXGRRDkFdMFRdn49grqqaBRWVzUn45nATIMq5WLwn gwUm/ASLERjJHgboge6BVpUs1b9ztt+MQMDlzesOkamnWnuPREKAZ8YcQ+3rxZYhyaCO qk+g== 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=iaJ+HffG2+BsqHYRlKhRaebW2QzeilKK6Y1lX+tSdnk=; b=wUvsOPf2YdqetAr4SUUV4bnhU8kHC/2+0zlwU2x4IgOfgOVBitYlTTAK6oZvoq+dcL pxtB2KMN9QmEy6tVZq4lOcUwCp+P6pIOceWe++hD685j43UA18TB+hpySTA9QtLer2fW 9o77dMMZd/w+0VVVDANgyarqMVmygLA70fUQqk7sHLBORFLYzUSiwFRErZREo6hm5uIM WuD4oHee5d+OLQ8oTQeJDt651WALmRh8ElFF9CFNCf3iMxTkokR7eq0RpGqzp+cqMZCc VizBwdRGOdNyp+Z4ftpA2anBnHKL11hfQ0zPpvuwae46kSaToMo0z6/act8a+4r19QeY Qxew== ARC-Authentication-Results: i=1; mx.google.com; spf=neutral (google.com: 148.163.158.5 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 (mx0b-001b2d01.pphosted.com. [148.163.158.5]) by mx.google.com with ESMTPS id i44-v6si13847294wri.4.2018.05.22.05.00.58 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 May 2018 05:00:58 -0700 (PDT) Received-SPF: neutral (google.com: 148.163.158.5 is neither permitted nor denied by best guess record for domain of ldufour@linux.vnet.ibm.com) client-ip=148.163.158.5; Authentication-Results: mx.google.com; spf=neutral (google.com: 148.163.158.5 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 (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w4MBwrui102862 for ; Tue, 22 May 2018 08:00:57 -0400 Received: from e06smtp14.uk.ibm.com (e06smtp14.uk.ibm.com [195.75.94.110]) by mx0b-001b2d01.pphosted.com with ESMTP id 2j4grjnvvs-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 22 May 2018 08:00:56 -0400 Received: from localhost by e06smtp14.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 22 May 2018 13:00:54 +0100 Received: from b06cxnps4074.portsmouth.uk.ibm.com (9.149.109.196) by e06smtp14.uk.ibm.com (192.168.101.144) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 22 May 2018 13:00:45 +0100 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w4MC0jcb6226364; Tue, 22 May 2018 12:00:45 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EB6F04C06A; Tue, 22 May 2018 12:52:26 +0100 (BST) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 94AFD4C04E; Tue, 22 May 2018 12:52:25 +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; Tue, 22 May 2018 12:52:25 +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 , Randy Dunlap 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: [FIX PATCH v11 01/26] mm: introduce CONFIG_SPECULATIVE_PAGE_FAULT Date: Tue, 22 May 2018 14:00:43 +0200 X-Mailer: git-send-email 2.7.4 In-Reply-To: References: X-TM-AS-GCONF: 00 x-cbid: 18052212-0044-0000-0000-00000555269A X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18052212-0045-0000-0000-00002896B399 Message-Id: <1526990443-30309-1-git-send-email-ldufour@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-05-22_03:, , 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-1805220141 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..d958fd8ce73a 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 processes + since the page fault handler will not wait for other thread's 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 a concurrent modification + is detected or because underlying PMD or PTE tables are not yet + allocated, the speculative page fault fails and a classic page fault + is then tried.