Received: by 10.223.185.116 with SMTP id b49csp6156146wrg; Wed, 28 Feb 2018 05:03:32 -0800 (PST) X-Google-Smtp-Source: AH8x226GMh1Nz3iqXelFKo8jDktfiTvLQsWl/3q2U7OSgOzRWjdPJlC7+PUL7u6GBUUXxYrEZd1e X-Received: by 10.99.113.90 with SMTP id b26mr14041468pgn.10.1519823012263; Wed, 28 Feb 2018 05:03:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519823012; cv=none; d=google.com; s=arc-20160816; b=XHRoy5Y2pZMWS/MAE6cFhYqU/xHF94RQ61KhesnM2v3AZOu+C8bRqVjREvZFXfTVWE QmEiU0qNCcFOV1YyO+Skg5FQLBNM4CbN4XcDKGEXSerCmuUDujWF4AOJm4Ab2yaNNP5C xl0YBNiLg/FKY3jN4LmLZcJlLkfvtIuktSCaL7yE4xCIWqC7A/pHxLJvPNvhZfUr07hd dAQACl6TQNEQ0Bo2j76AZCvcUJrdCetCZ+F2n4Lmv1h2MGm2wGtI4uoXsnKCLrDJN/KY zVsDas/BqnlJjPuakmBppeNUdXll4lm2ZJtlBCdvPYfwGgWTf4wy0+GdQLPgeY0E/K7i VzYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:in-reply-to :references:subject:cc:to:mime-version:user-agent:from:date :message-id:arc-authentication-results; bh=pgHBRTPdEQ/MIlPiIklS9WGzdsZxjYc2iFkTJFXiZzs=; b=CaIVnUbU8D4cUZrzbhd+Ebf6vegLGOd0i5XHbVUqhY8C1XB9WudQrfjPvTzzzmKOU1 Ztm2P9uEHHXAniOSUK2rjuitu+WTW/rf3cJye2H/GX+j6Enqcn4wJcNhdwuI7djs6iP9 lX0n6Atb3scSZ36Y1QsqtYS+IwUkVzFKWfHMJCv6Y/P7v9xKr8B6ZleejPTnmZtzB4hh D3wH37HF1fAP8FSp5Pzz/Vq3SzQvcWIY4mCWfR/B7E2ZaO7A5txMvZOoYcMrwUsVY1oX zWAPtkCYXDHRe6KJkRsb1ozZMPYM+T6DfwNvJuPc8iV53sICOZBf96/4/8/d+0/BksNs F/LQ== 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 l18si1005094pgn.339.2018.02.28.05.02.37; Wed, 28 Feb 2018 05:03:32 -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 S932151AbeB1NBO (ORCPT + 99 others); Wed, 28 Feb 2018 08:01:14 -0500 Received: from regular1.263xmail.com ([211.150.99.138]:38791 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932066AbeB1NBM (ORCPT ); Wed, 28 Feb 2018 08:01:12 -0500 Received: from jeffy.chen?rock-chips.com (unknown [192.168.167.234]) by regular1.263xmail.com (Postfix) with ESMTP id 2AC82797C; Wed, 28 Feb 2018 21:01:07 +0800 (CST) X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 Received: from [172.16.22.73] (localhost [127.0.0.1]) by smtp.263.net (Postfix) with ESMTPA id 2AF11308; Wed, 28 Feb 2018 21:00:56 +0800 (CST) X-RL-SENDER: jeffy.chen@rock-chips.com X-FST-TO: robin.murphy@arm.com X-SENDER-IP: 103.29.142.67 X-LOGIN-NAME: jeffy.chen@rock-chips.com X-UNIQUE-TAG: <77fd01b7be4465c845cce387e3324a64> X-ATTACHMENT-NUM: 0 X-SENDER: cjf@rock-chips.com X-DNS-TYPE: 0 Received: from [172.16.22.73] (unknown [103.29.142.67]) by smtp.263.net (Postfix) whith ESMTP id 10644TO9I55; Wed, 28 Feb 2018 21:01:07 +0800 (CST) Message-ID: <5A96A809.2020509@rock-chips.com> Date: Wed, 28 Feb 2018 21:00:57 +0800 From: JeffyChen User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20130126 Thunderbird/19.0 MIME-Version: 1.0 To: Robin Murphy , Rob Herring , Tomasz Figa CC: "linux-kernel@vger.kernel.org" , Ricky Liang , simon xue , devicetree@vger.kernel.org, Heiko Stuebner , "open list:ARM/Rockchip SoC..." , "list@263.net:IOMMU DRIVERS" , Joerg Roedel , Mark Rutland , linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v5 08/13] iommu/rockchip: Control clocks needed to access the IOMMU References: <20180124103516.2571-1-jeffy.chen@rock-chips.com> <20180124103516.2571-9-jeffy.chen@rock-chips.com> <20180130170515.3g6wtadqgmehxh5b@rob-hp-laptop> <5A72F7D2.1050201@rock-chips.com> <5A8FEBC6.4000408@rock-chips.com> <33d1d6bd-3455-5cad-6990-a9ca94063f3a@arm.com> In-Reply-To: <33d1d6bd-3455-5cad-6990-a9ca94063f3a@arm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Robin, Thanks for your reply. On 02/28/2018 12:59 AM, Robin Murphy wrote: >>> the rockchip IOMMU is part of the master block in hardware, so it needs >>> to control the master's power domain and some of the master's clocks >>> when access it's registers. >>> >>> and the number of clocks needed here, might be different between each >>> IOMMUs(according to which master block it belongs), it's a little like >>> our power domain: >>> https://elixir.free-electrons.com/linux/latest/source/arch/arm64/boot/dts/rockchip/rk3399.dtsi#L935 >>> >>> >>> >>> i'm not sure how to describe this correctly, is it ok use something like >>> "the same as it's master block"? >> >> would it make sense to add a property to specify the master who owns >> the iommu, and we can get all clocks(only some of those clocks are >> actually needed) from it in the of_xlate()? and we can also reuse the >> clock-names of that master to build clk_bulk_data and log errors in >> clk_bulk_get. > > I'm inclined to agree with Rob here - if we're to add anything to the > binding, it should only be whatever clock inputs are defined for the > IOMMU IP block itself. If Linux doesn't properly handle the interconnect > clock hierarchy external to a particular integration, that's a separate > issue and it's not the binding's problem. > > I actually quite like the hack of "borrowing" the clocks from > dev->of_node in of_xlate() - you shouldn't need any DT changes for that, > because you already know that each IOMMU instance only has the one > master device anyway. Thanks:) but actually we are going to support sharing IOMMU between multiple masters(one of them is the main master i think) in the newer chips(not yet supported on upstream kernel)... So we might have to get all clocks from all masters, or find a way to specify the main master...and for the multiple masters case, do it in of_xlate() turns out to be a little racy...maybe we can add a property to specify main master, and get it's clocks in probe()? > > Robin.