Received: by 10.192.165.148 with SMTP id m20csp50860imm; Thu, 19 Apr 2018 12:50:31 -0700 (PDT) X-Google-Smtp-Source: AIpwx49OVBzP0DOPfzlT57pPWS5JQErbOWQ2pyvEmu+wntb26/dyUtW2zIezOD57Z/b/IOSgQBJl X-Received: by 2002:a17:902:7405:: with SMTP id g5-v6mr7439346pll.4.1524167431851; Thu, 19 Apr 2018 12:50:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524167431; cv=none; d=google.com; s=arc-20160816; b=byBEGQ5hOPChhXEzY+2kn2xyLjcgjOkulv/GPK373izT5B/CY/hmxxvIc9ffCZwiYb f9KXHpClJrAWh+1sSrRURjVe+OmXdbIue/OHr+tJvXzQiNA9ITKxHzReYioq1TyqdPxE bEHxlXZ07EYKGsRY25UsF8lAOxoiHoZ7BxTY8ZcsDnNXebS5iA+DWT/s17pt6KxuZzcO G5hzpmcDpmcPdzWVbYhUi0ALHH7ufVVPwU7lwOKSH70QJLUH2C1IFvGKTdR4OKZ3OwpH s15yFhw3RaJqMR7SPvAhtNMM7PoJ8yQ3kDmLw8uLCtfy/xCxAiBLwHVPNrSQ4NIARDVL GO1w== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:references:cc:to:from:subject:arc-authentication-results; bh=IlLIPovny5ipGbFY2iriLDUzVAyUInv061D2dRZW9Ns=; b=PQEc9CsWUJ+qm8kU9zWr1Yi0ot99JDwkwyXLFgk38+9Z0kkYntr7I0LvpeSnidz+yp t9OMvujKH9zOTKCPRX2JNUYU6lYCilDPmyrmdhHL7hYuPeO16RO7FP31jBkCwkxGCW+Q GB+FELrKVtSNKAUaascKv/uPl+4J3lmP920U0gFWrMT8qeO2lZEQhgjaaUnzqsJRb8p/ PQcZgB1zAX5cBK71UyhwkiBX4phYJXuXwVvgcuMn9NjErXJ+bOIWu9Hh9WHQXV+TbML/ +DuV1um7Ol0147WQ/7m/H2awvjvO9rFzPb5Nw6ge8UraAs4ToPXqroY/2mrquIj+m346 Y7fg== 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 s189si3439719pgb.126.2018.04.19.12.50.16; Thu, 19 Apr 2018 12:50:31 -0700 (PDT) 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 S1753396AbeDSTs7 (ORCPT + 99 others); Thu, 19 Apr 2018 15:48:59 -0400 Received: from mga12.intel.com ([192.55.52.136]:51397 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752578AbeDSTs5 (ORCPT ); Thu, 19 Apr 2018 15:48:57 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Apr 2018 12:48:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,297,1520924400"; d="scan'208";a="35575832" Received: from yoojae-mobl1.amr.corp.intel.com (HELO [10.7.153.147]) ([10.7.153.147]) by orsmga006.jf.intel.com with ESMTP; 19 Apr 2018 12:48:56 -0700 Subject: Re: [PATCH v3 07/10] Documentation: dt-bindings: Add documents for PECI hwmon client drivers From: Jae Hyun Yoo To: Rob Herring Cc: Alan Cox , Andrew Jeffery , Andrew Lunn , Andy Shevchenko , Arnd Bergmann , Benjamin Herrenschmidt , Fengguang Wu , Greg KH , Guenter Roeck , Haiyue Wang , James Feist , Jason M Biils , Jean Delvare , Joel Stanley , Julia Cartwright , Miguel Ojeda , Milton Miller II , Pavel Machek , Randy Dunlap , Stef van Os , Sumeet R Pawnikar , Vernon Mauery , "linux-kernel@vger.kernel.org" , linux-doc@vger.kernel.org, devicetree@vger.kernel.org, Linux HWMON List , "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" , OpenBMC Maillist References: <20180410183212.16787-1-jae.hyun.yoo@linux.intel.com> <20180410183212.16787-8-jae.hyun.yoo@linux.intel.com> <20180416181423.t4vf7sugv6z3aw5h@rob-hp-laptop> <287e0fd9-b631-2602-2785-7b8aaed7a6b9@linux.intel.com> <6ff697e8-cd20-e551-da13-b614cc39f900@linux.intel.com> <1f2a86ff-b902-1d1d-488a-807ac1dd20cc@linux.intel.com> <884d3c16-84e8-e38a-731a-313ba7105176@linux.intel.com> Message-ID: <411481f1-78fe-d53f-cf56-c58a5ce954f3@linux.intel.com> Date: Thu, 19 Apr 2018 12:48:55 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <884d3c16-84e8-e38a-731a-313ba7105176@linux.intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 4/18/2018 2:57 PM, Jae Hyun Yoo wrote: > On 4/18/2018 2:28 PM, Rob Herring wrote: >> On Wed, Apr 18, 2018 at 3:28 PM, Jae Hyun Yoo >> wrote: >>> On 4/18/2018 7:32 AM, Rob Herring wrote: >>>> >>>> On Tue, Apr 17, 2018 at 3:40 PM, Jae Hyun Yoo >>>> wrote: >>>>> >>>>> On 4/16/2018 4:51 PM, Jae Hyun Yoo wrote: >>>>>> >>>>>> >>>>>> On 4/16/2018 4:22 PM, Jae Hyun Yoo wrote: >>>>>>> >>>>>>> >>>>>>> On 4/16/2018 11:14 AM, Rob Herring wrote: >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Apr 10, 2018 at 11:32:09AM -0700, Jae Hyun Yoo wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> This commit adds dt-bindings documents for PECI cputemp and >>>>>>>>> dimmtemp >>>>>>>>> client >>>>>>>>> drivers. >>>>>>>> >>>>>>>> >>>>>>>> >>>>> >>>>> [...] >>>>> >>>>>>>>> +Example: >>>>>>>>> +    peci-bus@0 { >>>>>>>>> +        #address-cells = <1>; >>>>>>>>> +        #size-cells = <0>; >>>>>>>>> +        < more properties > >>>>>>>>> + >>>>>>>>> +        peci-dimmtemp@cpu0 { >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> unit-address is wrong. >>>>>>>> >>>>>>> >>>>>>> Will fix it using the reg value. >>>>>>> >>>>>>>> It is a different bus from cputemp? Otherwise, you have conflicting >>>>>>>> addresses. If that's the case, probably should make it clear by >>>>>>>> showing >>>>>>>> different host adapters for each example. >>>>>>>> >>>>>>> >>>>>>> It could be the same bus with cputemp. Also, client address >>>>>>> sharing is >>>>>>> possible by PECI core if the functionality is different. I mean, >>>>>>> cputemp and >>>>>>> dimmtemp targeting the same client is possible case like this. >>>>>>> peci-cputemp@30 >>>>>>> peci-dimmtemp@30 >>>>>>> >>>>>> >>>>>> Oh, I got your point. Probably, I should change these separate >>>>>> settings >>>>>> into one like >>>>>> >>>>>> peci-client@30 { >>>>>>        compatible = "intel,peci-client"; >>>>>>        reg = <0x30>; >>>>>> }; >>>>>> >>>>>> Then cputemp and dimmtemp drivers could refer the same compatible >>>>>> string. >>>>>> Will rewrite it. >>>>>> >>>>> >>>>> I've checked it again and realized that it should use function >>>>> based node >>>>> name like: >>>>> >>>>> peci-cputemp@30 >>>>> peci-dimmtemp@30 >>>>> >>>>> If it use the same string like 'peci-client@30', the drivers cannot be >>>>> selectively enabled. The client address sharing way is well handled in >>>>> PECI >>>>> core and this way would be better for the future implementations of >>>>> other >>>>> PECI functional drivers such as crash dump driver and so on. So I'm >>>>> going >>>>> change the unit-address only. >>>> >>>> >>>> 2 nodes at the same address is wrong (and soon dtc will warn you on >>>> this). You have 2 potential options. The first is you need additional >>>> address information in the DT if these are in fact 2 independent >>>> devices. This could be something like a function number to use >>>> something from PCI addressing. From what I found on PECI, it doesn't >>>> seem to have anything like that. The 2nd option is you have a single >>>> DT node which registers multiple hwmon devices. DT nodes and drivers >>>> don't have to be 1-1. Don't design your DT nodes from how you want to >>>> partition drivers in some OS. >>>> >>>> Rob >>>> >>> >>> Please correct me if I'm wrong but I'm still thinking that it is >>> possible. Also, I did compile it but dtc doesn't make a warning. Let me >>> show an another use case which is similar to this case: >> >> I did say *soon*. It's in dtc repo, but not the kernel copy yet. >> >>> In arch/arm/boot/dts/aspeed-g5.dtsi >>> [...] >>> lpc_host: lpc-host@80 { >>>          compatible = "aspeed,ast2500-lpc-host", "simple-mfd", "syscon"; >>>          reg = <0x80 0x1e0>; >>>          reg-io-width = <4>; >>> >>>          #address-cells = <1>; >>>          #size-cells = <1>; >>>          ranges = <0x0 0x80 0x1e0>; >>> >>>          lpc_ctrl: lpc-ctrl@0 { >>>                  compatible = "aspeed,ast2500-lpc-ctrl"; >>>                  reg = <0x0 0x80>; >>>                  clocks = <&syscon ASPEED_CLK_GATE_LCLK>; >>>                  status = "disabled"; >>>          }; >>> >>>          lpc_snoop: lpc-snoop@0 { >>>                  compatible = "aspeed,ast2500-lpc-snoop"; >>>                  reg = <0x0 0x80>; >>>                  interrupts = <8>; >>>                  status = "disabled"; >>>          }; >>> } >>> [...] >>> >>> This is device tree setting for LPC interface and its child nodes. >>> LPC interface can be used as a multi-functional interface such as >>> snoop 80, KCS, SIO and so on. In this use case, lpc-ctrl@0 and >>> lpc-snoop@0 are sharing their address range from their individual >>> driver modules and they can be registered quite well through both >>> static dt or dynamic dtoverlay. PECI is also a multi-functional >>> interface which is similar to the above case, I think. >> >> This case too is poor design and should be fixed as well. Simply put, >> you can have 2 devices on a bus at the same address without some sort >> of mux or arbitration device in the middle. If you have a device/block >> with multiple functions provided to the OS, then it is the OS's >> problem to arbitrate access. It is not a DT problem because OS's can >> vary in how they handle that both from OS to OS and over time. >> >> Rob >> > > If I change it to a single DT node which registers 2 hwmon devices using > the 2nd option above, then I still have 2 devices on a bus at the same > address. Does it also make a problem to the OS then? > > Jae Additionally, I need to explain that there is one and only bus host (adapter) and multiple clients on a PECI bus, and PECI spec doesn't allow multiple originators so only the host device can originate message. In this implementation, all message transactions on a bus from client driver modules and user space will be serialized well in the PECI core bus driver so bus occupation and traffic arbitration will be managed well in the PECI core bus driver even in case of a bus has 2 client drivers at the same address. I'm sure that this implementation doesn't make that kind of problem to OS. Jae