Unverified Commit 6b484f45 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files
parents ae4bafea 381f0bd1
Loading
Loading
Loading
Loading
+32 −14
Original line number Diff line number Diff line
@@ -793,7 +793,7 @@ void i915_hwmon_register(struct drm_i915_private *i915)
	if (!IS_DGFX(i915))
		return;

	hwmon = devm_kzalloc(dev, sizeof(*hwmon), GFP_KERNEL);
	hwmon = kzalloc(sizeof(*hwmon), GFP_KERNEL);
	if (!hwmon)
		return;

@@ -819,14 +819,12 @@ void i915_hwmon_register(struct drm_i915_private *i915)
	hwm_get_preregistration_info(i915);

	/*  hwmon_dev points to device hwmon<i> */
	hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat->name,
	hwmon_dev = hwmon_device_register_with_info(dev, ddat->name,
						    ddat,
						    &hwm_chip_info,
						    hwm_groups);
	if (IS_ERR(hwmon_dev)) {
		i915->hwmon = NULL;
		return;
	}
	if (IS_ERR(hwmon_dev))
		goto err;

	ddat->hwmon_dev = hwmon_dev;

@@ -839,16 +837,36 @@ void i915_hwmon_register(struct drm_i915_private *i915)
		if (!hwm_gt_is_visible(ddat_gt, hwmon_energy, hwmon_energy_input, 0))
			continue;

		hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat_gt->name,
		hwmon_dev = hwmon_device_register_with_info(dev, ddat_gt->name,
							    ddat_gt,
							    &hwm_gt_chip_info,
							    NULL);
		if (!IS_ERR(hwmon_dev))
			ddat_gt->hwmon_dev = hwmon_dev;
	}
	return;
err:
	i915_hwmon_unregister(i915);
}

void i915_hwmon_unregister(struct drm_i915_private *i915)
{
	fetch_and_zero(&i915->hwmon);
	struct i915_hwmon *hwmon = i915->hwmon;
	struct intel_gt *gt;
	int i;

	if (!hwmon)
		return;

	for_each_gt(gt, i915, i)
		if (hwmon->ddat_gt[i].hwmon_dev)
			hwmon_device_unregister(hwmon->ddat_gt[i].hwmon_dev);

	if (hwmon->ddat.hwmon_dev)
		hwmon_device_unregister(hwmon->ddat.hwmon_dev);

	mutex_destroy(&hwmon->hwmon_lock);

	kfree(i915->hwmon);
	i915->hwmon = NULL;
}