in dfl-fme-perf.c [961:1001]
static int fme_perf_init(struct platform_device *pdev,
struct dfl_feature *feature)
{
struct fme_perf_priv *priv;
int ret;
priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
priv->dev = &pdev->dev;
priv->ioaddr = feature->ioaddr;
priv->id = feature->id;
priv->cpu = raw_smp_processor_id();
ret = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN,
"perf/fpga/dfl_fme:online",
NULL, fme_perf_offline_cpu);
if (ret < 0)
return ret;
priv->cpuhp_state = ret;
/* Register the pmu instance for cpu hotplug */
ret = cpuhp_state_add_instance_nocalls(priv->cpuhp_state, &priv->node);
if (ret)
goto cpuhp_instance_err;
ret = fme_perf_pmu_register(pdev, priv);
if (ret)
goto pmu_register_err;
feature->priv = priv;
return 0;
pmu_register_err:
cpuhp_state_remove_instance_nocalls(priv->cpuhp_state, &priv->node);
cpuhp_instance_err:
cpuhp_remove_multi_state(priv->cpuhp_state);
return ret;
}