diff options
20 files changed, 510 insertions, 246 deletions
diff --git a/libre/linux-libre/0001-CHROMIUM-block-partitions-efi-Add-support-for-IGNORE.patch b/libre/linux-libre/0001-CHROMIUM-block-partitions-efi-Add-support-for-IGNORE.patch new file mode 100644 index 000000000..46ebe72ea --- /dev/null +++ b/libre/linux-libre/0001-CHROMIUM-block-partitions-efi-Add-support-for-IGNORE.patch @@ -0,0 +1,139 @@ +From 2b4a8bfd9379fd9431d517e4db20c57468ecf3e6 Mon Sep 17 00:00:00 2001 +From: Julius Werner <jwerner@chromium.org> +Date: Wed, 20 Apr 2016 15:20:00 -0700 +Subject: [PATCH] CHROMIUM: block: partitions: efi: Add support for IGNOREME + GPT signature + +This patch adds support for a special GPT header signature marker (using +the string 'IGNOREME' instead of the spec's 'EFI PART'). This tells the +kernel to ignore this GPT completely and look at the other one instead. +Since the kernel always prefers the primary GPT anyway, all we really +need to do effectively is to check whether the primary GPT is marked +'IGNOREME' and force evaluation of the secondary one in that case. + +Signed-off-by: Julius Werner <jwerner@chromium.org> +Reviewed-on: https://chromium-review.googlesource.com/340080 +Reviewed-by: Gwendal Grignou <gwendal@chromium.org> + +An earlier attempt to upstream an alternative solution: +https://patchwork.kernel.org/patch/8933841/ + +mka@: added missing param 'lba' to log message and resolved minor +conflicts. + +BUG=chromium:941638, chrome-os-partner:52595 +TEST=Booted on Minnie with 'IGNOREME' primary GPT + +Change-Id: Ibaee639fac9fa2f04b8836ef153c95b7d0b045a4 +Signed-off-by: Matthias Kaehlcke <mka@chromium.org> +Reviewed-on: https://chromium-review.googlesource.com/1531701 +Reviewed-by: Douglas Anderson <dianders@chromium.org> +Reviewed-by: Julius Werner <jwerner@chromium.org> +--- + block/partitions/efi.c | 31 ++++++++++++++++++++++--------- + block/partitions/efi.h | 3 ++- + 2 files changed, 24 insertions(+), 10 deletions(-) + +diff --git a/block/partitions/efi.c b/block/partitions/efi.c +index db2fef7dfc47..90103e0471c4 100644 +--- a/block/partitions/efi.c ++++ b/block/partitions/efi.c +@@ -330,23 +330,33 @@ static gpt_header *alloc_read_gpt_header(struct parsed_partitions *state, + * @lba: logical block address of the GPT header to test + * @gpt: GPT header ptr, filled on return. + * @ptes: PTEs ptr, filled on return. ++ * @ignored is filled on return with 1 if this is an IGNOREME GPT, ++ * 0 otherwise. May be NULL. + * + * Description: returns 1 if valid, 0 on error. + * If valid, returns pointers to newly allocated GPT header and PTEs. + */ + static int is_gpt_valid(struct parsed_partitions *state, u64 lba, +- gpt_header **gpt, gpt_entry **ptes) ++ gpt_header **gpt, gpt_entry **ptes, int *ignored) + { + u32 crc, origcrc; + u64 lastlba, pt_size; + ++ if (ignored) ++ *ignored = 0; + if (!ptes) + return 0; + if (!(*gpt = alloc_read_gpt_header(state, lba))) + return 0; + + /* Check the GUID Partition Table signature */ +- if (le64_to_cpu((*gpt)->signature) != GPT_HEADER_SIGNATURE) { ++ if (le64_to_cpu((*gpt)->signature) == GPT_HEADER_SIGNATURE_IGNORED) { ++ pr_debug("GUID Partition Table at LBA %llu marked IGNOREME\n", ++ lba); ++ if (ignored) ++ *ignored = 1; ++ goto fail; ++ } else if (le64_to_cpu((*gpt)->signature) != GPT_HEADER_SIGNATURE) { + pr_debug("GUID Partition Table Header signature is wrong:" + "%lld != %lld\n", + (unsigned long long)le64_to_cpu((*gpt)->signature), +@@ -583,7 +593,7 @@ compare_gpts(gpt_header *pgpt, gpt_header *agpt, u64 lastlba) + static int find_valid_gpt(struct parsed_partitions *state, gpt_header **gpt, + gpt_entry **ptes) + { +- int good_pgpt = 0, good_agpt = 0, good_pmbr = 0; ++ int good_pgpt = 0, good_agpt = 0, good_pmbr = 0, pgpt_ignored = 0; + gpt_header *pgpt = NULL, *agpt = NULL; + gpt_entry *pptes = NULL, *aptes = NULL; + legacy_mbr *legacymbr; +@@ -613,19 +623,21 @@ static int find_valid_gpt(struct parsed_partitions *state, gpt_header **gpt, + } + + good_pgpt = is_gpt_valid(state, GPT_PRIMARY_PARTITION_TABLE_LBA, +- &pgpt, &pptes); ++ &pgpt, &pptes, &pgpt_ignored); + if (good_pgpt) + good_agpt = is_gpt_valid(state, + le64_to_cpu(pgpt->alternate_lba), +- &agpt, &aptes); +- if (!good_agpt && force_gpt) +- good_agpt = is_gpt_valid(state, lastlba, &agpt, &aptes); ++ &agpt, &aptes, NULL); ++ ++ if (!good_agpt && (force_gpt || pgpt_ignored)) ++ good_agpt = is_gpt_valid(state, lastlba, &agpt, &aptes, NULL); + + /* The obviously unsuccessful case */ + if (!good_pgpt && !good_agpt) + goto fail; + +- compare_gpts(pgpt, agpt, lastlba); ++ if (!pgpt_ignored) ++ compare_gpts(pgpt, agpt, lastlba); + + /* The good cases */ + if (good_pgpt) { +@@ -642,7 +654,8 @@ static int find_valid_gpt(struct parsed_partitions *state, gpt_header **gpt, + *ptes = aptes; + kfree(pgpt); + kfree(pptes); +- pr_warn("Primary GPT is invalid, using alternate GPT.\n"); ++ pr_warn("Primary GPT is %s, using alternate GPT.\n", ++ pgpt_ignored ? "being ignored" : "invalid"); + return 1; + } + +diff --git a/block/partitions/efi.h b/block/partitions/efi.h +index 3e8576157575..260c24c54750 100644 +--- a/block/partitions/efi.h ++++ b/block/partitions/efi.h +@@ -27,7 +27,8 @@ + #define GPT_MBR_PROTECTIVE 1 + #define GPT_MBR_HYBRID 2 + +-#define GPT_HEADER_SIGNATURE 0x5452415020494645ULL ++#define GPT_HEADER_SIGNATURE 0x5452415020494645ULL /* 'EFI PART' */ ++#define GPT_HEADER_SIGNATURE_IGNORED 0x454d45524f4e4749ULL /* 'IGNOREME' */ + #define GPT_HEADER_REVISION_V1 0x00010000 + #define GPT_PRIMARY_PARTITION_TABLE_LBA 1 + +-- +2.25.0 + diff --git a/libre/linux-libre/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch b/libre/linux-libre/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch index ae31ff9b5..114fb76c1 100644 --- a/libre/linux-libre/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch +++ b/libre/linux-libre/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch @@ -1,7 +1,7 @@ -From 524202522faf86d81efaa96dc984d1996ddda302 Mon Sep 17 00:00:00 2001 +From a8d736bad70d4062a14c29bdcbed71bef7b575f5 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Mon, 16 Sep 2019 04:53:20 +0200 -Subject: [PATCH 01/13] ZEN: Add sysctl and CONFIG to disallow unprivileged +Subject: [PATCH 01/14] ZEN: Add sysctl and CONFIG to disallow unprivileged CLONE_NEWUSER Our default behavior continues to match the vanilla kernel. @@ -40,7 +40,7 @@ index b4daad2bac23..362f82c5ec07 100644 bool "PID Namespaces" default y diff --git a/kernel/fork.c b/kernel/fork.c -index 6cabc124378c..fda4986da9eb 100644 +index 755d8160e001..ed909f8050b2 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -106,6 +106,11 @@ @@ -66,7 +66,7 @@ index 6cabc124378c..fda4986da9eb 100644 /* * Thread groups must share signals as well, and detached threads * can only be started up within the thread group. -@@ -2826,6 +2835,12 @@ int ksys_unshare(unsigned long unshare_flags) +@@ -2836,6 +2845,12 @@ int ksys_unshare(unsigned long unshare_flags) if (unshare_flags & CLONE_NEWNS) unshare_flags |= CLONE_FS; @@ -128,5 +128,5 @@ index 8eadadc478f9..c36ecd19562c 100644 static DEFINE_MUTEX(userns_state_mutex); -- -2.24.1 +2.25.0 diff --git a/libre/linux-libre/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch b/libre/linux-libre/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch index cf03b7a6b..ab555f350 100644 --- a/libre/linux-libre/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch +++ b/libre/linux-libre/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch @@ -1,7 +1,7 @@ -From 54dd8abeea02e5ea426a83f0a924d874a9c6e617 Mon Sep 17 00:00:00 2001 +From 1e41b685fcac38c05219030acb033a42832f7459 Mon Sep 17 00:00:00 2001 From: Tuowen Zhao <ztuowen@gmail.com> Date: Wed, 16 Oct 2019 15:06:28 -0600 -Subject: [PATCH 02/13] lib: devres: add a helper function for ioremap_uc +Subject: [PATCH 02/14] lib: devres: add a helper function for ioremap_uc Implement a resource managed strongly uncachable ioremap function. @@ -75,5 +75,5 @@ index 6a0e9bd6524a..17624d35e82d 100644 * devm_ioremap_nocache - Managed ioremap_nocache() * @dev: Generic device to remap IO address for -- -2.24.1 +2.25.0 diff --git a/libre/linux-libre/0003-mfd-intel-lpss-Use-devm_ioremap_uc-for-MMIO.patch b/libre/linux-libre/0003-mfd-intel-lpss-Use-devm_ioremap_uc-for-MMIO.patch index ed715ad45..6cc8e24d4 100644 --- a/libre/linux-libre/0003-mfd-intel-lpss-Use-devm_ioremap_uc-for-MMIO.patch +++ b/libre/linux-libre/0003-mfd-intel-lpss-Use-devm_ioremap_uc-for-MMIO.patch @@ -1,7 +1,7 @@ -From 044bbe9ec44257ffb87b96b291636f5a854c3d14 Mon Sep 17 00:00:00 2001 +From 3f0415751d3c1456d314a46d9f28053c8c2a7afa Mon Sep 17 00:00:00 2001 From: Tuowen Zhao <ztuowen@gmail.com> Date: Wed, 16 Oct 2019 15:06:29 -0600 -Subject: [PATCH 03/13] mfd: intel-lpss: Use devm_ioremap_uc for MMIO +Subject: [PATCH 03/14] mfd: intel-lpss: Use devm_ioremap_uc for MMIO Some BIOS erroneously specifies write-combining BAR for intel-lpss-pci in MTRR. This will cause the system to hang during boot. If possible, @@ -44,5 +44,5 @@ index bfe4ff337581..b0f0781a6b9c 100644 if (!lpss->priv) return -ENOMEM; -- -2.24.1 +2.25.0 diff --git a/libre/linux-libre/0004-PCI-pciehp-Do-not-disable-interrupt-twice-on-suspend.patch b/libre/linux-libre/0004-PCI-pciehp-Do-not-disable-interrupt-twice-on-suspend.patch index 24a7c3d84..5a689f397 100644 --- a/libre/linux-libre/0004-PCI-pciehp-Do-not-disable-interrupt-twice-on-suspend.patch +++ b/libre/linux-libre/0004-PCI-pciehp-Do-not-disable-interrupt-twice-on-suspend.patch @@ -1,7 +1,7 @@ -From 0407fd310903c18882a7e0463930a71a46b61027 Mon Sep 17 00:00:00 2001 +From ea5b8c60cd739ed3166d8c0f0cba6df6f57d271f Mon Sep 17 00:00:00 2001 From: Mika Westerberg <mika.westerberg@linux.intel.com> Date: Tue, 29 Oct 2019 20:00:21 +0300 -Subject: [PATCH 04/13] PCI: pciehp: Do not disable interrupt twice on suspend +Subject: [PATCH 04/14] PCI: pciehp: Do not disable interrupt twice on suspend We try to keep PCIe hotplug ports runtime suspended when entering system suspend. Because the PCIe portdrv sets the DPM_FLAG_NEVER_SKIP flag, the PM @@ -95,5 +95,5 @@ index b3122c151b80..56daad828c9e 100644 #endif /* PM */ }; -- -2.24.1 +2.25.0 diff --git a/libre/linux-libre/0005-PCI-pciehp-Prevent-deadlock-on-disconnect.patch b/libre/linux-libre/0005-PCI-pciehp-Prevent-deadlock-on-disconnect.patch index 7d05b2578..aace8aacb 100644 --- a/libre/linux-libre/0005-PCI-pciehp-Prevent-deadlock-on-disconnect.patch +++ b/libre/linux-libre/0005-PCI-pciehp-Prevent-deadlock-on-disconnect.patch @@ -1,7 +1,7 @@ -From b9bebf4cde0cf46438b2a7ab1652172e8e16c33e Mon Sep 17 00:00:00 2001 +From 02dc4cbf4b169ff89a2380b178e07e20eb661d62 Mon Sep 17 00:00:00 2001 From: Mika Westerberg <mika.westerberg@linux.intel.com> Date: Tue, 29 Oct 2019 20:00:22 +0300 -Subject: [PATCH 05/13] PCI: pciehp: Prevent deadlock on disconnect +Subject: [PATCH 05/14] PCI: pciehp: Prevent deadlock on disconnect This addresses deadlocks in these common cases in hierarchies containing two switches: @@ -268,5 +268,5 @@ index 86d97f3112f0..a2a263764ef8 100644 int pciehp_query_power_fault(struct controller *ctrl) -- -2.24.1 +2.25.0 diff --git a/libre/linux-libre/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch b/libre/linux-libre/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch index 7b749ce70..744a09838 100644 --- a/libre/linux-libre/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch +++ b/libre/linux-libre/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch @@ -1,7 +1,7 @@ -From f74b67cce5f0c5c37b0c5cb0020a818f0594a743 Mon Sep 17 00:00:00 2001 +From b5ae067d036c7d621af4178bba61c8c6fa3c7850 Mon Sep 17 00:00:00 2001 From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com> Date: Thu, 28 Nov 2019 23:50:40 +0100 -Subject: [PATCH 06/13] ACPI: PM: s2idle: Rework ACPI events synchronization +Subject: [PATCH 06/14] ACPI: PM: s2idle: Rework ACPI events synchronization Note that the EC GPE processing need not be synchronized in acpi_s2idle_wake() after invoking acpi_ec_dispatch_gpe(), because @@ -74,5 +74,5 @@ index 2af937a8b1c5..6747a279621b 100644 acpi_enable_all_runtime_gpes(); -- -2.24.1 +2.25.0 diff --git a/libre/linux-libre/0007-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch b/libre/linux-libre/0007-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch index 3cab84dee..775af4764 100644 --- a/libre/linux-libre/0007-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch +++ b/libre/linux-libre/0007-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch @@ -1,7 +1,7 @@ -From 265dae4f5dac25c15272befa5eefb9b10906435f Mon Sep 17 00:00:00 2001 +From 6c245b6bc1a0c4979566dbd13edcb553919010d7 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Tue, 24 Dec 2019 05:18:47 +0100 -Subject: [PATCH 07/13] iwlwifi: pcie: restore support for Killer Qu C0 NICs +Subject: [PATCH 07/14] iwlwifi: pcie: restore support for Killer Qu C0 NICs Commit 809805a820c6 refactored the cfg mangling. Unfortunately, in this process the lines which picked the right cfg for Killer Qu C0 NICs after @@ -32,5 +32,5 @@ index b0b7eca1754e..de62a6dc4e73 100644 /* same thing for QuZ... */ -- -2.24.1 +2.25.0 diff --git a/libre/linux-libre/0009-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-s.patch b/libre/linux-libre/0008-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-s.patch index c876a8628..a1974ebb7 100644 --- a/libre/linux-libre/0009-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-s.patch +++ b/libre/linux-libre/0008-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-s.patch @@ -1,7 +1,7 @@ -From e0d783c7ee43a39dadeb96ac669c45f3a3192d96 Mon Sep 17 00:00:00 2001 +From ac55f63c14c1e7d0740c27d325e8abe40e2478b3 Mon Sep 17 00:00:00 2001 From: Kai Vehmanen <kai.vehmanen@linux.intel.com> Date: Fri, 20 Sep 2019 11:39:18 +0300 -Subject: [PATCH 09/13] drm/i915: save AUD_FREQ_CNTRL state at audio domain +Subject: [PATCH 08/14] drm/i915: save AUD_FREQ_CNTRL state at audio domain suspend When audio power domain is suspended, the display driver must @@ -70,10 +70,10 @@ index 89b6112bd66b..043ce1b47aeb 100644 struct { struct mutex mutex; diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h -index f8ee9aba3955..e1fe356463ec 100644 +index 7b6e68f082f8..a99ef18665f2 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h -@@ -9104,6 +9104,8 @@ enum { +@@ -9110,6 +9110,8 @@ enum { #define HSW_AUD_CHICKENBIT _MMIO(0x65f10) #define SKL_AUD_CODEC_WAKE_SIGNAL (1 << 15) @@ -83,5 +83,5 @@ index f8ee9aba3955..e1fe356463ec 100644 * HSW - ICL power wells * -- -2.24.1 +2.25.0 diff --git a/libre/linux-libre/0008-x86-intel-Disable-HPET-on-Intel-Ice-Lake-platforms.patch b/libre/linux-libre/0008-x86-intel-Disable-HPET-on-Intel-Ice-Lake-platforms.patch deleted file mode 100644 index f07c5886b..000000000 --- a/libre/linux-libre/0008-x86-intel-Disable-HPET-on-Intel-Ice-Lake-platforms.patch +++ /dev/null @@ -1,38 +0,0 @@ -From ddb94a8dbd9144d7b85f553cb4a85db2ba62374d Mon Sep 17 00:00:00 2001 -From: Kai-Heng Feng <kai.heng.feng@canonical.com> -Date: Fri, 29 Nov 2019 14:23:03 +0800 -Subject: [PATCH 08/13] x86/intel: Disable HPET on Intel Ice Lake platforms - -Like CFL and CFL-H, ICL SoC has skewed HPET timer once it hits PC10. -So let's disable HPET on ICL. - -Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> -Cc: Linus Torvalds <torvalds@linux-foundation.org> -Cc: Peter Zijlstra <peterz@infradead.org> -Cc: Thomas Gleixner <tglx@linutronix.de> -Cc: bp@alien8.de -Cc: feng.tang@intel.com -Cc: harry.pan@intel.com -Cc: hpa@zytor.com -Link: https://lkml.kernel.org/r/20191129062303.18982-2-kai.heng.feng@canonical.com -Signed-off-by: Ingo Molnar <mingo@kernel.org> ---- - arch/x86/kernel/early-quirks.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c -index 606711f5ebf8..2f9ec14be3b1 100644 ---- a/arch/x86/kernel/early-quirks.c -+++ b/arch/x86/kernel/early-quirks.c -@@ -714,6 +714,8 @@ static struct chipset early_qrk[] __initdata = { - PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, force_disable_hpet}, - { PCI_VENDOR_ID_INTEL, 0x3ec4, - PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, force_disable_hpet}, -+ { PCI_VENDOR_ID_INTEL, 0x8a12, -+ PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, force_disable_hpet}, - { PCI_VENDOR_ID_BROADCOM, 0x4331, - PCI_CLASS_NETWORK_OTHER, PCI_ANY_ID, 0, apple_airport_reset}, - {} --- -2.24.1 - diff --git a/libre/linux-libre/0010-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch b/libre/linux-libre/0009-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch index 952bb8d55..774a5140f 100644 --- a/libre/linux-libre/0010-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch +++ b/libre/linux-libre/0009-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch @@ -1,7 +1,7 @@ -From 3a8fe5edd1f716667d7f1ebd4f06bc808bf89a6d Mon Sep 17 00:00:00 2001 +From 77437dba84a29da0fdf62f9946416b6e53496b1d Mon Sep 17 00:00:00 2001 From: Kai Vehmanen <kai.vehmanen@linux.intel.com> Date: Thu, 3 Oct 2019 11:55:30 +0300 -Subject: [PATCH 10/13] drm/i915: Fix audio power up sequence for gen10+ +Subject: [PATCH 09/14] drm/i915: Fix audio power up sequence for gen10+ display On platfroms with gen10+ display, driver must set the enable bit of @@ -40,10 +40,10 @@ index 439bc0a93410..440b33762fef 100644 return ret; diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h -index e1fe356463ec..ccfea9c2b8bf 100644 +index a99ef18665f2..1dd7b6187780 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h -@@ -9105,6 +9105,8 @@ enum { +@@ -9111,6 +9111,8 @@ enum { #define SKL_AUD_CODEC_WAKE_SIGNAL (1 << 15) #define AUD_FREQ_CNTRL _MMIO(0x65900) @@ -53,5 +53,5 @@ index e1fe356463ec..ccfea9c2b8bf 100644 /* * HSW - ICL power wells -- -2.24.1 +2.25.0 diff --git a/libre/linux-libre/0011-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch b/libre/linux-libre/0010-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch index c1bc3c6e2..a5de71b1a 100644 --- a/libre/linux-libre/0011-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch +++ b/libre/linux-libre/0010-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch @@ -1,7 +1,7 @@ -From 66b90ad22d857944d9b8452f064ae48565a40063 Mon Sep 17 00:00:00 2001 +From 466961b7872771f84a86f2304197d303ed749925 Mon Sep 17 00:00:00 2001 From: Kai Vehmanen <kai.vehmanen@linux.intel.com> Date: Thu, 3 Oct 2019 11:55:31 +0300 -Subject: [PATCH 11/13] drm/i915: extend audio CDCLK>=2*BCLK constraint to more +Subject: [PATCH 10/14] drm/i915: extend audio CDCLK>=2*BCLK constraint to more platforms The CDCLK>=2*BCLK constraint applies to all generations since gen10. @@ -37,5 +37,5 @@ index 440b33762fef..05ef43b13d1c 100644 intel_display_power_put(dev_priv, POWER_DOMAIN_AUDIO, cookie); -- -2.24.1 +2.25.0 diff --git a/libre/linux-libre/0011-drm-i915-Limit-audio-CDCLK-2-BCLK-constraint-back-to.patch b/libre/linux-libre/0011-drm-i915-Limit-audio-CDCLK-2-BCLK-constraint-back-to.patch new file mode 100644 index 000000000..3b630cad4 --- /dev/null +++ b/libre/linux-libre/0011-drm-i915-Limit-audio-CDCLK-2-BCLK-constraint-back-to.patch @@ -0,0 +1,64 @@ +From 238026166679e618b3bad1c86b0e37a43303b6b0 Mon Sep 17 00:00:00 2001 +From: Kai Vehmanen <kai.vehmanen@linux.intel.com> +Date: Tue, 31 Dec 2019 16:00:07 +0200 +Subject: [PATCH 11/14] drm/i915: Limit audio CDCLK>=2*BCLK constraint back to + GLK only + +Revert changes done in commit f6ec9483091f ("drm/i915: extend audio +CDCLK>=2*BCLK constraint to more platforms"). Audio drivers +communicate with i915 over HDA bus multiple times during system +boot-up and each of these transactions result in matching +get_power/put_power calls to i915, and depending on the platform, +a modeset change causing visible flicker. + +GLK is the only platform with minimum CDCLK significantly lower +than BCLK, and thus for GLK setting a higher CDCLK is mandatory. + +For other platforms, minimum CDCLK is close but below 2*BCLK +(e.g. on ICL, CDCLK=176.4kHz with BCLK=96kHz). Spec-wise the constraint +should be set, but in practise no communication errors have been +reported and the downside if set is the flicker observed at boot-time. + +Revert to old behaviour until better mechanism to manage +probe-time clocks is available. + +The full CDCLK>=2*BCLK constraint is still enforced at pipe +enable time in intel_crtc_compute_min_cdclk(). + +Bugzilla: https://gitlab.freedesktop.org/drm/intel/issues/913 +Fixes: f6ec9483091f ("drm/i915: extend audio CDCLK>=2*BCLK constraint to more platforms") +Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> +Reviewed-by: Matt Roper <matthew.d.roper@intel.com> +Signed-off-by: Matt Roper <matthew.d.roper@intel.com> +Link: https://patchwork.freedesktop.org/patch/msgid/20191231140007.31728-1-kai.vehmanen@linux.intel.com +(cherry picked from commit 1ee48a61aa57dbdbc3cd2808d8b28df40d938e44) +Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> +--- + drivers/gpu/drm/i915/display/intel_audio.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c +index 05ef43b13d1c..0cf475f3063c 100644 +--- a/drivers/gpu/drm/i915/display/intel_audio.c ++++ b/drivers/gpu/drm/i915/display/intel_audio.c +@@ -858,7 +858,7 @@ static unsigned long i915_audio_component_get_power(struct device *kdev) + } + + /* Force CDCLK to 2*BCLK as long as we need audio powered. */ +- if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) ++ if (IS_GEMINILAKE(dev_priv)) + glk_force_audio_cdclk(dev_priv, true); + + if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) +@@ -877,7 +877,7 @@ static void i915_audio_component_put_power(struct device *kdev, + + /* Stop forcing CDCLK to 2*BCLK if no need for audio to be powered. */ + if (--dev_priv->audio_power_refcount == 0) +- if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) ++ if (IS_GEMINILAKE(dev_priv)) + glk_force_audio_cdclk(dev_priv, false); + + intel_display_power_put(dev_priv, POWER_DOMAIN_AUDIO, cookie); +-- +2.25.0 + diff --git a/libre/linux-libre/0012-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch b/libre/linux-libre/0012-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch deleted file mode 100644 index 7609d0b5f..000000000 --- a/libre/linux-libre/0012-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch +++ /dev/null @@ -1,129 +0,0 @@ -From e33c3b5720592db7cbaa544b8c05414a17d35afd Mon Sep 17 00:00:00 2001 -From: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon, 30 Dec 2019 11:15:30 +0000 -Subject: [PATCH 12/13] drm/i915/gt: Detect if we miss WaIdleLiteRestore - -In order to avoid confusing the HW, we must never submit an empty ring -during lite-restore, that is we should always advance the RING_TAIL -before submitting to stay ahead of the RING_HEAD. - -Normally this is prevented by keeping a couple of spare NOPs in the -request->wa_tail so that on resubmission we can advance the tail. This -relies on the request only being resubmitted once, which is the normal -condition as it is seen once for ELSP[1] and then later in ELSP[0]. On -preemption, the requests are unwound and the tail reset back to the -normal end point (as we know the request is incomplete and therefore its -RING_HEAD is even earlier). - -However, if this w/a should fail we would try and resubmit the request -with the RING_TAIL already set to the location of this request's wa_tail -potentially causing a GPU hang. We can spot when we do try and -incorrectly resubmit without advancing the RING_TAIL and spare any -embarrassment by forcing the context restore. - -In the case of preempt-to-busy, we leave the requests running on the HW -while we unwind. As the ring is still live, we cannot rewind our -rq->tail without forcing a reload so leave it set to rq->wa_tail and -only force a reload if we resubmit after a lite-restore. (Normally, the -forced reload will be a part of the preemption event.) - -Fixes: 22b7a426bbe1 ("drm/i915/execlists: Preempt-to-busy") -Closes: https://gitlab.freedesktop.org/drm/intel/issues/673 -Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> -Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com> -Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> -Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> -Cc: stable@vger.kernel.org -Link: https://patchwork.freedesktop.org/patch/msgid/20191209023215.3519970-1-chris@chris-wilson.co.uk -(cherry picked from commit 82c69bf58650e644c61aa2bf5100b63a1070fd2f) ---- - drivers/gpu/drm/i915/gt/intel_lrc.c | 42 ++++++++++++++--------------- - 1 file changed, 20 insertions(+), 22 deletions(-) - -diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c -index 06a506c29463..6600b2e08fe3 100644 ---- a/drivers/gpu/drm/i915/gt/intel_lrc.c -+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c -@@ -471,12 +471,6 @@ lrc_descriptor(struct intel_context *ce, struct intel_engine_cs *engine) - return desc; - } - --static void unwind_wa_tail(struct i915_request *rq) --{ -- rq->tail = intel_ring_wrap(rq->ring, rq->wa_tail - WA_TAIL_BYTES); -- assert_ring_tail_valid(rq->ring, rq->tail); --} -- - static struct i915_request * - __unwind_incomplete_requests(struct intel_engine_cs *engine) - { -@@ -495,7 +489,6 @@ __unwind_incomplete_requests(struct intel_engine_cs *engine) - continue; /* XXX */ - - __i915_request_unsubmit(rq); -- unwind_wa_tail(rq); - - /* - * Push the request back into the queue for later resubmission. -@@ -649,13 +642,29 @@ execlists_schedule_out(struct i915_request *rq) - i915_request_put(rq); - } - --static u64 execlists_update_context(const struct i915_request *rq) -+static u64 execlists_update_context(struct i915_request *rq) - { - struct intel_context *ce = rq->hw_context; -- u64 desc; -+ u64 desc = ce->lrc_desc; -+ u32 tail; - -- ce->lrc_reg_state[CTX_RING_TAIL + 1] = -- intel_ring_set_tail(rq->ring, rq->tail); -+ /* -+ * WaIdleLiteRestore:bdw,skl -+ * -+ * We should never submit the context with the same RING_TAIL twice -+ * just in case we submit an empty ring, which confuses the HW. -+ * -+ * We append a couple of NOOPs (gen8_emit_wa_tail) after the end of -+ * the normal request to be able to always advance the RING_TAIL on -+ * subsequent resubmissions (for lite restore). Should that fail us, -+ * and we try and submit the same tail again, force the context -+ * reload. -+ */ -+ tail = intel_ring_set_tail(rq->ring, rq->tail); -+ if (unlikely(ce->lrc_reg_state[CTX_RING_TAIL + 1] == tail)) -+ desc |= CTX_DESC_FORCE_RESTORE; -+ ce->lrc_reg_state[CTX_RING_TAIL + 1] = tail; -+ rq->tail = rq->wa_tail; - - /* - * Make sure the context image is complete before we submit it to HW. -@@ -674,7 +683,6 @@ static u64 execlists_update_context(const struct i915_request *rq) - */ - mb(); - -- desc = ce->lrc_desc; - ce->lrc_desc &= ~CTX_DESC_FORCE_RESTORE; - - return desc; -@@ -1149,16 +1157,6 @@ static void execlists_dequeue(struct intel_engine_cs *engine) - if (!list_is_last(&last->sched.link, - &engine->active.requests)) - return; -- -- /* -- * WaIdleLiteRestore:bdw,skl -- * Apply the wa NOOPs to prevent -- * ring:HEAD == rq:TAIL as we resubmit the -- * request. See gen8_emit_fini_breadcrumb() for -- * where we prepare the padding after the -- * end of the request. -- */ -- last->tail = last->wa_tail; - } - } - --- -2.24.1 - diff --git a/libre/linux-libre/0013-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch b/libre/linux-libre/0012-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch index ca540525b..d4e85912f 100644 --- a/libre/linux-libre/0013-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch +++ b/libre/linux-libre/0012-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch @@ -1,7 +1,7 @@ -From adb810e1819b859aec1f8eb4c5611bc6ebe82137 Mon Sep 17 00:00:00 2001 +From c7e2526442e1a92f2c875c0300935918a295f527 Mon Sep 17 00:00:00 2001 From: Boyan Ding <boyan.j.ding@gmail.com> Date: Wed, 1 Jan 2020 11:44:49 -0800 -Subject: [PATCH 13/13] pinctrl: sunrisepoint: Add missing Interrupt Status +Subject: [PATCH 12/14] pinctrl: sunrisepoint: Add missing Interrupt Status register offset Commit 179e5a6114cc ("pinctrl: intel: Remove default Interrupt Status @@ -31,5 +31,5 @@ index 44d7f50bbc82..d936e7aa74c4 100644 .pin_base = (s), \ .npins = ((e) - (s) + 1), \ -- -2.24.1 +2.25.0 diff --git a/libre/linux-libre/0013-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch b/libre/linux-libre/0013-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch new file mode 100644 index 000000000..ddf4d86a2 --- /dev/null +++ b/libre/linux-libre/0013-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch @@ -0,0 +1,48 @@ +From ad6657302538790fdf5c0c0f6e88add139e0c530 Mon Sep 17 00:00:00 2001 +From: Mehmet Akif Tasova <makiftasova@gmail.com> +Date: Mon, 30 Dec 2019 15:48:16 +0200 +Subject: [PATCH 13/14] Revert "iwlwifi: mvm: fix scan config command size" + +Since v5.4-rc1 was released, iwlwifi started throwing errors when scan +commands were sent to the firmware with certain devices (depending on +the OTP burned in the device, which contains the list of available +channels). For instance: + +iwlwifi 0000:00:14.3: FW error in SYNC CMD SCAN_CFG_CMD + +This bug was reported in the ArchLinux bug tracker: +https://bugs.archlinux.org/task/64703 + +And also in a specific case in bugzilla, when the lar_disabled option +was set: https://bugzilla.kernel.org/show_bug.cgi?id=205193 + +Revert the commit that introduced this error, by using the number of +channels from the OTP instead of the number of channels that is +specified in the FW TLV that tells us how many channels it supports. + +This reverts commit 06eb547c4ae4382e70d556ba213d13c95ca1801b. + +Cc: stable@vger.kernel.org # v5.4+ +Signed-off-by: Mehmet Akif Tasova <makiftasova@gmail.com> +[ Luca: reworded the commit message a bit. ] +Signed-off-by: Luca Coelho <luciano.coelho@intel.com> +--- + drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +index fcafa22ec6ce..8aa567d7912c 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +@@ -1220,7 +1220,7 @@ static int iwl_mvm_legacy_config_scan(struct iwl_mvm *mvm) + cmd_size = sizeof(struct iwl_scan_config_v2); + else + cmd_size = sizeof(struct iwl_scan_config_v1); +- cmd_size += num_channels; ++ cmd_size += mvm->fw->ucode_capa.n_scan_channels; + + cfg = kzalloc(cmd_size, GFP_KERNEL); + if (!cfg) +-- +2.25.0 + diff --git a/libre/linux-libre/0014-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch b/libre/linux-libre/0014-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch new file mode 100644 index 000000000..bac757431 --- /dev/null +++ b/libre/linux-libre/0014-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch @@ -0,0 +1,174 @@ +From 22aa8417725e7b4cb467a78a6bce6f23ad799d98 Mon Sep 17 00:00:00 2001 +From: Jeff Kirsher <jeffrey.t.kirsher@intel.com> +Date: Sat, 4 Jan 2020 23:29:22 -0800 +Subject: [PATCH 14/14] e1000e: Revert "e1000e: Make watchdog use delayed work" + +This reverts commit 59653e6497d16f7ac1d9db088f3959f57ee8c3db. + +This is due to this commit causing driver crashes and connections to +reset unexpectedly. + +Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> +--- + drivers/net/ethernet/intel/e1000e/e1000.h | 5 +- + drivers/net/ethernet/intel/e1000e/netdev.c | 54 ++++++++++------------ + 2 files changed, 27 insertions(+), 32 deletions(-) + +diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h +index 6c51b1bad8c4..37a2314d3e6b 100644 +--- a/drivers/net/ethernet/intel/e1000e/e1000.h ++++ b/drivers/net/ethernet/intel/e1000e/e1000.h +@@ -185,13 +185,12 @@ struct e1000_phy_regs { + + /* board specific private data structure */ + struct e1000_adapter { ++ struct timer_list watchdog_timer; + struct timer_list phy_info_timer; + struct timer_list blink_timer; + + struct work_struct reset_task; +- struct delayed_work watchdog_task; +- +- struct workqueue_struct *e1000_workqueue; ++ struct work_struct watchdog_task; + + const struct e1000_info *ei; + +diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c +index d7d56e42a6aa..060daf66bf63 100644 +--- a/drivers/net/ethernet/intel/e1000e/netdev.c ++++ b/drivers/net/ethernet/intel/e1000e/netdev.c +@@ -1780,8 +1780,7 @@ static irqreturn_t e1000_intr_msi(int __always_unused irq, void *data) + } + /* guard against interrupt when we're going down */ + if (!test_bit(__E1000_DOWN, &adapter->state)) +- mod_delayed_work(adapter->e1000_workqueue, +- &adapter->watchdog_task, HZ); ++ mod_timer(&adapter->watchdog_timer, jiffies + 1); + } + + /* Reset on uncorrectable ECC error */ +@@ -1861,8 +1860,7 @@ static irqreturn_t e1000_intr(int __always_unused irq, void *data) + } + /* guard against interrupt when we're going down */ + if (!test_bit(__E1000_DOWN, &adapter->state)) +- mod_delayed_work(adapter->e1000_workqueue, +- &adapter->watchdog_task, HZ); ++ mod_timer(&adapter->watchdog_timer, jiffies + 1); + } + + /* Reset on uncorrectable ECC error */ +@@ -1907,8 +1905,7 @@ static irqreturn_t e1000_msix_other(int __always_unused irq, void *data) + hw->mac.get_link_status = true; + /* guard against interrupt when we're going down */ + if (!test_bit(__E1000_DOWN, &adapter->state)) +- mod_delayed_work(adapter->e1000_workqueue, +- &adapter->watchdog_task, HZ); ++ mod_timer(&adapter->watchdog_timer, jiffies + 1); + } + + if (!test_bit(__E1000_DOWN, &adapter->state)) +@@ -4281,6 +4278,7 @@ void e1000e_down(struct e1000_adapter *adapter, bool reset) + + napi_synchronize(&adapter->napi); + ++ del_timer_sync(&adapter->watchdog_timer); + del_timer_sync(&adapter->phy_info_timer); + + spin_lock(&adapter->stats64_lock); +@@ -5152,11 +5150,25 @@ static void e1000e_check_82574_phy_workaround(struct e1000_adapter *adapter) + } + } + ++/** ++ * e1000_watchdog - Timer Call-back ++ * @data: pointer to adapter cast into an unsigned long ++ **/ ++static void e1000_watchdog(struct timer_list *t) ++{ ++ struct e1000_adapter *adapter = from_timer(adapter, t, watchdog_timer); ++ ++ /* Do the rest outside of interrupt context */ ++ schedule_work(&adapter->watchdog_task); ++ ++ /* TODO: make this use queue_delayed_work() */ ++} ++ + static void e1000_watchdog_task(struct work_struct *work) + { + struct e1000_adapter *adapter = container_of(work, + struct e1000_adapter, +- watchdog_task.work); ++ watchdog_task); + struct net_device *netdev = adapter->netdev; + struct e1000_mac_info *mac = &adapter->hw.mac; + struct e1000_phy_info *phy = &adapter->hw.phy; +@@ -5404,9 +5416,8 @@ static void e1000_watchdog_task(struct work_struct *work) + + /* Reset the timer */ + if (!test_bit(__E1000_DOWN, &adapter->state)) +- queue_delayed_work(adapter->e1000_workqueue, +- &adapter->watchdog_task, +- round_jiffies(2 * HZ)); ++ mod_timer(&adapter->watchdog_timer, ++ round_jiffies(jiffies + 2 * HZ)); + } + + #define E1000_TX_FLAGS_CSUM 0x00000001 +@@ -7259,21 +7270,11 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent) + goto err_eeprom; + } + +- adapter->e1000_workqueue = alloc_workqueue("%s", WQ_MEM_RECLAIM, 0, +- e1000e_driver_name); +- +- if (!adapter->e1000_workqueue) { +- err = -ENOMEM; +- goto err_workqueue; +- } +- +- INIT_DELAYED_WORK(&adapter->watchdog_task, e1000_watchdog_task); +- queue_delayed_work(adapter->e1000_workqueue, &adapter->watchdog_task, +- 0); +- ++ timer_setup(&adapter->watchdog_timer, e1000_watchdog, 0); + timer_setup(&adapter->phy_info_timer, e1000_update_phy_info, 0); + + INIT_WORK(&adapter->reset_task, e1000_reset_task); ++ INIT_WORK(&adapter->watchdog_task, e1000_watchdog_task); + INIT_WORK(&adapter->downshift_task, e1000e_downshift_workaround); + INIT_WORK(&adapter->update_phy_task, e1000e_update_phy_task); + INIT_WORK(&adapter->print_hang_task, e1000_print_hw_hang); +@@ -7367,9 +7368,6 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent) + return 0; + + err_register: +- flush_workqueue(adapter->e1000_workqueue); +- destroy_workqueue(adapter->e1000_workqueue); +-err_workqueue: + if (!(adapter->flags & FLAG_HAS_AMT)) + e1000e_release_hw_control(adapter); + err_eeprom: +@@ -7416,17 +7414,15 @@ static void e1000_remove(struct pci_dev *pdev) + */ + if (!down) + set_bit(__E1000_DOWN, &adapter->state); ++ del_timer_sync(&adapter->watchdog_timer); + del_timer_sync(&adapter->phy_info_timer); + + cancel_work_sync(&adapter->reset_task); ++ cancel_work_sync(&adapter->watchdog_task); + cancel_work_sync(&adapter->downshift_task); + cancel_work_sync(&adapter->update_phy_task); + cancel_work_sync(&adapter->print_hang_task); + +- cancel_delayed_work(&adapter->watchdog_task); +- flush_workqueue(adapter->e1000_workqueue); +- destroy_workqueue(adapter->e1000_workqueue); +- + if (adapter->flags & FLAG_HAS_HW_TIMESTAMP) { + cancel_work_sync(&adapter->tx_hwtstamp_work); + if (adapter->tx_hwtstamp_skb) { +-- +2.25.0 + diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD index b06a2437d..87c5f991b 100644 --- a/libre/linux-libre/PKGBUILD +++ b/libre/linux-libre/PKGBUILD @@ -14,11 +14,11 @@ _replacesoldkernels=() # '%' gets replaced with kernel suffix _replacesoldmodules=() # '%' gets replaced with kernel suffix pkgbase=linux-libre -pkgver=5.4.8 +pkgver=5.4.12 pkgrel=1 pkgdesc='Linux-libre' -rcnver=5.4.5 -rcnrel=armv7-x13 +rcnver=5.4.12 +rcnrel=armv7-x14 url='https://linux-libre.fsfla.org/' arch=(i686 x86_64 armv7h) license=(GPL2) @@ -52,12 +52,13 @@ source=( 0005-PCI-pciehp-Prevent-deadlock-on-disconnect.patch 0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch 0007-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch - 0008-x86-intel-Disable-HPET-on-Intel-Ice-Lake-platforms.patch - 0009-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-s.patch - 0010-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch - 0011-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch - 0012-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch - 0013-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch + 0008-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-s.patch + 0009-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch + 0010-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch + 0011-drm-i915-Limit-audio-CDCLK-2-BCLK-constraint-back-to.patch + 0012-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch + 0013-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch + 0014-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch ) source_armv7h=( # RCN patch (CM3 firmware deblobbed and bloatware removed) @@ -72,6 +73,8 @@ source_armv7h=( 0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch 0008-ARM-dove-enable-ethernet-on-D3Plug.patch 0009-USB-Armory-MkII-support.patch + # ChromiumOS patches + 0001-CHROMIUM-block-partitions-efi-Add-support-for-IGNORE.patch ) validpgpkeys=( '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva @@ -79,7 +82,7 @@ validpgpkeys=( ) sha512sums=('0d0915133864eb031adfc6700066147dcf3e768a50a31c39754950c95ef4fd322dc701cd50af49c403ef0325adfcb07e354d5e46c1be3dcdd719a7a55c963f37' 'SKIP' - '6cf4a01741eec4763e6bbb9762aafad815716f61d43b522da294cf8b2d2a1fc5228fffd710aa5e19aa4ffaa8e59b4ea37cfb987cb49d2cff064b8899b0558fba' + '9d2311e9bebc81dbd2032dd87a9f64290bd3a406701a7a83785897230c0cdc679e75fb8b5b4dc0b9bb54f5105d3101f7fcda4296a14e62f026d4882361447e1c' 'SKIP' '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3' 'SKIP' @@ -89,27 +92,28 @@ sha512sums=('0d0915133864eb031adfc6700066147dcf3e768a50a31c39754950c95ef4fd322dc 'SKIP' '4f0c8068f2532a60f3368ecc2147f6c33b19f934540655390751629b0981b1bf208f2ec563f5fcfbcf3537140bafd9ed0993cdc8f5b0b71914939d601afc4c29' 'a923bb36ff24d3f2326b0b6bccb8cdfe2ed2ab2acdae17dfcaf9beb269995a52bfba751ad7e616544ef4b98dd9487a66fe04dae2ec2e7d724f8ac47382ee71bd' - 'b0dbc53ec688eae4ea92181fb7658361c2647b8f6271f145e35b36a93e5170ddc285ebd78c1218e239b4f551b8a4c75b6a9a8beff7367250b302d5900ad0cff5' + '32590362aa544dd14bae48e24e2ffa979f2ea3cd80f0bf776126002860798a8dace8413bb19545f50af4b94dbf16ba5821780cbcdd19e10c7cfc2e4d0412eb30' 'f01e7925b262d2874a8a991b1f27d057356a2a384d2012b61be5a631d4e4d7cf87461c8fb9e7f183831f5a829ad204897f1f0545a52df6288a0e04a5c2e31b96' '167bc73c6c1c63931806238905dc44c7d87c5a5c0f6293159f2133dfe717fb44081018d810675716d1605ec7dff5e8333b87b19e09e2de21d0448e447437873b' 'bb6718984a7357c9b00c37e4788480e5b8b75018c172ecc1441bc3fc5d2d42444eb5d8c7f9d2e3a7d6fed6d03acb565e3c0559486e494c40a7fe6bd0570c9ede' '143dea30c6da00e504c99984a98a0eb2411f558fcdd9dfa7f607d6c14e9e7dffff9cb00121d9317044b07e3e210808286598c785ee854084b993ec9cb14d8232' '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af' 'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168' - '19084ed74a127eaed636309d142fbac122a6593b2f10f42c70ef79663e318edd7d433fd268a88c036ce38545f7d2fb14a94fb903040ecbf16287b28073a59d32' - '1c5e6e98dbfc2ec9512967aa9c746d7396df0dcc3b8dff38106a6097528b4bfdb60dd9aee7cd189fb710780fb3593dc173e4c348076dd1ae25c7870d41d53286' - 'dbd1a0dff6ac0f481b4879b44aef5cf6ca9d37383c95ec664094138261bcaab689b873f688f77a6df4f11145a4fb27a4b0676fae5eae16e0f3cbe1392acf1266' - '51b47890987eca1def8019464eb41d3c32038fc4158f6a8e4f06adc2cb6567599fadd1835cb35d5edc7b144749ccafed0ad4f8ce4996edf2cf60fa5a46725f20' - 'a79a8900aae9ee2587cc7989b7e77215c63c0fc3bc75eb5ab0b50d378f6bb4072d46821514a97f81bd79498c6fb6ce97183110ccf7baa9b8434e560857f61611' - 'c94cfe2b0c9e02c020955f0315b6b61be51125f612ce50dff15d8a3bd8de2976a98df56283d0198f977570974c12b15219c457d2682927f8a0fd9344b3e324b6' - '629012611c1100cc832121c1d53da9a414abfe638a8273488ca319229a66a706ad15d88cdfe3b1769a6176ba7df24fe585f794a502e20e9134730fcfe0341dc3' - '809461f3c3e3ec6019b0cde26cf69dfb8f171c49cf8a95c59d4bc84cc331aad0c7f5c313844fb7c655cc54381d2737fb9cbedd4cd047c68b0bd217c480d6f7b0' - '2165f7e671c61d43b7bb89c3edcf3cd4bf16a4e57eccd44f18eabeadeae250ed57fe0fd20efc101e11d49444edb3956db05f6fe7038b0ce1c3cca37f96795e1c' - 'ff457ff06c3ea8e2a67346eb728540985f8a0dc172e818d381e88a97917b9c34d5b7938e49b08ce76692123c623f941714b31bd07c1b65e60beaa7e2b7ae5af9' - '277a8f3e9b0b015690ac82ef4e9c531d8e1a1ef2cb173ec73f807c649844623d1505f7f82d6b97134d1398e4a197586126d3df6c4925f40aaed7a60ed10c7986' - '3499d257cce45e9abc6ae040bb8f38c76dce6f23c1986c4b753a44f32528671d7d24ddd230ab639eb23f9081624f986697c604e1bdb12a0e4b91ea60ce91ea01' - 'b17d58ea538af2f250dd3587323cb36e96fbd8c0d406792e5b7dc828c6bce25fdf5834185cb42e327450b74cd0821260d1f53a84057a3d72b004394d9393e19d') -sha512sums_armv7h=('bc449032f904b5ef5c4506124871230587dd72849f7fed1d7e9f6ab6f530c24415dfa0f29b27fa98191a671c9646b6066fbf163b5533774307dc68f610e3958f' + '5c12036749138b026f299b44d4968507d265ca5182c9cd975669f9810e344b9786b787b9dd9eba310f1c480b6f856ba9a3a557ec94e313ea716cffe1e588f7b5' + '757182970d98ed04aec3d82fdde30787812ae5c0c4217a85be1a3c3d90ccfd7afe70b42a340859be517d52ab41357c12d50f46ef49701ab9673d3240969b0799' + 'f224e185269d51fb8bbe2d8148567303f39d1216afc7d5f446be07601a6d969682051880903d4d61c917fa75ecf38a557c7b383217bb064577e369f096422843' + '061ddb48a6d574c80ec75ac686bface0f88e8e81586c36e32ac6493ba5fe9d5d4877dbb4709d3e29758adfebb9b6fe3ed0899d5a31af550d99fca5c4d6128a41' + 'cbb6e8f92c2878ed89646667cfa54b0ebf73c426c09e3a5a9a5ed5aaf68e94364d85a589f5348c10fb3e90adb978e022ce9e7b541e64eb411bdf94ed00871f8e' + 'd60a380b494c7d80f6b379a2c74f50d33251598c2c1fdf2019fd602e51f25541726cf81485eeab02b983f56ac71c751dd54471ead05c22a339b0e6589f4675fe' + '924a5eaed5f3d51dc9f983f7b941a11a3773bab5f686d211729b855e24dd70fa1637a8483230e3b326545d362ff09c8b07e6373ea52f79848c8d47eb27edbb3a' + '5643a9ca7b397628dc5705a28411e8a9572da9ad981e6737957b0f172a9165801633a55d10f44d81e156daccc84732ba472982c644e6e0ca091087be6086e5b6' + '48feeee39792d80702097caf463351f30b5084c76d2baafd0b0879889dadd078eb0d9f068dfc18dc5e39630ac90c726b5b496bb7f40873e541771a00e2995a01' + '21f258f366335867235432bc27e222fc6033007a7e36a0ec8f7b3d9868a7c1b84da48390749e9fcff5c2cb2ad2a4d3661de21638d5fbb557711eafb8bf6ab37a' + '2230b605ae5a9e16d98992e585590efc02684dbce1f7f310174610430cc817f69fa318ed97d066241a763a6f9a28a3b9702017ca88bb97e18b405f7ee1ec3e00' + 'caea78d02fafd04334f6005a6974307e42bb808f813c9f2fe9ee4195288c77c3c1454707d1e49dfd22d6d83e53d5b8d5100de6a7537aa80425dd3a3128aee1ca' + 'a92f15fe8e0bf10c390f252197421a268f14601f35887d4d1d87b9e597feae39b9819c955be885a62cf7a882c0080f780cdfde08a2c5efc7fdd88512c0629d4d' + '4be4ea402a7c8db3ee19aab613138edc47834861261c2ba9e5efc4162a569352dd0ef111bc3933c0f7de477dac1524111f35ae850ff0ee1c9d37cd70702ba68b') +sha512sums_armv7h=('a9728939fc256c7d74c777b5cd5c7971efb6b43161667a39ee00cda66e3973faf63c2cdd6ad606722b3e5686eb9243d67eb48a931319dbfb99fe74fb88f06c64' 'SKIP' 'b576a9c40ba59485c350f71b9234d9e71f245e25b26382bd2f67019f3309c3b5705a6020eae0a9dfccacc763fb2056a5937c0a8ff4e64f99ba1d60f0b2acb03f' '85a13a274d4cbaca3ddbe8eaf883f1a1184765f8d09d6d40bb32defbe0876cb0153513e8db8671d7fc053e383ced793b74245ff29364a760e1a52bb36ebc8e85' @@ -119,7 +123,8 @@ sha512sums_armv7h=('bc449032f904b5ef5c4506124871230587dd72849f7fed1d7e9f6ab6f530 'bc0c6b1726679498393be8d4c417c62e1f356fe5c617c71ff23532652fdd5f314e5bfc6172eaca79cd4806b81031bf2f879d7d1a6050ad4c616c04e6bdf93c2a' 'b13bea6412580325dba0d02cf0dc712e860f659569ffcb968aa4836fdb2882448cfee4659a675a70affccae02c8d2589d80b7239eef5ae7b615162aeaa76f3bb' 'cff59f974651614587313674455a968ae5390a5ca825d204f0e2f8de2b422d577b007f5297a398e2afeb33ed0d324d34ad58ff4cd56e645bd4ca9a6bdc1354c5' - '54adbec4b6b85cda901df7d2b3eb1f517f10d3528326e60c7afa4b49ccc7cfb43b0d1f574ceb5d7d03c94a0fbcc97c0ef785258292dd26ed46728355da27332c') + '54adbec4b6b85cda901df7d2b3eb1f517f10d3528326e60c7afa4b49ccc7cfb43b0d1f574ceb5d7d03c94a0fbcc97c0ef785258292dd26ed46728355da27332c' + '7bda2ad7eb81af802873cb6764cb9c675ec50ceeb5adc487881ebc8c316cf55f836e56c2cc67494a2920e86494861db2eb924b7ff9b151ae3c5b0e493c373bf9') _replacesarchkernel=("${_replacesarchkernel[@]/\%/${pkgbase#linux-libre}}") _replacesoldkernels=("${_replacesoldkernels[@]/\%/${pkgbase#linux-libre}}") @@ -139,7 +144,7 @@ prepare() { if [ "${_srcname##*-}" != "$pkgver" ]; then msg2 "Applying upstream patch..." - patch -Np1 -i ../patch-${_srcname##*-}-gnu-$pkgver-gnu + patch -Np1 < "../patch-${_srcname##*-}-gnu-$pkgver-gnu" fi msg2 "Adding freedo as boot logo..." @@ -369,7 +374,7 @@ _package-chromebook() { cd $_srcname cp ../kernel.its . - mkimage -D "-I dts -O dtb -p 2048" -f kernel.its kernel.itb + mkimage -D "-I dts -O dtb -p 2048" -f kernel.its kernel.signed dd if=/dev/zero of=bootloader.bin bs=512 count=1 echo 'console=tty0 init=/sbin/init root=PARTUUID=%U/PARTNROFF=1 rootwait rw noinitrd' > cmdline @@ -377,7 +382,7 @@ _package-chromebook() { vbutil_kernel \ --pack vmlinux.kpart \ --version 1 \ - --vmlinuz kernel.itb \ + --vmlinuz kernel.signed \ --arch arm \ --keyblock ../kernel.keyblock \ --signprivate ../kernel_data_key.vbprivk \ diff --git a/libre/linux-libre/config.armv7h b/libre/linux-libre/config.armv7h index be244a865..712cc0e32 100644 --- a/libre/linux-libre/config.armv7h +++ b/libre/linux-libre/config.armv7h @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 5.4.8-gnu Kernel Configuration +# Linux/arm 5.4.12-gnu Kernel Configuration # # @@ -9053,7 +9053,7 @@ CONFIG_KEYS=y # CONFIG_BIG_KEYS is not set # CONFIG_TRUSTED_KEYS is not set # CONFIG_ENCRYPTED_KEYS is not set -# CONFIG_KEY_DH_OPERATIONS is not set +CONFIG_KEY_DH_OPERATIONS=y # CONFIG_SECURITY_DMESG_RESTRICT is not set CONFIG_SECURITY=y CONFIG_SECURITYFS=y @@ -9128,7 +9128,7 @@ CONFIG_CRYPTO_RNG_DEFAULT=y CONFIG_CRYPTO_AKCIPHER2=y CONFIG_CRYPTO_AKCIPHER=y CONFIG_CRYPTO_KPP2=y -CONFIG_CRYPTO_KPP=m +CONFIG_CRYPTO_KPP=y CONFIG_CRYPTO_ACOMP2=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y diff --git a/libre/linux-libre/linux-chromebook.install b/libre/linux-libre/linux-chromebook.install index 02e08464d..54682de7e 100644 --- a/libre/linux-libre/linux-chromebook.install +++ b/libre/linux-libre/linux-chromebook.install @@ -1,6 +1,11 @@ -flash_kernel() { - major=$(mountpoint -d / | cut -f 1 -d ':') - minor=$(mountpoint -d / | cut -f 2 -d ':') +post_install () { + if mountpoint -q /boot; then + major=$(mountpoint -d /boot | cut -f 1 -d ':') + minor=$(mountpoint -d /boot | cut -f 2 -d ':') + else + major=$(mountpoint -d / | cut -f 1 -d ':') + minor=$(mountpoint -d / | cut -f 2 -d ':') + fi device=$(cat /proc/partitions | awk {'if ($1 == "'${major}'" && $2 == "'${minor}'") print $4 '}) device="/dev/${device/%2/1}" @@ -16,10 +21,6 @@ flash_kernel() { fi } -post_install () { - flash_kernel -} - post_upgrade() { - flash_kernel + post_install } |