From patchwork Tue Jul 3 01:31:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 10502769 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 561F860325 for ; Tue, 3 Jul 2018 01:32:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 332F528178 for ; Tue, 3 Jul 2018 01:32:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0FD1A28429; Tue, 3 Jul 2018 01:32:08 +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=-3.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, 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 8979328178 for ; Tue, 3 Jul 2018 01:32:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 46E3A6B02A9; Mon, 2 Jul 2018 21:32:06 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 3F4A16B02AA; Mon, 2 Jul 2018 21:32:06 -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 2973E6B02AB; Mon, 2 Jul 2018 21:32:06 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl0-f69.google.com (mail-pl0-f69.google.com [209.85.160.69]) by kanga.kvack.org (Postfix) with ESMTP id D57BD6B02A9 for ; Mon, 2 Jul 2018 21:32:05 -0400 (EDT) Received: by mail-pl0-f69.google.com with SMTP id d6-v6so251658plo.15 for ; Mon, 02 Jul 2018 18:32:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id; bh=8ZkQTYbAHvbBOZ2dp2I+KNsXM7NMsvskM3Ik++rX5BA=; b=qg9JcOeJngQMsr3Tolm/zm1ch8czohvpBrmTH7iG+m+ScRG2Mbbd32C84VpINIVmcp R6Am2HiIRL+HYwmQtVdHWPvEBb+XDRE3FY8plvUd8T4o7eQv00LYdlT9Jg1lOFFydauW ZyQs7UMWtcMno+up9ifRfu1vOsjcSff8aA3Nd7y4XHMlngqUxMqWOJBI5b3ZKSA3eszI l5xV6Th+nAEMqaiYyMZOgCMFtgCTqZbliGPfwemdgUMRL3sFegNkoRplpfnea/y+omZT 7u396e2XpuucaF4BioGSbQPCFru1a53p629hKTGdf1hPzjxGT7o0s3pggFeaznFoBFT+ abrA== X-Gm-Message-State: APt69E0npjShN7vVcSDkWgv4ag54JlPy94cYHhPc29dpvd3Mw3Z8+dPA 5CfLzA5GLJZW5KcwX0727Eyp5xoTEVlGSLBkDgoNv1xd5UlDFnKbyED8ShHgemUozg9JEunn2Jh mb/5RAKrB5y8nrL/D84+phSByxDQv3iP6AJw1Y69VH2GjxKXp0sKB4jru0BsRxNkDBtwWABjxqB x0SNvHCUHV+BUMQHPaqm4pdPYOaK2ZLzk96j9eIrC5F7RUR5Qv4fY/ETp4wPsGO4dq8VwXBsS4l 2kkxdHdkpR78MfWtHkYGBH1cBmzvkRMYhxZllOWJ1H+cdUuAScmvs8gy/ywHxYZxl9/YG+zkhhV 1TymEZF6fpZ1oKr4Qag4hi9ly0GpDy0t1Dk13Tu1VZ08gln97IZudCUlZF1PKJpJY14SImzE/Ka 2 X-Received: by 2002:a62:6eca:: with SMTP id j193-v6mr8159641pfc.256.1530581525534; Mon, 02 Jul 2018 18:32:05 -0700 (PDT) X-Received: by 2002:a62:6eca:: with SMTP id j193-v6mr8159599pfc.256.1530581524703; Mon, 02 Jul 2018 18:32:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530581524; cv=none; d=google.com; s=arc-20160816; b=DRwbiCw9phpgI/mc4VAipWMUI5duskDRK2nMEXML6uhAnrumFEQQgva6zO/hkiRM10 lbV83GMDHblguYtrlMl46SYZLFotxiGP5kdGKM03JwmC8myp/9HFB4foj2+Q4KPRMtSe /CPLBg5vA/ieSZwPnd3BORQPPiJ9GPSR1qwt4BMEPv+jOWs8mkCvi2uWwFcGzxhtu+b2 R7CAaFNBrO20gokMdMCrEHedcQFaDjrPJG+VXX3DtSjzlc5Yu5tWvjMoTW6TD0yIjCAN XIR4VH4nDSzTq4L/4UA+zaD+U3IMg0tu3soyKsE/wOASxtjagAFdES8fGn6jSvQgC+qe eZfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=8ZkQTYbAHvbBOZ2dp2I+KNsXM7NMsvskM3Ik++rX5BA=; b=Gom3/8A2eUq1UTl0nbFu+MKVqb20Xme5BoKIO6D1VNTj0AaZk1aYJf8QoU0uH6fajV HYYwm3i8lGv7B/Djo0eJR3e3zlxoGZoCDkIWlf3amqHEUfwTi+9pmKWbNfkqtRxGG61Z T4dnWnCWfWy4jMGyApN78b69piyQAs/Dw7LGgryNoQZkvIX9P//P55tNH5Wxf5P3UBPw wTihmzqCilrYa95IZ4/GHJ8v6nOvz69gGR90EmgMqn5cH31JPG1z9yyMmS8gp2ulApUr rH3BFg++yU9Cldh+o3rWcHYPt+2+FOPd1tXjqS7+NPwdMBIpfsp5sW7hI59HOcUDAUap mzcQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=da6PrpNU; spf=pass (google.com: domain of npiggin@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=npiggin@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id bc12-v6sor5436556plb.85.2018.07.02.18.32.04 for (Google Transport Security); Mon, 02 Jul 2018 18:32:04 -0700 (PDT) Received-SPF: pass (google.com: domain of npiggin@gmail.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=da6PrpNU; spf=pass (google.com: domain of npiggin@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=npiggin@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=8ZkQTYbAHvbBOZ2dp2I+KNsXM7NMsvskM3Ik++rX5BA=; b=da6PrpNUif1UaiSM2/msyD0qeaX3sgclEe1yzVk6aa/WmSpfDOZtNzfu8pDIC6pW6h 2TD4pzWSHx3JpZiRkuB3Tdaaec3tWHOqoYVZdWLiAlSMklcI5+k3szwrBue4CxB3dr6B nPc/JFW7DSvn+w4eU7Gin7s9BqWGenUJTfWjmA2bMYEHlAPctjJTEeyynj+5wMneodSX GBZ+i34BRIwqnqXhruLrhFsHeM34LQUdkp7jOcNY21rOD3ZewR3w71yCzSoPHQzJqu5D X/eFIplJvT0Ap2dVSwkt9PVVPbzZW3bdYRks+FuJ4VUREtA7l0o+K0JXJgS92DfjtNmP zTVw== X-Google-Smtp-Source: ADUXVKIud669oCDAuO5kdPrc3ie23uerXdM0qRMOTcI2gWts97iJsiDWar3KywJ2tW1F9+LyGlZtgg== X-Received: by 2002:a17:902:7202:: with SMTP id ba2-v6mr27427328plb.119.1530581524343; Mon, 02 Jul 2018 18:32:04 -0700 (PDT) Received: from roar.au.ibm.com ([203.47.94.18]) by smtp.gmail.com with ESMTPSA id g23-v6sm22931913pgv.26.2018.07.02.18.31.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Jul 2018 18:32:03 -0700 (PDT) From: Nicholas Piggin To: Linus Torvalds Cc: Nicholas Piggin , linux-mm , ppc-dev , linux-arch , "Aneesh Kumar K. V" , Minchan Kim , Mel Gorman , Nadav Amit , Andrew Morton Subject: [PATCH] mm: allow arch to supply p??_free_tlb functions Date: Tue, 3 Jul 2018 11:31:31 +1000 Message-Id: <20180703013131.2807-1-npiggin@gmail.com> X-Mailer: git-send-email 2.17.0 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 The mmu_gather APIs keep track of the invalidated address range including the span covered by invalidated page table pages. Ranges covered by page tables but not ptes (and therefore no TLBs) still need to be invalidated because some architectures (x86) can cache intermediate page table entries, and invalidate those with normal TLB invalidation instructions to be almost-backward-compatible. Architectures which don't cache intermediate page table entries, or which invalidate these caches separately from TLB invalidation, do not require TLB invalidation range expanded over page tables. Allow architectures to supply their own p??_free_tlb functions, which can avoid the __tlb_adjust_range. Signed-off-by: Nicholas Piggin --- Just wanted your ack/nack on this approach, I just tidied the patch and re-did the changelog. We left off with you wondering if overriding __tlb_adjust_range for page tables would be the better option, but I couldn't see any real benefit over this way. Actually I think this is cleaner, powerpc will simply switch the name of its function from __pte_free_tlb to pte_free_tlb to take over the tlb management for it. And is this something that you'd merge at this point of the cycle, so that arch changes for next window won't include generic code changes or have cross tree dependencies? Thanks, Nick include/asm-generic/tlb.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h index faddde44de8c..3063125197ad 100644 --- a/include/asm-generic/tlb.h +++ b/include/asm-generic/tlb.h @@ -265,33 +265,41 @@ static inline void tlb_remove_check_page_size_change(struct mmu_gather *tlb, * For now w.r.t page table cache, mark the range_size as PAGE_SIZE */ +#ifndef pte_free_tlb #define pte_free_tlb(tlb, ptep, address) \ do { \ __tlb_adjust_range(tlb, address, PAGE_SIZE); \ __pte_free_tlb(tlb, ptep, address); \ } while (0) +#endif +#ifndef pmd_free_tlb #define pmd_free_tlb(tlb, pmdp, address) \ do { \ __tlb_adjust_range(tlb, address, PAGE_SIZE); \ __pmd_free_tlb(tlb, pmdp, address); \ } while (0) +#endif #ifndef __ARCH_HAS_4LEVEL_HACK +#ifndef pud_free_tlb #define pud_free_tlb(tlb, pudp, address) \ do { \ __tlb_adjust_range(tlb, address, PAGE_SIZE); \ __pud_free_tlb(tlb, pudp, address); \ } while (0) #endif +#endif #ifndef __ARCH_HAS_5LEVEL_HACK +#ifndef p4d_free_tlb #define p4d_free_tlb(tlb, pudp, address) \ do { \ __tlb_adjust_range(tlb, address, PAGE_SIZE); \ __p4d_free_tlb(tlb, pudp, address); \ } while (0) #endif +#endif #define tlb_migrate_finish(mm) do {} while (0)