aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SOURCES/0001-amd-pstate.patch304
-rw-r--r--SOURCES/kernel.changelog4
-rw-r--r--SOURCES/patch-6.9-redhat.patch78
-rw-r--r--SPECS/kernel.spec15
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