summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/linux-libre/0001-CHROMIUM-block-partitions-efi-Add-support-for-IGNORE.patch139
-rw-r--r--libre/linux-libre/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch10
-rw-r--r--libre/linux-libre/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch6
-rw-r--r--libre/linux-libre/0003-mfd-intel-lpss-Use-devm_ioremap_uc-for-MMIO.patch6
-rw-r--r--libre/linux-libre/0004-PCI-pciehp-Do-not-disable-interrupt-twice-on-suspend.patch6
-rw-r--r--libre/linux-libre/0005-PCI-pciehp-Prevent-deadlock-on-disconnect.patch6
-rw-r--r--libre/linux-libre/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch6
-rw-r--r--libre/linux-libre/0007-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch6
-rw-r--r--libre/linux-libre/0008-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-s.patch (renamed from libre/linux-libre/0009-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-s.patch)10
-rw-r--r--libre/linux-libre/0008-x86-intel-Disable-HPET-on-Intel-Ice-Lake-platforms.patch38
-rw-r--r--libre/linux-libre/0009-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch (renamed from libre/linux-libre/0010-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch)10
-rw-r--r--libre/linux-libre/0010-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch (renamed from libre/linux-libre/0011-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch)6
-rw-r--r--libre/linux-libre/0011-drm-i915-Limit-audio-CDCLK-2-BCLK-constraint-back-to.patch64
-rw-r--r--libre/linux-libre/0012-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch129
-rw-r--r--libre/linux-libre/0012-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch (renamed from libre/linux-libre/0013-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch)6
-rw-r--r--libre/linux-libre/0013-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch48
-rw-r--r--libre/linux-libre/0014-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch174
-rw-r--r--libre/linux-libre/PKGBUILD63
-rw-r--r--libre/linux-libre/config.armv7h6
-rw-r--r--libre/linux-libre/linux-chromebook.install17
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
}