* [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, ®val);
+ 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,
+ ®val);
+ } else {
+ pci_read_config_dword(pdev, REG_REPORTED_TEMPERATURE, ®val);
+ }
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