Received: by 10.192.165.148 with SMTP id m20csp2903752imm; Sun, 29 Apr 2018 09:29:18 -0700 (PDT) X-Google-Smtp-Source: AB8JxZoVPNXmhqaV3MDwVwDsXla/gLMQhyNbuD2/jZkM2DyS49ThFzitwcaTNwBay7eBMGDmLRNs X-Received: by 2002:a63:545:: with SMTP id 66-v6mr7886904pgf.446.1525019358324; Sun, 29 Apr 2018 09:29:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525019358; cv=none; d=google.com; s=arc-20160816; b=wa9j4Vq6TfjeT6jtInoEcQLhLQc4wfxnaINr3oPWCW6wloCI87h7PElZpx3meaIy9V 0RWhMNmLJ5LDy9IVdBypWuYN7+Wxe3TQiSAXKPLUGIPDRZI9Fd4EnN8lw6NxjGXIXBvo EWQpubjf/ZRQZmvg75jNCL0H/EuWCJBc99t4SQI8e56ZbDZa4v0IE1idwLImnXgJ914j 2TlKR7dnPN/NtDFdeVBywxTw5L79hQN1wCzGIeRuieXy4Q4hUBdOXvQBMG2nGpQ0Psbp Jc3rM4E+8ab2EY/+0HCzxGNsEV/j/5dsKP5t3ubOMSyZqevRrGKDnTenNssgSNouE+Xz VzXQ== 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:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=2Gf52O9uIYiaOChFZ229XcngLM65dRqtrvmYp5qxIUA=; b=do11iuu+DvD6nAUDWj9FgqVhL/2tc+uOxK4IPZk/1Kk0mRFQ58tPgh4IbATtWqd5KS tRE4pAwhYEwFH5yqtujKPzUFg7ewt8PrZqIFdKfZQu1K7Pxp/f+QQh+yb/488k9S4YfZ D1Ow7mO64pX94yKPf0POu8+FlUwSMOWWgP+bloF0F55UK7MhTHuvuCFEfjQm7J5liqBd kiA0L9nJ/yWaIObdrNHNb+Joik7yPGgxIYEhOfojW674y5SiguC01r368htUYis1xY0U BsU6IUQF9a+XWCosm1SRx8ypCc39j6bk1R9b2No6oCumo9DdrxfPLOX/T2NHDBgtAbc4 RK2g== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=KX+PSkCB; 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 v2-v6si4900571pge.105.2018.04.29.09.28.49; Sun, 29 Apr 2018 09:29:18 -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; dkim=fail header.i=@gmail.com header.s=20161025 header.b=KX+PSkCB; 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 S1753877AbeD2Q1R (ORCPT + 99 others); Sun, 29 Apr 2018 12:27:17 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:45142 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753546AbeD2Q1P (ORCPT ); Sun, 29 Apr 2018 12:27:15 -0400 Received: by mail-pf0-f195.google.com with SMTP id c10so4948757pfi.12; Sun, 29 Apr 2018 09:27:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=2Gf52O9uIYiaOChFZ229XcngLM65dRqtrvmYp5qxIUA=; b=KX+PSkCBN98AyNr3aES0ih9y6TmBXZRQgTZJVAMEe0VY2QkB/trWzlObe5lMusknpL 0EnjfVqieiCaicHW8r/wAdlTp4/TUqD7hHZzyKRPZz75brt59b9apyiMNCp7guPBqBxm 0OTJyDYiyQB3P3aIsLEtCk5UVakxQ4WRje2xkd23sjbLyA1f9A2ZlNILCRohLHO1BWJE YPnLjVkmuiGf8CmZ0Z07jWY6jMuAgXj/W2RQhldLJVy7PUwMXKC6U2QiKewF2Jn3C8ke jIm7cylFuuk5zU9q09HkW20gV885rrIOl8TCumQ5b0sSTioPQjuf+8I+xQ9hoexIaW3e XT5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=2Gf52O9uIYiaOChFZ229XcngLM65dRqtrvmYp5qxIUA=; b=pa12Ge/5Afubuozm0XdeoJOCvq+r5yoD7EBOZPaAQP9uFokpH24O9Lvtd8tQAmo1qZ uzpx8nlApJewzoTxst+OLpPjfNKeAdd6igO+8Ltu11QrPwQCQpE3Y6DQ4hf5llM9fOFo YlAlFcZKccXOFdh0PGVtbEUKZbhs5PIKHiPX1lmAGPYytTauJ6CRu6Q3PLN32VAB0Ser zvgytM34YLv10vwCN12tqw+2tGGY8Y5Q8e7z4gZRTzmOy0GPPNZSzfqF05M/FNZ1uSKj UyU2sRw0BV2MnP4C5wrTuq8mFSHIRI2EhZRrkzPh5aJp96ReQUn6lZXFDZvIMN+SChvd MnRw== X-Gm-Message-State: ALQs6tCpt/EEpjJscqBOpJZLSPYOV9IHr1XqU7+mROocVO353SFp95xm 9Xh4WatsXdeMeMEUAK2gqQA= X-Received: by 2002:a17:902:14b:: with SMTP id 69-v6mr9747086plb.184.1525019235035; Sun, 29 Apr 2018 09:27:15 -0700 (PDT) Received: from server.roeck-us.net (108-223-40-66.lightspeed.sntcca.sbcglobal.net. [108.223.40.66]) by smtp.gmail.com with ESMTPSA id g9-v6sm9604755pgo.22.2018.04.29.09.27.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 29 Apr 2018 09:27:14 -0700 (PDT) Subject: Re: [PATCH 2/2] hwmon: (k10temp) Display both Tctl and Tdie To: Gabriel C Cc: Clemens Ladisch , Jean Delvare , linux-hwmon@vger.kernel.org, LKML , Brian Woods References: <1524798789-2239-1-git-send-email-linux@roeck-us.net> <1524798789-2239-2-git-send-email-linux@roeck-us.net> From: Guenter Roeck Message-ID: Date: Sun, 29 Apr 2018 09:27:13 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/29/2018 09:13 AM, Gabriel C wrote: > 2018-04-27 5:13 GMT+02:00 Guenter Roeck : >> On some AMD CPUs, there is a different between the die temperature >> (Tdie) and the reported temperature (Tctl). Tdie is the real measured >> temperature, and Tctl is used for fan control. Lets report both for >> affected CPUs. >> >> Signed-off-by: Guenter Roeck >> --- >> drivers/hwmon/k10temp.c | 55 ++++++++++++++++++++++++++++++++++++++++++------- >> 1 file changed, 48 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c >> index b06bb1f90853..1135b8f1ad0f 100644 >> --- a/drivers/hwmon/k10temp.c >> +++ b/drivers/hwmon/k10temp.c >> @@ -80,6 +80,7 @@ struct k10temp_data { >> void (*read_tempreg)(struct pci_dev *pdev, u32 *regval); >> int temp_offset; >> u32 temp_adjust_mask; >> + bool show_tdie; >> }; >> >> struct tctl_offset { >> @@ -140,17 +141,24 @@ static void read_tempreg_nb_f17(struct pci_dev *pdev, u32 *regval) >> F17H_M01H_REPORTED_TEMP_CTRL_OFFSET, regval); >> } >> >> -static ssize_t temp1_input_show(struct device *dev, >> - struct device_attribute *attr, char *buf) >> +unsigned int get_raw_temp(struct k10temp_data *data) >> { >> - struct k10temp_data *data = dev_get_drvdata(dev); >> - u32 regval; >> unsigned int temp; >> + u32 regval; >> >> data->read_tempreg(data->pdev, ®val); >> temp = (regval >> 21) * 125; >> if (regval & data->temp_adjust_mask) >> temp -= 49000; >> + return temp; >> +} >> + >> +static ssize_t temp1_input_show(struct device *dev, >> + struct device_attribute *attr, char *buf) >> +{ >> + struct k10temp_data *data = dev_get_drvdata(dev); >> + unsigned int temp = get_raw_temp(data); >> + >> if (temp > data->temp_offset) >> temp -= data->temp_offset; >> else >> @@ -159,6 +167,23 @@ static ssize_t temp1_input_show(struct device *dev, >> return sprintf(buf, "%u\n", temp); >> } >> >> +static ssize_t temp2_input_show(struct device *dev, >> + struct device_attribute *devattr, char *buf) >> +{ >> + struct k10temp_data *data = dev_get_drvdata(dev); >> + unsigned int temp = get_raw_temp(data); >> + >> + return sprintf(buf, "%u\n", temp); >> +} >> + >> +static ssize_t temp_label_show(struct device *dev, >> + struct device_attribute *devattr, char *buf) >> +{ >> + struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); >> + >> + return sprintf(buf, "%s\n", attr->index ? "Tctl" : "Tdie"); >> +} >> + >> static ssize_t temp1_max_show(struct device *dev, >> struct device_attribute *attr, char *buf) >> { >> @@ -187,16 +212,23 @@ static DEVICE_ATTR_RO(temp1_max); >> static SENSOR_DEVICE_ATTR(temp1_crit, S_IRUGO, show_temp_crit, NULL, 0); >> static SENSOR_DEVICE_ATTR(temp1_crit_hyst, S_IRUGO, show_temp_crit, NULL, 1); >> >> +static SENSOR_DEVICE_ATTR(temp1_label, 0444, temp_label_show, NULL, 0); >> +static DEVICE_ATTR_RO(temp2_input); >> +static SENSOR_DEVICE_ATTR(temp2_label, 0444, temp_label_show, NULL, 1); >> + >> static umode_t k10temp_is_visible(struct kobject *kobj, >> struct attribute *attr, int index) >> { >> struct device *dev = container_of(kobj, struct device, kobj); >> struct k10temp_data *data = dev_get_drvdata(dev); >> struct pci_dev *pdev = data->pdev; >> + u32 reg; >> >> - if (index >= 2) { >> - u32 reg; >> - >> + switch (index) { >> + case 0 ... 1: /* temp1_input, temp1_max */ >> + default: >> + break; >> + case 2 ... 3: /* temp1_crit, temp1_crit_hyst */ >> if (!data->read_htcreg) >> return 0; >> >> @@ -208,6 +240,11 @@ static umode_t k10temp_is_visible(struct kobject *kobj, >> data->read_htcreg(data->pdev, ®); >> if (!(reg & HTC_ENABLE)) >> return 0; >> + break; >> + case 4 ... 6: /* temp1_label, temp2_input, temp2_label */ >> + if (!data->show_tdie) >> + return 0; >> + break; >> } >> return attr->mode; >> } >> @@ -217,6 +254,9 @@ static struct attribute *k10temp_attrs[] = { >> &dev_attr_temp1_max.attr, >> &sensor_dev_attr_temp1_crit.dev_attr.attr, >> &sensor_dev_attr_temp1_crit_hyst.dev_attr.attr, >> + &sensor_dev_attr_temp1_label.dev_attr.attr, >> + &dev_attr_temp2_input.attr, >> + &sensor_dev_attr_temp2_label.dev_attr.attr, >> NULL >> }; >> >> @@ -292,6 +332,7 @@ static int k10temp_probe(struct pci_dev *pdev, >> } else if (boot_cpu_data.x86 == 0x17) { >> data->temp_adjust_mask = 0x80000; >> data->read_tempreg = read_tempreg_nb_f17; >> + data->show_tdie = true; >> } else { >> data->read_htcreg = read_htcreg_pci; >> data->read_tempreg = read_tempreg_pci; >> -- >> 2.7.4 >> > > On my EPYC box Tdie and Tctl seems to have the same value. > However the code is working fine and both values are displayed now. > Yes, that is as expected; EPYC CPUs don't have a temperature offset between Tctl and Tdie (at least not as far as I know). Tctl is the value reported by the chip; if I recall correctly, it is in the low 20s on your system if it is idle. If there was an offset, Tdie would be reported as an even lower temperature, ie in the 10s, which would not make sense. > Tested-by: Gabriel Craciunescu > Thanks a lot for testing! Guenter > Regards > -- > To unsubscribe from this list: send the line "unsubscribe linux-hwmon" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >