@@ -552,6 +552,30 @@ EXPORT_SYMBOL_GPL(em_cpu_get);
552552int em_dev_register_perf_domain (struct device * dev , unsigned int nr_states ,
553553 const struct em_data_callback * cb ,
554554 const cpumask_t * cpus , bool microwatts )
555+ {
556+ int ret = em_dev_register_pd_no_update (dev , nr_states , cb , cpus , microwatts );
557+
558+ if (_is_cpu_device (dev ))
559+ em_check_capacity_update ();
560+
561+ return ret ;
562+ }
563+ EXPORT_SYMBOL_GPL (em_dev_register_perf_domain );
564+
565+ /**
566+ * em_dev_register_pd_no_update() - Register a perf domain for a device
567+ * @dev : Device to register the PD for
568+ * @nr_states : Number of performance states in the new PD
569+ * @cb : Callback functions for populating the energy model
570+ * @cpus : CPUs to include in the new PD (mandatory if @dev is a CPU device)
571+ * @microwatts : Whether or not the power values in the EM will be in uW
572+ *
573+ * Like em_dev_register_perf_domain(), but does not trigger a CPU capacity
574+ * update after registering the PD, even if @dev is a CPU device.
575+ */
576+ int em_dev_register_pd_no_update (struct device * dev , unsigned int nr_states ,
577+ const struct em_data_callback * cb ,
578+ const cpumask_t * cpus , bool microwatts )
555579{
556580 struct em_perf_table * em_table ;
557581 unsigned long cap , prev_cap = 0 ;
@@ -636,12 +660,9 @@ int em_dev_register_perf_domain(struct device *dev, unsigned int nr_states,
636660unlock :
637661 mutex_unlock (& em_pd_mutex );
638662
639- if (_is_cpu_device (dev ))
640- em_check_capacity_update ();
641-
642663 return ret ;
643664}
644- EXPORT_SYMBOL_GPL (em_dev_register_perf_domain );
665+ EXPORT_SYMBOL_GPL (em_dev_register_pd_no_update );
645666
646667/**
647668 * em_dev_unregister_perf_domain() - Unregister Energy Model (EM) for a device
0 commit comments