04.03.2021 09:08, Sowjanya Komatineni пишет: ... > +static int __init tegra194_cpuidle_probe(struct platform_device *pdev) > +{ > + struct cpumask *cpumask; > + int cpu, ret; > + > + if (!check_mce_version()) { > + pr_err("cpuidle: incompatible MCE version, cannot register driver\n"); Should be dev_err() everywhere. > + return -ENODEV; > + } > + > + tsc_per_usec = arch_timer_get_cntfrq() / 1000000; > + > + cpumask = devm_kzalloc(&pdev->dev, cpumask_size(), GFP_KERNEL); > + for_each_online_cpu(cpu) > + cpumask_set_cpu(cpu, cpumask); cpumask_copy(..)? > + t194_cpu_idle_driver.cpumask = cpumask; Depending on 'online' mask instead of the 'present' mask looks odd. Is this really intended to be so? ... > +static int tegra194_cpuidle_remove(struct platform_device *pdev) > +{ > + unregister_pm_notifier(&suspend_notifier); > + cpuhp_remove_state(hp_state); > + cpuidle_unregister(&t194_cpu_idle_driver); > + kfree(t194_cpu_idle_driver.cpumask); kfree() of a managed resource.