From e4427fc04f40c62e849c980fb1dfd4afb19ba3d2 Mon Sep 17 00:00:00 2001 From: jc_gargma Date: Mon, 11 Jan 2021 01:18:24 -0800 Subject: Updated to 5.10.6 Re-enabled EXPERT --- ...pting-to-set-RPA-timeout-when-unsupported.patch | 48 --- ...rackpad-2-to-hid_have_special_driver-list.patch | 36 +++ ...rackpad-2-to-hid_have_special_driver-list.patch | 36 --- ...-regression-from-UDP-segmentation-support.patch | 34 +++ ...ix-500-2000-performance-regression-w-5.10.patch | 61 ---- ...ine-extent-and-low-on-free-metadata-space.patch | 325 +++++++++++++++++++++ ...ink-delalloc-pages-instead-of-full-inodes.patch | 184 ++++++++++++ ...-regression-from-UDP-segmentation-support.patch | 34 --- ...ect-mutex-unlock-in-silent_stream_disable.patch | 36 --- ...amd-display-Fix-memory-leaks-in-S3-resume.patch | 40 --- PKGBUILD | 32 +- config | 11 +- 12 files changed, 598 insertions(+), 279 deletions(-) delete mode 100644 0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch create mode 100644 0002-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch delete mode 100644 0003-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch create mode 100644 0003-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch delete mode 100644 0004-btrfs-Fix-500-2000-performance-regression-w-5.10.patch create mode 100644 0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-low-on-free-metadata-space.patch create mode 100644 0005-btrfs-shrink-delalloc-pages-instead-of-full-inodes.patch delete mode 100644 0005-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch delete mode 100644 0006-ALSA-hda-hdmi-fix-incorrect-mutex-unlock-in-silent_stream_disable.patch delete mode 100644 0007-Revert-drm-amd-display-Fix-memory-leaks-in-S3-resume.patch diff --git a/0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch b/0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch deleted file mode 100644 index b51b75f..0000000 --- a/0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 538fc2513b46f71985af6cb12344fee501ef58a5 Mon Sep 17 00:00:00 2001 -From: Edward Vear -Date: Tue, 27 Oct 2020 00:02:03 -0700 -Subject: Bluetooth: Fix attempting to set RPA timeout when unsupported - -During controller initialization, an LE Set RPA Timeout command is sent -to the controller if supported. However, the value checked to determine -if the command is supported is incorrect. Page 1921 of the Bluetooth -Core Spec v5.2 shows that bit 2 of octet 35 of the Supported_Commands -field corresponds to the LE Set RPA Timeout command, but currently -bit 6 of octet 35 is checked. This patch checks the correct value -instead. - -This issue led to the error seen in the following btmon output during -initialization of an adapter (rtl8761b) and prevented initialization -from completing. - -< HCI Command: LE Set Resolvable Private Address Timeout (0x08|0x002e) plen 2 - Timeout: 900 seconds -> HCI Event: Command Complete (0x0e) plen 4 - LE Set Resolvable Private Address Timeout (0x08|0x002e) ncmd 2 - Status: Unsupported Remote Feature / Unsupported LMP Feature (0x1a) -= Close Index: 00:E0:4C:6B:E5:03 - -The error did not appear when running with this patch. - -Signed-off-by: Edward Vear -Signed-off-by: Marcel Holtmann ---- - net/bluetooth/hci_core.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c -index 502552d6e9af..c4aa2cbb9269 100644 ---- a/net/bluetooth/hci_core.c -+++ b/net/bluetooth/hci_core.c -@@ -763,7 +763,7 @@ static int hci_init3_req(struct hci_request *req, unsigned long opt) - hci_req_add(req, HCI_OP_LE_CLEAR_RESOLV_LIST, 0, NULL); - } - -- if (hdev->commands[35] & 0x40) { -+ if (hdev->commands[35] & 0x04) { - __le16 rpa_timeout = cpu_to_le16(hdev->rpa_timeout); - - /* Set RPA timeout */ --- -cgit v1.2.3-1-gf6bb5 - diff --git a/0002-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch b/0002-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch new file mode 100644 index 0000000..49bbf22 --- /dev/null +++ b/0002-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch @@ -0,0 +1,36 @@ +From 2dad55f373693e9e808fbdc836614162924990a2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Felix=20H=C3=A4dicke?= +Date: Thu, 19 Nov 2020 09:22:32 +0100 +Subject: HID: quirks: Add Apple Magic Trackpad 2 to hid_have_special_driver + list +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The Apple Magic Trackpad 2 is handled by the magicmouse driver. And +there were severe stability issues when both drivers (hid-generic and +hid-magicmouse) were loaded for this device. + +Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=210241 + +Signed-off-by: Felix Hädicke +--- + drivers/hid/hid-quirks.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c +index bf7ecab5d9e5..142e9dae2837 100644 +--- a/drivers/hid/hid-quirks.c ++++ b/drivers/hid/hid-quirks.c +@@ -478,6 +478,8 @@ static const struct hid_device_id hid_have_special_driver[] = { + #if IS_ENABLED(CONFIG_HID_MAGICMOUSE) + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD) }, ++ { HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) }, + #endif + #if IS_ENABLED(CONFIG_HID_MAYFLASH) + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3) }, +-- +cgit v1.2.3-1-gf6bb5 + diff --git a/0003-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch b/0003-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch deleted file mode 100644 index 49bbf22..0000000 --- a/0003-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 2dad55f373693e9e808fbdc836614162924990a2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Felix=20H=C3=A4dicke?= -Date: Thu, 19 Nov 2020 09:22:32 +0100 -Subject: HID: quirks: Add Apple Magic Trackpad 2 to hid_have_special_driver - list -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The Apple Magic Trackpad 2 is handled by the magicmouse driver. And -there were severe stability issues when both drivers (hid-generic and -hid-magicmouse) were loaded for this device. - -Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=210241 - -Signed-off-by: Felix Hädicke ---- - drivers/hid/hid-quirks.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c -index bf7ecab5d9e5..142e9dae2837 100644 ---- a/drivers/hid/hid-quirks.c -+++ b/drivers/hid/hid-quirks.c -@@ -478,6 +478,8 @@ static const struct hid_device_id hid_have_special_driver[] = { - #if IS_ENABLED(CONFIG_HID_MAGICMOUSE) - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) }, - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD) }, -+ { HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) }, -+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) }, - #endif - #if IS_ENABLED(CONFIG_HID_MAYFLASH) - { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3) }, --- -cgit v1.2.3-1-gf6bb5 - diff --git a/0003-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch b/0003-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch new file mode 100644 index 0000000..2a46e8c --- /dev/null +++ b/0003-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch @@ -0,0 +1,34 @@ +From 2059ba0b121bb366467fcefb35cef22cc23e2fe9 Mon Sep 17 00:00:00 2001 +From: Eric Dumazet +Date: Mon, 21 Dec 2020 20:14:02 +0100 +Subject: iwlwifi: Fix regression from UDP segmentation support + +Eric's tentative fix from +https://lore.kernel.org/linux-wireless/CANn89iJWG2n1s3j7EdpwkQQv-9dOY02V+FGYHAWguO4JiqWuJA@mail.gmail.com/ +--- + drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c +index fe1c538cd718..c27743a58f81 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c +@@ -833,6 +833,7 @@ iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes, + + next = skb_gso_segment(skb, netdev_flags); + skb_shinfo(skb)->gso_size = mss; ++ skb_shinfo(skb)->gso_type = ipv4 ? SKB_GSO_TCPV4 : SKB_GSO_TCPV6; + if (WARN_ON_ONCE(IS_ERR(next))) + return -EINVAL; + else if (next) +@@ -855,6 +856,7 @@ iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes, + + if (tcp_payload_len > mss) { + skb_shinfo(tmp)->gso_size = mss; ++ skb_shinfo(tmp)->gso_type = ipv4 ? SKB_GSO_TCPV4 : SKB_GSO_TCPV6; + } else { + if (qos) { + u8 *qc; +-- +cgit v1.2.3-1-gf6bb5 + diff --git a/0004-btrfs-Fix-500-2000-performance-regression-w-5.10.patch b/0004-btrfs-Fix-500-2000-performance-regression-w-5.10.patch deleted file mode 100644 index 088a340..0000000 --- a/0004-btrfs-Fix-500-2000-performance-regression-w-5.10.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 1540b4377ebb3f46eac499e7596c3ec5be75551b Mon Sep 17 00:00:00 2001 -From: Josef Bacik -Date: Wed, 23 Dec 2020 14:41:00 -0500 -Subject: btrfs: Fix 500-2000% performance regression w/ 5.10 - -Josef's tentative fix from -https://lore.kernel.org/linux-btrfs/0382080a1836a12c2d625f8a5bf899828eba204b.1608752315.git.josef@toxicpanda.com/ - -With the conflict fix mentioned in the reply. - -For https://bugs.archlinux.org/task/69077 ---- - fs/btrfs/space-info.c | 25 ++++++++++++++++++++++++- - 1 file changed, 24 insertions(+), 1 deletion(-) - -diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c -index 64099565ab8f..8a1ce11b6ed8 100644 ---- a/fs/btrfs/space-info.c -+++ b/fs/btrfs/space-info.c -@@ -480,6 +480,28 @@ static inline u64 calc_reclaim_items_nr(struct btrfs_fs_info *fs_info, - - #define EXTENT_SIZE_PER_ITEM SZ_256K - -+static void btrfs_writeback_inodes_sb_nr(struct btrfs_fs_info *fs_info, -+ unsigned long nr_pages, u64 nr_items) -+{ -+ struct super_block *sb = fs_info->sb; -+ -+ if (down_read_trylock(&sb->s_umount)) { -+ writeback_inodes_sb_nr(sb, nr_pages, WB_REASON_FS_FREE_SPACE); -+ up_read(&sb->s_umount); -+ } else { -+ /* -+ * We needn't worry the filesystem going from r/w to r/o though -+ * we don't acquire ->s_umount mutex, because the filesystem -+ * should guarantee the delalloc inodes list be empty after -+ * the filesystem is readonly(all dirty pages are written to -+ * the disk). -+ */ -+ btrfs_start_delalloc_roots(fs_info, nr_items); -+ if (!current->journal_info) -+ btrfs_wait_ordered_roots(fs_info, nr_items, 0, (u64)-1); -+ } -+} -+ - /* - * shrink metadata reservation for delalloc - */ -@@ -532,7 +554,8 @@ static void shrink_delalloc(struct btrfs_fs_info *fs_info, - - loops = 0; - while ((delalloc_bytes || dio_bytes) && loops < 3) { -- btrfs_start_delalloc_roots(fs_info, items); -+ unsigned long nr_pages = min(delalloc_bytes, to_reclaim) >> PAGE_SHIFT; -+ btrfs_writeback_inodes_sb_nr(fs_info, nr_pages, items); - - loops++; - if (wait_ordered && !trans) { --- -cgit v1.2.3-1-gf6bb5 - diff --git a/0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-low-on-free-metadata-space.patch b/0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-low-on-free-metadata-space.patch new file mode 100644 index 0000000..aa049b8 --- /dev/null +++ b/0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-low-on-free-metadata-space.patch @@ -0,0 +1,325 @@ +From e763d7a19f256a8861ee2c1eedaaf42f603488d2 Mon Sep 17 00:00:00 2001 +From: Filipe Manana +Date: Wed, 2 Dec 2020 11:55:58 +0000 +Subject: btrfs: fix deadlock when cloning inline extent and low on free + metadata space + +When cloning an inline extent there are cases where we can not just copy +the inline extent from the source range to the target range (e.g. when the +target range starts at an offset greater than zero). In such cases we copy +the inline extent's data into a page of the destination inode and then +dirty that page. However, after that we will need to start a transaction +for each processed extent and, if we are ever low on available metadata +space, we may need to flush existing delalloc for all dirty inodes in an +attempt to release metadata space - if that happens we may deadlock: + +* the async reclaim task queued a delalloc work to flush delalloc for + the destination inode of the clone operation; + +* the task executing that delalloc work gets blocked waiting for the + range with the dirty page to be unlocked, which is currently locked + by the task doing the clone operation; + +* the async reclaim task blocks waiting for the delalloc work to complete; + +* the cloning task is waiting on the waitqueue of its reservation ticket + while holding the range with the dirty page locked in the inode's + io_tree; + +* if metadata space is not released by some other task (like delalloc for + some other inode completing for example), the clone task waits forever + and as a consequence the delalloc work and async reclaim tasks will hang + forever as well. Releasing more space on the other hand may require + starting a transaction, which will hang as well when trying to reserve + metadata space, resulting in a deadlock between all these tasks. + +When this happens, traces like the following show up in dmesg/syslog: + + [87452.323003] INFO: task kworker/u16:11:1810830 blocked for more than 120 seconds. + [87452.323644] Tainted: G B W 5.10.0-rc4-btrfs-next-73 #1 + [87452.324248] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. + [87452.324852] task:kworker/u16:11 state:D stack: 0 pid:1810830 ppid: 2 flags:0x00004000 + [87452.325520] Workqueue: btrfs-flush_delalloc btrfs_work_helper [btrfs] + [87452.326136] Call Trace: + [87452.326737] __schedule+0x5d1/0xcf0 + [87452.327390] schedule+0x45/0xe0 + [87452.328174] lock_extent_bits+0x1e6/0x2d0 [btrfs] + [87452.328894] ? finish_wait+0x90/0x90 + [87452.329474] btrfs_invalidatepage+0x32c/0x390 [btrfs] + [87452.330133] ? __mod_memcg_state+0x8e/0x160 + [87452.330738] __extent_writepage+0x2d4/0x400 [btrfs] + [87452.331405] extent_write_cache_pages+0x2b2/0x500 [btrfs] + [87452.332007] ? lock_release+0x20e/0x4c0 + [87452.332557] ? trace_hardirqs_on+0x1b/0xf0 + [87452.333127] extent_writepages+0x43/0x90 [btrfs] + [87452.333653] ? lock_acquire+0x1a3/0x490 + [87452.334177] do_writepages+0x43/0xe0 + [87452.334699] ? __filemap_fdatawrite_range+0xa4/0x100 + [87452.335720] __filemap_fdatawrite_range+0xc5/0x100 + [87452.336500] btrfs_run_delalloc_work+0x17/0x40 [btrfs] + [87452.337216] btrfs_work_helper+0xf1/0x600 [btrfs] + [87452.337838] process_one_work+0x24e/0x5e0 + [87452.338437] worker_thread+0x50/0x3b0 + [87452.339137] ? process_one_work+0x5e0/0x5e0 + [87452.339884] kthread+0x153/0x170 + [87452.340507] ? kthread_mod_delayed_work+0xc0/0xc0 + [87452.341153] ret_from_fork+0x22/0x30 + [87452.341806] INFO: task kworker/u16:1:2426217 blocked for more than 120 seconds. + [87452.342487] Tainted: G B W 5.10.0-rc4-btrfs-next-73 #1 + [87452.343274] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. + [87452.344049] task:kworker/u16:1 state:D stack: 0 pid:2426217 ppid: 2 flags:0x00004000 + [87452.344974] Workqueue: events_unbound btrfs_async_reclaim_metadata_space [btrfs] + [87452.345655] Call Trace: + [87452.346305] __schedule+0x5d1/0xcf0 + [87452.346947] ? kvm_clock_read+0x14/0x30 + [87452.347676] ? wait_for_completion+0x81/0x110 + [87452.348389] schedule+0x45/0xe0 + [87452.349077] schedule_timeout+0x30c/0x580 + [87452.349718] ? _raw_spin_unlock_irqrestore+0x3c/0x60 + [87452.350340] ? lock_acquire+0x1a3/0x490 + [87452.351006] ? try_to_wake_up+0x7a/0xa20 + [87452.351541] ? lock_release+0x20e/0x4c0 + [87452.352040] ? lock_acquired+0x199/0x490 + [87452.352517] ? wait_for_completion+0x81/0x110 + [87452.353000] wait_for_completion+0xab/0x110 + [87452.353490] start_delalloc_inodes+0x2af/0x390 [btrfs] + [87452.353973] btrfs_start_delalloc_roots+0x12d/0x250 [btrfs] + [87452.354455] flush_space+0x24f/0x660 [btrfs] + [87452.355063] btrfs_async_reclaim_metadata_space+0x1bb/0x480 [btrfs] + [87452.355565] process_one_work+0x24e/0x5e0 + [87452.356024] worker_thread+0x20f/0x3b0 + [87452.356487] ? process_one_work+0x5e0/0x5e0 + [87452.356973] kthread+0x153/0x170 + [87452.357434] ? kthread_mod_delayed_work+0xc0/0xc0 + [87452.357880] ret_from_fork+0x22/0x30 + (...) + < stack traces of several tasks waiting for the locks of the inodes of the + clone operation > + (...) + [92867.444138] RSP: 002b:00007ffc3371bbe8 EFLAGS: 00000246 ORIG_RAX: 0000000000000052 + [92867.444624] RAX: ffffffffffffffda RBX: 00007ffc3371bea0 RCX: 00007f61efe73f97 + [92867.445116] RDX: 0000000000000000 RSI: 0000560fbd5d7a40 RDI: 0000560fbd5d8960 + [92867.445595] RBP: 00007ffc3371beb0 R08: 0000000000000001 R09: 0000000000000003 + [92867.446070] R10: 00007ffc3371b996 R11: 0000000000000246 R12: 0000000000000000 + [92867.446820] R13: 000000000000001f R14: 00007ffc3371bea0 R15: 00007ffc3371beb0 + [92867.447361] task:fsstress state:D stack: 0 pid:2508238 ppid:2508153 flags:0x00004000 + [92867.447920] Call Trace: + [92867.448435] __schedule+0x5d1/0xcf0 + [92867.448934] ? _raw_spin_unlock_irqrestore+0x3c/0x60 + [92867.449423] schedule+0x45/0xe0 + [92867.449916] __reserve_bytes+0x4a4/0xb10 [btrfs] + [92867.450576] ? finish_wait+0x90/0x90 + [92867.451202] btrfs_reserve_metadata_bytes+0x29/0x190 [btrfs] + [92867.451815] btrfs_block_rsv_add+0x1f/0x50 [btrfs] + [92867.452412] start_transaction+0x2d1/0x760 [btrfs] + [92867.453216] clone_copy_inline_extent+0x333/0x490 [btrfs] + [92867.453848] ? lock_release+0x20e/0x4c0 + [92867.454539] ? btrfs_search_slot+0x9a7/0xc30 [btrfs] + [92867.455218] btrfs_clone+0x569/0x7e0 [btrfs] + [92867.455952] btrfs_clone_files+0xf6/0x150 [btrfs] + [92867.456588] btrfs_remap_file_range+0x324/0x3d0 [btrfs] + [92867.457213] do_clone_file_range+0xd4/0x1f0 + [92867.457828] vfs_clone_file_range+0x4d/0x230 + [92867.458355] ? lock_release+0x20e/0x4c0 + [92867.458890] ioctl_file_clone+0x8f/0xc0 + [92867.459377] do_vfs_ioctl+0x342/0x750 + [92867.459913] __x64_sys_ioctl+0x62/0xb0 + [92867.460377] do_syscall_64+0x33/0x80 + [92867.460842] entry_SYSCALL_64_after_hwframe+0x44/0xa9 + (...) + < stack traces of more tasks blocked on metadata reservation like the clone + task above, because the async reclaim task has deadlocked > + (...) + +Another thing to notice is that the worker task that is deadlocked when +trying to flush the destination inode of the clone operation is at +btrfs_invalidatepage(). This is simply because the clone operation has a +destination offset greater than the i_size and we only update the i_size +of the destination file after cloning an extent (just like we do in the +buffered write path). + +Since the async reclaim path uses btrfs_start_delalloc_roots() to trigger +the flushing of delalloc for all inodes that have delalloc, add a runtime +flag to an inode to signal it should not be flushed, and for inodes with +that flag set, start_delalloc_inodes() will simply skip them. When the +cloning code needs to dirty a page to copy an inline extent, set that flag +on the inode and then clear it when the clone operation finishes. + +This could be sporadically triggered with test case generic/269 from +fstests, which exercises many fsstress processes running in parallel with +several dd processes filling up the entire filesystem. + +CC: stable@vger.kernel.org # 5.9+ +Fixes: 05a5a7621ce6 ("Btrfs: implement full reflink support for inline extents") +Reviewed-by: Josef Bacik +Signed-off-by: Filipe Manana +Reviewed-by: David Sterba +Signed-off-by: David Sterba +--- + fs/btrfs/btrfs_inode.h | 9 +++++++++ + fs/btrfs/ctree.h | 3 ++- + fs/btrfs/dev-replace.c | 2 +- + fs/btrfs/inode.c | 15 +++++++++++---- + fs/btrfs/ioctl.c | 2 +- + fs/btrfs/reflink.c | 15 +++++++++++++++ + fs/btrfs/space-info.c | 2 +- + 7 files changed, 40 insertions(+), 8 deletions(-) + +diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h +index 92dd86bceae3..7e86ab4841dd 100644 +--- a/fs/btrfs/btrfs_inode.h ++++ b/fs/btrfs/btrfs_inode.h +@@ -35,6 +35,15 @@ enum { + BTRFS_INODE_IN_DELALLOC_LIST, + BTRFS_INODE_HAS_PROPS, + BTRFS_INODE_SNAPSHOT_FLUSH, ++ /* ++ * Set when we are in a context where we need to start a transaction and ++ * have dirty pages with the respective file range locked. This is to ++ * ensure that when reserving space for the transaction, if we are low ++ * on available space and need to flush delalloc, we will not flush ++ * delalloc for this inode, because that could result in a deadlock (on ++ * the file range, inode's io_tree). ++ */ ++ BTRFS_INODE_NO_DELALLOC_FLUSH, + }; + + /* in memory btrfs inode */ +diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h +index 62461239600f..e01545538e07 100644 +--- a/fs/btrfs/ctree.h ++++ b/fs/btrfs/ctree.h +@@ -3001,7 +3001,8 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans, + u32 min_type); + + int btrfs_start_delalloc_snapshot(struct btrfs_root *root); +-int btrfs_start_delalloc_roots(struct btrfs_fs_info *fs_info, u64 nr); ++int btrfs_start_delalloc_roots(struct btrfs_fs_info *fs_info, u64 nr, ++ bool in_reclaim_context); + int btrfs_set_extent_delalloc(struct btrfs_inode *inode, u64 start, u64 end, + unsigned int extra_bits, + struct extent_state **cached_state); +diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c +index 10638537b9ef..d29780463182 100644 +--- a/fs/btrfs/dev-replace.c ++++ b/fs/btrfs/dev-replace.c +@@ -703,7 +703,7 @@ static int btrfs_dev_replace_finishing(struct btrfs_fs_info *fs_info, + * flush all outstanding I/O and inode extent mappings before the + * copy operation is declared as being finished + */ +- ret = btrfs_start_delalloc_roots(fs_info, U64_MAX); ++ ret = btrfs_start_delalloc_roots(fs_info, U64_MAX, false); + if (ret) { + mutex_unlock(&dev_replace->lock_finishing_cancel_unmount); + return ret; +diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c +index 7e8d8169779d..07479250221d 100644 +--- a/fs/btrfs/inode.c ++++ b/fs/btrfs/inode.c +@@ -9389,7 +9389,8 @@ static struct btrfs_delalloc_work *btrfs_alloc_delalloc_work(struct inode *inode + * some fairly slow code that needs optimization. This walks the list + * of all the inodes with pending delalloc and forces them to disk. + */ +-static int start_delalloc_inodes(struct btrfs_root *root, u64 *nr, bool snapshot) ++static int start_delalloc_inodes(struct btrfs_root *root, u64 *nr, bool snapshot, ++ bool in_reclaim_context) + { + struct btrfs_inode *binode; + struct inode *inode; +@@ -9410,6 +9411,11 @@ static int start_delalloc_inodes(struct btrfs_root *root, u64 *nr, bool snapshot + + list_move_tail(&binode->delalloc_inodes, + &root->delalloc_inodes); ++ ++ if (in_reclaim_context && ++ test_bit(BTRFS_INODE_NO_DELALLOC_FLUSH, &binode->runtime_flags)) ++ continue; ++ + inode = igrab(&binode->vfs_inode); + if (!inode) { + cond_resched_lock(&root->delalloc_lock); +@@ -9463,10 +9469,11 @@ int btrfs_start_delalloc_snapshot(struct btrfs_root *root) + if (test_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state)) + return -EROFS; + +- return start_delalloc_inodes(root, &nr, true); ++ return start_delalloc_inodes(root, &nr, true, false); + } + +-int btrfs_start_delalloc_roots(struct btrfs_fs_info *fs_info, u64 nr) ++int btrfs_start_delalloc_roots(struct btrfs_fs_info *fs_info, u64 nr, ++ bool in_reclaim_context) + { + struct btrfs_root *root; + struct list_head splice; +@@ -9489,7 +9496,7 @@ int btrfs_start_delalloc_roots(struct btrfs_fs_info *fs_info, u64 nr) + &fs_info->delalloc_roots); + spin_unlock(&fs_info->delalloc_root_lock); + +- ret = start_delalloc_inodes(root, &nr, false); ++ ret = start_delalloc_inodes(root, &nr, false, in_reclaim_context); + btrfs_put_root(root); + if (ret < 0) + goto out; +diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c +index e8ca229a216b..bd46e107f955 100644 +--- a/fs/btrfs/ioctl.c ++++ b/fs/btrfs/ioctl.c +@@ -4940,7 +4940,7 @@ long btrfs_ioctl(struct file *file, unsigned int + case BTRFS_IOC_SYNC: { + int ret; + +- ret = btrfs_start_delalloc_roots(fs_info, U64_MAX); ++ ret = btrfs_start_delalloc_roots(fs_info, U64_MAX, false); + if (ret) + return ret; + ret = btrfs_sync_fs(inode->i_sb, 1); +diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c +index 99aa87c08912..a646af95dd10 100644 +--- a/fs/btrfs/reflink.c ++++ b/fs/btrfs/reflink.c +@@ -89,6 +89,19 @@ static int copy_inline_to_page(struct btrfs_inode *inode, + if (ret) + goto out_unlock; + ++ /* ++ * After dirtying the page our caller will need to start a transaction, ++ * and if we are low on metadata free space, that can cause flushing of ++ * delalloc for all inodes in order to get metadata space released. ++ * However we are holding the range locked for the whole duration of ++ * the clone/dedupe operation, so we may deadlock if that happens and no ++ * other task releases enough space. So mark this inode as not being ++ * possible to flush to avoid such deadlock. We will clear that flag ++ * when we finish cloning all extents, since a transaction is started ++ * after finding each extent to clone. ++ */ ++ set_bit(BTRFS_INODE_NO_DELALLOC_FLUSH, &inode->runtime_flags); ++ + if (comp_type == BTRFS_COMPRESS_NONE) { + char *map; + +@@ -547,6 +560,8 @@ process_slot: + out: + btrfs_free_path(path); + kvfree(buf); ++ clear_bit(BTRFS_INODE_NO_DELALLOC_FLUSH, &BTRFS_I(inode)->runtime_flags); ++ + return ret; + } + +diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c +index 64099565ab8f..67e55c5479b8 100644 +--- a/fs/btrfs/space-info.c ++++ b/fs/btrfs/space-info.c +@@ -532,7 +532,7 @@ static void shrink_delalloc(struct btrfs_fs_info *fs_info, + + loops = 0; + while ((delalloc_bytes || dio_bytes) && loops < 3) { +- btrfs_start_delalloc_roots(fs_info, items); ++ btrfs_start_delalloc_roots(fs_info, items, true); + + loops++; + if (wait_ordered && !trans) { +-- +cgit v1.2.3-1-gf6bb5 + diff --git a/0005-btrfs-shrink-delalloc-pages-instead-of-full-inodes.patch b/0005-btrfs-shrink-delalloc-pages-instead-of-full-inodes.patch new file mode 100644 index 0000000..0d02fab --- /dev/null +++ b/0005-btrfs-shrink-delalloc-pages-instead-of-full-inodes.patch @@ -0,0 +1,184 @@ +From 0397aa4e6205543d9b3da11794037e94f8735867 Mon Sep 17 00:00:00 2001 +From: Josef Bacik +Date: Mon, 4 Jan 2021 15:24:11 -0500 +Subject: btrfs: shrink delalloc pages instead of full inodes +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Commit 38d715f494f2 ("btrfs: use btrfs_start_delalloc_roots in +shrink_delalloc") cleaned up how we do delalloc shrinking by utilizing +some infrastructure we have in place to flush inodes that we use for +device replace and snapshot. However this introduced a pretty serious +performance regression. The root cause is because before we would +generally use the normal writeback path to reclaim delalloc space, and +for this we would provide it with the number of pages we wanted to +flush. The referenced commit changed this to flush that many inodes, +which drastically increased the amount of space we were flushing in +certain cases, which severely affected performance. + +We cannot revert this patch unfortunately, because Filipe has another +fix that requires the ability to skip flushing inodes that are being +cloned in certain scenarios, which means we need to keep using our +flushing infrastructure or risk re-introducing the deadlock. + +Instead to fix this problem we can go back to providing +btrfs_start_delalloc_roots with a number of pages to flush, and then set +up a writeback_control and utilize sync_inode() to handle the flushing +for us. This gives us the same behavior we had prior to the fix, while +still allowing us to avoid the deadlock that was fixed by Filipe. The +user reported reproducer was a simple untarring of a large tarball of +the source code for Firefox. The results are as follows + +5.9 0m54.258s +5.10 1m26.212s +Patch 0m38.800s + +We are significantly faster because of the work I did around improving +ENOSPC flushing in 5.10 and 5.11, so reverting to the previous write out +behavior gave us a pretty big boost. + +CC: stable@vger.kernel.org # 5.10 +Reported-by: René Rebe +Fixes: 38d715f494f2 ("btrfs: use btrfs_start_delalloc_roots in shrink_delalloc") +Signed-off-by: Josef Bacik +--- + fs/btrfs/inode.c | 60 ++++++++++++++++++++++++++++++++++++--------------- + fs/btrfs/space-info.c | 4 +++- + 2 files changed, 46 insertions(+), 18 deletions(-) + +diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c +index 07479250221d..acc47e2ffb46 100644 +--- a/fs/btrfs/inode.c ++++ b/fs/btrfs/inode.c +@@ -9389,7 +9389,8 @@ static struct btrfs_delalloc_work *btrfs_alloc_delalloc_work(struct inode *inode + * some fairly slow code that needs optimization. This walks the list + * of all the inodes with pending delalloc and forces them to disk. + */ +-static int start_delalloc_inodes(struct btrfs_root *root, u64 *nr, bool snapshot, ++static int start_delalloc_inodes(struct btrfs_root *root, ++ struct writeback_control *wbc, bool snapshot, + bool in_reclaim_context) + { + struct btrfs_inode *binode; +@@ -9398,6 +9399,7 @@ static int start_delalloc_inodes(struct btrfs_root *root, u64 *nr, bool snapshot + struct list_head works; + struct list_head splice; + int ret = 0; ++ bool full_flush = wbc->nr_to_write == LONG_MAX; + + INIT_LIST_HEAD(&works); + INIT_LIST_HEAD(&splice); +@@ -9426,18 +9428,24 @@ static int start_delalloc_inodes(struct btrfs_root *root, u64 *nr, bool snapshot + if (snapshot) + set_bit(BTRFS_INODE_SNAPSHOT_FLUSH, + &binode->runtime_flags); +- work = btrfs_alloc_delalloc_work(inode); +- if (!work) { +- iput(inode); +- ret = -ENOMEM; +- goto out; +- } +- list_add_tail(&work->list, &works); +- btrfs_queue_work(root->fs_info->flush_workers, +- &work->work); +- if (*nr != U64_MAX) { +- (*nr)--; +- if (*nr == 0) ++ if (full_flush) { ++ work = btrfs_alloc_delalloc_work(inode); ++ if (!work) { ++ iput(inode); ++ ret = -ENOMEM; ++ goto out; ++ } ++ list_add_tail(&work->list, &works); ++ btrfs_queue_work(root->fs_info->flush_workers, ++ &work->work); ++ } else { ++ ret = sync_inode(inode, wbc); ++ if (!ret && ++ test_bit(BTRFS_INODE_HAS_ASYNC_EXTENT, ++ &BTRFS_I(inode)->runtime_flags)) ++ ret = sync_inode(inode, wbc); ++ btrfs_add_delayed_iput(inode); ++ if (ret || wbc->nr_to_write <= 0) + goto out; + } + cond_resched(); +@@ -9463,18 +9471,29 @@ out: + + int btrfs_start_delalloc_snapshot(struct btrfs_root *root) + { ++ struct writeback_control wbc = { ++ .nr_to_write = LONG_MAX, ++ .sync_mode = WB_SYNC_NONE, ++ .range_start = 0, ++ .range_end = LLONG_MAX, ++ }; + struct btrfs_fs_info *fs_info = root->fs_info; +- u64 nr = U64_MAX; + + if (test_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state)) + return -EROFS; + +- return start_delalloc_inodes(root, &nr, true, false); ++ return start_delalloc_inodes(root, &wbc, true, false); + } + + int btrfs_start_delalloc_roots(struct btrfs_fs_info *fs_info, u64 nr, + bool in_reclaim_context) + { ++ struct writeback_control wbc = { ++ .nr_to_write = (nr == U64_MAX) ? LONG_MAX : (unsigned long)nr, ++ .sync_mode = WB_SYNC_NONE, ++ .range_start = 0, ++ .range_end = LLONG_MAX, ++ }; + struct btrfs_root *root; + struct list_head splice; + int ret; +@@ -9488,6 +9507,13 @@ int btrfs_start_delalloc_roots(struct btrfs_fs_info *fs_info, u64 nr, + spin_lock(&fs_info->delalloc_root_lock); + list_splice_init(&fs_info->delalloc_roots, &splice); + while (!list_empty(&splice) && nr) { ++ /* ++ * Reset nr_to_write here so we know that we're doing a full ++ * flush. ++ */ ++ if (nr == U64_MAX) ++ wbc.nr_to_write = LONG_MAX; ++ + root = list_first_entry(&splice, struct btrfs_root, + delalloc_root); + root = btrfs_grab_root(root); +@@ -9496,9 +9522,9 @@ int btrfs_start_delalloc_roots(struct btrfs_fs_info *fs_info, u64 nr, + &fs_info->delalloc_roots); + spin_unlock(&fs_info->delalloc_root_lock); + +- ret = start_delalloc_inodes(root, &nr, false, in_reclaim_context); ++ ret = start_delalloc_inodes(root, &wbc, false, in_reclaim_context); + btrfs_put_root(root); +- if (ret < 0) ++ if (ret < 0 || wbc.nr_to_write <= 0) + goto out; + spin_lock(&fs_info->delalloc_root_lock); + } +diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c +index 67e55c5479b8..e8347461c8dd 100644 +--- a/fs/btrfs/space-info.c ++++ b/fs/btrfs/space-info.c +@@ -532,7 +532,9 @@ static void shrink_delalloc(struct btrfs_fs_info *fs_info, + + loops = 0; + while ((delalloc_bytes || dio_bytes) && loops < 3) { +- btrfs_start_delalloc_roots(fs_info, items, true); ++ u64 nr_pages = min(delalloc_bytes, to_reclaim) >> PAGE_SHIFT; ++ ++ btrfs_start_delalloc_roots(fs_info, nr_pages, true); + + loops++; + if (wait_ordered && !trans) { +-- +cgit v1.2.3-1-gf6bb5 + diff --git a/0005-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch b/0005-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch deleted file mode 100644 index 2a46e8c..0000000 --- a/0005-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 2059ba0b121bb366467fcefb35cef22cc23e2fe9 Mon Sep 17 00:00:00 2001 -From: Eric Dumazet -Date: Mon, 21 Dec 2020 20:14:02 +0100 -Subject: iwlwifi: Fix regression from UDP segmentation support - -Eric's tentative fix from -https://lore.kernel.org/linux-wireless/CANn89iJWG2n1s3j7EdpwkQQv-9dOY02V+FGYHAWguO4JiqWuJA@mail.gmail.com/ ---- - drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c -index fe1c538cd718..c27743a58f81 100644 ---- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c -+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c -@@ -833,6 +833,7 @@ iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes, - - next = skb_gso_segment(skb, netdev_flags); - skb_shinfo(skb)->gso_size = mss; -+ skb_shinfo(skb)->gso_type = ipv4 ? SKB_GSO_TCPV4 : SKB_GSO_TCPV6; - if (WARN_ON_ONCE(IS_ERR(next))) - return -EINVAL; - else if (next) -@@ -855,6 +856,7 @@ iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes, - - if (tcp_payload_len > mss) { - skb_shinfo(tmp)->gso_size = mss; -+ skb_shinfo(tmp)->gso_type = ipv4 ? SKB_GSO_TCPV4 : SKB_GSO_TCPV6; - } else { - if (qos) { - u8 *qc; --- -cgit v1.2.3-1-gf6bb5 - diff --git a/0006-ALSA-hda-hdmi-fix-incorrect-mutex-unlock-in-silent_stream_disable.patch b/0006-ALSA-hda-hdmi-fix-incorrect-mutex-unlock-in-silent_stream_disable.patch deleted file mode 100644 index 8de04e9..0000000 --- a/0006-ALSA-hda-hdmi-fix-incorrect-mutex-unlock-in-silent_stream_disable.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 3d5c5fdcee0f9a94deb0472e594706018b00aa31 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Fri, 1 Jan 2021 09:38:52 +0100 -Subject: ALSA: hda/hdmi: Fix incorrect mutex unlock in silent_stream_disable() - -The silent_stream_disable() function introduced by the commit -b1a5039759cb ("ALSA: hda/hdmi: fix silent stream for first playback to -DP") takes the per_pin->lock mutex, but it unlocks the wrong one, -spec->pcm_lock, which causes a deadlock. This patch corrects it. - -Fixes: b1a5039759cb ("ALSA: hda/hdmi: fix silent stream for first playback to DP") -Reported-by: Jan Alexander Steffens (heftig) -Cc: -Acked-by: Kai Vehmanen -Link: https://lore.kernel.org/r/20210101083852.12094-1-tiwai@suse.de -Signed-off-by: Takashi Iwai ---- - sound/pci/hda/patch_hdmi.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c -index 1e4a4b83fbf6f..74d246a0dc6de 100644 ---- a/sound/pci/hda/patch_hdmi.c -+++ b/sound/pci/hda/patch_hdmi.c -@@ -1733,7 +1733,7 @@ static void silent_stream_disable(struct hda_codec *codec, - per_pin->silent_stream = false; - - unlock_out: -- mutex_unlock(&spec->pcm_lock); -+ mutex_unlock(&per_pin->lock); - } - - /* update ELD and jack state via audio component */ --- -cgit 1.2.3-1.el7 - diff --git a/0007-Revert-drm-amd-display-Fix-memory-leaks-in-S3-resume.patch b/0007-Revert-drm-amd-display-Fix-memory-leaks-in-S3-resume.patch deleted file mode 100644 index 0d0381f..0000000 --- a/0007-Revert-drm-amd-display-Fix-memory-leaks-in-S3-resume.patch +++ /dev/null @@ -1,40 +0,0 @@ -From a70000cd95f7d55a8df0a7f5e0ed41c5656a0f53 Mon Sep 17 00:00:00 2001 -From: Alex Deucher -Date: Tue, 5 Jan 2021 11:45:45 -0500 -Subject: Revert "drm/amd/display: Fix memory leaks in S3 resume" - -This reverts commit a135a1b4c4db1f3b8cbed9676a40ede39feb3362. - -This leads to blank screens on some boards after replugging a -display. Revert until we understand the root cause and can -fix both the leak and the blank screen after replug. - -Cc: Stylon Wang -Cc: Harry Wentland -Cc: Nicholas Kazlauskas -Cc: Andre Tomt -Cc: Oleksandr Natalenko -Signed-off-by: Alex Deucher -Cc: stable@vger.kernel.org -Signed-off-by: Greg Kroah-Hartman ---- - drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -index 30c6b9edddb5..0f7749e9424d 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -2278,8 +2278,7 @@ void amdgpu_dm_update_connector_after_detect( - - drm_connector_update_edid_property(connector, - aconnector->edid); -- aconnector->num_modes = drm_add_edid_modes(connector, aconnector->edid); -- drm_connector_list_update(connector); -+ drm_add_edid_modes(connector, aconnector->edid); - - if (aconnector->dc_link->aux_mode) - drm_dp_cec_set_edid(&aconnector->dm_dp_aux.aux, --- -cgit v1.2.3-1-gf6bb5 - diff --git a/PKGBUILD b/PKGBUILD index bfc151c..2d052cd 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -22,7 +22,7 @@ _custom=1 pkgbase=linux-ck _supver=5 _majver=10 -_minver=5 +_minver=6 _gccpatchver='20201113' _gccpatchger='10.1' _gccpatchker='5.8' @@ -48,12 +48,10 @@ source=( https://www.kernel.org/pub/linux/kernel/v${_supver}.x/${_srcname}.tar.{xz,sign} config # the main kernel config file 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch - 0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch - 0003-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch - 0004-btrfs-Fix-500-2000-performance-regression-w-5.10.patch - 0005-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch - 0006-ALSA-hda-hdmi-fix-incorrect-mutex-unlock-in-silent_stream_disable.patch - 0007-Revert-drm-amd-display-Fix-memory-leaks-in-S3-resume.patch + 0002-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch + 0003-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch + 0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-low-on-free-metadata-space.patch + 0005-btrfs-shrink-delalloc-pages-instead-of-full-inodes.patch linux-ck-patch-${_supver}.${_majver}-${_ckpatchversion}.xz::http://ck.kolivas.org/patches/${_supver}.0/${_supver}.${_majver}/${_supver}.${_majver}-${_ckpatchversion}/patch-${_supver}.${_majver}-${_ckpatchversion}.xz kernel_gcc_patch-${_gccpatchver}.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/${_gccpatchver}.tar.gz ath9k-regdom-hack.patch @@ -64,16 +62,14 @@ validpgpkeys=( '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman ) # https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc -b2sums=('25b71eb091ea6526a7ebfef5bc201b76d612e5138b6b3caa708f90e76196c30d1865c223e2084a118a3883a9620d47c9576b1ab7db2c8d9c0f204dda7c640eab' +b2sums=('2da9e47f6524ecb50db9f515b9f281f08fbcb323f6e4ddb225c2b2f6379787c37efee25589e49286e13ff663c414a422b680912739400afab89f0ebaf741d33b' 'SKIP' - 'a1f82af8c657988680850a065e935cb33afa01f7db7791a47719271c9f2e3e99686402c245fe7fc2705e5101317a617f8e0c9fbdf0cdcf9b02469804deb71c5a' + 'e8f7b8d77e57b8df10e27903347ba6995a98d15c37bdd5d243c00ffcfe8eb2bb58f11ab11dafdc005cb109ad2e55ec43f8d95caad7a2ce013928ae86b1547954' '2f9195675270d79d735a3aaec25887c2f80b76eae98be8fcc5fd59ab71d925c5ee20ec5e2a015deb68b61bc2cc7f56f546a22cb96ee038e2e24c2c9dd5c3f79f' - '92b212fc863b86e795ce4b122372ebe7feae04e31a39b7edcf9f7f25552f936ad1de4b2c7a226feab9d61868a8590550c39c2bd893f4bdabc62a750fab9cc391' 'd8297e09f552a2d6bb24c2ba10481fd2b407057f3b24278e72a89233473460d339c83838791989773623178b5af80588fb4c484da2931f1040e313cce7ceca00' - 'b00c189e803e9469cece5906af28f086b10cfb228eec694b95a47625ecbd345a443609349f4fda5b340ef5e9834a41c5cae60400cf8fbdd1c23b6cb24e17dbe3' '15d9b32ff1ad4c897b097173de259cdb89bbbf6ab0230faf4557eca511a59c1f2c76b85be30d25cf9534f91e1af43e72d072bc82dbf2219eadf772822f573d38' - 'f5cebaad0bc7188a88444ce3b07f80e98414422d2cc18c251698f8694772ed39a4e22b3fe6702aa21dc4764ff727e4fbebafb501e260b52a36c9feef0fe8537a' - '6db620d44c908f14fec4dd74b345ee2829fff1fad8783deb3c31cc9c4e298c269711dcc478dfd72c72a5d8b36447d6ff892589eb322bf0811810cd861805d3eb' + '3878d2a269de30b1c6cddcf91264f9c1dd4bccdaf0539257789f80ab473ced748e5bba395781850f48af79b3c5d92f8c68153c93a5241c308eb1a2636a3e983c' + '6c3881ba6e209925084c348c058a0f61695b3aadda74aa3dbef68fd48d6c995296e8cb6c4014dcf48e22905c5ac03be554ed688b9afe47d05745dd321196ae04' '067f3389124fdd937ca69e9e9568b1b3194791960a093e81037051eb6d25e80b40bf7f60c61373ac9e92bff9db760766009b1e6f9ee8429a883bb7fce2d60f8a' '7f1eb5938472f57748216bd00e0c875feab99fc1c5cb89babfea467ee30ca5c8e9fc5a691efe2e602bef1ea79820c5383822d7cec354b48d23321ccda8ee8127' 'b6ef77035611139fa9a6d5b8d30570e2781bb4da483bb569884b0bd0129b62e0b82a5a6776fefe43fee801c70d39de1ea4d4c177f7cedd5ac135e3c64f7b895a' @@ -96,12 +92,10 @@ prepare() { # Hotfixes echo "Applying hotfixes" patch -p1 -i ../0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch - patch -p1 -i ../0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch - patch -p1 -i ../0003-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch - patch -p1 -i ../0004-btrfs-Fix-500-2000-performance-regression-w-5.10.patch - patch -p1 -i ../0005-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch - patch -p1 -i ../0006-ALSA-hda-hdmi-fix-incorrect-mutex-unlock-in-silent_stream_disable.patch - patch -p1 -i ../0007-Revert-drm-amd-display-Fix-memory-leaks-in-S3-resume.patch + patch -p1 -i ../0002-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_special_driver-list.patch + patch -p1 -i ../0003-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch + patch -p1 -i ../0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-low-on-free-metadata-space.patch + patch -p1 -i ../0005-btrfs-shrink-delalloc-pages-instead-of-full-inodes.patch # fix naming schema in EXTRAVERSION of ck patch set diff --git a/config b/config index 2e9fb58..9a737e8 100644 --- a/config +++ b/config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 5.10.4 Kernel Configuration +# Linux/x86 5.10.6 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (GCC) 10.2.0" CONFIG_CC_IS_GCC=y @@ -223,7 +223,7 @@ CONFIG_HAVE_UID16=y CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_HAVE_PCSPKR_PLATFORM=y CONFIG_BPF=y -# CONFIG_EXPERT is not set +CONFIG_EXPERT=y CONFIG_UID16=y CONFIG_MULTIUSER=y CONFIG_SGETMASK_SYSCALL=y @@ -408,6 +408,7 @@ CONFIG_X86_MINIMUM_CPU_FAMILY=64 CONFIG_X86_DEBUGCTLMSR=y CONFIG_IA32_FEAT_CTL=y CONFIG_X86_VMX_FEATURE_NAMES=y +# CONFIG_PROCESSOR_SELECT is not set CONFIG_CPU_SUP_INTEL=y CONFIG_CPU_SUP_AMD=y CONFIG_CPU_SUP_HYGON=y @@ -774,6 +775,7 @@ CONFIG_HAVE_KVM_NO_POLL=y CONFIG_KVM_XFER_TO_GUEST_WORK=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=m +# CONFIG_KVM_WERROR is not set CONFIG_KVM_INTEL=m CONFIG_KVM_AMD=m # CONFIG_KVM_AMD_SEV is not set @@ -9508,10 +9510,10 @@ CONFIG_BINARY_PRINTF=y # CONFIG_RAID6_PQ=m # CONFIG_RAID6_PQ_BENCHMARK is not set -CONFIG_RAID6_PQ_DEFAULT_ALG_BOOL=y -CONFIG_RAID6_PQ_DEFAULT_ALG="sse2x4" CONFIG_LINEAR_RANGES=y CONFIG_PACKING=y +CONFIG_RAID6_PQ_DEFAULT_ALG_BOOL=y +CONFIG_RAID6_PQ_DEFAULT_ALG="sse2x4" CONFIG_BITREVERSE=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y @@ -9589,7 +9591,6 @@ CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED=y -CONFIG_DMA_VIRT_OPS=y CONFIG_SWIOTLB=y CONFIG_DMA_COHERENT_POOL=y CONFIG_DMA_CMA=y -- cgit v1.2.1