Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1629763

Re: [PATCH] iommu/arm-smmu: Return IOVA in iova_to_phys when SMMU is bypassed

Path csiph.com!news.redatomik.org!aioe.org!bofh.it!news.nic.it!robomod
From Sunil Kovvuri <sunil.kovvuri@gmail.com>
Newsgroups linux.kernel
Subject Re: [PATCH] iommu/arm-smmu: Return IOVA in iova_to_phys when SMMU is bypassed
Date Mon, 24 Apr 2017 18:30:02 +0200
Message-ID <tzP2a-Rd-17@gated-at.bofh.it> (permalink)
References <txdu2-c8-7@gated-at.bofh.it> <tzNto-8dF-15@gated-at.bofh.it> <tzOz7-q9-9@gated-at.bofh.it> <tzOIP-JE-31@gated-at.bofh.it>
X-Original-To Will Deacon <will.deacon@arm.com>
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=/LBAnrTSCzbqxQ16jAevC0VORQaC+soTpS8gLaKKIHQ=; b=vaitPKPN/r+/4I+kL/FuaKTUghTk9fIrCEPYR5CYtkue95ZY0pamoWgRPiEGXWPxAv f+SyRGoBDQOkUmG8wBU4jO8KUrh1JwvXa4qxJrJUQwdVk4n4+LkPqrBD15VLKGpQmOYf Cu31vBRkUdEsSxu1vda5vqQWgG9yG6kggRPWe2IA/gs63wdJzxZ1aSZmX5+J3B3sanu+ IDCuarl4Vxj7LLgQHosdhRMj3lZsxpqu3HYFzAU17MH48fTMAxkZz2S0bRShsZiqf5gt IjXx34gQcAg1U+kjaf0VYqJIbEC4dQtgAqvDo8SJf4d6kYFBasbf45AzvzW+GXLG49cF /8YA==
X-Google-Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=/LBAnrTSCzbqxQ16jAevC0VORQaC+soTpS8gLaKKIHQ=; b=phTIFILjzFMPy5/ASiBSbSAXq0PKzgO8aUKdwPHjoM8JlyMFO2yZDweAuxUpPG4Tjo x7BQG64WwKgCF0XSZudfRI37DqBGQHBERURf0TarjTgMj2uTiOSU9HuLFEUcDbUh5s3u JBcbVxMmvxs8nC5WXQ9KRdqjke/II/koBA8Sh8Y3G96DIdHibvA7Xjf83oWMCp6uk0pg mtGiDrhwFgLxlcy8NSh1PBZG50bB26HjS+mDVvKMtgCY2P/qifMvR0VkEub8aSohNa1N FAu9IxncGgVZAru6Rl2TimNfaGevBzNev1NXrz5dntbI1hwhmUHnt5Pwjl08UUInLylS D1fQ==
X-Gm-Message-State AN3rC/4MdP6V+LfYAzqCaJ/6kdU4cbzDGcUE6+L9bj5XOBSNwtT+1KMD 2nhSaeTOWEg/dRF1lR6DSX4x3dhNiA==
X-Received by 10.28.68.6 with SMTP id r6mr10428620wma.7.1493050833280; Mon, 24 Apr 2017 09:20:33 -0700 (PDT)
MIME-Version 1.0
Content-Type text/plain; charset=UTF-8
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 78
Organization linux.* mail to news gateway
X-Original-Cc iommu@lists.linux-foundation.org, LAKML <linux-arm-kernel@lists.infradead.org>, LKML <linux-kernel@vger.kernel.org>, robert.richter@cavium.com, Sunil Goutham <sgoutham@cavium.com>
X-Original-Date Mon, 24 Apr 2017 21:50:32 +0530
X-Original-Message-ID <CA+sq2CfOZsAWhqLV-SNajUo+SNobNX9TFJfgZr76NOzz5h+RCg@mail.gmail.com>
X-Original-References <1492430246-17267-1-git-send-email-sunil.kovvuri@gmail.com> <20170424144429.GI12323@arm.com> <CA+sq2Cc3cjjPcw0F1D_BOu0j3x+MUNO27MeRguj6BpQ+t11_HQ@mail.gmail.com> <20170424160030.GQ12323@arm.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1629763

Show key headers only | View raw


