public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH V3] hwmon, k10temp: Add support for F15h M60h
@ 2014-08-14 23:15 Aravind Gopalakrishnan
  2014-08-15  6:16 ` Borislav Petkov
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Aravind Gopalakrishnan @ 2014-08-14 23:15 UTC (permalink / raw)
  To: clemens, linux, jdelvare, rdunlap, bp
  Cc: lm-sensors, linux-doc, linux-kernel, Aravind Gopalakrishnan

This patch adds temperature monitoring support for F15h M60h processor.
 - Add new pci device id for the relevant processor
 - The functionality of REG_REPORTED_TEMPERATURE is moved to
   D0F0xBC_xD820_0CA4 [Reported Temperature Control]
   - So, use this to get CUR_TEMP value
   - Since we need an indirect register access, protect this with
     a mutex lock
 - Add Kconfig, Doc entries to indicate support for this processor.

Signed-off-by: Aravind Gopalakrishnan <aravind.gopalakrishnan@amd.com>
---
Changes in V3:
 - Move helper function that protects indirect register access locally
   until a time when others outside k10temp may need it
   
Changes in V2:
 - Prevent race with other code that may require indirect NB_SMU_REG access
 - Fix some minor style issues

 Documentation/hwmon/k10temp |  2 +-
 drivers/hwmon/Kconfig       |  4 ++--
 drivers/hwmon/k10temp.c     | 35 ++++++++++++++++++++++++++++++++---
 3 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/Documentation/hwmon/k10temp b/Documentation/hwmon/k10temp
index ee6d30e..254d2f5 100644
--- a/Documentation/hwmon/k10temp
+++ b/Documentation/hwmon/k10temp
@@ -11,7 +11,7 @@ Supported chips:
   Socket S1G2: Athlon (X2), Sempron (X2), Turion X2 (Ultra)
 * AMD Family 12h processors: "Llano" (E2/A4/A6/A8-Series)
 * AMD Family 14h processors: "Brazos" (C/E/G/Z-Series)
-* AMD Family 15h processors: "Bulldozer" (FX-Series), "Trinity", "Kaveri"
+* AMD Family 15h processors: "Bulldozer" (FX-Series), "Trinity", "Kaveri", "Carrizo"
 * AMD Family 16h processors: "Kabini", "Mullins"
 
   Prefix: 'k10temp'
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 02d3d85..57ba400 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -280,8 +280,8 @@ config SENSORS_K10TEMP
 	  If you say yes here you get support for the temperature
 	  sensor(s) inside your CPU. Supported are later revisions of
 	  the AMD Family 10h and all revisions of the AMD Family 11h,
-	  12h (Llano), 14h (Brazos), 15h (Bulldozer/Trinity/Kaveri) and
-	  16h (Kabini/Mullins) microarchitectures.
+	  12h (Llano), 14h (Brazos), 15h (Bulldozer/Trinity/Kaveri/Carrizo)
+	  and 16h (Kabini/Mullins) microarchitectures.
 
 	  This driver can also be built as a module.  If so, the module
 	  will be called k10temp.
diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c
index f7b46f6..36ea152 100644
--- a/drivers/hwmon/k10temp.c
+++ b/drivers/hwmon/k10temp.c
@@ -33,6 +33,9 @@ static bool force;
 module_param(force, bool, 0444);
 MODULE_PARM_DESC(force, "force loading on processors with erratum 319");
 
+/* Provide lock for writing to NB_SMU_IND_ADDR */
+DEFINE_MUTEX(nb_smu_ind_mutex);
+
 /* CPUID function 0x80000001, ebx */
 #define CPUID_PKGTYPE_MASK	0xf0000000
 #define CPUID_PKGTYPE_F		0x00000000
@@ -51,13 +54,38 @@ MODULE_PARM_DESC(force, "force loading on processors with erratum 319");
 #define REG_NORTHBRIDGE_CAPABILITIES	0xe8
 #define  NB_CAP_HTC			0x00000400
 
+/*
+ * For F15h M60h, functionality of REG_REPORTED_TEMPERATURE
+ * has been moved to D0F0xBC_xD820_0CA4 [Reported Temperature
+ * Control]
+ */
+#define F15H_M60H_REPORTED_TEMP_CTRL_OFFSET	0xd8200ca4
+#define PCI_DEVICE_ID_AMD_15H_M60H_NB_F3	0x1573
+
+void amd_nb_smu_index_read(struct pci_dev *pdev, unsigned int devfn,
+			   int offset, u32 *val)
+{
+	mutex_lock(&nb_smu_ind_mutex);
+	pci_bus_write_config_dword(pdev->bus, devfn,
+				   0xb8, offset);
+	pci_bus_read_config_dword(pdev->bus, devfn,
+				  0xbc, val);
+	mutex_unlock(&nb_smu_ind_mutex);
+}
+
 static ssize_t show_temp(struct device *dev,
 			 struct device_attribute *attr, char *buf)
 {
 	u32 regval;
-
-	pci_read_config_dword(to_pci_dev(dev),
-			      REG_REPORTED_TEMPERATURE, &regval);
+	struct pci_dev *pdev = to_pci_dev(dev);
+
+	if (boot_cpu_data.x86 == 0x15 && boot_cpu_data.x86_model == 0x60) {
+		amd_nb_smu_index_read(pdev, PCI_DEVFN(0, 0),
+				      F15H_M60H_REPORTED_TEMP_CTRL_OFFSET,
+				      &regval);
+	} else {
+		pci_read_config_dword(pdev, REG_REPORTED_TEMPERATURE, &regval);
+	}
 	return sprintf(buf, "%u\n", (regval >> 21) * 125);
 }
 
@@ -211,6 +239,7 @@ static const struct pci_device_id k10temp_id_table[] = {
 	{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_NB_F3) },
 	{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M10H_F3) },
 	{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M30H_NB_F3) },
+	{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_M60H_NB_F3) },
 	{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_NB_F3) },
 	{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_M30H_NB_F3) },
 	{}
-- 
2.0.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH V3] hwmon, k10temp: Add support for F15h M60h
  2014-08-14 23:15 [PATCH V3] hwmon, k10temp: Add support for F15h M60h Aravind Gopalakrishnan
@ 2014-08-15  6:16 ` Borislav Petkov
  2014-08-15  6:35 ` Clemens Ladisch
  2014-08-15 10:45 ` Guenter Roeck
  2 siblings, 0 replies; 6+ messages in thread
