Received: by 10.192.165.148 with SMTP id m20csp2990547imm; Sun, 29 Apr 2018 11:24:01 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrFjYFG4ZGmI4q/kE7y44Bw5MSdx3YbjFaD31brgY8AxuobFGjyRrUqk/OxjN0MQBCWKskJ X-Received: by 2002:a17:902:5ac6:: with SMTP id g6-v6mr9983451plm.262.1525026240951; Sun, 29 Apr 2018 11:24:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525026240; cv=none; d=google.com; s=arc-20160816; b=OQ2WnGtHvaPilTZTnEqAyiUS9u00TYgZcg5yp5vi4sDaTaDx/MAhOo1QVKGVRL3mjK CD2Yf74xCuXL0S4pYmHyn5yd+90o04UwDnjHGI+0ENIbV2BMMjlf+9bG1GtYKtRGCbWn wLcJIptz08fSYepMmI/NW35ixChKfr/E5DZLdnQNXXX72H1mwUoxO2knYjL4SFYBHrGP fxW4MNjXD1AM8airLlr49VW/Uk7628CpniRfz0/EAdflmdVZ5vqBxZll0TTOKpckxwWV v+9LCMsb3+TxVTB3Nens27uR7MTHdQW1NOC7w7UIypRLiIFg54K7giduwNYjPB/263G2 D3pw== 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=BNmoPq1yE1M+85Qtdlikzy10uOcvvjar1+ka6GlgFt8=; b=zDy1BsOqlYhjBmzVbHeNNjzZp6y5Oi1xt4pD9zkw/JnbFt2zKeeCE9I0shf1NooSvN X06hcAfW9MzYZjnatX9xqGNLL/lEv8aXs5J+wiaNJVp+c91n7Cq6YcESbF7UxngREHOn HbvW9Tf3gi9pwUm2aoCY1YYeuTp1KkV7ayY+z7NqUTxk479jPyuwrP5a5zUzvJn2k3Tr C8l7j398Bq21GRjtQm3fQjos1r4xiIbVQJW9rq77tre188/cpF8MNfl4IguJUX0nDRKz svTZVwBi6673XkIi6mFtO83usLywpPRXsFgGGkm06SFILIguTVE9CJP7VsJ4+fXtCIOk pajA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=ecHN1snd; 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 i1-v6si903764pgv.424.2018.04.29.11.23.46; Sun, 29 Apr 2018 11:24:00 -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=ecHN1snd; 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 S1754112AbeD2SXd (ORCPT + 99 others); Sun, 29 Apr 2018 14:23:33 -0400 Received: from mail-pg0-f68.google.com ([74.125.83.68]:36875 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753764AbeD2SXc (ORCPT ); Sun, 29 Apr 2018 14:23:32 -0400 Received: by mail-pg0-f68.google.com with SMTP id a13-v6so4863806pgu.4; Sun, 29 Apr 2018 11:23:31 -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=BNmoPq1yE1M+85Qtdlikzy10uOcvvjar1+ka6GlgFt8=; b=ecHN1sndVjEQQlWfK8YfXj3BX62gsEzDpbONnHunneFvxJXkTIvDq2Ecs0WA8xBp7w SN19JGvWq+FIcMJg8FPRAQfj7e4/yXRGPtVQxMPVGyY5Cbo/l1wip0chDmXgs+iN5vuX S/S144qKKWurtJHcooEJR/NVEbe8VGiwWyl/es4rPhGrqRvw8d7ZdyVMkLI5Unz+cQVg XC3qDGQM7LGrsOBNwsc6+w94db7qskHKvAn6cQX76MeyYS5hDfjoaZTByp2lP2y4tc2o n/h8v7zSeGRt21hd2JqS3dSHOTw5cP122mKYG9T0HeavBQVWzuMwR6WF+mhVcj7mc7zy l3Xg== 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=BNmoPq1yE1M+85Qtdlikzy10uOcvvjar1+ka6GlgFt8=; b=WHIu8D8kE1bbcadHxTvKXfeB8tHH5s1gFILLtqd/uK5Nr9oa+2uoq/23K/S3f3DGWv VZIIt3CxAAT5J1pdEHoVx8PTXBb6fKO+oUuUzFTObhQDmV9MUiK+ZPajtuDfy9bz0rNT BXjJSmBJDaG92IGbAiMr1FAOZGjuwU6acJBKAi4dci27XOdMpTmTBhXS/HBfxCBn/88i jnu6AfRab7+uywPuFnAg+5AoPDt860h36MUq3gO9HqFGvw88pnEIAbncuxFYHzW6vNW8 maijeJqXs/k7kRw0q8gIBoFeBkpebIlrzsPXXDni5kJtjSRgU6rfEJeX79IgLevPHBX8 2cZg== X-Gm-Message-State: ALQs6tAsBcBMxEBO1EEF2UPdjaF6hFPys55elMrFdSdGGun5P9iuCHex zDZLOdotnFc7FfLrbo5hRwM= X-Received: by 2002:a17:902:7c83:: with SMTP id y3-v6mr9712425pll.241.1525026211594; Sun, 29 Apr 2018 11:23:31 -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 j9sm10123907pff.46.2018.04.29.11.23.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 29 Apr 2018 11:23:30 -0700 (PDT) Subject: Re: [PATCH 2/2] hwmon: (k10temp) Use API function to access System Management Network To: Gabriel C Cc: Thomas Gleixner , Clemens Ladisch , X86 ML , Jean Delvare , LKML , linux-hwmon@vger.kernel.org, Borislav Petkov , Yazen Ghannam , Brian Woods References: <1524966879-9424-1-git-send-email-linux@roeck-us.net> <1524966879-9424-2-git-send-email-linux@roeck-us.net> <2db436f9-a335-9e25-d177-23095c2527ff@roeck-us.net> From: Guenter Roeck Message-ID: Date: Sun, 29 Apr 2018 11:23:29 -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: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/29/2018 11:19 AM, Gabriel C wrote: > 2018-04-29 19:46 GMT+02:00 Guenter Roeck : >> On 04/28/2018 06:54 PM, Guenter Roeck wrote: >>> >>> The SMN (System Management Network) on Family 17h AMD CPUs is also >>> accessed >>> from other drivers, specifically EDAC. Accessing it directly is racy. >>> On top of that, accessing the SMN through root bridge 00:00 is wrong on >>> multi-die CPUs and may result in reading the temperature from the wrong >>> die. Use available API functions to fix the problem. >>> >>> For this to work, also change the Raven Ridge PCI device ID to point to >>> Data Fabric Function 3, since this ID is used by the API functions to >>> find the CPU node. >>> >>> Signed-off-by: Guenter Roeck >>> --- >>> drivers/hwmon/k10temp.c | 11 ++++++----- >>> 1 file changed, 6 insertions(+), 5 deletions(-) >>> >>> diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c >>> index b06bb1f90853..00e785afae0d 100644 >>> --- a/drivers/hwmon/k10temp.c >>> +++ b/drivers/hwmon/k10temp.c >>> @@ -23,6 +23,7 @@ >>> #include >>> #include >>> #include >>> +#include >>> #include >>> MODULE_DESCRIPTION("AMD Family 10h+ CPU core temperature monitor"); >>> @@ -40,8 +41,8 @@ static DEFINE_MUTEX(nb_smu_ind_mutex); >>> #define PCI_DEVICE_ID_AMD_17H_DF_F3 0x1463 >>> #endif >>> -#ifndef PCI_DEVICE_ID_AMD_17H_RR_NB >>> -#define PCI_DEVICE_ID_AMD_17H_RR_NB 0x15d0 >>> +#ifndef PCI_DEVICE_ID_AMD_17H_RR_DF_F3 >>> +#define PCI_DEVICE_ID_AMD_17H_RR_DF_F3 0x14eb >> >> >> This should have been 0x15eb. I'll resend after a week or so, waiting for >> more feedback. > > > re-tested with that too .. Doesn't seems to matter here .. > Yes, that only matters for Raven Ridge CPUs (eg 2200G, 2400G). Thanks, Guenter > with original patch: > > crazy@ant:~/Work/Linux/linux$ sensors > k10temp-pci-00f3 > Adapter: PCI adapter > Tdie: +22.2°C (high = +70.0°C) > Tctl: +22.2°C > > k10temp-pci-00e3 > Adapter: PCI adapter > Tdie: +23.8°C (high = +70.0°C) > Tctl: +23.8°C > > k10temp-pci-00d3 > Adapter: PCI adapter > Tdie: +23.0°C (high = +70.0°C) > Tctl: +23.0°C > > k10temp-pci-00c3 > Adapter: PCI adapter > Tdie: +25.0°C (high = +70.0°C) > Tctl: +25.0°C > > k10temp-pci-00fb > Adapter: PCI adapter > Tdie: +22.8°C (high = +70.0°C) > Tctl: +22.8°C > > k10temp-pci-00eb > Adapter: PCI adapter > Tdie: +23.2°C (high = +70.0°C) > Tctl: +23.2°C > > k10temp-pci-00db > Adapter: PCI adapter > Tdie: +22.8°C (high = +70.0°C) > Tctl: +22.8°C > > k10temp-pci-00cb > Adapter: PCI adapter > Tdie: +22.6°C (high = +70.0°C) > Tctl: +22.6°C > > now with 0x15eb > > crazy@ant:~/Work/Linux/linux$ sudo rmmod k10temp > crazy@ant:~/Work/Linux/linux$ git grep -w PCI_DEVICE_ID_AMD_17H_RR_DF_F3 > arch/x86/kernel/amd_nb.c:#define PCI_DEVICE_ID_AMD_17H_RR_DF_F3 0x15eb > arch/x86/kernel/amd_nb.c: { PCI_DEVICE(PCI_VENDOR_ID_AMD, > PCI_DEVICE_ID_AMD_17H_RR_DF_F3) }, > drivers/hwmon/k10temp.c:#ifndef PCI_DEVICE_ID_AMD_17H_RR_DF_F3 > drivers/hwmon/k10temp.c:#define PCI_DEVICE_ID_AMD_17H_RR_DF_F3 0x15eb > drivers/hwmon/k10temp.c: { PCI_VDEVICE(AMD, > PCI_DEVICE_ID_AMD_17H_RR_DF_F3) }, > crazy@ant:~/Work/Linux/linux$ sudo insmod ./drivers/hwmon/k10temp.ko > crazy@ant:~/Work/Linux/linux$ sensors > k10temp-pci-00f3 > Adapter: PCI adapter > Tdie: +22.2°C (high = +70.0°C) > Tctl: +22.2°C > > k10temp-pci-00e3 > Adapter: PCI adapter > Tdie: +23.8°C (high = +70.0°C) > Tctl: +23.8°C > > k10temp-pci-00d3 > Adapter: PCI adapter > Tdie: +23.0°C (high = +70.0°C) > Tctl: +23.0°C > > k10temp-pci-00c3 > Adapter: PCI adapter > Tdie: +25.0°C (high = +70.0°C) > Tctl: +25.0°C > > k10temp-pci-00fb > Adapter: PCI adapter > Tdie: +22.9°C (high = +70.0°C) > Tctl: +22.9°C > > k10temp-pci-00eb > Adapter: PCI adapter > Tdie: +23.2°C (high = +70.0°C) > Tctl: +23.2°C > > k10temp-pci-00db > Adapter: PCI adapter > Tdie: +22.8°C (high = +70.0°C) > Tctl: +22.8°C > > k10temp-pci-00cb > Adapter: PCI adapter > Tdie: +22.8°C (high = +70.0°C) > Tctl: +22.8°C > > >> >>> #endif >>> /* CPUID function 0x80000001, ebx */ >>> @@ -136,8 +137,8 @@ static void read_tempreg_nb_f15(struct pci_dev *pdev, >>> u32 *regval) >>> static void read_tempreg_nb_f17(struct pci_dev *pdev, u32 *regval) >>> { >>> - amd_nb_index_read(pdev, PCI_DEVFN(0, 0), 0x60, >>> - F17H_M01H_REPORTED_TEMP_CTRL_OFFSET, regval); >>> + amd_smn_read(amd_pci_dev_to_node_id(pdev), >>> + F17H_M01H_REPORTED_TEMP_CTRL_OFFSET, regval); >>> } >>> static ssize_t temp1_input_show(struct device *dev, >>> @@ -323,7 +324,7 @@ static const struct pci_device_id k10temp_id_table[] = >>> { >>> { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_NB_F3) }, >>> { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_M30H_NB_F3) }, >>> { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_17H_DF_F3) }, >>> - { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_17H_RR_NB) }, >>> + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_17H_RR_DF_F3) }, >>> {} >>> }; >>> MODULE_DEVICE_TABLE(pci, k10temp_id_table); >>> >> >