Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp1548838ybl; Fri, 23 Aug 2019 23:08:27 -0700 (PDT) X-Google-Smtp-Source: APXvYqz8sdNSEw/GnGcLQtJ3BCMpjwd71hVrh00unC8d3+PUQGl6xliGD2ACRCWvcMzMKScUKfKt X-Received: by 2002:a63:d04e:: with SMTP id s14mr6718869pgi.189.1566626907566; Fri, 23 Aug 2019 23:08:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566626907; cv=none; d=google.com; s=arc-20160816; b=lZxzFmfufLWgIGSc96ZqQwFoSDJ4FGY2uf8M9Lwuy6B55RlhljEJ0xGLJ444s8Qd80 hgfE6jBt5A3fzGabaFbWKwn0Nkg6iY9gGQZcI5TKk5E82XP9TqvFghJJfr7LmKO3c+F2 3SX557Ksm69mK01mVsFWcEjamF42S55JTg7v+q1DFr3prmq9oOTZ30wwjqFrsAc5RC7i sFFqKZL7/Wb88HeY48NRdiGP2NizaTPfmx5szOA7qykLvEFxH6sxJOmVkS5PA8oYF+dp +Q09eeavYcDj1CEt6h0gyMxOwDHylqMZpgPCsj0b5TPHC7dQSDnjXf3TXe5UnRWt0i39 ft2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=kpBC9wVD3rWh02xV0sYdIYiu+PcR9z84eXUvsLd6pJ0=; b=cHIqYyLUuR/+6UqMp2d4jawoeTDvGsGO+d0BsN6iRo69vudwKWq/dcIk9FKEM+QiM3 HjWj0w9q1UrytJP88v0epRb6+91libt3rdiAODG6IbAyMXkLsWDE/NhrWS1mxYzg1oah DqlSGJDQxJP5DWHDOlp1r+gL0iKqfFBaj5UkuX3ZxnoSd6T1QWhzE1yJGjqP513MUrQU WfhABA2nvt4cvZEfY8QMGB4wEqO/HsuxObbKBrDPfPhHTTPekEKXaG1sfPdnMZP2H1EE hdkqHxC0cJUB+mz7wxNNh7do65svAoxJ4QbaU8PlVRzGDrn6p56/pWrONu+MMz0Z8I96 DhRg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o93si4160457pje.38.2019.08.23.23.08.12; Fri, 23 Aug 2019 23:08:27 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726385AbfHXGHX (ORCPT + 99 others); Sat, 24 Aug 2019 02:07:23 -0400 Received: from mail-pg1-f195.google.com ([209.85.215.195]:40931 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725616AbfHXGHW (ORCPT ); Sat, 24 Aug 2019 02:07:22 -0400 Received: by mail-pg1-f195.google.com with SMTP id w10so7057956pgj.7 for ; Fri, 23 Aug 2019 23:07:22 -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; bh=kpBC9wVD3rWh02xV0sYdIYiu+PcR9z84eXUvsLd6pJ0=; b=A95/set1lK6zgiSVEZFrxIAF/wa8YZej9zk3uH8FgR1b3Qthgx5FwmnC2Erp7mcFu6 Z3WTq3gEL7PAE7Jge8ATlCewfUZ1K6WpnJiF0Wktek4Wk7OkDdRkb5ZMAlbySqoJi50J 1T1b+ettDvLFdeqwWO4ur0BgMgxqgc9rS3o01F+0JpToXup7ab5QOmNyMLYl1Txn7ZWQ sIOAaHJpZM5OovOsHaG1Xs/O9YoMiVO/hOO2+DHiZWpVS1hHrv1QS1R4M29jCITXWBpa UsS+I75Y+sxmxqemAmUzYkssji+H6QE01DE5AJVZ09m/R7fUCvP1R1q8TYSBoDtzT2ga h1mA== X-Gm-Message-State: APjAAAXwSPgE07q5oI3VbVMNY80qRYWkCM1ACM5ykWgJxzWAIWWO0KMP FEYH+kdWToXFbPgYklZ7RhA= X-Received: by 2002:a65:5a8c:: with SMTP id c12mr6905826pgt.73.1566626841751; Fri, 23 Aug 2019 23:07:21 -0700 (PDT) Received: from sc2-haas01-esx0118.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id d12sm4951187pfn.11.2019.08.23.23.07.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Aug 2019 23:07:21 -0700 (PDT) From: Nadav Amit To: Andy Lutomirski , Dave Hansen Cc: x86@kernel.org, linux-kernel@vger.kernel.org, Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Nadav Amit Subject: [RFC PATCH 0/3] x86/mm/tlb: Defer TLB flushes with PTI Date: Fri, 23 Aug 2019 15:46:32 -0700 Message-Id: <20190823224635.15387-1-namit@vmware.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org INVPCID is considerably slower than INVLPG of a single PTE, but it is currently used to flush PTEs in the user page-table when PTI is used. Instead, it is possible to defer TLB flushes until after the user page-tables are loaded. Preventing speculation over the TLB flushes should keep the whole thing safe. In some cases, deferring TLB flushes in such a way can result in more full TLB flushes, but arguably this behavior is oftentimes beneficial. These patches are based and evaluated on top of the concurrent TLB-flushes v4 patch-set. I will provide more results later, but it might be easier to look at the time an isolated TLB flush takes. These numbers are from skylake, showing the number of cycles that running madvise(DONTNEED) which results in local TLB flushes takes: n_pages concurrent +deferred-pti change ------- ---------- ------------- ------ 1 2119 1986 -6.7% 10 6791 5417 -20% Please let me know if I missed something that affects security or performance. [ Yes, I know there is another pending RFC for async TLB flushes, but I think it might be easier to merge this one first ] Nadav Amit (3): x86/mm/tlb: Defer PTI flushes x86/mm/tlb: Avoid deferring PTI flushes on shootdown x86/mm/tlb: Use lockdep irq assertions arch/x86/entry/calling.h | 52 +++++++++++++++++++-- arch/x86/include/asm/tlbflush.h | 31 ++++++++++-- arch/x86/kernel/asm-offsets.c | 3 ++ arch/x86/mm/tlb.c | 83 +++++++++++++++++++++++++++++++-- 4 files changed, 158 insertions(+), 11 deletions(-) -- 2.17.1