static int fme_perf_init()

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;
}