On Mon, Apr 24, 2017 at 9:30 PM, Will Deacon <will.deacon@arm.com> wrote:
> On Mon, Apr 24, 2017 at 09:23:16PM +0530, Sunil Kovvuri wrote:
>> On Mon, Apr 24, 2017 at 8:14 PM, Will Deacon <will.deacon@arm.com> wrote:
>> > On Mon, Apr 17, 2017 at 05:27:26PM +0530, sunil.kovvuri@gmail.com wrote:
>> >> From: Sunil Goutham <sgoutham@cavium.com>
>> >>
>> >> For software initiated address translation, when domain type is
>> >> IOMMU_DOMAIN_IDENTITY i.e SMMU is bypassed, mimic HW behavior
>> >> i.e return the same IOVA as translated address.
>> >>
>> >> This patch is an extension to Will Deacon's patchset
>> >> "Implement SMMU passthrough using the default domain".
>> >
>> > Are you actually seeing an issue here? If so, why isn't SMMUv3 affected too?
>> Yes and SMMUv3 should also be effected but as of now I don't see any use case.
>> If needed, i can re-submit the patch with changes in SMMUv3 as well.
>
> Yes, please.
>
>> >> Signed-off-by: Sunil Goutham <sgoutham@cavium.com>
>> >> ---
>> >>  drivers/iommu/arm-smmu.c | 3 +++
>> >>  1 file changed, 3 insertions(+)
>> >>
>> >> diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
>> >> index 41afb07..2f4a130 100644
>> >> --- a/drivers/iommu/arm-smmu.c
>> >> +++ b/drivers/iommu/arm-smmu.c
>> >> @@ -1405,6 +1405,9 @@ static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain,
>> >>       struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
>> >>       struct io_pgtable_ops *ops= smmu_domain->pgtbl_ops;
>> >>
>> >> +     if (domain->type == IOMMU_DOMAIN_IDENTITY)
>> >> +             return iova;
>> >> +
>> >>       if (!ops)
>> >>               return 0;
>> >
>> > I'd have thought ops would be NULL, since arm_smmu_init_domain_context
>> > doesn't allocate them for an identity domain.
>> Yes ops is set to NULL.
>
> Argh, sorry, I completely overlooked that we return 0 in that case, rather
> than the iova.
>
>> > I don't understand this patch. Please can you explain the problem more
>> > clearly?
>> AFAIK for any driver outside IOMMU there is only one way to identify
>> if device is attached to
>> IOMMU or not and that is by checking iommu_domain. And I don't think
>> it would be appropriate
>> for the driver to check domain->type before calling 'iommu_iova_to_phys()' API.
>>
>> The difference between IOMMU disabled and IOMMU being in passthrough
>> mode is that, in the
>> later case device is still attached to default domain but in former's
>> case it's NULL. So there is no
>> way to differentiate for the external driver whether IOMMU is in
>> passthrough mode or DMA mode.
>>
>> And since ops is NULL in passthrough mode, 'iommu_iova_to_phys()' will
>> return zero.
>>
>> Use case for your reference
>> https://lkml.org/lkml/2017/3/7/299
>> This driver is for a NIC interface on platform which supports SMMUv2.
>
> Blimey, that driver is horrible, but I take your point on the API. Please
> repost, fixing SMMUv3 at the same time.

Sure, will re-submit the patch with SMMUv3 changes.

On a separate note, if you have time, I would definitely like to know
your feedback and what's horrible in that driver, probably in a different
email to keep that out of scope of this patch.

Thanks,
Sunil.

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

[PATCH] iommu/arm-smmu: Return IOVA in iova_to_phys when SMMU is bypassed sunil.kovvuri@gmail.com - 2017-04-17 14:00 +0200
  Re: [PATCH] iommu/arm-smmu: Return IOVA in iova_to_phys when SMMU is bypassed Sunil Kovvuri <sunil.kovvuri@gmail.com> - 2017-04-20 06:30 +0200
  Re: [PATCH] iommu/arm-smmu: Return IOVA in iova_to_phys when SMMU is  bypassed Will Deacon <will.deacon@arm.com> - 2017-04-24 16:50 +0200
    Re: [PATCH] iommu/arm-smmu: Return IOVA in iova_to_phys when SMMU is bypassed Sunil Kovvuri <sunil.kovvuri@gmail.com> - 2017-04-24 18:00 +0200
      Re: [PATCH] iommu/arm-smmu: Return IOVA in iova_to_phys when SMMU is  bypassed Will Deacon <will.deacon@arm.com> - 2017-04-24 18:10 +0200
        Re: [PATCH] iommu/arm-smmu: Return IOVA in iova_to_phys when SMMU is bypassed Sunil Kovvuri <sunil.kovvuri@gmail.com> - 2017-04-24 18:30 +0200

csiph-web