aboutsummaryrefslogtreecommitdiff
path: root/SOURCES/tkg-misc-additions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'SOURCES/tkg-misc-additions.patch')
-rw-r--r--SOURCES/tkg-misc-additions.patch216
1 files changed, 0 insertions, 216 deletions
diff --git a/SOURCES/tkg-misc-additions.patch b/SOURCES/tkg-misc-additions.patch
index c6065b8..006fa31 100644
--- a/SOURCES/tkg-misc-additions.patch
+++ b/SOURCES/tkg-misc-additions.patch
@@ -54,219 +54,3 @@ index a54663f2e2ab9f..7ffad3eb0a0150 100644
case IP_VERSION(13, 0, 14):
case IP_VERSION(11, 0, 7):
case IP_VERSION(11, 0, 11):
-From 5863404999cd2cada56e454b1b3a33c43b3c0806 Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx@linutronix.de>
-Date: Sun, 28 Jul 2024 13:06:10 +0200
-Subject: [PATCH] x86/apic: Remove logical destination mode for 64-bit
-
-Logical destination mode of the local APIC is used for systems with up to
-8 CPUs. It has an advantage over physical destination mode as it allows to
-target multiple CPUs at once with IPIs.
-
-That advantage was definitely worth it when systems with up to 8 CPUs
-were state of the art for servers and workstations, but that's history.
-
-Aside of that there are systems which fail to work with logical destination
-mode as the ACPI/DMI quirks show and there are AMD Zen1 systems out there
-which fail when interrupt remapping is enabled. The latter can be cured by
-firmware updates, but not all OEMs distribute the required changes.
-
-Physical destination mode is guaranteed to work because it is the only way
-to get a CPU up and running via the INIT/INIT/STARTUP sequence.
-
-As the number of CPUs keeps increasing, logical destination mode becomes a
-less used code path so there is no real good reason to keep it around.
-
-Therefore remove logical destination mode support for 64-bit and default to
-physical destination mode.
-
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Cherry-picked-for: https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/issues/64
----
- arch/x86/include/asm/apic.h | 8 --
- arch/x86/kernel/apic/apic_flat_64.c | 119 ++--------------------------
- 2 files changed, 7 insertions(+), 120 deletions(-)
-
-diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
-index 9327eb00e96d09..be2045a18e69b9 100644
---- a/arch/x86/include/asm/apic.h
-+++ b/arch/x86/include/asm/apic.h
-@@ -345,20 +345,12 @@ extern struct apic *apic;
- * APIC drivers are probed based on how they are listed in the .apicdrivers
- * section. So the order is important and enforced by the ordering
- * of different apic driver files in the Makefile.
-- *
-- * For the files having two apic drivers, we use apic_drivers()
-- * to enforce the order with in them.
- */
- #define apic_driver(sym) \
- static const struct apic *__apicdrivers_##sym __used \
- __aligned(sizeof(struct apic *)) \
- __section(".apicdrivers") = { &sym }
-
--#define apic_drivers(sym1, sym2) \
-- static struct apic *__apicdrivers_##sym1##sym2[2] __used \
-- __aligned(sizeof(struct apic *)) \
-- __section(".apicdrivers") = { &sym1, &sym2 }
--
- extern struct apic *__apicdrivers[], *__apicdrivers_end[];
-
- /*
-diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c
-index f37ad3392fec91..e0308d8c4e6c27 100644
---- a/arch/x86/kernel/apic/apic_flat_64.c
-+++ b/arch/x86/kernel/apic/apic_flat_64.c
-@@ -8,129 +8,25 @@
- * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and
- * James Cleverdon.
- */
--#include <linux/cpumask.h>
- #include <linux/export.h>
--#include <linux/acpi.h>
-
--#include <asm/jailhouse_para.h>
- #include <asm/apic.h>
-
- #include "local.h"
-
--static struct apic apic_physflat;
--static struct apic apic_flat;
--
--struct apic *apic __ro_after_init = &apic_flat;
--EXPORT_SYMBOL_GPL(apic);
--
--static int flat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
--{
-- return 1;
--}
--
--static void _flat_send_IPI_mask(unsigned long mask, int vector)
--{
-- unsigned long flags;
--
-- local_irq_save(flags);
-- __default_send_IPI_dest_field(mask, vector, APIC_DEST_LOGICAL);
-- local_irq_restore(flags);
--}
--
--static void flat_send_IPI_mask(const struct cpumask *cpumask, int vector)
--{
-- unsigned long mask = cpumask_bits(cpumask)[0];
--
-- _flat_send_IPI_mask(mask, vector);
--}
--
--static void
--flat_send_IPI_mask_allbutself(const struct cpumask *cpumask, int vector)
--{
-- unsigned long mask = cpumask_bits(cpumask)[0];
-- int cpu = smp_processor_id();
--
-- if (cpu < BITS_PER_LONG)
-- __clear_bit(cpu, &mask);
--
-- _flat_send_IPI_mask(mask, vector);
--}
--
--static u32 flat_get_apic_id(u32 x)
-+static u32 physflat_get_apic_id(u32 x)
- {
- return (x >> 24) & 0xFF;
- }
-
--static int flat_probe(void)
-+static int physflat_probe(void)
- {
- return 1;
- }
-
--static struct apic apic_flat __ro_after_init = {
-- .name = "flat",
-- .probe = flat_probe,
-- .acpi_madt_oem_check = flat_acpi_madt_oem_check,
--
-- .dest_mode_logical = true,
--
-- .disable_esr = 0,
--
-- .init_apic_ldr = default_init_apic_ldr,
-- .cpu_present_to_apicid = default_cpu_present_to_apicid,
--
-- .max_apic_id = 0xFE,
-- .get_apic_id = flat_get_apic_id,
--
-- .calc_dest_apicid = apic_flat_calc_apicid,
--
-- .send_IPI = default_send_IPI_single,
-- .send_IPI_mask = flat_send_IPI_mask,
-- .send_IPI_mask_allbutself = flat_send_IPI_mask_allbutself,
-- .send_IPI_allbutself = default_send_IPI_allbutself,
-- .send_IPI_all = default_send_IPI_all,
-- .send_IPI_self = default_send_IPI_self,
-- .nmi_to_offline_cpu = true,
--
-- .read = native_apic_mem_read,
-- .write = native_apic_mem_write,
-- .eoi = native_apic_mem_eoi,
-- .icr_read = native_apic_icr_read,
-- .icr_write = native_apic_icr_write,
-- .wait_icr_idle = apic_mem_wait_icr_idle,
-- .safe_wait_icr_idle = apic_mem_wait_icr_idle_timeout,
--};
--
--/*
-- * Physflat mode is used when there are more than 8 CPUs on a system.
-- * We cannot use logical delivery in this case because the mask
-- * overflows, so use physical mode.
-- */
- static int physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
- {
--#ifdef CONFIG_ACPI
-- /*
-- * Quirk: some x86_64 machines can only use physical APIC mode
-- * regardless of how many processors are present (x86_64 ES7000
-- * is an example).
-- */
-- if (acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID &&
-- (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL)) {
-- printk(KERN_DEBUG "system APIC only can use physical flat");
-- return 1;
-- }
--
-- if (!strncmp(oem_id, "IBM", 3) && !strncmp(oem_table_id, "EXA", 3)) {
-- printk(KERN_DEBUG "IBM Summit detected, will use apic physical");
-- return 1;
-- }
--#endif
--
-- return 0;
--}
--
--static int physflat_probe(void)
--{
-- return apic == &apic_physflat || num_possible_cpus() > 8 || jailhouse_paravirt();
-+ return 1;
- }
-
- static struct apic apic_physflat __ro_after_init = {
-@@ -146,7 +42,7 @@ static struct apic apic_physflat __ro_after_init = {
- .cpu_present_to_apicid = default_cpu_present_to_apicid,
-
- .max_apic_id = 0xFE,
-- .get_apic_id = flat_get_apic_id,
-+ .get_apic_id = physflat_get_apic_id,
-
- .calc_dest_apicid = apic_default_calc_apicid,
-
-@@ -166,8 +62,7 @@ static struct apic apic_physflat __ro_after_init = {
- .wait_icr_idle = apic_mem_wait_icr_idle,
- .safe_wait_icr_idle = apic_mem_wait_icr_idle_timeout,
- };
-+apic_driver(apic_physflat);
-
--/*
-- * We need to check for physflat first, so this order is important.
-- */
--apic_drivers(apic_physflat, apic_flat);
-+struct apic *apic __ro_after_init = &apic_physflat;
-+EXPORT_SYMBOL_GPL(apic);