From patchwork Fri Feb 26 17:35:41 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Auger Eric X-Patchwork-Id: 63089 Delivered-To: patches@linaro.org Received: by 10.112.235.234 with SMTP id up10csp760lbc; Fri, 26 Feb 2016 09:36:05 -0800 (PST) X-Received: by 10.28.107.140 with SMTP id a12mr270432wmi.77.1456508165903; Fri, 26 Feb 2016 09:36:05 -0800 (PST) Return-Path: Received: from mail-wm0-x231.google.com (mail-wm0-x231.google.com. [2a00:1450:400c:c09::231]) by mx.google.com with ESMTPS id g185si5264285wmg.13.2016.02.26.09.36.05 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 26 Feb 2016 09:36:05 -0800 (PST) Received-SPF: pass (google.com: domain of eric.auger@linaro.org designates 2a00:1450:400c:c09::231 as permitted sender) client-ip=2a00:1450:400c:c09::231; Authentication-Results: mx.google.com; spf=pass (google.com: domain of eric.auger@linaro.org designates 2a00:1450:400c:c09::231 as permitted sender) smtp.mailfrom=eric.auger@linaro.org; dkim=pass header.i=@linaro.org Received: by mail-wm0-x231.google.com with SMTP id a4so79218874wme.1 for ; Fri, 26 Feb 2016 09:36:05 -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=sPP4z9gz+YM5sgwa3CGYUoqQ4UJfqzZ1slgqlt9b3os=; b=R5yhmw4l8R4E6PYfxBDh3/pCdqE1VMr8wJWok7uhGiW+J+aw6NSHGdPTCqmyccPRam tzkn6/p0Y6k1zL9ZC2eO7fFsU4e+diJBguFOMZl5zLMo87XTGjXVB2ki9smdqZWyzg7k Vcdxqt+pgSsJNr4vCM/FpsfbFvxFch9dGYRt8= 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=sPP4z9gz+YM5sgwa3CGYUoqQ4UJfqzZ1slgqlt9b3os=; b=T4xOWHQ9hNHAX2RP2GW8nt9IHTtBYMetvynlW5cfCE93uXt1C4CPX8rLBY+dep2ASB Puy6pa2hYEMYZTCjLRym4WCLf7Vs469/Qp/qlyvIWjM4v+nqJ58FVE5rYbw3e/zh2yUw ACgrxVn6gykVQRI6531DENIdr7V+bJlZF9b6cBfACM+oM4uqNuSTY87Gl6hZVPznkavi 5X16iCOBJjyK4OS0chJBxHUV8h27Nu6z4R+VfoYGRAHasTN+CEzhlMSkU5E5liQoxPDR Vlk1EUa6G6Uqbant7ulp1687ATg4QNgulISDvdtJkwHPYbvcICV5m5x+tDMnnWD3QSZg 4dHw== X-Gm-Message-State: AD7BkJIPsQms0M02YcqQsR6SB957ZAtrJfHhFgYCI6Lh0ZvGISeQJzc2s113NZakXWXctDAeK6E= X-Received: by 10.194.71.177 with SMTP id w17mr3387495wju.36.1456508165684; Fri, 26 Feb 2016 09:36:05 -0800 (PST) Return-Path: Received: from new-host-8.home (LMontsouris-657-1-37-90.w80-11.abo.wanadoo.fr. [80.11.198.90]) by smtp.gmail.com with ESMTPSA id 77sm3750373wmp.18.2016.02.26.09.36.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 26 Feb 2016 09:36:02 -0800 (PST) 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, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org Cc: suravee.suthikulpanit@amd.com, patches@linaro.org, linux-kernel@vger.kernel.org, Manish.Jaggi@caviumnetworks.com, Bharat.Bhushan@freescale.com, pranav.sawargaonkar@gmail.com, p.fedin@samsung.com, iommu@lists.linux-foundation.org Subject: [RFC v4 01/14] iommu: Add DOMAIN_ATTR_MSI_MAPPING attribute Date: Fri, 26 Feb 2016 17:35:41 +0000 Message-Id: <1456508154-2253-2-git-send-email-eric.auger@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1456508154-2253-1-git-send-email-eric.auger@linaro.org> References: <1456508154-2253-1-git-send-email-eric.auger@linaro.org> 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 --- RFC v1 -> v1: - 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 | 2 ++ include/linux/iommu.h | 1 + 3 files changed, 5 insertions(+) -- 1.9.1 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..46d5c6a 100644 --- a/drivers/iommu/fsl_pamu_domain.c +++ b/drivers/iommu/fsl_pamu_domain.c @@ -856,6 +856,8 @@ 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: + break; default: pr_debug("Unsupported attribute type\n"); ret = -EINVAL; diff --git a/include/linux/iommu.h b/include/linux/iommu.h index a5c539f..a4fe04a 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, };