diff --git a/sys-kernel/xanmod-sources/Manifest b/sys-kernel/xanmod-sources/Manifest
index c229531..8ca6fcf 100644
--- a/sys-kernel/xanmod-sources/Manifest
+++ b/sys-kernel/xanmod-sources/Manifest
@@ -5,6 +5,8 @@ DIST genpatches-5.9-1.extras.tar.xz 1764 BLAKE2B 32d29f0448aef113ba9c9591c5d3b67
DIST linux-5.10.tar.xz 116606704 BLAKE2B b923d7b66309224f42f35f8a5fa219421b0a9362d2adacdadd8d96251f61f7230878ea297a269a7f3b3c56830f0b177e068691e1d7f88501a05653b0a13274d1 SHA512 95bc137d0cf9148da6a9d1f1a878698dc27b40f68e22c597544010a6c591ce1b256f083489d3ff45ff77753289b535135590194d88ef9f007d0ddab3d74de70e
DIST linux-5.9.tar.xz 115507140 BLAKE2B e8d11472d63a9f8409ca12a2e8c97c6963a3d4516b5a398b627d6ece565584526f9b5a1377a2fa4bd184c09c7db94c987428bc5d52df0c788464a67e9e8d6dcb SHA512 d3d92ce4246bad74c9a784212f160d98449b1e8793970c2c308276568d852b8effe0528686bdb87d55d691f09a826abf7938d69bdd4759ce65ddd5c05ffe4eca
DIST patch-5.10.1-xanmod1.xz 84852 BLAKE2B c3f41a05c92ca57d3e5117d8096d8180119a4d4bec7cb7adf9bad9afa4ed332128400ad17de7ed517fb2661f1356e954108aa786150748b99c5268f482541f6e SHA512 13b32629072c87eef98a42f10ef41040c48a8f01f33f4ce1042370672da107b3d11e73cc5ea437600622bea2116c856aade691ef95eef86181868c200161f8db
+DIST patch-5.10.2-xanmod1-cacule.xz 95684 BLAKE2B 3bc336813ce24e4bb7bd93d4969f555c8d27ff99c77366edbffabc969d197a306e496af49d5db846daf35f50a4c895c1b6567f66a54c644c2c9cdc23fbc96176 SHA512 6d6d83ef6c7ad53df10f43a094a7fa418267b7cb4722d84049685f2d7611839143636fd034ac25adcec25920c54c8b1faea3f36189443d8f164e0a13eceed888
+DIST patch-5.10.2-xanmod1.xz 88392 BLAKE2B 5d19e9ea45f7dcd8c644c4055eacb1e46b64a7e1ca39ed5f5550e8c59546a93a54a918528b160549d5c534f7b461173a58826fa5d3b737a12455d39fbc31613a SHA512 3f39aa11747a74471e7aaca3a006092b3075a48c01133d2c01406150d16e598cd1f086e7699cb705f6d993b0f0e5bb6e9e1b977f52da254fb267e40fe082ea84
DIST patch-5.9.10-xanmod1.xz 583644 BLAKE2B 220f85a6a73e36d62cbca83f7b5ff2d769306e21446ef05413fe3d0f0ed2e2c1fdb60cf97d425b83e5ff09242de3e5d61e38418c8a9838b17afe927fdd859d39 SHA512 acae618df28403d2950c5910ecc8dfd78e1c58ed4e8ff3787c1776e00462289e929c3097b5027103c1bda6187495664dc2b082adad6c05c42c3922de530a49d9
DIST patch-5.9.11-xanmod1.xz 639524 BLAKE2B f58c2491000e2b5e2302cfe03bb84dca5c23c152fe4c6bf0e2970a64b3683f6583cb393f82d648a58c69fed51a993c877073c34eea58654775c511a3e2291c0b SHA512 b5a3ab6250d28f97a20d26b1384fff5cc7c2232c2a976ad44f2b97141c1a6da800642a25ebd5a306371a2932d10f2758c0cf36ae879c43b0d3ab4b10dad6117d
DIST patch-5.9.12-xanmod1.xz 684744 BLAKE2B f716145dff09725018080a998ce9e9ace9c4a4d39599a7aaedf90a10fc94135deb1fdffd746119fd5546e6216581b91bc37ef62b81c3e31267e58a106c6e9927 SHA512 cb7f7a05ef0c9badc7acaca27e97287e1dcfe0e70180b88cea297c3994cba73714cec8bf7bdd7ceca786a2248dcdfa96121bfda9d201a56efd1d729d5d17de80
diff --git a/sys-kernel/xanmod-sources/files/cachy5.8.pick.patch b/sys-kernel/xanmod-sources/files/cachy5.8.pick.patch
deleted file mode 100644
index b0e07bd..0000000
--- a/sys-kernel/xanmod-sources/files/cachy5.8.pick.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index ba439ad92f4c..883da0abf779 100644
---- a/arch/x86/Kconfig
-+++ b/arch/x86/Kconfig
-@@ -1542,7 +1542,6 @@ config AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
- # Common NUMA Features
- config NUMA
- bool "NUMA Memory Allocation and Scheduler Support"
-- depends on !CACHY_SCHED
- depends on SMP
- depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP)
- default y if X86_BIGSMP
-diff --git a/init/Kconfig b/init/Kconfig
-index 053626d9ab94..ab23e72841f7 100644
---- a/init/Kconfig
-+++ b/init/Kconfig
-@@ -922,7 +922,6 @@ config CGROUP_WRITEBACK
-
- menuconfig CGROUP_SCHED
- bool "CPU controller"
-- depends on !CACHY_SCHED
- default n
- help
- This feature lets CPU scheduler recognize task groups and control CPU
-@@ -1185,7 +1184,9 @@ config CHECKPOINT_RESTORE
-
- config SCHED_AUTOGROUP
- bool "Automatic process group scheduling"
-- depends on FAIR_GROUP_SCHED && !CACHY_SCHED
-+ select CGROUPS
-+ select CGROUP_SCHED
-+ select FAIR_GROUP_SCHED
- help
- This option optimizes the scheduler for common desktop workloads by
- automatically creating and populating task groups. This separation
-diff --git a/kernel/sched/cachy.c b/kernel/sched/cachy.c
-index 477aebe000f0..d1800bda879f 100644
---- a/kernel/sched/cachy.c
-+++ b/kernel/sched/cachy.c
-@@ -4170,6 +4170,8 @@ dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
- update_cfs_group(se);
- }
-
-+static struct sched_entity *pick_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *curr);
-+
- /*
- * Preempt the current task with a newly woken task if needed:
- */
-diff --git a/kernel/sched/core.c b/kernel/sched/core.c
-index bbf09ce73d6f..b41410694c72 100644
---- a/kernel/sched/core.c
-+++ b/kernel/sched/core.c
-@@ -2923,7 +2923,12 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
- /*
- * Make sure we do not leak PI boosting priority to the child.
- */
-+#ifdef CONFIG_CACHY_SCHED
-+ p->prio = current->original_prio;
-+ p->original_prio = current->original_prio;
-+#else
- p->prio = current->normal_prio;
-+#endif
-
- uclamp_fork(p);
-
-@@ -3020,6 +3025,14 @@ void wake_up_new_task(struct task_struct *p)
-
- raw_spin_lock_irqsave(&p->pi_lock, rf.flags);
- p->state = TASK_RUNNING;
-+
-+#ifdef CONFIG_CACHY_SCHED
-+ if (p->pid > 1 && p->original_prio >= 120) {
-+ p->prio = p->static_prio = p->normal_prio = 139;
-+ set_load_weight(p, true);
-+ }
-+#endif
-+
- #ifdef CONFIG_SMP
- /*
- * Fork balancing, do it here and not earlier because:
-@@ -3695,7 +3708,7 @@ void scheduler_tick(void)
-
- perf_event_task_tick();
-
--#if CONFIG_SMP
-+#ifdef CONFIG_SMP
- rq->idle_balance = idle_cpu(cpu);
- trigger_load_balance(rq);
- #endif
diff --git a/sys-kernel/xanmod-sources/files/localversion.patch b/sys-kernel/xanmod-sources/files/localversion.patch
new file mode 100644
index 0000000..583bfc4
--- /dev/null
+++ b/sys-kernel/xanmod-sources/files/localversion.patch
@@ -0,0 +1,5 @@
+--- a/localversion 2020-12-18 17:19:14.185240837 +0100
++++ b/localversion 2020-12-18 17:21:26.537235004 +0100
+@@ -1 +1 @@
+--xanmod1-cacule
++-xanmod1
diff --git a/sys-kernel/xanmod-sources/files/smoother.patch b/sys-kernel/xanmod-sources/files/smoother.patch
new file mode 100644
index 0000000..bc9ac21
--- /dev/null
+++ b/sys-kernel/xanmod-sources/files/smoother.patch
@@ -0,0 +1,47 @@
+diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
+index 957e418f05f..8f2b1a9d0f1 100644
+--- a/kernel/sched/fair.c
++++ b/kernel/sched/fair.c
+@@ -44,6 +44,7 @@ static unsigned int normalized_sysctl_sched_latency = 6000000ULL;
+
+ #ifdef CONFIG_CACULE_SCHED
+ int interactivity_factor = 32768;
++#define MAX_LIFE_TIME_SMOOTHER 10000000000ULL // 10 seconds
+ #endif
+
+ /*
+@@ -592,15 +593,15 @@ static inline unsigned int
+ calc_interactivity(u64 now, struct cacule_node *se)
+ {
+ u64 l_se, vr_se, sleep_se, u64_factor;
+- unsigned int score_se;
++ unsigned int score_se, lifetime_smoother;
+
+ /*
+ * in case of vruntime==0, logical OR with 1 would
+ * make sure that the least sig. bit is 1
+ */
+ l_se = (now + 1ULL) - se->cacule_start_time;
+- vr_se = se->vruntime | 1;
+- sleep_se = (l_se - vr_se) | 1;
++ vr_se = se->vruntime | 1;
++ sleep_se = (l_se - vr_se) | 1;
+ u64_factor = interactivity_factor;
+
+ if (sleep_se > vr_se)
+@@ -608,7 +609,14 @@ calc_interactivity(u64 now, struct cacule_node *se)
+ else
+ score_se = (u64_factor / (vr_se / sleep_se)) + u64_factor;
+
+- return score_se;
++ if (l_se > MAX_LIFE_TIME_SMOOTHER)
++ return score_se;
++
++ u64_factor <<= 1;
++ lifetime_smoother =
++ u64_factor - (u64_factor / (MAX_LIFE_TIME_SMOOTHER / (l_se | 1)));
++
++ return score_se + lifetime_smoother;
+ }
+
+ /*
diff --git a/sys-kernel/xanmod-sources/metadata.xml b/sys-kernel/xanmod-sources/metadata.xml
index 701eeb8..9d4425b 100644
--- a/sys-kernel/xanmod-sources/metadata.xml
+++ b/sys-kernel/xanmod-sources/metadata.xml
@@ -9,6 +9,9 @@
hedmoo@yahoo.com
Andreas Westman Dorcsak
+
xanmod/linux
diff --git a/sys-kernel/xanmod-sources/xanmod-sources-5.10.2.ebuild b/sys-kernel/xanmod-sources/xanmod-sources-5.10.2.ebuild
new file mode 100644
index 0000000..9091168
--- /dev/null
+++ b/sys-kernel/xanmod-sources/xanmod-sources-5.10.2.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+K_SECURITY_UNSUPPORTED="1"
+K_NOSETEXTRAVERSION="1"
+ETYPE="sources"
+inherit kernel-2-src-prepare-overlay
+detect_version
+
+DESCRIPTION="A general-purpose kernel with custom settings and new features"
+HOMEPAGE="https://xanmod.org"
+LICENSE+=" CDDL"
+KEYWORDS="~amd64"
+XANMOD_VERSION="1"
+IUSE="cacule"
+XANMOD_URI="https://github.com/xanmod/linux/releases/download/"
+SRC_URI="
+ ${KERNEL_BASE_URI}/linux-${KV_MAJOR}.${KV_MINOR}.tar.xz
+ cacule? ( ${XANMOD_URI}/${OKV}-xanmod${XANMOD_VERSION}-cacule/patch-${OKV}-xanmod${XANMOD_VERSION}-cacule.xz )
+ !cacule? ( ${XANMOD_URI}/${OKV}-xanmod${XANMOD_VERSION}/patch-${OKV}-xanmod${XANMOD_VERSION}.xz )
+ ${GENPATCHES_URI}
+"
+
+src_unpack() {
+UNIPATCH_LIST_DEFAULT=""
+ if use cacule; then
+ UNIPATCH_LIST="${DISTDIR}/patch-${OKV}-xanmod${XANMOD_VERSION}-cacule.xz "
+ else
+ UNIPATCH_LIST="${DISTDIR}/patch-${OKV}-xanmod${XANMOD_VERSION}.xz "
+ fi
+ kernel-2-src-prepare-overlay_src_unpack
+}
+
+src_prepare() {
+
+ if use cacule; then
+ eapply "${FILESDIR}/localversion.patch"
+ eapply "${FILESDIR}/smoother.patch"
+ fi
+
+ kernel-2-src-prepare-overlay_src_prepare
+
+ rm "${S}"/.config || die
+
+}
+
+pkg_postinst() {
+ elog "MICROCODES"
+ elog "Use xanmod-sources with microcodes"
+ elog "Read https://wiki.gentoo.org/wiki/Intel_microcode"
+}