From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 80BDBCD3424 for ; Sun, 1 Sep 2024 02:40:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:In-Reply-To:From:References:To:Subject:Cc:MIME-Version:Date: Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=siPmhvNs3GmkxgTvloZF235WmO7rQpbhySYhJI4FclU=; b=dxffiBgkv8NqEC589pdtReW7R5 Ewk9dloUZuPI5M9DAc5nFERXczaQzcR4enebvymoKZQNqb9pwzMFfoGq06dQtVk6NaJ5XvznN4TKB SRfhsBRs0aQIqXU7nzYLd4l8hKc09EH8R2VePtheExaeZ2wGzexs10pJoLHHyRpz5H3PD74Z2n6Z0 IWPf58QFjxANiw3FFPe1ErDTLtylL9Xm/ymxF2+chrTY6Sneo9phZbQi9MOe8orG3Je0dA1PvlsFY vfe/rEW3ktaTw8F35IFI1ocrFdi5WUtPl+W3vWW+0cidKwMoGtnGVh2xVV10Rf1G+2IgyezLD3HQw a/mCSvXA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1skaVo-0000000Ae2o-3wkn; Sun, 01 Sep 2024 02:40:20 +0000 Received: from mgamail.intel.com ([192.198.163.8]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1skaUv-0000000AdvJ-1hox for linux-arm-kernel@lists.infradead.org; Sun, 01 Sep 2024 02:39:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1725158365; x=1756694365; h=message-id:date:mime-version:cc:subject:to:references: from:in-reply-to:content-transfer-encoding; bh=ljvgU3al89OxEVEIUqvIWyRhZNDvLLNUvd8ePVYiWME=; b=hHpRsnaYCCmDUpV7Fu4pKFDdAKUWaoTfRVUjVjCN2K/shsbMNUg4+GXy sWiPekyyuoN7Z+zoJRENaOadTF3an4SxQnC/XBjoi0MXqEhjtpp9bMnJX W2JIebXV25EDn/d3Ax10NPO4CUWrn16NA9sgqwYzYD6iN82j5xbW7qeMu t6P2H46dScxqaKELGVxBpdsIzir7OMUPioQWUOjw52tju0QIZzYO4ww78 m7NJSmSeAFqONIoQED3jWMlCcvWZZqR7q8SBltwkjBAi/ArkGG8pm+MCR qhlPw8wu8UXbypJk3WAyOP7qRr4FPsr+E83TONDXfjQ8xYtzrfmosCjgt Q==; X-CSE-ConnectionGUID: kTP1VUAUSDGwWmytFuzlww== X-CSE-MsgGUID: MiKRmxI0T1O61Pzw5N4ptQ== X-IronPort-AV: E=McAfee;i="6700,10204,11181"; a="41262812" X-IronPort-AV: E=Sophos;i="6.10,193,1719903600"; d="scan'208";a="41262812" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Aug 2024 19:39:24 -0700 X-CSE-ConnectionGUID: 7wSriv9+TWiJh/xQdZiVmg== X-CSE-MsgGUID: Wof8a319TkuK6wiSPuTG1w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,193,1719903600"; d="scan'208";a="64264177" Received: from blu2-mobl.ccr.corp.intel.com (HELO [10.125.248.220]) ([10.125.248.220]) by fmviesa008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Aug 2024 19:39:19 -0700 Message-ID: <55918c41-65c4-435c-860b-b2a177b0d364@linux.intel.com> Date: Sun, 1 Sep 2024 10:39:17 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Cc: baolu.lu@linux.intel.com, joro@8bytes.org, suravee.suthikulpanit@amd.com, robin.murphy@arm.com, dwmw2@infradead.org, shuah@kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org, eric.auger@redhat.com, jean-philippe@linaro.org, mdf@kernel.org, mshavit@google.com, shameerali.kolothum.thodi@huawei.com, smostafa@google.com, yi.l.liu@intel.com Subject: Re: [PATCH v2 02/19] iommufd/viommu: Add IOMMUFD_OBJ_VIOMMU and IOMMU_VIOMMU_ALLOC ioctl To: Nicolin Chen , jgg@nvidia.com, kevin.tian@intel.com, will@kernel.org References: Content-Language: en-US From: Baolu Lu In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240831_193925_495010_97CC1827 X-CRM114-Status: UNSURE ( 9.40 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 2024/8/28 0:59, Nicolin Chen wrote: > +int iommufd_viommu_alloc_ioctl(struct iommufd_ucmd *ucmd) > +{ > + struct iommu_viommu_alloc *cmd = ucmd->cmd; > + struct iommufd_hwpt_paging *hwpt_paging; > + struct iommufd_viommu *viommu; > + struct iommufd_device *idev; > + int rc; > + > + if (cmd->flags) > + return -EOPNOTSUPP; > + > + idev = iommufd_get_device(ucmd, cmd->dev_id); Why does a device reference count is needed here? When is this reference count released after the VIOMMU is allocated? > + if (IS_ERR(idev)) > + return PTR_ERR(idev); > + > + hwpt_paging = iommufd_get_hwpt_paging(ucmd, cmd->hwpt_id); > + if (IS_ERR(hwpt_paging)) { > + rc = PTR_ERR(hwpt_paging); > + goto out_put_idev; > + } > + > + if (!hwpt_paging->nest_parent) { > + rc = -EINVAL; > + goto out_put_hwpt; > + } > + > + if (cmd->type != IOMMU_VIOMMU_TYPE_DEFAULT) { > + rc = -EOPNOTSUPP; > + goto out_put_hwpt; > + } > + > + viommu = iommufd_object_alloc(ucmd->ictx, viommu, IOMMUFD_OBJ_VIOMMU); > + if (IS_ERR(viommu)) { > + rc = PTR_ERR(viommu); > + goto out_put_hwpt; > + } > + > + viommu->type = cmd->type; > + viommu->ictx = ucmd->ictx; > + viommu->hwpt = hwpt_paging; > + > + refcount_inc(&viommu->hwpt->common.obj.users); > + > + cmd->out_viommu_id = viommu->obj.id; > + rc = iommufd_ucmd_respond(ucmd, sizeof(*cmd)); > + if (rc) > + goto out_abort; > + iommufd_object_finalize(ucmd->ictx, &viommu->obj); > + goto out_put_hwpt; > + > +out_abort: > + iommufd_object_abort_and_destroy(ucmd->ictx, &viommu->obj); > +out_put_hwpt: > + iommufd_put_object(ucmd->ictx, &hwpt_paging->common.obj); > +out_put_idev: > + iommufd_put_object(ucmd->ictx, &idev->obj); > + return rc; > +} Thanks, baolu