From: Borislav Petkov @ 2014-08-15  6:16 UTC (permalink / raw)
  To: Aravind Gopalakrishnan
  Cc: clemens, linux, jdelvare, rdunlap, lm-sensors, linux-doc,
	linux-kernel

On Thu, Aug 14, 2014 at 06:15:27PM -0500, Aravind Gopalakrishnan wrote:
> This patch adds temperature monitoring support for F15h M60h processor.
>  - Add new pci device id for the relevant processor
>  - The functionality of REG_REPORTED_TEMPERATURE is moved to
>    D0F0xBC_xD820_0CA4 [Reported Temperature Control]
>    - So, use this to get CUR_TEMP value
>    - Since we need an indirect register access, protect this with
>      a mutex lock
>  - Add Kconfig, Doc entries to indicate support for this processor.
> 
> Signed-off-by: Aravind Gopalakrishnan <aravind.gopalakrishnan@amd.com>
> ---
> Changes in V3:
>  - Move helper function that protects indirect register access locally
>    until a time when others outside k10temp may need it
>    
> Changes in V2:
>  - Prevent race with other code that may require indirect NB_SMU_REG access
>  - Fix some minor style issues
> 
>  Documentation/hwmon/k10temp |  2 +-
>  drivers/hwmon/Kconfig       |  4 ++--
>  drivers/hwmon/k10temp.c     | 35 ++++++++++++++++++++++++++++++++---
>  3 files changed, 35 insertions(+), 6 deletions(-)

Looks good to me.

Acked-by: Borislav Petkov <bp@suse.de>

