Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

interconnect: Skip call into provider if initial bw is zero

Currently framework sets bw even when init bw requirements are zero during
provider registration, thus resulting bulk of set bw to hw.
Avoid this behaviour by skipping provider set bw calls if init bw is zero.

Signed-off-by: Vivek Aknurwar <quic_viveka@quicinc.com>
Link: https://lore.kernel.org/r/1673647679-15216-1-git-send-email-quic_viveka@quicinc.com
Signed-off-by: Georgi Djakov <djakov@kernel.org>

authored by

Vivek Aknurwar and committed by
Georgi Djakov
558ea123 4658842a

+9 -6
+9 -6
drivers/interconnect/core.c
··· 981 981 node->avg_bw = node->init_avg; 982 982 node->peak_bw = node->init_peak; 983 983 984 - if (provider->pre_aggregate) 985 - provider->pre_aggregate(node); 984 + if (node->avg_bw || node->peak_bw) { 985 + if (provider->pre_aggregate) 986 + provider->pre_aggregate(node); 986 987 987 - if (provider->aggregate) 988 - provider->aggregate(node, 0, node->init_avg, node->init_peak, 989 - &node->avg_bw, &node->peak_bw); 988 + if (provider->aggregate) 989 + provider->aggregate(node, 0, node->init_avg, node->init_peak, 990 + &node->avg_bw, &node->peak_bw); 991 + if (provider->set) 992 + provider->set(node, node); 993 + } 990 994 991 - provider->set(node, node); 992 995 node->avg_bw = 0; 993 996 node->peak_bw = 0; 994 997