Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp3837688ybx; Mon, 4 Nov 2019 03:44:38 -0800 (PST) X-Google-Smtp-Source: APXvYqwzGPAb6bRwC+ThoYUOPwLZT7vIo4bIOSmtI4pXcyPO2SpvtzR3USlZ7mCVEIN+GgRWHWYS X-Received: by 2002:a17:906:3b06:: with SMTP id g6mr1575348ejf.20.1572867878347; Mon, 04 Nov 2019 03:44:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572867878; cv=none; d=google.com; s=arc-20160816; b=CQ5yB4D5zurXqFGV/ORSeDBXq+JievIhBqEBS24LOoZYCWKlDxl/D4l6OZGZ0fQdZR eHYBZieOsw5BBSjif1MA6PKKF6CpOWtozfFV+fdA1a7x8f096oIR+XSwc/iEO564SPJW eURDduEC1qWy4a6di+ixU6+W10I/Uwkvgq1+zIQIBoogKADm+6byJWGMhAdD8JrkeBec Oq0tV+Gev0q1Xj72ez+9YWN49ZgzQN4yX4tUWvIo1wKsYlwx+BIr2V88QG1GdnkwmiHG HobsSd7GLxTr4heBNjOeE97DrKkAyfG8IqabnzCnKVlPJNpKsMfOC2uDCGYDvgqnIS9d Sndg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=PDxhnkjdAejklov2BYQ0YohWWXtYMNmWmyNpP/4fg0c=; b=BM5jRDoIIHxo5x7woqIgBcJvUlo2F2UF5iBwsaglg5VYmVhtxee+PYu01HcowmRRgM 9tlPp1T3GD+9LzUtmdrDbqQP1ZbxpcdUG8uwnHiBGLCaGSUPqSsHWuTtCRG2eNJSyYvx EJvXF+ZOSeNqXoeQ/xBU3roQngarxSve4DFrMjtYNgKxcF0zGPvd4YAgZ6TwnC2hoknN M5T17Rs4qJ9u1+XhZDWhb2x0fnbou4277mxf28NWM6cfz+x3Bn1URkvY3JCqRfDW8+iV NpbHQ6ZFrJsfEUDzAn4WOZZ3gMovfUe61/Cld91Y8ttSmUmahsu9aBJ0dPD/YX1xv9UI hZGg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h6si6914203eda.258.2019.11.04.03.44.14; Mon, 04 Nov 2019 03:44:38 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727766AbfKDLnb (ORCPT + 99 others); Mon, 4 Nov 2019 06:43:31 -0500 Received: from foss.arm.com ([217.140.110.172]:40634 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726441AbfKDLnb (ORCPT ); Mon, 4 Nov 2019 06:43:31 -0500 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 C685D1FB; Mon, 4 Nov 2019 03:43:29 -0800 (PST) Received: from e121166-lin.cambridge.arm.com (unknown [10.1.196.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BF4C03F71A; Mon, 4 Nov 2019 03:43:28 -0800 (PST) Date: Mon, 4 Nov 2019 11:43:19 +0000 From: Lorenzo Pieralisi To: Saravana Kannan Cc: Jean-Philippe Brucker , Will Deacon , LKML , iommu@lists.linux-foundation.org, Bjorn Helgaas , Robin Murphy Subject: Re: [PATCH 0/7] iommu: Permit modular builds of ARM SMMU[v3] drivers Message-ID: <20191104114312.GA15105@e121166-lin.cambridge.arm.com> References: <20191030145112.19738-1-will@kernel.org> <6e457227-ca06-2998-4ffa-a58ab171ce32@arm.com> <20191030155444.GC19096@willie-the-truck> <20191031193758.GA2607492@lophozonia> <20191101114148.GA2694906@lophozonia> <20191101122825.GA318@e121166-lin.cambridge.arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Nov 01, 2019 at 02:26:05PM -0700, Saravana Kannan wrote: > On Fri, Nov 1, 2019 at 5:28 AM Lorenzo Pieralisi > wrote: > > > > On Fri, Nov 01, 2019 at 12:41:48PM +0100, Jean-Philippe Brucker wrote: > > > > [...] > > > > > > > I'm also wondering about ACPI support. > > > > > > > > I'd love to add ACPI support too, but I have zero knowledge of ACPI. > > > > I'd be happy to help anyone who wants to add ACPI support that allows > > > > ACPI to add device links. > > > > > > It's not as generic as device-tree, each vendor has their own table to > > > describe the IOMMU topology. I don't see a nice way to transpose the > > > add_links() callback there. Links need to be created either in a common > > > path (iommu_probe_device()) or in the APCI IORT driver. > > > > We can create a generic stub that calls into respective firmware > > handling paths (eg iort_dma_setup() in acpi_dma_configure()). > > > > There are three arches booting with ACPI so stubbing it out in > > specific firmware handlers is not such a big deal, less generic > > sure, but not catastrophically bad. > > Ok, good to know. > > > Obviously this works for IOMMU masters links > > It's unclear to me what you are referring to here and it's throwing me > off on the rest of the email. > > Did you mean to say "IOMMU master's links"? As in the bus masters > whose accesses go through IOMMUs? And "links" as in device links? > > OR > > Do you mean device links from bus master devices to IOMMUs here? I meant associating endpoints devices to the IOMMU they are connected to. In DT you do it through "iommus", "iommu-map" properties, in ACPI it is arch specific, doable nonetheless through ACPI (IORT on ARM) static tables data. > > - for resources > > dependencies (eg power domains) it deserves some thought, keeping in > > mind that IOMMUs are static table entries in ACPI and not device objects > > so they are not even capable of expressing eg power resources and > > suchlike. > > If you can reword this sentence for me with more context or split it > into separate sentences, I'd appreciate that very much. I'd help me > understand this better and allow me to try to help out. In ACPI (at least on ARM but on x86 I suspect that's the same story with the DMAR table) an SMMU is presented in FW as an entry in a static table (eg IORT on ARM). I noticed that your patch series takes into account for instance eg clock dependencies in DT; this way the OS knows the clock(s) the SMMU depends on to be activated. In ACPI there is not a notion of "clock" (hopefully - unless someone sneaked that in using _DSD properties) but rather every device in the ACPI namespace (which is part of tables containing code that needs the ACPI interpreter to be used such as SSDT/DSDT - it is AML code) has ACPI objects describing power resources (ie ACPI specification 6.3, 7.2). The SMMU, since it is not itself an ACPI object in the ACPI namespace but rather an entry in a static ACPI table (IORT on ARM), can't have PowerResource object in it which means that at the moment there is no way you can detect a dependency on other power resources to be ON to build the device links you require to sort out the probe dependencies, which I *assume* that's the reason why you require to detect clock dependencies in DT. Maybe it is not even needed at all but in case it is I was giving a heads-up to say that clocks (or rather an all encompassing "power resource" dependency) dependencies in ACPI to build an SMMU as a module are not straightforward and most certainly will require firmware specifications updates. *Hopefully* in the short term all you need to detect is how endpoint devices are connected to an IOMMU and build device links to describe that probe dependency, if we need to throw power management into the picture there is more work to be done. I hope that's clearer, if it is not please let me know and I will try to be more precise. Thanks, Lorenzo