[PATCH] hwmon: (k10temp) Add per-CCD temperature monitoring for Zen5 Turin

Gabriel Ford posted 1 patch 1 month, 2 weeks ago
There is a newer version of this series
drivers/hwmon/k10temp.c | 8 ++++++++
1 file changed, 8 insertions(+)
[PATCH] hwmon: (k10temp) Add per-CCD temperature monitoring for Zen5 Turin
Posted by Gabriel Ford 1 month, 2 weeks ago
Add support for per-CCD temperature monitoring on Zen 5 Turin (EPYC 9005)
CPUs, as they fall in a different model range with a larger number of
maximum CCDs compared to their desktop counterparts. Tested and working
on an EPYC 9555P.

Signed-off-by: Gabriel Ford <gabriel@gford.dev>
---
 drivers/hwmon/k10temp.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c
index de0760dc597d..b882fe09ac1b 100644
--- a/drivers/hwmon/k10temp.c
+++ b/drivers/hwmon/k10temp.c
@@ -207,6 +207,10 @@ static const char *k10temp_temp_label[] = {
 	"Tccd10",
 	"Tccd11",
 	"Tccd12",
+	"Tccd13",
+	"Tccd14",
+	"Tccd15",
+	"Tccd16"
 };
 
 static int k10temp_read_labels(struct device *dev,
@@ -515,6 +519,10 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 		}
 	} else if (boot_cpu_data.x86 == 0x1a) {
 		switch (boot_cpu_data.x86_model) {
+		case 0x00 ... 0x2f:	/* Zen5 Turin */
+			data->ccd_offset = 0x1F0;
+			k10temp_get_ccd_support(data, 16);
+			break;
 		case 0x40 ... 0x4f:	/* Zen5 Ryzen Desktop */
 			data->ccd_offset = 0x308;
 			k10temp_get_ccd_support(data, 8);
-- 
2.43.0
Re: [PATCH] hwmon: (k10temp) Add per-CCD temperature monitoring for Zen5 Turin
Posted by Guenter Roeck 1 month, 2 weeks ago
On 8/12/26 09:37, Gabriel Ford wrote:
> Add support for per-CCD temperature monitoring on Zen 5 Turin (EPYC 9005)
> CPUs, as they fall in a different model range with a larger number of
> maximum CCDs compared to their desktop counterparts. Tested and working
> on an EPYC 9555P.
> 

Sashiko has a point, showing that the temperature of the additional four dies
can not be shown due to the code in k10temp_read_temp().

So how does your test result actually look like ?

Guenter

> Signed-off-by: Gabriel Ford <gabriel@gford.dev>
> ---
>   drivers/hwmon/k10temp.c | 8 ++++++++
>   1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c
> index de0760dc597d..b882fe09ac1b 100644
> --- a/drivers/hwmon/k10temp.c
> +++ b/drivers/hwmon/k10temp.c
> @@ -207,6 +207,10 @@ static const char *k10temp_temp_label[] = {
>   	"Tccd10",
>   	"Tccd11",
>   	"Tccd12",
> +	"Tccd13",
> +	"Tccd14",
> +	"Tccd15",
> +	"Tccd16"
>   };
>   
>   static int k10temp_read_labels(struct device *dev,
> @@ -515,6 +519,10 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
>   		}
>   	} else if (boot_cpu_data.x86 == 0x1a) {
>   		switch (boot_cpu_data.x86_model) {
> +		case 0x00 ... 0x2f:	/* Zen5 Turin */
> +			data->ccd_offset = 0x1F0;
> +			k10temp_get_ccd_support(data, 16);
> +			break;
>   		case 0x40 ... 0x4f:	/* Zen5 Ryzen Desktop */
>   			data->ccd_offset = 0x308;
>   			k10temp_get_ccd_support(data, 8);