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

From: Guenter Roeck

Date: Thu Aug 13 2026 - 23:37:45 EST


On Thu, Aug 13, 2026 at 05:02:08PM +0000, Gabriel Ford wrote:
> Add support for per-CCD temperature monitoring on Zen 5 Turin (EPYC 9005)
> CPUs, as they fall into a separate model range with a different offset
> and a higher maximum CCD count than their desktop counterparts. As such,
> this patch also updates the driver to support CPUs with up to 16 CCDs.
> Tested and working on an EPYC 9555P.
>
> Signed-off-by: Gabriel Ford <gabriel@xxxxxxxxx>

Seems safe enough. Applied.

> ---
For next time: change log goes here.

Thanks,
Guenter

> drivers/hwmon/k10temp.c | 16 ++++++++++++++--
> 1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c
> index de0760dc597d..43cade8c3631 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,
> @@ -243,7 +247,7 @@ static int k10temp_read_temp(struct device *dev, u32 attr, int channel,
> if (*val < 0 && !data->disp_negative)
> *val = 0;
> break;
> - case 2 ... 13: /* Tccd{1-12} */
> + case 2 ... 17: /* Tccd{1-16} */
> ret = read_ccd_temp_reg(data, channel - 2, &regval);
>
> if (ret)
> @@ -384,7 +388,11 @@ static const struct hwmon_channel_info * const k10temp_info[] = {
> HWMON_T_INPUT | HWMON_T_LABEL,
> HWMON_T_INPUT | HWMON_T_LABEL,
> HWMON_T_INPUT | HWMON_T_LABEL,
> - HWMON_T_INPUT | HWMON_T_LABEL),
> + HWMON_T_INPUT | HWMON_T_LABEL,
> + HWMON_T_INPUT | HWMON_T_LABEL,
> + HWMON_T_INPUT | HWMON_T_LABEL,
> + HWMON_T_INPUT | HWMON_T_LABEL,
> + HWMON_T_INPUT | HWMON_T_LABEL),
> NULL
> };
>
> @@ -515,6 +523,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);