Lines Matching refs:tdata

264 static int get_tjmax(struct temp_data *tdata, struct device *dev)  in get_tjmax()  argument
266 struct cpuinfo_x86 *c = &cpu_data(tdata->cpu); in get_tjmax()
272 if (tdata->tjmax) in get_tjmax()
273 return tdata->tjmax; in get_tjmax()
279 err = rdmsr_safe_on_cpu(tdata->cpu, MSR_IA32_TEMPERATURE_TARGET, &eax, &edx); in get_tjmax()
282 dev_warn(dev, "Unable to read TjMax from CPU %u\n", tdata->cpu); in get_tjmax()
292 tdata->tjmax = force_tjmax * 1000; in get_tjmax()
298 tdata->tjmax = adjust_tjmax(c, tdata->cpu, dev); in get_tjmax()
300 return tdata->tjmax; in get_tjmax()
303 static int get_ttarget(struct temp_data *tdata, struct device *dev) in get_ttarget() argument
312 if (tdata->tjmax) in get_ttarget()
315 ret = rdmsr_safe_on_cpu(tdata->cpu, MSR_IA32_TEMPERATURE_TARGET, &eax, &edx); in get_ttarget()
337 struct temp_data *tdata = pdata->core_data[attr->index]; in show_label() local
339 if (tdata->is_pkg_data) in show_label()
342 return sprintf(buf, "Core %u\n", tdata->cpu_core_id); in show_label()
351 struct temp_data *tdata = pdata->core_data[attr->index]; in show_crit_alarm() local
353 mutex_lock(&tdata->update_lock); in show_crit_alarm()
354 rdmsr_on_cpu(tdata->cpu, tdata->status_reg, &eax, &edx); in show_crit_alarm()
355 mutex_unlock(&tdata->update_lock); in show_crit_alarm()
365 struct temp_data *tdata = pdata->core_data[attr->index]; in show_tjmax() local
368 mutex_lock(&tdata->update_lock); in show_tjmax()
369 tjmax = get_tjmax(tdata, dev); in show_tjmax()
370 mutex_unlock(&tdata->update_lock); in show_tjmax()
380 struct temp_data *tdata = pdata->core_data[attr->index]; in show_ttarget() local
383 mutex_lock(&tdata->update_lock); in show_ttarget()
384 ttarget = get_ttarget(tdata, dev); in show_ttarget()
385 mutex_unlock(&tdata->update_lock); in show_ttarget()
398 struct temp_data *tdata = pdata->core_data[attr->index]; in show_temp() local
401 mutex_lock(&tdata->update_lock); in show_temp()
403 tjmax = get_tjmax(tdata, dev); in show_temp()
405 if (time_after(jiffies, tdata->last_updated + HZ)) { in show_temp()
406 rdmsr_on_cpu(tdata->cpu, tdata->status_reg, &eax, &edx); in show_temp()
413 tdata->temp = tjmax - ((eax >> 16) & 0x7f) * 1000; in show_temp()
414 tdata->last_updated = jiffies; in show_temp()
417 mutex_unlock(&tdata->update_lock); in show_temp()
418 return sprintf(buf, "%d\n", tdata->temp); in show_temp()
421 static int create_core_attrs(struct temp_data *tdata, struct device *dev, in create_core_attrs() argument
433 for (i = 0; i < tdata->attr_size; i++) { in create_core_attrs()
434 snprintf(tdata->attr_name[i], CORETEMP_NAME_LENGTH, in create_core_attrs()
436 sysfs_attr_init(&tdata->sd_attrs[i].dev_attr.attr); in create_core_attrs()
437 tdata->sd_attrs[i].dev_attr.attr.name = tdata->attr_name[i]; in create_core_attrs()
438 tdata->sd_attrs[i].dev_attr.attr.mode = 0444; in create_core_attrs()
439 tdata->sd_attrs[i].dev_attr.show = rd_ptr[i]; in create_core_attrs()
440 tdata->sd_attrs[i].index = attr_no; in create_core_attrs()
441 tdata->attrs[i] = &tdata->sd_attrs[i].dev_attr.attr; in create_core_attrs()
443 tdata->attr_group.attrs = tdata->attrs; in create_core_attrs()
444 return sysfs_create_group(&dev->kobj, &tdata->attr_group); in create_core_attrs()
475 struct temp_data *tdata; in init_temp_data() local
477 tdata = kzalloc(sizeof(struct temp_data), GFP_KERNEL); in init_temp_data()
478 if (!tdata) in init_temp_data()
481 tdata->status_reg = pkg_flag ? MSR_IA32_PACKAGE_THERM_STATUS : in init_temp_data()
483 tdata->is_pkg_data = pkg_flag; in init_temp_data()
484 tdata->cpu = cpu; in init_temp_data()
485 tdata->cpu_core_id = topology_core_id(cpu); in init_temp_data()
486 tdata->attr_size = MAX_CORE_ATTRS; in init_temp_data()
487 mutex_init(&tdata->update_lock); in init_temp_data()
488 return tdata; in init_temp_data()
494 struct temp_data *tdata; in create_core_data() local
524 tdata = init_temp_data(cpu, pkg_flag); in create_core_data()
525 if (!tdata) { in create_core_data()
531 err = rdmsr_safe_on_cpu(cpu, tdata->status_reg, &eax, &edx); in create_core_data()
536 get_tjmax(tdata, &pdev->dev); in create_core_data()
544 if (get_ttarget(tdata, &pdev->dev) >= 0) in create_core_data()
545 tdata->attr_size++; in create_core_data()
547 pdata->core_data[attr_no] = tdata; in create_core_data()
550 err = create_core_attrs(tdata, pdata->hwmon_dev, attr_no); in create_core_data()
557 kfree(tdata); in create_core_data()
573 struct temp_data *tdata = pdata->core_data[indx]; in coretemp_remove_core() local
576 if (!tdata) in coretemp_remove_core()
580 sysfs_remove_group(&pdata->hwmon_dev->kobj, &tdata->attr_group); in coretemp_remove_core()
698 struct temp_data *tdata; in coretemp_cpu_offline() local
721 tdata = pd->core_data[indx]; in coretemp_cpu_offline()
733 } else if (tdata && tdata->cpu == cpu) { in coretemp_cpu_offline()
734 mutex_lock(&tdata->update_lock); in coretemp_cpu_offline()
735 tdata->cpu = target; in coretemp_cpu_offline()
736 mutex_unlock(&tdata->update_lock); in coretemp_cpu_offline()
742 tdata = pd->core_data[PKG_SYSFS_ATTR_NO]; in coretemp_cpu_offline()
744 if (tdata) in coretemp_cpu_offline()
755 if (tdata && tdata->cpu == cpu) { in coretemp_cpu_offline()
757 mutex_lock(&tdata->update_lock); in coretemp_cpu_offline()
758 tdata->cpu = target; in coretemp_cpu_offline()
759 mutex_unlock(&tdata->update_lock); in coretemp_cpu_offline()