6.11.0 release
Some checks failed
PikaOS Package Build & Release (amd64-v3) / build (push) Failing after 20s
Some checks failed
PikaOS Package Build & Release (amd64-v3) / build (push) Failing after 20s
This commit is contained in:
parent
0a35d494e0
commit
913ddec6ee
2
.github/release-nest-v3
vendored
2
.github/release-nest-v3
vendored
@ -1 +1 @@
|
||||
3
|
||||
4
|
18
config
18
config
@ -1,8 +1,8 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86 6.11.0-rc6 Kernel Configuration
|
||||
# Linux/x86 6.11.0 Kernel Configuration
|
||||
#
|
||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 14.2.1 20240805"
|
||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 14.2.1 20240910"
|
||||
CONFIG_CC_IS_GCC=y
|
||||
CONFIG_GCC_VERSION=140201
|
||||
CONFIG_CLANG_VERSION=0
|
||||
@ -223,7 +223,7 @@ CONFIG_CGROUPS=y
|
||||
CONFIG_PAGE_COUNTER=y
|
||||
# CONFIG_CGROUP_FAVOR_DYNMODS is not set
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_MEMCG_V1=y
|
||||
# CONFIG_MEMCG_V1 is not set
|
||||
CONFIG_BLK_CGROUP=y
|
||||
CONFIG_CGROUP_WRITEBACK=y
|
||||
CONFIG_CGROUP_SCHED=y
|
||||
@ -2744,7 +2744,7 @@ CONFIG_NVME_TCP=m
|
||||
CONFIG_NVME_TCP_TLS=y
|
||||
CONFIG_NVME_HOST_AUTH=y
|
||||
CONFIG_NVME_TARGET=m
|
||||
# CONFIG_NVME_TARGET_DEBUGFS is not set
|
||||
CONFIG_NVME_TARGET_DEBUGFS=y
|
||||
CONFIG_NVME_TARGET_PASSTHRU=y
|
||||
CONFIG_NVME_TARGET_LOOP=m
|
||||
CONFIG_NVME_TARGET_RDMA=m
|
||||
@ -3470,7 +3470,7 @@ CONFIG_FM10K=m
|
||||
CONFIG_IGC=m
|
||||
CONFIG_IGC_LEDS=y
|
||||
CONFIG_IDPF=m
|
||||
CONFIG_IDPF_SINGLEQ=y
|
||||
# CONFIG_IDPF_SINGLEQ is not set
|
||||
CONFIG_JME=m
|
||||
CONFIG_NET_VENDOR_ADI=y
|
||||
CONFIG_ADIN1110=m
|
||||
@ -4562,7 +4562,7 @@ CONFIG_INPUT_AD714X_SPI=m
|
||||
CONFIG_INPUT_ARIZONA_HAPTICS=m
|
||||
CONFIG_INPUT_ATC260X_ONKEY=m
|
||||
CONFIG_INPUT_BMA150=m
|
||||
CONFIG_INPUT_CS40L50_VIBRA=m
|
||||
# CONFIG_INPUT_CS40L50_VIBRA is not set
|
||||
CONFIG_INPUT_E3X0_BUTTON=m
|
||||
CONFIG_INPUT_PCSPKR=m
|
||||
CONFIG_INPUT_MAX77693_HAPTIC=m
|
||||
@ -5192,7 +5192,7 @@ CONFIG_GPIO_SIM=m
|
||||
#
|
||||
# GPIO Debugging utilities
|
||||
#
|
||||
CONFIG_GPIO_VIRTUSER=m
|
||||
# CONFIG_GPIO_VIRTUSER is not set
|
||||
# end of GPIO Debugging utilities
|
||||
|
||||
CONFIG_W1=m
|
||||
@ -10730,7 +10730,7 @@ CONFIG_OVERLAY_FS_METACOPY=y
|
||||
#
|
||||
CONFIG_NETFS_SUPPORT=m
|
||||
CONFIG_NETFS_STATS=y
|
||||
# CONFIG_NETFS_DEBUG is not set
|
||||
CONFIG_NETFS_DEBUG=y
|
||||
CONFIG_FSCACHE=y
|
||||
CONFIG_FSCACHE_STATS=y
|
||||
CONFIG_CACHEFILES=m
|
||||
@ -11654,7 +11654,7 @@ CONFIG_PAHOLE_HAS_SPLIT_BTF=y
|
||||
CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
|
||||
CONFIG_DEBUG_INFO_BTF_MODULES=y
|
||||
# CONFIG_MODULE_ALLOW_BTF_MISMATCH is not set
|
||||
# CONFIG_GDB_SCRIPTS is not set
|
||||
CONFIG_GDB_SCRIPTS=y
|
||||
CONFIG_FRAME_WARN=2048
|
||||
CONFIG_STRIP_ASM_SYMS=y
|
||||
# CONFIG_READABLE_ASM is not set
|
||||
|
@ -1,18 +1,53 @@
|
||||
From 89404bebea127570b279beb4ed0a30ace5403370 Mon Sep 17 00:00:00 2001
|
||||
From 67efcf30522cda8a81d47d35a9a89c24f5cdd00a Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jung <admin@ptr1337.dev>
|
||||
Date: Sun, 1 Sep 2024 10:38:28 +0200
|
||||
Date: Sun, 15 Sep 2024 17:28:12 +0200
|
||||
Subject: [PATCH 01/11] amd-pstate
|
||||
|
||||
Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
---
|
||||
arch/x86/include/asm/processor.h | 3 -
|
||||
arch/x86/kernel/acpi/cppc.c | 159 ++++++++++++++++++++++++++++++-
|
||||
arch/x86/kernel/cpu/amd.c | 16 ----
|
||||
drivers/cpufreq/acpi-cpufreq.c | 12 ++-
|
||||
drivers/cpufreq/amd-pstate.c | 143 +++++++--------------------
|
||||
include/acpi/cppc_acpi.h | 10 ++
|
||||
6 files changed, 208 insertions(+), 135 deletions(-)
|
||||
Documentation/admin-guide/pm/amd-pstate.rst | 15 +-
|
||||
arch/x86/include/asm/processor.h | 3 -
|
||||
arch/x86/kernel/acpi/cppc.c | 172 ++++++++++++++++++--
|
||||
arch/x86/kernel/cpu/amd.c | 16 --
|
||||
drivers/acpi/cppc_acpi.c | 10 +-
|
||||
drivers/cpufreq/acpi-cpufreq.c | 12 +-
|
||||
drivers/cpufreq/amd-pstate.c | 133 ++++-----------
|
||||
include/acpi/cppc_acpi.h | 41 +++--
|
||||
8 files changed, 254 insertions(+), 148 deletions(-)
|
||||
|
||||
diff --git a/Documentation/admin-guide/pm/amd-pstate.rst b/Documentation/admin-guide/pm/amd-pstate.rst
|
||||
index d0324d44f548..210a808b74ec 100644
|
||||
--- a/Documentation/admin-guide/pm/amd-pstate.rst
|
||||
+++ b/Documentation/admin-guide/pm/amd-pstate.rst
|
||||
@@ -251,7 +251,9 @@ performance supported in `AMD CPPC Performance Capability <perf_cap_>`_).
|
||||
In some ASICs, the highest CPPC performance is not the one in the ``_CPC``
|
||||
table, so we need to expose it to sysfs. If boost is not active, but
|
||||
still supported, this maximum frequency will be larger than the one in
|
||||
-``cpuinfo``.
|
||||
+``cpuinfo``. On systems that support preferred core, the driver will have
|
||||
+different values for some cores than others and this will reflect the values
|
||||
+advertised by the platform at bootup.
|
||||
This attribute is read-only.
|
||||
|
||||
``amd_pstate_lowest_nonlinear_freq``
|
||||
@@ -262,6 +264,17 @@ lowest non-linear performance in `AMD CPPC Performance Capability
|
||||
<perf_cap_>`_.)
|
||||
This attribute is read-only.
|
||||
|
||||
+``amd_pstate_hw_prefcore``
|
||||
+
|
||||
+Whether the platform supports the preferred core feature and it has been
|
||||
+enabled. This attribute is read-only.
|
||||
+
|
||||
+``amd_pstate_prefcore_ranking``
|
||||
+
|
||||
+The performance ranking of the core. This number doesn't have any unit, but
|
||||
+larger numbers are preferred at the time of reading. This can change at
|
||||
+runtime based on platform conditions. This attribute is read-only.
|
||||
+
|
||||
``energy_performance_available_preferences``
|
||||
|
||||
A list of all the supported EPP preferences that could be used for
|
||||
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
|
||||
index a75a07f4931f..775acbdea1a9 100644
|
||||
--- a/arch/x86/include/asm/processor.h
|
||||
@ -35,7 +70,7 @@ index a75a07f4931f..775acbdea1a9 100644
|
||||
static inline void amd_check_microcode(void) { }
|
||||
#endif
|
||||
diff --git a/arch/x86/kernel/acpi/cppc.c b/arch/x86/kernel/acpi/cppc.c
|
||||
index ff8f25faca3d..44b13a4e2874 100644
|
||||
index ff8f25faca3d..956984054bf3 100644
|
||||
--- a/arch/x86/kernel/acpi/cppc.c
|
||||
+++ b/arch/x86/kernel/acpi/cppc.c
|
||||
@@ -9,6 +9,17 @@
|
||||
@ -56,7 +91,14 @@ index ff8f25faca3d..44b13a4e2874 100644
|
||||
/* Refer to drivers/acpi/cppc_acpi.c for the description of functions */
|
||||
|
||||
bool cpc_supported_by_cpu(void)
|
||||
@@ -75,15 +86,17 @@ static void amd_set_max_freq_ratio(void)
|
||||
@@ -69,31 +80,30 @@ int cpc_write_ffh(int cpunum, struct cpc_reg *reg, u64 val)
|
||||
static void amd_set_max_freq_ratio(void)
|
||||
{
|
||||
struct cppc_perf_caps perf_caps;
|
||||
- u64 highest_perf, nominal_perf;
|
||||
+ u64 numerator, nominal_perf;
|
||||
u64 perf_ratio;
|
||||
int rc;
|
||||
|
||||
rc = cppc_get_perf_caps(0, &perf_caps);
|
||||
if (rc) {
|
||||
@ -66,9 +108,11 @@ index ff8f25faca3d..44b13a4e2874 100644
|
||||
}
|
||||
|
||||
- highest_perf = amd_get_highest_perf();
|
||||
+ rc = amd_get_boost_ratio_numerator(0, &highest_perf);
|
||||
+ if (rc)
|
||||
+ pr_warn("Could not retrieve highest performance\n");
|
||||
+ rc = amd_get_boost_ratio_numerator(0, &numerator);
|
||||
+ if (rc) {
|
||||
+ pr_warn("Could not retrieve highest performance (%d)\n", rc);
|
||||
+ return;
|
||||
+ }
|
||||
nominal_perf = perf_caps.nominal_perf;
|
||||
|
||||
- if (!highest_perf || !nominal_perf) {
|
||||
@ -78,16 +122,18 @@ index ff8f25faca3d..44b13a4e2874 100644
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -91,7 +104,7 @@ static void amd_set_max_freq_ratio(void)
|
||||
- perf_ratio = div_u64(highest_perf * SCHED_CAPACITY_SCALE, nominal_perf);
|
||||
/* midpoint between max_boost and max_P */
|
||||
perf_ratio = (perf_ratio + SCHED_CAPACITY_SCALE) >> 1;
|
||||
if (!perf_ratio) {
|
||||
- perf_ratio = (perf_ratio + SCHED_CAPACITY_SCALE) >> 1;
|
||||
- if (!perf_ratio) {
|
||||
- pr_debug("Non-zero highest/nominal perf values led to a 0 ratio\n");
|
||||
+ pr_warn("Non-zero highest/nominal perf values led to a 0 ratio\n");
|
||||
return;
|
||||
}
|
||||
- return;
|
||||
- }
|
||||
+ perf_ratio = (div_u64(numerator * SCHED_CAPACITY_SCALE, nominal_perf) + SCHED_CAPACITY_SCALE) >> 1;
|
||||
|
||||
@@ -116,3 +129,139 @@ void init_freq_invariance_cppc(void)
|
||||
freq_invariance_set_perf_ratio(perf_ratio, false);
|
||||
}
|
||||
@@ -116,3 +126,143 @@ void init_freq_invariance_cppc(void)
|
||||
init_done = true;
|
||||
mutex_unlock(&freq_invariance_lock);
|
||||
}
|
||||
@ -191,6 +237,10 @@ index ff8f25faca3d..44b13a4e2874 100644
|
||||
+ * a CPU. On systems that support preferred cores, this will be a hardcoded
|
||||
+ * value. On other systems this will the highest performance register value.
|
||||
+ *
|
||||
+ * If booting the system with amd-pstate enabled but preferred cores disabled then
|
||||
+ * the correct boost numerator will be returned to match hardware capabilities
|
||||
+ * even if the preferred cores scheduling hints are not enabled.
|
||||
+ *
|
||||
+ * Return: 0 for success, negative error code otherwise.
|
||||
+ */
|
||||
+int amd_get_boost_ratio_numerator(unsigned int cpu, u64 *numerator)
|
||||
@ -254,6 +304,36 @@ index 1e0fe5f8ab84..015971adadfc 100644
|
||||
static void zenbleed_check_cpu(void *unused)
|
||||
{
|
||||
struct cpuinfo_x86 *c = &cpu_data(smp_processor_id());
|
||||
diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
|
||||
index dd3d3082c8c7..3b5b695bb80b 100644
|
||||
--- a/drivers/acpi/cppc_acpi.c
|
||||
+++ b/drivers/acpi/cppc_acpi.c
|
||||
@@ -103,6 +103,11 @@ static DEFINE_PER_CPU(struct cpc_desc *, cpc_desc_ptr);
|
||||
(cpc)->cpc_entry.reg.space_id == \
|
||||
ACPI_ADR_SPACE_PLATFORM_COMM)
|
||||
|
||||
+/* Check if a CPC register is in FFH */
|
||||
+#define CPC_IN_FFH(cpc) ((cpc)->type == ACPI_TYPE_BUFFER && \
|
||||
+ (cpc)->cpc_entry.reg.space_id == \
|
||||
+ ACPI_ADR_SPACE_FIXED_HARDWARE)
|
||||
+
|
||||
/* Check if a CPC register is in SystemMemory */
|
||||
#define CPC_IN_SYSTEM_MEMORY(cpc) ((cpc)->type == ACPI_TYPE_BUFFER && \
|
||||
(cpc)->cpc_entry.reg.space_id == \
|
||||
@@ -1486,9 +1491,12 @@ int cppc_set_epp_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls, bool enable)
|
||||
/* after writing CPC, transfer the ownership of PCC to platform */
|
||||
ret = send_pcc_cmd(pcc_ss_id, CMD_WRITE);
|
||||
up_write(&pcc_ss_data->pcc_lock);
|
||||
+ } else if (osc_cpc_flexible_adr_space_confirmed &&
|
||||
+ CPC_SUPPORTED(epp_set_reg) && CPC_IN_FFH(epp_set_reg)) {
|
||||
+ ret = cpc_write(cpu, epp_set_reg, perf_ctrls->energy_perf);
|
||||
} else {
|
||||
ret = -ENOTSUPP;
|
||||
- pr_debug("_CPC in PCC is not supported\n");
|
||||
+ pr_debug("_CPC in PCC and _CPC in FFH are not supported\n");
|
||||
}
|
||||
|
||||
return ret;
|
||||
diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c
|
||||
index a8ca625a98b8..0f04feb6cafa 100644
|
||||
--- a/drivers/cpufreq/acpi-cpufreq.c
|
||||
@ -279,7 +359,7 @@ index a8ca625a98b8..0f04feb6cafa 100644
|
||||
nominal_perf = perf_caps.nominal_perf;
|
||||
|
||||
diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c
|
||||
index 89bda7a2bb8d..93cac81e1cbe 100644
|
||||
index 259a917da75f..113f82130a30 100644
|
||||
--- a/drivers/cpufreq/amd-pstate.c
|
||||
+++ b/drivers/cpufreq/amd-pstate.c
|
||||
@@ -52,8 +52,6 @@
|
||||
@ -337,7 +417,13 @@ index 89bda7a2bb8d..93cac81e1cbe 100644
|
||||
WRITE_ONCE(cpudata->nominal_perf, AMD_CPPC_NOMINAL_PERF(cap1));
|
||||
WRITE_ONCE(cpudata->lowest_nonlinear_perf, AMD_CPPC_LOWNONLIN_PERF(cap1));
|
||||
WRITE_ONCE(cpudata->lowest_perf, AMD_CPPC_LOWEST_PERF(cap1));
|
||||
@@ -426,12 +398,7 @@ static int cppc_init_perf(struct amd_cpudata *cpudata)
|
||||
@@ -420,19 +392,13 @@ static int pstate_init_perf(struct amd_cpudata *cpudata)
|
||||
static int cppc_init_perf(struct amd_cpudata *cpudata)
|
||||
{
|
||||
struct cppc_perf_caps cppc_perf;
|
||||
- u32 highest_perf;
|
||||
|
||||
int ret = cppc_get_perf_caps(cpudata->cpu, &cppc_perf);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -347,11 +433,13 @@ index 89bda7a2bb8d..93cac81e1cbe 100644
|
||||
- highest_perf = cppc_perf.highest_perf;
|
||||
-
|
||||
- WRITE_ONCE(cpudata->highest_perf, highest_perf);
|
||||
- WRITE_ONCE(cpudata->max_limit_perf, highest_perf);
|
||||
+ WRITE_ONCE(cpudata->highest_perf, cppc_perf.highest_perf);
|
||||
WRITE_ONCE(cpudata->max_limit_perf, highest_perf);
|
||||
+ WRITE_ONCE(cpudata->max_limit_perf, cppc_perf.highest_perf);
|
||||
WRITE_ONCE(cpudata->nominal_perf, cppc_perf.nominal_perf);
|
||||
WRITE_ONCE(cpudata->lowest_nonlinear_perf,
|
||||
@@ -554,12 +521,15 @@ static void amd_pstate_update(struct amd_cpudata *cpudata, u32 min_perf,
|
||||
cppc_perf.lowest_nonlinear_perf);
|
||||
@@ -554,12 +520,15 @@ static void amd_pstate_update(struct amd_cpudata *cpudata, u32 min_perf,
|
||||
}
|
||||
|
||||
if (value == prev)
|
||||
@ -368,7 +456,7 @@ index 89bda7a2bb8d..93cac81e1cbe 100644
|
||||
}
|
||||
|
||||
static int amd_pstate_verify(struct cpufreq_policy_data *policy)
|
||||
@@ -803,66 +773,22 @@ static void amd_pstste_sched_prefcore_workfn(struct work_struct *work)
|
||||
@@ -803,66 +772,22 @@ static void amd_pstste_sched_prefcore_workfn(struct work_struct *work)
|
||||
}
|
||||
static DECLARE_WORK(sched_prefcore_work, amd_pstste_sched_prefcore_workfn);
|
||||
|
||||
@ -438,7 +526,7 @@ index 89bda7a2bb8d..93cac81e1cbe 100644
|
||||
|
||||
schedule_work(&sched_prefcore_work);
|
||||
}
|
||||
@@ -875,17 +801,17 @@ static void amd_pstate_update_limits(unsigned int cpu)
|
||||
@@ -875,17 +800,17 @@ static void amd_pstate_update_limits(unsigned int cpu)
|
||||
int ret;
|
||||
bool highest_perf_changed = false;
|
||||
|
||||
@ -462,7 +550,7 @@ index 89bda7a2bb8d..93cac81e1cbe 100644
|
||||
WRITE_ONCE(cpudata->prefcore_ranking, cur_high);
|
||||
|
||||
if (cur_high < CPPC_MAX_PERF)
|
||||
@@ -949,8 +875,8 @@ static u32 amd_pstate_get_transition_latency(unsigned int cpu)
|
||||
@@ -949,8 +874,8 @@ static u32 amd_pstate_get_transition_latency(unsigned int cpu)
|
||||
static int amd_pstate_init_freq(struct amd_cpudata *cpudata)
|
||||
{
|
||||
int ret;
|
||||
@ -473,7 +561,7 @@ index 89bda7a2bb8d..93cac81e1cbe 100644
|
||||
u32 nominal_perf, nominal_freq;
|
||||
u32 lowest_nonlinear_perf, lowest_nonlinear_freq;
|
||||
u32 boost_ratio, lowest_nonlinear_ratio;
|
||||
@@ -972,8 +898,10 @@ static int amd_pstate_init_freq(struct amd_cpudata *cpudata)
|
||||
@@ -972,8 +897,10 @@ static int amd_pstate_init_freq(struct amd_cpudata *cpudata)
|
||||
|
||||
nominal_perf = READ_ONCE(cpudata->nominal_perf);
|
||||
|
||||
@ -486,7 +574,7 @@ index 89bda7a2bb8d..93cac81e1cbe 100644
|
||||
max_freq = (nominal_freq * boost_ratio >> SCHED_CAPACITY_SHIFT) * 1000;
|
||||
|
||||
lowest_nonlinear_perf = READ_ONCE(cpudata->lowest_nonlinear_perf);
|
||||
@@ -1028,12 +956,12 @@ static int amd_pstate_cpu_init(struct cpufreq_policy *policy)
|
||||
@@ -1028,12 +955,12 @@ static int amd_pstate_cpu_init(struct cpufreq_policy *policy)
|
||||
|
||||
cpudata->cpu = policy->cpu;
|
||||
|
||||
@ -501,21 +589,7 @@ index 89bda7a2bb8d..93cac81e1cbe 100644
|
||||
ret = amd_pstate_init_freq(cpudata);
|
||||
if (ret)
|
||||
goto free_cpudata1;
|
||||
@@ -1187,12 +1115,7 @@ static ssize_t show_amd_pstate_prefcore_ranking(struct cpufreq_policy *policy,
|
||||
static ssize_t show_amd_pstate_hw_prefcore(struct cpufreq_policy *policy,
|
||||
char *buf)
|
||||
{
|
||||
- bool hw_prefcore;
|
||||
- struct amd_cpudata *cpudata = policy->driver_data;
|
||||
-
|
||||
- hw_prefcore = READ_ONCE(cpudata->hw_prefcore);
|
||||
-
|
||||
- return sysfs_emit(buf, "%s\n", str_enabled_disabled(hw_prefcore));
|
||||
+ return sysfs_emit(buf, "%s\n", str_enabled_disabled(amd_pstate_prefcore));
|
||||
}
|
||||
|
||||
static ssize_t show_energy_performance_available_preferences(
|
||||
@@ -1483,12 +1406,12 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)
|
||||
@@ -1483,12 +1410,12 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)
|
||||
cpudata->cpu = policy->cpu;
|
||||
cpudata->epp_policy = 0;
|
||||
|
||||
@ -530,20 +604,7 @@ index 89bda7a2bb8d..93cac81e1cbe 100644
|
||||
ret = amd_pstate_init_freq(cpudata);
|
||||
if (ret)
|
||||
goto free_cpudata1;
|
||||
@@ -1841,10 +1764,8 @@ static bool amd_cppc_supported(void)
|
||||
* the code is added for debugging purposes.
|
||||
*/
|
||||
if (!cpu_feature_enabled(X86_FEATURE_CPPC)) {
|
||||
- if (cpu_feature_enabled(X86_FEATURE_ZEN1) || cpu_feature_enabled(X86_FEATURE_ZEN2)) {
|
||||
- if (c->x86_model > 0x60 && c->x86_model < 0xaf)
|
||||
- warn = true;
|
||||
- } else if (cpu_feature_enabled(X86_FEATURE_ZEN3) || cpu_feature_enabled(X86_FEATURE_ZEN4)) {
|
||||
+ if (cpu_feature_enabled(X86_FEATURE_ZEN3) ||
|
||||
+ cpu_feature_enabled(X86_FEATURE_ZEN4)) {
|
||||
if ((c->x86_model > 0x10 && c->x86_model < 0x1F) ||
|
||||
(c->x86_model > 0x40 && c->x86_model < 0xaf))
|
||||
warn = true;
|
||||
@@ -1933,6 +1854,12 @@ static int __init amd_pstate_init(void)
|
||||
@@ -1947,6 +1874,12 @@ static int __init amd_pstate_init(void)
|
||||
static_call_update(amd_pstate_update_perf, cppc_update_perf);
|
||||
}
|
||||
|
||||
@ -557,32 +618,106 @@ index 89bda7a2bb8d..93cac81e1cbe 100644
|
||||
ret = amd_pstate_enable(true);
|
||||
if (ret) {
|
||||
diff --git a/include/acpi/cppc_acpi.h b/include/acpi/cppc_acpi.h
|
||||
index 930b6afba6f4..1d79320a2349 100644
|
||||
index 930b6afba6f4..482e0587a041 100644
|
||||
--- a/include/acpi/cppc_acpi.h
|
||||
+++ b/include/acpi/cppc_acpi.h
|
||||
@@ -136,6 +136,16 @@ struct cppc_cpudata {
|
||||
cpumask_var_t shared_cpu_map;
|
||||
};
|
||||
|
||||
+#ifdef CONFIG_CPU_SUP_AMD
|
||||
+extern int amd_detect_prefcore(bool *detected);
|
||||
@@ -159,34 +159,37 @@ extern int cppc_get_epp_perf(int cpunum, u64 *epp_perf);
|
||||
extern int cppc_set_epp_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls, bool enable);
|
||||
extern int cppc_get_auto_sel_caps(int cpunum, struct cppc_perf_caps *perf_caps);
|
||||
extern int cppc_set_auto_sel(int cpu, bool enable);
|
||||
+extern int amd_get_highest_perf(unsigned int cpu, u32 *highest_perf);
|
||||
+extern int amd_get_boost_ratio_numerator(unsigned int cpu, u64 *numerator);
|
||||
+#else /* !CONFIG_CPU_SUP_AMD */
|
||||
+static inline int amd_get_highest_perf(unsigned int cpu, u32 *highest_perf) { return -ENODEV; }
|
||||
+static inline int amd_detect_prefcore(bool *detected) { return -ENODEV; }
|
||||
+static inline int amd_get_boost_ratio_numerator(unsigned int cpu, u64 *numerator) { return -ENODEV; }
|
||||
+#endif /* !CONFIG_CPU_SUP_AMD */
|
||||
+
|
||||
#ifdef CONFIG_ACPI_CPPC_LIB
|
||||
extern int cppc_get_desired_perf(int cpunum, u64 *desired_perf);
|
||||
extern int cppc_get_nominal_perf(int cpunum, u64 *nominal_perf);
|
||||
+extern int amd_detect_prefcore(bool *detected);
|
||||
#else /* !CONFIG_ACPI_CPPC_LIB */
|
||||
static inline int cppc_get_desired_perf(int cpunum, u64 *desired_perf)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline int cppc_get_nominal_perf(int cpunum, u64 *nominal_perf)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline int cppc_get_highest_perf(int cpunum, u64 *highest_perf)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline int cppc_get_perf_ctrs(int cpu, struct cppc_perf_fb_ctrs *perf_fb_ctrs)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline int cppc_set_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline int cppc_set_enable(int cpu, bool enable)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline int cppc_get_perf_caps(int cpu, struct cppc_perf_caps *caps)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline bool cppc_perf_ctrs_in_pcc(void)
|
||||
{
|
||||
@@ -210,27 +213,39 @@ static inline bool cpc_ffh_supported(void)
|
||||
}
|
||||
static inline int cpc_read_ffh(int cpunum, struct cpc_reg *reg, u64 *val)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline int cpc_write_ffh(int cpunum, struct cpc_reg *reg, u64 val)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline int cppc_set_epp_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls, bool enable)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline int cppc_get_epp_perf(int cpunum, u64 *epp_perf)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline int cppc_set_auto_sel(int cpu, bool enable)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
}
|
||||
static inline int cppc_get_auto_sel_caps(int cpunum, struct cppc_perf_caps *perf_caps)
|
||||
{
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
+}
|
||||
+static inline int amd_get_highest_perf(unsigned int cpu, u32 *highest_perf)
|
||||
+{
|
||||
+ return -ENODEV;
|
||||
+}
|
||||
+static inline int amd_get_boost_ratio_numerator(unsigned int cpu, u64 *numerator)
|
||||
+{
|
||||
+ return -EOPNOTSUPP;
|
||||
+}
|
||||
+static inline int amd_detect_prefcore(bool *detected)
|
||||
+{
|
||||
+ return -ENODEV;
|
||||
}
|
||||
#endif /* !CONFIG_ACPI_CPPC_LIB */
|
||||
|
||||
--
|
||||
2.46.0
|
||||
2.46.1
|
||||
|
||||
From c03b9d435583136f64f0b91d4ac79f27d0e176cd Mon Sep 17 00:00:00 2001
|
||||
From 2676833deb16654c45007f79fb6725a3409899ff Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jung <admin@ptr1337.dev>
|
||||
Date: Sun, 1 Sep 2024 10:38:38 +0200
|
||||
Date: Sun, 15 Sep 2024 17:28:27 +0200
|
||||
Subject: [PATCH 02/11] bbr3
|
||||
|
||||
Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
@ -3964,11 +4099,11 @@ index 4d40615dc8fc..f27941201ef2 100644
|
||||
event = icsk->icsk_pending;
|
||||
|
||||
--
|
||||
2.46.0
|
||||
2.46.1
|
||||
|
||||
From cfadd59d3bf4eb2ba75e1b778510b13bd2299f1f Mon Sep 17 00:00:00 2001
|
||||
From 8f73cbbad2683b2bebffdf85fb133c78e44603a4 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jung <admin@ptr1337.dev>
|
||||
Date: Sun, 1 Sep 2024 10:38:49 +0200
|
||||
Date: Sun, 15 Sep 2024 17:28:36 +0200
|
||||
Subject: [PATCH 03/11] block
|
||||
|
||||
Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
@ -4449,11 +4584,11 @@ index acdc28756d9d..8b214233a061 100644
|
||||
if (dd_has_work_for_prio(&dd->per_prio[prio]))
|
||||
return true;
|
||||
--
|
||||
2.46.0
|
||||
2.46.1
|
||||
|
||||
From 0dbaf3e34fbdd41800ee182694dc6b4a16bd5021 Mon Sep 17 00:00:00 2001
|
||||
From e1cb9da59b75cd677cd7af9923864344099b0973 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jung <admin@ptr1337.dev>
|
||||
Date: Sun, 1 Sep 2024 10:38:57 +0200
|
||||
Date: Sun, 15 Sep 2024 17:28:46 +0200
|
||||
Subject: [PATCH 04/11] cachy
|
||||
|
||||
Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
@ -4517,8 +4652,8 @@ Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
mm/vmpressure.c | 4 +
|
||||
mm/vmscan.c | 142 +
|
||||
scripts/Makefile.package | 3 +-
|
||||
scripts/package/PKGBUILD | 39 +-
|
||||
60 files changed, 6100 insertions(+), 110 deletions(-)
|
||||
scripts/package/PKGBUILD | 52 +-
|
||||
60 files changed, 6113 insertions(+), 110 deletions(-)
|
||||
create mode 100644 drivers/i2c/busses/i2c-nct6775.c
|
||||
create mode 100644 drivers/media/v4l2-core/v4l2loopback.c
|
||||
create mode 100644 drivers/media/v4l2-core/v4l2loopback.h
|
||||
@ -4653,10 +4788,10 @@ index f48eaa98d22d..fc777c14cff6 100644
|
||||
unprivileged_userfaultfd
|
||||
========================
|
||||
diff --git a/Makefile b/Makefile
|
||||
index d57cfc6896b8..e280a998f618 100644
|
||||
index 34bd1d5f9672..7b497ab43754 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -802,6 +802,9 @@ KBUILD_CFLAGS += -fno-delete-null-pointer-checks
|
||||
@@ -803,6 +803,9 @@ KBUILD_CFLAGS += -fno-delete-null-pointer-checks
|
||||
ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
|
||||
KBUILD_CFLAGS += -O2
|
||||
KBUILD_RUSTFLAGS += -Copt-level=2
|
||||
@ -4666,7 +4801,7 @@ index d57cfc6896b8..e280a998f618 100644
|
||||
else ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
KBUILD_CFLAGS += -Os
|
||||
KBUILD_RUSTFLAGS += -Copt-level=s
|
||||
@@ -990,9 +993,9 @@ KBUILD_CFLAGS += -fno-strict-overflow
|
||||
@@ -991,9 +994,9 @@ KBUILD_CFLAGS += -fno-strict-overflow
|
||||
# Make sure -fstack-check isn't enabled (like gentoo apparently did)
|
||||
KBUILD_CFLAGS += -fno-stack-check
|
||||
|
||||
@ -5436,7 +5571,7 @@ index f9bc95f4488d..e85dd2bf39ed 100644
|
||||
|
||||
slab_kill:
|
||||
diff --git a/block/elevator.c b/block/elevator.c
|
||||
index f13d552a32c8..c9422523e393 100644
|
||||
index c355b55d0107..41cf94c3671e 100644
|
||||
--- a/block/elevator.c
|
||||
+++ b/block/elevator.c
|
||||
@@ -567,9 +567,19 @@ static struct elevator_type *elevator_get_default(struct request_queue *q)
|
||||
@ -5676,10 +5811,10 @@ index df17e79c45c7..e454488c1a31 100644
|
||||
+
|
||||
endmenu
|
||||
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
||||
index 983a977632ff..68357fb6b551 100644
|
||||
index 1e069fa5211e..f16a43106eb0 100644
|
||||
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
||||
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
||||
@@ -4384,7 +4384,7 @@ static int amdgpu_dm_mode_config_init(struct amdgpu_device *adev)
|
||||
@@ -4408,7 +4408,7 @@ static int amdgpu_dm_mode_config_init(struct amdgpu_device *adev)
|
||||
return r;
|
||||
}
|
||||
|
||||
@ -5778,10 +5913,10 @@ index d5d6ab484e5a..dccba7bcdf97 100644
|
||||
}
|
||||
|
||||
diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||||
index 74e35f8ddefc..c2c2c915db99 100644
|
||||
index 2cf951184561..1a53bf05f8fc 100644
|
||||
--- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||||
+++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||||
@@ -2760,7 +2760,10 @@ int smu_get_power_limit(void *handle,
|
||||
@@ -2762,7 +2762,10 @@ int smu_get_power_limit(void *handle,
|
||||
*limit = smu->max_power_limit;
|
||||
break;
|
||||
case SMU_PPT_LIMIT_MIN:
|
||||
@ -5793,7 +5928,7 @@ index 74e35f8ddefc..c2c2c915db99 100644
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
@@ -2784,7 +2787,14 @@ static int smu_set_power_limit(void *handle, uint32_t limit)
|
||||
@@ -2786,7 +2789,14 @@ static int smu_set_power_limit(void *handle, uint32_t limit)
|
||||
if (smu->ppt_funcs->set_power_limit)
|
||||
return smu->ppt_funcs->set_power_limit(smu, limit_type, limit);
|
||||
|
||||
@ -10986,10 +11121,10 @@ index d4d2f4d1d7cb..e0e19d9c1323 100644
|
||||
char name[CPUFREQ_NAME_LEN];
|
||||
int (*init)(struct cpufreq_policy *policy);
|
||||
diff --git a/include/linux/mm.h b/include/linux/mm.h
|
||||
index 6549d0979b28..dca9a4444101 100644
|
||||
index 147073601716..9fafa99d56d1 100644
|
||||
--- a/include/linux/mm.h
|
||||
+++ b/include/linux/mm.h
|
||||
@@ -197,6 +197,14 @@ static inline void __mm_zero_struct_page(struct page *page)
|
||||
@@ -201,6 +201,14 @@ static inline void __mm_zero_struct_page(struct page *page)
|
||||
|
||||
extern int sysctl_max_map_count;
|
||||
|
||||
@ -11466,7 +11601,7 @@ index 4430ac68e4c4..3bd08b60a9b3 100644
|
||||
EXPORT_SYMBOL_GPL(dirty_writeback_interval);
|
||||
|
||||
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
|
||||
index c565de8f48e9..ef44703d2070 100644
|
||||
index 91ace8ca97e2..f8b4dae35fc3 100644
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -271,7 +271,11 @@ const char * const migratetype_names[MIGRATE_TYPES] = {
|
||||
@ -11519,7 +11654,7 @@ index bd5183dfd879..3a410f53a07c 100644
|
||||
|
||||
/*
|
||||
diff --git a/mm/vmscan.c b/mm/vmscan.c
|
||||
index cfa839284b92..9b7bb2a5626c 100644
|
||||
index bd489c1af228..fb8fc07523b9 100644
|
||||
--- a/mm/vmscan.c
|
||||
+++ b/mm/vmscan.c
|
||||
@@ -147,6 +147,15 @@ struct scan_control {
|
||||
@ -11572,7 +11707,7 @@ index cfa839284b92..9b7bb2a5626c 100644
|
||||
/*
|
||||
* The number of dirty pages determines if a node is marked
|
||||
* reclaim_congested. kswapd will stall and start writing
|
||||
@@ -2411,6 +2436,15 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc,
|
||||
@@ -2391,6 +2416,15 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc,
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -11588,7 +11723,7 @@ index cfa839284b92..9b7bb2a5626c 100644
|
||||
/*
|
||||
* If there is enough inactive page cache, we do not reclaim
|
||||
* anything from the anonymous working right now.
|
||||
@@ -2555,6 +2589,14 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc,
|
||||
@@ -2535,6 +2569,14 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc,
|
||||
BUG();
|
||||
}
|
||||
|
||||
@ -11603,7 +11738,7 @@ index cfa839284b92..9b7bb2a5626c 100644
|
||||
nr[lru] = scan;
|
||||
}
|
||||
}
|
||||
@@ -3988,7 +4030,11 @@ static bool lruvec_is_reclaimable(struct lruvec *lruvec, struct scan_control *sc
|
||||
@@ -3968,7 +4010,11 @@ static bool lruvec_is_reclaimable(struct lruvec *lruvec, struct scan_control *sc
|
||||
}
|
||||
|
||||
/* to protect the working set of the last N jiffies */
|
||||
@ -11615,7 +11750,7 @@ index cfa839284b92..9b7bb2a5626c 100644
|
||||
|
||||
static void lru_gen_age_node(struct pglist_data *pgdat, struct scan_control *sc)
|
||||
{
|
||||
@@ -4026,6 +4072,96 @@ static void lru_gen_age_node(struct pglist_data *pgdat, struct scan_control *sc)
|
||||
@@ -4006,6 +4052,96 @@ static void lru_gen_age_node(struct pglist_data *pgdat, struct scan_control *sc)
|
||||
}
|
||||
}
|
||||
|
||||
@ -11712,7 +11847,7 @@ index cfa839284b92..9b7bb2a5626c 100644
|
||||
/******************************************************************************
|
||||
* rmap/PT walk feedback
|
||||
******************************************************************************/
|
||||
@@ -4519,6 +4655,8 @@ static int isolate_folios(struct lruvec *lruvec, struct scan_control *sc, int sw
|
||||
@@ -4499,6 +4635,8 @@ static int isolate_folios(struct lruvec *lruvec, struct scan_control *sc, int sw
|
||||
*/
|
||||
if (!swappiness)
|
||||
type = LRU_GEN_FILE;
|
||||
@ -11721,7 +11856,7 @@ index cfa839284b92..9b7bb2a5626c 100644
|
||||
else if (min_seq[LRU_GEN_ANON] < min_seq[LRU_GEN_FILE])
|
||||
type = LRU_GEN_ANON;
|
||||
else if (swappiness == 1)
|
||||
@@ -4798,6 +4936,8 @@ static int shrink_one(struct lruvec *lruvec, struct scan_control *sc)
|
||||
@@ -4778,6 +4916,8 @@ static int shrink_one(struct lruvec *lruvec, struct scan_control *sc)
|
||||
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
|
||||
struct pglist_data *pgdat = lruvec_pgdat(lruvec);
|
||||
|
||||
@ -11730,7 +11865,7 @@ index cfa839284b92..9b7bb2a5626c 100644
|
||||
/* lru_gen_age_node() called mem_cgroup_calculate_protection() */
|
||||
if (mem_cgroup_below_min(NULL, memcg))
|
||||
return MEMCG_LRU_YOUNG;
|
||||
@@ -5945,6 +6085,8 @@ static void shrink_node(pg_data_t *pgdat, struct scan_control *sc)
|
||||
@@ -5925,6 +6065,8 @@ static void shrink_node(pg_data_t *pgdat, struct scan_control *sc)
|
||||
|
||||
prepare_scan_control(pgdat, sc);
|
||||
|
||||
@ -11754,7 +11889,7 @@ index 4a80584ec771..11d53f240a2b 100644
|
||||
KBUILD_MAKEFLAGS="$(MAKEFLAGS)" \
|
||||
KBUILD_REVISION="$(shell $(srctree)/scripts/build-version)" \
|
||||
diff --git a/scripts/package/PKGBUILD b/scripts/package/PKGBUILD
|
||||
index 663ce300dd06..839cd5e634d2 100644
|
||||
index 663ce300dd06..f83493838cf9 100644
|
||||
--- a/scripts/package/PKGBUILD
|
||||
+++ b/scripts/package/PKGBUILD
|
||||
@@ -3,10 +3,13 @@
|
||||
@ -11767,7 +11902,7 @@ index 663ce300dd06..839cd5e634d2 100644
|
||||
-fi
|
||||
+pkgname=("${pkgbase}")
|
||||
+
|
||||
+_extrapackages=${PACMAN_EXTRAPACKAGES-headers api-headers}
|
||||
+_extrapackages=${PACMAN_EXTRAPACKAGES-headers api-headers debug}
|
||||
+for pkg in $_extrapackages; do
|
||||
+ pkgname+=("${pkgbase}-${pkg}")
|
||||
+done
|
||||
@ -11830,7 +11965,7 @@ index 663ce300dd06..839cd5e634d2 100644
|
||||
cp System.map "${builddir}/System.map"
|
||||
cp .config "${builddir}/.config"
|
||||
|
||||
@@ -94,8 +106,7 @@ _package-api-headers() {
|
||||
@@ -94,12 +106,24 @@ _package-api-headers() {
|
||||
provides=(linux-api-headers)
|
||||
conflicts=(linux-api-headers)
|
||||
|
||||
@ -11840,12 +11975,29 @@ index 663ce300dd06..839cd5e634d2 100644
|
||||
|
||||
${MAKE} headers_install INSTALL_HDR_PATH="${pkgdir}/usr"
|
||||
}
|
||||
|
||||
+_package-debug(){
|
||||
+ pkgdesc="Non-stripped vmlinux file for the ${pkgdesc} kernel"
|
||||
+
|
||||
+ local debugdir="${pkgdir}/usr/src/debug/${pkgbase}"
|
||||
+ local builddir="${pkgdir}/usr/${MODLIB}/build"
|
||||
+
|
||||
+ _prologue
|
||||
+
|
||||
+ install -Dt "${debugdir}" -m644 vmlinux
|
||||
+ mkdir -p "${builddir}"
|
||||
+ ln -sr "${debugdir}/vmlinux" "${builddir}/vmlinux"
|
||||
+}
|
||||
+
|
||||
for _p in "${pkgname[@]}"; do
|
||||
eval "package_$_p() {
|
||||
$(declare -f "_package${_p#$pkgbase}")
|
||||
--
|
||||
2.46.0
|
||||
2.46.1
|
||||
|
||||
From 8ece8492ab552375f939b01887f695b4c8bd7d39 Mon Sep 17 00:00:00 2001
|
||||
From c4201124b983cba28153bd6385dd44b26ffad1e7 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jung <admin@ptr1337.dev>
|
||||
Date: Sun, 1 Sep 2024 10:39:07 +0200
|
||||
Date: Sun, 15 Sep 2024 17:28:56 +0200
|
||||
Subject: [PATCH 05/11] fixes
|
||||
|
||||
Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
@ -12097,11 +12249,11 @@ index 3cffa6c79538..8b7a5a31e8c1 100644
|
||||
{}
|
||||
};
|
||||
--
|
||||
2.46.0
|
||||
2.46.1
|
||||
|
||||
From ce9f099c5a2244989b1cb027580ead7a80d4fa55 Mon Sep 17 00:00:00 2001
|
||||
From b24e8834eb51bed12079009ec0ab23b16bc73198 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jung <admin@ptr1337.dev>
|
||||
Date: Sun, 1 Sep 2024 10:39:19 +0200
|
||||
Date: Sun, 15 Sep 2024 17:29:06 +0200
|
||||
Subject: [PATCH 06/11] intel-pstate
|
||||
|
||||
Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
@ -12581,11 +12733,11 @@ index 7d92f16a430a..86ad1fed71f1 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.46.0
|
||||
2.46.1
|
||||
|
||||
From f9f37e11d53bf4044bb8bf7b8a74e19090fc9bda Mon Sep 17 00:00:00 2001
|
||||
From 8eb5e816f13a599dd0385bccc1df837664cc7233 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jung <admin@ptr1337.dev>
|
||||
Date: Sun, 1 Sep 2024 10:39:28 +0200
|
||||
Date: Sun, 15 Sep 2024 17:29:23 +0200
|
||||
Subject: [PATCH 07/11] ksm
|
||||
|
||||
Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
@ -13023,11 +13175,11 @@ index 01071182763e..7394bad8178e 100644
|
||||
+464 common process_ksm_disable sys_process_ksm_disable sys_process_ksm_disable
|
||||
+465 common process_ksm_status sys_process_ksm_status sys_process_ksm_status
|
||||
--
|
||||
2.46.0
|
||||
2.46.1
|
||||
|
||||
From 374d5a89939e019d2d3abd22f683486c82230791 Mon Sep 17 00:00:00 2001
|
||||
From c2703b85f5713426c2ab1e6f25f2364582f053fe Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jung <admin@ptr1337.dev>
|
||||
Date: Sun, 1 Sep 2024 10:39:38 +0200
|
||||
Date: Sun, 15 Sep 2024 17:29:35 +0200
|
||||
Subject: [PATCH 08/11] ntsync
|
||||
|
||||
Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
@ -13467,10 +13619,10 @@ index 000000000000..767844637a7d
|
||||
+ ``objs`` and in ``alert``. If this is attempted, the function fails
|
||||
+ with ``EINVAL``.
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index fe83ba7194ea..d9681e662200 100644
|
||||
index cc40a9d9b8cd..2cd7168dc401 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -16306,6 +16306,15 @@ T: git https://github.com/Paragon-Software-Group/linux-ntfs3.git
|
||||
@@ -16319,6 +16319,15 @@ T: git https://github.com/Paragon-Software-Group/linux-ntfs3.git
|
||||
F: Documentation/filesystems/ntfs3.rst
|
||||
F: fs/ntfs3/
|
||||
|
||||
@ -16112,11 +16264,11 @@ index 000000000000..5fa2c9a0768c
|
||||
+
|
||||
+TEST_HARNESS_MAIN
|
||||
--
|
||||
2.46.0
|
||||
2.46.1
|
||||
|
||||
From 99b646a36247a68818da737fd76441bdfe531213 Mon Sep 17 00:00:00 2001
|
||||
From bdd3f4dab12fd8eb06357b2b5593820eb3128651 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jung <admin@ptr1337.dev>
|
||||
Date: Sun, 1 Sep 2024 10:39:50 +0200
|
||||
Date: Sun, 15 Sep 2024 17:29:46 +0200
|
||||
Subject: [PATCH 09/11] perf-per-core
|
||||
|
||||
Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
@ -17020,11 +17172,11 @@ index 9a6069e7133c..23722aa21e2f 100644
|
||||
|
||||
/* Package relative core ID */
|
||||
--
|
||||
2.46.0
|
||||
2.46.1
|
||||
|
||||
From ca5746bedb2da2feb67f1cfed4e80ace86b3c240 Mon Sep 17 00:00:00 2001
|
||||
From f2a149176007718766b709be8299b005ddd6b158 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jung <admin@ptr1337.dev>
|
||||
Date: Sun, 1 Sep 2024 10:40:01 +0200
|
||||
Date: Sun, 15 Sep 2024 17:30:08 +0200
|
||||
Subject: [PATCH 10/11] t2
|
||||
|
||||
Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
@ -17183,10 +17335,10 @@ index 4451ef501936..c726a846f752 100644
|
||||
----
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index d9681e662200..67ef02a08b8b 100644
|
||||
index 2cd7168dc401..16df466c205d 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -6894,6 +6894,12 @@ S: Supported
|
||||
@@ -6895,6 +6895,12 @@ S: Supported
|
||||
T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
|
||||
F: drivers/gpu/drm/sun4i/sun8i*
|
||||
|
||||
@ -17326,10 +17478,10 @@ index 49a1ac4f5491..c8c10a6104c4 100644
|
||||
fb->base.width, fb->base.height,
|
||||
sizes->fb_width, sizes->fb_height);
|
||||
diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c
|
||||
index 14d5fefc9c5b..727639b8f6a6 100644
|
||||
index dfd8b4960e6d..7232f9acd0a0 100644
|
||||
--- a/drivers/gpu/drm/i915/display/intel_quirks.c
|
||||
+++ b/drivers/gpu/drm/i915/display/intel_quirks.c
|
||||
@@ -59,6 +59,18 @@ static void quirk_increase_ddi_disabled_time(struct intel_display *display)
|
||||
@@ -64,6 +64,18 @@ static void quirk_increase_ddi_disabled_time(struct intel_display *display)
|
||||
drm_info(display->drm, "Applying Increase DDI Disabled quirk\n");
|
||||
}
|
||||
|
||||
@ -17348,7 +17500,7 @@ index 14d5fefc9c5b..727639b8f6a6 100644
|
||||
static void quirk_no_pps_backlight_power_hook(struct intel_display *display)
|
||||
{
|
||||
intel_set_quirk(display, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK);
|
||||
@@ -201,6 +213,9 @@ static struct intel_quirk intel_quirks[] = {
|
||||
@@ -229,6 +241,9 @@ static struct intel_quirk intel_quirks[] = {
|
||||
{ 0x3184, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time },
|
||||
/* HP Notebook - 14-r206nv */
|
||||
{ 0x0f31, 0x103c, 0x220f, quirk_invert_brightness },
|
||||
@ -17357,15 +17509,15 @@ index 14d5fefc9c5b..727639b8f6a6 100644
|
||||
+ { 0x3e9b, 0x106b, 0x0176, quirk_ddi_a_force_4_lanes },
|
||||
};
|
||||
|
||||
void intel_init_quirks(struct intel_display *display)
|
||||
static struct intel_dpcd_quirk intel_dpcd_quirks[] = {
|
||||
diff --git a/drivers/gpu/drm/i915/display/intel_quirks.h b/drivers/gpu/drm/i915/display/intel_quirks.h
|
||||
index 151c8f4ae576..46e7feba88f4 100644
|
||||
index cafdebda7535..a5296f82776e 100644
|
||||
--- a/drivers/gpu/drm/i915/display/intel_quirks.h
|
||||
+++ b/drivers/gpu/drm/i915/display/intel_quirks.h
|
||||
@@ -17,6 +17,7 @@ enum intel_quirk_id {
|
||||
QUIRK_INVERT_BRIGHTNESS,
|
||||
@@ -20,6 +20,7 @@ enum intel_quirk_id {
|
||||
QUIRK_LVDS_SSC_DISABLE,
|
||||
QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK,
|
||||
QUIRK_FW_SYNC_LEN,
|
||||
+ QUIRK_DDI_A_FORCE_4_LANES,
|
||||
};
|
||||
|
||||
@ -27435,11 +27587,11 @@ index 4427572b2477..b60c99d61882 100755
|
||||
last;
|
||||
}
|
||||
--
|
||||
2.46.0
|
||||
2.46.1
|
||||
|
||||
From dec2bed6cdefc145bc1bc816f59c2bb833070742 Mon Sep 17 00:00:00 2001
|
||||
From d312d9b44e2d51dd64ceecf38fccbfbcc8944738 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jung <admin@ptr1337.dev>
|
||||
Date: Sun, 1 Sep 2024 10:40:12 +0200
|
||||
Date: Sun, 15 Sep 2024 17:30:16 +0200
|
||||
Subject: [PATCH 11/11] zstd
|
||||
|
||||
Signed-off-by: Peter Jung <admin@ptr1337.dev>
|
||||
@ -46087,4 +46239,4 @@ index f4ed952ed485..7d31518e9d5a 100644
|
||||
EXPORT_SYMBOL(zstd_reset_dstream);
|
||||
|
||||
--
|
||||
2.46.0
|
||||
2.46.1
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
From 8748a0aa2fc51c5a22d17c4da434f12e91b4d211 Mon Sep 17 00:00:00 2001
|
||||
From 35259c1c06596a086582bb3c63461b039e1e517d Mon Sep 17 00:00:00 2001
|
||||
From: Piotr Gorski <lucjan.lucjanov@gmail.com>
|
||||
Date: Mon, 12 Aug 2024 13:44:47 +0200
|
||||
Date: Fri, 13 Sep 2024 14:15:05 +0200
|
||||
Subject: [PATCH] bore-cachy-ext
|
||||
|
||||
Signed-off-by: Piotr Gorski <lucjan.lucjanov@gmail.com>
|
||||
@ -8,12 +8,12 @@ Signed-off-by: Piotr Gorski <lucjan.lucjanov@gmail.com>
|
||||
include/linux/sched.h | 10 ++
|
||||
init/Kconfig | 17 ++
|
||||
kernel/Kconfig.hz | 16 ++
|
||||
kernel/sched/core.c | 143 +++++++++++++++
|
||||
kernel/sched/core.c | 141 +++++++++++++++
|
||||
kernel/sched/debug.c | 60 ++++++-
|
||||
kernel/sched/fair.c | 388 +++++++++++++++++++++++++++++++++++++---
|
||||
kernel/sched/fair.c | 379 +++++++++++++++++++++++++++++++++++++---
|
||||
kernel/sched/features.h | 20 ++-
|
||||
kernel/sched/sched.h | 7 +
|
||||
8 files changed, 634 insertions(+), 27 deletions(-)
|
||||
8 files changed, 623 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/include/linux/sched.h b/include/linux/sched.h
|
||||
index 5b4f78fe3..b9e5ea2aa 100644
|
||||
@ -37,10 +37,10 @@ index 5b4f78fe3..b9e5ea2aa 100644
|
||||
u64 slice;
|
||||
|
||||
diff --git a/init/Kconfig b/init/Kconfig
|
||||
index e24741512..511a13dcd 100644
|
||||
index e1a88d48d..3aea8e43c 100644
|
||||
--- a/init/Kconfig
|
||||
+++ b/init/Kconfig
|
||||
@@ -1317,6 +1317,23 @@ config CHECKPOINT_RESTORE
|
||||
@@ -1327,6 +1327,23 @@ config CHECKPOINT_RESTORE
|
||||
|
||||
If unsure, say N here.
|
||||
|
||||
@ -91,10 +91,10 @@ index 0f78364ef..b50189ee5 100644
|
||||
config SCHED_HRTICK
|
||||
def_bool HIGH_RES_TIMERS
|
||||
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
|
||||
index 7ba808949..8c010f1f5 100644
|
||||
index c792a6feb..dfb93c5f7 100644
|
||||
--- a/kernel/sched/core.c
|
||||
+++ b/kernel/sched/core.c
|
||||
@@ -4336,6 +4336,138 @@ int wake_up_state(struct task_struct *p, unsigned int state)
|
||||
@@ -4336,6 +4336,136 @@ int wake_up_state(struct task_struct *p, unsigned int state)
|
||||
return try_to_wake_up(p, state, 0);
|
||||
}
|
||||
|
||||
@ -125,7 +125,7 @@ index 7ba808949..8c010f1f5 100644
|
||||
+ return cnt;
|
||||
+}
|
||||
+
|
||||
+static inline bool task_is_inheritable(struct task_struct *p) {
|
||||
+static inline bool task_burst_inheritable(struct task_struct *p) {
|
||||
+ return (p->sched_class == &fair_sched_class);
|
||||
+}
|
||||
+
|
||||
@ -136,7 +136,7 @@ index 7ba808949..8c010f1f5 100644
|
||||
+}
|
||||
+
|
||||
+static void __update_child_burst_cache(
|
||||
+ struct task_struct *p, u32 cnt, u32 sum, u64 now) {
|
||||
+ struct task_struct *p, u32 cnt, u32 sum, u64 now) {
|
||||
+ u8 avg = 0;
|
||||
+ if (cnt) avg = sum / cnt;
|
||||
+ p->se.child_burst = max(avg, p->se.burst_penalty);
|
||||
@ -146,11 +146,10 @@ index 7ba808949..8c010f1f5 100644
|
||||
+
|
||||
+static inline void update_child_burst_direct(struct task_struct *p, u64 now) {
|
||||
+ struct task_struct *child;
|
||||
+ u32 cnt = 0;
|
||||
+ u32 sum = 0;
|
||||
+ u32 cnt = 0, sum = 0;
|
||||
+
|
||||
+ list_for_each_entry(child, &p->children, sibling) {
|
||||
+ if (!task_is_inheritable(child)) continue;
|
||||
+ if (!task_burst_inheritable(child)) continue;
|
||||
+ cnt++;
|
||||
+ sum += child->se.burst_penalty;
|
||||
+ }
|
||||
@ -169,8 +168,7 @@ index 7ba808949..8c010f1f5 100644
|
||||
+static void update_child_burst_topological(
|
||||
+ struct task_struct *p, u64 now, u32 depth, u32 *acnt, u32 *asum) {
|
||||
+ struct task_struct *child, *dec;
|
||||
+ u32 cnt = 0, dcnt = 0;
|
||||
+ u32 sum = 0;
|
||||
+ u32 cnt = 0, dcnt = 0, sum = 0;
|
||||
+
|
||||
+ list_for_each_entry(child, &p->children, sibling) {
|
||||
+ dec = child;
|
||||
@ -178,7 +176,7 @@ index 7ba808949..8c010f1f5 100644
|
||||
+ dec = list_first_entry(&dec->children, struct task_struct, sibling);
|
||||
+
|
||||
+ if (!dcnt || !depth) {
|
||||
+ if (!task_is_inheritable(dec)) continue;
|
||||
+ if (!task_burst_inheritable(dec)) continue;
|
||||
+ cnt++;
|
||||
+ sum += dec->se.burst_penalty;
|
||||
+ continue;
|
||||
@ -224,7 +222,7 @@ index 7ba808949..8c010f1f5 100644
|
||||
+}
|
||||
+
|
||||
+static void sched_post_fork_bore(struct task_struct *p) {
|
||||
+ if (p->sched_class == &fair_sched_class)
|
||||
+ if (task_burst_inheritable(p))
|
||||
+ inherit_burst(p);
|
||||
+ p->se.burst_penalty = p->se.prev_burst_penalty;
|
||||
+}
|
||||
@ -233,7 +231,7 @@ index 7ba808949..8c010f1f5 100644
|
||||
/*
|
||||
* Perform scheduler related setup for a newly forked process p.
|
||||
* p is forked by current.
|
||||
@@ -4352,6 +4484,9 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p)
|
||||
@@ -4352,6 +4482,9 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p)
|
||||
p->se.prev_sum_exec_runtime = 0;
|
||||
p->se.nr_migrations = 0;
|
||||
p->se.vruntime = 0;
|
||||
@ -243,7 +241,7 @@ index 7ba808949..8c010f1f5 100644
|
||||
p->se.vlag = 0;
|
||||
p->se.slice = sysctl_sched_base_slice;
|
||||
INIT_LIST_HEAD(&p->se.group_node);
|
||||
@@ -4686,6 +4821,9 @@ void sched_cancel_fork(struct task_struct *p)
|
||||
@@ -4686,6 +4819,9 @@ void sched_cancel_fork(struct task_struct *p)
|
||||
|
||||
void sched_post_fork(struct task_struct *p)
|
||||
{
|
||||
@ -253,13 +251,13 @@ index 7ba808949..8c010f1f5 100644
|
||||
uclamp_post_fork(p);
|
||||
scx_post_fork(p);
|
||||
}
|
||||
@@ -8285,6 +8423,11 @@ void __init sched_init(void)
|
||||
@@ -8283,6 +8419,11 @@ void __init sched_init(void)
|
||||
BUG_ON(!sched_class_above(&ext_sched_class, &idle_sched_class));
|
||||
#endif
|
||||
|
||||
+#ifdef CONFIG_SCHED_BORE
|
||||
+ sched_init_bore();
|
||||
+ printk(KERN_INFO "BORE (Burst-Oriented Response Enhancer) CPU Scheduler modification 5.2.10 by Masahito Suzuki");
|
||||
+ printk(KERN_INFO "BORE (Burst-Oriented Response Enhancer) CPU Scheduler modification 5.2.11 by Masahito Suzuki");
|
||||
+#endif // CONFIG_SCHED_BORE
|
||||
+
|
||||
wait_bit_init();
|
||||
@ -373,7 +371,7 @@ index c057ef46c..3cab39e34 100644
|
||||
P(se.avg.runnable_sum);
|
||||
P(se.avg.util_sum);
|
||||
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
|
||||
index 2928026d7..64987a5d1 100644
|
||||
index 2928026d7..f7040962b 100644
|
||||
--- a/kernel/sched/fair.c
|
||||
+++ b/kernel/sched/fair.c
|
||||
@@ -19,6 +19,9 @@
|
||||
@ -386,7 +384,7 @@ index 2928026d7..64987a5d1 100644
|
||||
*/
|
||||
#include <linux/energy_model.h>
|
||||
#include <linux/mmap_lock.h>
|
||||
@@ -64,28 +67,182 @@
|
||||
@@ -64,28 +67,174 @@
|
||||
* SCHED_TUNABLESCALING_LOG - scaled logarithmically, *1+ilog(ncpus)
|
||||
* SCHED_TUNABLESCALING_LINEAR - scaled linear, *ncpus
|
||||
*
|
||||
@ -447,8 +445,7 @@ index 2928026d7..64987a5d1 100644
|
||||
+
|
||||
+static inline u32 log2plus1_u64_u32f8(u64 v) {
|
||||
+ u32 msb = fls64(v);
|
||||
+ s32 excess_bits = msb - 9;
|
||||
+ u8 fractional = (0 <= excess_bits)? v >> excess_bits: v << -excess_bits;
|
||||
+ u8 fractional = (v << (64 - msb) >> 55);
|
||||
+ return msb << 8 | fractional;
|
||||
+}
|
||||
+
|
||||
@ -487,7 +484,6 @@ index 2928026d7..64987a5d1 100644
|
||||
+
|
||||
+static inline u8 effective_prio(struct task_struct *p) {
|
||||
+ u8 prio = p->static_prio - MAX_RT_PRIO;
|
||||
+
|
||||
+ if (likely(sched_bore))
|
||||
+ prio += p->se.burst_score;
|
||||
+ return min(39, prio);
|
||||
@ -499,9 +495,8 @@ index 2928026d7..64987a5d1 100644
|
||||
+ u8 prev_prio = effective_prio(p);
|
||||
+
|
||||
+ u8 burst_score = 0;
|
||||
+ if (!(sched_burst_exclude_kthreads && (p->flags & PF_KTHREAD)))
|
||||
+ if (!((p->flags & PF_KTHREAD) && likely(sched_burst_exclude_kthreads)))
|
||||
+ burst_score = se->burst_penalty >> 2;
|
||||
+
|
||||
+ se->burst_score = burst_score;
|
||||
+
|
||||
+ u8 new_prio = effective_prio(p);
|
||||
@ -516,10 +511,10 @@ index 2928026d7..64987a5d1 100644
|
||||
+}
|
||||
+
|
||||
+static inline u32 binary_smooth(u32 new, u32 old) {
|
||||
+ int increment = new - old;
|
||||
+ return (0 <= increment)?
|
||||
+ old + ( increment >> (int)sched_burst_smoothness_long):
|
||||
+ old - (-increment >> (int)sched_burst_smoothness_short);
|
||||
+ int increment = new - old;
|
||||
+ return (0 <= increment)?
|
||||
+ old + ( increment >> (int)sched_burst_smoothness_long):
|
||||
+ old - (-increment >> (int)sched_burst_smoothness_short);
|
||||
+}
|
||||
+
|
||||
+static void restart_burst(struct sched_entity *se) {
|
||||
@ -546,23 +541,18 @@ index 2928026d7..64987a5d1 100644
|
||||
+}
|
||||
+
|
||||
+static void reset_task_weights_bore(void) {
|
||||
+ struct task_struct *task;
|
||||
+ struct rq *rq;
|
||||
+ struct rq_flags rf;
|
||||
+ struct task_struct *task;
|
||||
+ struct rq *rq;
|
||||
+ struct rq_flags rf;
|
||||
+
|
||||
+ write_lock_irq(&tasklist_lock);
|
||||
+
|
||||
+ for_each_process(task) {
|
||||
+ rq = task_rq(task);
|
||||
+
|
||||
+ rq_lock_irqsave(rq, &rf);
|
||||
+
|
||||
+ reweight_task_by_prio(task, effective_prio(task));
|
||||
+
|
||||
+ rq_unlock_irqrestore(rq, &rf);
|
||||
+ }
|
||||
+
|
||||
+ write_unlock_irq(&tasklist_lock);
|
||||
+ write_lock_irq(&tasklist_lock);
|
||||
+ for_each_process(task) {
|
||||
+ rq = task_rq(task);
|
||||
+ rq_lock_irqsave(rq, &rf);
|
||||
+ reweight_task_by_prio(task, effective_prio(task));
|
||||
+ rq_unlock_irqrestore(rq, &rf);
|
||||
+ }
|
||||
+ write_unlock_irq(&tasklist_lock);
|
||||
+}
|
||||
+
|
||||
+int sched_bore_update_handler(const struct ctl_table *table, int write,
|
||||
@ -580,7 +570,7 @@ index 2928026d7..64987a5d1 100644
|
||||
|
||||
static int __init setup_sched_thermal_decay_shift(char *str)
|
||||
{
|
||||
@@ -130,12 +287,8 @@ int __weak arch_asym_cpu_priority(int cpu)
|
||||
@@ -130,12 +279,8 @@ int __weak arch_asym_cpu_priority(int cpu)
|
||||
*
|
||||
* (default: 5 msec, units: microseconds)
|
||||
*/
|
||||
@ -593,7 +583,7 @@ index 2928026d7..64987a5d1 100644
|
||||
|
||||
#ifdef CONFIG_NUMA_BALANCING
|
||||
/* Restrict the NUMA promotion throughput (MB/s) for each target node. */
|
||||
@@ -144,6 +297,92 @@ static unsigned int sysctl_numa_balancing_promote_rate_limit = 65536;
|
||||
@@ -144,6 +289,92 @@ static unsigned int sysctl_numa_balancing_promote_rate_limit = 65536;
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
static struct ctl_table sched_fair_sysctls[] = {
|
||||
@ -686,7 +676,7 @@ index 2928026d7..64987a5d1 100644
|
||||
#ifdef CONFIG_CFS_BANDWIDTH
|
||||
{
|
||||
.procname = "sched_cfs_bandwidth_slice_us",
|
||||
@@ -201,6 +440,13 @@ static inline void update_load_set(struct load_weight *lw, unsigned long w)
|
||||
@@ -201,6 +432,13 @@ static inline void update_load_set(struct load_weight *lw, unsigned long w)
|
||||
*
|
||||
* This idea comes from the SD scheduler of Con Kolivas:
|
||||
*/
|
||||
@ -700,7 +690,7 @@ index 2928026d7..64987a5d1 100644
|
||||
static unsigned int get_update_sysctl_factor(void)
|
||||
{
|
||||
unsigned int cpus = min_t(unsigned int, num_online_cpus(), 8);
|
||||
@@ -231,6 +477,7 @@ static void update_sysctl(void)
|
||||
@@ -231,6 +469,7 @@ static void update_sysctl(void)
|
||||
SET_SYSCTL(sched_base_slice);
|
||||
#undef SET_SYSCTL
|
||||
}
|
||||
@ -708,18 +698,17 @@ index 2928026d7..64987a5d1 100644
|
||||
|
||||
void __init sched_init_granularity(void)
|
||||
{
|
||||
@@ -708,6 +955,10 @@ static s64 entity_lag(u64 avruntime, struct sched_entity *se)
|
||||
@@ -708,6 +947,9 @@ static s64 entity_lag(u64 avruntime, struct sched_entity *se)
|
||||
|
||||
vlag = avruntime - se->vruntime;
|
||||
limit = calc_delta_fair(max_t(u64, 2*se->slice, TICK_NSEC), se);
|
||||
+#ifdef CONFIG_SCHED_BORE
|
||||
+ if (likely(sched_bore))
|
||||
+ limit >>= 1;
|
||||
+ limit >>= !!sched_bore;
|
||||
+#endif // CONFIG_SCHED_BORE
|
||||
|
||||
return clamp(vlag, -limit, limit);
|
||||
}
|
||||
@@ -868,6 +1119,39 @@ struct sched_entity *__pick_first_entity(struct cfs_rq *cfs_rq)
|
||||
@@ -868,6 +1110,39 @@ struct sched_entity *__pick_first_entity(struct cfs_rq *cfs_rq)
|
||||
return __node_2_se(left);
|
||||
}
|
||||
|
||||
@ -759,7 +748,7 @@ index 2928026d7..64987a5d1 100644
|
||||
/*
|
||||
* Earliest Eligible Virtual Deadline First
|
||||
*
|
||||
@@ -887,28 +1171,27 @@ struct sched_entity *__pick_first_entity(struct cfs_rq *cfs_rq)
|
||||
@@ -887,28 +1162,27 @@ struct sched_entity *__pick_first_entity(struct cfs_rq *cfs_rq)
|
||||
*
|
||||
* Which allows tree pruning through eligibility.
|
||||
*/
|
||||
@ -795,7 +784,7 @@ index 2928026d7..64987a5d1 100644
|
||||
return curr;
|
||||
|
||||
/* Pick the leftmost entity if it's eligible */
|
||||
@@ -967,6 +1250,7 @@ struct sched_entity *__pick_last_entity(struct cfs_rq *cfs_rq)
|
||||
@@ -967,6 +1241,7 @@ struct sched_entity *__pick_last_entity(struct cfs_rq *cfs_rq)
|
||||
* Scheduling class statistics methods:
|
||||
*/
|
||||
#ifdef CONFIG_SMP
|
||||
@ -803,7 +792,7 @@ index 2928026d7..64987a5d1 100644
|
||||
int sched_update_scaling(void)
|
||||
{
|
||||
unsigned int factor = get_update_sysctl_factor();
|
||||
@@ -978,6 +1262,7 @@ int sched_update_scaling(void)
|
||||
@@ -978,6 +1253,7 @@ int sched_update_scaling(void)
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -811,7 +800,7 @@ index 2928026d7..64987a5d1 100644
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -1178,6 +1463,10 @@ static void update_curr(struct cfs_rq *cfs_rq)
|
||||
@@ -1178,6 +1454,10 @@ static void update_curr(struct cfs_rq *cfs_rq)
|
||||
if (unlikely(delta_exec <= 0))
|
||||
return;
|
||||
|
||||
@ -822,7 +811,7 @@ index 2928026d7..64987a5d1 100644
|
||||
curr->vruntime += calc_delta_fair(delta_exec, curr);
|
||||
update_deadline(cfs_rq, curr);
|
||||
update_min_vruntime(cfs_rq);
|
||||
@@ -5193,6 +5482,12 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
|
||||
@@ -5193,6 +5473,12 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
|
||||
s64 lag = 0;
|
||||
|
||||
se->slice = sysctl_sched_base_slice;
|
||||
@ -835,7 +824,7 @@ index 2928026d7..64987a5d1 100644
|
||||
vslice = calc_delta_fair(se->slice, se);
|
||||
|
||||
/*
|
||||
@@ -5203,6 +5498,9 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
|
||||
@@ -5203,6 +5489,9 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
|
||||
*
|
||||
* EEVDF: placement strategy #1 / #2
|
||||
*/
|
||||
@ -845,7 +834,7 @@ index 2928026d7..64987a5d1 100644
|
||||
if (sched_feat(PLACE_LAG) && cfs_rq->nr_running) {
|
||||
struct sched_entity *curr = cfs_rq->curr;
|
||||
unsigned long load;
|
||||
@@ -5278,6 +5576,13 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
|
||||
@@ -5278,6 +5567,13 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
|
||||
* on average, halfway through their slice, as such start tasks
|
||||
* off with half a slice to ease into the competition.
|
||||
*/
|
||||
@ -859,7 +848,7 @@ index 2928026d7..64987a5d1 100644
|
||||
if (sched_feat(PLACE_DEADLINE_INITIAL) && (flags & ENQUEUE_INITIAL))
|
||||
vslice /= 2;
|
||||
|
||||
@@ -5492,7 +5797,7 @@ pick_next_entity(struct cfs_rq *cfs_rq)
|
||||
@@ -5492,7 +5788,7 @@ pick_next_entity(struct cfs_rq *cfs_rq)
|
||||
cfs_rq->next && entity_eligible(cfs_rq, cfs_rq->next))
|
||||
return cfs_rq->next;
|
||||
|
||||
@ -868,7 +857,7 @@ index 2928026d7..64987a5d1 100644
|
||||
}
|
||||
|
||||
static bool check_cfs_rq_runtime(struct cfs_rq *cfs_rq);
|
||||
@@ -6860,6 +7165,14 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
|
||||
@@ -6860,6 +7156,14 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
|
||||
bool was_sched_idle = sched_idle_rq(rq);
|
||||
|
||||
util_est_dequeue(&rq->cfs, p);
|
||||
@ -883,7 +872,7 @@ index 2928026d7..64987a5d1 100644
|
||||
|
||||
for_each_sched_entity(se) {
|
||||
cfs_rq = cfs_rq_of(se);
|
||||
@@ -8428,7 +8741,7 @@ static void check_preempt_wakeup_fair(struct rq *rq, struct task_struct *p, int
|
||||
@@ -8428,7 +8732,7 @@ static void check_preempt_wakeup_fair(struct rq *rq, struct task_struct *p, int
|
||||
/*
|
||||
* XXX pick_eevdf(cfs_rq) != se ?
|
||||
*/
|
||||
@ -892,7 +881,7 @@ index 2928026d7..64987a5d1 100644
|
||||
goto preempt;
|
||||
|
||||
return;
|
||||
@@ -8646,16 +8959,25 @@ static void yield_task_fair(struct rq *rq)
|
||||
@@ -8646,16 +8950,25 @@ static void yield_task_fair(struct rq *rq)
|
||||
/*
|
||||
* Are we the only task in the tree?
|
||||
*/
|
||||
@ -918,7 +907,7 @@ index 2928026d7..64987a5d1 100644
|
||||
/*
|
||||
* Tell update_rq_clock() that we've just updated,
|
||||
* so we don't do microscopic update in schedule()
|
||||
@@ -12720,6 +13042,9 @@ static void task_fork_fair(struct task_struct *p)
|
||||
@@ -12720,6 +13033,9 @@ static void task_fork_fair(struct task_struct *p)
|
||||
curr = cfs_rq->curr;
|
||||
if (curr)
|
||||
update_curr(cfs_rq);
|
||||
@ -928,7 +917,7 @@ index 2928026d7..64987a5d1 100644
|
||||
place_entity(cfs_rq, se, ENQUEUE_INITIAL);
|
||||
rq_unlock(rq, &rf);
|
||||
}
|
||||
@@ -13303,3 +13628,16 @@ __init void init_sched_fair_class(void)
|
||||
@@ -13303,3 +13619,16 @@ __init void init_sched_fair_class(void)
|
||||
#endif /* SMP */
|
||||
|
||||
}
|
||||
@ -978,10 +967,10 @@ index 143f55df8..bfeb9f653 100644
|
||||
/*
|
||||
* Prefer to schedule the task we woke last (assuming it failed
|
||||
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
|
||||
index 71c346fb9..c30cb4a7c 100644
|
||||
index 207a04f02..c99430161 100644
|
||||
--- a/kernel/sched/sched.h
|
||||
+++ b/kernel/sched/sched.h
|
||||
@@ -2050,7 +2050,11 @@ static inline void update_sched_domain_debugfs(void) { }
|
||||
@@ -2063,7 +2063,11 @@ static inline void update_sched_domain_debugfs(void) { }
|
||||
static inline void dirty_sched_domain_sysctl(int cpu) { }
|
||||
#endif
|
||||
|
||||
@ -993,7 +982,7 @@ index 71c346fb9..c30cb4a7c 100644
|
||||
|
||||
static inline const struct cpumask *task_user_cpus(struct task_struct *p)
|
||||
{
|
||||
@@ -2705,6 +2709,9 @@ extern const_debug unsigned int sysctl_sched_nr_migrate;
|
||||
@@ -2736,6 +2740,9 @@ extern const_debug unsigned int sysctl_sched_nr_migrate;
|
||||
extern const_debug unsigned int sysctl_sched_migration_cost;
|
||||
|
||||
extern unsigned int sysctl_sched_base_slice;
|
||||
|
Loading…
Reference in New Issue
Block a user