From patchwork Thu Apr 28 08:22:10 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Auger X-Patchwork-Id: 8966431 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id B3DBD9F1C1 for ; Thu, 28 Apr 2016 08:25:37 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id DF5762028D for ; Thu, 28 Apr 2016 08:25:36 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id EE29B202A1 for ; Thu, 28 Apr 2016 08:25:35 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1avhFE-000227-A6; Thu, 28 Apr 2016 08:24:20 +0000 Received: from mail-wm0-x233.google.com ([2a00:1450:400c:c09::233]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1avhE7-0000hL-Ea for linux-arm-kernel@lists.infradead.org; Thu, 28 Apr 2016 08:23:12 +0000 Received: by mail-wm0-x233.google.com with SMTP id a17so51929663wme.0 for ; Thu, 28 Apr 2016 01:22:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=dud7nQ9ejprpDzoy0gN+YV+Mg8gIusOq/Dqia33fc9A=; b=eGXCP5AVW3wh7hI1DCiQgsyEHHLeMmlM1btZp04BYgbJ+n4TkPFYrFkjG1URGUrXG9 I/GmZtsl2nh/Qm9/hNZkBzoUEru5hJOX6xZHLKXWqBsj/Mx+zfGR0R2Ik0fBAVmJBfqe PBsQdkATUhGYu9CO0IEqwFkHxE8gzxJZAQz40= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=dud7nQ9ejprpDzoy0gN+YV+Mg8gIusOq/Dqia33fc9A=; b=e0Y2Nro2DGPbb7GFHfb0Ne6N3ZCqhH2DuIc7HTk3SBbFglszTLktbSV7FMTT6Wa6Iy l1ojnYNslE8NZARkZ3eGPIiCAJVGSNnq1kmMOBcqGID6C5jDnMvHZ/alIV0wY5wD2lQw zkyHQCUt54SLuzU/5G34+iSnEnkz+IiFLg4rPz0uCoLk297aFBdkCeCZyQDdOA20tDn4 gUGvqQZWqGsOHe8dr11LAwqZyGPZ2Ai0kyygsrzmonrTswjM3/2Gs6MGztcOKMixpdrg 6JMM2whPNvBb3jqLQjH5NtA2D+P6TUIOy7rnDtJbwN+FuHM8p7OUUy+Ge9lPrN3uyfK6 pAzQ== X-Gm-Message-State: AOPr4FUkv+fMdgoeEdZBYGDMXFSlgQGsHjvZOuMAzTZY+HPhvvdkpayn2MrGP/NDjhPxqTv0 X-Received: by 10.28.150.211 with SMTP id y202mr14780150wmd.41.1461831771845; Thu, 28 Apr 2016 01:22:51 -0700 (PDT) Received: from new-host-46.home (LMontsouris-657-1-37-90.w80-11.abo.wanadoo.fr. [80.11.198.90]) by smtp.gmail.com with ESMTPSA id b124sm3568725wmb.1.2016.04.28.01.22.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 28 Apr 2016 01:22:50 -0700 (PDT) From: Eric Auger To: eric.auger@st.com, eric.auger@linaro.org, robin.murphy@arm.com, alex.williamson@redhat.com, will.deacon@arm.com, joro@8bytes.org, tglx@linutronix.de, jason@lakedaemon.net, marc.zyngier@arm.com, christoffer.dall@linaro.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v8 8/8] genirq/msi: use the MSI doorbell's IOVA when requested Date: Thu, 28 Apr 2016 08:22:10 +0000 Message-Id: <1461831730-5575-9-git-send-email-eric.auger@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1461831730-5575-1-git-send-email-eric.auger@linaro.org> References: <1461831730-5575-1-git-send-email-eric.auger@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160428_012311_773037_CCFD78C8 X-CRM114-Status: GOOD ( 14.44 ) X-Spam-Score: -2.7 (--) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: julien.grall@arm.com, patches@linaro.org, Jean-Philippe.Brucker@arm.com, p.fedin@samsung.com, linux-kernel@vger.kernel.org, Bharat.Bhushan@freescale.com, iommu@lists.linux-foundation.org, pranav.sawargaonkar@gmail.com MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On MSI message composition we now use the MSI doorbell's IOVA in place of the doorbell's PA in case the device is upstream to an IOMMU that requires MSI addresses to be mapped. The doorbell's allocation and mapping happened on an early stage (pci_enable_msi). Signed-off-by: Eric Auger --- v7 -> v8: - use iommu_msi_msg_pa_to_va - add WARN_ON v6 -> v7: - allocation/mapping is done at an earlier stage. We now just perform the iova lookup. So it is safe now to be called in a code that cannot sleep. iommu_msi_set_doorbell_iova is moved in the dma-reserved-iommu API: I think it cleans things up with respect to various #ifdef CONFIGS. v5: - use macros to increase the readability - add comments - fix a typo that caused a compilation error if CONFIG_IOMMU_API is not set --- kernel/irq/msi.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c index d5f95e6..835938b 100644 --- a/kernel/irq/msi.c +++ b/kernel/irq/msi.c @@ -64,8 +64,16 @@ static int msi_compose(struct irq_data *irq_data, if (erase) memset(msg, 0, sizeof(*msg)); - else + else { + struct device *dev; + ret = irq_chip_compose_msi_msg(irq_data, msg); + if (ret) + return ret; + + dev = msi_desc_to_dev(irq_data_get_msi_desc(irq_data)); + WARN_ON(iommu_msi_msg_pa_to_va(dev, msg)); + } return ret; }