diff options
-rw-r--r-- | SOURCES/0001-amd-pstate.patch | 304 | ||||
-rw-r--r-- | SOURCES/kernel.changelog | 4 | ||||
-rw-r--r-- | SOURCES/patch-6.9-redhat.patch | 78 | ||||
-rw-r--r-- | SPECS/kernel.spec | 15 |
4 files changed, 119 insertions, 282 deletions
diff --git a/SOURCES/0001-amd-pstate.patch b/SOURCES/0001-amd-pstate.patch index 74fc021..8e7b5cb 100644 --- a/SOURCES/0001-amd-pstate.patch +++ b/SOURCES/0001-amd-pstate.patch @@ -1,151 +1,66 @@ -From f3018861226770c17b47bcda4d4fd4291ad00ae6 Mon Sep 17 00:00:00 2001 +From 14416a42f37d3455e6de7d249df9a76b40a456bf Mon Sep 17 00:00:00 2001 From: Peter Jung <admin@ptr1337.dev> -Date: Sun, 16 Jun 2024 15:33:06 +0200 +Date: Fri, 21 Jun 2024 15:31:56 +0200 Subject: [PATCH 02/10] amd-pstate Signed-off-by: Peter Jung <admin@ptr1337.dev> --- - drivers/cpufreq/amd-pstate.c | 265 +++++++++++++++++++++-------------- - include/linux/amd-pstate.h | 20 ++- - 2 files changed, 177 insertions(+), 108 deletions(-) + drivers/cpufreq/amd-pstate.c | 115 +++++++++++++++++++---------------- + drivers/cpufreq/amd-pstate.h | 14 +++-- + 2 files changed, 70 insertions(+), 59 deletions(-) diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c -index e263db0385ab..cde3b91b4422 100644 +index 6c989d859b39..c08463f8dcac 100644 --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c -@@ -68,6 +68,7 @@ static struct cpufreq_driver amd_pstate_epp_driver; - static int cppc_state = AMD_PSTATE_UNDEFINED; - static bool cppc_enabled; - static bool amd_pstate_prefcore = true; -+static struct quirk_entry *quirks; - - /* - * AMD Energy Preference Performance (EPP) -@@ -112,6 +113,41 @@ static unsigned int epp_values[] = { - - typedef int (*cppc_mode_transition_fn)(int); +@@ -85,15 +85,6 @@ struct quirk_entry { + u32 lowest_freq; + }; -+static struct quirk_entry quirk_amd_7k62 = { -+ .nominal_freq = 2600, -+ .lowest_freq = 550, -+}; -+ -+static int __init dmi_matched_7k62_bios_bug(const struct dmi_system_id *dmi) -+{ -+ /** -+ * match the broken bios for family 17h processor support CPPC V2 -+ * broken BIOS lack of nominal_freq and lowest_freq capabilities -+ * definition in ACPI tables -+ */ -+ if (boot_cpu_has(X86_FEATURE_ZEN2)) { -+ quirks = dmi->driver_data; -+ pr_info("Overriding nominal and lowest frequencies for %s\n", dmi->ident); -+ return 1; -+ } -+ -+ return 0; -+} -+ -+static const struct dmi_system_id amd_pstate_quirks_table[] __initconst = { -+ { -+ .callback = dmi_matched_7k62_bios_bug, -+ .ident = "AMD EPYC 7K62", -+ .matches = { -+ DMI_MATCH(DMI_BIOS_VERSION, "5.14"), -+ DMI_MATCH(DMI_BIOS_RELEASE, "12/12/2019"), -+ }, -+ .driver_data = &quirk_amd_7k62, -+ }, -+ {} -+}; -+MODULE_DEVICE_TABLE(dmi, amd_pstate_quirks_table); -+ - static inline int get_mode_idx_from_str(const char *str, size_t size) - { - int i; -@@ -620,78 +656,6 @@ static void amd_pstate_adjust_perf(unsigned int cpu, +-/* +- * TODO: We need more time to fine tune processors with shared memory solution +- * with community together. +- * +- * There are some performance drops on the CPU benchmarks which reports from +- * Suse. We are co-working with them to fine tune the shared memory solution. So +- * we disable it by default to go acpi-cpufreq on these processors and add a +- * module parameter to be able to enable it manually for debugging. +- */ + static struct cpufreq_driver *current_pstate_driver; + static struct cpufreq_driver amd_pstate_driver; + static struct cpufreq_driver amd_pstate_epp_driver; +@@ -688,26 +679,6 @@ static void amd_pstate_adjust_perf(unsigned int cpu, cpufreq_cpu_put(policy); } -static int amd_get_min_freq(struct amd_cpudata *cpudata) -{ -- struct cppc_perf_caps cppc_perf; -- -- int ret = cppc_get_perf_caps(cpudata->cpu, &cppc_perf); -- if (ret) -- return ret; -- -- /* Switch to khz */ -- return cppc_perf.lowest_freq * 1000; +- return READ_ONCE(cpudata->min_freq); -} - -static int amd_get_max_freq(struct amd_cpudata *cpudata) -{ -- struct cppc_perf_caps cppc_perf; -- u32 max_perf, max_freq, nominal_freq, nominal_perf; -- u64 boost_ratio; -- -- int ret = cppc_get_perf_caps(cpudata->cpu, &cppc_perf); -- if (ret) -- return ret; -- -- nominal_freq = cppc_perf.nominal_freq; -- nominal_perf = READ_ONCE(cpudata->nominal_perf); -- max_perf = READ_ONCE(cpudata->highest_perf); -- -- boost_ratio = div_u64(max_perf << SCHED_CAPACITY_SHIFT, -- nominal_perf); -- -- max_freq = nominal_freq * boost_ratio >> SCHED_CAPACITY_SHIFT; -- -- /* Switch to khz */ -- return max_freq * 1000; +- return READ_ONCE(cpudata->max_freq); -} - -static int amd_get_nominal_freq(struct amd_cpudata *cpudata) -{ -- struct cppc_perf_caps cppc_perf; -- -- int ret = cppc_get_perf_caps(cpudata->cpu, &cppc_perf); -- if (ret) -- return ret; -- -- /* Switch to khz */ -- return cppc_perf.nominal_freq * 1000; +- return READ_ONCE(cpudata->nominal_freq); -} - -static int amd_get_lowest_nonlinear_freq(struct amd_cpudata *cpudata) -{ -- struct cppc_perf_caps cppc_perf; -- u32 lowest_nonlinear_freq, lowest_nonlinear_perf, -- nominal_freq, nominal_perf; -- u64 lowest_nonlinear_ratio; -- -- int ret = cppc_get_perf_caps(cpudata->cpu, &cppc_perf); -- if (ret) -- return ret; -- -- nominal_freq = cppc_perf.nominal_freq; -- nominal_perf = READ_ONCE(cpudata->nominal_perf); -- -- lowest_nonlinear_perf = cppc_perf.lowest_nonlinear_perf; -- -- lowest_nonlinear_ratio = div_u64(lowest_nonlinear_perf << SCHED_CAPACITY_SHIFT, -- nominal_perf); -- -- lowest_nonlinear_freq = nominal_freq * lowest_nonlinear_ratio >> SCHED_CAPACITY_SHIFT; -- -- /* Switch to khz */ -- return lowest_nonlinear_freq * 1000; +- return READ_ONCE(cpudata->lowest_nonlinear_freq); -} - static int amd_pstate_set_boost(struct cpufreq_policy *policy, int state) { struct amd_cpudata *cpudata = policy->driver_data; -@@ -844,9 +808,93 @@ static void amd_pstate_update_limits(unsigned int cpu) +@@ -860,7 +831,37 @@ static void amd_pstate_update_limits(unsigned int cpu) mutex_unlock(&amd_pstate_driver_lock); } +-/** +/* + * Get pstate transition delay time from ACPI tables that firmware set + * instead of using hardcode value directly. @@ -177,59 +92,19 @@ index e263db0385ab..cde3b91b4422 100644 +} + +/* -+ * amd_pstate_init_freq: Initialize the max_freq, min_freq, -+ * nominal_freq and lowest_nonlinear_freq for -+ * the @cpudata object. -+ * -+ * Requires: highest_perf, lowest_perf, nominal_perf and -+ * lowest_nonlinear_perf members of @cpudata to be -+ * initialized. -+ * -+ * Returns 0 on success, non-zero value on failure. -+ */ -+static int amd_pstate_init_freq(struct amd_cpudata *cpudata) -+{ -+ int ret; -+ u32 min_freq; -+ u32 highest_perf, max_freq; -+ u32 nominal_perf, nominal_freq; -+ u32 lowest_nonlinear_perf, lowest_nonlinear_freq; -+ u32 boost_ratio, lowest_nonlinear_ratio; -+ struct cppc_perf_caps cppc_perf; -+ -+ ret = cppc_get_perf_caps(cpudata->cpu, &cppc_perf); -+ if (ret) -+ return ret; -+ -+ if (quirks && quirks->lowest_freq) -+ min_freq = quirks->lowest_freq * 1000; -+ else -+ min_freq = cppc_perf.lowest_freq * 1000; -+ -+ if (quirks && quirks->nominal_freq) -+ nominal_freq = quirks->nominal_freq ; -+ else -+ nominal_freq = cppc_perf.nominal_freq; -+ -+ nominal_perf = READ_ONCE(cpudata->nominal_perf); -+ -+ highest_perf = READ_ONCE(cpudata->highest_perf); -+ boost_ratio = div_u64(highest_perf << SCHED_CAPACITY_SHIFT, nominal_perf); -+ max_freq = (nominal_freq * boost_ratio >> SCHED_CAPACITY_SHIFT) * 1000; -+ -+ lowest_nonlinear_perf = READ_ONCE(cpudata->lowest_nonlinear_perf); -+ lowest_nonlinear_ratio = div_u64(lowest_nonlinear_perf << SCHED_CAPACITY_SHIFT, -+ nominal_perf); -+ lowest_nonlinear_freq = (nominal_freq * lowest_nonlinear_ratio >> SCHED_CAPACITY_SHIFT) * 1000; -+ -+ WRITE_ONCE(cpudata->min_freq, min_freq); -+ WRITE_ONCE(cpudata->lowest_nonlinear_freq, lowest_nonlinear_freq); -+ WRITE_ONCE(cpudata->nominal_freq, nominal_freq); -+ WRITE_ONCE(cpudata->max_freq, max_freq); -+ -+ return 0; -+} -+ + * amd_pstate_init_freq: Initialize the max_freq, min_freq, + * nominal_freq and lowest_nonlinear_freq for + * the @cpudata object. +@@ -881,7 +882,6 @@ static int amd_pstate_init_freq(struct amd_cpudata *cpudata) + u32 boost_ratio, lowest_nonlinear_ratio; + struct cppc_perf_caps cppc_perf; + +- + ret = cppc_get_perf_caps(cpudata->cpu, &cppc_perf); + if (ret) + return ret; +@@ -917,7 +917,7 @@ static int amd_pstate_init_freq(struct amd_cpudata *cpudata) + static int amd_pstate_cpu_init(struct cpufreq_policy *policy) { - int min_freq, max_freq, nominal_freq, lowest_nonlinear_freq, ret; @@ -237,7 +112,7 @@ index e263db0385ab..cde3b91b4422 100644 struct device *dev; struct amd_cpudata *cpudata; -@@ -871,20 +919,25 @@ static int amd_pstate_cpu_init(struct cpufreq_policy *policy) +@@ -946,20 +946,21 @@ static int amd_pstate_cpu_init(struct cpufreq_policy *policy) if (ret) goto free_cpudata1; @@ -245,17 +120,13 @@ index e263db0385ab..cde3b91b4422 100644 - max_freq = amd_get_max_freq(cpudata); - nominal_freq = amd_get_nominal_freq(cpudata); - lowest_nonlinear_freq = amd_get_lowest_nonlinear_freq(cpudata); -+ ret = amd_pstate_init_freq(cpudata); -+ if (ret) -+ goto free_cpudata1; ++ min_freq = READ_ONCE(cpudata->min_freq); ++ max_freq = READ_ONCE(cpudata->max_freq); ++ nominal_freq = READ_ONCE(cpudata->nominal_freq); - if (min_freq < 0 || max_freq < 0 || min_freq > max_freq) { - dev_err(dev, "min_freq(%d) or max_freq(%d) value is incorrect\n", - min_freq, max_freq); -+ min_freq = READ_ONCE(cpudata->min_freq); -+ max_freq = READ_ONCE(cpudata->max_freq); -+ nominal_freq = READ_ONCE(cpudata->nominal_freq); -+ + if (min_freq <= 0 || max_freq <= 0 || + nominal_freq <= 0 || min_freq > max_freq) { + dev_err(dev, @@ -272,21 +143,7 @@ index e263db0385ab..cde3b91b4422 100644 policy->min = min_freq; policy->max = max_freq; -@@ -912,13 +965,8 @@ static int amd_pstate_cpu_init(struct cpufreq_policy *policy) - goto free_cpudata2; - } - -- /* Initial processor data capability frequencies */ -- cpudata->max_freq = max_freq; -- cpudata->min_freq = min_freq; - cpudata->max_limit_freq = max_freq; - cpudata->min_limit_freq = min_freq; -- cpudata->nominal_freq = nominal_freq; -- cpudata->lowest_nonlinear_freq = lowest_nonlinear_freq; - - policy->driver_data = cpudata; - -@@ -982,7 +1030,7 @@ static ssize_t show_amd_pstate_max_freq(struct cpufreq_policy *policy, +@@ -1052,7 +1053,7 @@ static ssize_t show_amd_pstate_max_freq(struct cpufreq_policy *policy, int max_freq; struct amd_cpudata *cpudata = policy->driver_data; @@ -295,7 +152,7 @@ index e263db0385ab..cde3b91b4422 100644 if (max_freq < 0) return max_freq; -@@ -995,7 +1043,7 @@ static ssize_t show_amd_pstate_lowest_nonlinear_freq(struct cpufreq_policy *poli +@@ -1065,7 +1066,7 @@ static ssize_t show_amd_pstate_lowest_nonlinear_freq(struct cpufreq_policy *poli int freq; struct amd_cpudata *cpudata = policy->driver_data; @@ -304,7 +161,7 @@ index e263db0385ab..cde3b91b4422 100644 if (freq < 0) return freq; -@@ -1306,7 +1354,7 @@ static bool amd_pstate_acpi_pm_profile_undefined(void) +@@ -1376,7 +1377,7 @@ static bool amd_pstate_acpi_pm_profile_undefined(void) static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy) { @@ -313,7 +170,7 @@ index e263db0385ab..cde3b91b4422 100644 struct amd_cpudata *cpudata; struct device *dev; u64 value; -@@ -1333,13 +1381,18 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy) +@@ -1407,13 +1408,14 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy) if (ret) goto free_cpudata1; @@ -324,10 +181,6 @@ index e263db0385ab..cde3b91b4422 100644 - if (min_freq < 0 || max_freq < 0 || min_freq > max_freq) { - dev_err(dev, "min_freq(%d) or max_freq(%d) value is incorrect\n", - min_freq, max_freq); -+ ret = amd_pstate_init_freq(cpudata); -+ if (ret) -+ goto free_cpudata1; -+ + min_freq = READ_ONCE(cpudata->min_freq); + max_freq = READ_ONCE(cpudata->max_freq); + nominal_freq = READ_ONCE(cpudata->nominal_freq); @@ -339,20 +192,7 @@ index e263db0385ab..cde3b91b4422 100644 ret = -EINVAL; goto free_cpudata1; } -@@ -1349,12 +1402,6 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy) - /* It will be updated by governor */ - policy->cur = policy->cpuinfo.min_freq; - -- /* Initial processor data capability frequencies */ -- cpudata->max_freq = max_freq; -- cpudata->min_freq = min_freq; -- cpudata->nominal_freq = nominal_freq; -- cpudata->lowest_nonlinear_freq = lowest_nonlinear_freq; -- - policy->driver_data = cpudata; - - cpudata->epp_cached = amd_pstate_get_epp(cpudata, 0); -@@ -1394,6 +1441,13 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy) +@@ -1462,6 +1464,13 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy) static int amd_pstate_epp_cpu_exit(struct cpufreq_policy *policy) { @@ -366,23 +206,24 @@ index e263db0385ab..cde3b91b4422 100644 pr_debug("CPU %d exiting\n", policy->cpu); return 0; } -@@ -1672,6 +1726,11 @@ static int __init amd_pstate_init(void) - if (cpufreq_get_current_driver()) - return -EEXIST; - -+ quirks = NULL; -+ -+ /* check if this machine need CPPC quirks */ -+ dmi_check_system(amd_pstate_quirks_table); -+ - switch (cppc_state) { - case AMD_PSTATE_UNDEFINED: +@@ -1750,11 +1759,9 @@ static int __init amd_pstate_init(void) /* Disable on the following configs by default: -diff --git a/include/linux/amd-pstate.h b/include/linux/amd-pstate.h -index d21838835abd..d58fc022ec46 100644 ---- a/include/linux/amd-pstate.h -+++ b/include/linux/amd-pstate.h -@@ -49,13 +49,17 @@ struct amd_aperf_mperf { + * 1. Undefined platforms + * 2. Server platforms +- * 3. Shared memory designs + */ + if (amd_pstate_acpi_pm_profile_undefined() || +- amd_pstate_acpi_pm_profile_server() || +- !boot_cpu_has(X86_FEATURE_CPPC)) { ++ amd_pstate_acpi_pm_profile_server()) { + pr_info("driver load is disabled, boot with specific mode to enable this\n"); + return -ENODEV; + } +diff --git a/drivers/cpufreq/amd-pstate.h b/drivers/cpufreq/amd-pstate.h +index bc341f35908d..e6a28e7f4dbf 100644 +--- a/drivers/cpufreq/amd-pstate.h ++++ b/drivers/cpufreq/amd-pstate.h +@@ -42,13 +42,17 @@ struct amd_aperf_mperf { * @lowest_perf: the absolute lowest performance level of the processor * @prefcore_ranking: the preferred core ranking, the higher value indicates a higher * priority. @@ -405,17 +246,6 @@ index d21838835abd..d58fc022ec46 100644 * @boost_supported: check whether the Processor or SBIOS supports boost mode * @hw_prefcore: check whether HW supports preferred core featue. * Only when hw_prefcore and early prefcore param are true, -@@ -124,4 +128,10 @@ static const char * const amd_pstate_mode_string[] = { - [AMD_PSTATE_GUIDED] = "guided", - NULL, - }; -+ -+struct quirk_entry { -+ u32 nominal_freq; -+ u32 lowest_freq; -+}; -+ - #endif /* _LINUX_AMD_PSTATE_H */ -- 2.45.2 diff --git a/SOURCES/kernel.changelog b/SOURCES/kernel.changelog index 0dcae9f..df18931 100644 --- a/SOURCES/kernel.changelog +++ b/SOURCES/kernel.changelog @@ -1,3 +1,7 @@ +* Fri Jun 21 2024 Augusto Caringi <acaringi@redhat.com> [6.9.6-0] +- Linux v6.9.6 +Resolves: + * Sun Jun 16 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.9.5-0] - Linux v6.9.5 Resolves: diff --git a/SOURCES/patch-6.9-redhat.patch b/SOURCES/patch-6.9-redhat.patch index c496a2f..9c04cc8 100644 --- a/SOURCES/patch-6.9-redhat.patch +++ b/SOURCES/patch-6.9-redhat.patch @@ -39,7 +39,7 @@ 38 files changed, 762 insertions(+), 192 deletions(-) diff --git a/Kconfig b/Kconfig -index 745bc773f567..f57ff40109d7 100644 +index 745bc773f5670..f57ff40109d71 100644 --- a/Kconfig +++ b/Kconfig @@ -30,3 +30,5 @@ source "lib/Kconfig" @@ -50,7 +50,7 @@ index 745bc773f567..f57ff40109d7 100644 +source "Kconfig.redhat" diff --git a/Kconfig.redhat b/Kconfig.redhat new file mode 100644 -index 000000000000..733a26bd887a +index 0000000000000..733a26bd887a2 --- /dev/null +++ b/Kconfig.redhat @@ -0,0 +1,17 @@ @@ -72,7 +72,7 @@ index 000000000000..733a26bd887a + +endmenu diff --git a/Makefile b/Makefile -index d5062a593ef7..d83327c33f55 100644 +index 8da63744745be..f605426ef3d12 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,18 @@ $(if $(filter __%, $(MAKECMDGOALS)), \ @@ -95,7 +95,7 @@ index d5062a593ef7..d83327c33f55 100644 # to get the ordering right. # diff --git a/arch/s390/include/asm/ipl.h b/arch/s390/include/asm/ipl.h -index b0d00032479d..afb9544fb007 100644 +index b0d00032479d6..afb9544fb0074 100644 --- a/arch/s390/include/asm/ipl.h +++ b/arch/s390/include/asm/ipl.h @@ -139,6 +139,7 @@ int ipl_report_add_component(struct ipl_report *report, struct kexec_buf *kbuf, @@ -107,7 +107,7 @@ index b0d00032479d..afb9544fb007 100644 /* * DIAG 308 support diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c -index 469e8d3fbfbf..3ce742cd61c3 100644 +index 469e8d3fbfbf3..3ce742cd61c3b 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c @@ -2519,3 +2519,8 @@ int ipl_report_free(struct ipl_report *report) @@ -120,7 +120,7 @@ index 469e8d3fbfbf..3ce742cd61c3 100644 + return !!ipl_secure_flag; +} diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c -index 7ecd27c62d56..cad68dfba646 100644 +index 7ecd27c62d564..cad68dfba646c 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c @@ -49,6 +49,7 @@ @@ -142,7 +142,7 @@ index 7ecd27c62d56..cad68dfba646 100644 /* boot_command_line has been already set up in early.c */ *cmdline_p = boot_command_line; diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c -index e125e059e2c4..9cfd28e580e0 100644 +index e125e059e2c45..9cfd28e580e0a 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -20,6 +20,7 @@ @@ -189,7 +189,7 @@ index e125e059e2c4..9cfd28e580e0 100644 reserve_initrd(); diff --git a/crypto/drbg.c b/crypto/drbg.c -index 3addce90930c..730b03de596a 100644 +index 3addce90930c3..730b03de596a3 100644 --- a/crypto/drbg.c +++ b/crypto/drbg.c @@ -1494,13 +1494,14 @@ static int drbg_generate(struct drbg_state *drbg, @@ -244,7 +244,7 @@ index 3addce90930c..730b03de596a 100644 /* diff --git a/crypto/rng.c b/crypto/rng.c -index 279dffdebf59..d24dd37205cd 100644 +index 279dffdebf598..d24dd37205cd7 100644 --- a/crypto/rng.c +++ b/crypto/rng.c @@ -12,10 +12,13 @@ @@ -463,7 +463,7 @@ index 279dffdebf59..d24dd37205cd 100644 MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Random Number Generator"); diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c -index 20d757687e3d..90a13f20f052 100644 +index 20d757687e3d9..90a13f20f052b 100644 --- a/drivers/acpi/apei/hest.c +++ b/drivers/acpi/apei/hest.c @@ -142,6 +142,14 @@ static int apei_hest_parse(apei_hest_func_t func, void *data) @@ -482,7 +482,7 @@ index 20d757687e3d..90a13f20f052 100644 for (i = 0; i < hest_tab->error_source_count; i++) { len = hest_esrc_len(hest_hdr); diff --git a/drivers/acpi/irq.c b/drivers/acpi/irq.c -index 1687483ff319..390b67f19181 100644 +index 1687483ff319e..390b67f19181a 100644 --- a/drivers/acpi/irq.c +++ b/drivers/acpi/irq.c @@ -143,6 +143,7 @@ struct acpi_irq_parse_one_ctx { @@ -525,7 +525,7 @@ index 1687483ff319..390b67f19181 100644 return ctx.rc; } diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c -index d1464324de95..a3b2f99a2d78 100644 +index d1464324de951..a3b2f99a2d785 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -1798,6 +1798,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device) @@ -545,7 +545,7 @@ index d1464324de95..a3b2f99a2d78 100644 acpi_dev_get_resources(device, &resource_list, acpi_check_serial_bus_slave, diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c -index 83431aae74d8..f2a9c0d644af 100644 +index 83431aae74d8b..f2a9c0d644af2 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c @@ -729,6 +729,24 @@ int ahci_stop_engine(struct ata_port *ap) @@ -574,7 +574,7 @@ index 83431aae74d8..f2a9c0d644af 100644 tmp = ata_wait_register(ap, port_mmio + PORT_CMD, PORT_CMD_LIST_ON, PORT_CMD_LIST_ON, 1, 500); diff --git a/drivers/char/ipmi/ipmi_dmi.c b/drivers/char/ipmi/ipmi_dmi.c -index bbf7029e224b..cf7faa970dd6 100644 +index bbf7029e224be..cf7faa970dd65 100644 --- a/drivers/char/ipmi/ipmi_dmi.c +++ b/drivers/char/ipmi/ipmi_dmi.c @@ -215,6 +215,21 @@ static int __init scan_for_dmi_ipmi(void) @@ -600,7 +600,7 @@ index bbf7029e224b..cf7faa970dd6 100644 dmi_decode_ipmi((const struct dmi_header *) dev->device_data); diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c -index b0eedc4595b3..a9024c1dd68a 100644 +index b0eedc4595b37..a9024c1dd68ab 100644 --- a/drivers/char/ipmi/ipmi_msghandler.c +++ b/drivers/char/ipmi/ipmi_msghandler.c @@ -35,6 +35,7 @@ @@ -635,7 +635,7 @@ index b0eedc4595b3..a9024c1dd68a 100644 rv = ipmi_register_driver(); mutex_unlock(&ipmi_interfaces_mutex); diff --git a/drivers/char/random.c b/drivers/char/random.c -index 2597cb43f438..d860f4f6ba2c 100644 +index 2597cb43f4387..d860f4f6ba2c7 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -51,6 +51,7 @@ @@ -832,7 +832,7 @@ index 2597cb43f438..d860f4f6ba2c 100644 /******************************************************************** * diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile -index a2d0009560d0..4f3486e6a84b 100644 +index a2d0009560d0f..4f3486e6a84b2 100644 --- a/drivers/firmware/efi/Makefile +++ b/drivers/firmware/efi/Makefile @@ -25,6 +25,7 @@ subdir-$(CONFIG_EFI_STUB) += libstub @@ -844,7 +844,7 @@ index a2d0009560d0..4f3486e6a84b 100644 obj-$(CONFIG_EFI_RCI2_TABLE) += rci2-table.o obj-$(CONFIG_EFI_EMBEDDED_FIRMWARE) += embedded-firmware.o diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c -index fdf07dd6f459..cfd2b58a3494 100644 +index fdf07dd6f4591..cfd2b58a34940 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -33,6 +33,7 @@ @@ -990,7 +990,7 @@ index fdf07dd6f459..cfd2b58a3494 100644 diff --git a/drivers/firmware/efi/secureboot.c b/drivers/firmware/efi/secureboot.c new file mode 100644 -index 000000000000..de0a3714a5d4 +index 0000000000000..de0a3714a5d44 --- /dev/null +++ b/drivers/firmware/efi/secureboot.c @@ -0,0 +1,38 @@ @@ -1033,7 +1033,7 @@ index 000000000000..de0a3714a5d4 + } +} diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c -index d4af17fdba46..154f0403cbf4 100644 +index d4af17fdba467..154f0403cbf4c 100644 --- a/drivers/hid/hid-rmi.c +++ b/drivers/hid/hid-rmi.c @@ -321,21 +321,12 @@ static int rmi_input_event(struct hid_device *hdev, u8 *data, int size) @@ -1135,7 +1135,7 @@ index d4af17fdba46..154f0403cbf4 100644 data->xport.ops = &hid_rmi_ops; diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c -index a0bdfabddbc6..cd824ceebd0f 100644 +index a0bdfabddbc68..cd824ceebd0fe 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x-core.c +++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c @@ -10,6 +10,7 @@ @@ -1186,7 +1186,7 @@ index a0bdfabddbc6..cd824ceebd0f 100644 platform_driver_unregister(&etm4_platform_driver); etm4_pm_clear(); diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c -index ef9ea295f9e0..0103334e8f32 100644 +index ef9ea295f9e03..0103334e8f32c 100644 --- a/drivers/input/rmi4/rmi_driver.c +++ b/drivers/input/rmi4/rmi_driver.c @@ -182,34 +182,47 @@ void rmi_set_attn_data(struct rmi_device *rmi_dev, unsigned long irq_status, @@ -1378,7 +1378,7 @@ index ef9ea295f9e0..0103334e8f32 100644 if (data->f01_container->dev.driver) { /* Driver already bound, so enable ATTN now. */ diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c -index 659a77f7bb83..e8dc1fd50e21 100644 +index 659a77f7bb833..e8dc1fd50e21d 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -8,6 +8,7 @@ @@ -1418,7 +1418,7 @@ index 659a77f7bb83..e8dc1fd50e21 100644 * iommu_setup_default_domain - Set the default_domain for the group * @group: Group to change diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c -index eff7f5df08e2..b58145ce7775 100644 +index eff7f5df08e27..b58145ce7775c 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -4433,6 +4433,30 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9000, @@ -1453,7 +1453,7 @@ index eff7f5df08e2..b58145ce7775 100644 * Intersil/Techwell TW686[4589]-based video capture cards have an empty (zero) * class code. Fix it. diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c -index caac482fff2f..d3d59612ea93 100644 +index 4f7b9b5b9c5b4..98831fb3769fd 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -119,6 +119,14 @@ static const char *sd_cache_types[] = { @@ -1471,7 +1471,7 @@ index caac482fff2f..d3d59612ea93 100644 static void sd_set_flush_flag(struct scsi_disk *sdkp) { bool wc = false, fua = false; -@@ -4251,6 +4259,8 @@ static int __init init_sd(void) +@@ -4258,6 +4266,8 @@ static int __init init_sd(void) goto err_out_class; } @@ -1481,7 +1481,7 @@ index caac482fff2f..d3d59612ea93 100644 if (err) goto err_out_driver; diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index 008053039875..f948a5c96006 100644 +index 008053039875a..f948a5c96006b 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -5845,6 +5845,13 @@ static void hub_event(struct work_struct *work) @@ -1499,7 +1499,7 @@ index 008053039875..f948a5c96006 100644 * disconnected while waiting for the lock to succeed. */ usb_lock_device(hdev); diff --git a/include/linux/crypto.h b/include/linux/crypto.h -index b164da5e129e..59021b8609a7 100644 +index b164da5e129e8..59021b8609a70 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h @@ -133,6 +133,7 @@ @@ -1511,7 +1511,7 @@ index b164da5e129e..59021b8609a7 100644 /* * Miscellaneous stuff. diff --git a/include/linux/efi.h b/include/linux/efi.h -index d59b0947fba0..8b1e2e71d485 100644 +index d59b0947fba08..8b1e2e71d4858 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -45,6 +45,8 @@ struct screen_info; @@ -1579,7 +1579,7 @@ index d59b0947fba0..8b1e2e71d485 100644 enum efi_secureboot_mode efi_get_secureboot_mode(efi_get_variable_t *get_var) { diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h -index 334e00efbde4..5c962e31ffe5 100644 +index 334e00efbde45..5c962e31ffe57 100644 --- a/include/linux/lsm_hook_defs.h +++ b/include/linux/lsm_hook_defs.h @@ -436,6 +436,8 @@ LSM_HOOK(int, 0, bpf_token_capable, const struct bpf_token *token, int cap) @@ -1592,7 +1592,7 @@ index 334e00efbde4..5c962e31ffe5 100644 #ifdef CONFIG_PERF_EVENTS LSM_HOOK(int, 0, perf_event_open, struct perf_event_attr *attr, int type) diff --git a/include/linux/random.h b/include/linux/random.h -index b0a940af4fff..8a52424fd0d5 100644 +index b0a940af4fff5..8a52424fd0d50 100644 --- a/include/linux/random.h +++ b/include/linux/random.h @@ -9,6 +9,13 @@ @@ -1620,7 +1620,7 @@ index b0a940af4fff..8a52424fd0d5 100644 extern const struct file_operations random_fops, urandom_fops; #endif diff --git a/include/linux/rmi.h b/include/linux/rmi.h -index ab7eea01ab42..fff7c5f737fc 100644 +index ab7eea01ab427..fff7c5f737fc8 100644 --- a/include/linux/rmi.h +++ b/include/linux/rmi.h @@ -364,6 +364,7 @@ struct rmi_driver_data { @@ -1632,7 +1632,7 @@ index ab7eea01ab42..fff7c5f737fc 100644 int rmi_register_transport_device(struct rmi_transport_dev *xport); diff --git a/include/linux/security.h b/include/linux/security.h -index 41a8f667bdfa..e2aebf520337 100644 +index 41a8f667bdfa0..e2aebf520337e 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -507,6 +507,7 @@ int security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen); @@ -1655,7 +1655,7 @@ index 41a8f667bdfa..e2aebf520337 100644 u32 *uctx_len, void *val, size_t val_len, u64 id, u64 flags) diff --git a/kernel/module/signing.c b/kernel/module/signing.c -index a2ff4242e623..f0d2be1ee4f1 100644 +index a2ff4242e623d..f0d2be1ee4f1c 100644 --- a/kernel/module/signing.c +++ b/kernel/module/signing.c @@ -61,10 +61,17 @@ int mod_verify_sig(const void *mod, struct load_info *info) @@ -1678,7 +1678,7 @@ index a2ff4242e623..f0d2be1ee4f1 100644 int module_sig_check(struct load_info *info, int flags) diff --git a/scripts/tags.sh b/scripts/tags.sh -index 191e0461d6d5..e6f418b3e948 100755 +index 191e0461d6d5b..e6f418b3e948b 100755 --- a/scripts/tags.sh +++ b/scripts/tags.sh @@ -16,6 +16,8 @@ fi @@ -1691,7 +1691,7 @@ index 191e0461d6d5..e6f418b3e948 100755 # ignore arbitrary directories if [ -n "${IGNORE_DIRS}" ]; then diff --git a/security/integrity/platform_certs/load_uefi.c b/security/integrity/platform_certs/load_uefi.c -index d1fdd113450a..182e8090cfe8 100644 +index d1fdd113450a6..182e8090cfe85 100644 --- a/security/integrity/platform_certs/load_uefi.c +++ b/security/integrity/platform_certs/load_uefi.c @@ -74,7 +74,8 @@ static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid, @@ -1715,7 +1715,7 @@ index d1fdd113450a..182e8090cfe8 100644 } diff --git a/security/lockdown/Kconfig b/security/lockdown/Kconfig -index e84ddf484010..d0501353a4b9 100644 +index e84ddf4840101..d0501353a4b95 100644 --- a/security/lockdown/Kconfig +++ b/security/lockdown/Kconfig @@ -16,6 +16,19 @@ config SECURITY_LOCKDOWN_LSM_EARLY @@ -1739,7 +1739,7 @@ index e84ddf484010..d0501353a4b9 100644 prompt "Kernel default lockdown mode" default LOCK_DOWN_KERNEL_FORCE_NONE diff --git a/security/lockdown/lockdown.c b/security/lockdown/lockdown.c -index cd84d8ea1dfb..e4c70a0312bc 100644 +index cd84d8ea1dfbf..e4c70a0312bc8 100644 --- a/security/lockdown/lockdown.c +++ b/security/lockdown/lockdown.c @@ -74,6 +74,7 @@ static int lockdown_is_locked_down(enum lockdown_reason what) @@ -1751,7 +1751,7 @@ index cd84d8ea1dfb..e4c70a0312bc 100644 const struct lsm_id lockdown_lsmid = { diff --git a/security/security.c b/security/security.c -index 0a9a0ac3f266..a5cfc42f7c33 100644 +index 0a9a0ac3f2662..a5cfc42f7c331 100644 --- a/security/security.c +++ b/security/security.c @@ -5567,6 +5567,18 @@ int security_locked_down(enum lockdown_reason what) diff --git a/SPECS/kernel.spec b/SPECS/kernel.spec index 650b36b..78b8bf0 100644 --- a/SPECS/kernel.spec +++ b/SPECS/kernel.spec @@ -160,18 +160,18 @@ Summary: The Linux kernel # the --with-release option overrides this setting.) %define debugbuildsenabled 1 %define buildid .fsync -%define specrpmversion 6.9.5 -%define specversion 6.9.5 +%define specrpmversion 6.9.6 +%define specversion 6.9.6 %define patchversion 6.9 %define pkgrelease 200 %define kversion 6 -%define tarfile_release 6.9.5 +%define tarfile_release 6.9.6 # This is needed to do merge window version magic %define patchlevel 9 # This allows pkg_release to have configurable %%{?dist} tag %define specrelease 201%{?buildid}%{?dist} # This defines the kabi tarball version -%define kabiversion 6.9.5 +%define kabiversion 6.9.6 # If this variable is set to 1, a bpf selftests build failure will cause a # fatal kernel package build error @@ -4098,8 +4098,11 @@ fi\ # # %changelog -* Sat Jun 22 2024 Jan200101 <sentrycraft123@gmail.com> - 6.9.5-201.fsync -- kernel-fsync v6.9.5 +* Sat Jun 22 2024 Jan200101 <sentrycraft123@gmail.com> - 6.9.6-201.fsync +- kernel-fsync v6.9.6 + +* Fri Jun 21 2024 Augusto Caringi <acaringi@redhat.com> [6.9.6-0] +- Linux v6.9.6 * Sun Jun 16 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.9.5-0] - Linux v6.9.5 |