All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
Cc: joel@jms.id.au, andrew@aj.id.au, arnd@arndb.de,
	gregkh@linuxfoundation.org, jdelvare@suse.com,
	linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	devicetree@vger.kernel.org, linux-hwmon@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, openbmc@lists.ozlabs.org
Subject: Re: [linux, dev-4.10, 6/6] drivers/hwmon: Add a driver for a generic PECI hwmon
Date: Thu, 11 Jan 2018 13:40:35 -0800	[thread overview]
Message-ID: <20180111214035.GA14748@roeck-us.net> (raw)
In-Reply-To: <261ac28e-813c-a058-c81f-ad4e718d0233@linux.intel.com>

On Thu, Jan 11, 2018 at 11:47:01AM -0800, Jae Hyun Yoo wrote:
> On 1/10/2018 1:47 PM, Guenter Roeck wrote:
> >On Tue, Jan 09, 2018 at 02:31:26PM -0800, Jae Hyun Yoo wrote:
> >>This commit adds driver implementation for a generic PECI hwmon.
> >>
> >>Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>

[ ... ]

> >>+
> >>+	if (priv->temp.tcontrol.valid &&
> >>+	    time_before(jiffies, priv->temp.tcontrol.last_updated +
> >>+				 UPDATE_INTERVAL_MIN))
> >>+		return 0;
> >>+
> >
> >Is the delay necessary ? Otherwise I would suggest to drop it.
> >It adds a lot of complexity to the driver. Also, if the user polls
> >values more often, that is presumably on purpose.
> >
> 
> I was intended to reduce traffic on PECI bus because it's low speed single
> wired bus, and temperature values don't change frequently because the value
> is sampled and averaged in CPU itself. I'll keep this.
> 
Then please try to move the common code into a single function.

[ ... ]

> >>+
> >>+	rc = of_property_read_u32(np, "cpu-id", &priv->cpu_id);
> >
> >What entity determines cpu-id ?
> >
> 
> CPU ID numbering is determined by hardware SOCKET_ID strap pins. In this
> driver implementation, cpu-id is being used as CPU client indexing.
> 
Seems to me the necessary information to identify a given CPU should
be provided by the PECI core. Also, there are already "cpu" nodes
in devicetree which, if I recall correctly, may include information
such as CPU Ids.

> >>+	if (rc || priv->cpu_id >= CPU_ID_MAX) {
> >>+		dev_err(dev, "Invalid cpu-id configuration\n");
> >>+		return rc;
> >>+	}
> >>+
> >>+	rc = of_property_read_u32(np, "dimm-nums", &priv->dimm_nums);
> >
> >This is an odd devicetree attribute. Normally the number of DIMMs
> >is dynamic. Isn't there a means to get all that information dynamically
> >instead of having to set it through devicetree ? What if someone adds
> >or removes a DIMM ? Who updates the devicetree ?
> >
> 
> It means the number of DIMM slots each CPU has, doesn't mean the number of
> currently installed DIMM components. If a DIMM is inserted a slot, CPU
> reports its actual temperature but on empty slot, CPU reports 0 instead of
> reporting an error so it is the reason why this driver enumerates all DIMM
> slots' attribute.
> 
And there is no other means to get the number of DIMM slots per CPU ?
It just seems to be that this is the wrong location to provide such
information.

[ ... ]

