From: Greg Kroah-Hartman Date: Mon, 28 Oct 2024 05:58:25 +0000 (+0100) Subject: 6.11-stable patches X-Git-Tag: v5.15.170~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a9bf68d6833b91c9301e6bab34c91b04ddae77d5;p=thirdparty%2Fkernel%2Fstable-queue.git 6.11-stable patches added patches: perf-x86-rapl-fix-the-energy-pkg-event-for-amd-cpus.patch x86-amd_nb-add-new-pci-id-for-amd-family-1ah-model-20h.patch x86-amd_nb-add-new-pci-ids-for-amd-family-1ah-model-60h-70h.patch --- diff --git a/queue-6.11/btrfs-fix-passing-0-to-err_ptr-in-btrfs_search_dir_index_item.patch b/queue-6.11/btrfs-fix-passing-0-to-err_ptr-in-btrfs_search_dir_index_item.patch index e29d2c75d42..f98c99961ac 100644 --- a/queue-6.11/btrfs-fix-passing-0-to-err_ptr-in-btrfs_search_dir_index_item.patch +++ b/queue-6.11/btrfs-fix-passing-0-to-err_ptr-in-btrfs_search_dir_index_item.patch @@ -43,7 +43,7 @@ Signed-off-by: Greg Kroah-Hartman } --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c -@@ -4344,11 +4344,8 @@ static int btrfs_unlink_subvol(struct bt +@@ -4339,11 +4339,8 @@ static int btrfs_unlink_subvol(struct bt */ if (btrfs_ino(inode) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID) { di = btrfs_search_dir_index_item(root, path, dir_ino, &fname.disk_name); diff --git a/queue-6.11/perf-x86-rapl-fix-the-energy-pkg-event-for-amd-cpus.patch b/queue-6.11/perf-x86-rapl-fix-the-energy-pkg-event-for-amd-cpus.patch new file mode 100644 index 00000000000..885314ddb1e --- /dev/null +++ b/queue-6.11/perf-x86-rapl-fix-the-energy-pkg-event-for-amd-cpus.patch @@ -0,0 +1,148 @@ +From 8d72eba1cf8cecd76a2b4c1dd7673c2dc775f514 Mon Sep 17 00:00:00 2001 +From: Dhananjay Ugwekar +Date: Tue, 30 Jul 2024 04:49:18 +0000 +Subject: perf/x86/rapl: Fix the energy-pkg event for AMD CPUs + +From: Dhananjay Ugwekar + +commit 8d72eba1cf8cecd76a2b4c1dd7673c2dc775f514 upstream. + +After commit: + + 63edbaa48a57 ("x86/cpu/topology: Add support for the AMD 0x80000026 leaf") + +... on AMD processors that support extended CPUID leaf 0x80000026, the +topology_die_cpumask() and topology_logical_die_id() macros no longer +return the package cpumask and package ID, instead they return the CCD +(Core Complex Die) mask and ID respectively. + +This leads to the energy-pkg event scope to be modified to CCD instead of package. + +So, change the PMU scope for AMD and Hygon back to package. + +On a 12 CCD 1 Package AMD Zen4 Genoa machine: + + Before: + + $ cat /sys/devices/power/cpumask + 0,8,16,24,32,40,48,56,64,72,80,88. + +The expected cpumask here is supposed to be just "0", as it is a package +scope event, only one CPU will be collecting the event for all the CPUs in +the package. + + After: + + $ cat /sys/devices/power/cpumask + 0 + +[ mingo: Cleaned up the changelog ] + +Signed-off-by: Dhananjay Ugwekar +Signed-off-by: Ingo Molnar +Reviewed-by: Kan Liang +Link: https://lore.kernel.org/r/20240904100934.3260-1-Dhananjay.Ugwekar@amd.com +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/events/rapl.c | 47 ++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 42 insertions(+), 5 deletions(-) + +--- a/arch/x86/events/rapl.c ++++ b/arch/x86/events/rapl.c +@@ -103,6 +103,19 @@ static struct perf_pmu_events_attr event + .event_str = str, \ + }; + ++/* ++ * RAPL Package energy counter scope: ++ * 1. AMD/HYGON platforms have a per-PKG package energy counter ++ * 2. For Intel platforms ++ * 2.1. CLX-AP is multi-die and its RAPL MSRs are die-scope ++ * 2.2. Other Intel platforms are single die systems so the scope can be ++ * considered as either pkg-scope or die-scope, and we are considering ++ * them as die-scope. ++ */ ++#define rapl_pmu_is_pkg_scope() \ ++ (boot_cpu_data.x86_vendor == X86_VENDOR_AMD || \ ++ boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) ++ + struct rapl_pmu { + raw_spinlock_t lock; + int n_active; +@@ -140,9 +153,25 @@ static unsigned int rapl_cntr_mask; + static u64 rapl_timer_ms; + static struct perf_msr *rapl_msrs; + ++/* ++ * Helper functions to get the correct topology macros according to the ++ * RAPL PMU scope. ++ */ ++static inline unsigned int get_rapl_pmu_idx(int cpu) ++{ ++ return rapl_pmu_is_pkg_scope() ? topology_logical_package_id(cpu) : ++ topology_logical_die_id(cpu); ++} ++ ++static inline const struct cpumask *get_rapl_pmu_cpumask(int cpu) ++{ ++ return rapl_pmu_is_pkg_scope() ? topology_core_cpumask(cpu) : ++ topology_die_cpumask(cpu); ++} ++ + static inline struct rapl_pmu *cpu_to_rapl_pmu(unsigned int cpu) + { +- unsigned int rapl_pmu_idx = topology_logical_die_id(cpu); ++ unsigned int rapl_pmu_idx = get_rapl_pmu_idx(cpu); + + /* + * The unsigned check also catches the '-1' return value for non +@@ -552,7 +581,7 @@ static int rapl_cpu_offline(unsigned int + + pmu->cpu = -1; + /* Find a new cpu to collect rapl events */ +- target = cpumask_any_but(topology_die_cpumask(cpu), cpu); ++ target = cpumask_any_but(get_rapl_pmu_cpumask(cpu), cpu); + + /* Migrate rapl events to the new target */ + if (target < nr_cpu_ids) { +@@ -565,6 +594,11 @@ static int rapl_cpu_offline(unsigned int + + static int rapl_cpu_online(unsigned int cpu) + { ++ s32 rapl_pmu_idx = get_rapl_pmu_idx(cpu); ++ if (rapl_pmu_idx < 0) { ++ pr_err("topology_logical_(package/die)_id() returned a negative value"); ++ return -EINVAL; ++ } + struct rapl_pmu *pmu = cpu_to_rapl_pmu(cpu); + int target; + +@@ -579,14 +613,14 @@ static int rapl_cpu_online(unsigned int + pmu->timer_interval = ms_to_ktime(rapl_timer_ms); + rapl_hrtimer_init(pmu); + +- rapl_pmus->pmus[topology_logical_die_id(cpu)] = pmu; ++ rapl_pmus->pmus[rapl_pmu_idx] = pmu; + } + + /* + * Check if there is an online cpu in the package which collects rapl + * events already. + */ +- target = cpumask_any_and(&rapl_cpu_mask, topology_die_cpumask(cpu)); ++ target = cpumask_any_and(&rapl_cpu_mask, get_rapl_pmu_cpumask(cpu)); + if (target < nr_cpu_ids) + return 0; + +@@ -675,7 +709,10 @@ static const struct attribute_group *rap + + static int __init init_rapl_pmus(void) + { +- int nr_rapl_pmu = topology_max_packages() * topology_max_dies_per_package(); ++ int nr_rapl_pmu = topology_max_packages(); ++ ++ if (!rapl_pmu_is_pkg_scope()) ++ nr_rapl_pmu *= topology_max_dies_per_package(); + + rapl_pmus = kzalloc(struct_size(rapl_pmus, pmus, nr_rapl_pmu), GFP_KERNEL); + if (!rapl_pmus) diff --git a/queue-6.11/series b/queue-6.11/series index 1df88ddf4f4..021a58207fd 100644 --- a/queue-6.11/series +++ b/queue-6.11/series @@ -124,7 +124,6 @@ asoc-amd-yc-add-quirk-for-hp-dragonfly-pro-one.patch asoc-codecs-lpass-rx-macro-add-missing-cdc_rx_bcl_vb.patch asoc-fsl_sai-enable-fifo-continue-on-error-fcont-bit.patch arm64-force-position-independent-veneers.patch -btrfs-also-add-stripe-entries-for-nocow-writes.patch udf-refactor-udf_current_aext-to-handle-error.patch udf-refactor-udf_next_aext-to-handle-error.patch udf-refactor-inode_bmap-to-handle-error.patch @@ -202,6 +201,9 @@ cpufreq-cppc-fix-perf_to_khz-khz_to_perf-conversion-.patch btrfs-qgroup-set-a-more-sane-default-value-for-subtree-drop-threshold.patch btrfs-clear-force-compress-on-remount-when-compress-mount-option-is-given.patch btrfs-fix-passing-0-to-err_ptr-in-btrfs_search_dir_index_item.patch +x86-amd_nb-add-new-pci-ids-for-amd-family-1ah-model-60h-70h.patch +x86-amd_nb-add-new-pci-id-for-amd-family-1ah-model-20h.patch +perf-x86-rapl-fix-the-energy-pkg-event-for-amd-cpus.patch btrfs-reject-ro-rw-reconfiguration-if-there-are-hard-ro-requirements.patch btrfs-zoned-fix-zone-unusable-accounting-for-freed-reserved-extent.patch btrfs-fix-read-corruption-due-to-race-with-extent-map-merging.patch diff --git a/queue-6.11/x86-amd_nb-add-new-pci-id-for-amd-family-1ah-model-20h.patch b/queue-6.11/x86-amd_nb-add-new-pci-id-for-amd-family-1ah-model-20h.patch new file mode 100644 index 00000000000..ec6bb58fb89 --- /dev/null +++ b/queue-6.11/x86-amd_nb-add-new-pci-id-for-amd-family-1ah-model-20h.patch @@ -0,0 +1,39 @@ +From f8bc84b6096f1ffa67252f0f88d86e77f6bbe348 Mon Sep 17 00:00:00 2001 +From: Richard Gong +Date: Fri, 13 Sep 2024 11:29:03 -0500 +Subject: x86/amd_nb: Add new PCI ID for AMD family 1Ah model 20h + +From: Richard Gong + +commit f8bc84b6096f1ffa67252f0f88d86e77f6bbe348 upstream. + +Add new PCI ID for Device 18h and Function 4. + +Signed-off-by: Richard Gong +Signed-off-by: Borislav Petkov (AMD) +Reviewed-by: Yazen Ghannam +Link: https://lore.kernel.org/r/20240913162903.649519-1-richard.gong@amd.com +Signed-off-by: Borislav Petkov (AMD) +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kernel/amd_nb.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/arch/x86/kernel/amd_nb.c ++++ b/arch/x86/kernel/amd_nb.c +@@ -44,6 +44,7 @@ + #define PCI_DEVICE_ID_AMD_19H_M70H_DF_F4 0x14f4 + #define PCI_DEVICE_ID_AMD_19H_M78H_DF_F4 0x12fc + #define PCI_DEVICE_ID_AMD_1AH_M00H_DF_F4 0x12c4 ++#define PCI_DEVICE_ID_AMD_1AH_M20H_DF_F4 0x16fc + #define PCI_DEVICE_ID_AMD_1AH_M60H_DF_F4 0x124c + #define PCI_DEVICE_ID_AMD_1AH_M70H_DF_F4 0x12bc + #define PCI_DEVICE_ID_AMD_MI200_DF_F4 0x14d4 +@@ -127,6 +128,7 @@ static const struct pci_device_id amd_nb + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M78H_DF_F4) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CNB17H_F4) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_DF_F4) }, ++ { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_DF_F4) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_DF_F4) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M70H_DF_F4) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_DF_F4) }, diff --git a/queue-6.11/x86-amd_nb-add-new-pci-ids-for-amd-family-1ah-model-60h-70h.patch b/queue-6.11/x86-amd_nb-add-new-pci-ids-for-amd-family-1ah-model-60h-70h.patch new file mode 100644 index 00000000000..c80bfc02d3e --- /dev/null +++ b/queue-6.11/x86-amd_nb-add-new-pci-ids-for-amd-family-1ah-model-60h-70h.patch @@ -0,0 +1,41 @@ +From 0f70fdd42559b4eed8f74bf7389656a8ae3eb5c3 Mon Sep 17 00:00:00 2001 +From: Richard Gong +Date: Mon, 19 Aug 2024 07:30:41 -0500 +Subject: x86/amd_nb: Add new PCI IDs for AMD family 1Ah model 60h-70h + +From: Richard Gong + +commit 0f70fdd42559b4eed8f74bf7389656a8ae3eb5c3 upstream. + +Add new PCI IDs for Device 18h and Function 4 to enable the amd_atl driver +on those systems. + +Signed-off-by: Richard Gong +Signed-off-by: Thomas Gleixner +Reviewed-by: Yazen Ghannam +Link: https://lore.kernel.org/all/20240819123041.915734-1-richard.gong@amd.com +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kernel/amd_nb.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/arch/x86/kernel/amd_nb.c ++++ b/arch/x86/kernel/amd_nb.c +@@ -44,6 +44,8 @@ + #define PCI_DEVICE_ID_AMD_19H_M70H_DF_F4 0x14f4 + #define PCI_DEVICE_ID_AMD_19H_M78H_DF_F4 0x12fc + #define PCI_DEVICE_ID_AMD_1AH_M00H_DF_F4 0x12c4 ++#define PCI_DEVICE_ID_AMD_1AH_M60H_DF_F4 0x124c ++#define PCI_DEVICE_ID_AMD_1AH_M70H_DF_F4 0x12bc + #define PCI_DEVICE_ID_AMD_MI200_DF_F4 0x14d4 + #define PCI_DEVICE_ID_AMD_MI300_DF_F4 0x152c + +@@ -125,6 +127,8 @@ static const struct pci_device_id amd_nb + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M78H_DF_F4) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CNB17H_F4) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_DF_F4) }, ++ { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_DF_F4) }, ++ { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M70H_DF_F4) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_DF_F4) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI300_DF_F4) }, + {}