Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp1417472ybi; Sat, 25 May 2019 01:23:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqxoUQGI0D9PpT9HVLCaHKsmXkCPIJYVk4Nh/XSvoIy3tAcSUOZ/Wx8RTElE6hZk55ov9l2G X-Received: by 2002:a17:90a:658b:: with SMTP id k11mr14780046pjj.44.1558772625215; Sat, 25 May 2019 01:23:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558772625; cv=none; d=google.com; s=arc-20160816; b=Zv7jvBG09f07c2FeQGyqPzWMSvtQnm+UdiPJIg7uPzThALKtxWHkKSSG6q+BxQTOom ZqgbuemMpIPXuJlQHe5yA3X4JFMZZ/SCBfxWoCff6b8Rxlc0LsQMnO51EgSgh7fd7aGX aOAz7uHAA/oRL90FcTDevrPzYo7esNJTyfnOv0fLvzR0qL19zf+AlpKgyHn24Bo9s/8j Vs83rtfT3N/cuePgUWqX2DayKzm4vUQ9tLbpYpBbgik1jRdcR6yFvBnTT3qNqza/ESDT CFPall6f/j3d8J/SCEGrlrCvQaaWCNsDfYwr9hHKUhUN7XLZjAI+mJ+PNLx5Q+bccvy2 Mv0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=KxvDSzvtNEWdEUkc6HpajEPlbrvUmMxVlIB1+bEziXQ=; b=kjLmDrrT6CTq8Oz3TG72bZb/HDyYtYZzBoPsblO4wufnRkAh8ZXUClaQ6I7i5RV6Np WJnGlef07JCr3EOj1AW74XOiLm7qRp8pXiVeltlau61uyrpyBeIouR2Dimkn/U2GYtBP v5DSl6YV9UDp5xxW5F4g9sOkB5YUnoWfpP0UOHmipw2ZXIsPyzUeEiAb0WoFKxP6gj8L 3H2Q9YY/5Un3ICffMXLBNfSNS7EuoEeUK/zSWnlXxdqkeU2yMUYTClL842ZsiTDfucud 9V5RDm3EDl72cv/d0hjf78fTjHegKVadgdQ1a2V9QxZ1WH/y6JnlQxERnWvi6kWFG03T OkxA== 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 f1si7465949pgi.432.2019.05.25.01.23.30; Sat, 25 May 2019 01:23:45 -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 S1726443AbfEYIWT (ORCPT + 99 others); Sat, 25 May 2019 04:22:19 -0400 Received: from mail-pg1-f196.google.com ([209.85.215.196]:38227 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726687AbfEYIWQ (ORCPT ); Sat, 25 May 2019 04:22:16 -0400 Received: by mail-pg1-f196.google.com with SMTP id v11so6321355pgl.5 for ; Sat, 25 May 2019 01:22:16 -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=KxvDSzvtNEWdEUkc6HpajEPlbrvUmMxVlIB1+bEziXQ=; b=uFJvekaGrVV3Oih6yokZ0Vahjn0f+BkXJ8WMAH7eXtTEyh1dHIyRowrXKhW/g4dFsE EHi8c3wOrygcjwv2UDDEAKddDSbKL5kS3GCmSRaKEnN3txwiDA3Em5IzGbxQMm0qjvGT MZhMUueXUhF43pT7Brb2GP7ifcV/cMdk8+kyh6vF3v40pxpUCDtc8hoEpvjFqSwgqE1S ddn3uowYC3jl1WEZlsq6eXbazzt14rTKOtXzrmvAEtcIcjTSXD57eIvo94i4T2s5jHYC 1yjRUwDNItg7TqvkRzVcNp5wnRG8g9b/Nt8+8cPwlLFdqEu3StmF4L9em2NW8Sh57vZQ PgqA== X-Gm-Message-State: APjAAAWFn6qJwrae5lJSM0nqgg7/chInxUPM1JDpp3z9OfuTB+/tQysX ircvAw7Qhn2fLv9YuRxSXh7zlpvpMOMQ/g== X-Received: by 2002:a63:5516:: with SMTP id j22mr106600854pgb.370.1558772535770; Sat, 25 May 2019 01:22:15 -0700 (PDT) Received: from htb-2n-eng-dhcp405.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id e4sm1438505pgi.80.2019.05.25.01.22.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 May 2019 01:22:14 -0700 (PDT) From: Nadav Amit To: Ingo Molnar , Peter Zijlstra , Andy Lutomirski Cc: Borislav Petkov , linux-kernel@vger.kernel.org, Nadav Amit , Dave Hansen , Thomas Gleixner , x86@kernel.org Subject: [RFC PATCH 6/6] x86/mm/tlb: Optimize local TLB flushes Date: Sat, 25 May 2019 01:22:03 -0700 Message-Id: <20190525082203.6531-7-namit@vmware.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190525082203.6531-1-namit@vmware.com> References: <20190525082203.6531-1-namit@vmware.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org While the updated smp infrastructure is capable of running a function on a single local core, it is not optimized for this case. The multiple function calls and the indirect branch introduce some overhead, making local TLB flushes slower than they were before the recent changes. Before calling the SMP infrastructure, check if only a local TLB flush is needed to restore the lost performance in this common case. This requires to check mm_cpumask() another time, but unless this mask is updated very frequently, this should impact performance negatively. Cc: Dave Hansen Cc: Andy Lutomirski Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: x86@kernel.org Signed-off-by: Nadav Amit --- arch/x86/mm/tlb.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index 0ec2bfca7581..3f3f983e224e 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c @@ -823,8 +823,12 @@ static void flush_tlb_on_cpus(const cpumask_t *cpumask, const struct flush_tlb_info *info) { int this_cpu = smp_processor_id(); + bool flush_others = false; - if (static_branch_likely(&flush_tlb_multi_enabled)) { + if (cpumask_any_but(cpumask, this_cpu) < nr_cpu_ids) + flush_others = true; + + if (static_branch_likely(&flush_tlb_multi_enabled) && flush_others) { flush_tlb_multi(cpumask, info); return; } @@ -836,7 +840,7 @@ static void flush_tlb_on_cpus(const cpumask_t *cpumask, local_irq_enable(); } - if (cpumask_any_but(cpumask, this_cpu) < nr_cpu_ids) + if (flush_others) flush_tlb_others(cpumask, info); } -- 2.20.1