mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2026-01-27 12:47:24 +01:00
drm/i915/pmu: Stop setting event_init to NULL
Setting event_init to NULL is mostly done to detect when the driver is partially working: i915 probed, but pmu is not registered. However, checking for event_init is odd as it was supposed to always be set and kernel/events/ would just crash if it found it set to NULL. Since there's already a "closed" boolean, use that instead and extend it's meaning to unregistered/unregistering. Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241104213512.2314930-3-lucas.demarchi@intel.com Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
This commit is contained in:
parent
c62018a002
commit
9116b5760e
|
|
@ -302,7 +302,7 @@ void i915_pmu_gt_parked(struct intel_gt *gt)
|
|||
{
|
||||
struct i915_pmu *pmu = >->i915->pmu;
|
||||
|
||||
if (!pmu->base.event_init)
|
||||
if (pmu->closed)
|
||||
return;
|
||||
|
||||
spin_lock_irq(&pmu->lock);
|
||||
|
|
@ -324,7 +324,7 @@ void i915_pmu_gt_unparked(struct intel_gt *gt)
|
|||
{
|
||||
struct i915_pmu *pmu = >->i915->pmu;
|
||||
|
||||
if (!pmu->base.event_init)
|
||||
if (pmu->closed)
|
||||
return;
|
||||
|
||||
spin_lock_irq(&pmu->lock);
|
||||
|
|
@ -1177,8 +1177,6 @@ static int i915_pmu_cpu_online(unsigned int cpu, struct hlist_node *node)
|
|||
{
|
||||
struct i915_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node);
|
||||
|
||||
GEM_BUG_ON(!pmu->base.event_init);
|
||||
|
||||
/* Select the first online CPU as a designated reader. */
|
||||
if (cpumask_empty(&i915_pmu_cpumask))
|
||||
cpumask_set_cpu(cpu, &i915_pmu_cpumask);
|
||||
|
|
@ -1191,8 +1189,6 @@ static int i915_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node)
|
|||
struct i915_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node);
|
||||
unsigned int target = i915_pmu_target_cpu;
|
||||
|
||||
GEM_BUG_ON(!pmu->base.event_init);
|
||||
|
||||
/*
|
||||
* Unregistering an instance generates a CPU offline event which we must
|
||||
* ignore to avoid incorrectly modifying the shared i915_pmu_cpumask.
|
||||
|
|
@ -1265,9 +1261,10 @@ void i915_pmu_register(struct drm_i915_private *i915)
|
|||
&i915_pmu_cpumask_attr_group,
|
||||
NULL
|
||||
};
|
||||
|
||||
int ret = -ENOMEM;
|
||||
|
||||
pmu->closed = true;
|
||||
|
||||
spin_lock_init(&pmu->lock);
|
||||
hrtimer_init(&pmu->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
|
||||
pmu->timer.function = i915_sample;
|
||||
|
|
@ -1316,6 +1313,8 @@ void i915_pmu_register(struct drm_i915_private *i915)
|
|||
if (ret)
|
||||
goto err_unreg;
|
||||
|
||||
pmu->closed = false;
|
||||
|
||||
return;
|
||||
|
||||
err_unreg:
|
||||
|
|
@ -1323,7 +1322,6 @@ err_unreg:
|
|||
err_groups:
|
||||
kfree(pmu->base.attr_groups);
|
||||
err_attr:
|
||||
pmu->base.event_init = NULL;
|
||||
free_event_attributes(pmu);
|
||||
err_name:
|
||||
if (IS_DGFX(i915))
|
||||
|
|
@ -1336,9 +1334,6 @@ void i915_pmu_unregister(struct drm_i915_private *i915)
|
|||
{
|
||||
struct i915_pmu *pmu = &i915->pmu;
|
||||
|
||||
if (!pmu->base.event_init)
|
||||
return;
|
||||
|
||||
/*
|
||||
* "Disconnect" the PMU callbacks - since all are atomic synchronize_rcu
|
||||
* ensures all currently executing ones will have exited before we
|
||||
|
|
@ -1352,7 +1347,6 @@ void i915_pmu_unregister(struct drm_i915_private *i915)
|
|||
i915_pmu_unregister_cpuhp_state(pmu);
|
||||
|
||||
perf_pmu_unregister(&pmu->base);
|
||||
pmu->base.event_init = NULL;
|
||||
kfree(pmu->base.attr_groups);
|
||||
if (IS_DGFX(i915))
|
||||
kfree(pmu->name);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user