diff --git a/config.yaml b/config.yaml index 5292fec..f2b1400 100644 --- a/config.yaml +++ b/config.yaml @@ -31,37 +31,35 @@ patches: - '6.10' - '6.11' - patch: openpax-6.10-20240913112548.patch - series: - - '6.10' + series: '6.10' flavors: - zone-openpax - patch: openpax-6.11.2-20241009165538.patch - series: - - '6.11' + series: '6.11' flavors: - zone-openpax - patch: 0001-x86-topology-Tolerate-lack-of-APIC-when-booting-as-X_01.patch lower: '6.10' upper: '6.12.4' -- patch: 0001-x86-topology-Tolerate-lack-of-APIC-when-booting-as-X_01.patch - lower: '6.10' - upper: '6.12.4' - patch: 0001-x86-topology-Tolerate-lack-of-APIC-when-booting-as-X_02.patch lower: '6.12.5' -- patch: 9pfs-xen-hotplug-1.patch - lower: '6.3' - upper: '6.11.10' -- patch: 9pfs-xen-hotplug-2.patch - lower: '6.3' - upper: '6.11.10' -- patch: 9pfs-xen-hotplug-1.patch - series: - - '6.12' - upper: '6.12.1' -- patch: 9pfs-xen-hotplug-2.patch - series: - - '6.12' - upper: '6.12.1' +- patches: + - 9pfs-xen-hotplug-1.patch + - 9pfs-xen-hotplug-2.patch + any: + - series: '6.6' + upper: '6.6.63' + - series: '6.12' + upper: '6.12.1' +- patch: 0001-x86-static-call-Remove-early_boot_irqs_disabled-check.patch + any: + - series: '5.15' + lower: '5.15.175' + - series: '6.1' + lower: '6.1.121' + - series: '6.6' + lower: '6.6.67' + - lower: '6.12.6' images: - target: kernelsrc name: kernel-src diff --git a/hack/build/patchlist.py b/hack/build/patchlist.py index 10c3906..e9e9b9d 100644 --- a/hack/build/patchlist.py +++ b/hack/build/patchlist.py @@ -3,7 +3,7 @@ from packaging.version import parse from matrix import CONFIG -from util import matches_constraints +from util import matches_constraints, maybe if len(sys.argv) != 3: print("Usage: patchlist ") @@ -19,15 +19,11 @@ apply_patches = [] -def maybe(m: dict[any, any], k: any) -> any: - if k in m: - return m[k] - else: - return None - - for patch in patches: - file_name = patch["patch"] + if "patch" in patch: + file_names = [patch["patch"]] + else: + file_names = patch["patches"] order = maybe(patch, "order") if order is None: @@ -36,12 +32,13 @@ def maybe(m: dict[any, any], k: any) -> any: apply = matches_constraints(target_version, kernel_flavor, patch) if apply: - apply_patches.append( - { - "patch": file_name, - "order": order, - } - ) + for file_name in file_names: + apply_patches.append( + { + "patch": file_name, + "order": order, + } + ) apply_patches.sort(key=lambda p: p["order"]) diff --git a/hack/build/util.py b/hack/build/util.py index afce4fb..17d2dcc 100644 --- a/hack/build/util.py +++ b/hack/build/util.py @@ -26,10 +26,15 @@ def maybe(m: dict[str, any], k: str, default_value: any = None) -> any: else: return default_value - def matches_constraints( version: Version, flavor: str, constraints: dict[str, any], is_current_release=None ) -> bool: + if "any" in constraints: + for constraint in constraints["any"]: + if matches_constraints(version, flavor, constraint, is_current_release=is_current_release): + return True + return False + major_minor_series = "%s.%s" % (version.major, version.minor) major_series = str(version.major) @@ -65,6 +70,9 @@ def matches_constraints( if version < lower or version > upper: applies = False + if type(only_series) is str: + only_series = [only_series] + if only_series is not None and ( (major_minor_series not in only_series) and (major_series not in only_series) ): diff --git a/patches/0001-x86-static-call-Remove-early_boot_irqs_disabled-check.patch b/patches/0001-x86-static-call-Remove-early_boot_irqs_disabled-check.patch new file mode 100644 index 0000000..44989f5 --- /dev/null +++ b/patches/0001-x86-static-call-Remove-early_boot_irqs_disabled-check.patch @@ -0,0 +1,41 @@ +From a813654c781e10d906c5259d7b13bcd5237f05e6 Mon Sep 17 00:00:00 2001 +From: Andrew Cooper +Date: Thu, 26 Dec 2024 14:58:49 -0500 +Subject: [PATCH] x86/static-call: Remove early_boot_irqs_disabled check to fix + Xen PVH dom0 + +__static_call_update_early() has a check for early_boot_irqs_disabled, but +is used before early_boot_irqs_disabled is set up in start_kernel(). + +Xen PV has always special cased early_boot_irqs_disabled, but Xen PVH does +not and falls over the BUG when booting as dom0. + +It is very suspect that early_boot_irqs_disabled starts as 0, becomes 1 for +a time, then becomes 0 again, but as this needs backporting to fix a +breakage in a security fix, dropping the BUG_ON() is the far safer option. + +Fixes: 0ef8047b737d ("x86/static-call: provide a way to do very early static-call updates") +Reported-by: Alex Zenla +Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219620 +Suggested-by: Peter Zijlstra +Tested-by: Alex Zenla +Signed-off-by: Andrew Cooper +--- + arch/x86/kernel/static_call.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/arch/x86/kernel/static_call.c b/arch/x86/kernel/static_call.c +index 9eed0c144dad..9e51242ed125 100644 +--- a/arch/x86/kernel/static_call.c ++++ b/arch/x86/kernel/static_call.c +@@ -175,7 +175,6 @@ EXPORT_SYMBOL_GPL(arch_static_call_transform); + noinstr void __static_call_update_early(void *tramp, void *func) + { + BUG_ON(system_state != SYSTEM_BOOTING); +- BUG_ON(!early_boot_irqs_disabled); + BUG_ON(static_call_initialized); + __text_gen_insn(tramp, JMP32_INSN_OPCODE, tramp, func, JMP32_INSN_SIZE); + sync_core(); +-- +2.47.1 +