Skip to content
Permalink
Branch: 9.0.0-sultan
Commits on Mar 14, 2019
  1. Merge tag 'android-9.0.0_r0.66' into 9.0.0-sultan

    kerneltoast committed Mar 14, 2019
    Android 9.0.0 Release 0.66 (PQ2A.190305.002,crosshatch/blueline)
  2. Merge tag 'android-9.0.0_r0.63' into 9.0.0-sultan

    kerneltoast committed Mar 14, 2019
    Android 9.0.0 Release 0.63 (PQ2A.190205.001,crosshatch/blueline)
  3. kernel: Boost to the max for a short amount of time when zygote forks

    kerneltoast committed Mar 3, 2019
    In order to boost during the period from when a new app is forked to the
    time that it is added to the top-app cpuset (which is a signal to
    subsequently boost again), boost for a short amount of time when zygote
    forks. Not all processes forked from zygote are top apps, hence the
    decoupled boosting setup.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  4. b1c1_defconfig: Re-enable debugfs

    kerneltoast committed Mar 3, 2019
    Disabling debugfs breaks the front camera on both blueline and
    crosshatch. Re-enable it since I have no idea why.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  5. cpufreq: Don't let userspace set the max freq

    kerneltoast committed Mar 3, 2019
    Now that msm-thermal-simple is in use, it'll just override any userspace
    requests to change the max freq anyway. Disable writing to the max freq
    at all.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  6. b1c1_defconfig: Enable msm-thermal-simple

    kerneltoast committed Mar 3, 2019
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  7. ARM: dts: b1c1: Configure msm-thermal-simple

    kerneltoast committed Mar 3, 2019
    Configure the msm-thermal-simple zones to make thermal throttling as
    smooth and unnoticeable to the user as possible. The sensor used for
    temperature polling is xo-therm-adc.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  8. msm: thermal: simple: Introduce simple MSM thermal solution

    kerneltoast committed Mar 3, 2019
    When properly configured, this driver monitors temperatures from a
    specified sensor and reduces the CPU's max frequency in response to
    the temperature crossing specified thermal zones. The temperature sensor
    use must be a specified ADC channel on a given VADC device, hence this
    driver's dependency on the chipset being an MSM product.
    
    This driver can only be configured via the device tree; it cannot be
    configured at runtime. Configuration instructions can be found in the
    accompanying documentation.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  9. kernel: Boost whenever a zygote-forked process becomes a top app

    kerneltoast committed Mar 14, 2019
    Boost to the max for 500 ms whenever the top app changes, which
    improves app launch speeds and addresses jitter when switching between
    apps. A check to make sure that the top-app's parent is zygote ensures
    that a user-facing app is indeed what's added to the top app task group,
    since app processes are forked from zygote.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
