summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO34
-rw-r--r--0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch6
-rw-r--r--0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-uns.patch49
-rw-r--r--0002-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_sp.patch (renamed from 0003-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_sp.patch)4
-rw-r--r--0003-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch (renamed from 0005-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch)4
-rw-r--r--0004-btrfs-Fix-500-2000-performance-regression-w-5.10.patch61
-rw-r--r--0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-lo.patch325
-rw-r--r--0005-btrfs-shrink-delalloc-pages-instead-of-full-inodes.patch184
-rw-r--r--0006-ALSA-hda-hdmi-fix-locking-in-silent_stream_disable.patch26
-rw-r--r--0007-Revert-drm-amd-display-Fix-memory-leaks-in-S3-resume.patch40
-rw-r--r--PKGBUILD59
-rw-r--r--config3
12 files changed, 555 insertions, 240 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 935d6cc9498..9e265e949d1 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = linux-ck
- pkgver = 5.10.5
- pkgrel = 3
+ pkgver = 5.10.6
+ pkgrel = 1
url = https://wiki.archlinux.org/index.php/Linux-ck
arch = x86_64
license = GPL2
@@ -12,32 +12,28 @@ pkgbase = linux-ck
makedepends = tar
makedepends = xz
options = !strip
- source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.5.tar.xz
- source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.5.tar.sign
+ source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.6.tar.xz
+ source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.6.tar.sign
source = config
source = enable_additional_cpu_optimizations-20201113.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/20201113.tar.gz
source = http://ck.kolivas.org/patches/5.0/5.10/5.10-ck1/patch-5.10-ck1.xz
source = 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
- source = 0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-uns.patch
- source = 0003-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_sp.patch
- source = 0004-btrfs-Fix-500-2000-performance-regression-w-5.10.patch
- source = 0005-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch
- source = 0006-ALSA-hda-hdmi-fix-locking-in-silent_stream_disable.patch
- source = 0007-Revert-drm-amd-display-Fix-memory-leaks-in-S3-resume.patch
+ source = 0002-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_sp.patch
+ source = 0003-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch
+ source = 0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-lo.patch
+ source = 0005-btrfs-shrink-delalloc-pages-instead-of-full-inodes.patch
validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886
validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E
- b2sums = 25b71eb091ea6526a7ebfef5bc201b76d612e5138b6b3caa708f90e76196c30d1865c223e2084a118a3883a9620d47c9576b1ab7db2c8d9c0f204dda7c640eab
+ b2sums = 2da9e47f6524ecb50db9f515b9f281f08fbcb323f6e4ddb225c2b2f6379787c37efee25589e49286e13ff663c414a422b680912739400afab89f0ebaf741d33b
b2sums = SKIP
- b2sums = cb3a58e4eef8395b75887d94a84bba25f05fbec8f576a791623057a190a1d51b412a19ecf1b600ac3f9f6c46968eb0e130d571743e61afc231a97146ee4b52d0
+ b2sums = 37df0c9fc2214da9e94f0fb38ddc9c1f5bcf6279cacf918166efc3a0a8a9433ee10a95232992a108944160cf020fc3c240ef2fb8023581dc9cac11f973d7985d
b2sums = 7f1eb5938472f57748216bd00e0c875feab99fc1c5cb89babfea467ee30ca5c8e9fc5a691efe2e602bef1ea79820c5383822d7cec354b48d23321ccda8ee8127
b2sums = 067f3389124fdd937ca69e9e9568b1b3194791960a093e81037051eb6d25e80b40bf7f60c61373ac9e92bff9db760766009b1e6f9ee8429a883bb7fce2d60f8a
- b2sums = f73d83132caebb708937da40b765722923cacc3842182dade837a7f5c9a26899cbdfac67541d4f319160a7faa3510d7bd8a4de89cb72a8c87cf5cedb49bffc30
- b2sums = 0a1ebcafd728b511b501d347e1d6aa4250ab29d9f4701f4bd0e8d8ea9043d386e568f47aee1879874667c2c58da3ab3b97f68caa50d8ea2c6fa7cd9b49b278ab
- b2sums = f54cd64693b0b50761359c94b2773fdd17834d83bb275c1a90dd939087befe9595085a356d71a704302d335e6f1ac15e8c761d6c8ab4285f7e698e7fdc6340e7
- b2sums = 4a07725fde51b7141607f1fc6b5e542c2f2db7fff05b8eba5de49a272fed0c92cd72d89636678d4112445b740d002332b14e3b6e8a862a707462e9e899976cfa
- b2sums = 574065657486cf0e65e5c592cf9c743996ae4e02485219f620b8b055970442c29e2e3fa3b00dbf7ed43297f6744e890b72e7703361cc5f7378c1bfab72d8801f
- b2sums = 9ee18ce9d18de97e8ee93f47c6a1702403ae14fabdc98ed327b31c9a63e51c7383fdf9a03b3b41b9094a34dc0e3f76683af0c020d240751c1c407b3d6ba9e508
- b2sums = e441aa9788fb5ce67e4efa19d62dccfb6165eda08e5ba16deeaabb6ea4714866e9c979075324ae534428d58b7195be77c9bece5e26cee0ed72bddd19b6941e4e
+ b2sums = b42730a806a63dbf905f448a3282dec72a950ef7d16a3531d977dcae3b5c2685a5c5dd10a58e345d57084a6212353dc2f2f0102021d13c1557092e564f81eaf5
+ b2sums = a5dea5bb6df6fb517009ad5b104c2ea8e93ed880393a1412ca2d7fc8047abccc9c72076e40d1d4133cadc9048040846cc9bdc91e30c4d601ad5963d13498503e
+ b2sums = 9a8723104239ba4646dd0c76c5a60128892954dd2faee69ca5c5d1251c9694de8fd528ca063a2add1401ad1375ad0dcc2560ca03a1bfd03b161d34ccd25b686a
+ b2sums = e0da90b08fb03658dca9c42ac287c04d9b35969a15165c0f1fc7e11290de272b892abb58f5c7aabe22899f53f5bc39539f58768b8012d92145ba2fd8b89898a7
+ b2sums = 2b180269f934469d6ef6f0f8474dd947c7a8e9344cf3bbecac6a9c325d7bfb89d234eb15c4422709acaffd30ebeda2ec06c91a8c1128631a839186e8b273eb65
pkgname = linux-ck
pkgdesc = The Linux-ck kernel and modules with the ck1 patchset featuring MuQSS CPU scheduler
diff --git a/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch b/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
index 3d475b5ee73..1bd450d72b9 100644
--- a/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
+++ b/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
@@ -1,7 +1,7 @@
-From 3925c72c3245f3bdef8224114f665acb3ba65434 Mon Sep 17 00:00:00 2001
+From 2c517031bd7c5d34a05980c656ce2b6c6fbf1f78 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 1/8] ZEN: Add sysctl and CONFIG to disallow unprivileged
+Subject: [PATCH 1/6] ZEN: Add sysctl and CONFIG to disallow unprivileged
CLONE_NEWUSER
Our default behavior continues to match the vanilla kernel.
@@ -63,7 +63,7 @@ index 0872a5a2e759..a40d8afeb1bb 100644
bool "PID Namespaces"
default y
diff --git a/kernel/fork.c b/kernel/fork.c
-index dc55f68a6ee3..15d29085d1ff 100644
+index c675fdbd3dce..9266039e28e4 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -97,6 +97,10 @@
diff --git a/0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-uns.patch b/0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-uns.patch
deleted file mode 100644
index f7bae6e5103..00000000000
--- a/0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-uns.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 7c2e4c1ef7e5c78a2e668e744563c9bd5f2b488f Mon Sep 17 00:00:00 2001
-From: Edward Vear <edwardvear@gmail.com>
-Date: Tue, 27 Oct 2020 00:02:03 -0700
-Subject: [PATCH 2/8] 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 <edwardvear@gmail.com>
-Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
----
- 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 */
---
-2.30.0
-
diff --git a/0003-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_sp.patch b/0002-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_sp.patch
index 4d13734f62a..2cd0cba1b2c 100644
--- a/0003-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_sp.patch
+++ b/0002-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_sp.patch
@@ -1,7 +1,7 @@
-From ab24a3058ff19f9578b93a4073773e11a2d3b9bf Mon Sep 17 00:00:00 2001
+From eeab2ccf0d788a6895b3b9a21c505d78ceec43e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20H=C3=A4dicke?= <felixhaedicke@web.de>
Date: Thu, 19 Nov 2020 09:22:32 +0100
-Subject: [PATCH 3/8] HID: quirks: Add Apple Magic Trackpad 2 to
+Subject: [PATCH 2/6] HID: quirks: Add Apple Magic Trackpad 2 to
hid_have_special_driver list
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
diff --git a/0005-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch b/0003-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch
index bc0a651d404..b474b4a8dc5 100644
--- a/0005-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch
+++ b/0003-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch
@@ -1,7 +1,7 @@
-From c954d99bf3e3ceaefd1c1b5293393a8614bd7571 Mon Sep 17 00:00:00 2001
+From 631f3ba6f0debde7efcadc90fb9abef10a271148 Mon Sep 17 00:00:00 2001
From: Eric Dumazet <edumazet@google.com>
Date: Mon, 21 Dec 2020 20:14:02 +0100
-Subject: [PATCH 5/8] iwlwifi: Fix regression from UDP segmentation support
+Subject: [PATCH 3/6] iwlwifi: Fix regression from UDP segmentation support
Eric's tentative fix from
https://lore.kernel.org/linux-wireless/CANn89iJWG2n1s3j7EdpwkQQv-9dOY02V+FGYHAWguO4JiqWuJA@mail.gmail.com/
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 4a488761d4f..00000000000
--- a/0004-btrfs-Fix-500-2000-performance-regression-w-5.10.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 24141c21ecdb5d95665d74b31c4a0b76110606bb Mon Sep 17 00:00:00 2001
-From: Josef Bacik <josef@toxicpanda.com>
-Date: Wed, 23 Dec 2020 14:41:00 -0500
-Subject: [PATCH 4/8] 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) {
---
-2.30.0
-
diff --git a/0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-lo.patch b/0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-lo.patch
new file mode 100644
index 00000000000..97ea363cf29
--- /dev/null
+++ b/0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-lo.patch
@@ -0,0 +1,325 @@
+From e763d7a19f256a8861ee2c1eedaaf42f603488d2 Mon Sep 17 00:00:00 2001
+From: Filipe Manana <fdmanana@suse.com>
+Date: Wed, 2 Dec 2020 11:55:58 +0000
+Subject: [PATCH 4/6] 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 <josef@toxicpanda.com>
+Signed-off-by: Filipe Manana <fdmanana@suse.com>
+Reviewed-by: David Sterba <dsterba@suse.com>
+Signed-off-by: David Sterba <dsterba@suse.com>
+---
+ 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 @@ static int btrfs_clone(struct inode *src, struct inode *inode,
+ 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) {
+--
+2.30.0
+
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 00000000000..e06f23cc27e
--- /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 <josef@toxicpanda.com>
+Date: Mon, 4 Jan 2021 15:24:11 -0500
+Subject: [PATCH 5/6] 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 <rene@exactcode.de>
+Fixes: 38d715f494f2 ("btrfs: use btrfs_start_delalloc_roots in shrink_delalloc")
+Signed-off-by: Josef Bacik <josef@toxicpanda.com>
+---
+ 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 @@ static int start_delalloc_inodes(struct btrfs_root *root, u64 *nr, bool snapshot
+
+ 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) {
+--
+2.30.0
+
diff --git a/0006-ALSA-hda-hdmi-fix-locking-in-silent_stream_disable.patch b/0006-ALSA-hda-hdmi-fix-locking-in-silent_stream_disable.patch
deleted file mode 100644
index 3efb48d1cb1..00000000000
--- a/0006-ALSA-hda-hdmi-fix-locking-in-silent_stream_disable.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a204be2dae771de5b62758710938b96a398a52cc Mon Sep 17 00:00:00 2001
-From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
-Date: Fri, 1 Jan 2021 06:20:32 +0100
-Subject: [PATCH 6/8] ALSA: hda/hdmi: fix locking in silent_stream_disable
-
-The code unlocked the wrong lock, leading to deadlocks.
----
- 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 2ddc27db8c01..d12b4799c3cb 100644
---- a/sound/pci/hda/patch_hdmi.c
-+++ b/sound/pci/hda/patch_hdmi.c
-@@ -1736,7 +1736,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 */
---
-2.30.0
-
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 2297f857e27..00000000000
--- 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 <alexdeucher@gmail.com>
-Date: Tue, 5 Jan 2021 11:45:45 -0500
-Subject: [PATCH 7/8] 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 <stylon.wang@amd.com>
-Cc: Harry Wentland <harry.wentland@amd.com>
-Cc: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
-Cc: Andre Tomt <andre@tomt.net>
-Cc: Oleksandr Natalenko <oleksandr@natalenko.name>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-Cc: stable@vger.kernel.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- 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,
---
-2.30.0
-
diff --git a/PKGBUILD b/PKGBUILD
index be3a5cb083a..df6429b916f 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -64,8 +64,8 @@ _localmodcfg=
### IMPORTANT: Do no edit below this line unless you know what you're doing
pkgbase=linux-ck
-pkgver=5.10.5
-pkgrel=3
+pkgver=5.10.6
+pkgrel=1
_ckpatchversion=1
arch=(x86_64)
url="https://wiki.archlinux.org/index.php/Linux-ck"
@@ -82,29 +82,25 @@ source=(
"enable_additional_cpu_optimizations-$_gcc_more_v.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/$_gcc_more_v.tar.gz"
"http://ck.kolivas.org/patches/5.0/5.10/5.10-ck${_ckpatchversion}/$_ckpatch.xz"
0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
- 0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-uns.patch
- 0003-HID-quirks-Add-Apple-Magic-Trackpad-2-to-hid_have_sp.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-locking-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_sp.patch
+ 0003-iwlwifi-Fix-regression-from-UDP-segmentation-support.patch
+ 0004-btrfs-fix-deadlock-when-cloning-inline-extent-and-lo.patch
+ 0005-btrfs-shrink-delalloc-pages-instead-of-full-inodes.patch
)
validpgpkeys=(
'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
'647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
)
-b2sums=('25b71eb091ea6526a7ebfef5bc201b76d612e5138b6b3caa708f90e76196c30d1865c223e2084a118a3883a9620d47c9576b1ab7db2c8d9c0f204dda7c640eab'
+b2sums=('2da9e47f6524ecb50db9f515b9f281f08fbcb323f6e4ddb225c2b2f6379787c37efee25589e49286e13ff663c414a422b680912739400afab89f0ebaf741d33b'
'SKIP'
- 'cb3a58e4eef8395b75887d94a84bba25f05fbec8f576a791623057a190a1d51b412a19ecf1b600ac3f9f6c46968eb0e130d571743e61afc231a97146ee4b52d0'
+ '37df0c9fc2214da9e94f0fb38ddc9c1f5bcf6279cacf918166efc3a0a8a9433ee10a95232992a108944160cf020fc3c240ef2fb8023581dc9cac11f973d7985d'
'7f1eb5938472f57748216bd00e0c875feab99fc1c5cb89babfea467ee30ca5c8e9fc5a691efe2e602bef1ea79820c5383822d7cec354b48d23321ccda8ee8127'
'067f3389124fdd937ca69e9e9568b1b3194791960a093e81037051eb6d25e80b40bf7f60c61373ac9e92bff9db760766009b1e6f9ee8429a883bb7fce2d60f8a'
- 'f73d83132caebb708937da40b765722923cacc3842182dade837a7f5c9a26899cbdfac67541d4f319160a7faa3510d7bd8a4de89cb72a8c87cf5cedb49bffc30'
- '0a1ebcafd728b511b501d347e1d6aa4250ab29d9f4701f4bd0e8d8ea9043d386e568f47aee1879874667c2c58da3ab3b97f68caa50d8ea2c6fa7cd9b49b278ab'
- 'f54cd64693b0b50761359c94b2773fdd17834d83bb275c1a90dd939087befe9595085a356d71a704302d335e6f1ac15e8c761d6c8ab4285f7e698e7fdc6340e7'
- '4a07725fde51b7141607f1fc6b5e542c2f2db7fff05b8eba5de49a272fed0c92cd72d89636678d4112445b740d002332b14e3b6e8a862a707462e9e899976cfa'
- '574065657486cf0e65e5c592cf9c743996ae4e02485219f620b8b055970442c29e2e3fa3b00dbf7ed43297f6744e890b72e7703361cc5f7378c1bfab72d8801f'
- '9ee18ce9d18de97e8ee93f47c6a1702403ae14fabdc98ed327b31c9a63e51c7383fdf9a03b3b41b9094a34dc0e3f76683af0c020d240751c1c407b3d6ba9e508'
- 'e441aa9788fb5ce67e4efa19d62dccfb6165eda08e5ba16deeaabb6ea4714866e9c979075324ae534428d58b7195be77c9bece5e26cee0ed72bddd19b6941e4e')
+ 'b42730a806a63dbf905f448a3282dec72a950ef7d16a3531d977dcae3b5c2685a5c5dd10a58e345d57084a6212353dc2f2f0102021d13c1557092e564f81eaf5'
+ 'a5dea5bb6df6fb517009ad5b104c2ea8e93ed880393a1412ca2d7fc8047abccc9c72076e40d1d4133cadc9048040846cc9bdc91e30c4d601ad5963d13498503e'
+ '9a8723104239ba4646dd0c76c5a60128892954dd2faee69ca5c5d1251c9694de8fd528ca063a2add1401ad1375ad0dcc2560ca03a1bfd03b161d34ccd25b686a'
+ 'e0da90b08fb03658dca9c42ac287c04d9b35969a15165c0f1fc7e11290de272b892abb58f5c7aabe22899f53f5bc39539f58768b8012d92145ba2fd8b89898a7'
+ '2b180269f934469d6ef6f0f8474dd947c7a8e9344cf3bbecac6a9c325d7bfb89d234eb15c4422709acaffd30ebeda2ec06c91a8c1128631a839186e8b273eb65')
export KBUILD_BUILD_HOST=archlinux
export KBUILD_BUILD_USER=$pkgbase
@@ -134,32 +130,23 @@ prepare() {
# and can easily overwhelm a system with 32 GB of memory using a tmpfs build
# partition ... this was introduced by FS#66260, see:
# https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/linux&id=663b08666b269eeeeaafbafaee07fd03389ac8d7
- sed -i -e 's/CONFIG_CGROUP_BPF=y/# CONFIG_CGROUP_BPF is not set/' \
- -i -e 's/CONFIG_BPF_LSM=y/# CONFIG_BPF_LSM is not set/' \
- -i -e 's/CONFIG_USERMODE_DRIVER=y/# CONFIG_BPF_PRELOAD is not set/' \
- -i -e '/CONFIG_BPF_PRELOAD=y/d' \
- -i -e '/CONFIG_BPF_PRELOAD_UMD=m/d' \
- -i -e '/CONFIG_BPF_STREAM_PARSER=y/g' \
- -i -e 's/CONFIG_BPF_LIRC_MODE2=y/# CONFIG_BPF_LIRC_MODE2 is not set/' \
- -i -e 's/CONFIG_DEBUG_INFO=y/# CONFIG_DEBUG_INFO is not set/' \
- -i -e '/# CONFIG_DEBUG_INFO_REDUCED is not set/d' \
- -i -e '/# CONFIG_DEBUG_INFO_COMPRESSED is not set/d' \
- -i -e '/# CONFIG_DEBUG_INFO_SPLIT is not set/d' \
- -i -e '/CONFIG_DEBUG_INFO_DWARF4=y/d' \
- -i -e '/CONFIG_DEBUG_INFO_BTF=y/d' \
- -i -e '/# CONFIG_GDB_SCRIPTS is not set/d' \
- -i -e 's/CONFIG_BPF_KPROBE_OVERRIDE=y/# CONFIG_BPF_KPROBE_OVERRIDE is not set/' ./.config
+ scripts/config --disable CONFIG_DEBUG_INFO
+ scripts/config --disable CONFIG_CGROUP_BPF
+ scripts/config --disable CONFIG_BPF_LSM
+ scripts/config --disable CONFIG_BPF_PRELOAD
+ scripts/config --disable CONFIG_BPF_LIRC_MODE2
+ scripts/config --disable CONFIG_BPF_KPROBE_OVERRIDE
# https://bbs.archlinux.org/viewtopic.php?pid=1824594#p1824594
- sed -i -e 's/# CONFIG_PSI_DEFAULT_DISABLED is not set/CONFIG_PSI_DEFAULT_DISABLED=y/' ./.config
+ scripts/config --enable CONFIG_PSI_DEFAULT_DISABLED
# https://bbs.archlinux.org/viewtopic.php?pid=1863567#p1863567
- sed -i -e '/CONFIG_LATENCYTOP=/ s,y,n,' \
- -i -e '/CONFIG_SCHED_DEBUG=/ s,y,n,' ./.config
+ scripts/config --disable CONFIG_LATENCYTOP
+ scripts/config --disable CONFIG_SCHED_DEBUG
# FS#66613
# https://bugzilla.kernel.org/show_bug.cgi?id=207173#c6
- sed -i -e 's/CONFIG_KVM_WERROR=y/# CONFIG_KVM_WERROR is not set/' ./.config
+ scripts/config --disable CONFIG_KVM_WERROR
# fix naming schema in EXTRAVERSION of ck patch set
sed -i -re "s/^(.EXTRAVERSION).*$/\1 = /" "../${_ckpatch}"
diff --git a/config b/config
index 70c17a550e4..3d8e59193b0 100644
--- a/config
+++ b/config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 5.10.4-arch1 Kernel Configuration
+# Linux/x86 5.10.6-arch1 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="gcc (GCC) 10.2.0"
CONFIG_CC_IS_GCC=y
@@ -9753,7 +9753,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