menu "MTK scheduler extension"

config MTK_SCHED_EXTENSION
	bool "mtk scheduler extension"
	help
	  MTK scheduler extension,
	  1. include MTK scheduler enhancement.
	  2. All MTK scheduler sub-feature config should depend on
	     this config.
	  Say Y to enable MTK scheduler extension. If unsure, say N.

config MTK_IDLE_BALANCE_ENHANCEMENT
	bool "mtk load balance enhancement"
	depends on MTK_SCHED_EXTENSION && SMP && ENERGY_MODEL && CPU_FREQ_GOV_SCHEDUTIL
	help
	  Mediatek aggressive idle balance, include
	  1. for runnable tasks with idle prefer attributes
	  2. for runnable and running tasks with min_cap(dynamic floor)
	  3. migrate runnable task directly and
		use stop machine to migrate running task

config MTK_SCHED_INTEROP
	bool "mtk scheduling interopation enhancement"
	depends on MTK_SCHED_EXTENSION
	help
	   Original Linux Design, RT & CFS do load balance seperatedly,
	   and let would result in unload balance.
	   that is, one CPU has more than 2 tasks, however, one CPU is IDLE
	   We make RT & CFS to check each other and make load more balance.

config MTK_SCHED_LB_ENHANCEMENT
	bool "mtk enhancement for load balance"
	depends on MTK_SCHED_EXTENSION && ENERGY_MODEL && CPU_FREQ_GOV_SCHEDUTIL
	help
	   mtk enhancement for load balance
	   system overutilization,
	   intra-cluster load balance,
	   and so on.

config MTK_SCHED_TRACERS
	bool "mtk scheduling trace, output mtk schedule trace into FTRACE"
	depends on MTK_SCHED_EXTENSION
	help
	  Mediatek scheduling trace, output mtk schedule trace into FTRACE,
	  Mediatek enhancements to vanilla linux kernel. Export scheduling
	  trace in sched_switch events.
	  Say Y to enable mtk scheduling trace.If unsure, say N

config MTK_SCHED_CPU_PREFER
	bool "mtk scheduling boost enhancement"
	depends on MTK_SCHED_EXTENSION && ENERGY_MODEL && CPU_FREQ_GOV_SCHEDUTIL
	help
	   task level to prefer to put the task
	   on big core or little core.
	   If the preferred type CPU has IDLE CPU,
	   put on the task on the idle CPU.
	   If there are no IDLE CPU on preferred type CPU,
	   the task placement will follow original policy.

config MTK_SCHED_BIG_TASK_MIGRATE
	bool "mtk scheduling big task migrate"
	depends on MTK_SCHED_EXTENSION && SMP
	help
	   Migrate misfit task more efficient in scheduler tick.
	   1. Big task migration: migrate misfit task in scheduler tick
	      To reduce boosted task push to big core latency.
	      Migrate current task to big core if it is misfit.
	   2. Big task rotation: swap two misfit task between big cores and
	      little core, equally distributed runtime for each misfit task.

config MTK_SCHED_TURNING_POINT
	bool "mtk turning point"
	depends on MTK_SCHED_EXTENSION
	help
	  Mediatek turning point for power efficiency
	  When the power efficiency of little core high frequency is
	  less than the big core low frequency,
	  scheduler will prefer to put task on big core.
endmenu

