From patchwork Thu Jan 19 19:18:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Murphy X-Patchwork-Id: 45943 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp502933wrn; Thu, 19 Jan 2023 11:21:39 -0800 (PST) X-Google-Smtp-Source: AMrXdXuNgPSW+SaH0vV2DJWylyrI2osaEs6Zxmgi6oGpKppgtY9emK3uGIb8zT7Eu0iXfboAC/I0 X-Received: by 2002:a62:aa0c:0:b0:589:8560:a39d with SMTP id e12-20020a62aa0c000000b005898560a39dmr12089535pff.0.1674156099099; Thu, 19 Jan 2023 11:21:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674156099; cv=none; d=google.com; s=arc-20160816; b=hpDmDy5KtFOHV4onJfeeq3xZxQh9ubKp/CAdImK1VZUtPgHh3WBs+OF8mvnhkf28Tj u5u6JITLWXCXUTPJgLmkUFL05PbZqeISQvYC1wJvvpyGLSYFRaTP1foMVnTd+OQdeF6R rAiL5lsO0hYTjtdC4cVIrJJDnQlQwPFVI9hPvBnFTJqJxKjveLtTNxirOLKDDFPaT+gz lhvi57Wq6t6LGv5RVn5WYqcRB4SrXqOnzNosMAg+0g+B57bbIPFF3lDdvhPvCXrAcqWq hKNSE7j1FQIRgLrk5tPvH05yme0weZhstdw1wV6Y4MhooRiRX7wthZisqhBxrYDOmf4M oI/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=mM9swOownoqksOhwOCQWJojOsuqqxJ0Mswu4yl9ybkw=; b=ueJ9k1E+YpG6KEKBV2BthsbLsGkqz81/iqpP5vRb7cox1qlDta97r7pqr9HKqQtnYd g3o6Iury22AWGpaOC0TuZLxZhLy5MohLXlMFQ4v+YnbbiFjdYVw/3kC9xvYOFe6S3F8B cKse0BpXdcZbjd175eksGuuO1wlUdQmLp4oliznDzdk25AdBu3Mv9hckFxF3O5QZulsR 9TSalgy+l+cveCxjkODqhpkpuDLrJDT6OUebOqljswTEnZSKhSI8B2Ug3/qY0DMCpwcj iEbV9uYIqVzMpFFHNmvih9ag3KxpnpeVTvNKMoIMM4KqyC1nEZUWKG9PURK6kgCSlhto CFQQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k193-20020a6284ca000000b00557c5641be2si37253108pfd.248.2023.01.19.11.21.26; Thu, 19 Jan 2023 11:21:39 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S231453AbjASTUe (ORCPT + 99 others); Thu, 19 Jan 2023 14:20:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230401AbjASTUH (ORCPT ); Thu, 19 Jan 2023 14:20:07 -0500 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 2A9E69F3B6 for ; Thu, 19 Jan 2023 11:19:16 -0800 (PST) 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 AB47E1BCA; Thu, 19 Jan 2023 11:19:25 -0800 (PST) Received: from e121345-lin.cambridge.arm.com (e121345-lin.cambridge.arm.com [10.1.196.40]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 434B13F67D; Thu, 19 Jan 2023 11:18:43 -0800 (PST) From: Robin Murphy To: joro@8bytes.org, will@kernel.org Cc: hch@lst.de, jgg@nvidia.com, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 3/8] iommu: Factor out a "first device in group" helper Date: Thu, 19 Jan 2023 19:18:21 +0000 Message-Id: <592bff75a7fc4d50d5b2435a09dfff19f1072973.1673978700.git.robin.murphy@arm.com> X-Mailer: git-send-email 2.36.1.dirty In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755479906079093377?= X-GMAIL-MSGID: =?utf-8?q?1755479906079093377?= This pattern for picking the first device out of the group list is repeated a few times now, so it's clearly worth factoring out. Signed-off-by: Robin Murphy --- drivers/iommu/iommu.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index bc53ffbba4de..5b37766a09e2 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -1084,6 +1084,11 @@ void iommu_group_remove_device(struct device *dev) } EXPORT_SYMBOL_GPL(iommu_group_remove_device); +static struct device *iommu_group_first_dev(struct iommu_group *group) +{ + return list_first_entry(&group->devices, struct group_device, list)->dev; +} + static int iommu_group_device_count(struct iommu_group *group) { struct group_device *entry; @@ -2835,7 +2840,6 @@ static int iommu_change_dev_def_domain(struct iommu_group *group, struct device *prev_dev, int type) { struct iommu_domain *prev_dom; - struct group_device *grp_dev; int ret, dev_def_dom; struct device *dev; @@ -2867,8 +2871,7 @@ static int iommu_change_dev_def_domain(struct iommu_group *group, } /* Since group has only one device */ - grp_dev = list_first_entry(&group->devices, struct group_device, list); - dev = grp_dev->dev; + dev = iommu_group_first_dev(group); if (prev_dev != dev) { dev_err_ratelimited(prev_dev, "Cannot change default domain: Device has been changed\n"); @@ -2965,7 +2968,6 @@ static int iommu_change_dev_def_domain(struct iommu_group *group, static ssize_t iommu_group_store_type(struct iommu_group *group, const char *buf, size_t count) { - struct group_device *grp_dev; struct device *dev; int ret, req_type; @@ -3000,8 +3002,7 @@ static ssize_t iommu_group_store_type(struct iommu_group *group, } /* Since group has only one device */ - grp_dev = list_first_entry(&group->devices, struct group_device, list); - dev = grp_dev->dev; + dev = iommu_group_first_dev(group); get_device(dev); /* @@ -3126,21 +3127,18 @@ void iommu_device_unuse_default_domain(struct device *dev) static int __iommu_group_alloc_blocking_domain(struct iommu_group *group) { - struct group_device *dev = - list_first_entry(&group->devices, struct group_device, list); + struct device *dev = iommu_group_first_dev(group); if (group->blocking_domain) return 0; - group->blocking_domain = - __iommu_domain_alloc(dev->dev->bus, IOMMU_DOMAIN_BLOCKED); + group->blocking_domain = __iommu_domain_alloc(dev->bus, IOMMU_DOMAIN_BLOCKED); if (!group->blocking_domain) { /* * For drivers that do not yet understand IOMMU_DOMAIN_BLOCKED * create an empty domain instead. */ - group->blocking_domain = __iommu_domain_alloc( - dev->dev->bus, IOMMU_DOMAIN_UNMANAGED); + group->blocking_domain = __iommu_domain_alloc(dev->bus, IOMMU_DOMAIN_UNMANAGED); if (!group->blocking_domain) return -EINVAL; }