Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp330889pxk; Thu, 1 Oct 2020 03:37:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxS+FGPVKavhr3TRKlyw/OS1PNZjxFrQ6PwAZh40vu+odiPkRvcFTUSN95wSmIWbw77fk5L X-Received: by 2002:a17:906:b88e:: with SMTP id hb14mr7103998ejb.543.1601548646408; Thu, 01 Oct 2020 03:37:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601548646; cv=none; d=google.com; s=arc-20160816; b=eJibWT6lw9es5bO0VUrLkXzwF6xFUT7BHUqpeTrXyJir9vJXacUuALCcQHzm3N0RSj 3TY/mFfYAuIasP8gVRNucCWdmLASFYav/bBOGghLNDK1R3ObWCL62bWvA4JTx+ItMPS0 uPNQmzHY+E2RLOXCB1EV+gkBMIjuVpvYP032aWkOe6R/Q4bspzCd1rFxFKmkze6dk2cQ jYYPlCdEkX4TsXaOSZWWjGDN0tmxYd57ibXvtL8R+2HSTQH7bKVT72Bg5bx5g8p7bbk0 13t6HjyVzp8fjVTpVgya02SKLEMAj0RuKmlZS7zjzXbwKmnC+2SswFt0Pi3fTLdX9C7Y vyKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=rGjo8l+NdpUXZUZilL4Q0g6fe7v4+HYilXIVrlEcVns=; b=bafoEQkWDVHcVVeN7jJvjImi4HK938SFnAAG0XyKmopF/+Rf6KXa7PoBeybJOP/Tm1 pqqvqRkJQGpPoQ7nSbe/hB7OiuL1VRPjlZeBMC5Blf3FQXOVhwdVg/TBDEpkys0/uJcS 6Hl3uudjlaq3BAWuFs6aa7yc6wXAJM0YoLUnItH3is/aSmI1FMkAK0XQFDAoc2HOGKxu B1iimO/6EoY73VybVEHQksILt1qfBKbJg9Fygjv5ai0LV5cNyU7EmyjeXD5AEl0JivFR wbTrfIr9BW4T3YB01oRCFafGK0dkHw3PQZYYce4qRISo1eCKaPBZ1ZxcbgsAwapVo8yV by9A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=kIlhuTNq; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 16si2862393edv.551.2020.10.01.03.37.03; Thu, 01 Oct 2020 03:37:26 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=kIlhuTNq; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732217AbgJAKdt (ORCPT + 99 others); Thu, 1 Oct 2020 06:33:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49850 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732191AbgJAKdZ (ORCPT ); Thu, 1 Oct 2020 06:33:25 -0400 Received: from mail-pj1-x1041.google.com (mail-pj1-x1041.google.com [IPv6:2607:f8b0:4864:20::1041]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 39524C0613D0; Thu, 1 Oct 2020 03:33:25 -0700 (PDT) Received: by mail-pj1-x1041.google.com with SMTP id q4so1742235pjh.5; Thu, 01 Oct 2020 03:33:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=rGjo8l+NdpUXZUZilL4Q0g6fe7v4+HYilXIVrlEcVns=; b=kIlhuTNqwSTNhpHOrcs3e9r8cZPB4BQivq2B++Zm7J3/CHW/Q1TguGqKMZqeU9Etek rXcQE2DBMTI02L3/D7/2zw2SBASLVn7JPYyGbwvmCKZM6OOhy4ewV1MSEDCFAhJfZQto QoQE7DyXm+g8YWoG01UrHPNSjm6PV2+cNF/IQUanhW5bL0nJkaBH7oNnPZ7FCHECkU2E ERneJFOPz70xBd676Ns1f/VFEL0QcI4yxFSV5F9p8mbwe7lARibAQ7IuedFD9jtrJoai SThkqUcd9rE/QVJQ2RNjR8DrPFR7FOzdhfeOXK3F6s+7LflIhKxFx+DmyZrtEFN+51AP XstA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=rGjo8l+NdpUXZUZilL4Q0g6fe7v4+HYilXIVrlEcVns=; b=uRStvAmtjl+0Qls7hDHK/OUPjD5khEa4jfE352NMgujwahM3xihZlNApusydOMu5LP ttM57GKnqQknru/QfQXN/rkXYVDNXnjvFnqLSNee92HqHlIou29jWmEF+TMyuMDDifxI C35NZrcfVDfWzS1gikf9xBciroWbTMvWLQNJlujILmyr+M3MOdNm2iCJb/VBW40IfttU +zQ+xXR6MLZe5R3FUv2lbx/f51zweGSq/xZC4aYkxu6tpq9TOdEglidTVGdEX0RGUNqH PKjhlUuKjUh/yMfxNYL7XzBanuTmHQGb2RlRxNgD12ek1THxKuEwJGaAUER9Z9igVxcO LM2g== X-Gm-Message-State: AOAM531xw5xXX9EoekWJPZv+qqd1i7rRZBJoscithsq68uFYeirxOCAS gcexkAk6SgsywkTjXZcjhxs= X-Received: by 2002:a17:90b:a44:: with SMTP id gw4mr6137841pjb.26.1601548404519; Thu, 01 Oct 2020 03:33:24 -0700 (PDT) Received: from Asurada (c-73-162-191-63.hsd1.ca.comcast.net. [73.162.191.63]) by smtp.gmail.com with ESMTPSA id h5sm5432799pja.55.2020.10.01.03.33.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 01 Oct 2020 03:33:24 -0700 (PDT) Date: Thu, 1 Oct 2020 03:33:19 -0700 From: Nicolin Chen To: Thierry Reding Cc: Dmitry Osipenko , joro@8bytes.org, krzk@kernel.org, vdumpa@nvidia.com, jonathanh@nvidia.com, linux-tegra@vger.kernel.org, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 2/3] iommu/tegra-smmu: Rework .probe_device and .attach_dev Message-ID: <20201001103318.GA1272@Asurada> References: <20200930084258.25493-1-nicoleotsuka@gmail.com> <20200930084258.25493-3-nicoleotsuka@gmail.com> <20200930153131.GB3833404@ulmo> <20200930203618.GC2110@Asurada-Nvidia> <13746922-0253-cda7-e9ac-2bd20bf1a17f@gmail.com> <20200930213244.GA10573@Asurada-Nvidia> <5945a63e-79d8-e3ae-ab53-cee8c220ac7d@gmail.com> <20201001012630.GA28240@Asurada-Nvidia> <20201001095152.GD3919720@ulmo> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201001095152.GD3919720@ulmo> User-Agent: Mutt/1.5.22 (2013-10-16) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Oct 01, 2020 at 11:51:52AM +0200, Thierry Reding wrote: > > > >> ... > > > >>>> It looks to me like the only reason why you need this new global API is > > > >>>> because PCI devices may not have a device tree node with a phandle to > > > >>>> the IOMMU. However, SMMU support for PCI will only be enabled if the > > > >>>> root complex has an iommus property, right? In that case, can't we > > > >>>> simply do something like this: > > > >>>> > > > >>>> if (dev_is_pci(dev)) > > > >>>> np = find_host_bridge(dev)->of_node; > > > >>>> else > > > >>>> np = dev->of_node; > > > >>>> > > > >>>> ? I'm not sure exactly what find_host_bridge() is called, but I'm pretty > > > >>>> sure that exists. > > @@ -814,12 +815,15 @@ static struct tegra_smmu *tegra_smmu_find(struct device_node *np) > > } > > > > static int tegra_smmu_configure(struct tegra_smmu *smmu, struct device *dev, > > - struct of_phandle_args *args) > > + struct of_phandle_args *args, struct fwnode_handle *fwnode) > > { > > const struct iommu_ops *ops = smmu->iommu.ops; > > int err; > > > > - err = iommu_fwspec_init(dev, &dev->of_node->fwnode, ops); > > + if (!fwnode) > > + return -ENOENT; > > + > > + err = iommu_fwspec_init(dev, fwnode, ops); > > if (err < 0) { > > dev_err(dev, "failed to initialize fwspec: %d\n", err); > > return err; > > @@ -835,6 +839,19 @@ static int tegra_smmu_configure(struct tegra_smmu *smmu, struct device *dev, > > return 0; > > } > > > > +static struct device_node *tegra_smmu_find_pci_np(struct pci_dev *pci_dev) > > +{ > > + struct pci_bus *bus = pci_dev->bus; > > + struct device *dev = &bus->dev; > > + > > + while (!of_property_read_bool(dev->of_node, "iommus") && bus->parent) { > > + dev = &bus->parent->dev; > > + bus = bus->parent; > > + } > > + > > + return dev->of_node; > > +} > > This seems like it's the equivalent of pci_get_host_bridge_device(). Can > you use that instead? I think you might use the parent of the host > bridge that's returned from that function, though. I noticed that one when looking up one of the of_ functions, yet also found that this pci_get_host_bridge_device() is privated by https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/pci/pci.h?id=975e1ac173058b8710e5979e97fc1397233301f3 Would PCI folks be that willing to (allow to) revert it?