Message ID | 20240820053558.1052853-1-superm1@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | hwmon: (k10temp): Use cpu_feature_enabled() for detecting zen | expand |
On Tue, Aug 20, 2024 at 12:35:57AM -0500, Mario Limonciello wrote: > From: Mario Limonciello <mario.limonciello@amd.com> > > This removes some boilerplate from the code and will allow adding > future CPUs by just device IDs. > I've been thinking that maybe we stop using PCI IDs entirely. The PCIe devices that we match on are internal to the SoC. And they're not optional. They're basically processor components that are exposed through PCI config space for software convenience. Thoughts? Thanks, Yazen
On 8/21/2024 08:09, Yazen Ghannam wrote: > On Tue, Aug 20, 2024 at 12:35:57AM -0500, Mario Limonciello wrote: >> From: Mario Limonciello <mario.limonciello@amd.com> >> >> This removes some boilerplate from the code and will allow adding >> future CPUs by just device IDs. >> > > I've been thinking that maybe we stop using PCI IDs entirely. > > The PCIe devices that we match on are internal to the SoC. And they're > not optional. They're basically processor components that are exposed > through PCI config space for software convenience. > > Thoughts? > > Thanks, > Yazen Yeah I think that's a good idea. The one thing I want to make sure remains though is that k10temp automatically loads from a CPU modalias. This is "tangential" to this patch except for the commit message reference to the PCI IDs.
On Wed, Aug 21, 2024 at 09:34:09AM -0500, Mario Limonciello wrote: > On 8/21/2024 08:09, Yazen Ghannam wrote: > > On Tue, Aug 20, 2024 at 12:35:57AM -0500, Mario Limonciello wrote: > > > From: Mario Limonciello <mario.limonciello@amd.com> > > > > > > This removes some boilerplate from the code and will allow adding > > > future CPUs by just device IDs. > > > > > > > I've been thinking that maybe we stop using PCI IDs entirely. > > > > The PCIe devices that we match on are internal to the SoC. And they're > > not optional. They're basically processor components that are exposed > > through PCI config space for software convenience. > > > > Thoughts? > > > > Thanks, > > Yazen > > Yeah I think that's a good idea. The one thing I want to make sure remains > though is that k10temp automatically loads from a CPU modalias. > > This is "tangential" to this patch except for the commit message reference > to the PCI IDs. > Based on the feedback I will not accept this patch but wait for a solution which is acceptable for everyone involved from AMD. Guenter
On Wed, Aug 21, 2024 at 04:29:32PM -0700, Guenter Roeck wrote: > On Wed, Aug 21, 2024 at 09:34:09AM -0500, Mario Limonciello wrote: > > On 8/21/2024 08:09, Yazen Ghannam wrote: > > > On Tue, Aug 20, 2024 at 12:35:57AM -0500, Mario Limonciello wrote: > > > > From: Mario Limonciello <mario.limonciello@amd.com> > > > > > > > > This removes some boilerplate from the code and will allow adding > > > > future CPUs by just device IDs. > > > > > > > > > > I've been thinking that maybe we stop using PCI IDs entirely. > > > > > > The PCIe devices that we match on are internal to the SoC. And they're > > > not optional. They're basically processor components that are exposed > > > through PCI config space for software convenience. > > > > > > Thoughts? > > > > > > Thanks, > > > Yazen > > > > Yeah I think that's a good idea. The one thing I want to make sure remains > > though is that k10temp automatically loads from a CPU modalias. > > > > This is "tangential" to this patch except for the commit message reference > > to the PCI IDs. > > > > Based on the feedback I will not accept this patch but wait for a solution > which is acceptable for everyone involved from AMD. > Hi Guenter, Sorry, I didn't mean to imply that this is unacceptable. I think this is okay. I just wanted to highlight our general trend to move away from continuing to add PCI IDs. We'll still need to do so in the short term though. Mario and I are working on some possible solutions. It'll be slow and iterative, since we don't want to break existing functionality. Thanks, Yazen
On Tue, Aug 20, 2024 at 12:35:57AM -0500, Mario Limonciello wrote: > From: Mario Limonciello <mario.limonciello@amd.com> > > This removes some boilerplate from the code and will allow adding > future CPUs by just device IDs. > > Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Applied. Thanks, Guenter
diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c index 543526bac0425..85a7632f3b50a 100644 --- a/drivers/hwmon/k10temp.c +++ b/drivers/hwmon/k10temp.c @@ -438,16 +438,21 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id) data->disp_negative = true; } - if (boot_cpu_data.x86 == 0x15 && + data->is_zen = cpu_feature_enabled(X86_FEATURE_ZEN); + if (data->is_zen) { + data->temp_adjust_mask = ZEN_CUR_TEMP_RANGE_SEL_MASK; + data->read_tempreg = read_tempreg_nb_zen; + } else if (boot_cpu_data.x86 == 0x15 && ((boot_cpu_data.x86_model & 0xf0) == 0x60 || (boot_cpu_data.x86_model & 0xf0) == 0x70)) { data->read_htcreg = read_htcreg_nb_f15; data->read_tempreg = read_tempreg_nb_f15; - } else if (boot_cpu_data.x86 == 0x17 || boot_cpu_data.x86 == 0x18) { - data->temp_adjust_mask = ZEN_CUR_TEMP_RANGE_SEL_MASK; - data->read_tempreg = read_tempreg_nb_zen; - data->is_zen = true; + } else { + data->read_htcreg = read_htcreg_pci; + data->read_tempreg = read_tempreg_pci; + } + if (boot_cpu_data.x86 == 0x17 || boot_cpu_data.x86 == 0x18) { switch (boot_cpu_data.x86_model) { case 0x1: /* Zen */ case 0x8: /* Zen+ */ @@ -469,10 +474,6 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id) break; } } else if (boot_cpu_data.x86 == 0x19) { - data->temp_adjust_mask = ZEN_CUR_TEMP_RANGE_SEL_MASK; - data->read_tempreg = read_tempreg_nb_zen; - data->is_zen = true; - switch (boot_cpu_data.x86_model) { case 0x0 ... 0x1: /* Zen3 SP3/TR */ case 0x8: /* Zen3 TR Chagall */ @@ -496,13 +497,6 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id) k10temp_get_ccd_support(data, 12); break; } - } else if (boot_cpu_data.x86 == 0x1a) { - data->temp_adjust_mask = ZEN_CUR_TEMP_RANGE_SEL_MASK; - data->read_tempreg = read_tempreg_nb_zen; - data->is_zen = true; - } else { - data->read_htcreg = read_htcreg_pci; - data->read_tempreg = read_tempreg_pci; } for (i = 0; i < ARRAY_SIZE(tctl_offset_table); i++) {