From 7c6e5b50c631750a1d5810dc7debced7f3fc8c5f Mon Sep 17 00:00:00 2001 From: Raghavendra Rao Ananta Date: Mon, 17 Aug 2020 14:28:36 -0700 Subject: [PATCH] arch: arm64: Add RCU related configs for lahaina Enable RCU NOCB_CPU and FAST_NO_HZ options for the lahaina. These configs are needed to avoid frequent cpu wake up for processing rcu callbacks. Whenever LPM governor driver has requested for sleep length tick_nohz_get_sleep_length tries to find the next event from tick_nohz_next_event function. static ktime_t tick_nohz_next_event(struct tick_sched *ts, int cpu) { ... if (rcu_needs_cpu(basemono, &next_rcu) || arch_needs_cpu() || irq_work_needs_cpu() || local_timer_softirq_pending()) { next_tick = basemono + TICK_NSEC; } else { tick_nohz_next_event calls rcu_needs_cpu to find whether future non-offloaded RCU-related work need to be done by the current CPU or not. If any non-offloaded future callbacks are present rcu framework requests the cpu to wake up for every tick period to process the callbacks. When CONFIG_FAST_NO_HZ is defined rcu_needs_cpu function checks whether any callbacks are ready to process or not. If there are no ready call backs and no non-offloaded callbacks pending for this CPU, RCU doesn't need the CPU and returns KTIME_MAX for sleep length. Another important thing is that, if CPU has lazy callbacks or future non-offload RCU callbacks, rcu framework try to advance those callbacks and allows the CPU to enter dyntick-idle mode. RCU_NOCB_CPU config option helps to offload callback invocation from the set of CPUs to kthread ("rcuox/N") and reduce OS jitter for aggressive high performance computing workloads. Change-Id: I47cdd2a3528e3a447a6909bf3f840ee8a3dd4b1e Signed-off-by: Prasad Sodagudi Signed-off-by: Raghavendra Rao Ananta --- arch/arm64/configs/vendor/lahaina_QGKI.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm64/configs/vendor/lahaina_QGKI.config b/arch/arm64/configs/vendor/lahaina_QGKI.config index ed36e3f36bd3..9126e0a1cf2f 100644 --- a/arch/arm64/configs/vendor/lahaina_QGKI.config +++ b/arch/arm64/configs/vendor/lahaina_QGKI.config @@ -14,6 +14,9 @@ CONFIG_IOMMU_IO_PGTABLE_FAST=y CONFIG_IOMMU_DYNAMIC_DOMAINS=y # CONFIG_IOMMU_IO_PGTABLE_FAST_SELFTEST is not set # CONFIG_IOMMU_IO_PGTABLE_FAST_PROVE_TLB is not set +CONFIG_RCU_EXPERT=y +CONFIG_RCU_FAST_NO_HZ=y +CONFIG_RCU_NOCB_CPU=y CONFIG_QCOM_LLCC_PERFMON=m CONFIG_SCHED_WALT=y CONFIG_QCOM_HYP_CORE_CTL=y