-- 
Regards/Gruss,
    Boris.

Sent from a fat crate under my desk. Formatting is fine.
--

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V3] hwmon, k10temp: Add support for F15h M60h
  2014-08-14 23:15 [PATCH V3] hwmon, k10temp: Add support for F15h M60h Aravind Gopalakrishnan
  2014-08-15  6:16 ` Borislav Petkov
@ 2014-08-15  6:35 ` Clemens Ladisch
  2014-08-15 10:45 ` Guenter Roeck
  2 siblings, 0 replies; 6+ messages in thread
From: Clemens Ladisch @ 2014-08-15  6:35 UTC (permalink / raw)
  To: Aravind Gopalakrishnan, linux, jdelvare, rdunlap, bp
  Cc: lm-sensors, linux-doc, linux-kernel

Aravind Gopalakrishnan wrote:
> This patch adds temperature monitoring support for F15h M60h processor.
>  - Add new pci device id for the relevant processor
>  - The functionality of REG_REPORTED_TEMPERATURE is moved to
>    D0F0xBC_xD820_0CA4 [Reported Temperature Control]
>    - So, use this to get CUR_TEMP value
>    - Since we need an indirect register access, protect this with
>      a mutex lock
>  - Add Kconfig, Doc entries to indicate support for this processor.
>
> Signed-off-by: Aravind Gopalakrishnan <aravind.gopalakrishnan@amd.com>
> ---
> Changes in V3:
>  - Move helper function that protects indirect register access locally
>    until a time when others outside k10temp may need it
>
> Changes in V2:
>  - Prevent race with other code that may require indirect NB_SMU_REG access
>  - Fix some minor style issues
>
>  Documentation/hwmon/k10temp |  2 +-
>  drivers/hwmon/Kconfig       |  4 ++--
>  drivers/hwmon/k10temp.c     | 35 ++++++++++++++++++++++++++++++++---
>  3 files changed, 35 insertions(+), 6 deletions(-)

Acked-by: Clemens Ladisch <clemens@ladisch.de>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V3] hwmon, k10temp: Add support for F15h M60h
  2014-08-14 23:15 [PATCH V3] hwmon, k10temp: Add support for F15h M60h Aravind Gopalakrishnan
  2014-08-15  6:16 ` Borislav Petkov
  2014-08-15  6:35 ` Clemens Ladisch
@ 2014-08-15 10:45 ` Guenter Roeck
  2014-08-15 14:49   ` Aravind Gopalakrishnan
  2 siblings, 1 reply; 6+ messages in thread
From: Guenter Roeck @ 2014-08-15 10:45 UTC (permalink / raw)
  To: Aravind Gopalakrishnan, clemens, jdelvare, rdunlap, bp
  Cc: lm-sensors, linux-doc, linux-kernel

On 08/14/2014 04:15 PM, Aravind Gopalakrishnan wrote:
> This patch adds temperature monitoring support for F15h M60h processor.
>   - Add new pci device id for the relevant processor
>   - The functionality of REG_REPORTED_TEMPERATURE is moved to
>     D0F0xBC_xD820_0CA4 [Reported Temperature Control]
>     - So, use this to get CUR_TEMP value
>     - Since we need an indirect register access, protect this with
>       a mutex lock
>   - Add Kconfig, Doc entries to indicate support for this processor.
>
> Signed-off-by: Aravind Gopalakrishnan <aravind.gopalakrishnan@amd.com>
> ---
> Changes in V3:
>   - Move helper function that protects indirect register access locally
>     until a time when others outside k10temp may need it
>

Applied, with a small change: I made the mutex and the new function static.
That can be changed if/when needed, and declaring it static now ensures that
we'll notice it. Likely the "next" user won't use the function anyway, but
that is a problem to sort out after it happens.

Thanks,
Guenter


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V3] hwmon, k10temp: Add support for F15h M60h
  2014-08-15 10:45 ` Guenter Roeck
