From patchwork Wed Apr 12 11:57:17 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 749963 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3w32V71m8lz9s8Q; Wed, 12 Apr 2017 21:57:35 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical-com.20150623.gappssmtp.com header.i=@canonical-com.20150623.gappssmtp.com header.b="zeoFApZB"; dkim-atps=neutral Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1cyGtr-0004pO-It; Wed, 12 Apr 2017 11:57:27 +0000 Received: from mail-pg0-f47.google.com ([74.125.83.47]) by huckleberry.canonical.com with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1cyGtn-0004ov-4W for kernel-team@lists.ubuntu.com; Wed, 12 Apr 2017 11:57:23 +0000 Received: by mail-pg0-f47.google.com with SMTP id 21so13896936pgg.1 for ; Wed, 12 Apr 2017 04:57:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id; bh=mau/EtvbD21n++Qq3q2QAX4ZT6yqWMgo5CtTjPbpjJM=; b=zeoFApZB7tpyZScukHeXcJT2CrPZoLWmgzU19ec/IbjEXadspZGFD1B+zZcjGOtk/l MSQCprvXc1kIANPD8ObNiueslxsZhYeHi+5tfe1F54ybLT2HJbb8KQuNJmHTMOKbEa8X 4/9QvYSf6gnPa0IYNtAviazwu/oJ9k2oUQ/eETnw0/ap5s0KbZJ1vNftuv4NvqaOBfMD C5nUikd+YotusnAfVkFsrceWIfgqYq1SfcXNjIJL5SScy2Ock4YJzsllOVkaNLjtXoKx Z5UNI6SP09ajYjT4c9WKjMMtE2UAKL7a+bHwiYlRmhPVBayc2zKw6+08TIV8q/mLHhUL 9dtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=mau/EtvbD21n++Qq3q2QAX4ZT6yqWMgo5CtTjPbpjJM=; b=ZOZ5cPHlZVm2Q1L5x4UpMKgR57n/hHGP6GRNAiboplL6b/Sq8vhRwGHYPzmroxDV34 bu/+aoCIDdIh+LfDofvHj/pJtUB+KANTIJvXKUix+6z0orrnD7VugWGa4pTecFLMQh+s 1uDtHUP/u5SgTKLBAbLFECDW3l4wQ/Mv7N5fscEsMo30EPf2w0D0FdGyUE010VIu7EXE cLv0PjVQBqsx7SHmim3qpzJevJM2jUJ+jy4qIaqr07k+Aeue5pJMWLk/alE5ey0wY4BW 9WP1PhynAbkips5x4aME92ohjUH8KR9IiaQEd5hkgKfZZqDKJ18vaYvShsYxX3Bj/TdY yKrQ== X-Gm-Message-State: AFeK/H2mrMGs1UOTdAAJmLeyQ/kmvQBuGQuPwT3MqEOGS9eLLZIJEt1Odb+QNv51hXWURLf1 X-Received: by 10.99.175.7 with SMTP id w7mr67578684pge.170.1491998241489; Wed, 12 Apr 2017 04:57:21 -0700 (PDT) Received: from localhost.localdomain (host-98-127-250-84.bln-mt.client.bresnan.net. [98.127.250.84]) by smtp.gmail.com with ESMTPSA id f5sm36375437pgn.50.2017.04.12.04.57.20 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 12 Apr 2017 04:57:20 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH X/Y/Z SRU] powerpc/mm: Add missing global TLB invalidate if cxl is active Date: Wed, 12 Apr 2017 05:57:17 -0600 Message-Id: <1491998237-22089-1-git-send-email-tim.gardner@canonical.com> X-Mailer: git-send-email 2.7.4 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: kernel-team-bounces@lists.ubuntu.com From: Frederic Barrat BugLink: http://bugs.launchpad.net/bugs/1681469 Commit 4c6d9acce1f4 ("powerpc/mm: Add hooks for cxl") converted local TLB invalidates to global if the cxl driver is active. This is necessary because the CAPP snoops invalidations to forward them to the PSL on the cxl adapter. However one path was forgotten. native_flush_hash_range() still does local TLB invalidates, as found out the hard way recently. This patch fixes it by following the same logic as previously: if the cxl driver is active, the local TLB invalidates are 'upgraded' to global. Fixes: 4c6d9acce1f4 ("powerpc/mm: Add hooks for cxl") Cc: stable@vger.kernel.org # v3.18+ Signed-off-by: Frederic Barrat Reviewed-by: Aneesh Kumar K.V Signed-off-by: Michael Ellerman (cherry picked from commit 88b1bf7268f56887ca88eb09c6fb0f4fc970121a) Signed-off-by: Tim Gardner Acked-by: Colin Ian King --- arch/powerpc/mm/hash_native_64.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/mm/hash_native_64.c b/arch/powerpc/mm/hash_native_64.c index cc33260..65bb8f3 100644 --- a/arch/powerpc/mm/hash_native_64.c +++ b/arch/powerpc/mm/hash_native_64.c @@ -638,6 +638,10 @@ static void native_flush_hash_range(unsigned long number, int local) unsigned long psize = batch->psize; int ssize = batch->ssize; int i; + unsigned int use_local; + + use_local = local && mmu_has_feature(MMU_FTR_TLBIEL) && + mmu_psize_defs[psize].tlbiel && !cxl_ctx_in_use(); local_irq_save(flags); @@ -667,8 +671,7 @@ static void native_flush_hash_range(unsigned long number, int local) } pte_iterate_hashed_end(); } - if (mmu_has_feature(MMU_FTR_TLBIEL) && - mmu_psize_defs[psize].tlbiel && local) { + if (use_local) { asm volatile("ptesync":::"memory"); for (i = 0; i < number; i++) { vpn = batch->vpn[i];