Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753535AbdGSLA7 (ORCPT ); Wed, 19 Jul 2017 07:00:59 -0400 Received: from foss.arm.com ([217.140.101.70]:37948 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753364AbdGSLA5 (ORCPT ); Wed, 19 Jul 2017 07:00:57 -0400 Subject: Re: [PATCH 3/5] iommu/arm-smmu-v3: add IOMMU_CAP_BYPASS to the ARM SMMUv3 driver To: Anup Patel , Will Deacon , Joerg Roedel , Baptiste Reynal , Alex Williamson Cc: Scott Branden , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux-foundation.org, kvm@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com References: <1500456838-18405-1-git-send-email-anup.patel@broadcom.com> <1500456838-18405-4-git-send-email-anup.patel@broadcom.com> From: Robin Murphy Message-ID: Date: Wed, 19 Jul 2017 12:00:54 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <1500456838-18405-4-git-send-email-anup.patel@broadcom.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1136 Lines: 34 On 19/07/17 10:33, Anup Patel wrote: > The ARM SMMUv3 support bypassing transactions for which domain > is not configured. The patch adds corresponding IOMMU capability > to advertise this fact. > > Signed-off-by: Anup Patel > --- > drivers/iommu/arm-smmu-v3.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c > index 568c400..a6c7f66 100644 > --- a/drivers/iommu/arm-smmu-v3.c > +++ b/drivers/iommu/arm-smmu-v3.c > @@ -1423,6 +1423,8 @@ static bool arm_smmu_capable(enum iommu_cap cap) > return true; > case IOMMU_CAP_NOEXEC: > return true; > + case IOMMU_CAP_BYPASS: > + return true; And this is never true. If Linux knows a device masters through the SMMU, it will always have a default domain of some sort (either identity or DMA ops). If Linux doesn't know, then it won't have been able to initialise the stream table for the relevant stream IDs, thus any 'bypass' DMA is going to raise C_BAD_STE. SMMUv3 can effectively only bypass unknown stream IDs if disabled entirely. Robin. > default: > return false; > } >