@ 2014-08-15 14:49   ` Aravind Gopalakrishnan
       [not found]     ` <CAAek22FpQRhDqjSQjOL_UfoJ51hHqbxYZu2AGTA54LRM9sFn2g@mail.gmail.com>
  0 siblings, 1 reply; 6+ messages in thread
From: Aravind Gopalakrishnan @ 2014-08-15 14:49 UTC (permalink / raw)
  To: Guenter Roeck, clemens, jdelvare, rdunlap, bp
  Cc: lm-sensors, linux-doc, linux-kernel

On 8/15/2014 5:45 AM, Guenter Roeck wrote:
> On 08/14/2014 04:15 PM, Aravind Gopalakrishnan wrote:
>> This patch adds temperature monitoring support for F15h M60h processor.
>>   - Add new pci device id for the relevant processor
>>   - The functionality of REG_REPORTED_TEMPERATURE is moved to
>>     D0F0xBC_xD820_0CA4 [Reported Temperature Control]
>>     - So, use this to get CUR_TEMP value
>>     - Since we need an indirect register access, protect this with
>>       a mutex lock
>>   - Add Kconfig, Doc entries to indicate support for this processor.
>>
>> Signed-off-by: Aravind Gopalakrishnan <aravind.gopalakrishnan@amd.com>
>> ---
>> Changes in V3:
>>   - Move helper function that protects indirect register access locally
>>     until a time when others outside k10temp may need it
>>
>
> Applied, with a small change: I made the mutex and the new function 
> static.
> That can be changed if/when needed, and declaring it static now 
> ensures that
> we'll notice it. Likely the "next" user won't use the function anyway, 
> but
> that is a problem to sort out after it happens.
>

Ok, Thanks!
-Aravind.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [lm-sensors] [PATCH V3] hwmon, k10temp: Add support for F15h M60h
       [not found]     ` <CAAek22FpQRhDqjSQjOL_UfoJ51hHqbxYZu2AGTA54LRM9sFn2g@mail.gmail.com>
@ 2014-08-15 15:39       ` Guenter Roeck
  0 siblings, 0 replies; 6+ messages in thread
From: Guenter Roeck @ 2014-08-15 15:39 UTC (permalink / raw)
  To: Phil Pokorny, Aravind Gopalakrishnan
  Cc: clemens@ladisch.de, jdelvare@suse.de, rdunlap@infradead.org,
	bp@suse.de, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org, lm-sensors@lm-sensors.org

On 08/15/2014 08:18 AM, Phil Pokorny wrote:
>
>         On 08/14/2014 04:15 PM, Aravind Gopalakrishnan wrote:
>
>             This patch adds temperature monitoring support for F15h M60h processor.
>                - Add new pci device id for the relevant processor
>                - The functionality of REG_REPORTED_TEMPERATURE is moved to
>                  D0F0xBC_xD820_0CA4 [Reported Temperature Control]
>                  - So, use this to get CUR_TEMP value
>                  - Since we need an indirect register access, protect this with
>                    a mutex lock
>
>
> What about making this a new driver forked from k10temp.
>
> AMD has changed how they report temperatures and the very different method of getting these temps suggests that it is no longer reasonable to add support to this driver for these new chips. Particular attention to the mutex required to protect the indirect register suggests that this would benefit from focus in its own driver now that there are multiple members of the "k15temp" family.
>
> Anyone else have thoughts?
>

Everything in that new driver except for reading the actual temperature
would be exactly the same. That doesn't make sense to me.

Guenter


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-08-15 15:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-14 23:15 [PATCH V3] hwmon, k10temp: Add support for F15h M60h Aravind Gopalakrishnan
2014-08-15  6:16 ` Borislav Petkov
2014-08-15  6:35 ` Clemens Ladisch
2014-08-15 10:45 ` Guenter Roeck
2014-08-15 14:49   ` Aravind Gopalakrishnan
     [not found]     ` <CAAek22FpQRhDqjSQjOL_UfoJ51hHqbxYZu2AGTA54LRM9sFn2g@mail.gmail.com>
2014-08-15 15:39       ` [lm-sensors] " Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox