Lines Matching refs:tdata

264 static int get_tjmax(struct temp_data *tdata, struct device *dev)
266 struct cpuinfo_x86 *c = &cpu_data(tdata->cpu);
272 if (tdata->tjmax)
273 return tdata->tjmax;
279 err = rdmsr_safe_on_cpu(tdata->cpu, MSR_IA32_TEMPERATURE_TARGET, &eax, &edx);
282 dev_warn(dev, "Unable to read TjMax from CPU %u\n", tdata->cpu);
292 tdata->tjmax = force_tjmax * 1000;
298 tdata->tjmax = adjust_tjmax(c, tdata->cpu, dev);
300 return tdata->tjmax;
303 static int get_ttarget(struct temp_data *tdata, struct device *dev)
312 if (tdata->tjmax)
315 ret = rdmsr_safe_on_cpu(tdata->cpu, MSR_IA32_TEMPERATURE_TARGET, &eax, &edx);
337 struct temp_data *tdata = pdata->core_data[attr->index];
339 if (tdata->is_pkg_data)
342 return sprintf(buf, "Core %u\n", tdata->cpu_core_id);
351 struct temp_data *tdata = pdata->core_data[attr->index];
353 mutex_lock(&tdata->update_lock);
354 rdmsr_on_cpu(tdata->cpu, tdata->status_reg, &eax, &edx);
355 mutex_unlock(&tdata->update_lock);
365 struct temp_data *tdata = pdata->core_data[attr->index];
368 mutex_lock(&tdata->update_lock);
369 tjmax = get_tjmax(tdata, dev);
370 mutex_unlock(&tdata->update_lock);
380 struct temp_data *tdata = pdata->core_data[attr->index];
383 mutex_lock(&tdata->update_lock);
384 ttarget = get_ttarget(tdata, dev);
385 mutex_unlock(&tdata->update_lock);
398 struct temp_data *tdata = pdata->core_data[attr->index];
401 mutex_lock(&tdata->update_lock);
403 tjmax = get_tjmax(tdata, dev);
405 if (time_after(jiffies, tdata->last_updated + HZ)) {
406 rdmsr_on_cpu(tdata->cpu, tdata->status_reg, &eax, &edx);
413 tdata->temp = tjmax - ((eax >> 16) & 0x7f) * 1000;
414 tdata->last_updated = jiffies;
417 mutex_unlock(&tdata->update_lock);
418 return sprintf(buf, "%d\n", tdata->temp);
421 static int create_core_attrs(struct temp_data *tdata, struct device *dev,
433 for (i = 0; i < tdata->attr_size; i++) {
439 int attr_no = tdata->is_pkg_data ? 1 : tdata->cpu_core_id + 2;
441 snprintf(tdata->attr_name[i], CORETEMP_NAME_LENGTH,
443 sysfs_attr_init(&tdata->sd_attrs[i].dev_attr.attr);
444 tdata->sd_attrs[i].dev_attr.attr.name = tdata->attr_name[i];
445 tdata->sd_attrs[i].dev_attr.attr.mode = 0444;
446 tdata->sd_attrs[i].dev_attr.show = rd_ptr[i];
447 tdata->sd_attrs[i].index = index;
448 tdata->attrs[i] = &tdata->sd_attrs[i].dev_attr.attr;
450 tdata->attr_group.attrs = tdata->attrs;
451 return sysfs_create_group(&dev->kobj, &tdata->attr_group);
482 struct temp_data *tdata;
484 tdata = kzalloc(sizeof(struct temp_data), GFP_KERNEL);
485 if (!tdata)
488 tdata->status_reg = pkg_flag ? MSR_IA32_PACKAGE_THERM_STATUS :
490 tdata->is_pkg_data = pkg_flag;
491 tdata->cpu = cpu;
492 tdata->cpu_core_id = topology_core_id(cpu);
493 tdata->attr_size = MAX_CORE_ATTRS;
494 mutex_init(&tdata->update_lock);
495 return tdata;
501 struct temp_data *tdata;
511 * Get the index of tdata in pdata->core_data[]
512 * tdata for package: pdata->core_data[1]
513 * tdata for core: pdata->core_data[2] .. pdata->core_data[NUM_REAL_CORES + 1]
526 tdata = init_temp_data(cpu, pkg_flag);
527 if (!tdata) {
533 err = rdmsr_safe_on_cpu(cpu, tdata->status_reg, &eax, &edx);
537 /* Make sure tdata->tjmax is a valid indicator for dynamic/static tjmax */
538 get_tjmax(tdata, &pdev->dev);
546 if (get_ttarget(tdata, &pdev->dev) >= 0)
547 tdata->attr_size++;
549 pdata->core_data[index] = tdata;
552 err = create_core_attrs(tdata, pdata->hwmon_dev, index);
559 kfree(tdata);
575 struct temp_data *tdata = pdata->core_data[indx];
578 if (!tdata)
582 sysfs_remove_group(&pdata->hwmon_dev->kobj, &tdata->attr_group);
700 struct temp_data *tdata;
723 tdata = pd->core_data[indx];
735 } else if (tdata && tdata->cpu == cpu) {
736 mutex_lock(&tdata->update_lock);
737 tdata->cpu = target;
738 mutex_unlock(&tdata->update_lock);
744 tdata = pd->core_data[PKG_SYSFS_ATTR_NO];
746 if (tdata)
757 if (tdata && tdata->cpu == cpu) {
759 mutex_lock(&tdata->update_lock);
760 tdata->cpu = target;
761 mutex_unlock(&tdata->update_lock);