diff options
16 files changed, 271 insertions, 45 deletions
diff --git a/libre/linux-libre-pae/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch b/libre/linux-libre-pae/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch index ae31ff9b5..15b54a0fe 100644 --- a/libre/linux-libre-pae/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch +++ b/libre/linux-libre-pae/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 98ab83a7426ef0ec20ff46947f2ee8d651980b1c 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/15] ZEN: Add sysctl and CONFIG to disallow unprivileged CLONE_NEWUSER Our default behavior continues to match the vanilla kernel. diff --git a/libre/linux-libre-pae/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch b/libre/linux-libre-pae/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch index cf03b7a6b..c99d497d8 100644 --- a/libre/linux-libre-pae/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch +++ b/libre/linux-libre-pae/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 34648b0396ec5dfdfc18627c9c21c03e7243dbe2 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/15] lib: devres: add a helper function for ioremap_uc Implement a resource managed strongly uncachable ioremap function. diff --git a/libre/linux-libre-pae/0003-mfd-intel-lpss-Use-devm_ioremap_uc-for-MMIO.patch b/libre/linux-libre-pae/0003-mfd-intel-lpss-Use-devm_ioremap_uc-for-MMIO.patch index ed715ad45..7e744d0c5 100644 --- a/libre/linux-libre-pae/0003-mfd-intel-lpss-Use-devm_ioremap_uc-for-MMIO.patch +++ b/libre/linux-libre-pae/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 4b74251368e136095a2096ea1bdf95d40ddbd7fb 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/15] 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, diff --git a/libre/linux-libre-pae/0004-PCI-pciehp-Do-not-disable-interrupt-twice-on-suspend.patch b/libre/linux-libre-pae/0004-PCI-pciehp-Do-not-disable-interrupt-twice-on-suspend.patch index 24a7c3d84..3d9a404f1 100644 --- a/libre/linux-libre-pae/0004-PCI-pciehp-Do-not-disable-interrupt-twice-on-suspend.patch +++ b/libre/linux-libre-pae/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 47e8e0d8dbfded3675de6abed233ef134d1578e5 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/15] 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 diff --git a/libre/linux-libre-pae/0005-PCI-pciehp-Prevent-deadlock-on-disconnect.patch b/libre/linux-libre-pae/0005-PCI-pciehp-Prevent-deadlock-on-disconnect.patch index 7d05b2578..68d8477ed 100644 --- a/libre/linux-libre-pae/0005-PCI-pciehp-Prevent-deadlock-on-disconnect.patch +++ b/libre/linux-libre-pae/0005-PCI-pciehp-Prevent-deadlock-on-disconnect.patch @@ -1,7 +1,7 @@ -From b9bebf4cde0cf46438b2a7ab1652172e8e16c33e Mon Sep 17 00:00:00 2001 +From 54f60fe91123c1d95ee104c971d546b49e9d67f0 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/15] PCI: pciehp: Prevent deadlock on disconnect This addresses deadlocks in these common cases in hierarchies containing two switches: diff --git a/libre/linux-libre-pae/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch b/libre/linux-libre-pae/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch index 7b749ce70..a461a4f71 100644 --- a/libre/linux-libre-pae/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch +++ b/libre/linux-libre-pae/0006-ACPI-PM-s2idle-Rework-ACPI-events-synchronization.patch @@ -1,7 +1,7 @@ -From f74b67cce5f0c5c37b0c5cb0020a818f0594a743 Mon Sep 17 00:00:00 2001 +From 1b16d109c72e27909a590c5b91c45e8b90fe819a 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/15] 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 diff --git a/libre/linux-libre-pae/0007-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch b/libre/linux-libre-pae/0007-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch index 3cab84dee..2aaa4e8a3 100644 --- a/libre/linux-libre-pae/0007-iwlwifi-pcie-restore-support-for-Killer-Qu-C0-NICs.patch +++ b/libre/linux-libre-pae/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 88bbdf2becea7d9a04561f5b58219eb50efdd008 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/15] 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 diff --git a/libre/linux-libre-pae/0008-x86-intel-Disable-HPET-on-Intel-Ice-Lake-platforms.patch b/libre/linux-libre-pae/0008-x86-intel-Disable-HPET-on-Intel-Ice-Lake-platforms.patch index f07c5886b..07f4609b1 100644 --- a/libre/linux-libre-pae/0008-x86-intel-Disable-HPET-on-Intel-Ice-Lake-platforms.patch +++ b/libre/linux-libre-pae/0008-x86-intel-Disable-HPET-on-Intel-Ice-Lake-platforms.patch @@ -1,7 +1,7 @@ -From ddb94a8dbd9144d7b85f553cb4a85db2ba62374d Mon Sep 17 00:00:00 2001 +From 7e4ac4925c87e5418bbe11d8887d5a9d3cd0d6c0 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 +Subject: [PATCH 08/15] 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. diff --git a/libre/linux-libre-pae/0009-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-s.patch b/libre/linux-libre-pae/0009-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-s.patch index c876a8628..ae34f4cf7 100644 --- a/libre/linux-libre-pae/0009-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-s.patch +++ b/libre/linux-libre-pae/0009-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 fd29a8b6f1d2974791dd4b700bad5254f2ad28d9 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 09/15] drm/i915: save AUD_FREQ_CNTRL state at audio domain suspend When audio power domain is suspended, the display driver must diff --git a/libre/linux-libre-pae/0010-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch b/libre/linux-libre-pae/0010-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch index 952bb8d55..536d8d301 100644 --- a/libre/linux-libre-pae/0010-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch +++ b/libre/linux-libre-pae/0010-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 763a3bbf9ded9e8e0225ba25ab48a65f8e380517 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 10/15] drm/i915: Fix audio power up sequence for gen10+ display On platfroms with gen10+ display, driver must set the enable bit of diff --git a/libre/linux-libre-pae/0011-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch b/libre/linux-libre-pae/0011-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch index c1bc3c6e2..743686a44 100644 --- a/libre/linux-libre-pae/0011-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch +++ b/libre/linux-libre-pae/0011-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 92d38b35c52c1ee17f215515ed181b44e5fb3d3a 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 11/15] drm/i915: extend audio CDCLK>=2*BCLK constraint to more platforms The CDCLK>=2*BCLK constraint applies to all generations since gen10. diff --git a/libre/linux-libre-pae/0012-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch b/libre/linux-libre-pae/0012-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch index 7609d0b5f..8fd379cc9 100644 --- a/libre/linux-libre-pae/0012-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch +++ b/libre/linux-libre-pae/0012-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch @@ -1,7 +1,7 @@ -From e33c3b5720592db7cbaa544b8c05414a17d35afd Mon Sep 17 00:00:00 2001 +From 390d0a67cecd44bbc52231f0e9ea93ccdb742568 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 +Subject: [PATCH 12/15] 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 @@ -41,7 +41,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20191209023215.3519970-1-chr 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 +index d564bfcab6a3..49ce15553e7b 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) @@ -65,7 +65,7 @@ index 06a506c29463..6600b2e08fe3 100644 /* * Push the request back into the queue for later resubmission. -@@ -649,13 +642,29 @@ execlists_schedule_out(struct i915_request *rq) +@@ -650,13 +643,29 @@ execlists_schedule_out(struct i915_request *rq) i915_request_put(rq); } @@ -99,7 +99,7 @@ index 06a506c29463..6600b2e08fe3 100644 /* * 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) +@@ -675,7 +684,6 @@ static u64 execlists_update_context(const struct i915_request *rq) */ mb(); @@ -107,7 +107,7 @@ index 06a506c29463..6600b2e08fe3 100644 ce->lrc_desc &= ~CTX_DESC_FORCE_RESTORE; return desc; -@@ -1149,16 +1157,6 @@ static void execlists_dequeue(struct intel_engine_cs *engine) +@@ -1150,16 +1158,6 @@ static void execlists_dequeue(struct intel_engine_cs *engine) if (!list_is_last(&last->sched.link, &engine->active.requests)) return; diff --git a/libre/linux-libre-pae/0013-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch b/libre/linux-libre-pae/0013-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch index ca540525b..0ba773d78 100644 --- a/libre/linux-libre-pae/0013-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch +++ b/libre/linux-libre-pae/0013-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch @@ -1,7 +1,7 @@ -From adb810e1819b859aec1f8eb4c5611bc6ebe82137 Mon Sep 17 00:00:00 2001 +From d50448859890faa92fa1ebb82ef914fb15957994 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 13/15] pinctrl: sunrisepoint: Add missing Interrupt Status register offset Commit 179e5a6114cc ("pinctrl: intel: Remove default Interrupt Status diff --git a/libre/linux-libre-pae/0014-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch b/libre/linux-libre-pae/0014-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch new file mode 100644 index 000000000..fb3b0da5a --- /dev/null +++ b/libre/linux-libre-pae/0014-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch @@ -0,0 +1,48 @@ +From 78fe4d666ff244609c7d02bea07a22ce87e56326 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 14/15] 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.24.1 + diff --git a/libre/linux-libre-pae/0015-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch b/libre/linux-libre-pae/0015-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch new file mode 100644 index 000000000..00342f02d --- /dev/null +++ b/libre/linux-libre-pae/0015-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch @@ -0,0 +1,174 @@ +From 195bb1762da1aa1c1beffe402353afd619ea7338 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 15/15] 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.24.1 + diff --git a/libre/linux-libre-pae/PKGBUILD b/libre/linux-libre-pae/PKGBUILD index 659dc7fb7..67ab20178 100644 --- a/libre/linux-libre-pae/PKGBUILD +++ b/libre/linux-libre-pae/PKGBUILD @@ -9,7 +9,7 @@ _replacesoldkernels=() # '%' gets replaced with kernel suffix _replacesoldmodules=() # '%' gets replaced with kernel suffix pkgbase=linux-libre-pae -pkgver=5.4.8 +pkgver=5.4.10 pkgrel=1 pkgdesc='Linux-libre PAE (physical address extension)' url='https://linux-libre.fsfla.org/' @@ -49,6 +49,8 @@ source=( 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 + 0014-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch + 0015-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch ) validpgpkeys=( '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva @@ -56,7 +58,7 @@ validpgpkeys=( ) sha512sums=('0d0915133864eb031adfc6700066147dcf3e768a50a31c39754950c95ef4fd322dc701cd50af49c403ef0325adfcb07e354d5e46c1be3dcdd719a7a55c963f37' 'SKIP' - '6cf4a01741eec4763e6bbb9762aafad815716f61d43b522da294cf8b2d2a1fc5228fffd710aa5e19aa4ffaa8e59b4ea37cfb987cb49d2cff064b8899b0558fba' + '0d1d0dea0096f2b7aba13575588dca533386afafbab8c238c478dea88ed3b8259d566a3798a19eed35dbb89d6687ba7d0da351b840f7207f9ca6267aba7b7ac0' 'SKIP' '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3' 'SKIP' @@ -67,19 +69,21 @@ sha512sums=('0d0915133864eb031adfc6700066147dcf3e768a50a31c39754950c95ef4fd322dc '63f3c3bfe27eb66391dfa2120193476f03cf668bbd9edf4b7cc5dcb8c53295b830ecb6afd10b9a89c190d7f02597529b484c22dbb849d221ef975af8db1d8049' '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af' 'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168' - '19084ed74a127eaed636309d142fbac122a6593b2f10f42c70ef79663e318edd7d433fd268a88c036ce38545f7d2fb14a94fb903040ecbf16287b28073a59d32' - '1c5e6e98dbfc2ec9512967aa9c746d7396df0dcc3b8dff38106a6097528b4bfdb60dd9aee7cd189fb710780fb3593dc173e4c348076dd1ae25c7870d41d53286' - 'dbd1a0dff6ac0f481b4879b44aef5cf6ca9d37383c95ec664094138261bcaab689b873f688f77a6df4f11145a4fb27a4b0676fae5eae16e0f3cbe1392acf1266' - '51b47890987eca1def8019464eb41d3c32038fc4158f6a8e4f06adc2cb6567599fadd1835cb35d5edc7b144749ccafed0ad4f8ce4996edf2cf60fa5a46725f20' - 'a79a8900aae9ee2587cc7989b7e77215c63c0fc3bc75eb5ab0b50d378f6bb4072d46821514a97f81bd79498c6fb6ce97183110ccf7baa9b8434e560857f61611' - 'c94cfe2b0c9e02c020955f0315b6b61be51125f612ce50dff15d8a3bd8de2976a98df56283d0198f977570974c12b15219c457d2682927f8a0fd9344b3e324b6' - '629012611c1100cc832121c1d53da9a414abfe638a8273488ca319229a66a706ad15d88cdfe3b1769a6176ba7df24fe585f794a502e20e9134730fcfe0341dc3' - '809461f3c3e3ec6019b0cde26cf69dfb8f171c49cf8a95c59d4bc84cc331aad0c7f5c313844fb7c655cc54381d2737fb9cbedd4cd047c68b0bd217c480d6f7b0' - '2165f7e671c61d43b7bb89c3edcf3cd4bf16a4e57eccd44f18eabeadeae250ed57fe0fd20efc101e11d49444edb3956db05f6fe7038b0ce1c3cca37f96795e1c' - 'ff457ff06c3ea8e2a67346eb728540985f8a0dc172e818d381e88a97917b9c34d5b7938e49b08ce76692123c623f941714b31bd07c1b65e60beaa7e2b7ae5af9' - '277a8f3e9b0b015690ac82ef4e9c531d8e1a1ef2cb173ec73f807c649844623d1505f7f82d6b97134d1398e4a197586126d3df6c4925f40aaed7a60ed10c7986' - '3499d257cce45e9abc6ae040bb8f38c76dce6f23c1986c4b753a44f32528671d7d24ddd230ab639eb23f9081624f986697c604e1bdb12a0e4b91ea60ce91ea01' - 'b17d58ea538af2f250dd3587323cb36e96fbd8c0d406792e5b7dc828c6bce25fdf5834185cb42e327450b74cd0821260d1f53a84057a3d72b004394d9393e19d') + 'a5a50f2f8f008a2a7a36de1985bd0c8ad381cb127f1192955b2312d3a3c162ed3b803503d7efc8212b3d74b96a0c6fbb30d25e572b5c9d15147e40574cef4ad2' + '07e8e5998418b91acab4a4403008f1bdca96f6cd09b284ffdcfa9f660b0a2241385bd535844329dc4933403222a4c84b5297dee2ee50899700acd065273b78d5' + '96f6c1c374220660aa7a1fb600848fb89cfb70e5e17060ee2715a99358258f6eab6d56535e92bac1a7f9cbb110dadfad72755cb0ffbdf8484d8df3e9a8a5ecd4' + '7f8b8bc6c0834319722e4dab7d10123b8e63cfb86da27f1e443eeba7946f54eae6d5f4417fab16b796cfd3190a3f69993502efd8d134c764abb5070375354907' + '4a9d908900df9883cc7989d8b71a7cace4561e5881502a6415ac0809a700b0d0536a8034da166d48e075456ba07f060bfe02246eca7af4c21a3eac977de57913' + 'aabb27bebfab538678cb5687918fec1ea54d04ea2c5d366e182aeebf4f9c183b661f89520628b5934e251b48afcad62c2d1253f0520102bd8a47dfa2e74227a9' + '5045e58079d58e18cdadef3bb60ff4f565629008449c003452193c77396f5110d972dcdbea87e4193339a44072569e7910c89fef3cb4933de29a609189101184' + 'a59470588e64e24c58a17f15ba5654dd35feba51a0649c331cf6f4361690a55890d2989abac6e58d147ef03756a2d5db91ceb75ac2d34a355c0c29e2b32bcfc3' + '1c7d83f92714f1fd84372d2a793a287fdbcd604de0c7409609fbe6e95b459554e77287cbd2793b60756b98fafb938e55fd14dce65a05eeb9c66fabbb03fd40cf' + 'f7e9635f42320f26e2cc21a7507dc9e497bf1a1939f6c6e76d4adc9850bd0c24036427553f454f5221d507e2c420f29c9a3e918a932a7f22fb4b7509add02a6c' + '954241c5a9582f1d9e1ca462e4a2ec91c59d510bd3401691a31ac7f3335376342a554491a47591bf9f9289a8bab8d0e45dff7e09fcdd941702271a2c3e73e766' + 'c1a431785f5b7357569bfb14322a0263c974d9f848f5e3bd62469f05fd5a9242ddd5ad47c5edb7588f92da8acfa83035f050f9b0036188f005e05b9e8a2876ab' + '2fe2ee5cd26298d1bc126362f86b01d653d3f9d1592490497f08bea398a1fed5607c6875ecf2ad820f644f89a85d30f7fdbd9f306e670060e943c586646a3a2f' + 'd83e48c9448f48ffe4f587b07dd88fbb7bf3d2137329ac0af734fdea2d0032dd6e76ccf19c26080e14e93856c63aff10cef7ec15acb1276213ac9b20882e9709' + 'c4df83eb037dd58aba7ee8fc77bbcc95a27e0e0905e278821769f3a7790c3cdff726333a8014dd223d7c74d4ce2713df29f647c94014438c128e1009d66c37d6') _replacesarchkernel=("${_replacesarchkernel[@]/\%/${pkgbase#linux-libre}}") _replacesoldkernels=("${_replacesoldkernels[@]/\%/${pkgbase#linux-libre}}") |