From patchwork Tue Jan 26 13:12:39 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Auger X-Patchwork-Id: 8121701 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 5DB309F6DA for ; Tue, 26 Jan 2016 13:15:33 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 81D6720254 for ; Tue, 26 Jan 2016 13:15:32 +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 70ED8201F2 for ; Tue, 26 Jan 2016 13:15:31 +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 1aO3Rb-0000Ih-Ld; Tue, 26 Jan 2016 13:14:03 +0000 Received: from mail-wm0-x236.google.com ([2a00:1450:400c:c09::236]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aO3RI-0008Tb-6M for linux-arm-kernel@lists.infradead.org; Tue, 26 Jan 2016 13:13:45 +0000 Received: by mail-wm0-x236.google.com with SMTP id n5so129545541wmn.0 for ; Tue, 26 Jan 2016 05:13:23 -0800 (PST) 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=81lFVzhcEKCPzPUyKc/k5F6sIjBWPhKbukFJRfnqUiQ=; b=HZRWGA0Q7SNU9uns+VaOhxZRZuvoOtiX/l+6E8EmkxOlpe2VVnuqQBQHAGzfoVem53 W3tK2ADxrIOBvdkTCxboGhIgoQBcxtiUmL1KvtxAV49CsvJMl2Ll7ik9rL/OcUor55wQ dvi2ShXsbvlWyt9e+5KdD9NBq/PCfJgunAz7k= 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=81lFVzhcEKCPzPUyKc/k5F6sIjBWPhKbukFJRfnqUiQ=; b=RKWMw1Z66Go9o9R5fWl7ydLhmfOqlPErxZoxERMsNiTAexzThde7O9TRFWsaCk7/IL aTy/HiG7BPljrPMmAOhe7Q/ZEO3gr+vnCjkJQDk0LiiB2W6Q8D2uMl+Nl/4pQV+pt8Vn b0JijKxwvuyhufU2gVwtXHah4RZRjzZ3rJKygvACFxQXDOVMqYa6Aq4R8Deqpm1EcQho g9WpF5OXVQk2Z6rEgCU3KUR13BIqbofEjVI7K2wembWFbFlCNEqvkOL0vw+78Uu2NwjW Vigvo89HY1p5kK7xpRDoWKZLhJGWOnd2F3JUjgVdHvbjET+KPCIC0K/KJZ+uQ4Q8lK1+ qimA== X-Gm-Message-State: AG10YORVxvHBVpJEqx3Ozs2YzKd/SJCvHK/RxwrM06pzB5xMKFjiUyZVrx4yhTvpZEEGzelk X-Received: by 10.28.217.74 with SMTP id q71mr23750578wmg.68.1453814002326; Tue, 26 Jan 2016 05:13:22 -0800 (PST) Received: from localhost.localdomain (LMontsouris-657-1-37-90.w80-11.abo.wanadoo.fr. [80.11.198.90]) by smtp.gmail.com with ESMTPSA id ct2sm1388885wjb.46.2016.01.26.05.13.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 26 Jan 2016 05:13:21 -0800 (PST) From: Eric Auger To: eric.auger@st.com, eric.auger@linaro.org, alex.williamson@redhat.com, will.deacon@arm.com, christoffer.dall@linaro.org, marc.zyngier@arm.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org Subject: [PATCH 01/10] iommu: Add DOMAIN_ATTR_MSI_MAPPING attribute Date: Tue, 26 Jan 2016 13:12:39 +0000 Message-Id: <1453813968-2024-2-git-send-email-eric.auger@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1453813968-2024-1-git-send-email-eric.auger@linaro.org> References: <1453813968-2024-1-git-send-email-eric.auger@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160126_051344_473148_29794867 X-CRM114-Status: GOOD ( 14.81 ) 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: patches@linaro.org, p.fedin@samsung.com, linux-kernel@vger.kernel.org, Bharat.Bhushan@freescale.com, iommu@lists.linux-foundation.org, pranav.sawargaonkar@gmail.com, suravee.suthikulpanit@amd.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=-4.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 Introduce new DOMAIN_ATTR_MSI_MAPPING domain attribute. If supported, this means the MSI addresses need to be mapped in the IOMMU. ARM SMMUS and FSL PAMU, at least expose this attribute. x86 IOMMUs typically don't expose the attribute since on x86 MSI write transaction addresses always are within the 1MB PA region [FEE0_0000h - FEF0_000h] window which directly targets the APIC configuration space and hence bypass the sMMU. Signed-off-by: Bharat Bhushan Signed-off-by: Eric Auger --- to be honest I wonder whether this is property of the sMMU? Isn't it a platform property? RFC v1 -> RFC v2: - the data field is not used - for this attribute domain_get_attr simply returns 0 if the MSI_MAPPING capability if needed or <0 if not. - removed struct iommu_domain_msi_maps --- drivers/iommu/arm-smmu.c | 2 ++ drivers/iommu/fsl_pamu_domain.c | 3 +++ include/linux/iommu.h | 1 + 3 files changed, 6 insertions(+) diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c index 59ee4b8..c8b7e71 100644 --- a/drivers/iommu/arm-smmu.c +++ b/drivers/iommu/arm-smmu.c @@ -1409,6 +1409,8 @@ static int arm_smmu_domain_get_attr(struct iommu_domain *domain, case DOMAIN_ATTR_NESTING: *(int *)data = (smmu_domain->stage == ARM_SMMU_DOMAIN_NESTED); return 0; + case DOMAIN_ATTR_MSI_MAPPING: + return 0; default: return -ENODEV; } diff --git a/drivers/iommu/fsl_pamu_domain.c b/drivers/iommu/fsl_pamu_domain.c index da0e1e3..dd2e0d6 100644 --- a/drivers/iommu/fsl_pamu_domain.c +++ b/drivers/iommu/fsl_pamu_domain.c @@ -856,6 +856,9 @@ static int fsl_pamu_get_domain_attr(struct iommu_domain *domain, case DOMAIN_ATTR_FSL_PAMUV1: *(int *)data = DOMAIN_ATTR_FSL_PAMUV1; break; + case DOMAIN_ATTR_MSI_MAPPING: + ret = 0; + break; default: pr_debug("Unsupported attribute type\n"); ret = -EINVAL; diff --git a/include/linux/iommu.h b/include/linux/iommu.h index f28dff3..3ae2fb6 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -112,6 +112,7 @@ enum iommu_attr { DOMAIN_ATTR_FSL_PAMU_ENABLE, DOMAIN_ATTR_FSL_PAMUV1, DOMAIN_ATTR_NESTING, /* two stages of translation */ + DOMAIN_ATTR_MSI_MAPPING, /* Require MSIs mapping in iommu */ DOMAIN_ATTR_MAX, };