diff --git a/linux-tkg-config/5.15/config.x86_64 b/linux-tkg-config/5.15/config.x86_64 index 8780c62..7d42821 100644 --- a/linux-tkg-config/5.15/config.x86_64 +++ b/linux-tkg-config/5.15/config.x86_64 @@ -8388,6 +8388,7 @@ CONFIG_AMILO_RFKILL=m CONFIG_FUJITSU_LAPTOP=m CONFIG_FUJITSU_TABLET=m CONFIG_GPD_POCKET_FAN=m +CONFIG_X86_PLATFORM_DRIVERS_HP=y CONFIG_HP_ACCEL=m CONFIG_WIRELESS_HOTKEY=m CONFIG_HP_WMI=m diff --git a/linux-tkg-patches/5.15/0006-add-acs-overrides_iommu.patch b/linux-tkg-patches/5.15/0006-add-acs-overrides_iommu.patch index d1303a5..a91a6bd 100644 --- a/linux-tkg-patches/5.15/0006-add-acs-overrides_iommu.patch +++ b/linux-tkg-patches/5.15/0006-add-acs-overrides_iommu.patch @@ -183,11 +183,11 @@ index 4700d24e5d55..8f7a3d7fd9c1 100644 * Some Atheros AR9xxx and QCA988x chips do not behave after a bus reset. * The device will throw a Link Down error on AER-capable systems and @@ -4513,6 +4613,7 @@ static const struct pci_dev_acs_enabled { - { PCI_VENDOR_ID_ZHAOXIN, 0x9083, pci_quirk_mf_endpoint_acs }, + { PCI_VENDOR_ID_NXP, 0x8d9b, pci_quirk_nxp_rp_acs }, /* Zhaoxin Root/Downstream Ports */ { PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs }, + { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides }, + /* Wangxun nics */ + { PCI_VENDOR_ID_WANGXUN, PCI_ANY_ID, pci_quirk_wangxun_nic_acs }, { 0 } - }; - diff --git a/linux-tkg-patches/5.15/0009-prjc_v5.15-r1.patch b/linux-tkg-patches/5.15/0009-prjc_v5.15-r1.patch index d916e52..730c08b 100644 --- a/linux-tkg-patches/5.15/0009-prjc_v5.15-r1.patch +++ b/linux-tkg-patches/5.15/0009-prjc_v5.15-r1.patch @@ -9924,3 +9924,91 @@ index 588c7b983e3ba..8a6aa5b7279d3 100644 /* * If we are going to sleep and we have plugged IO queued, +diff --git a/kernel/sched/alt_core.c b/kernel/sched/alt_core.c +index ff4a45708a68e7c43f4e6494e120341514b31b56..f783788e3caa71e4c668ef0c0284dc77529b10f3 100644 +--- a/kernel/sched/alt_core.c ++++ b/kernel/sched/alt_core.c +@@ -28,7 +28,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -2236,9 +2235,10 @@ ttwu_stat(struct task_struct *p, int cpu, int wake_flags) + rq = this_rq(); + + #ifdef CONFIG_SMP +- if (cpu == rq->cpu) ++ if (cpu == rq->cpu) { + __schedstat_inc(rq->ttwu_local); +- else { ++ __schedstat_inc(p->stats.nr_wakeups_local); ++ } else { + /** Alt schedule FW ToDo: + * How to do ttwu_wake_remote + */ +@@ -2246,6 +2246,7 @@ ttwu_stat(struct task_struct *p, int cpu, int wake_flags) + #endif /* CONFIG_SMP */ + + __schedstat_inc(rq->ttwu_count); ++ __schedstat_inc(p->stats.nr_wakeups); + } + + /* +@@ -2895,6 +2896,11 @@ static inline void __sched_fork(unsigned long clone_flags, struct task_struct *p + p->stime = 0; + p->sched_time = 0; + ++#ifdef CONFIG_SCHEDSTATS ++ /* Even if schedstat is disabled, there should not be garbage */ ++ memset(&p->stats, 0, sizeof(p->stats)); ++#endif ++ + #ifdef CONFIG_PREEMPT_NOTIFIERS + INIT_HLIST_HEAD(&p->preempt_notifiers); + #endif +@@ -7397,6 +7403,10 @@ void normalize_rt_tasks(void) + if (p->flags & PF_KTHREAD) + continue; + ++ schedstat_set(p->stats.wait_start, 0); ++ schedstat_set(p->stats.sleep_start, 0); ++ schedstat_set(p->stats.block_start, 0); ++ + if (!rt_task(p)) { + /* + * Renice negative nice level userspace +diff --git a/kernel/sched/alt_sched.h b/kernel/sched/alt_sched.h +index 289058a09bd53a96a9bc09cb2e9cb5ee8e42a3d0..f2b9e686d6a69c07f54c2cae36f7ce0ab70f9cb2 100644 +--- a/kernel/sched/alt_sched.h ++++ b/kernel/sched/alt_sched.h +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + #include + #include + #include +diff --git a/kernel/sched/stats.h b/kernel/sched/stats.h +index 38f3698f5e5b31d35fe18c3c6c103a685475e64e..b9d597394316d2f5f16b6eb19f922b65bf9912fc 100644 +--- a/kernel/sched/stats.h ++++ b/kernel/sched/stats.h +@@ -89,6 +89,7 @@ static inline void rq_sched_info_depart (struct rq *rq, unsigned long long delt + + #endif /* CONFIG_SCHEDSTATS */ + ++#ifndef CONFIG_SCHED_ALT + #ifdef CONFIG_FAIR_GROUP_SCHED + struct sched_entity_stats { + struct sched_entity se; +@@ -105,6 +106,7 @@ __schedstats_from_se(struct sched_entity *se) + #endif + return &task_of(se)->stats; + } ++#endif /* CONFIG_SCHED_ALT */ + + #ifdef CONFIG_PSI + void psi_task_change(struct task_struct *task, int clear, int set);