Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp5951904pxv; Thu, 29 Jul 2021 02:38:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzke2Lg6p7BxEsKZtzB617YOWJlSW+qWk2JKkpE+3rqgkuh1/2KnwG6mo3TOHghCZwxN+qT X-Received: by 2002:a05:6e02:ccf:: with SMTP id c15mr2972226ilj.238.1627551509445; Thu, 29 Jul 2021 02:38:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627551509; cv=none; d=google.com; s=arc-20160816; b=kyoiKv1Gpl5zjt3i0BzZogfWiV5/Y+nDWY0Ntw8MAqI7YmrngYo/Yts48lQW/dTOqd Z/Jr4wFT9lpK0vNfp8QrbLkEibdMkT6oORVfM8FJe5ZpFLKxt5zusDu4GfPsl1j/97ny qNeEXtVYlAfTrZrUFya0j+xzUOglmwBzJFYtLu2dqT3BhahYXm6QAFxutdSPb01htiey tgPrSKs5U9LvJaVmwGDdUyIF/lT0L/iXHMyyr41+yO3YLzya3VzErUiHQ0N64gZTYJ3C kVXpECWwtzTqYuc0hTvqYbS+E8oDET03L9OGaJ6Vu3kCqXprRoYQSkmX1BNOiEdAjUpO 4tOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=NHH1jJyKuY/5moY6COCvE4JUgRkHyxaW7JNYjfJ+Nyg=; b=1D8ZwdvGytyx4wjIREPmzepqEajoXVg7v/U2XCWYIGPWO7SOQdCkGjuzlXPLlFAVai F3zZuxgUrkGRXA/WT7NfAnnl8mpTDfpabfcFdOJ3xobjKAYmUg7su3Q8wLH7rFw53NV/ mM/GJY1zfXWxInvbSXIf9eC7GO98Z4BoO02BiffLxZ5btqwQbg5R9JqkKm3ltCjNwJlA heTaIqUzJ2nBX/yI3SU09zjVXPkXH0ZP+4lTSmuNo9Pk7jeG4OtoScKdBfYkttTx2CS5 79EIM8RNZxu1lzTCaSzJaxAxcsiAffhdOQPbZO/1/Wvood1LZ+gYTTpocNBNkcNc6do0 fu4w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a6si4118372ilv.81.2021.07.29.02.38.17; Thu, 29 Jul 2021 02:38:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235396AbhG2JhJ (ORCPT + 99 others); Thu, 29 Jul 2021 05:37:09 -0400 Received: from foss.arm.com ([217.140.110.172]:43394 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235633AbhG2JhH (ORCPT ); Thu, 29 Jul 2021 05:37:07 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7761D1FB; Thu, 29 Jul 2021 02:37:04 -0700 (PDT) Received: from [10.57.36.146] (unknown [10.57.36.146]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1B5533F73D; Thu, 29 Jul 2021 02:37:02 -0700 (PDT) Subject: Re: [PATCH v2 18/24] iommu: Express DMA strictness via the domain type To: Lu Baolu , joro@8bytes.org, will@kernel.org Cc: iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, suravee.suthikulpanit@amd.com, john.garry@huawei.com, dianders@chromium.org References: <50bee17e9248ccfccb33a10238210d4ff4f4cf4d.1627468309.git.robin.murphy@arm.com> From: Robin Murphy Message-ID: Date: Thu, 29 Jul 2021 10:36:56 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2021-07-29 08:13, Lu Baolu wrote: > Hi Robin, > > On 7/28/21 11:58 PM, Robin Murphy wrote: >> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c >> index 982545234cf3..eecb5657de69 100644 >> --- a/drivers/iommu/iommu.c >> +++ b/drivers/iommu/iommu.c >> @@ -136,6 +136,9 @@ static int __init iommu_subsys_init(void) >>           } >>       } >> +    if (!iommu_default_passthrough() && !iommu_dma_strict) >> +        iommu_def_domain_type = IOMMU_DOMAIN_DMA_FQ; > > iommu_dma_strict could be changed later by the vendor iommu driver via > iommu_set_dma_strict(). This seems not to be the right place to set > iommu_def_domain_type. Ah yes, good catch once again, thanks! I think this *is* the right place to initially set it to honour the command-line option, since that matches what we do for passthrough. However also like passthrough we'll need to keep things in sync if it's updated later, like this: diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 87d7b299436e..593d4555bc57 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -359,6 +359,8 @@ early_param("iommu.strict", iommu_dma_setup); void iommu_set_dma_strict(void) { iommu_dma_strict = true; + if (iommu_def_domain_type == IOMMU_DOMAIN_DMA_FQ) + iommu_def_domain_type = IOMMU_DOMAIN_DMA; } static ssize_t iommu_group_attr_show(struct kobject *kobj, Does that seem reasonable? I'm not sure there's any cleaner way to do it since we don't want to inadvertently clobber the default type if the user has given us something funky like "intel_iommu=strict iommu.passthrough=1". Cheers, Robin. > >> + >>       pr_info("Default domain type: %s %s\n", >>           iommu_domain_type_str(iommu_def_domain_type), >>           (iommu_cmd_line & IOMMU_CMD_LINE_DMA_API) ? > > Best regards, > baolu