From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752450AbdLAPtr (ORCPT ); Fri, 1 Dec 2017 10:49:47 -0500 Received: from mail.kernel.org ([198.145.29.99]:56818 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751712AbdLAPtP (ORCPT ); Fri, 1 Dec 2017 10:49:15 -0500 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 30517219AE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=goodmis.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=rostedt@goodmis.org Message-Id: <20171201154913.211774599@goodmis.org> User-Agent: quilt/0.63-1 Date: Fri, 01 Dec 2017 10:48:49 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-rt-users Cc: Thomas Gleixner , Carsten Emde , Sebastian Andrzej Siewior , John Kacur , Paul Gortmaker , Julia Cartwright , Daniel Wagner , tom.zanussi@linux.intel.com, Alex Shi , rt-stable@vger.kernel.org, Joerg Roedel , iommu@lists.linux-foundation.org, Vinod Adhikary Subject: [PATCH RT 12/15] iommu/amd: Use raw_cpu_ptr() instead of get_cpu_ptr() for ->flush_queue References: <20171201154837.379265211@goodmis.org> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Disposition: inline; filename=0012-iommu-amd-Use-raw_cpu_ptr-instead-of-get_cpu_ptr-for.patch Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9.65-rt57-rc1 stable review patch. If anyone has any objections, please let me know. ------------------ From: Sebastian Andrzej Siewior get_cpu_ptr() disabled preemption and returns the ->flush_queue object of the current CPU. raw_cpu_ptr() does the same except that it not disable preemption which means the scheduler can move it to another CPU after it obtained the per-CPU object. In this case this is not bad because the data structure itself is protected with a spin_lock. This change shouldn't matter however on RT it does because the sleeping lock can't be accessed with disabled preemption. Cc: rt-stable@vger.kernel.org Cc: Joerg Roedel Cc: iommu@lists.linux-foundation.org Reported-by: Vinod Adhikary Signed-off-by: Sebastian Andrzej Siewior --- drivers/iommu/amd_iommu.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index a88595b21111..ff5c2424eb9e 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -2283,7 +2283,7 @@ static void queue_add(struct dma_ops_domain *dma_dom, pages = __roundup_pow_of_two(pages); address >>= PAGE_SHIFT; - queue = get_cpu_ptr(&flush_queue); + queue = raw_cpu_ptr(&flush_queue); spin_lock_irqsave(&queue->lock, flags); if (queue->next == FLUSH_QUEUE_SIZE) @@ -2300,8 +2300,6 @@ static void queue_add(struct dma_ops_domain *dma_dom, if (atomic_cmpxchg(&queue_timer_on, 0, 1) == 0) mod_timer(&queue_timer, jiffies + msecs_to_jiffies(10)); - - put_cpu_ptr(&flush_queue); } -- 2.13.2