Commits on Mar 11, 2019
  1. Revert "qpnp-smb2: enable all smb-lib logs by default"

    kerneltoast committed Feb 17, 2019
    This logspam is destroying kernel logs.
    
    This reverts commit 5a1aa18.
  2. ARM: dts: b1c1: Disable AVB

    kerneltoast committed Feb 16, 2019
    Disabling AVB is needed to make custom ROMs work, and doing so doesn't cause
    the stock ROM to misbehave, so just disable it outright.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  3. b1c1_defconfig: Use Westwood TCP congestion algorithm

    kerneltoast committed Jan 30, 2019
    BBR wasn't working correctly since the correct qdisc wasn't in use, and
    apparently it doesn't work well at all in 4.9.
    
    Suggested-by: kdrag0n <dragon@khronodragon.com>
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  4. b1c1_defconfig: Disable core_ctl driver

    kerneltoast committed Feb 18, 2019
    We're not using this, so disable it.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  5. b1c1_defconfig: Re-enable hardware AF/DBM and subsequent erratum fix

    kerneltoast committed Jan 28, 2019
    The hardware AF/DBM feature isn't controlled by the alternatives framework, but
    apparently it is supported by our hardware. Re-enable it.
    
    Reported-by: Park Ju Hyung <qkrwngud825@gmail.com>
    Reported-by: kdrag0n <dragon@khronodragon.com>
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  6. init: Initialize module-intended b1c1 drivers when userspace insmods …

    kerneltoast committed Dec 28, 2018
    …them
    
    Various b1c1 drivers are built as modules by Google for good reason, because
    they don't work correctly if they're initialized before userspace gets a chance
    to do some initialization. Essentially, the modularized drivers need to be
    initialized long after the kernel has finished its own initialization, so they
    cannot be built into the kernel image without special measures.
    
    In order to make these drivers work correctly, initialize them in the order that
    userspace attempts to insmod them, at the time that userspace tries to insmod
    them. This way, they are always initialized at the correct time and work
    correctly when built into the kernel image.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  7. clk: qcom: clk-cpu-osm: Use CLK_GET_RATE_NOCACHE

    kerneltoast committed Dec 15, 2018
    After a CPU comes online, clk_set_rate silently refuses to change said CPU's
    frequency to the frequency it was running at before going offline (since it
    thinks that we are setting the same frequency redundantly). By default, each CPU
    runs at its minimum frequency when coming online, so if the governor decides to
    keep a CPU running at the frequency it used before going offline, then
    clk_set_rate will ignore the frequency change request and the CPU will stay
    stuck running at its minimum frequency for a potentially long period of time
    (i.e., until the governor decides to change the frequency to something
    different). This can cause severe lag when a device is woken up from deep sleep.
    
    In order to prevent a CPU from being stuck at its default frequency for a
    potentially long period of time, set the CLK_GET_RATE_NOCACHE flag so that the
    governor's frequency change requests will always be honored. Do this for the L3
    clock as well.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  8. drm: Mark the bridge-enable kthread as performance critical

    kerneltoast committed Dec 22, 2018
    The lightweight bridge-enable kthread is directly responsible for display
    power on latency, so make it run as quickly as possible.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  9. drm: Enable bridges asynchronously as early as possible

    kerneltoast committed Feb 17, 2019
    Currently, the display takes a while to power on because there is a long
    delay between when the first commit is received to power on the display
    and when the display is actually powered on. Additionally, the display
    power on sequence blocks the display driver from proceeding with commit
    dispatch, which adds even more latency to the display power on sequence.
    
    In order to make the display turn on faster, enable the drm bridges
    asynchronously as soon as the first commit is received when the display is
    powered off. To ensure that this doesn't introduce races within the display
    drivers utilizing drm, the regular drm_bridge_pre_enable and
    drm_bridge_enable functions are turned into stubs that block until the
    kthread worker responsible for enabling the bridges finishes doing so.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  10. base: dd: Continue probe deferral forever as needed after late_initcall

    kerneltoast committed Dec 10, 2018
    Currently, the probe deferral mechanism gives up on deferring probe after
    late_initcall is complete, which could leave some very slow-to-start
    drivers broken after the kernel finishes starting up.
    
    Since we don't want to leave behind any drivers that still need probing
    after late_initcall, continue the probe deferral sequence forever after
    late_initcall until there are no more devices left that are requesting
    probe deferral.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  11. power: qpnp-fg-gen3: Limit how frequently fg data can be queried

    kerneltoast committed Dec 10, 2018
    Querying the fuelgauge for data is expensive, so doing it frequently can
    result in a significant increase in power consumption.
    
    Limit how frequently data queries can be sent to 5 seconds in order to
    prevent fuelgauge queries from consuming too much power. Only do this while
    there is no USB cable connected to the device, since the charger drivers
    need fresh statistics when there's a USB cable connected.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  12. msm: kgsl: Remove POPP

    kerneltoast committed Dec 10, 2018
    POPP constantly attempts to lower the GPU's frequency behind the governor's
    back in order to save power; however, the GPU governor in use
    (msm-adreno-tz) is very good at determining the GPU's load and selecting
    an appropriate frequency to run the GPU at.
    
    POPP was created long ago (perhaps when msm-adreno-tz didn't exist or
    didn't work so well), so it is clearly deprecated. Remove it.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  13. msm: kgsl: Wake GPU upon receiving an ioctl rather than upon touch input

    kerneltoast committed Dec 10, 2018
    Waking the GPU upon touch wastes power when the screen is being touched
    in a way that does not induce animation or any actual need for GPU usage.
    Instead of preemptively waking the GPU on touch input, wake it up upon
    receiving a IOCTL_KGSL_GPU_COMMAND ioctl since it is a sign that the GPU
    will soon be needed.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  14. ARM: dts: sdm845: Set GPU idle timeout to 64 ms

    kerneltoast committed Dec 10, 2018
    This matches the ULPS timeout used in the display driver; no need to keep
    the GPU running after the display has decided to enter a low-power state.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  15. drm/atomic: Boost CPU and DDR bus when committing a new frame

    kerneltoast committed Dec 10, 2018
    In order to reduce jank, request a CPU and DDR bus boost whenever a new
    frame is ready to be rendered to the display. The boosts should be
    sufficient enough to render 60 FPS without any dropped frames when there
    is no significant external source of load.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  16. b1c1_defconfig: Configure devfreq boost driver

    kerneltoast committed Dec 10, 2018
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  17. devfreq: Introduce devfreq boost driver

    kerneltoast committed Mar 3, 2019
    This driver boosts enumerated devfreq devices upon input, and allows for
    boosting specific devfreq devices on other custom events. The boost
    frequencies for this driver should be set so that frame drops are
    near-zero at the boosted frequencies and power consumption is minimized
    at said frequencies. The goal of this driver is to provide an interface
    to achieve optimal device performance by requesting boosts on key
    events, such as when a frame is ready to rendered to the display.
    
    Currently, support is only present for boosting the cpubw devfreq
    device, but the driver is structured in a way that makes it easy to add
    support for new boostable devfreq devices in the future.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  18. b1c1_defconfig: Configure cpu_input_boost driver

    kerneltoast committed Feb 18, 2019
    These frequencies were determined empirically to have optimal power
    consumption while yielding no dropped frames in UiBench's Invalidate test.
    
    A boost duration of 64 ms is used to match the display driver's ULPS mode
    timeout.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  19. cpufreq: Kill userspace CPU boosting entirely

    kerneltoast committed Dec 1, 2018
    Kernel-based CPU boosting is used now, so stop userspace from messing with
    it by turning scaling_min_freq into a no-op. Note that this is done instead
    of making scaling_min_freq read-only so that userspace doesn't spit out
    error messages when it can't do its boosting.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  20. cpu_input_boost: Introduce driver for event-based CPU boosting

    kerneltoast committed Mar 11, 2019
    This is a clean CPU input boost driver that boosts all online CPUs for
    a fixed amount of time. Additionally, there is an API for other drivers
    to request a boost kick (or a max-boost kick), so boosting can be done
    on any custom event. This API is mainly intended for the framebuffer
    driver to send a boost kick whenever there is a new frame ready to be
    rendered to the display.
    
    This driver also boosts all online CPUs to their maximum frequencies
    when the display is powered on (this is the wake boost).
    
    Since this driver requires careful tuning for optimal performance, there
    are no user-exposed knobs to configure it. All necessary configuration
    is done via the supplied Kconfig options.
    
    This driver is designed for heterogeneous multi-processor systems with
    two CPU clusters.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
Commits on Mar 3, 2019
  1. msm: kgsl: Increase worker thread priority

    kerneltoast committed Oct 14, 2018
    Currently, the kgsl worker thread is erroneosly ranked right below
    Android's audio threads in terms of priority.
    
    The kgsl worker thread is in the critical path for rendering frames to the
    display, so increase its priority to match the priority of MDSS' kthread (mdss_fb0).
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  2. drm/msm: Mark important kthreads as performance critical

    kerneltoast committed Nov 30, 2018
    These kthreads (particularly crtc_event and crtc_commit) play a major role
    in rendering frames to the display, so mark them as performance critical.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  3. drm: Mark IRQ as performance critical

    kerneltoast committed Nov 30, 2018
    The IRQ powering the display is performance critical.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
  4. msm: kgsl: Mark IRQ and worker thread as performance critical

    kerneltoast committed Nov 30, 2018
    These are in the critical path for rendering frames to the display, so
    mark them as performance-critical.
    
    Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.