> >>+
> >>+static const struct of_device_id peci_of_table[] = {
> >>+	{ .compatible = "peci-hwmon", },
> >
> >This does not look like a reference to some piece of hardware.
> >
> 
> This driver provides generic PECI hwmon function to which controller has
> PECI HW such as Aspeed or Nuvoton BMC chip so it's not dependant on a
> specific hardware. Should I remove this or any suggestion?
> 

I don't really know enough about the system to make a recommendation.
It seems to me that the PECI core should identify which functionality
it supports and instantiate the necessary driver(s). Maybe there should
be sub-nodes to the peci node with relevant information. Those sub-nodes
should specify the supported functionality in more detail, though -
such as indicating the supported CPU and/or DIMM sensors.

Guenter

WARNING: multiple messages have this Message-ID (diff)
From: linux@roeck-us.net (Guenter Roeck)
To: linux-arm-kernel@lists.infradead.org
Subject: [linux, dev-4.10, 6/6] drivers/hwmon: Add a driver for a generic PECI hwmon
Date: Thu, 11 Jan 2018 13:40:35 -0800	[thread overview]
Message-ID: <20180111214035.GA14748@roeck-us.net> (raw)
In-Reply-To: <261ac28e-813c-a058-c81f-ad4e718d0233@linux.intel.com>

On Thu, Jan 11, 2018 at 11:47:01AM -0800, Jae Hyun Yoo wrote:
> On 1/10/2018 1:47 PM, Guenter Roeck wrote:
> >On Tue, Jan 09, 2018 at 02:31:26PM -0800, Jae Hyun Yoo wrote:
> >>This commit adds driver implementation for a generic PECI hwmon.
> >>
> >>Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>

[ ... ]

> >>+
> >>+	if (priv->temp.tcontrol.valid &&
> >>+	    time_before(jiffies, priv->temp.tcontrol.last_updated +
> >>+				 UPDATE_INTERVAL_MIN))
> >>+		return 0;
> >>+
> >
> >Is the delay necessary ? Otherwise I would suggest to drop it.
> >It adds a lot of complexity to the driver. Also, if the user polls
> >values more often, that is presumably on purpose.
> >
> 
> I was intended to reduce traffic on PECI bus because it's low speed single
> wired bus, and temperature values don't change frequently because the value
> is sampled and averaged in CPU itself. I'll keep this.
> 
Then please try to move the common code into a single function.

[ ... ]

> >>+
> >>+	rc = of_property_read_u32(np, "cpu-id", &priv->cpu_id);
> >
> >What entity determines cpu-id ?
> >
> 
> CPU ID numbering is determined by hardware SOCKET_ID strap pins. In this
> driver implementation, cpu-id is being used as CPU client indexing.
> 
Seems to me the necessary information to identify a given CPU should
be provided by the PECI core. Also, there are already "cpu" nodes
in devicetree which, if I recall correctly, may include information
such as CPU Ids.

> >>+	if (rc || priv->cpu_id >= CPU_ID_MAX) {
> >>+		dev_err(dev, "Invalid cpu-id configuration\n");
> >>+		return rc;
> >>+	}
> >>+
> >>+	rc = of_property_read_u32(np, "dimm-nums", &priv->dimm_nums);
> >
> >This is an odd devicetree attribute. Normally the number of DIMMs
> >is dynamic. Isn't there a means to get all that information dynamically
> >instead of having to set it through devicetree ? What if someone adds
> >or removes a DIMM ? Who updates the devicetree ?
> >
> 
> It means the number of DIMM slots each CPU has, doesn't mean the number of
> currently installed DIMM components. If a DIMM is inserted a slot, CPU
> reports its actual temperature but on empty slot, CPU reports 0 instead of
> reporting an error so it is the reason why this driver enumerates all DIMM
> slots' attribute.
> 
And there is no other means to get the number of DIMM slots per CPU ?
It just seems to be that this is the wrong location to provide such
information.

[ ... ]

> >>+
> >>+static const struct of_device_id peci_of_table[] = {
> >>+	{ .compatible = "peci-hwmon", },
> >
> >This does not look like a reference to some piece of hardware.
> >
> 
> This driver provides generic PECI hwmon function to which controller has
> PECI HW such as Aspeed or Nuvoton BMC chip so it's not dependant on a
> specific hardware. Should I remove this or any suggestion?
> 

I don't really know enough about the system to make a recommendation.
It seems to me that the PECI core should identify which functionality
it supports and instantiate the necessary driver(s). Maybe there should
be sub-nodes to the peci node with relevant information. Those sub-nodes
should specify the supported functionality in more detail, though -
such as indicating the supported CPU and/or DIMM sensors.

Guenter

  reply	other threads:[~2018-01-11 21:40 UTC|newest]

Thread overview: 118+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-09 22:31 [PATCH linux dev-4.10 0/6] Add support PECI and PECI hwmon drivers Jae Hyun Yoo
2018-01-09 22:31 ` Jae Hyun Yoo
2018-01-09 22:31 ` Jae Hyun Yoo
2018-01-09 22:31 ` [PATCH linux dev-4.10 1/6] Documentation: dt-bindings: Add Aspeed PECI Jae Hyun Yoo
2018-01-09 22:31   ` Jae Hyun Yoo
2018-01-09 22:31 ` [PATCH linux dev-4.10 2/6] ARM: dts: aspeed: peci: " Jae Hyun Yoo
2018-01-09 22:31   ` Jae Hyun Yoo
2018-01-09 22:31 ` [PATCH linux dev-4.10 3/6] drivers/misc: Add driver for Aspeed PECI and generic PECI headers Jae Hyun Yoo
2018-01-09 22:31   ` Jae Hyun Yoo
2018-01-09 22:31   ` Jae Hyun Yoo
2018-01-10 10:18   ` Greg KH
2018-01-10 10:18     ` Greg KH
2018-01-10 10:18     ` Greg KH
2018-01-10 19:32     ` Jae Hyun Yoo
2018-01-10 19:32       ` Jae Hyun Yoo
2018-01-11  9:02     ` Benjamin Herrenschmidt
2018-01-11  9:02       ` Benjamin Herrenschmidt
2018-01-11  9:02       ` Benjamin Herrenschmidt
2018-01-11 20:33       ` Jae Hyun Yoo
2018-01-11 20:33         ` Jae Hyun Yoo
2018-01-10 10:20   ` Greg KH
2018-01-10 10:20     ` Greg KH
2018-01-10 10:20     ` Greg KH
2018-01-10 19:34     ` Jae Hyun Yoo
2018-01-10 19:34       ` Jae Hyun Yoo
2018-01-10 11:55   ` Arnd Bergmann
2018-01-10 11:55     ` Arnd Bergmann
2018-01-10 11:55     ` Arnd Bergmann
2018-01-10 23:11     ` Jae Hyun Yoo
2018-01-10 23:11       ` Jae Hyun Yoo
2018-01-11  9:06   ` Benjamin Herrenschmidt
2018-01-11  9:06     ` Benjamin Herrenschmidt
2018-01-11  9:06     ` Benjamin Herrenschmidt
2018-01-11 20:42     ` Jae Hyun Yoo
2018-01-11 20:42       ` Jae Hyun Yoo
2018-01-11 20:42       ` Jae Hyun Yoo
2018-01-09 22:31 ` [PATCH linux dev-4.10 4/6] Documentation: dt-bindings: Add a generic PECI hwmon Jae Hyun Yoo
2018-01-09 22:31   ` Jae Hyun Yoo
2018-01-10 12:20   ` Arnd Bergmann
2018-01-10 12:20     ` Arnd Bergmann
2018-01-10 12:20     ` Arnd Bergmann
2018-01-10 23:20     ` Jae Hyun Yoo
2018-01-10 23:20       ` Jae Hyun Yoo
2018-01-09 22:31 ` [PATCH linux dev-4.10 5/6] Documentation: hwmon: " Jae Hyun Yoo
2018-01-09 22:31   ` Jae Hyun Yoo
2018-01-09 22:31   ` Jae Hyun Yoo
2018-01-09 22:31 ` [PATCH linux dev-4.10 6/6] drivers/hwmon: Add a driver for " Jae Hyun Yoo
2018-01-09 22:31   ` Jae Hyun Yoo
2018-01-10 12:29   ` Arnd Bergmann
2018-01-10 12:29     ` Arnd Bergmann
2018-01-10 12:29     ` Arnd Bergmann
2018-01-10 23:45     ` Jae Hyun Yoo
2018-01-10 23:45       ` Jae Hyun Yoo
2018-01-11 13:22       ` Arnd Bergmann
2018-01-11 13:22         ` Arnd Bergmann
2018-01-11 13:22         ` Arnd Bergmann
2018-01-11 20:49         ` Jae Hyun Yoo
2018-01-11 20:49           ` Jae Hyun Yoo
2018-01-10 21:47   ` [linux, dev-4.10, " Guenter Roeck
2018-01-10 21:47     ` Guenter Roeck
2018-01-11 19:47     ` Jae Hyun Yoo
2018-01-11 19:47       ` Jae Hyun Yoo
2018-01-11 19:47       ` Jae Hyun Yoo
2018-01-11 21:40       ` Guenter Roeck [this message]
2018-01-11 21:40         ` Guenter Roeck
2018-01-11 22:18         ` Andrew Lunn
2018-01-11 22:18           ` Andrew Lunn
2018-01-11 22:18           ` Andrew Lunn
2018-01-11 23:14           ` Jae Hyun Yoo
2018-01-11 23:14             ` Jae Hyun Yoo
2018-01-11 23:53             ` Andrew Lunn
2018-01-11 23:53               ` Andrew Lunn
2018-01-12  0:26               ` Jae Hyun Yoo
2018-01-12  0:26                 ` Jae Hyun Yoo
2018-01-11 23:03         ` Jae Hyun Yoo
2018-01-11 23:03           ` Jae Hyun Yoo
2018-01-11 23:03           ` Jae Hyun Yoo
2018-01-10 10:17 ` [PATCH linux dev-4.10 0/6] Add support PECI and PECI hwmon drivers Greg KH
2018-01-10 10:17   ` Greg KH
2018-01-10 10:17   ` Greg KH
2018-01-10 19:14   ` Jae Hyun Yoo
2018-01-10 19:14     ` Jae Hyun Yoo
2018-01-10 19:17     ` Greg KH
2018-01-10 19:17       ` Greg KH
2018-01-10 19:17       ` Greg KH
2018-01-10 19:30       ` Jae Hyun Yoo
2018-01-10 19:30         ` Jae Hyun Yoo
2018-01-10 20:27         ` Greg KH
2018-01-10 20:27           ` Greg KH
2018-01-10 20:27           ` Greg KH
2018-01-10 21:46           ` Jae Hyun Yoo
2018-01-10 21:46             ` Jae Hyun Yoo
2018-01-10 21:46             ` Jae Hyun Yoo
2018-01-11  7:30             ` Greg KH
2018-01-11  7:30               ` Greg KH
2018-01-11  8:28               ` Joel Stanley
2018-01-11  8:28                 ` Joel Stanley
2018-01-11  8:28                 ` Joel Stanley
2018-01-11  8:41                 ` Greg KH
2018-01-11  8:41                   ` Greg KH
2018-01-11  8:41                   ` Greg KH
2018-01-11  9:17                   ` Arnd Bergmann
2018-01-11  9:17                     ` Arnd Bergmann
2018-01-11  9:17                     ` Arnd Bergmann
2018-01-11  9:17                     ` Arnd Bergmann
2018-01-11  9:21                   ` Benjamin Herrenschmidt
2018-01-11  9:21                     ` Benjamin Herrenschmidt
2018-01-11  9:21                     ` Benjamin Herrenschmidt
2018-01-11  8:56               ` Benjamin Herrenschmidt
2018-01-11  8:56                 ` Benjamin Herrenschmidt
2018-01-11  9:59                 ` Greg KH
2018-01-11  9:59                   ` Greg KH
2018-01-11  9:59                   ` Greg KH
2018-01-11 20:49                   ` Benjamin Herrenschmidt
2018-01-11 20:49                     ` Benjamin Herrenschmidt
2018-01-11 20:49                     ` Benjamin Herrenschmidt
2018-01-11 19:54                 ` Jae Hyun Yoo
2018-01-11 19:54                   ` Jae Hyun Yoo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180111214035.GA14748@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=andrew@aj.id.au \
    --cc=arnd@arndb.de \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jae.hyun.yoo@linux.intel.com \
    --cc=jdelvare@suse.com \
    --cc=joel@jms.id.au \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=openbmc@lists.ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.