There is a single global variable used for a mask of which cpus
to manipulate for single-big-thread (sbt) purposes. This mask is
passed into the halt and resume apis.
This is incorrect, because the halt/resume apis can manipulate the
passed mask, indicating which cpus were actually halted or unhalted
in a given operation. Since the mask gets changed, the code forgets
which cpus to use for sbt.
Update the main sbt check routine such that a local copy of the
cpus to be used for sbt is made, and that local copy passed to
the halt/resume routines.
Change-Id: I9280f1bf600565dc63f0a9d9f84536d50e31fbd6
Signed-off-by: Stephen Dickey <quic_dickey@quicinc.com>
Add tracepoint to see current state of sbt, as well as critical
decision making criteria.
Change-Id: Id24a14714ec9e28469f78be48f12b71725cc8bba
Signed-off-by: Stephen Dickey <quic_dickey@quicinc.com>
For automatic (heavy) pipeline searching the prime cpu will
not get used when there are only a few pipeline entries. This
will leave the prime cpu unoccupied, when one of the pipeline
tasks may be prime worthy.
To handle this, detect if there are any heavy tasks that are
prime worthy already, and promote the prime worthy tasks to
prime. Since pipeline cpus are reassigned every window rollover,
and automatic detection assigns cpus from lowest to highest,
it is unnecessary to demote a task from prime as this will
regardless.
For pipeline (manual) searching the same issue exists and must
be handled.
For the manual case, when the number of pipeline tasks is few,
but a prime_wts has been found, determine if the task on prime
is prime worthy. If it isn't, it must be demoted to non-prime.
Any remaining prime worthy task must then be found.
Change-Id: I15c9417a14c5860bf48edc1c3443fdc0b1255f42
Signed-off-by: Stephen Dickey <quic_dickey@quicinc.com>
In preparation for finding and promoting (and demoting) prime
worth (and unworthy) tasks, create an api that can be
reused to find the pipeline task currently assigned to prime
and the pipeline task that is max demand.
Change-Id: I3b2334482b74c62598a2449e8938c920cfda85b2
Signed-off-by: Stephen Dickey <quic_dickey@quicinc.com>
Ensure that pipeline tasks which have a demand greater than another
pipeline task running on prime only swap with prime after 4 windows.
Change-Id: I28b3e46f476f4f09682ae2caffc2cae04d76fae5
Signed-off-by: Shaleen Agrawal <quic_shalagra@quicinc.com>
Clean up the enum of pipeline types, in an effort to
simplify usage in followup changes.
Change-Id: I451f04fc0b0f4d5f4cf98f071961e1ed451e94cc
Signed-off-by: Shaleen Agrawal <quic_shalagra@quicinc.com>
Since coloc demand represents averaged demand across history of past few
windows, the growth of pipeline task demands will be steadier,
theoretically resulting in less bouncing between prime and other CPUs.
Change-Id: I9a5c92fbc1c26591889e51be1e65273ebe2d27b4
Signed-off-by: Shaleen Agrawal <quic_shalagra@quicinc.com>
pipeline_set_boost does not handle the case properly, where both
manual and auto pipeline hinting are enabled or disabled, independently.
For example, this series of events
pipeline_set_boost(true, MANUAL_PIPELINE);
- auto pipeline enabled
pipeline_set_boost(true, AUTO_PIPELINE);
- auto pipeline disabled\
pipeline_set_boost(false, MANUAL_PIPELINE);
With the above, pipeline boost will be enabled, even though manual
pipeline is no longer requesting it be enabled, and auto pipeline
is disabled.
Correct the code to independently track state of the AUTO or MANUAL
pipeline, and using that information to decide if boost is currently
requested or not.
Change-Id: Ia31eb8cd45b417f55f1e6827953073f708820ce6
Signed-off-by: Stephen Dickey <quic_dickey@quicinc.com>
Due to below upstream change, the sync_state functionality
of our RPM-SMD regulator driver has been broken:
Upstream commit 3a2dbc510c43 ("driver core: fw_devlink:
Don't purge child fwnode's consumer links")
With this change, consumers of the child node (rpm-smd regulator)
are now marked as consumers of the parent node (rpm-smd resource).
Since those consumers use the child node's phandle, but sync_state
is defined for the parent node, sync_state will not get called
as expected when the child node's last consumer is probed,
which could cause issues for regulator clients depending
on proxy votes.
Define sync_state call for proxy votes under regulator device
rather than resource to ensure it gets called and also register
regulator device for proxy voting rather than regulator resource.
Change-Id: Ic9943585657190d8808f4b8608dd82df228d381e
Signed-off-by: Rakesh Kota <quic_kotarake@quicinc.com>
Enable PM8941_PWRKEY and REBOOT_MODE drivers for
BLAIR platform.
Change-Id: If898ed5df0c24ae02af37dcd4888912ebad69794
Signed-off-by: Rakesh Kota <quic_kotarake@quicinc.com>
QFPROM SYS driver provides access to the child nodes
of QFPROM to user space. Enable it on chipsets using
pineapple defconfig.
Change-Id: I2a8175ec1dfc116e803058ee574f9db0356ac2c0
Signed-off-by: Naman Jain <quic_namajain@quicinc.com>
limits_stress driver doesn't need to be probed at boot time.
It is a limits stress module and needs to be probed
on need basis for thermal stress testing.
Change-Id: I633c052a0b808bcfc34b8d2ba846948009e6eecc
Signed-off-by: Priyansh Jain <quic_priyjain@quicinc.com>