Home Home > GIT Browse > openSUSE-15.0
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKernel Build Daemon <kbuild@suse.de>2019-10-15 07:28:52 +0200
committerKernel Build Daemon <kbuild@suse.de>2019-10-15 07:28:52 +0200
commit815fece854139c311b848a91250b03893d14915f (patch)
tree1dd833d026926616a2807a8cb997b25a7a997745
parentcefd0aaa3eee413e5437915a2f63415f1e3fd770 (diff)
parent41bab8a68f60cf6548998c4f43e9373a10f7870e (diff)
Merge branch 'SLE15' into openSUSE-15.0openSUSE-15.0
-rw-r--r--.gitattributes2
-rw-r--r--.gitignore1
-rw-r--r--extra-gitconfig9
-rw-r--r--patches.suse/blk-wbt-abstract-out-end-IO-completion-handler.patch57
-rw-r--r--patches.suse/blk-wbt-fix-has-sleeper-queueing-check.patch51
-rw-r--r--patches.suse/blk-wbt-improve-waking-of-tasks.patch159
-rw-r--r--patches.suse/blk-wbt-move-disable-check-into-get_limit.patch64
-rw-r--r--patches.suse/blk-wbt-use-wq_has_sleeper-for-wq-active-check.patch51
-rw-r--r--patches.suse/cxgb4-fix-endianness-for-vlan-value-in-cxgb4_tc_flow.patch33
-rw-r--r--patches.suse/cxgb4-offload-VLAN-flows-regardless-of-VLAN-ethtype.patch4
-rw-r--r--patches.suse/msft-hv-1948-scsi-storvsc-setup-1-1-mapping-between-hardware-queu.patch37
-rw-r--r--patches.suse/powerpc-pseries-Remove-confusing-warning-message.patch51
-rw-r--r--patches.suse/tcp-Don-t-dequeue-SYN-FIN-segments-from-write-queue.patch94
-rwxr-xr-xscripts/check-patch-blacklist14
-rwxr-xr-xscripts/git-pre-commit1
-rwxr-xr-xscripts/git_sort/git_sort.py10
-rwxr-xr-xscripts/git_sort/merge_tool.py8
-rwxr-xr-xscripts/git_sort/series_sort.py3
-rwxr-xr-xscripts/install-git-hooks72
-rwxr-xr-xscripts/run_oldconfig.sh3
-rwxr-xr-xscripts/sequence-patch.sh2
-rwxr-xr-xscripts/sort_supported.rb89
-rwxr-xr-xscripts/stableids21
-rwxr-xr-xscripts/supported-conf-fixup6
-rw-r--r--series.conf11
25 files changed, 810 insertions, 43 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000..e1144dd46d
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+*.changes merge=rpm-changes
+symsets-*.tar.gz diff=symsets
diff --git a/.gitignore b/.gitignore
index f1ef184788..03196c99ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@
# git files that we don't want to ignore even it they are dot-files
!.gitignore
+!.gitattributes
# package directories created by scripts/tar-up_and_run_mbuild.sh
kernel-source
diff --git a/extra-gitconfig b/extra-gitconfig
new file mode 100644
index 0000000000..823148ec92
--- /dev/null
+++ b/extra-gitconfig
@@ -0,0 +1,9 @@
+# This file is not automatically read by git. It must be included explicitly,
+# for instance via an include directive in the repository-specific
+# configuration file ($GIT_DIR/config). That directive should be added
+# automatically by scripts/install-git-hooks.
+[merge "rpm-changes"]
+ name = *.changes merge driver
+ driver = scripts/rpm-changes-merge.pl %A %O %B
+[diff "symsets"]
+ textconv = scripts/list-symsets
diff --git a/patches.suse/blk-wbt-abstract-out-end-IO-completion-handler.patch b/patches.suse/blk-wbt-abstract-out-end-IO-completion-handler.patch
new file mode 100644
index 0000000000..bdc87b0fc0
--- /dev/null
+++ b/patches.suse/blk-wbt-abstract-out-end-IO-completion-handler.patch
@@ -0,0 +1,57 @@
+From 061a5427530633de93ace4ef001b99961984af62 Mon Sep 17 00:00:00 2001
+From: Jens Axboe <axboe@kernel.dk>
+Date: Sun, 26 Aug 2018 10:09:06 -0600
+Subject: [PATCH] blk-wbt: abstract out end IO completion handler
+Git-commit: 061a5427530633de93ace4ef001b99961984af62
+Patch-mainline: v4.19-rc2
+References: bsc#1135873
+
+Prep patch for calling the handler from a different context,
+no functional changes in this patch.
+
+Tested-by: Agarwal, Anchal <anchalag@amazon.com>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Acked-by: Jan Kara <jack@suse.cz>
+
+---
+ block/blk-wbt.c | 19 +++++++++++++------
+ 1 file changed, 13 insertions(+), 6 deletions(-)
+
+--- a/block/blk-wbt.c
++++ b/block/blk-wbt.c
+@@ -118,15 +118,11 @@ static void rwb_wake_all(struct rq_wb *r
+ }
+ }
+
+-void __wbt_done(struct rq_wb *rwb, enum wbt_flags wb_acct)
++static void wbt_rqw_done(struct rq_wb *rwb, struct rq_wait *rqw,
++ enum wbt_flags wb_acct)
+ {
+- struct rq_wait *rqw;
+ int inflight, limit;
+
+- if (!(wb_acct & WBT_TRACKED))
+- return;
+-
+- rqw = get_rq_wait(rwb, wb_acct & WBT_KSWAPD);
+ inflight = atomic_dec_return(&rqw->inflight);
+
+ /*
+@@ -161,6 +157,17 @@ void __wbt_done(struct rq_wb *rwb, enum
+ }
+ }
+
++void __wbt_done(struct rq_wb *rwb, enum wbt_flags wb_acct)
++{
++ struct rq_wait *rqw;
++
++ if (!(wb_acct & WBT_TRACKED))
++ return;
++
++ rqw = get_rq_wait(rwb, wb_acct & WBT_KSWAPD);
++ wbt_rqw_done(rwb, rqw, wb_acct);
++}
++
+ /*
+ * Called on completion of a request. Note that it's also called when
+ * a request is merged, when the request gets freed.
diff --git a/patches.suse/blk-wbt-fix-has-sleeper-queueing-check.patch b/patches.suse/blk-wbt-fix-has-sleeper-queueing-check.patch
new file mode 100644
index 0000000000..50f7453be0
--- /dev/null
+++ b/patches.suse/blk-wbt-fix-has-sleeper-queueing-check.patch
@@ -0,0 +1,51 @@
+From c45e6a037a536530bd25781ac7c989e52deb2a63 Mon Sep 17 00:00:00 2001
+From: Jens Axboe <axboe@kernel.dk>
+Date: Mon, 20 Aug 2018 13:22:27 -0600
+Subject: [PATCH] blk-wbt: fix has-sleeper queueing check
+Git-commit: c45e6a037a536530bd25781ac7c989e52deb2a63
+Patch-mainline: v4.19-rc1
+References: bsc#1135873
+
+We need to do this inside the loop as well, or we can allow new
+IO to supersede previous IO.
+
+Tested-by: Anchal Agarwal <anchalag@amazon.com>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Acked-by: Jan Kara <jack@suse.cz>
+
+---
+ block/blk-wbt.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/block/blk-wbt.c
++++ b/block/blk-wbt.c
+@@ -519,8 +519,10 @@ static void __wbt_wait(struct rq_wb *rwb
+ {
+ struct rq_wait *rqw = get_rq_wait(rwb, current_is_kswapd());
+ DECLARE_WAITQUEUE(wait, current);
++ bool has_sleeper;
+
+- if (!wq_has_sleeper(&rqw->wait) &&
++ has_sleeper = wq_has_sleeper(&rqw->wait);
++ if (!has_sleeper &&
+ atomic_inc_below(&rqw->inflight, get_limit(rwb, rw)))
+ return;
+
+@@ -528,7 +530,8 @@ static void __wbt_wait(struct rq_wb *rwb
+ do {
+ set_current_state(TASK_UNINTERRUPTIBLE);
+
+- if (atomic_inc_below(&rqw->inflight, get_limit(rwb, rw)))
++ if (!has_sleeper &&
++ atomic_inc_below(&rqw->inflight, get_limit(rwb, rw)))
+ break;
+
+ if (lock) {
+@@ -537,6 +540,7 @@ static void __wbt_wait(struct rq_wb *rwb
+ spin_lock_irq(lock);
+ } else
+ io_schedule();
++ has_sleeper = false;
+ } while (1);
+
+ __set_current_state(TASK_RUNNING);
diff --git a/patches.suse/blk-wbt-improve-waking-of-tasks.patch b/patches.suse/blk-wbt-improve-waking-of-tasks.patch
new file mode 100644
index 0000000000..ef9fa3aa3b
--- /dev/null
+++ b/patches.suse/blk-wbt-improve-waking-of-tasks.patch
@@ -0,0 +1,159 @@
+From 38cfb5a45ee013bfab5d1ae4c4738815e744b440 Mon Sep 17 00:00:00 2001
+From: Jens Axboe <axboe@kernel.dk>
+Date: Sun, 26 Aug 2018 10:10:05 -0600
+Subject: [PATCH] blk-wbt: improve waking of tasks
+Git-commit: 38cfb5a45ee013bfab5d1ae4c4738815e744b440
+Patch-mainline: v4.19-rc2
+References: bsc#1135873
+
+We have two potential issues:
+
+1) After commit 2887e41b910b, we only wake one process at the time when
+ we finish an IO. We really want to wake up as many tasks as can
+ queue IO. Before this commit, we woke up everyone, which could cause
+ a thundering herd issue.
+
+2) A task can potentially consume two wakeups, causing us to (in
+ practice) miss a wakeup.
+
+Fix both by providing our own wakeup function, which stops
+__wake_up_common() from waking up more tasks if we fail to get a
+queueing token. With the strict ordering we have on the wait list, this
+wakes the right tasks and the right amount of tasks.
+
+Based on a patch from Jianchao Wang <jianchao.w.wang@oracle.com>.
+
+Tested-by: Agarwal, Anchal <anchalag@amazon.com>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Acked-by: Jan Kara <jack@suse.cz>
+
+---
+ block/blk-wbt.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++--------
+ 1 file changed, 58 insertions(+), 9 deletions(-)
+
+--- a/block/blk-wbt.c
++++ b/block/blk-wbt.c
+@@ -118,8 +118,7 @@ static void rwb_wake_all(struct rq_wb *r
+ }
+ }
+
+-static void wbt_rqw_done(struct rq_wb *rwb, struct rq_wait *rqw,
+- enum wbt_flags wb_acct)
++static void wbt_rqw_done(struct rq_wb *rwb, struct rq_wait *rqw)
+ {
+ int inflight, limit;
+
+@@ -153,7 +152,7 @@ static void wbt_rqw_done(struct rq_wb *r
+ int diff = limit - inflight;
+
+ if (!inflight || diff >= rwb->wb_background / 2)
+- wake_up(&rqw->wait);
++ wake_up_all(&rqw->wait);
+ }
+ }
+
+@@ -165,7 +164,7 @@ void __wbt_done(struct rq_wb *rwb, enum
+ return;
+
+ rqw = get_rq_wait(rwb, wb_acct & WBT_KSWAPD);
+- wbt_rqw_done(rwb, rqw, wb_acct);
++ wbt_rqw_done(rwb, rqw);
+ }
+
+ /*
+@@ -516,6 +515,35 @@ static inline unsigned int get_limit(str
+ return limit;
+ }
+
++struct wbt_wait_data {
++ struct wait_queue_entry wq;
++ struct task_struct *task;
++ struct rq_wb *rwb;
++ struct rq_wait *rqw;
++ unsigned long rw;
++ bool got_token;
++};
++
++static int wbt_wake_function(struct wait_queue_entry *curr, unsigned int mode,
++ int wake_flags, void *key)
++{
++ struct wbt_wait_data *data = container_of(curr, struct wbt_wait_data,
++ wq);
++
++ /*
++ * If we fail to get a budget, return -1 to interrupt the wake up
++ * loop in __wake_up_common.
++ */
++ if (!atomic_inc_below(&data->rqw->inflight,
++ get_limit(data->rwb, data->rw)))
++ return -1;
++
++ data->got_token = true;
++ list_del_init(&curr->entry);
++ wake_up_process(data->task);
++ return 1;
++}
++
+ /*
+ * Block if we will exceed our limit, or if we are currently waiting for
+ * the timer to kick off queuing again.
+@@ -525,7 +553,16 @@ static void __wbt_wait(struct rq_wb *rwb
+ __acquires(lock)
+ {
+ struct rq_wait *rqw = get_rq_wait(rwb, current_is_kswapd());
+- DECLARE_WAITQUEUE(wait, current);
++ struct wbt_wait_data data = {
++ .wq = {
++ .func = wbt_wake_function,
++ .entry = LIST_HEAD_INIT(data.wq.entry),
++ },
++ .task = current,
++ .rwb = rwb,
++ .rqw = rqw,
++ .rw = rw,
++ };
+ bool has_sleeper;
+
+ has_sleeper = wq_has_sleeper(&rqw->wait);
+@@ -533,13 +570,25 @@ static void __wbt_wait(struct rq_wb *rwb
+ atomic_inc_below(&rqw->inflight, get_limit(rwb, rw)))
+ return;
+
+- add_wait_queue_exclusive(&rqw->wait, &wait);
++ prepare_to_wait_exclusive(&rqw->wait, &data.wq, TASK_UNINTERRUPTIBLE);
+ do {
+ set_current_state(TASK_UNINTERRUPTIBLE);
++ if (data.got_token)
++ break;
+
+ if (!has_sleeper &&
+- atomic_inc_below(&rqw->inflight, get_limit(rwb, rw)))
++ atomic_inc_below(&rqw->inflight, get_limit(rwb, rw))) {
++ finish_wait(&rqw->wait, &data.wq);
++
++ /*
++ * We raced with wbt_wake_function() getting a token,
++ * which means we now have two. Put our local token
++ * and wake anyone else potentially waiting for one.
++ */
++ if (data.got_token)
++ wbt_rqw_done(rwb, rqw);
+ break;
++ }
+
+ if (lock) {
+ spin_unlock_irq(lock);
+@@ -547,11 +596,11 @@ static void __wbt_wait(struct rq_wb *rwb
+ spin_lock_irq(lock);
+ } else
+ io_schedule();
++
+ has_sleeper = false;
+ } while (1);
+
+- __set_current_state(TASK_RUNNING);
+- remove_wait_queue(&rqw->wait, &wait);
++ finish_wait(&rqw->wait, &data.wq);
+ }
+
+ static inline bool wbt_should_throttle(struct rq_wb *rwb, struct bio *bio)
diff --git a/patches.suse/blk-wbt-move-disable-check-into-get_limit.patch b/patches.suse/blk-wbt-move-disable-check-into-get_limit.patch
new file mode 100644
index 0000000000..12f4b2350d
--- /dev/null
+++ b/patches.suse/blk-wbt-move-disable-check-into-get_limit.patch
@@ -0,0 +1,64 @@
+From ffa358dcaae1f2f00926484e712e06daa8953cb4 Mon Sep 17 00:00:00 2001
+From: Jens Axboe <axboe@kernel.dk>
+Date: Mon, 20 Aug 2018 13:24:25 -0600
+Subject: [PATCH] blk-wbt: move disable check into get_limit()
+Git-commit: ffa358dcaae1f2f00926484e712e06daa8953cb4
+Patch-mainline: v4.19-rc1
+References: bsc#1135873
+
+Check it in one place, instead of in multiple places.
+
+Tested-by: Anchal Agarwal <anchalag@amazon.com>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Acked-by: Jan Kara <jack@suse.cz>
+
+---
+ block/blk-wbt.c | 23 +++++++----------------
+ 1 file changed, 7 insertions(+), 16 deletions(-)
+
+--- a/block/blk-wbt.c
++++ b/block/blk-wbt.c
+@@ -481,6 +481,13 @@ static inline unsigned int get_limit(str
+ unsigned int limit;
+
+ /*
++ * If we got disabled, just return UINT_MAX. This ensures that
++ * we'll properly inc a new IO, and dec+wakeup at the end.
++ */
++ if (!rwb_enabled(rwb))
++ return UINT_MAX;
++
++ /*
+ * At this point we know it's a buffered write. If this is
+ * kswapd trying to free memory, or REQ_SYNC is set, set, then
+ * it's WB_SYNC_ALL writeback, and we'll use the max limit for
+@@ -513,16 +520,6 @@ static void __wbt_wait(struct rq_wb *rwb
+ struct rq_wait *rqw = get_rq_wait(rwb, current_is_kswapd());
+ DECLARE_WAITQUEUE(wait, current);
+
+- /*
+- * inc it here even if disabled, since we'll dec it at completion.
+- * this only happens if the task was sleeping in __wbt_wait(),
+- * and someone turned it off at the same time.
+- */
+- if (!rwb_enabled(rwb)) {
+- atomic_inc(&rqw->inflight);
+- return;
+- }
+-
+ if (!waitqueue_active(&rqw->wait)
+ && atomic_inc_below(&rqw->inflight, get_limit(rwb, rw)))
+ return;
+@@ -531,12 +528,6 @@ static void __wbt_wait(struct rq_wb *rwb
+ do {
+ set_current_state(TASK_UNINTERRUPTIBLE);
+
+- if (!rwb_enabled(rwb)) {
+- atomic_inc(&rqw->inflight);
+- break;
+- }
+-
+-
+ if (atomic_inc_below(&rqw->inflight, get_limit(rwb, rw)))
+ break;
+
diff --git a/patches.suse/blk-wbt-use-wq_has_sleeper-for-wq-active-check.patch b/patches.suse/blk-wbt-use-wq_has_sleeper-for-wq-active-check.patch
new file mode 100644
index 0000000000..02de7c0780
--- /dev/null
+++ b/patches.suse/blk-wbt-use-wq_has_sleeper-for-wq-active-check.patch
@@ -0,0 +1,51 @@
+From b78820937b4762b7d30b807d7156bec1d89e4dd3 Mon Sep 17 00:00:00 2001
+From: Jens Axboe <axboe@kernel.dk>
+Date: Mon, 20 Aug 2018 13:20:50 -0600
+Subject: [PATCH] blk-wbt: use wq_has_sleeper() for wq active check
+Git-commit: b78820937b4762b7d30b807d7156bec1d89e4dd3
+Patch-mainline: v4.19-rc1
+References: bsc#1135873
+
+We need the memory barrier before checking the list head,
+use the appropriate helper for this. The matching queue
+side memory barrier is provided by set_current_state().
+
+Tested-by: Anchal Agarwal <anchalag@amazon.com>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Acked-by: Jan Kara <jack@suse.cz>
+
+---
+ block/blk-wbt.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/block/blk-wbt.c
++++ b/block/blk-wbt.c
+@@ -113,7 +113,7 @@ static void rwb_wake_all(struct rq_wb *r
+ for (i = 0; i < WBT_NUM_RWQ; i++) {
+ struct rq_wait *rqw = &rwb->rq_wait[i];
+
+- if (waitqueue_active(&rqw->wait))
++ if (wq_has_sleeper(&rqw->wait))
+ wake_up_all(&rqw->wait);
+ }
+ }
+@@ -153,7 +153,7 @@ void __wbt_done(struct rq_wb *rwb, enum
+ if (inflight && inflight >= limit)
+ return;
+
+- if (waitqueue_active(&rqw->wait)) {
++ if (wq_has_sleeper(&rqw->wait)) {
+ int diff = limit - inflight;
+
+ if (!inflight || diff >= rwb->wb_background / 2)
+@@ -520,8 +520,8 @@ static void __wbt_wait(struct rq_wb *rwb
+ struct rq_wait *rqw = get_rq_wait(rwb, current_is_kswapd());
+ DECLARE_WAITQUEUE(wait, current);
+
+- if (!waitqueue_active(&rqw->wait)
+- && atomic_inc_below(&rqw->inflight, get_limit(rwb, rw)))
++ if (!wq_has_sleeper(&rqw->wait) &&
++ atomic_inc_below(&rqw->inflight, get_limit(rwb, rw)))
+ return;
+
+ add_wait_queue_exclusive(&rqw->wait, &wait);
diff --git a/patches.suse/cxgb4-fix-endianness-for-vlan-value-in-cxgb4_tc_flow.patch b/patches.suse/cxgb4-fix-endianness-for-vlan-value-in-cxgb4_tc_flow.patch
new file mode 100644
index 0000000000..36de0cc2d2
--- /dev/null
+++ b/patches.suse/cxgb4-fix-endianness-for-vlan-value-in-cxgb4_tc_flow.patch
@@ -0,0 +1,33 @@
+From: Kumar Sanghvi <kumaras@chelsio.com>
+Date: Wed, 17 Jan 2018 12:13:34 +0530
+Subject: cxgb4: fix endianness for vlan value in cxgb4_tc_flower
+Patch-mainline: v4.15
+Git-commit: 100d39af5048aecb00522a128ec264781ba7ecfa
+References: bsc#1064802 bsc#1066129
+
+Don't change endianness when assigning vlan value in cxgb4_tc_flower
+code when processing flow match parameters. The value gets converted
+to network order as part of filtering code in set_filter_wr.
+
+Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
+Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
+@@ -205,8 +205,8 @@ static void cxgb4_process_flow_match(str
+ VLAN_PRIO_SHIFT);
+ vlan_tci_mask = mask->vlan_id | (mask->vlan_priority <<
+ VLAN_PRIO_SHIFT);
+- fs->val.ivlan = cpu_to_be16(vlan_tci);
+- fs->mask.ivlan = cpu_to_be16(vlan_tci_mask);
++ fs->val.ivlan = vlan_tci;
++ fs->mask.ivlan = vlan_tci_mask;
+
+ /* Chelsio adapters use ivlan_vld bit to match vlan packets
+ * as 802.1Q. Also, when vlan tag is present in packets,
diff --git a/patches.suse/cxgb4-offload-VLAN-flows-regardless-of-VLAN-ethtype.patch b/patches.suse/cxgb4-offload-VLAN-flows-regardless-of-VLAN-ethtype.patch
index ab6e3009b3..468d850a39 100644
--- a/patches.suse/cxgb4-offload-VLAN-flows-regardless-of-VLAN-ethtype.patch
+++ b/patches.suse/cxgb4-offload-VLAN-flows-regardless-of-VLAN-ethtype.patch
@@ -22,8 +22,8 @@ Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
@@ -208,6 +208,9 @@ static void cxgb4_process_flow_match(str
- fs->val.ivlan = cpu_to_be16(vlan_tci);
- fs->mask.ivlan = cpu_to_be16(vlan_tci_mask);
+ fs->val.ivlan = vlan_tci;
+ fs->mask.ivlan = vlan_tci_mask;
+ fs->val.ivlan_vld = 1;
+ fs->mask.ivlan_vld = 1;
diff --git a/patches.suse/msft-hv-1948-scsi-storvsc-setup-1-1-mapping-between-hardware-queu.patch b/patches.suse/msft-hv-1948-scsi-storvsc-setup-1-1-mapping-between-hardware-queu.patch
new file mode 100644
index 0000000000..f12668b0c2
--- /dev/null
+++ b/patches.suse/msft-hv-1948-scsi-storvsc-setup-1-1-mapping-between-hardware-queu.patch
@@ -0,0 +1,37 @@
+From: Long Li <longli@microsoft.com>
+Date: Fri, 6 Sep 2019 10:24:20 -0700
+Patch-mainline: v5.4-rc2
+Subject: scsi: storvsc: setup 1:1 mapping between hardware queue and CPU queue
+Git-commit: 0ed8810276907c8a633dc8cecc48dabb6678cd23
+References: bsc#1140729
+
+storvsc doesn't use a dedicated hardware queue for a given CPU queue. When
+issuing I/O, it selects returning CPU (hardware queue) dynamically based on
+vmbus channel usage across all channels.
+
+This patch advertises num_present_cpus() as number of hardware queues. This
+will have upper layer setup 1:1 mapping between hardware queue and CPU
+queue and avoid unnecessary locking when issuing I/O.
+
+Link: https://lore.kernel.org/r/1567790660-48142-1-git-send-email-longli@linuxonhyperv.com
+Signed-off-by: Long Li <longli@microsoft.com>
+Reviewed-by: Michael Kelley <mikelley@microsoft.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Acked-by: Olaf Hering <ohering@suse.de>
+---
+ drivers/scsi/storvsc_drv.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
+--- a/drivers/scsi/storvsc_drv.c
++++ b/drivers/scsi/storvsc_drv.c
+@@ -1837,8 +1837,7 @@ static int storvsc_probe(struct hv_device *device,
+ /*
+ * Set the number of HW queues we are supporting.
+ */
+- if (stor_device->num_sc != 0)
+- host->nr_hw_queues = stor_device->num_sc + 1;
++ host->nr_hw_queues = num_present_cpus();
+
+ /*
+ * Set the error handler work queue.
diff --git a/patches.suse/powerpc-pseries-Remove-confusing-warning-message.patch b/patches.suse/powerpc-pseries-Remove-confusing-warning-message.patch
new file mode 100644
index 0000000000..4242ff5188
--- /dev/null
+++ b/patches.suse/powerpc-pseries-Remove-confusing-warning-message.patch
@@ -0,0 +1,51 @@
+From 4ab8a485f7bc69e04e3e8d75f62bdcac5f4ed02e Mon Sep 17 00:00:00 2001
+From: Laurent Dufour <ldufour@linux.ibm.com>
+Date: Tue, 1 Oct 2019 15:29:28 +0200
+Subject: [PATCH] powerpc/pseries: Remove confusing warning message.
+
+References: bsc#1109158
+Patch-mainline: queued
+Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git
+Git-commit: 4ab8a485f7bc69e04e3e8d75f62bdcac5f4ed02e
+
+Since commit 1211ee61b4a8 ("powerpc/pseries: Read TLB Block Invalidate
+Characteristics"), a warning message is displayed when booting a guest
+on top of KVM:
+
+ lpar: arch/powerpc/platforms/pseries/lpar.c pseries_lpar_read_hblkrm_characteristics Error calling get-system-parameter (0xfffffffd)
+
+This message is displayed because this hypervisor is not supporting
+the H_BLOCK_REMOVE hcall and thus is not exposing the corresponding
+feature.
+
+Reading the TLB Block Invalidate Characteristics should not be done if
+the feature is not exposed.
+
+Fixes: 1211ee61b4a8 ("powerpc/pseries: Read TLB Block Invalidate Characteristics")
+Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
+Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/20191001132928.72555-1-ldufour@linux.ibm.com
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/platforms/pseries/lpar.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c
+index b53359258d99..f87a5c64e24d 100644
+--- a/arch/powerpc/platforms/pseries/lpar.c
++++ b/arch/powerpc/platforms/pseries/lpar.c
+@@ -1419,6 +1419,9 @@ void __init pseries_lpar_read_hblkrm_characteristics(void)
+ unsigned char local_buffer[SPLPAR_TLB_BIC_MAXLENGTH];
+ int call_status, len, idx, bpsize;
+
++ if (!firmware_has_feature(FW_FEATURE_BLOCK_REMOVE))
++ return;
++
+ spin_lock(&rtas_data_buf_lock);
+ memset(rtas_data_buf, 0, RTAS_DATA_BUF_SIZE);
+ call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
+--
+2.23.0
+
diff --git a/patches.suse/tcp-Don-t-dequeue-SYN-FIN-segments-from-write-queue.patch b/patches.suse/tcp-Don-t-dequeue-SYN-FIN-segments-from-write-queue.patch
new file mode 100644
index 0000000000..e7270ede2d
--- /dev/null
+++ b/patches.suse/tcp-Don-t-dequeue-SYN-FIN-segments-from-write-queue.patch
@@ -0,0 +1,94 @@
+From: Christoph Paasch <cpaasch@apple.com>
+Date: Fri, 13 Sep 2019 13:08:19 -0700
+Subject: tcp: Don't dequeue SYN/FIN-segments from write-queue
+Patch-mainline: 4.14.146
+Git-commit: ba2ddb43f270e6492ccce4fc42fc32c611de8f68
+References: git-gixes
+
+If a SYN/FIN-segment is on the write-queue, skb->len is 0, but the
+segment actually has been transmitted. end_seq and seq of the tcp_skb_cb
+in that case will indicate this difference.
+
+We should not remove such segments from the write-queue as we might be
+in SYN_SENT-state and a retransmission-timer is running. When that one
+fires, packets_out will be 1, but the write-queue would be empty,
+resulting in:
+
+[ 61.280214] ------------[ cut here ]------------
+[ 61.281307] WARNING: CPU: 0 PID: 0 at net/ipv4/tcp_timer.c:429 tcp_retransmit_timer+0x18f9/0x2660
+[ 61.283498] Modules linked in:
+[ 61.284084] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.14.142 #58
+[ 61.285214] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.5.1 01/01/2011
+[ 61.286644] task: ffffffff8401e1c0 task.stack: ffffffff84000000
+[ 61.287758] RIP: 0010:tcp_retransmit_timer+0x18f9/0x2660
+[ 61.288715] RSP: 0018:ffff88806ce07cb8 EFLAGS: 00010206
+[ 61.289669] RAX: ffffffff8401e1c0 RBX: ffff88805c998b00 RCX: 0000000000000006
+[ 61.290968] RDX: 0000000000000100 RSI: 0000000000000000 RDI: ffff88805c9994d8
+[ 61.292314] RBP: ffff88805c99919a R08: ffff88807fff901c R09: ffff88807fff9008
+[ 61.293547] R10: ffff88807fff9017 R11: ffff88807fff9010 R12: ffff88805c998b30
+[ 61.294834] R13: ffffffff844b9380 R14: 0000000000000000 R15: ffff88805c99930c
+[ 61.296086] FS: 0000000000000000(0000) GS:ffff88806ce00000(0000) knlGS:0000000000000000
+[ 61.297523] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+[ 61.298646] CR2: 00007f721da50ff8 CR3: 0000000004014002 CR4: 00000000001606f0
+[ 61.299944] Call Trace:
+[ 61.300403] <IRQ>
+[ 61.300806] ? kvm_sched_clock_read+0x21/0x30
+[ 61.301689] ? sched_clock+0x5/0x10
+[ 61.302433] ? sched_clock_cpu+0x18/0x170
+[ 61.303173] tcp_write_timer_handler+0x2c1/0x7a0
+[ 61.304038] tcp_write_timer+0x13e/0x160
+[ 61.304794] call_timer_fn+0x14a/0x5f0
+[ 61.305480] ? tcp_write_timer_handler+0x7a0/0x7a0
+[ 61.306364] ? __next_timer_interrupt+0x140/0x140
+[ 61.307229] ? _raw_spin_unlock_irq+0x24/0x40
+[ 61.308033] ? tcp_write_timer_handler+0x7a0/0x7a0
+[ 61.308887] ? tcp_write_timer_handler+0x7a0/0x7a0
+[ 61.309760] run_timer_softirq+0xc41/0x1080
+[ 61.310539] ? trigger_dyntick_cpu.isra.33+0x180/0x180
+[ 61.311506] ? ktime_get+0x13f/0x1c0
+[ 61.312232] ? clockevents_program_event+0x10d/0x2f0
+[ 61.313158] __do_softirq+0x20b/0x96b
+[ 61.313889] irq_exit+0x1a7/0x1e0
+[ 61.314513] smp_apic_timer_interrupt+0xfc/0x4d0
+[ 61.315386] apic_timer_interrupt+0x8f/0xa0
+[ 61.316129] </IRQ>
+
+Followed by a panic.
+
+So, before removing an skb with skb->len == 0, let's make sure that the
+skb is really empty by checking the end_seq and seq.
+
+This patch needs to be backported only to 4.14 and older (among those
+that applied the backport of fdfc5c8594c2).
+
+Reported-by: Luis Henriques <lhenriques@suse.com>
+Fixes: fdfc5c8594c2 ("tcp: remove empty skb from write queue in error cases")
+Cc: Eric Dumazet <edumazet@google.com>
+Cc: Jason Baron <jbaron@akamai.com>
+Cc: Vladimir Rutsky <rutsky@google.com>
+Cc: Soheil Hassas Yeganeh <soheil@google.com>
+Cc: Neal Cardwell <ncardwell@google.com>
+Signed-off-by: Christoph Paasch <cpaasch@apple.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ net/ipv4/tcp.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
+index efe767e20d01..c1f59a53f68f 100644
+--- a/net/ipv4/tcp.c
++++ b/net/ipv4/tcp.c
+@@ -922,7 +922,8 @@ static int tcp_send_mss(struct sock *sk, int *size_goal, int flags)
+ */
+ static void tcp_remove_empty_skb(struct sock *sk, struct sk_buff *skb)
+ {
+- if (skb && !skb->len) {
++ if (skb && !skb->len &&
++ TCP_SKB_CB(skb)->end_seq == TCP_SKB_CB(skb)->seq) {
+ tcp_unlink_write_queue(skb, sk);
+ tcp_check_send_head(sk, skb);
+ sk_wmem_free_skb(sk, skb);
+--
+2.23.0
+
diff --git a/scripts/check-patch-blacklist b/scripts/check-patch-blacklist
new file mode 100755
index 0000000000..7063dd5af1
--- /dev/null
+++ b/scripts/check-patch-blacklist
@@ -0,0 +1,14 @@
+#!/bin/bash
+# check-patch-blacklist blacklist patch-filename < patch-content
+hash=$(grep -Ei "^Git-commit:[ \t]+[a-f0-9]{40}\>")
+if [ -n "$hash" ] ; then
+ hash=$(echo "${hash#*: }" | head -c 40)
+ blacklist=$(grep -Ei "^$hash\>" < "$1")
+ if [ -n "$blacklist" ]; then
+ echo "Patch $2
+blacklisted: $blacklist
+
+Please remove from blacklist if you really think this patch should be included."
+ exit 1
+ fi
+fi
diff --git a/scripts/git-pre-commit b/scripts/git-pre-commit
index 60b211c327..e8161e9c73 100755
--- a/scripts/git-pre-commit
+++ b/scripts/git-pre-commit
@@ -45,6 +45,7 @@ while read stat file garbage; do
git cat-file blob :$file >"$tmp"
"$dir/check-patchhdr" $update --stdin "$file" <"$tmp" || err=1
"$dir/check-patchfmt" --stdin "$file" <"$tmp" || err=1
+ "$dir/check-patch-blacklist" $(dirname "$dir")/blacklist.conf "$file" <$tmp || err=1
esac
done
diff --git a/scripts/git_sort/git_sort.py b/scripts/git_sort/git_sort.py
index e9a62e4fad..c521dfbcfa 100755
--- a/scripts/git_sort/git_sort.py
+++ b/scripts/git_sort/git_sort.py
@@ -215,10 +215,11 @@ remotes = (
Head(RepoURL("horms/ipvs-next.git")),
Head(RepoURL("klassert/ipsec.git")),
Head(RepoURL("klassert/ipsec-next.git")),
- Head(RepoURL("mkp/scsi.git"), "queue"),
- Head(RepoURL("mkp/scsi.git"), "fixes"),
+ Head(RepoURL("kvalo/wireless-drivers-next.git")),
Head(RepoURL("mkp/scsi.git"), "4.19/scsi-queue"),
Head(RepoURL("mkp/scsi.git"), "5.0/scsi-fixes"),
+ Head(RepoURL("mkp/scsi.git"), "queue"),
+ Head(RepoURL("mkp/scsi.git"), "fixes"),
Head(RepoURL("git://git.kernel.dk/linux-block.git"), "for-next"),
Head(RepoURL("git://git.kernel.org/pub/scm/virt/kvm/kvm.git"), "queue"),
Head(RepoURL("git://git.infradead.org/nvme.git"), "nvme-5.3-rc"),
@@ -229,10 +230,15 @@ remotes = (
Head(RepoURL("viro/vfs.git"), "for-linus"),
Head(RepoURL("viro/vfs.git"), "fixes"),
Head(RepoURL("jeyu/linux.git"), "modules-next"),
+ Head(RepoURL("joro/iommu.git"), "next"),
Head(RepoURL("nvdimm/nvdimm.git"), "libnvdimm-for-next"),
Head(RepoURL("nvdimm/nvdimm.git"), "libnvdimm-fixes"),
Head(RepoURL("djbw/nvdimm.git"), "libnvdimm-pending"),
+ Head(RepoURL("git://git.linux-nfs.org/projects/anna/linux-nfs.git"), "linux-next"),
+ Head(RepoURL("acme/linux.git"), "perf/core"),
+ Head(RepoURL("will/linux.git"), "for-joerg/arm-smmu/updates"),
Head(RepoURL("herbert/crypto-2.6.git"), "master"),
+ Head(RepoURL("rafael/linux-pm.git")),
Head(RepoURL("git://git.cmpxchg.org/linux-mmots.git"), "master"),
Head(RepoURL("git://git.linux-nfs.org/~bfields/linux.git"), "nfsd-next"),
)
diff --git a/scripts/git_sort/merge_tool.py b/scripts/git_sort/merge_tool.py
index 60433fcbba..933fe3d204 100755
--- a/scripts/git_sort/merge_tool.py
+++ b/scripts/git_sort/merge_tool.py
@@ -94,13 +94,13 @@ if __name__ == "__main__":
inside = [line for line in local[1] if not line.strip() in filter_set]
try:
input_entries = lib.parse_inside(index, inside, False)
+ for name in added - local[3] | moved:
+ entry = lib.InputEntry("\t%s\n" % (name,))
+ entry.from_patch(index, name, lib.git_sort.oot, True)
+ input_entries.append(entry)
except exc.KSError as err:
print("Error: %s" % (err,), file=sys.stderr)
sys.exit(1)
- for name in added - local[3] | moved:
- entry = lib.InputEntry("\t%s\n" % (name,))
- entry.from_patch(index, name, lib.git_sort.oot, True)
- input_entries.append(entry)
try:
sorted_entries = lib.series_sort(index, input_entries)
diff --git a/scripts/git_sort/series_sort.py b/scripts/git_sort/series_sort.py
index 444a24d0e7..7fb19b833e 100755
--- a/scripts/git_sort/series_sort.py
+++ b/scripts/git_sort/series_sort.py
@@ -67,6 +67,9 @@ if __name__ == "__main__":
repo_path = lib.repo_path()
repo = pygit2.Repository(repo_path)
index = git_sort.SortIndex(repo)
+ if git_sort.remotes[0] not in index.repo_heads:
+ print("WARNING: Did not find a remote fetching from \"%s\" in LINUX_GIT remotes." %
+ (git_sort.remotes[0].repo_url.url,))
filter_mode = False
if args.series is None:
diff --git a/scripts/install-git-hooks b/scripts/install-git-hooks
index 0c129b09ee..69bebc942f 100755
--- a/scripts/install-git-hooks
+++ b/scripts/install-git-hooks
@@ -72,8 +72,49 @@ is_eq()
test "$1" -ef "$2" || cmp -s "$1" "$2"
}
+clean_attributes()
+{
+ # Previous versions of this file wrote attributes meant to be distributed
+ # with the repository into $GIT_DIR/info/attributes rather than
+ # .gitattributes. In order to avoid the former potentially overriding the
+ # latter, remove them.
+ # If you intentionally want to override these attributes with these values,
+ # make sure that the line in your "attributes" file differs, for example,
+ # by adding some leading or trailing whitespace to the line.
+ if [ -e "$GIT_DIR"/info/attributes ]; then
+ sed -i -e '
+ /^\*\.changes merge=rpm-changes$/ d
+ /^symsets-\*\.tar\.gz diff=symsets$/ d
+ ' "$GIT_DIR"/info/attributes
+ fi
+}
+
+clean_config()
+{
+ # Previous versions of this file set configuration values meant to be
+ # distributed with the repository into the repository-specific
+ # configuration file (.git/config). Currently, configuration values are set
+ # in a versioned file (extra-gitconfig) which is included from the
+ # repository-specific config. Check if the old scheme is in place and
+ # update it.
+ if ! git config --local --get "include.path" >/dev/null || \
+ ! git config --local --get-all "include.path" | \
+ grep -q "../extra-gitconfig"; then
+ if git config --local --get "merge.rpm-changes.name" >/dev/null; then
+ git config --local --remove_section "merge.rpm-changes"
+ fi
+ if git config --local --get "diff.symsets.textconv" >/dev/null; then
+ git config --local --remove_section "diff.symsets"
+ fi
+ git config --add "include.path" "../extra-gitconfig"
+ fi
+}
+
check_scripts()
{
+ clean_attributes
+ clean_config
+
test -x "$GIT_DIR"/hooks/pre-commit && \
is_eq "$GIT_DIR"/hooks/kernel-source-pre-commit scripts/git-pre-commit
}
@@ -96,31 +137,6 @@ install_scripts()
ln -sf "$dir"/git-pre-commit "$GIT_DIR"/hooks/kernel-source-pre-commit
}
-set_attribute()
-{
- local patten=$1 attribute=$2
-
- if ! grep -qs "$attribute" "$GIT_DIR"/info/attributes; then
- mkdir -p "$GIT_DIR"/info
- echo "$patten $attribute" >>"$GIT_DIR"/info/attributes
- fi
-
-}
-
-install_changes_merger()
-{
- git config merge.rpm-changes.name "*.changes merge driver"
- git config merge.rpm-changes.driver "scripts/rpm-changes-merge.pl %A %O %B"
- set_attribute '*.changes' 'merge=rpm-changes'
-}
-
-install_symsets_textconv()
-{
- git config diff.symsets.textconv scripts/list-symsets
- set_attribute 'symsets-*.tar.gz' 'diff=symsets'
-}
-
-
case "$1" in
--check)
check_snippet && check_scripts
@@ -130,10 +146,8 @@ case "$1" in
echo "Installing git commit hooks."
install_snippet
install_scripts
- echo "Installing kernel-source.changes merge driver."
- install_changes_merger
- echo "Installing symsets diff viewer."
- install_symsets_textconv
+ echo "Installing git config include directive."
+ clean_config
;;
*)
echo "Usage: $0 [--check]" >&2
diff --git a/scripts/run_oldconfig.sh b/scripts/run_oldconfig.sh
index fb49596553..c5d4f532f5 100755
--- a/scripts/run_oldconfig.sh
+++ b/scripts/run_oldconfig.sh
@@ -400,6 +400,9 @@ for config in $config_files; do
armv*/*)
MAKE_ARGS="ARCH=arm"
;;
+ riscv*/*)
+ MAKE_ARGS="ARCH=riscv"
+ ;;
*/um)
MAKE_ARGS="ARCH=um SUBARCH=$cpu_arch"
;;
diff --git a/scripts/sequence-patch.sh b/scripts/sequence-patch.sh
index 8ecbf4a61b..3578d3e6ae 100755
--- a/scripts/sequence-patch.sh
+++ b/scripts/sequence-patch.sh
@@ -210,7 +210,7 @@ if $have_arch_patches; then
else
arch_opt=""
fi
-options=`getopt -o qvd:F: --long quilt,no-quilt,$arch_opt,symbol:,dir:,combine,fast,rapid,vanilla,fuzz,patch-dir:,build-dir:,config:,kabi,ctags,cscope,etags,skip-reverse -- "$@"`
+options=`getopt -o qvd:F: --long quilt,no-quilt,$arch_opt,symbol:,dir:,combine,fast,rapid,vanilla,fuzz:,patch-dir:,build-dir:,config:,kabi,ctags,cscope,etags,skip-reverse -- "$@"`
if [ $? -ne 0 ]
then
diff --git a/scripts/sort_supported.rb b/scripts/sort_supported.rb
new file mode 100755
index 0000000000..f89890299c
--- /dev/null
+++ b/scripts/sort_supported.rb
@@ -0,0 +1,89 @@
+#!/usr/bin/ruby
+
+def max x, y
+ (x >= y) ? x : y
+end
+
+class String
+ def tablen
+ (length + 8) / 8
+ end
+ def tabfill tabs
+ self + "\t" * (tabs - (length / 8))
+ end
+ def ** other
+ star = nil
+ star = length - 1 if self[length - 1] == '*'
+ star = other.length - 1 if other[other.length - 1] == '*'
+ if star then
+ if self[0...star] == other[0...star] then
+ return 1 if star == length - 1
+ return -1
+ end
+ end
+ return self <=> other
+ end
+end
+
+header = []
+supported = []
+maxtabs = [0,0]
+maxlen = [0,0]
+
+File.open("supported.conf"){|f|
+ f.each_line{|l|
+ l.chomp!
+ l.gsub! %r<//>, '/'
+ split = (l.match %r<^([^[:blank:]/]*)[[:blank:]]+(?:([^[:blank:]/]+)[[:blank:]]+)?(?:([^[:blank:]/]+)[[:blank:]]+)?([^[:blank:]]+/[^[:blank:]]+)(?:[[:blank:]]+(.*))?$>)
+ if ! split then
+ header << l
+ else
+ # [[flag, ..],module,comment,is_kmp]
+ s = [[]]
+ slash = false
+ split[1..-1].each{|e|
+ if slash then
+ raise l + split.inspect if s[2]
+ s[2] = e
+ else
+ if e =~ %r</> then
+ slash = true
+ s[1] = e
+ else
+ s[0] << e if e
+ s[3] = true if e =~ /-kmp/
+ end
+ end
+ }
+ supported << s
+ maxtabs[0] = max(maxtabs[0], s[0].join(" ").tablen)
+ maxlen[0] = max(maxlen[0], s[0].join(" ").length)
+ if s[2] then
+ maxtabs[1] = max(maxtabs[1], s[1].tablen)
+ maxlen[1] = max(maxlen[1], s[1].length)
+ end
+ end
+ }
+}
+
+supported = supported.sort{|s1,s2|
+ cmp = 0
+ if s1[3] then
+ if s2[3] then
+ cmp = s1[0] <=> s2[0]
+ else
+ cmp = -1
+ end
+ elsif s2[3]
+ cmp = 1
+ end
+ cmp != 0 ? cmp : s1[1] ** s2[1]
+}
+
+File.open("supported.conf",'wb'){|f|
+ header.each{|l| f.puts l }
+ supported.each{|s|
+ f.puts s[0].join(" ").tabfill(maxtabs[0]) + (s[2] ? s[1].tabfill(maxtabs[1]) : s[1]) + s[2].to_s
+ }
+}
+#STDERR.puts (0..maxlen[1]).each{|n| STDERR.puts ("a"*n).tabfill(maxtabs[1]) + "|"}
diff --git a/scripts/stableids b/scripts/stableids
index c44704959e..2414377d1f 100755
--- a/scripts/stableids
+++ b/scripts/stableids
@@ -6,11 +6,12 @@ use Storable qw(store);
use Term::ANSIColor qw(colored);
if (@ARGV < 2) {
- print "Usage: $0 suse_machine stable_version\n";
+ print "Usage: $0 suse_machine|-d stable_version\n";
exit 1;
}
my $machine = shift;
+my $dump_only = $machine eq '-d';
my $stable_ver = shift;
my $old_version;
my $new_version;
@@ -21,6 +22,7 @@ my %bnc_map = (
'4.1' => '1023711',
'4.4' => '1012382',
'4.12' => '1060662',
+ '5.3' => '1151927',
'other' => '1012628',
);
@@ -44,7 +46,7 @@ my $patchpar = '/dev/shm';
my $patchdir = "patches-$new_version";
my $patchpath = "$patchpar/$patchdir";
my $idsfile = "$patchpath/ids";
-if (!mkdir $patchpath) {
+if (!$dump_only && !mkdir $patchpath) {
die "$patchpath already exists";
}
@@ -56,6 +58,8 @@ my $counter = 1;
my @to_delete;
my $sha_re = qr/[0-9a-f]{40}/;
+print "References: bnc#$bnc $new_version\n" if ($dump_only);
+
foreach my $rev (@revs) {
my ($filename, @commit_log) = $repo->command('show', '--no-patch',
'--format=%f%n%B', $rev);
@@ -89,6 +93,17 @@ foreach my $rev (@revs) {
}
}
+ if ($dump_only) {
+ print "$rev";
+ if (scalar @shas) {
+ print "=", join ' ', @shas;
+ } else {
+ print ' STABLE-ONLY patch: "', $commit_log[0], '"';
+ }
+ print "\n";
+ next;
+ }
+
# better than nothing
if (!scalar @shas) {
push @shas, $rev;
@@ -130,6 +145,8 @@ foreach my $rev (@revs) {
$counter++;
}
+exit 0 if ($dump_only);
+
store(\%ids, $idsfile) or die "cannot write $idsfile";
push @to_delete, $idsfile;
diff --git a/scripts/supported-conf-fixup b/scripts/supported-conf-fixup
index 52511d02ab..e7c7144090 100755
--- a/scripts/supported-conf-fixup
+++ b/scripts/supported-conf-fixup
@@ -106,7 +106,7 @@ sub gather_path
if ($file_or_dir eq "modules.builtin") {
open(BUILTIN, "<$file_or_dir") or die;
while (<BUILTIN>) {
- next unless m,^kernel/(.*)/([^/]+)\.ko$,;
+ next unless m,^kernel/(.*)/([^/]+)\.ko(\.xz)?$,;
$path = $1;
$module = $2;
@@ -124,7 +124,7 @@ sub gather_path
return unless $module_path =~ s,^(.*?/)?kernel/,,;
if (-f $file_or_dir) {
- return unless $module_path =~ m,^(.*)/([^/]+)\.ko$,;
+ return unless $module_path =~ m,^(.*)/([^/]+)\.ko(\.xz)?$,;
$path = $1;
$module = $2;
@@ -264,7 +264,7 @@ sub check_path
return;
}
- unless ($module_path =~ m,^(.*)/([^/]+)(\.ko)$, ||
+ unless ($module_path =~ m,^(.*)/([^/]+)(\.ko)(\.xz)?$, ||
$module_path =~ m,^(.*)/([^/]+)$,) {
print STDERR "$sup_conf_file: $line: Unparsable module path: $module_path\n";
return;
diff --git a/series.conf b/series.conf
index ab3bb63c07..988b404fb0 100644
--- a/series.conf
+++ b/series.conf
@@ -11693,6 +11693,7 @@
patches.suse/orangefs-initialize-op-on-loop-restart-in-orangefs_d.patch
patches.suse/0001-nfsd-auth-Fix-gid-sorting-when-rootsquash-enabled.patch
patches.suse/net-mlx5e-Fix-fixpoint-divide-exception-in-mlx5e_am_.patch
+ patches.suse/cxgb4-fix-endianness-for-vlan-value-in-cxgb4_tc_flow.patch
patches.suse/ibmvnic-Modify-buffer-size-and-number-of-queues-on-f.patch
patches.suse/ibmvnic-Revert-to-previous-mtu-when-unsupported-valu.patch
patches.suse/ibmvnic-Allocate-and-request-vpd-in-init_resources.patch
@@ -19349,6 +19350,9 @@
patches.suse/0001-cifs-check-kmalloc-before-use.patch
patches.suse/01-cifs-update-internal-module-version-number-for-cifs-ko-to-2-12.patch
patches.suse/0238-bcache-release-dc-writeback_lock-properly-in-bch_wri.patch
+ patches.suse/blk-wbt-move-disable-check-into-get_limit.patch
+ patches.suse/blk-wbt-use-wq_has_sleeper-for-wq-active-check.patch
+ patches.suse/blk-wbt-fix-has-sleeper-queueing-check.patch
patches.suse/scripts-modpost-check-memory-allocation-results.patch
patches.suse/reset-imx7-Fix-always-writing-bits-as-0.patch
patches.suse/acpi-nfit-prefer-dsm-over-lsr-for-namespace-label-reads.patch
@@ -19400,6 +19404,8 @@
patches.suse/hwmon-ina2xx-fix-sysfs-shunt-resistor-read-access.patch
patches.suse/hwmon-adt7475-Make-adt7475_read_word-return-errors.patch
patches.suse/hwmon-nct6775-Fix-potential-Spectre-v1.patch
+ patches.suse/blk-wbt-abstract-out-end-IO-completion-handler.patch
+ patches.suse/blk-wbt-improve-waking-of-tasks.patch
patches.suse/0001-xen-blkback-don-t-keep-persistent-grants-too-long.patch
patches.suse/0003-xen-blkfront-cleanup-stale-persistent-grants.patch
patches.suse/0004-xen-blkfront-reorder-tests-in-xlblk_init.patch
@@ -24750,11 +24756,15 @@
patches.suse/0002-btrfs-qgroup-Fix-reserved-data-space-leak-if-we-have.patch
patches.suse/0001-xen-xenbus-fix-self-deadlock-after-killing-user-proc.patch
patches.suse/0001-xen-netfront-do-not-use-0U-as-error-return-value-for.patch
+ patches.suse/msft-hv-1948-scsi-storvsc-setup-1-1-mapping-between-hardware-queu.patch
patches.suse/0001-kernel-sysctl.c-do-not-override-max_threads-provided.patch
# jejb/scsi for-next
patches.suse/scsi-qla2xxx-Fix-Nport-ID-display-value.patch
+ # powerpc/linux fixes
+ patches.suse/powerpc-pseries-Remove-confusing-warning-message.patch
+
# dhowells/linux-fs keys-uefi
patches.suse/0001-KEYS-Allow-unrestricted-boot-time-addition-of-keys-t.patch
patches.suse/0002-efi-Add-EFI-signature-data-types.patch
@@ -25215,6 +25225,7 @@
patches.kabi/kabi-handle-addition-of-uevent_sock-into-struct-net.patch
patches.kabi/kabi-handle-addition-of-net-hash_mix.patch
patches.kabi/kabi-handle-addition-of-netns_ipv4-ip_id_key.patch
+ patches.suse/tcp-Don-t-dequeue-SYN-FIN-segments-from-write-queue.patch
########################################################
# Netfilter