Received: by 2002:a05:6358:bb9e:b0:b9:5105:a5b4 with SMTP id df30csp5826080rwb; Wed, 7 Sep 2022 08:30:14 -0700 (PDT) X-Google-Smtp-Source: AA6agR65LpOt3PpmF5x7ul34gpsYICNmmHjZYK+9SXkf9rzzs4eVG/uvazOBayFo4/zN04CD6lvI X-Received: by 2002:a17:902:e74f:b0:176:e68f:f902 with SMTP id p15-20020a170902e74f00b00176e68ff902mr4410508plf.41.1662564614477; Wed, 07 Sep 2022 08:30:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662564614; cv=none; d=google.com; s=arc-20160816; b=MwKVNp2UQldywfNEeCzGxjBfMDYQ3HfUgbwHUkpPbkhqlniJSFVbSxCE9FglQZiBzW +QZp24MH5wn2SSP/lidkGIbUQhZ/35QrydaB9++XxeFbzKKQiQcaTB/8/hgn6VWzO11Y 3DWcKxog/P3M3yw91oHPLuMEXervw5dXCU5HrYiyLRQnnhuQscRHV9Qd9cntWPcC/Qc0 3Z/JtEXJe3nvNZrt4r59x+xXjzjDtPWdXylmQa27uTRce+NWLcTz5WKR39L8RQZqoypf FwHSpxnW6gE5NRY6w0Pt9S3otgHuk7YJZ7iP0OHhrHCNu9OLDtJqcbr6NlvElldMwJ6d Y2hA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=1iF76PnQ4XI57D0YeM5xejFF+be5KTGqop+ewrJvhF8=; b=iZQl3TisbA0tETkKQSKpgGsktBTwMn984Q7ZUSkuOp/u1LTfNO+kBDA3rrbVniYoOj YUJS06HLBL4yLzB7VwtZkAg3TVqgxxS7g5FZVgD93d45snCWFZZz/EabXwTfSqZqD8+C QsBufmv0pdPrzd2ZVQlA3Ff1nQT5/nJ9KKjtx8CWd9ntnm282mqFDRZ3gf/QY90Hltbl rW597MoaQAlQ12y+3XsNZUoq/GOnyKlOZP0YxD6eZVWLxf4M5EXFg7kvplKaQ90549QY Jy9c3r81S57AnTdDrYIWmrVqM5pbziqMat9CEzs+1dklbAk5P7OYX3St57FHQi2cettx lexg== 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q93-20020a17090a4fe600b001fb6116f766si15986322pjh.132.2022.09.07.08.30.00; Wed, 07 Sep 2022 08:30:14 -0700 (PDT) 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 S230203AbiIGOZN (ORCPT + 99 others); Wed, 7 Sep 2022 10:25:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230155AbiIGOZL (ORCPT ); Wed, 7 Sep 2022 10:25:11 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 8E3EB2600; Wed, 7 Sep 2022 07:24:23 -0700 (PDT) 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 CCDD91042; Wed, 7 Sep 2022 07:23:32 -0700 (PDT) Received: from [10.57.15.197] (unknown [10.57.15.197]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3B9E63F71A; Wed, 7 Sep 2022 07:23:15 -0700 (PDT) Message-ID: <9f91f187-2767-13f9-68a2-a5458b888f00@arm.com> Date: Wed, 7 Sep 2022 15:23:09 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Subject: Re: [PATCH v6 1/5] iommu: Return -EMEDIUMTYPE for incompatible domain and device/group Content-Language: en-GB To: Jason Gunthorpe , Joerg Roedel Cc: Nicolin Chen , will@kernel.org, alex.williamson@redhat.com, suravee.suthikulpanit@amd.com, marcan@marcan.st, sven@svenpeter.dev, alyssa@rosenzweig.io, robdclark@gmail.com, dwmw2@infradead.org, baolu.lu@linux.intel.com, mjrosato@linux.ibm.com, gerald.schaefer@linux.ibm.com, orsonzhai@gmail.com, baolin.wang@linux.alibaba.com, zhang.lyra@gmail.com, thierry.reding@gmail.com, vdumpa@nvidia.com, jonathanh@nvidia.com, jean-philippe@linaro.org, cohuck@redhat.com, tglx@linutronix.de, shameerali.kolothum.thodi@huawei.com, thunder.leizhen@huawei.com, christophe.jaillet@wanadoo.fr, yangyingliang@huawei.com, jon@solid-run.com, iommu@lists.linux.dev, linux-kernel@vger.kernel.org, asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-s390@vger.kernel.org, linux-tegra@vger.kernel.org, virtualization@lists.linux-foundation.org, kvm@vger.kernel.org, kevin.tian@intel.com References: <20220815181437.28127-1-nicolinc@nvidia.com> <20220815181437.28127-2-nicolinc@nvidia.com> From: Robin Murphy In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE 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 On 2022-09-07 14:47, Jason Gunthorpe wrote: > On Wed, Sep 07, 2022 at 02:41:54PM +0200, Joerg Roedel wrote: >> On Mon, Aug 15, 2022 at 11:14:33AM -0700, Nicolin Chen wrote: >>> Provide a dedicated errno from the IOMMU driver during attach that the >>> reason attached failed is because of domain incompatability. EMEDIUMTYPE >>> is chosen because it is never used within the iommu subsystem today and >>> evokes a sense that the 'medium' aka the domain is incompatible. >> >> I am not a fan of re-using EMEDIUMTYPE or any other special value. What >> is needed here in EINVAL, but with a way to tell the caller which of the >> function parameters is actually invalid. > > Using errnos to indicate the nature of failure is a well established > unix practice, it is why we have hundreds of error codes and don't > just return -EINVAL for everything. > > What don't you like about it? > > Would you be happier if we wrote it like > > #define IOMMU_EINCOMPATIBLE_DEVICE xx > > Which tells "which of the function parameters is actually invalid" ? FWIW, we're now very close to being able to validate dev->iommu against where the domain came from in core code, and so short-circuit ->attach_dev entirely if they don't match. At that point -EINVAL at the driver callback level could be assumed to refer to the domain argument, while anything else could be taken as something going unexpectedly wrong when the attach may otherwise have worked. I've forgotten if we actually had a valid case anywhere for "this is my device but even if you retry with a different domain it's still never going to work", but I think we wouldn't actually need that anyway - it should be clear enough to a caller that if attaching to an existing domain fails, then allocating a fresh domain and attaching also fails, that's the point to give up. Robin.