Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp7096266imu; Mon, 3 Dec 2018 07:42:02 -0800 (PST) X-Google-Smtp-Source: AFSGD/VuH/BSJPKpL6I+Iseh5si5yCtrFqMhnGC7uOAC1QFR3X0Ze+Et9GfnkhN6cZwlIl8lTSfT X-Received: by 2002:a62:44d8:: with SMTP id m85mr16576919pfi.164.1543851722886; Mon, 03 Dec 2018 07:42:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543851722; cv=none; d=google.com; s=arc-20160816; b=uvdbyZ0WcfIo/KaBSeUkWUN103i+gdt3ISUqeqG+yaAwMNsJ4p/T6DdsY5Nt9fgV3B Wy438PAJ+W4PAMGwvQmTjW2TFIk9wC6gCtzuqbp0tHU6qxbsI5gp69RGJbkm9ZWBDwuZ VoKBS9GST1unSRAP/w5F3Zlfo9CV94JrKIQyhlOKMw/d2JApUd0VudxM0OE3Z5rLZUbx 7nCa9tKH0mH3tZyhkePVmwtaumgvGAX35q3hbKDpsiwf0jh2QAnOZvEYBRI4bG3vVK+7 JOQOjc3sqa6zwj3A2XNBb/MjFnfbW7BR+5ggHK61OhMnL+I/JPBFUu+AsK80kNXyIdCp ORNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=izBmKq96eItOJxUT9EkHBodHRiNUEfEnzS9ETYchqNI=; b=ctZ22FpKMgEoM8OaJcqp4XWTt/re0vHS3yXyZMogNgRac19g0V6+KwcM8PilFIPSze jSLG2aheAkgOc1426fvQU3EpN/ocVU7VwFm24S+8J3pqSF7/HSWU5/yA69rmMvZAQP/V 7WIwX8rEaYeyrUOri6KE4IJhEPcZVha04sWStmrkSoly4GcyRmqbnnQw/EfVkd8G4qqq ipWier2ZPo05AcSb7pRL6FHU4r2YdGK4/UopkDqa8BIZrT5GLwQqeeVwF4+lUfhawWlH TtlHh9Rv2/uWI2y/PcSwjkctFUwcNttMD1xd6xn+OBC889icPy49GnfnedzPe4QjWo5D gAPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b="BlPjJk/C"; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t69si13203728pgb.365.2018.12.03.07.41.48; Mon, 03 Dec 2018 07:42:02 -0800 (PST) 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; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b="BlPjJk/C"; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726785AbeLCPlM (ORCPT + 99 others); Mon, 3 Dec 2018 10:41:12 -0500 Received: from bombadil.infradead.org ([198.137.202.133]:43290 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726612AbeLCPlL (ORCPT ); Mon, 3 Dec 2018 10:41:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=izBmKq96eItOJxUT9EkHBodHRiNUEfEnzS9ETYchqNI=; b=BlPjJk/C/Bzo7BesLsY4V836r NBIu0BnMlGc43g6qatUz/xQo7vh3ok6ZO0yS3vQP4PL/QvSEWt6VXUQewBDG29Qxod9gg0cSdEPTr KJpf2ON3mH74Q7/YuqW73Uz4WvyZ20s2nfz2qCCbxHGwuvFD2T4bc6/O5LevifC4bq5rVjhrEGHde z7248/duNlTn0wGRIlJK8q442BMMAK74MQ3/C+VSG5ePFp8fqQC+zB0NXHIseK9SYmJVaJ07eA0/d b5HHNusdyVDoxclVvgF/GNfIhpFi0mb0YMdyAR0vn86xkrc2bVDK8KBmdNkCIoa77xItN5vu7LM5a 4m/9iqNtg==; Received: from j217100.upc-j.chello.nl ([24.132.217.100] helo=hirez.programming.kicks-ass.net) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1gTqLI-0004AH-TJ; Mon, 03 Dec 2018 15:41:05 +0000 Received: by hirez.programming.kicks-ass.net (Postfix, from userid 1000) id 6A0D62029FD58; Mon, 3 Dec 2018 16:41:02 +0100 (CET) Date: Mon, 3 Dec 2018 16:41:02 +0100 From: Peter Zijlstra To: "StDenis, Tom" Cc: "Koenig, Christian" , "dave.hansen@intel.com" , "luto@kernel.org" , "x86@kernel.org" , "linux-kernel@vger.kernel.org" , "Deucher, Alexander" Subject: Re: [PATCH 0/4] x86/mm/cpa: Fix cpa-array TLB invalidation Message-ID: <20181203154102.GI11614@hirez.programming.kicks-ass.net> References: <20181130134455.490139778@infradead.org> <20181130150959.GA11614@hirez.programming.kicks-ass.net> <9b172efa-0279-0a39-0b6b-7cf3492d326d@amd.com> <20181130152347.GB11614@hirez.programming.kicks-ass.net> <20181130153128.GB11650@hirez.programming.kicks-ass.net> <8ee4e546-4680-e463-23ac-64489a60b946@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8ee4e546-4680-e463-23ac-64489a60b946@amd.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Nov 30, 2018 at 04:19:46PM +0000, StDenis, Tom wrote: > NAK I get a failure in TTM on init with your x86/mm branch (see attached > dmesg). So the good news is that with some additional self-tests I can trivially reproduce this. The bad news is that an otherwise straight forward cleanup seems to make CPA horribly mad at me. And since we're somewhat late in the release cycle, I suppose we should do the simple thing first, and then I can try and figure out this CPA mess later. So how about this relatively simple partial revert to sort the problem. --- Subject: x86/mm/cpa: Fix cpa_flush_array() TLB invalidation In commit: a7295fd53c39 ("x86/mm/cpa: Use flush_tlb_kernel_range()") I misread the cpa array code and incorrectly used tlb_flush_kernel_range(), resulting in missing TLB flushes and consequent failures. Instead do a full invalidate in this case -- for now. Fixes: a7295fd53c39 ("x86/mm/cpa: Use flush_tlb_kernel_range()") Reported-by: "StDenis, Tom" Signed-off-by: Peter Zijlstra (Intel) --- arch/x86/mm/pageattr.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index bac35001d896..61bc7d1800d7 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c @@ -285,20 +285,16 @@ static void cpa_flush_all(unsigned long cache) on_each_cpu(__cpa_flush_all, (void *) cache, 1); } -static bool __cpa_flush_range(unsigned long start, int numpages, int cache) +static bool __inv_flush_all(int cache) { BUG_ON(irqs_disabled() && !early_boot_irqs_disabled); - WARN_ON(PAGE_ALIGN(start) != start); - if (cache && !static_cpu_has(X86_FEATURE_CLFLUSH)) { cpa_flush_all(cache); return true; } - flush_tlb_kernel_range(start, start + PAGE_SIZE * numpages); - - return !cache; + return false; } static void cpa_flush_range(unsigned long start, int numpages, int cache) @@ -306,7 +302,14 @@ static void cpa_flush_range(unsigned long start, int numpages, int cache) unsigned int i, level; unsigned long addr; - if (__cpa_flush_range(start, numpages, cache)) + WARN_ON(PAGE_ALIGN(start) != start); + + if (__inv_flush_all(cache)) + return; + + flush_tlb_kernel_range(start, start + PAGE_SIZE * numpages); + + if (!cache) return; /* @@ -332,7 +335,12 @@ static void cpa_flush_array(unsigned long baddr, unsigned long *start, { unsigned int i, level; - if (__cpa_flush_range(baddr, numpages, cache)) + if (__inv_flush_all(cache)) + return; + + flush_tlb_all(); + + if (!cache) return; /*