release 6.14.9
This commit is contained in:
@@ -34,7 +34,7 @@ Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
|
||||
/*
|
||||
* Minimum number of threads to boot the kernel
|
||||
*/
|
||||
@@ -2171,6 +2177,10 @@ __latent_entropy struct task_struct *cop
|
||||
@@ -2172,6 +2178,10 @@ __latent_entropy struct task_struct *cop
|
||||
if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
@@ -45,7 +45,7 @@ Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
|
||||
/*
|
||||
* Thread groups must share signals as well, and detached threads
|
||||
* can only be started up within the thread group.
|
||||
@@ -3324,6 +3334,12 @@ int ksys_unshare(unsigned long unshare_f
|
||||
@@ -3325,6 +3335,12 @@ int ksys_unshare(unsigned long unshare_f
|
||||
if (unshare_flags & CLONE_NEWNS)
|
||||
unshare_flags |= CLONE_FS;
|
||||
|
||||
|
@@ -20,7 +20,7 @@ is non-empty.
|
||||
---
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1875,7 +1875,7 @@ PHONY += prepare
|
||||
@@ -1871,7 +1871,7 @@ PHONY += prepare
|
||||
# now expand this into a simple variable to reduce the cost of shell evaluations
|
||||
prepare: CC_VERSION_TEXT := $(CC_VERSION_TEXT)
|
||||
prepare:
|
||||
|
@@ -22,7 +22,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
|
||||
--- a/include/linux/perf_event.h
|
||||
+++ b/include/linux/perf_event.h
|
||||
@@ -1695,6 +1695,11 @@ int perf_cpu_time_max_percent_handler(co
|
||||
@@ -1701,6 +1701,11 @@ int perf_cpu_time_max_percent_handler(co
|
||||
int perf_event_max_stack_handler(const struct ctl_table *table, int write,
|
||||
void *buffer, size_t *lenp, loff_t *ppos);
|
||||
|
||||
@@ -50,7 +50,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
|
||||
/* Minimum for 512 kiB + 1 user control page */
|
||||
int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */
|
||||
@@ -12803,6 +12808,9 @@ SYSCALL_DEFINE5(perf_event_open,
|
||||
@@ -12813,6 +12818,9 @@ SYSCALL_DEFINE5(perf_event_open,
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@@ -29,7 +29,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
|
||||
--- a/Documentation/admin-guide/kernel-parameters.txt
|
||||
+++ b/Documentation/admin-guide/kernel-parameters.txt
|
||||
@@ -7002,6 +7002,10 @@
|
||||
@@ -7004,6 +7004,10 @@
|
||||
later by a loaded module cannot be set this way.
|
||||
Example: sysctl.vm.swappiness=40
|
||||
|
||||
@@ -42,7 +42,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
Ignore sysrq setting - this boot parameter will
|
||||
--- a/arch/x86/Kconfig
|
||||
+++ b/arch/x86/Kconfig
|
||||
@@ -3201,6 +3201,14 @@ config COMPAT_32
|
||||
@@ -3202,6 +3202,14 @@ config COMPAT_32
|
||||
select HAVE_UID16
|
||||
select OLD_SIGSUSPEND3
|
||||
|
||||
|
@@ -30,7 +30,7 @@ this reverts following commit:
|
||||
|
||||
--- a/tools/objtool/check.c
|
||||
+++ b/tools/objtool/check.c
|
||||
@@ -4774,10 +4774,14 @@ int check(struct objtool_file *file)
|
||||
@@ -4783,10 +4783,14 @@ int check(struct objtool_file *file)
|
||||
}
|
||||
|
||||
out:
|
||||
|
@@ -95,7 +95,7 @@ Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
WARN_ON(fast_switch && !policy->fast_switch_enabled);
|
||||
/*
|
||||
@@ -908,7 +911,6 @@ static int amd_pstate_init_freq(struct a
|
||||
@@ -907,7 +910,6 @@ static int amd_pstate_init_freq(struct a
|
||||
{
|
||||
int ret;
|
||||
u32 min_freq, max_freq;
|
||||
@@ -103,7 +103,7 @@ Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
u32 nominal_freq, lowest_nonlinear_freq;
|
||||
struct cppc_perf_caps cppc_perf;
|
||||
|
||||
@@ -926,16 +928,17 @@ static int amd_pstate_init_freq(struct a
|
||||
@@ -925,16 +927,17 @@ static int amd_pstate_init_freq(struct a
|
||||
else
|
||||
nominal_freq = cppc_perf.nominal_freq;
|
||||
|
||||
|
@@ -24,7 +24,7 @@ Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
--- a/drivers/cpufreq/amd-pstate.c
|
||||
+++ b/drivers/cpufreq/amd-pstate.c
|
||||
@@ -856,10 +856,6 @@ static void amd_pstate_update_limits(uns
|
||||
@@ -855,10 +855,6 @@ static void amd_pstate_update_limits(uns
|
||||
sched_set_itmt_core_prio((int)cur_high, cpu);
|
||||
}
|
||||
cpufreq_cpu_put(policy);
|
||||
|
@@ -69,7 +69,7 @@ Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
}
|
||||
|
||||
static int amd_pstate_cpu_boost_update(struct cpufreq_policy *policy, bool on)
|
||||
@@ -824,28 +821,23 @@ static void amd_pstate_init_prefcore(str
|
||||
@@ -823,28 +820,23 @@ static void amd_pstate_init_prefcore(str
|
||||
|
||||
static void amd_pstate_update_limits(unsigned int cpu)
|
||||
{
|
||||
@@ -102,7 +102,7 @@ Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
prev_high = READ_ONCE(cpudata->prefcore_ranking);
|
||||
highest_perf_changed = (prev_high != cur_high);
|
||||
@@ -855,7 +847,6 @@ static void amd_pstate_update_limits(uns
|
||||
@@ -854,7 +846,6 @@ static void amd_pstate_update_limits(uns
|
||||
if (cur_high < CPPC_MAX_PERF)
|
||||
sched_set_itmt_core_prio((int)cur_high, cpu);
|
||||
}
|
||||
|
@@ -15,7 +15,7 @@ Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
--- a/drivers/cpufreq/amd-pstate.c
|
||||
+++ b/drivers/cpufreq/amd-pstate.c
|
||||
@@ -832,8 +832,6 @@ static void amd_pstate_update_limits(uns
|
||||
@@ -831,8 +831,6 @@ static void amd_pstate_update_limits(uns
|
||||
if (!policy)
|
||||
return;
|
||||
|
||||
|
@@ -17,7 +17,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
--- a/drivers/cpufreq/amd-pstate.c
|
||||
+++ b/drivers/cpufreq/amd-pstate.c
|
||||
@@ -1028,6 +1028,7 @@ static int amd_pstate_cpu_init(struct cp
|
||||
@@ -1027,6 +1027,7 @@ static int amd_pstate_cpu_init(struct cp
|
||||
free_cpudata2:
|
||||
freq_qos_remove_request(&cpudata->req[0]);
|
||||
free_cpudata1:
|
||||
@@ -25,7 +25,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
kfree(cpudata);
|
||||
return ret;
|
||||
}
|
||||
@@ -1521,6 +1522,7 @@ static int amd_pstate_epp_cpu_init(struc
|
||||
@@ -1520,6 +1521,7 @@ static int amd_pstate_epp_cpu_init(struc
|
||||
return 0;
|
||||
|
||||
free_cpudata1:
|
||||
|
@@ -66,7 +66,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
if (on)
|
||||
policy->cpuinfo.max_freq = max_freq;
|
||||
@@ -917,13 +917,10 @@ static int amd_pstate_init_freq(struct a
|
||||
@@ -916,13 +916,10 @@ static int amd_pstate_init_freq(struct a
|
||||
nominal_freq *= 1000;
|
||||
|
||||
WRITE_ONCE(cpudata->nominal_freq, nominal_freq);
|
||||
@@ -80,7 +80,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
/**
|
||||
* Below values need to be initialized correctly, otherwise driver will fail to load
|
||||
@@ -948,9 +945,9 @@ static int amd_pstate_init_freq(struct a
|
||||
@@ -947,9 +944,9 @@ static int amd_pstate_init_freq(struct a
|
||||
|
||||
static int amd_pstate_cpu_init(struct cpufreq_policy *policy)
|
||||
{
|
||||
@@ -92,7 +92,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
/*
|
||||
* Resetting PERF_CTL_MSR will put the CPU in P0 frequency,
|
||||
@@ -981,17 +978,11 @@ static int amd_pstate_cpu_init(struct cp
|
||||
@@ -980,17 +977,11 @@ static int amd_pstate_cpu_init(struct cp
|
||||
if (ret)
|
||||
goto free_cpudata1;
|
||||
|
||||
@@ -112,7 +112,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
policy->boost_enabled = READ_ONCE(cpudata->boost_supported);
|
||||
|
||||
@@ -1015,9 +1006,6 @@ static int amd_pstate_cpu_init(struct cp
|
||||
@@ -1014,9 +1005,6 @@ static int amd_pstate_cpu_init(struct cp
|
||||
goto free_cpudata2;
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
policy->driver_data = cpudata;
|
||||
|
||||
if (!current_pstate_driver->adjust_perf)
|
||||
@@ -1075,14 +1063,10 @@ static int amd_pstate_cpu_suspend(struct
|
||||
@@ -1074,14 +1062,10 @@ static int amd_pstate_cpu_suspend(struct
|
||||
static ssize_t show_amd_pstate_max_freq(struct cpufreq_policy *policy,
|
||||
char *buf)
|
||||
{
|
||||
@@ -138,7 +138,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
}
|
||||
|
||||
static ssize_t show_amd_pstate_lowest_nonlinear_freq(struct cpufreq_policy *policy,
|
||||
@@ -1440,10 +1424,10 @@ static bool amd_pstate_acpi_pm_profile_u
|
||||
@@ -1439,10 +1423,10 @@ static bool amd_pstate_acpi_pm_profile_u
|
||||
|
||||
static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)
|
||||
{
|
||||
@@ -150,7 +150,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
/*
|
||||
* Resetting PERF_CTL_MSR will put the CPU in P0 frequency,
|
||||
@@ -1474,19 +1458,13 @@ static int amd_pstate_epp_cpu_init(struc
|
||||
@@ -1473,19 +1457,13 @@ static int amd_pstate_epp_cpu_init(struc
|
||||
if (ret)
|
||||
goto free_cpudata1;
|
||||
|
||||
@@ -172,7 +172,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
policy->boost_enabled = READ_ONCE(cpudata->boost_supported);
|
||||
|
||||
/*
|
||||
@@ -1544,7 +1522,8 @@ static int amd_pstate_epp_update_limit(s
|
||||
@@ -1543,7 +1521,8 @@ static int amd_pstate_epp_update_limit(s
|
||||
struct amd_cpudata *cpudata = policy->driver_data;
|
||||
u8 epp;
|
||||
|
||||
|
@@ -293,7 +293,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
if (on)
|
||||
policy->cpuinfo.max_freq = max_freq;
|
||||
@@ -882,30 +890,30 @@ static u32 amd_pstate_get_transition_lat
|
||||
@@ -881,30 +889,30 @@ static u32 amd_pstate_get_transition_lat
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -336,7 +336,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
min_freq = cppc_perf.lowest_freq;
|
||||
|
||||
if (quirks && quirks->nominal_freq)
|
||||
@@ -918,8 +926,8 @@ static int amd_pstate_init_freq(struct a
|
||||
@@ -917,8 +925,8 @@ static int amd_pstate_init_freq(struct a
|
||||
|
||||
WRITE_ONCE(cpudata->nominal_freq, nominal_freq);
|
||||
|
||||
@@ -347,7 +347,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
WRITE_ONCE(cpudata->lowest_nonlinear_freq, lowest_nonlinear_freq);
|
||||
|
||||
/**
|
||||
@@ -946,6 +954,7 @@ static int amd_pstate_init_freq(struct a
|
||||
@@ -945,6 +953,7 @@ static int amd_pstate_init_freq(struct a
|
||||
static int amd_pstate_cpu_init(struct cpufreq_policy *policy)
|
||||
{
|
||||
struct amd_cpudata *cpudata;
|
||||
@@ -355,7 +355,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
struct device *dev;
|
||||
int ret;
|
||||
|
||||
@@ -981,8 +990,14 @@ static int amd_pstate_cpu_init(struct cp
|
||||
@@ -980,8 +989,14 @@ static int amd_pstate_cpu_init(struct cp
|
||||
policy->cpuinfo.transition_latency = amd_pstate_get_transition_latency(policy->cpu);
|
||||
policy->transition_delay_us = amd_pstate_get_transition_delay_us(policy->cpu);
|
||||
|
||||
@@ -372,7 +372,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
policy->boost_enabled = READ_ONCE(cpudata->boost_supported);
|
||||
|
||||
@@ -1063,23 +1078,27 @@ static int amd_pstate_cpu_suspend(struct
|
||||
@@ -1062,23 +1077,27 @@ static int amd_pstate_cpu_suspend(struct
|
||||
static ssize_t show_amd_pstate_max_freq(struct cpufreq_policy *policy,
|
||||
char *buf)
|
||||
{
|
||||
@@ -408,7 +408,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1089,12 +1108,11 @@ static ssize_t show_amd_pstate_lowest_no
|
||||
@@ -1088,12 +1107,11 @@ static ssize_t show_amd_pstate_lowest_no
|
||||
static ssize_t show_amd_pstate_highest_perf(struct cpufreq_policy *policy,
|
||||
char *buf)
|
||||
{
|
||||
@@ -424,7 +424,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
}
|
||||
|
||||
static ssize_t show_amd_pstate_prefcore_ranking(struct cpufreq_policy *policy,
|
||||
@@ -1425,6 +1443,7 @@ static bool amd_pstate_acpi_pm_profile_u
|
||||
@@ -1424,6 +1442,7 @@ static bool amd_pstate_acpi_pm_profile_u
|
||||
static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)
|
||||
{
|
||||
struct amd_cpudata *cpudata;
|
||||
@@ -432,7 +432,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
struct device *dev;
|
||||
u64 value;
|
||||
int ret;
|
||||
@@ -1458,8 +1477,15 @@ static int amd_pstate_epp_cpu_init(struc
|
||||
@@ -1457,8 +1476,15 @@ static int amd_pstate_epp_cpu_init(struc
|
||||
if (ret)
|
||||
goto free_cpudata1;
|
||||
|
||||
@@ -450,7 +450,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
/* It will be updated by governor */
|
||||
policy->cur = policy->cpuinfo.min_freq;
|
||||
|
||||
@@ -1520,6 +1546,7 @@ static void amd_pstate_epp_cpu_exit(stru
|
||||
@@ -1519,6 +1545,7 @@ static void amd_pstate_epp_cpu_exit(stru
|
||||
static int amd_pstate_epp_update_limit(struct cpufreq_policy *policy)
|
||||
{
|
||||
struct amd_cpudata *cpudata = policy->driver_data;
|
||||
@@ -458,7 +458,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
u8 epp;
|
||||
|
||||
if (policy->min != cpudata->min_limit_freq || policy->max != cpudata->max_limit_freq)
|
||||
@@ -1530,15 +1557,16 @@ static int amd_pstate_epp_update_limit(s
|
||||
@@ -1529,15 +1556,16 @@ static int amd_pstate_epp_update_limit(s
|
||||
else
|
||||
epp = READ_ONCE(cpudata->epp_cached);
|
||||
|
||||
@@ -480,7 +480,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
}
|
||||
|
||||
static int amd_pstate_epp_set_policy(struct cpufreq_policy *policy)
|
||||
@@ -1570,20 +1598,18 @@ static int amd_pstate_epp_set_policy(str
|
||||
@@ -1569,20 +1597,18 @@ static int amd_pstate_epp_set_policy(str
|
||||
static int amd_pstate_epp_reenable(struct cpufreq_policy *policy)
|
||||
{
|
||||
struct amd_cpudata *cpudata = policy->driver_data;
|
||||
@@ -504,7 +504,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
}
|
||||
|
||||
return amd_pstate_epp_update_limit(policy);
|
||||
@@ -1607,22 +1633,21 @@ static int amd_pstate_epp_cpu_online(str
|
||||
@@ -1606,22 +1632,21 @@ static int amd_pstate_epp_cpu_online(str
|
||||
static int amd_pstate_epp_cpu_offline(struct cpufreq_policy *policy)
|
||||
{
|
||||
struct amd_cpudata *cpudata = policy->driver_data;
|
||||
|
@@ -32,15 +32,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
static DEFINE_MUTEX(amd_pstate_driver_lock);
|
||||
|
||||
static u8 msr_get_epp(struct amd_cpudata *cpudata)
|
||||
@@ -752,7 +751,6 @@ static int amd_pstate_set_boost(struct c
|
||||
pr_err("Boost mode is not supported by this processor or SBIOS\n");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
- guard(mutex)(&amd_pstate_driver_lock);
|
||||
|
||||
ret = amd_pstate_cpu_boost_update(policy, state);
|
||||
refresh_frequency_limits(policy);
|
||||
@@ -1170,8 +1168,6 @@ static ssize_t store_energy_performance_
|
||||
@@ -1169,8 +1168,6 @@ static ssize_t store_energy_performance_
|
||||
if (ret < 0)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -49,7 +41,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
ret = amd_pstate_set_energy_pref_index(policy, ret);
|
||||
|
||||
return ret ? ret : count;
|
||||
@@ -1344,8 +1340,10 @@ int amd_pstate_update_status(const char
|
||||
@@ -1343,8 +1340,10 @@ int amd_pstate_update_status(const char
|
||||
if (mode_idx < 0 || mode_idx >= AMD_PSTATE_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -61,7 +53,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1366,7 +1364,6 @@ static ssize_t status_store(struct devic
|
||||
@@ -1365,7 +1364,6 @@ static ssize_t status_store(struct devic
|
||||
char *p = memchr(buf, '\n', count);
|
||||
int ret;
|
||||
|
||||
@@ -69,7 +61,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
ret = amd_pstate_update_status(buf, p ? p - buf : count);
|
||||
|
||||
return ret < 0 ? ret : count;
|
||||
@@ -1638,8 +1635,6 @@ static int amd_pstate_epp_cpu_offline(st
|
||||
@@ -1637,8 +1635,6 @@ static int amd_pstate_epp_cpu_offline(st
|
||||
if (cpudata->suspended)
|
||||
return 0;
|
||||
|
||||
@@ -78,7 +70,7 @@ Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
||||
if (trace_amd_pstate_epp_perf_enabled()) {
|
||||
trace_amd_pstate_epp_perf(cpudata->cpu, perf.highest_perf,
|
||||
AMD_CPPC_EPP_BALANCE_POWERSAVE,
|
||||
@@ -1679,8 +1674,6 @@ static int amd_pstate_epp_resume(struct
|
||||
@@ -1678,8 +1674,6 @@ static int amd_pstate_epp_resume(struct
|
||||
struct amd_cpudata *cpudata = policy->driver_data;
|
||||
|
||||
if (cpudata->suspended) {
|
||||
|
@@ -36,7 +36,7 @@ Signed-off-by: Christian Loehle <christian.loehle@arm.com>
|
||||
depends on KVM_GUEST
|
||||
--- a/drivers/cpuidle/governors/menu.c
|
||||
+++ b/drivers/cpuidle/governors/menu.c
|
||||
@@ -508,7 +508,7 @@ static int menu_enable_device(struct cpu
|
||||
@@ -519,7 +519,7 @@ static int menu_enable_device(struct cpu
|
||||
|
||||
static struct cpuidle_governor menu_governor = {
|
||||
.name = "menu",
|
||||
|
@@ -26,7 +26,7 @@ Signed-off-by: Lingbo Kong <quic_lingbok@quicinc.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath12k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath12k/mac.c
|
||||
@@ -9330,6 +9330,11 @@ ath12k_mac_op_unassign_vif_chanctx(struc
|
||||
@@ -9395,6 +9395,11 @@ ath12k_mac_op_unassign_vif_chanctx(struc
|
||||
ar->num_started_vdevs == 1 && ar->monitor_vdev_created)
|
||||
ath12k_mac_monitor_stop(ar);
|
||||
|
||||
|
@@ -1,80 +0,0 @@
|
||||
From 45a91b33b7de48d4ee8875d2fcc6be04d7e3919c Mon Sep 17 00:00:00 2001
|
||||
From: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Date: Sun, 20 Apr 2025 10:33:23 -0700
|
||||
Subject: gcc-15: make 'unterminated string initialization' just a warning
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
gcc-15 enabling -Wunterminated-string-initialization in -Wextra by
|
||||
default was done with the best intentions, but the warning is still
|
||||
quite broken.
|
||||
|
||||
What annoys me about the warning is that this is a very traditional AND
|
||||
CORRECT way to initialize fixed byte arrays in C:
|
||||
|
||||
unsigned char hex[16] = "0123456789abcdef";
|
||||
|
||||
and we use this all over the kernel. And the warning is fine, but gcc
|
||||
developers apparently never made a reasonable way to disable it. As is
|
||||
(sadly) tradition with these things.
|
||||
|
||||
Yes, there's "__attribute__((nonstring))", and we have a macro to make
|
||||
that absolutely disgusting syntax more palatable (ie the kernel syntax
|
||||
for that monstrosity is just "__nonstring").
|
||||
|
||||
But that attribute is misdesigned. What you'd typically want to do is
|
||||
tell the compiler that you are using a type that isn't a string but a
|
||||
byte array, but that doesn't work at all:
|
||||
|
||||
warning: ‘nonstring’ attribute does not apply to types [-Wattributes]
|
||||
|
||||
and because of this fundamental mis-design, you then have to mark each
|
||||
instance of that pattern.
|
||||
|
||||
This is particularly noticeable in our ACPI code, because ACPI has this
|
||||
notion of a 4-byte "type name" that gets used all over, and is exactly
|
||||
this kind of byte array.
|
||||
|
||||
This is a sad oversight, because the warning is useful, but really would
|
||||
be so much better if gcc had also given a sane way to indicate that we
|
||||
really just want a byte array type at a type level, not the broken "each
|
||||
and every array definition" level.
|
||||
|
||||
So now instead of creating a nice "ACPI name" type using something like
|
||||
|
||||
typedef char acpi_name_t[4] __nonstring;
|
||||
|
||||
we have to do things like
|
||||
|
||||
char name[ACPI_NAMESEG_SIZE] __nonstring;
|
||||
|
||||
in every place that uses this concept and then happens to have the
|
||||
typical initializers.
|
||||
|
||||
This is annoying me mainly because I think the warning _is_ a good
|
||||
warning, which is why I'm not just turning it off in disgust. But it is
|
||||
hampered by this bad implementation detail.
|
||||
|
||||
[ And obviously I'm doing this now because system upgrades for me are
|
||||
something that happen in the middle of the release cycle: don't do it
|
||||
before or during travel, or just before or during the busy merge
|
||||
window period. ]
|
||||
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
Makefile | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1071,6 +1071,9 @@ KBUILD_CFLAGS += $(call cc-option, -fstr
|
||||
KBUILD_CFLAGS-$(CONFIG_CC_NO_STRINGOP_OVERFLOW) += $(call cc-option, -Wno-stringop-overflow)
|
||||
KBUILD_CFLAGS-$(CONFIG_CC_STRINGOP_OVERFLOW) += $(call cc-option, -Wstringop-overflow)
|
||||
|
||||
+#Currently, disable -Wunterminated-string-initialization as an error
|
||||
+KBUILD_CFLAGS += $(call cc-option, -Wno-error=unterminated-string-initialization)
|
||||
+
|
||||
# disable invalid "can't wrap" optimizations for signed / pointers
|
||||
KBUILD_CFLAGS += -fno-strict-overflow
|
||||
|
@@ -24,7 +24,7 @@ Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name>
|
||||
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2502,7 +2502,7 @@ static inline bool _chg_mesh_attr(enum n
|
||||
@@ -2501,7 +2501,7 @@ static inline bool _chg_mesh_attr(enum n
|
||||
return (mask >> (parm-1)) & 0x1;
|
||||
}
|
||||
|
@@ -1,74 +0,0 @@
|
||||
From 4018bbbaed061f15e0b84ea36b4aa95784934a33 Mon Sep 17 00:00:00 2001
|
||||
From: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Date: Sun, 20 Apr 2025 15:30:53 -0700
|
||||
Subject: gcc-15: disable '-Wunterminated-string-initialization' entirely for
|
||||
now
|
||||
|
||||
I had left the warning around but as a non-fatal error to get my gcc-15
|
||||
builds going, but fixed up some of the most annoying warning cases so
|
||||
that it wouldn't be *too* verbose.
|
||||
|
||||
Because I like the _concept_ of the warning, even if I detested the
|
||||
implementation to shut it up.
|
||||
|
||||
It turns out the implementation to shut it up is even more broken than I
|
||||
thought, and my "shut up most of the warnings" patch just caused fatal
|
||||
errors on gcc-14 instead.
|
||||
|
||||
I had tested with clang, but when I upgrade my development environment,
|
||||
I try to do it on all machines because I hate having different systems
|
||||
to maintain, and hadn't realized that gcc-14 now had issues.
|
||||
|
||||
The ACPI case is literally why I wanted to have a *type* that doesn't
|
||||
trigger the warning (see commit d5d45a7f2619: "gcc-15: make
|
||||
'unterminated string initialization' just a warning"), instead of
|
||||
marking individual places as "__nonstring".
|
||||
|
||||
But gcc-14 doesn't like that __nonstring location that shut gcc-15 up,
|
||||
because it's on an array of char arrays, not on one single array:
|
||||
|
||||
drivers/acpi/tables.c:399:1: error: 'nonstring' attribute ignored on objects of type 'const char[][4]' [-Werror=attributes]
|
||||
399 | static const char table_sigs[][ACPI_NAMESEG_SIZE] __initconst __nonstring = {
|
||||
| ^~~~~~
|
||||
|
||||
and my attempts to nest it properly with a type had failed, because of
|
||||
how gcc doesn't like marking the types as having attributes, only
|
||||
symbols.
|
||||
|
||||
There may be some trick to it, but I was already annoyed by the bad
|
||||
attribute design, now I'm just entirely fed up with it.
|
||||
|
||||
I wish gcc had a proper way to say "this type is a *byte* array, not a
|
||||
string".
|
||||
|
||||
The obvious thing would be to distinguish between "char []" and an
|
||||
explicitly signed "unsigned char []" (as opposed to an implicitly
|
||||
unsigned char, which is typically an architecture-specific default, but
|
||||
for the kernel is universal thanks to '-funsigned-char').
|
||||
|
||||
But any "we can typedef a 8-bit type to not become a string just because
|
||||
it's an array" model would be fine.
|
||||
|
||||
But "__attribute__((nonstring))" is sadly not that sane model.
|
||||
|
||||
Reported-by: Chris Clayton <chris2553@googlemail.com>
|
||||
Fixes: 4b4bd8c50f48 ("gcc-15: acpi: sprinkle random '__nonstring' crumbles around")
|
||||
Fixes: d5d45a7f2619 ("gcc-15: make 'unterminated string initialization' just a warning")
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
Makefile | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1071,8 +1071,8 @@ KBUILD_CFLAGS += $(call cc-option, -fstr
|
||||
KBUILD_CFLAGS-$(CONFIG_CC_NO_STRINGOP_OVERFLOW) += $(call cc-option, -Wno-stringop-overflow)
|
||||
KBUILD_CFLAGS-$(CONFIG_CC_STRINGOP_OVERFLOW) += $(call cc-option, -Wstringop-overflow)
|
||||
|
||||
-#Currently, disable -Wunterminated-string-initialization as an error
|
||||
-KBUILD_CFLAGS += $(call cc-option, -Wno-error=unterminated-string-initialization)
|
||||
+#Currently, disable -Wunterminated-string-initialization as broken
|
||||
+KBUILD_CFLAGS += $(call cc-option, -Wno-unterminated-string-initialization)
|
||||
|
||||
# disable invalid "can't wrap" optimizations for signed / pointers
|
||||
KBUILD_CFLAGS += -fno-strict-overflow
|
@@ -1,72 +0,0 @@
|
||||
From b41541948188c8834cda272defdcaceb6b5192d5 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Tue, 18 Mar 2025 15:12:03 +0100
|
||||
Subject: mei: vsc: Use struct vsc_tp_packet as vsc-tp tx_buf and rx_buf type
|
||||
|
||||
vsc_tp.tx_buf and vsc_tp.rx_buf point to a struct vsc_tp_packet, use
|
||||
the correct type instead of "void *" and use sizeof(*ptr) when allocating
|
||||
memory for these buffers.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Reviewed-by: Alexander Usyskin <alexander.usyskin@intel.com>
|
||||
Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
|
||||
Link: https://lore.kernel.org/r/20250318141203.94342-3-hdegoede@redhat.com
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/misc/mei/vsc-tp.c | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/misc/mei/vsc-tp.c
|
||||
+++ b/drivers/misc/mei/vsc-tp.c
|
||||
@@ -71,8 +71,8 @@ struct vsc_tp {
|
||||
u32 seq;
|
||||
|
||||
/* command buffer */
|
||||
- void *tx_buf;
|
||||
- void *rx_buf;
|
||||
+ struct vsc_tp_packet *tx_buf;
|
||||
+ struct vsc_tp_packet *rx_buf;
|
||||
|
||||
atomic_t assert_cnt;
|
||||
wait_queue_head_t xfer_wait;
|
||||
@@ -164,7 +164,7 @@ static int vsc_tp_xfer_helper(struct vsc
|
||||
{
|
||||
int ret, offset = 0, cpy_len, src_len, dst_len = sizeof(struct vsc_tp_packet_hdr);
|
||||
int next_xfer_len = VSC_TP_PACKET_SIZE(pkt) + VSC_TP_XFER_TIMEOUT_BYTES;
|
||||
- u8 *src, *crc_src, *rx_buf = tp->rx_buf;
|
||||
+ u8 *src, *crc_src, *rx_buf = (u8 *)tp->rx_buf;
|
||||
int count_down = VSC_TP_MAX_XFER_COUNT;
|
||||
u32 recv_crc = 0, crc = ~0;
|
||||
struct vsc_tp_packet_hdr ack;
|
||||
@@ -324,7 +324,7 @@ int vsc_tp_rom_xfer(struct vsc_tp *tp, c
|
||||
guard(mutex)(&tp->mutex);
|
||||
|
||||
/* rom xfer is big endian */
|
||||
- cpu_to_be32_array(tp->tx_buf, obuf, words);
|
||||
+ cpu_to_be32_array((u32 *)tp->tx_buf, obuf, words);
|
||||
|
||||
ret = read_poll_timeout(gpiod_get_value_cansleep, ret,
|
||||
!ret, VSC_TP_ROM_XFER_POLL_DELAY_US,
|
||||
@@ -340,7 +340,7 @@ int vsc_tp_rom_xfer(struct vsc_tp *tp, c
|
||||
return ret;
|
||||
|
||||
if (ibuf)
|
||||
- be32_to_cpu_array(ibuf, tp->rx_buf, words);
|
||||
+ be32_to_cpu_array(ibuf, (u32 *)tp->rx_buf, words);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -494,11 +494,11 @@ static int vsc_tp_probe(struct spi_devic
|
||||
if (!tp)
|
||||
return -ENOMEM;
|
||||
|
||||
- tp->tx_buf = devm_kzalloc(dev, VSC_TP_MAX_XFER_SIZE, GFP_KERNEL);
|
||||
+ tp->tx_buf = devm_kzalloc(dev, sizeof(*tp->tx_buf), GFP_KERNEL);
|
||||
if (!tp->tx_buf)
|
||||
return -ENOMEM;
|
||||
|
||||
- tp->rx_buf = devm_kzalloc(dev, VSC_TP_MAX_XFER_SIZE, GFP_KERNEL);
|
||||
+ tp->rx_buf = devm_kzalloc(dev, sizeof(*tp->rx_buf), GFP_KERNEL);
|
||||
if (!tp->rx_buf)
|
||||
return -ENOMEM;
|
||||
|
@@ -1,34 +0,0 @@
|
||||
From c3781ee15fb846bc6ad09a09baa2ced404e74e47 Mon Sep 17 00:00:00 2001
|
||||
From: Christoph Hellwig <hch@lst.de>
|
||||
Date: Tue, 20 May 2025 15:54:20 +0200
|
||||
Subject: loop: don't require ->write_iter for writable files in loop_configure
|
||||
|
||||
Block devices can be opened read-write even if they can't be written to
|
||||
for historic reasons. Remove the check requiring file->f_op->write_iter
|
||||
when the block devices was opened in loop_configure. The call to
|
||||
loop_check_backing_file just below ensures the ->write_iter is present
|
||||
for backing files opened for writing, which is the only check that is
|
||||
actually needed.
|
||||
|
||||
Fixes: f5c84eff634b ("loop: Add sanity check for read/write_iter")
|
||||
Reported-by: Christian Hesse <mail@eworm.de>
|
||||
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
||||
Link: https://lore.kernel.org/r/20250520135420.1177312-1-hch@lst.de
|
||||
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
||||
Cherry-picked-for: https://lore.kernel.org/r/20250519175640.2fcac001@leda.eworm.net
|
||||
---
|
||||
drivers/block/loop.c | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
--- a/drivers/block/loop.c
|
||||
+++ b/drivers/block/loop.c
|
||||
@@ -972,9 +972,6 @@ static int loop_configure(struct loop_de
|
||||
if (!file)
|
||||
return -EBADF;
|
||||
|
||||
- if ((mode & BLK_OPEN_WRITE) && !file->f_op->write_iter)
|
||||
- return -EINVAL;
|
||||
-
|
||||
error = loop_check_backing_file(file);
|
||||
if (error)
|
||||
return error;
|
@@ -1,149 +0,0 @@
|
||||
From 2ffeb0d8d193c35403cea13d3b7273b523631007 Mon Sep 17 00:00:00 2001
|
||||
From: Rik van Riel <riel@surriel.com>
|
||||
Date: Thu, 13 Feb 2025 11:13:52 -0500
|
||||
Subject: x86/mm: Make MMU_GATHER_RCU_TABLE_FREE unconditional
|
||||
|
||||
Currently x86 uses CONFIG_MMU_GATHER_TABLE_FREE when using
|
||||
paravirt, and not when running on bare metal.
|
||||
|
||||
There is no real good reason to do things differently for
|
||||
each setup. Make them all the same.
|
||||
|
||||
Currently get_user_pages_fast synchronizes against page table
|
||||
freeing in two different ways:
|
||||
|
||||
- on bare metal, by blocking IRQs, which block TLB flush IPIs
|
||||
- on paravirt, with MMU_GATHER_RCU_TABLE_FREE
|
||||
|
||||
This is done because some paravirt TLB flush implementations
|
||||
handle the TLB flush in the hypervisor, and will do the flush
|
||||
even when the target CPU has interrupts disabled.
|
||||
|
||||
Always handle page table freeing with MMU_GATHER_RCU_TABLE_FREE.
|
||||
Using RCU synchronization between page table freeing and get_user_pages_fast()
|
||||
allows bare metal to also do TLB flushing while interrupts are disabled.
|
||||
|
||||
Various places in the mm do still block IRQs or disable preemption
|
||||
as an implicit way to block RCU frees.
|
||||
|
||||
That makes it safe to use INVLPGB on AMD CPUs.
|
||||
|
||||
Suggested-by: Peter Zijlstra <peterz@infradead.org>
|
||||
Signed-off-by: Rik van Riel <riel@surriel.com>
|
||||
Signed-off-by: Ingo Molnar <mingo@kernel.org>
|
||||
Tested-by: Manali Shukla <Manali.Shukla@amd.com>
|
||||
Tested-by: Brendan Jackman <jackmanb@google.com>
|
||||
Tested-by: Michael Kelley <mhklinux@outlook.com>
|
||||
Link: https://lore.kernel.org/r/20250213161423.449435-2-riel@surriel.com
|
||||
---
|
||||
arch/x86/Kconfig | 2 +-
|
||||
arch/x86/kernel/paravirt.c | 17 +----------------
|
||||
arch/x86/mm/pgtable.c | 27 ++++-----------------------
|
||||
3 files changed, 6 insertions(+), 40 deletions(-)
|
||||
|
||||
--- a/arch/x86/Kconfig
|
||||
+++ b/arch/x86/Kconfig
|
||||
@@ -277,7 +277,7 @@ config X86
|
||||
select HAVE_PCI
|
||||
select HAVE_PERF_REGS
|
||||
select HAVE_PERF_USER_STACK_DUMP
|
||||
- select MMU_GATHER_RCU_TABLE_FREE if PARAVIRT
|
||||
+ select MMU_GATHER_RCU_TABLE_FREE
|
||||
select MMU_GATHER_MERGE_VMAS
|
||||
select HAVE_POSIX_CPU_TIMERS_TASK_WORK
|
||||
select HAVE_REGS_AND_STACK_ACCESS_API
|
||||
--- a/arch/x86/kernel/paravirt.c
|
||||
+++ b/arch/x86/kernel/paravirt.c
|
||||
@@ -59,21 +59,6 @@ void __init native_pv_lock_init(void)
|
||||
static_branch_enable(&virt_spin_lock_key);
|
||||
}
|
||||
|
||||
-#ifndef CONFIG_PT_RECLAIM
|
||||
-static void native_tlb_remove_table(struct mmu_gather *tlb, void *table)
|
||||
-{
|
||||
- struct ptdesc *ptdesc = (struct ptdesc *)table;
|
||||
-
|
||||
- pagetable_dtor(ptdesc);
|
||||
- tlb_remove_page(tlb, ptdesc_page(ptdesc));
|
||||
-}
|
||||
-#else
|
||||
-static void native_tlb_remove_table(struct mmu_gather *tlb, void *table)
|
||||
-{
|
||||
- tlb_remove_table(tlb, table);
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
struct static_key paravirt_steal_enabled;
|
||||
struct static_key paravirt_steal_rq_enabled;
|
||||
|
||||
@@ -197,7 +182,7 @@ struct paravirt_patch_template pv_ops =
|
||||
.mmu.flush_tlb_kernel = native_flush_tlb_global,
|
||||
.mmu.flush_tlb_one_user = native_flush_tlb_one_user,
|
||||
.mmu.flush_tlb_multi = native_flush_tlb_multi,
|
||||
- .mmu.tlb_remove_table = native_tlb_remove_table,
|
||||
+ .mmu.tlb_remove_table = tlb_remove_table,
|
||||
|
||||
.mmu.exit_mmap = paravirt_nop,
|
||||
.mmu.notify_page_enc_status_changed = paravirt_nop,
|
||||
--- a/arch/x86/mm/pgtable.c
|
||||
+++ b/arch/x86/mm/pgtable.c
|
||||
@@ -18,25 +18,6 @@ EXPORT_SYMBOL(physical_mask);
|
||||
#define PGTABLE_HIGHMEM 0
|
||||
#endif
|
||||
|
||||
-#ifndef CONFIG_PARAVIRT
|
||||
-#ifndef CONFIG_PT_RECLAIM
|
||||
-static inline
|
||||
-void paravirt_tlb_remove_table(struct mmu_gather *tlb, void *table)
|
||||
-{
|
||||
- struct ptdesc *ptdesc = (struct ptdesc *)table;
|
||||
-
|
||||
- pagetable_dtor(ptdesc);
|
||||
- tlb_remove_page(tlb, ptdesc_page(ptdesc));
|
||||
-}
|
||||
-#else
|
||||
-static inline
|
||||
-void paravirt_tlb_remove_table(struct mmu_gather *tlb, void *table)
|
||||
-{
|
||||
- tlb_remove_table(tlb, table);
|
||||
-}
|
||||
-#endif /* !CONFIG_PT_RECLAIM */
|
||||
-#endif /* !CONFIG_PARAVIRT */
|
||||
-
|
||||
gfp_t __userpte_alloc_gfp = GFP_PGTABLE_USER | PGTABLE_HIGHMEM;
|
||||
|
||||
pgtable_t pte_alloc_one(struct mm_struct *mm)
|
||||
@@ -64,7 +45,7 @@ early_param("userpte", setup_userpte);
|
||||
void ___pte_free_tlb(struct mmu_gather *tlb, struct page *pte)
|
||||
{
|
||||
paravirt_release_pte(page_to_pfn(pte));
|
||||
- paravirt_tlb_remove_table(tlb, page_ptdesc(pte));
|
||||
+ tlb_remove_table(tlb, page_ptdesc(pte));
|
||||
}
|
||||
|
||||
#if CONFIG_PGTABLE_LEVELS > 2
|
||||
@@ -78,21 +59,21 @@ void ___pmd_free_tlb(struct mmu_gather *
|
||||
#ifdef CONFIG_X86_PAE
|
||||
tlb->need_flush_all = 1;
|
||||
#endif
|
||||
- paravirt_tlb_remove_table(tlb, virt_to_ptdesc(pmd));
|
||||
+ tlb_remove_table(tlb, virt_to_ptdesc(pmd));
|
||||
}
|
||||
|
||||
#if CONFIG_PGTABLE_LEVELS > 3
|
||||
void ___pud_free_tlb(struct mmu_gather *tlb, pud_t *pud)
|
||||
{
|
||||
paravirt_release_pud(__pa(pud) >> PAGE_SHIFT);
|
||||
- paravirt_tlb_remove_table(tlb, virt_to_ptdesc(pud));
|
||||
+ tlb_remove_table(tlb, virt_to_ptdesc(pud));
|
||||
}
|
||||
|
||||
#if CONFIG_PGTABLE_LEVELS > 4
|
||||
void ___p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d)
|
||||
{
|
||||
paravirt_release_p4d(__pa(p4d) >> PAGE_SHIFT);
|
||||
- paravirt_tlb_remove_table(tlb, virt_to_ptdesc(p4d));
|
||||
+ tlb_remove_table(tlb, virt_to_ptdesc(p4d));
|
||||
}
|
||||
#endif /* CONFIG_PGTABLE_LEVELS > 4 */
|
||||
#endif /* CONFIG_PGTABLE_LEVELS > 3 */
|
@@ -32,7 +32,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -3967,6 +3967,7 @@ static int tcp_ack(struct sock *sk, cons
|
||||
@@ -3983,6 +3983,7 @@ static int tcp_ack(struct sock *sk, cons
|
||||
|
||||
prior_fack = tcp_is_sack(tp) ? tcp_highest_sack_seq(tp) : tp->snd_una;
|
||||
rs.prior_in_flight = tcp_packets_in_flight(tp);
|
||||
|
@@ -56,7 +56,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
struct rate_sample *rs);
|
||||
--- a/net/ipv4/tcp_output.c
|
||||
+++ b/net/ipv4/tcp_output.c
|
||||
@@ -2770,6 +2770,7 @@ static bool tcp_write_xmit(struct sock *
|
||||
@@ -2776,6 +2776,7 @@ static bool tcp_write_xmit(struct sock *
|
||||
skb_set_delivery_time(skb, tp->tcp_wstamp_ns, SKB_CLOCK_MONOTONIC);
|
||||
list_move_tail(&skb->tcp_tsorted_anchor, &tp->tsorted_sent_queue);
|
||||
tcp_init_tso_segs(skb, mss_now);
|
||||
|
@@ -28,7 +28,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
struct tcp_congestion_ops {
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -4066,6 +4066,7 @@ static int tcp_ack(struct sock *sk, cons
|
||||
@@ -4073,6 +4073,7 @@ static int tcp_ack(struct sock *sk, cons
|
||||
delivered = tcp_newly_delivered(sk, delivered, flag);
|
||||
lost = tp->lost - lost; /* freshly marked lost */
|
||||
rs.is_ack_delayed = !!(flag & FLAG_ACK_MAYBE_DELAYED);
|
||||
|
@@ -42,7 +42,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
*/
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -1126,7 +1126,12 @@ static void tcp_verify_retransmit_hint(s
|
||||
@@ -1140,7 +1140,12 @@ static void tcp_verify_retransmit_hint(s
|
||||
*/
|
||||
static void tcp_notify_skb_loss_event(struct tcp_sock *tp, const struct sk_buff *skb)
|
||||
{
|
||||
|
@@ -39,7 +39,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -1512,6 +1512,17 @@ static bool tcp_shifted_skb(struct sock
|
||||
@@ -1517,6 +1517,17 @@ static bool tcp_shifted_skb(struct sock
|
||||
WARN_ON_ONCE(tcp_skb_pcount(skb) < pcount);
|
||||
tcp_skb_pcount_add(skb, -pcount);
|
||||
|
||||
|
@@ -55,7 +55,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
* between different flows.
|
||||
--- a/net/ipv4/tcp_output.c
|
||||
+++ b/net/ipv4/tcp_output.c
|
||||
@@ -1606,7 +1606,7 @@ int tcp_fragment(struct sock *sk, enum t
|
||||
@@ -1612,7 +1612,7 @@ int tcp_fragment(struct sock *sk, enum t
|
||||
{
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
struct sk_buff *buff;
|
||||
@@ -64,7 +64,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
long limit;
|
||||
int nlen;
|
||||
u8 flags;
|
||||
@@ -1681,6 +1681,30 @@ int tcp_fragment(struct sock *sk, enum t
|
||||
@@ -1687,6 +1687,30 @@ int tcp_fragment(struct sock *sk, enum t
|
||||
|
||||
if (diff)
|
||||
tcp_adjust_pcount(sk, skb, diff);
|
||||
|
@@ -118,7 +118,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
};
|
||||
--- a/net/ipv4/tcp_output.c
|
||||
+++ b/net/ipv4/tcp_output.c
|
||||
@@ -2062,13 +2062,12 @@ static u32 tcp_tso_autosize(const struct
|
||||
@@ -2068,13 +2068,12 @@ static u32 tcp_tso_autosize(const struct
|
||||
static u32 tcp_tso_segs(struct sock *sk, unsigned int mss_now)
|
||||
{
|
||||
const struct tcp_congestion_ops *ca_ops = inet_csk(sk)->icsk_ca_ops;
|
||||
|
@@ -22,7 +22,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
|
||||
--- a/include/linux/tcp.h
|
||||
+++ b/include/linux/tcp.h
|
||||
@@ -243,7 +243,8 @@ struct tcp_sock {
|
||||
@@ -245,7 +245,8 @@ struct tcp_sock {
|
||||
/* OOO segments go in this rbtree. Socket lock must be held. */
|
||||
struct rb_root out_of_order_queue;
|
||||
u32 snd_ssthresh; /* Slow start size threshold */
|
||||
@@ -54,7 +54,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
if (tcp_ca_needs_ecn(sk))
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -5782,13 +5782,14 @@ static void __tcp_ack_snd_check(struct s
|
||||
@@ -5790,13 +5790,14 @@ static void __tcp_ack_snd_check(struct s
|
||||
|
||||
/* More than one full frame received... */
|
||||
if (((tp->rcv_nxt - tp->rcv_wup) > inet_csk(sk)->icsk_ack.rcv_mss &&
|
||||
|
@@ -23,7 +23,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
|
||||
--- a/include/linux/tcp.h
|
||||
+++ b/include/linux/tcp.h
|
||||
@@ -301,7 +301,8 @@ struct tcp_sock {
|
||||
@@ -303,7 +303,8 @@ struct tcp_sock {
|
||||
*/
|
||||
struct tcp_options_received rx_opt;
|
||||
u8 nonagle : 4,/* Disable Nagle algorithm? */
|
||||
@@ -35,7 +35,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
/* RX read-write hotpath cache lines */
|
||||
--- a/net/ipv4/tcp_output.c
|
||||
+++ b/net/ipv4/tcp_output.c
|
||||
@@ -3006,6 +3006,7 @@ void tcp_send_loss_probe(struct sock *sk
|
||||
@@ -3012,6 +3012,7 @@ void tcp_send_loss_probe(struct sock *sk
|
||||
if (WARN_ON(!skb || !tcp_skb_pcount(skb)))
|
||||
goto rearm_timer;
|
||||
|
||||
|
@@ -35,7 +35,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
/* Information about inbound ACK, passed to cong_ops->in_ack_event() */
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -3865,6 +3865,7 @@ static void tcp_process_tlp_ack(struct s
|
||||
@@ -3870,6 +3870,7 @@ static void tcp_process_tlp_ack(struct s
|
||||
/* ACK advances: there was a loss, so reduce cwnd. Reset
|
||||
* tlp_high_seq in tcp_init_cwnd_reduction()
|
||||
*/
|
||||
|
@@ -31,7 +31,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
};
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -3848,7 +3848,8 @@ static void tcp_replace_ts_recent(struct
|
||||
@@ -3853,7 +3853,8 @@ static void tcp_replace_ts_recent(struct
|
||||
/* This routine deals with acks during a TLP episode and ends an episode by
|
||||
* resetting tlp_high_seq. Ref: TLP algorithm in draft-ietf-tcpm-rack
|
||||
*/
|
||||
@@ -41,7 +41,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
{
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
|
||||
@@ -3876,6 +3877,11 @@ static void tcp_process_tlp_ack(struct s
|
||||
@@ -3881,6 +3882,11 @@ static void tcp_process_tlp_ack(struct s
|
||||
FLAG_NOT_DUP | FLAG_DATA_SACKED))) {
|
||||
/* Pure dupack: original and TLP probe arrived; no loss */
|
||||
tp->tlp_high_seq = 0;
|
||||
@@ -53,8 +53,8 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4059,7 +4065,7 @@ static int tcp_ack(struct sock *sk, cons
|
||||
tcp_rack_update_reo_wnd(sk, &rs);
|
||||
@@ -4066,7 +4072,7 @@ static int tcp_ack(struct sock *sk, cons
|
||||
tcp_in_ack_event(sk, flag);
|
||||
|
||||
if (tp->tlp_high_seq)
|
||||
- tcp_process_tlp_ack(sk, ack, flag);
|
||||
@@ -62,7 +62,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
|
||||
if (tcp_ack_is_dubious(sk, flag)) {
|
||||
if (!(flag & (FLAG_SND_UNA_ADVANCED |
|
||||
@@ -4103,7 +4109,7 @@ no_queue:
|
||||
@@ -4111,7 +4117,7 @@ no_queue:
|
||||
tcp_ack_probe(sk);
|
||||
|
||||
if (tp->tlp_high_seq)
|
||||
|
@@ -83,7 +83,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
.maxlen = sizeof(u8),
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -5664,6 +5664,7 @@ static bool tcp_prune_ofo_queue(struct s
|
||||
@@ -5672,6 +5672,7 @@ static bool tcp_prune_ofo_queue(struct s
|
||||
static int tcp_prune_queue(struct sock *sk, const struct sk_buff *in_skb)
|
||||
{
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
@@ -91,7 +91,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
|
||||
NET_INC_STATS(sock_net(sk), LINUX_MIB_PRUNECALLED);
|
||||
|
||||
@@ -5675,6 +5676,39 @@ static int tcp_prune_queue(struct sock *
|
||||
@@ -5683,6 +5684,39 @@ static int tcp_prune_queue(struct sock *
|
||||
if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf)
|
||||
return 0;
|
||||
|
||||
@@ -131,7 +131,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
tcp_collapse_ofo_queue(sk);
|
||||
if (!skb_queue_empty(&sk->sk_receive_queue))
|
||||
tcp_collapse(sk, &sk->sk_receive_queue, NULL,
|
||||
@@ -5693,6 +5727,8 @@ static int tcp_prune_queue(struct sock *
|
||||
@@ -5701,6 +5735,8 @@ static int tcp_prune_queue(struct sock *
|
||||
if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf)
|
||||
return 0;
|
||||
|
||||
|
@@ -15,7 +15,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
||||
|
||||
--- a/drivers/leds/Kconfig
|
||||
+++ b/drivers/leds/Kconfig
|
||||
@@ -1003,6 +1003,13 @@ config LEDS_ACER_A500
|
||||
@@ -1004,6 +1004,13 @@ config LEDS_ACER_A500
|
||||
This option enables support for the Power Button LED of
|
||||
Acer Iconia Tab A500.
|
||||
|
||||
|
@@ -103,7 +103,7 @@ Cherry-picked-for: https://gitlab.archlinux.org/archlinux/packaging/packages/lin
|
||||
}
|
||||
|
||||
hci_encrypt_cfm(conn, status);
|
||||
@@ -3062,6 +3073,34 @@ static void hci_inquiry_result_evt(struc
|
||||
@@ -3065,6 +3076,34 @@ static void hci_inquiry_result_evt(struc
|
||||
hci_dev_unlock(hdev);
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ Cherry-picked-for: https://gitlab.archlinux.org/archlinux/packaging/packages/lin
|
||||
static void hci_conn_complete_evt(struct hci_dev *hdev, void *data,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
@@ -3154,23 +3193,11 @@ static void hci_conn_complete_evt(struct
|
||||
@@ -3157,23 +3196,11 @@ static void hci_conn_complete_evt(struct
|
||||
if (ev->encr_mode == 1 && !test_bit(HCI_CONN_ENCRYPT, &conn->flags) &&
|
||||
ev->link_type == ACL_LINK) {
|
||||
struct link_key *key;
|
||||
@@ -163,7 +163,7 @@ Cherry-picked-for: https://gitlab.archlinux.org/archlinux/packaging/packages/lin
|
||||
hci_encrypt_cfm(conn, ev->status);
|
||||
}
|
||||
}
|
||||
@@ -3609,24 +3636,8 @@ static void hci_encrypt_change_evt(struc
|
||||
@@ -3612,24 +3639,8 @@ static void hci_encrypt_change_evt(struc
|
||||
|
||||
/* Try reading the encryption key size for encrypted ACL links */
|
||||
if (!ev->status && ev->encrypt && conn->type == ACL_LINK) {
|
||||
|
@@ -15,7 +15,7 @@ Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1077,11 +1077,6 @@ KBUILD_CFLAGS += -fno-strict-overflow
|
||||
@@ -1073,11 +1073,6 @@ KBUILD_CFLAGS += -fno-strict-overflow
|
||||
# Make sure -fstack-check isn't enabled (like gentoo apparently did)
|
||||
KBUILD_CFLAGS += -fno-stack-check
|
||||
|
||||
|
@@ -31,7 +31,7 @@ Subject: ZEN: drm/amdgpu/pm: Allow override of min_power_limit with
|
||||
int amdgpu_vis_vram_limit;
|
||||
int amdgpu_gart_size = -1; /* auto */
|
||||
int amdgpu_gtt_size = -1; /* auto */
|
||||
@@ -258,6 +259,15 @@ struct amdgpu_watchdog_timer amdgpu_watc
|
||||
@@ -259,6 +260,15 @@ struct amdgpu_watchdog_timer amdgpu_watc
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -61,7 +61,7 @@ Subject: ZEN: drm/amdgpu/pm: Allow override of min_power_limit with
|
||||
|
||||
--- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||||
+++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||||
@@ -2823,7 +2823,10 @@ int smu_get_power_limit(void *handle,
|
||||
@@ -2824,7 +2824,10 @@ int smu_get_power_limit(void *handle,
|
||||
*limit = smu->max_power_limit;
|
||||
break;
|
||||
case SMU_PPT_LIMIT_MIN:
|
||||
@@ -73,7 +73,7 @@ Subject: ZEN: drm/amdgpu/pm: Allow override of min_power_limit with
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
@@ -2847,7 +2850,14 @@ static int smu_set_power_limit(void *han
|
||||
@@ -2848,7 +2851,14 @@ static int smu_set_power_limit(void *han
|
||||
if (smu->ppt_funcs->set_power_limit)
|
||||
return smu->ppt_funcs->set_power_limit(smu, limit_type, limit);
|
||||
|
||||
|
@@ -85,7 +85,7 @@ Contains:
|
||||
|
||||
/*
|
||||
* The adjusted alloc_flags might result in immediate success, so try
|
||||
@@ -4517,9 +4525,12 @@ nopage:
|
||||
@@ -4525,9 +4533,12 @@ nopage:
|
||||
goto retry;
|
||||
}
|
||||
fail:
|
||||
|
@@ -60,14 +60,14 @@ caused by rebalancing too many tasks at once.
|
||||
+++ b/kernel/sched/fair.c
|
||||
@@ -76,10 +76,19 @@ unsigned int sysctl_sched_tunable_scalin
|
||||
*
|
||||
* (default: 0.75 msec * (1 + ilog(ncpus)), units: nanoseconds)
|
||||
* (default: 0.70 msec * (1 + ilog(ncpus)), units: nanoseconds)
|
||||
*/
|
||||
+#ifdef CONFIG_ZEN_INTERACTIVE
|
||||
+unsigned int sysctl_sched_base_slice = 400000ULL;
|
||||
+static unsigned int normalized_sysctl_sched_base_slice = 400000ULL;
|
||||
+#else
|
||||
unsigned int sysctl_sched_base_slice = 750000ULL;
|
||||
static unsigned int normalized_sysctl_sched_base_slice = 750000ULL;
|
||||
unsigned int sysctl_sched_base_slice = 700000ULL;
|
||||
static unsigned int normalized_sysctl_sched_base_slice = 700000ULL;
|
||||
+#endif
|
||||
|
||||
+#ifdef CONFIG_ZEN_INTERACTIVE
|
||||
|
36
debian/patches/series
vendored
36
debian/patches/series
vendored
@@ -156,21 +156,20 @@ patchset-pf/cpuidle/0001-cpuidle-Prefer-teo-over-menu-governor.patch
|
||||
patchset-pf/crypto/0001-crypto-x86-aes-xts-make-the-fast-path-64-bit-specifi.patch
|
||||
patchset-pf/crypto/0002-crypto-x86-aes-ctr-rewrite-AESNI-AVX-optimized-CTR-a.patch
|
||||
|
||||
patchset-pf/invlpgb/0001-x86-mm-Make-MMU_GATHER_RCU_TABLE_FREE-unconditional.patch
|
||||
patchset-pf/invlpgb/0002-x86-mm-Remove-pv_ops.mmu.tlb_remove_table-call.patch
|
||||
patchset-pf/invlpgb/0003-x86-mm-Consolidate-full-flush-threshold-decision.patch
|
||||
patchset-pf/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch
|
||||
patchset-pf/invlpgb/0005-x86-mm-Add-INVLPGB-support-code.patch
|
||||
patchset-pf/invlpgb/0006-x86-mm-Use-INVLPGB-for-kernel-TLB-flushes.patch
|
||||
patchset-pf/invlpgb/0007-x86-mm-Use-broadcast-TLB-flushing-in-page-reclaim.patch
|
||||
patchset-pf/invlpgb/0008-x86-mm-Add-global-ASID-allocation-helper-functions.patch
|
||||
patchset-pf/invlpgb/0009-x86-mm-Handle-global-ASID-context-switch-and-TLB-flu.patch
|
||||
patchset-pf/invlpgb/0010-x86-mm-Add-global-ASID-process-exit-helpers.patch
|
||||
patchset-pf/invlpgb/0011-x86-mm-Enable-broadcast-TLB-invalidation-for-multi-t.patch
|
||||
patchset-pf/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch
|
||||
patchset-pf/invlpgb/0013-x86-mm-Always-set-the-ASID-valid-bit-for-the-INVLPGB.patch
|
||||
patchset-pf/invlpgb/0014-x86-mm-Only-do-broadcast-flush-from-reclaim-if-pages.patch
|
||||
patchset-pf/invlpgb/0015-x86-mm-Eliminate-window-where-TLB-flushes-may-be-ina.patch
|
||||
patchset-pf/invlpgb/0001-x86-mm-Remove-pv_ops.mmu.tlb_remove_table-call.patch
|
||||
patchset-pf/invlpgb/0002-x86-mm-Consolidate-full-flush-threshold-decision.patch
|
||||
patchset-pf/invlpgb/0003-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch
|
||||
patchset-pf/invlpgb/0004-x86-mm-Add-INVLPGB-support-code.patch
|
||||
patchset-pf/invlpgb/0005-x86-mm-Use-INVLPGB-for-kernel-TLB-flushes.patch
|
||||
patchset-pf/invlpgb/0006-x86-mm-Use-broadcast-TLB-flushing-in-page-reclaim.patch
|
||||
patchset-pf/invlpgb/0007-x86-mm-Add-global-ASID-allocation-helper-functions.patch
|
||||
patchset-pf/invlpgb/0008-x86-mm-Handle-global-ASID-context-switch-and-TLB-flu.patch
|
||||
patchset-pf/invlpgb/0009-x86-mm-Add-global-ASID-process-exit-helpers.patch
|
||||
patchset-pf/invlpgb/0010-x86-mm-Enable-broadcast-TLB-invalidation-for-multi-t.patch
|
||||
patchset-pf/invlpgb/0011-x86-mm-Enable-AMD-translation-cache-extensions.patch
|
||||
patchset-pf/invlpgb/0012-x86-mm-Always-set-the-ASID-valid-bit-for-the-INVLPGB.patch
|
||||
patchset-pf/invlpgb/0013-x86-mm-Only-do-broadcast-flush-from-reclaim-if-pages.patch
|
||||
patchset-pf/invlpgb/0014-x86-mm-Eliminate-window-where-TLB-flushes-may-be-ina.patch
|
||||
|
||||
patchset-pf/zstd/0001-zstd-import-upstream-v1.5.7.patch
|
||||
patchset-pf/zstd/0002-lib-zstd-Refactor-intentional-wrap-around-test.patch
|
||||
@@ -264,12 +263,7 @@ patchset-pf/fixes/0002-x86-tools-Drop-duplicate-unlikely-definition-in-insn.patc
|
||||
patchset-pf/fixes/0003-ice-mark-ice_write_prof_mask_reg-as-noinline.patch
|
||||
patchset-pf/fixes/0004-wifi-ath12k-Abort-scan-before-removing-link-interfac.patch
|
||||
patchset-pf/fixes/0005-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch
|
||||
patchset-pf/fixes/0006-gcc-15-make-unterminated-string-initialization-just-.patch
|
||||
patchset-pf/fixes/0007-gcc-15-disable-Wunterminated-string-initialization-e.patch
|
||||
patchset-pf/fixes/0008-wifi-mac80211-mark-copy_mesh_setup-as-noinline.patch
|
||||
patchset-pf/fixes/0009-mei-vsc-Use-struct-vsc_tp_packet-as-vsc-tp-tx_buf-an.patch
|
||||
patchset-pf/fixes/0010-loop-don-t-require-write_iter-for-writable-files-in-.patch
|
||||
patchset-pf/fixes/0006-wifi-mac80211-mark-copy_mesh_setup-as-noinline.patch
|
||||
|
||||
patchset-zen/fixes/0001-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch
|
||||
patchset-zen/fixes/0002-Bluetooth-hci_event-Fix-not-using-key-encryption-siz.patch
|
||||
|
||||
|
Reference in New Issue
Block a user