From c24b756f413d72f12dadc7035f0ac298a62ae4cd Mon Sep 17 00:00:00 2001 From: Kernel Build Daemon Date: Aug 04 2021 05:01:22 +0000 Subject: Merge branch 'SLE12-SP5' into SLE12-SP5-AZURE --- diff --git a/blacklist.conf b/blacklist.conf index 521a193..959d736 100644 --- a/blacklist.conf +++ b/blacklist.conf @@ -1901,3 +1901,8 @@ ef1dac6021cc8ec5de02ce31722bf26ac4ed5523 # breaks kABI 519648bed470441eac680314724ee4128f422a92 # cleanup only 6c8f85cac98a4c6b767c4c4f6af7283724c32b47 # net: macb: doesn't apply 1139aeb1c521eb4a050920ce6c64c36c4f2a3ab7 # would break kABI without any further benefit +87fe04367d842c4d97a77303242d4dd4ac351e46 # net: dsa: mv88e6xxx: not needed +f3a1a937f7b240be623d989c8553a6d01465d04f # regression with old firmware, not material for the last service pack of a release +c1367ee016e3550745315fb9a2dd1e4ce02cdcf6 # no support for Atari machines in SLE12 +d099ea6e6fde5f311bea5bcdadaa85fc3af79259 # cosmetic +ea29b20a828511de3348334e529a3d046a180416 # irrelevant in our config diff --git a/patches.kabi/kabi-fix-nvme_wait_freeze_timeout-return-type.patch b/patches.kabi/kabi-fix-nvme_wait_freeze_timeout-return-type.patch new file mode 100644 index 0000000..c2a1e4d --- /dev/null +++ b/patches.kabi/kabi-fix-nvme_wait_freeze_timeout-return-type.patch @@ -0,0 +1,51 @@ +From: Enzo Matsumiya +Patch-mainline: Never, kabi fix +Subject: kabi: fix nvme_wait_freeze_timeout() return type +References: bsc#1181161 + +Use previous return type (void) for nvme_wait_freeze_timeout() +when __GENKSYMS__ is set. Otherwise use the new one (int). + +This is related to the changes introduced in patch +patches.suse/nvme-have-nvme_wait_freeze_timeout-return-if-it-time.patch + +--- a/drivers/nvme/host/core.c ++++ b/drivers/nvme/host/core.c +@@ -3882,7 +3882,12 @@ void nvme_unfreeze(struct nvme_ctrl *ctr + } + EXPORT_SYMBOL_GPL(nvme_unfreeze); + +-int nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout) ++#ifdef __GENKSYMS__ ++void /* previous return type, cf. commit 7cf0d7c0f3c */ ++#else ++int ++#endif ++nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout) + { + struct nvme_ns *ns; + +@@ -3893,7 +3898,9 @@ int nvme_wait_freeze_timeout(struct nvme + break; + } + up_read(&ctrl->namespaces_rwsem); ++#ifndef __GENKSYMS__ + return timeout; ++#endif + } + EXPORT_SYMBOL_GPL(nvme_wait_freeze_timeout); + +--- a/drivers/nvme/host/nvme.h ++++ b/drivers/nvme/host/nvme.h +@@ -461,7 +461,11 @@ void nvme_sync_queues(struct nvme_ctrl * + void nvme_sync_io_queues(struct nvme_ctrl *ctrl); + void nvme_unfreeze(struct nvme_ctrl *ctrl); + void nvme_wait_freeze(struct nvme_ctrl *ctrl); ++#ifdef __GENKSYMS__ ++void nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout); ++#else + int nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout); ++#endif + void nvme_start_freeze(struct nvme_ctrl *ctrl); + + #define NVME_QID_ANY -1 diff --git a/patches.suse/can-sja1000-sja1000_err-don-t-count-arbitration-lose.patch b/patches.suse/can-sja1000-sja1000_err-don-t-count-arbitration-lose.patch new file mode 100644 index 0000000..12924cc --- /dev/null +++ b/patches.suse/can-sja1000-sja1000_err-don-t-count-arbitration-lose.patch @@ -0,0 +1,40 @@ +From 1e3821378a44910a78f6256e3d8e25b48087e46f Mon Sep 17 00:00:00 2001 +From: Jeroen Hofstee +Date: Fri, 27 Nov 2020 10:59:38 +0100 +Subject: [PATCH 08/10] can: sja1000: sja1000_err(): don't count arbitration + lose as an error +Git-commit: bd0ccb92efb09c7da5b55162b283b42a93539ed7 +Patch-mainline: v5.10-rc7 +References: git-fixes + +Losing arbitration is normal in a CAN-bus network, it means that a higher +priority frame is being send and the pending message will be retried later. +Hence most driver only increment arbitration_lost, but the sja1000 driver also +incremeants tx_error, causing errors to be reported on a normal functioning +CAN-bus. So stop counting them as errors. + +Fixes: 8935f57e68c4 ("can: sja1000: fix network statistics update") +Signed-off-by: Jeroen Hofstee +Link: https://lore.kernel.org/r/20201127095941.21609-1-jhofstee@victronenergy.com +[mkl: split into two seperate patches] +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Denis Kirjanov +--- + drivers/net/can/sja1000/sja1000.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/drivers/net/can/sja1000/sja1000.c b/drivers/net/can/sja1000/sja1000.c +index 9f107798f904..25a4d7d0b349 100644 +--- a/drivers/net/can/sja1000/sja1000.c ++++ b/drivers/net/can/sja1000/sja1000.c +@@ -474,7 +474,6 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status) + netdev_dbg(dev, "arbitration lost interrupt\n"); + alc = priv->read_reg(priv, SJA1000_ALC); + priv->can.can_stats.arbitration_lost++; +- stats->tx_errors++; + cf->can_id |= CAN_ERR_LOSTARB; + cf->data[0] = alc & 0x1f; + } +-- +2.16.4 + diff --git a/patches.suse/can-sun4i_can-sun4i_can_err-don-t-count-arbitration-.patch b/patches.suse/can-sun4i_can-sun4i_can_err-don-t-count-arbitration-.patch new file mode 100644 index 0000000..c13590d --- /dev/null +++ b/patches.suse/can-sun4i_can-sun4i_can_err-don-t-count-arbitration-.patch @@ -0,0 +1,40 @@ +From 5d572112dad5e7ccf294a7339444309508bf2777 Mon Sep 17 00:00:00 2001 +From: Jeroen Hofstee +Date: Fri, 27 Nov 2020 10:59:38 +0100 +Subject: [PATCH 09/10] can: sun4i_can: sun4i_can_err(): don't count + arbitration lose as an error +Git-commit: c2d095eff797813461a426b97242e3ffc50e4134 +Patch-mainline: v5.10-rc7 +References: git-fixes + +Losing arbitration is normal in a CAN-bus network, it means that a higher +priority frame is being send and the pending message will be retried later. +Hence most driver only increment arbitration_lost, but the sun4i driver also +incremeants tx_error, causing errors to be reported on a normal functioning +CAN-bus. So stop counting them as errors. + +Fixes: 0738eff14d81 ("can: Allwinner A10/A20 CAN Controller support - Kernel module") +Signed-off-by: Jeroen Hofstee +Link: https://lore.kernel.org/r/20201127095941.21609-1-jhofstee@victronenergy.com +[mkl: split into two seperate patches] +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Denis Kirjanov +--- + drivers/net/can/sun4i_can.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/drivers/net/can/sun4i_can.c b/drivers/net/can/sun4i_can.c +index 1ac2090a1721..65cdb30fc459 100644 +--- a/drivers/net/can/sun4i_can.c ++++ b/drivers/net/can/sun4i_can.c +@@ -604,7 +604,6 @@ static int sun4i_can_err(struct net_device *dev, u8 isrc, u8 status) + netdev_dbg(dev, "arbitration lost interrupt\n"); + alc = readl(priv->base + SUN4I_REG_STA_ADDR); + priv->can.can_stats.arbitration_lost++; +- stats->tx_errors++; + if (likely(skb)) { + cf->can_id |= CAN_ERR_LOSTARB; + cf->data[0] = (alc >> 8) & 0x1f; +-- +2.16.4 + diff --git a/patches.suse/can-ti_hecc-Fix-memleak-in-ti_hecc_probe.patch b/patches.suse/can-ti_hecc-Fix-memleak-in-ti_hecc_probe.patch new file mode 100644 index 0000000..806ce68 --- /dev/null +++ b/patches.suse/can-ti_hecc-Fix-memleak-in-ti_hecc_probe.patch @@ -0,0 +1,73 @@ +From 6c3eda1cefdb9d8caf1e68419c0838d69fd64752 Mon Sep 17 00:00:00 2001 +From: Zhang Qilong +Date: Sat, 14 Nov 2020 19:17:08 +0800 +Subject: [PATCH 03/10] can: ti_hecc: Fix memleak in ti_hecc_probe +Git-commit: 7968c7c79d3be8987feb8021f0c46e6866831408 +Patch-mainline: v5.10-rc5 +References: git-fixes + +In the error handling, we should goto the probe_exit_candev +to free ndev to prevent memory leak. + +Fixes: dabf54dd1c63 ("can: ti_hecc: Convert TI HECC driver to DT only driver") +Signed-off-by: Zhang Qilong +Link: https://lore.kernel.org/r/20201114111708.3465543-1-zhangqilong3@huawei.com +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Denis Kirjanov +--- + drivers/net/can/ti_hecc.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/drivers/net/can/ti_hecc.c b/drivers/net/can/ti_hecc.c +index db6ea936dc3f..81a3fdd5e010 100644 +--- a/drivers/net/can/ti_hecc.c ++++ b/drivers/net/can/ti_hecc.c +@@ -903,7 +903,8 @@ static int ti_hecc_probe(struct platform_device *pdev) + priv->base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(priv->base)) { + dev_err(&pdev->dev, "hecc ioremap failed\n"); +- return PTR_ERR(priv->base); ++ err = PTR_ERR(priv->base); ++ goto probe_exit_candev; + } + + /* handle hecc-ram memory */ +@@ -916,7 +917,8 @@ static int ti_hecc_probe(struct platform_device *pdev) + priv->hecc_ram = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(priv->hecc_ram)) { + dev_err(&pdev->dev, "hecc-ram ioremap failed\n"); +- return PTR_ERR(priv->hecc_ram); ++ err = PTR_ERR(priv->hecc_ram); ++ goto probe_exit_candev; + } + + /* handle mbx memory */ +@@ -929,13 +931,14 @@ static int ti_hecc_probe(struct platform_device *pdev) + priv->mbx = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(priv->mbx)) { + dev_err(&pdev->dev, "mbx ioremap failed\n"); +- return PTR_ERR(priv->mbx); ++ err = PTR_ERR(priv->mbx); ++ goto probe_exit_candev; + } + + irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); + if (!irq) { + dev_err(&pdev->dev, "No irq resource\n"); +- goto probe_exit; ++ goto probe_exit_candev; + } + + priv->ndev = ndev; +@@ -988,7 +991,7 @@ static int ti_hecc_probe(struct platform_device *pdev) + clk_put(priv->clk); + probe_exit_candev: + free_candev(ndev); +-probe_exit: ++ + return err; + } + +-- +2.16.4 + diff --git a/patches.suse/cosa-Add-missing-kfree-in-error-path-of-cosa_write.patch b/patches.suse/cosa-Add-missing-kfree-in-error-path-of-cosa_write.patch new file mode 100644 index 0000000..9ebb9b1 --- /dev/null +++ b/patches.suse/cosa-Add-missing-kfree-in-error-path-of-cosa_write.patch @@ -0,0 +1,39 @@ +From ddc42aee231f37f02c1e66d7ad5fc9b559b63acb Mon Sep 17 00:00:00 2001 +From: Wang Hai +Date: Tue, 10 Nov 2020 22:46:14 +0800 +Subject: [PATCH 01/10] cosa: Add missing kfree in error path of cosa_write +Git-commit: 52755b66ddcef2e897778fac5656df18817b59ab +Patch-mainline: v5.10-rc4 +References: git-fixes + + +If memory allocation for 'kbuf' succeed, cosa_write() doesn't have a +corresponding kfree() in exception handling. Thus add kfree() for this +function implementation. + +Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") +Reported-by: Hulk Robot +Signed-off-by: Wang Hai +Acked-by: Jan "Yenya" Kasprzak +Link: https://lore.kernel.org/r/20201110144614.43194-1-wanghai38@huawei.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Denis Kirjanov +--- + drivers/net/wan/cosa.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c +index 6ea16260ec76..1a1f2d1069fb 100644 +--- a/drivers/net/wan/cosa.c ++++ b/drivers/net/wan/cosa.c +@@ -902,6 +902,7 @@ static ssize_t cosa_write(struct file *file, + chan->tx_status = 1; + spin_unlock_irqrestore(&cosa->lock, flags); + up(&chan->wsem); ++ kfree(kbuf); + return -ERESTARTSYS; + } + } +-- +2.16.4 + diff --git a/patches.suse/crypto-do-not-free-algorithm-before-using.patch b/patches.suse/crypto-do-not-free-algorithm-before-using.patch new file mode 100644 index 0000000..cd03e7b --- /dev/null +++ b/patches.suse/crypto-do-not-free-algorithm-before-using.patch @@ -0,0 +1,83 @@ +From e5bde04ccce64d808f8b00a489a1fe5825d285cb Mon Sep 17 00:00:00 2001 +From: Pan Bian +Date: Thu, 22 Nov 2018 18:00:16 +0800 +Subject: [PATCH] crypto: do not free algorithm before using +Git-commit: e5bde04ccce64d808f8b00a489a1fe5825d285cb +References: git-fixes +Patch-mainline: v4.20-rc6 + +In multiple functions, the algorithm fields are read after its reference +is dropped through crypto_mod_put. In this case, the algorithm memory +may be freed, resulting in use-after-free bugs. This patch delays the +put operation until the algorithm is never used. + +Fixes: 79c65d179a40 ("crypto: cbc - Convert to skcipher") +Fixes: a7d85e06ed80 ("crypto: cfb - add support for Cipher FeedBack mode") +Fixes: 043a44001b9e ("crypto: pcbc - Convert to skcipher") +Cc: +Signed-off-by: Pan Bian +Signed-off-by: Herbert Xu +Signed-off-by: Oliver Neukum +--- + crypto/cbc.c | 6 ++++-- + crypto/pcbc.c | 6 ++++-- + 2 files changed, 8 insertions(+), 4 deletions(-) + +--- a/crypto/cbc.c ++++ b/crypto/cbc.c +@@ -140,9 +140,8 @@ static int crypto_cbc_create(struct cryp + spawn = skcipher_instance_ctx(inst); + err = crypto_init_spawn(spawn, alg, skcipher_crypto_instance(inst), + CRYPTO_ALG_TYPE_MASK); +- crypto_mod_put(alg); + if (err) +- goto err_free_inst; ++ goto err_put_alg; + + err = crypto_inst_setname(skcipher_crypto_instance(inst), "cbc", alg); + if (err) +@@ -174,12 +173,15 @@ static int crypto_cbc_create(struct cryp + err = skcipher_register_instance(tmpl, inst); + if (err) + goto err_drop_spawn; ++ crypto_mod_put(alg); + + out: + return err; + + err_drop_spawn: + crypto_drop_spawn(spawn); ++err_put_alg: ++ crypto_mod_put(alg); + err_free_inst: + kfree(inst); + goto out; +--- a/crypto/pcbc.c ++++ b/crypto/pcbc.c +@@ -243,9 +243,8 @@ static int crypto_pcbc_create(struct cry + spawn = skcipher_instance_ctx(inst); + err = crypto_init_spawn(spawn, alg, skcipher_crypto_instance(inst), + CRYPTO_ALG_TYPE_MASK); +- crypto_mod_put(alg); + if (err) +- goto err_free_inst; ++ goto err_put_alg; + + err = crypto_inst_setname(skcipher_crypto_instance(inst), "pcbc", alg); + if (err) +@@ -274,12 +273,15 @@ static int crypto_pcbc_create(struct cry + err = skcipher_register_instance(tmpl, inst); + if (err) + goto err_drop_spawn; ++ crypto_mod_put(alg); + + out: + return err; + + err_drop_spawn: + crypto_drop_spawn(spawn); ++err_put_alg: ++ crypto_mod_put(alg); + err_free_inst: + kfree(inst); + goto out; diff --git a/patches.suse/mlxsw-core-Use-variable-timeout-for-EMAD-retries.patch b/patches.suse/mlxsw-core-Use-variable-timeout-for-EMAD-retries.patch new file mode 100644 index 0000000..70e258e --- /dev/null +++ b/patches.suse/mlxsw-core-Use-variable-timeout-for-EMAD-retries.patch @@ -0,0 +1,47 @@ +From f201909f21a11cf160b2087220eec5cbfc50e907 Mon Sep 17 00:00:00 2001 +From: Ido Schimmel +Date: Tue, 17 Nov 2020 19:33:52 +0200 +Subject: [PATCH 06/10] mlxsw: core: Use variable timeout for EMAD retries +Git-commit: 1f492eab67bced119a0ac7db75ef2047e29a30c6 +Patch-mainline: v5.10-rc5 +References: git-fixes + +The driver sends Ethernet Management Datagram (EMAD) packets to the +device for configuration purposes and waits for up to 200ms for a reply. +A request is retried up to 5 times. + +When the system is under heavy load, replies are not always processed in +time and EMAD transactions fail. + +Make the process more robust to such delays by using exponential +backoff. First wait for up to 200ms, then retransmit and wait for up to +400ms and so on. + +Fixes: caf7297e7ab5 ("mlxsw: core: Introduce support for asynchronous EMAD register access") +Reported-by: Denis Yulevich +Tested-by: Denis Yulevich +Signed-off-by: Ido Schimmel +Reviewed-by: Jiri Pirko +Signed-off-by: Jakub Kicinski +Signed-off-by: Denis Kirjanov +--- + drivers/net/ethernet/mellanox/mlxsw/core.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c +index 423c3e9925d0..049ca4ba49de 100644 +--- a/drivers/net/ethernet/mellanox/mlxsw/core.c ++++ b/drivers/net/ethernet/mellanox/mlxsw/core.c +@@ -439,7 +439,8 @@ static void mlxsw_emad_trans_timeout_schedule(struct mlxsw_reg_trans *trans) + if (trans->core->fw_flash_in_progress) + timeout = msecs_to_jiffies(MLXSW_EMAD_TIMEOUT_DURING_FW_FLASH_MS); + +- queue_delayed_work(trans->core->emad_wq, &trans->timeout_dw, timeout); ++ queue_delayed_work(trans->core->emad_wq, &trans->timeout_dw, ++ timeout << trans->retries); + } + + static int mlxsw_emad_transmit(struct mlxsw_core *mlxsw_core, +-- +2.16.4 + diff --git a/patches.suse/net-b44-fix-error-return-code-in-b44_init_one.patch b/patches.suse/net-b44-fix-error-return-code-in-b44_init_one.patch new file mode 100644 index 0000000..227bcd6 --- /dev/null +++ b/patches.suse/net-b44-fix-error-return-code-in-b44_init_one.patch @@ -0,0 +1,39 @@ +From b50bd94cc10cdc7ed63b3ef7c70bb5fcc371368c Mon Sep 17 00:00:00 2001 +From: Zhang Changzhong +Date: Tue, 17 Nov 2020 11:02:11 +0800 +Subject: [PATCH 05/10] net: b44: fix error return code in b44_init_one() +Git-commit: 7b027c249da54f492699c43e26cba486cfd48035 +Patch-mainline: v5.10-rc5 +References: git-fixes + +Fix to return a negative error code from the error handling +case instead of 0, as done elsewhere in this function. + +Fixes: 39a6f4bce6b4 ("b44: replace the ssb_dma API with the generic DMA API") +Reported-by: Hulk Robot +Signed-off-by: Zhang Changzhong +Reviewed-by: Michael Chan +Link: https://lore.kernel.org/r/1605582131-36735-1-git-send-email-zhangchangzhong@huawei.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Denis Kirjanov +--- + drivers/net/ethernet/broadcom/b44.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c +index a1125d10c825..36e1efb7cd29 100644 +--- a/drivers/net/ethernet/broadcom/b44.c ++++ b/drivers/net/ethernet/broadcom/b44.c +@@ -2388,7 +2388,8 @@ static int b44_init_one(struct ssb_device *sdev, + goto err_out_free_dev; + } + +- if (dma_set_mask_and_coherent(sdev->dma_dev, DMA_BIT_MASK(30))) { ++ err = dma_set_mask_and_coherent(sdev->dma_dev, DMA_BIT_MASK(30)); ++ if (err) { + dev_err(sdev->dev, + "Required 30BIT DMA mask unsupported by the system\n"); + goto err_out_powerdown; +-- +2.16.4 + diff --git a/patches.suse/net-broadcom-CNIC-requires-MMU.patch b/patches.suse/net-broadcom-CNIC-requires-MMU.patch new file mode 100644 index 0000000..eb28c2f --- /dev/null +++ b/patches.suse/net-broadcom-CNIC-requires-MMU.patch @@ -0,0 +1,49 @@ +From 70993358c6b0a9c2b6fb87564dbcd580204b2484 Mon Sep 17 00:00:00 2001 +From: Randy Dunlap +Date: Sat, 28 Nov 2020 23:08:43 -0800 +Subject: [PATCH 10/10] net: broadcom CNIC: requires MMU +Git-commit: 14483cbf040fcb38113497161088a1ce8ce5d713 +Patch-mainline: v5.10-rc7 +References: git-fixes + +The CNIC kconfig symbol selects UIO and UIO depends on MMU. +Since 'select' does not follow dependency chains, add the same MMU +dependency to CNIC. + +Quietens this kconfig warning: + +WARNING: unmet direct dependencies detected for UIO + Depends on [n]: MMU [=n] + Selected by [m]: + - CNIC [=m] && NETDEVICES [=y] && ETHERNET [=y] && NET_VENDOR_BROADCOM [=y] && PCI [=y] && (IPV6 [=m] || IPV6 [=m]=n) + +Fixes: adfc5217e9db ("broadcom: Move the Broadcom drivers") +Signed-off-by: Randy Dunlap +Cc: Jeff Kirsher +Cc: Rasesh Mody +Cc: GR-Linux-NIC-Dev@marvell.com +Cc: "David S. Miller" +Cc: Jakub Kicinski +Cc: netdev@vger.kernel.org +Link: https://lore.kernel.org/r/20201129070843.3859-1-rdunlap@infradead.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Denis Kirjanov +--- + drivers/net/ethernet/broadcom/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/net/ethernet/broadcom/Kconfig b/drivers/net/ethernet/broadcom/Kconfig +index 982fcf18c87c..985a185b6612 100644 +--- a/drivers/net/ethernet/broadcom/Kconfig ++++ b/drivers/net/ethernet/broadcom/Kconfig +@@ -83,6 +83,7 @@ config BNX2 + config CNIC + tristate "QLogic CNIC support" + depends on PCI && (IPV6 || IPV6=n) ++ depends on MMU + select BNX2 + select UIO + ---help--- +-- +2.16.4 + diff --git a/patches.suse/net-dsa-mv88e6xxx-Avoid-VTU-corruption-on-6097.patch b/patches.suse/net-dsa-mv88e6xxx-Avoid-VTU-corruption-on-6097.patch new file mode 100644 index 0000000..3729793 --- /dev/null +++ b/patches.suse/net-dsa-mv88e6xxx-Avoid-VTU-corruption-on-6097.patch @@ -0,0 +1,145 @@ +From 8b43ad886ebde22465047d4a33797d526d5fe9cc Mon Sep 17 00:00:00 2001 +From: Tobias Waldekranz +Date: Thu, 12 Nov 2020 12:43:35 +0100 +Subject: [PATCH 02/10] net: dsa: mv88e6xxx: Avoid VTU corruption on 6097 +Git-commit: 92307069a96c07d9b6e74b96b79390e7cd7d2111 +Patch-mainline: v5.10-rc5 +References: git-fixes + + +As soon as you add the second port to a VLAN, all other port +membership configuration is overwritten with zeroes. The HW interprets +this as all ports being "unmodified members" of the VLAN. + +In the simple case when all ports belong to the same VLAN, switching +will still work. But using multiple VLANs or trying to set multiple +ports as tagged members will not work. + +On the 6352, doing a VTU GetNext op, followed by an STU GetNext op +will leave you with both the member- and state- data in the VTU/STU +data registers. But on the 6097 (which uses the same implementation), +the STU GetNext will override the information gathered from the VTU +GetNext. + +Separate the two stages, parsing the result of the VTU GetNext before +doing the STU GetNext. + +We opt to update the existing implementation for all applicable chips, +as opposed to creating a separate callback for 6097, because although +the previous implementation did work for (at least) 6352, the +datasheet does not mention the masking behavior. + +Fixes: ef6fcea37f01 ("net: dsa: mv88e6xxx: get STU entry on VTU GetNext") +Signed-off-by: Tobias Waldekranz +Link: https://lore.kernel.org/r/20201112114335.27371-1-tobias@waldekranz.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Denis Kirjanov +--- + drivers/net/dsa/mv88e6xxx/global1_vtu.c | 59 +++++++++++++++++++++++++++------ + 1 file changed, 49 insertions(+), 10 deletions(-) + +diff --git a/drivers/net/dsa/mv88e6xxx/global1_vtu.c b/drivers/net/dsa/mv88e6xxx/global1_vtu.c +index 5b1eec100334..a0fe209f0d7a 100644 +--- a/drivers/net/dsa/mv88e6xxx/global1_vtu.c ++++ b/drivers/net/dsa/mv88e6xxx/global1_vtu.c +@@ -122,11 +122,9 @@ static int mv88e6xxx_g1_vtu_vid_write(struct mv88e6xxx_chip *chip, + * Offset 0x08: VTU/STU Data Register 2 + * Offset 0x09: VTU/STU Data Register 3 + */ +- +-static int mv88e6185_g1_vtu_data_read(struct mv88e6xxx_chip *chip, +- struct mv88e6xxx_vtu_entry *entry) ++static int mv88e6185_g1_vtu_stu_data_read(struct mv88e6xxx_chip *chip, ++ u16 *regs) + { +- u16 regs[3]; + int i; + + /* Read all 3 VTU/STU Data registers */ +@@ -139,12 +137,45 @@ static int mv88e6185_g1_vtu_data_read(struct mv88e6xxx_chip *chip, + return err; + } + +- /* Extract MemberTag and PortState data */ ++ return 0; ++} ++ ++static int mv88e6185_g1_vtu_data_read(struct mv88e6xxx_chip *chip, ++ struct mv88e6xxx_vtu_entry *entry) ++{ ++ u16 regs[3]; ++ int err; ++ int i; ++ ++ err = mv88e6185_g1_vtu_stu_data_read(chip, regs); ++ if (err) ++ return err; ++ ++ /* Extract MemberTag data */ + for (i = 0; i < mv88e6xxx_num_ports(chip); ++i) { + unsigned int member_offset = (i % 4) * 4; +- unsigned int state_offset = member_offset + 2; + + entry->member[i] = (regs[i / 4] >> member_offset) & 0x3; ++ } ++ ++ return 0; ++} ++ ++static int mv88e6185_g1_stu_data_read(struct mv88e6xxx_chip *chip, ++ struct mv88e6xxx_vtu_entry *entry) ++{ ++ u16 regs[3]; ++ int err; ++ int i; ++ ++ err = mv88e6185_g1_vtu_stu_data_read(chip, regs); ++ if (err) ++ return err; ++ ++ /* Extract PortState data */ ++ for (i = 0; i < mv88e6xxx_num_ports(chip); ++i) { ++ unsigned int state_offset = (i % 4) * 4 + 2; ++ + entry->state[i] = (regs[i / 4] >> state_offset) & 0x3; + } + +@@ -317,6 +348,10 @@ int mv88e6185_g1_vtu_getnext(struct mv88e6xxx_chip *chip, + if (err) + return err; + ++ err = mv88e6185_g1_stu_data_read(chip, entry); ++ if (err) ++ return err; ++ + /* VTU DBNum[3:0] are located in VTU Operation 3:0 + * VTU DBNum[7:4] are located in VTU Operation 11:8 + */ +@@ -342,16 +377,20 @@ int mv88e6352_g1_vtu_getnext(struct mv88e6xxx_chip *chip, + return err; + + if (entry->valid) { +- /* Fetch (and mask) VLAN PortState data from the STU */ +- err = mv88e6xxx_g1_vtu_stu_get(chip, entry); ++ err = mv88e6185_g1_vtu_data_read(chip, entry); + if (err) + return err; + +- err = mv88e6185_g1_vtu_data_read(chip, entry); ++ err = mv88e6xxx_g1_vtu_fid_read(chip, entry); + if (err) + return err; + +- err = mv88e6xxx_g1_vtu_fid_read(chip, entry); ++ /* Fetch VLAN PortState data from the STU */ ++ err = mv88e6xxx_g1_vtu_stu_get(chip, entry); ++ if (err) ++ return err; ++ ++ err = mv88e6185_g1_stu_data_read(chip, entry); + if (err) + return err; + } +-- +2.16.4 + diff --git a/patches.suse/net-mlx5-Disable-QoS-when-min_rates-on-all-VFs-are-z.patch b/patches.suse/net-mlx5-Disable-QoS-when-min_rates-on-all-VFs-are-z.patch new file mode 100644 index 0000000..4bea591 --- /dev/null +++ b/patches.suse/net-mlx5-Disable-QoS-when-min_rates-on-all-VFs-are-z.patch @@ -0,0 +1,82 @@ +From ac4eb6381b5aff08b21d82b03c56d274a1687eb2 Mon Sep 17 00:00:00 2001 +From: Vladyslav Tarasiuk +Date: Wed, 21 Oct 2020 11:05:41 +0300 +Subject: [PATCH 07/10] net/mlx5: Disable QoS when min_rates on all VFs are + zero +Git-commit: 470b74758260e4abc2508cf1614573c00a00465c +Patch-mainline: v5.10-rc5 +References: git-fixes + +Currently when QoS is enabled for VF and any min_rate is configured, +the driver sets bw_share value to at least 1 and doesn’t allow to set +it to 0 to make minimal rate unlimited. It means there is always a +minimal rate configured for every VF, even if user tries to remove it. + +In order to make QoS disable possible, check whether all vports have +configured min_rate = 0. If this is true, set their bw_share to 0 to +disable min_rate limitations. + +Fixes: c9497c98901c ("net/mlx5: Add support for setting VF min rate") +Signed-off-by: Vladyslav Tarasiuk +Reviewed-by: Moshe Shemesh +Signed-off-by: Saeed Mahameed +Signed-off-by: Denis Kirjanov +--- + drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +index e19031cfbd56..e91f79fde3ce 100644 +--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c ++++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +@@ -2004,12 +2004,15 @@ static u32 calculate_vports_min_rate_divider(struct mlx5_eswitch *esw) + max_guarantee = evport->info.min_rate; + } + +- return max_t(u32, max_guarantee / fw_max_bw_share, 1); ++ if (max_guarantee) ++ return max_t(u32, max_guarantee / fw_max_bw_share, 1); ++ return 0; + } + +-static int normalize_vports_min_rate(struct mlx5_eswitch *esw, u32 divider) ++static int normalize_vports_min_rate(struct mlx5_eswitch *esw) + { + u32 fw_max_bw_share = MLX5_CAP_QOS(esw->dev, max_tsar_bw_share); ++ u32 divider = calculate_vports_min_rate_divider(esw); + struct mlx5_vport *evport; + u32 vport_max_rate; + u32 vport_min_rate; +@@ -2023,9 +2026,9 @@ static int normalize_vports_min_rate(struct mlx5_eswitch *esw, u32 divider) + continue; + vport_min_rate = evport->info.min_rate; + vport_max_rate = evport->info.max_rate; +- bw_share = MLX5_MIN_BW_SHARE; ++ bw_share = 0; + +- if (vport_min_rate) ++ if (divider) + bw_share = MLX5_RATE_TO_BW_SHARE(vport_min_rate, + divider, + fw_max_bw_share); +@@ -2050,7 +2053,6 @@ int mlx5_eswitch_set_vport_rate(struct mlx5_eswitch *esw, int vport, + struct mlx5_vport *evport; + u32 fw_max_bw_share; + u32 previous_min_rate; +- u32 divider; + bool min_rate_supported; + bool max_rate_supported; + int err = 0; +@@ -2076,8 +2078,7 @@ int mlx5_eswitch_set_vport_rate(struct mlx5_eswitch *esw, int vport, + + previous_min_rate = evport->info.min_rate; + evport->info.min_rate = min_rate; +- divider = calculate_vports_min_rate_divider(esw); +- err = normalize_vports_min_rate(esw, divider); ++ err = normalize_vports_min_rate(esw); + if (err) { + evport->info.min_rate = previous_min_rate; + goto unlock; +-- +2.16.4 + diff --git a/patches.suse/nvme-core-add-cancel-tagset-helpers.patch b/patches.suse/nvme-core-add-cancel-tagset-helpers.patch new file mode 100644 index 0000000..e0f0df3 --- /dev/null +++ b/patches.suse/nvme-core-add-cancel-tagset-helpers.patch @@ -0,0 +1,58 @@ +From: Chao Leng +Date: Thu, 21 Jan 2021 11:32:36 +0800 +Subject: [PATCH] nvme-core: add cancel tagset helpers +Patch-mainline: v5.12-rc1 +Git-commit: 2547906982e2e6a0d42f8957f55af5bb51a7e55f +References: bsc#1181161 + +Add nvme_cancel_tagset and nvme_cancel_admin_tagset for tear down and +reconnection error handling. + +Signed-off-by: Chao Leng +Signed-off-by: Christoph Hellwig +Acked-by: Enzo Matsumiya +--- + drivers/nvme/host/core.c | 20 ++++++++++++++++++++ + drivers/nvme/host/nvme.h | 2 ++ + 2 files changed, 22 insertions(+) + +--- a/drivers/nvme/host/core.c ++++ b/drivers/nvme/host/core.c +@@ -333,6 +333,26 @@ void nvme_cancel_request(struct request + } + EXPORT_SYMBOL_GPL(nvme_cancel_request); + ++void nvme_cancel_tagset(struct nvme_ctrl *ctrl) ++{ ++ if (ctrl->tagset) { ++ blk_mq_tagset_busy_iter(ctrl->tagset, ++ nvme_cancel_request, ctrl); ++ blk_mq_tagset_wait_completed_request(ctrl->tagset); ++ } ++} ++EXPORT_SYMBOL_GPL(nvme_cancel_tagset); ++ ++void nvme_cancel_admin_tagset(struct nvme_ctrl *ctrl) ++{ ++ if (ctrl->admin_tagset) { ++ blk_mq_tagset_busy_iter(ctrl->admin_tagset, ++ nvme_cancel_request, ctrl); ++ blk_mq_tagset_wait_completed_request(ctrl->admin_tagset); ++ } ++} ++EXPORT_SYMBOL_GPL(nvme_cancel_admin_tagset); ++ + bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl, + enum nvme_ctrl_state new_state) + { +--- a/drivers/nvme/host/nvme.h ++++ b/drivers/nvme/host/nvme.h +@@ -428,6 +428,8 @@ static inline void nvme_put_ctrl(struct + + void nvme_complete_rq(struct request *req); + void nvme_cancel_request(struct request *req, void *data, bool reserved); ++void nvme_cancel_tagset(struct nvme_ctrl *ctrl); ++void nvme_cancel_admin_tagset(struct nvme_ctrl *ctrl); + bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl, + enum nvme_ctrl_state new_state); + int nvme_disable_ctrl(struct nvme_ctrl *ctrl, u64 cap); diff --git a/patches.suse/nvme-have-nvme_wait_freeze_timeout-return-if-it-time.patch b/patches.suse/nvme-have-nvme_wait_freeze_timeout-return-if-it-time.patch new file mode 100644 index 0000000..2b5ab17 --- /dev/null +++ b/patches.suse/nvme-have-nvme_wait_freeze_timeout-return-if-it-time.patch @@ -0,0 +1,50 @@ +From: Sagi Grimberg +Date: Thu, 30 Jul 2020 13:24:45 -0700 +Subject: [PATCH] nvme: have nvme_wait_freeze_timeout return if it timed out +Patch-mainline: v5.9-rc4 +Git-commit: 7cf0d7c0f3c3b0203aaf81c1bc884924d8fdb9bd +References: bsc#1181161 + +Users can detect if the wait has completed or not and take appropriate +actions based on this information (e.g. weather to continue +initialization or rather fail and schedule another initialization +attempt). + +Reviewed-by: Christoph Hellwig +Signed-off-by: Sagi Grimberg +Acked-by: Enzo Matsumiya +--- + drivers/nvme/host/core.c | 3 ++- + drivers/nvme/host/nvme.h | 2 +- + 2 files changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/nvme/host/core.c ++++ b/drivers/nvme/host/core.c +@@ -3771,7 +3771,7 @@ void nvme_unfreeze(struct nvme_ctrl *ctr + } + EXPORT_SYMBOL_GPL(nvme_unfreeze); + +-void nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout) ++int nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout) + { + struct nvme_ns *ns; + +@@ -3782,6 +3782,7 @@ void nvme_wait_freeze_timeout(struct nvm + break; + } + up_read(&ctrl->namespaces_rwsem); ++ return timeout; + } + EXPORT_SYMBOL_GPL(nvme_wait_freeze_timeout); + +--- a/drivers/nvme/host/nvme.h ++++ b/drivers/nvme/host/nvme.h +@@ -452,7 +452,7 @@ void nvme_kill_queues(struct nvme_ctrl * + void nvme_sync_queues(struct nvme_ctrl *ctrl); + void nvme_unfreeze(struct nvme_ctrl *ctrl); + void nvme_wait_freeze(struct nvme_ctrl *ctrl); +-void nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout); ++int nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout); + void nvme_start_freeze(struct nvme_ctrl *ctrl); + + #define NVME_QID_ANY -1 diff --git a/patches.suse/nvme-introduce-nvme_sync_io_queues.patch b/patches.suse/nvme-introduce-nvme_sync_io_queues.patch index de94d7b..0e622dd 100644 --- a/patches.suse/nvme-introduce-nvme_sync_io_queues.patch +++ b/patches.suse/nvme-introduce-nvme_sync_io_queues.patch @@ -19,7 +19,7 @@ Acked-by: Enzo Matsumiya --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c -@@ -3677,8 +3677,7 @@ static void nvme_free_ctrl(struct device +@@ -3651,8 +3651,7 @@ static void nvme_free_ctrl(struct device nvme_put_subsystem(subsys); } @@ -29,7 +29,7 @@ Acked-by: Enzo Matsumiya { struct nvme_ns *ns; -@@ -3686,7 +3685,12 @@ void nvme_sync_queues(struct nvme_ctrl * +@@ -3660,7 +3659,12 @@ void nvme_sync_queues(struct nvme_ctrl * list_for_each_entry(ns, &ctrl->namespaces, list) blk_sync_queue(ns->queue); up_read(&ctrl->namespaces_rwsem); @@ -51,4 +51,4 @@ Acked-by: Enzo Matsumiya +void nvme_sync_io_queues(struct nvme_ctrl *ctrl); void nvme_unfreeze(struct nvme_ctrl *ctrl); void nvme_wait_freeze(struct nvme_ctrl *ctrl); - void nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout); + int nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout); diff --git a/patches.suse/nvme-multipath-fix-double-initialization-of-ANA-stat.patch b/patches.suse/nvme-multipath-fix-double-initialization-of-ANA-stat.patch new file mode 100644 index 0000000..aaa95f0 --- /dev/null +++ b/patches.suse/nvme-multipath-fix-double-initialization-of-ANA-stat.patch @@ -0,0 +1,148 @@ +From: Christoph Hellwig +Date: Thu, 29 Apr 2021 14:18:53 +0200 +Subject: [PATCH] nvme-multipath: fix double initialization of ANA state +Patch-mainline: v5.13-rc2 +Git-commit: 5e1f689913a4498e3081093670ef9d85b2c60920 +References: bsc#1181161 + +nvme_init_identify and thus nvme_mpath_init can be called multiple +times and thus must not overwrite potentially initialized or in-use +fields. Split out a helper for the basic initialization when the +controller is initialized and make sure the init_identify path does +not blindly change in-use data structures. + +Fixes: 0d0b660f214d ("nvme: add ANA support") +Reported-by: Martin Wilck +Signed-off-by: Christoph Hellwig +Reviewed-by: Keith Busch +Reviewed-by: Sagi Grimberg +Reviewed-by: Hannes Reinecke +Acked-by: Enzo Matsumiya +--- + drivers/nvme/host/core.c | 3 +- + drivers/nvme/host/multipath.c | 55 ++++++++++++++++++----------------- + drivers/nvme/host/nvme.h | 8 +++-- + 3 files changed, 37 insertions(+), 29 deletions(-) + +--- a/drivers/nvme/host/core.c ++++ b/drivers/nvme/host/core.c +@@ -2619,7 +2619,7 @@ int nvme_init_identify(struct nvme_ctrl + ctrl->hmmaxd = le16_to_cpu(id->hmmaxd); + } + +- ret = nvme_mpath_init(ctrl, id); ++ ret = nvme_mpath_init_identify(ctrl, id); + kfree(id); + + if (ret < 0) +@@ -3793,6 +3793,8 @@ int nvme_init_ctrl(struct nvme_ctrl *ctr + dev_pm_qos_update_user_latency_tolerance(ctrl->device, + min(default_ps_max_latency_us, (unsigned long)S32_MAX)); + ++ nvme_mpath_init_ctrl(ctrl); ++ + return 0; + out_free_name: + nvme_put_ctrl(ctrl); +--- a/drivers/nvme/host/multipath.c ++++ b/drivers/nvme/host/multipath.c +@@ -722,9 +722,18 @@ void nvme_mpath_remove_disk(struct nvme_ + put_disk(head->disk); + } + +-int nvme_mpath_init(struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id) ++void nvme_mpath_init_ctrl(struct nvme_ctrl *ctrl) + { +- int error; ++ mutex_init(&ctrl->ana_lock); ++ timer_setup(&ctrl->anatt_timer, nvme_anatt_timeout, 0); ++ INIT_WORK(&ctrl->ana_work, nvme_ana_work); ++} ++ ++int nvme_mpath_init_identify(struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id) ++{ ++ size_t max_transfer_size = ctrl->max_hw_sectors << SECTOR_SHIFT; ++ size_t ana_log_size; ++ int error = 0; + + /* check if multipath is enabled and we have the capability */ + if (!multipath || !ctrl->subsys || !(ctrl->subsys->cmic & (1 << 3))) +@@ -735,36 +744,33 @@ int nvme_mpath_init(struct nvme_ctrl *ct + ctrl->nanagrpid = le32_to_cpu(id->nanagrpid); + ctrl->anagrpmax = le32_to_cpu(id->anagrpmax); + +- mutex_init(&ctrl->ana_lock); +- timer_setup(&ctrl->anatt_timer, nvme_anatt_timeout, 0); +- ctrl->ana_log_size = sizeof(struct nvme_ana_rsp_hdr) + +- ctrl->nanagrpid * sizeof(struct nvme_ana_group_desc); +- ctrl->ana_log_size += ctrl->max_namespaces * sizeof(__le32); +- +- if (ctrl->ana_log_size > ctrl->max_hw_sectors << SECTOR_SHIFT) { ++ ana_log_size = sizeof(struct nvme_ana_rsp_hdr) + ++ ctrl->nanagrpid * sizeof(struct nvme_ana_group_desc) + ++ ctrl->max_namespaces * sizeof(__le32); ++ if (ana_log_size > max_transfer_size) { + dev_err(ctrl->device, +- "ANA log page size (%zd) larger than MDTS (%d).\n", +- ctrl->ana_log_size, +- ctrl->max_hw_sectors << SECTOR_SHIFT); ++ "ANA log page size (%zd) larger than MDTS (%zd).\n", ++ ana_log_size, max_transfer_size); + dev_err(ctrl->device, "disabling ANA support.\n"); +- return 0; ++ goto out_uninit; + } + +- INIT_WORK(&ctrl->ana_work, nvme_ana_work); +- ctrl->ana_log_buf = kmalloc(ctrl->ana_log_size, GFP_KERNEL); +- if (!ctrl->ana_log_buf) { +- error = -ENOMEM; +- goto out; ++ if (ana_log_size > ctrl->ana_log_size) { ++ nvme_mpath_stop(ctrl); ++ kfree(ctrl->ana_log_buf); ++ ctrl->ana_log_buf = kmalloc(ctrl->ana_log_size, GFP_KERNEL); ++ if (!ctrl->ana_log_buf) ++ return -ENOMEM; + } + ++ ctrl->ana_log_size = ana_log_size; + error = nvme_read_ana_log(ctrl); + if (error) +- goto out_free_ana_log_buf; ++ goto out_uninit; + return 0; +-out_free_ana_log_buf: +- kfree(ctrl->ana_log_buf); +- ctrl->ana_log_buf = NULL; +-out: ++ ++out_uninit: ++ nvme_mpath_uninit(ctrl); + return error; + } + +--- a/drivers/nvme/host/nvme.h ++++ b/drivers/nvme/host/nvme.h +@@ -502,7 +502,8 @@ void nvme_kick_requeue_lists(struct nvme + int nvme_mpath_alloc_disk(struct nvme_ctrl *ctrl,struct nvme_ns_head *head); + void nvme_mpath_add_disk(struct nvme_ns *ns, struct nvme_id_ns *id); + void nvme_mpath_remove_disk(struct nvme_ns_head *head); +-int nvme_mpath_init(struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id); ++int nvme_mpath_init_identify(struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id); ++void nvme_mpath_init_ctrl(struct nvme_ctrl *ctrl); + void nvme_mpath_uninit(struct nvme_ctrl *ctrl); + void nvme_mpath_stop(struct nvme_ctrl *ctrl); + bool nvme_mpath_clear_current_path(struct nvme_ns *ns); +@@ -575,7 +576,10 @@ static inline void nvme_mpath_clear_ctrl + static inline void nvme_mpath_check_last_path(struct nvme_ns *ns) + { + } +-static inline int nvme_mpath_init(struct nvme_ctrl *ctrl, ++static inline void nvme_mpath_init_ctrl(struct nvme_ctrl *ctrl) ++{ ++} ++static inline int nvme_mpath_init_identify(struct nvme_ctrl *ctrl, + struct nvme_id_ctrl *id) + { + return 0; diff --git a/patches.suse/nvme-rdma-add-clean-action-for-failed-reconnection.patch b/patches.suse/nvme-rdma-add-clean-action-for-failed-reconnection.patch new file mode 100644 index 0000000..19f11ef --- /dev/null +++ b/patches.suse/nvme-rdma-add-clean-action-for-failed-reconnection.patch @@ -0,0 +1,80 @@ +From: Chao Leng +Date: Thu, 21 Jan 2021 11:32:37 +0800 +Subject: [PATCH] nvme-rdma: add clean action for failed reconnection +Patch-mainline: v5.12-rc1 +Git-commit: 958dc1d32c80566f58d18f05ef1f05bd32d172c1 +References: bsc#1181161 + +A crash happens when inject failed reconnection. +If reconnect failed after start io queues, the queues will be unquiesced +and new requests continue to be delivered. Reconnection error handling +process directly free queues without cancel suspend requests. The +suppend request will time out, and then crash due to use the queue +after free. + +Add sync queues and cancel suppend requests for reconnection error +handling. + +Signed-off-by: Chao Leng +Signed-off-by: Christoph Hellwig +Acked-by: Enzo Matsumiya +--- + drivers/nvme/host/rdma.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c +index f5ef3edeb2fd..d92132cbcbbe 100644 +--- a/drivers/nvme/host/rdma.c ++++ b/drivers/nvme/host/rdma.c +@@ -919,12 +919,16 @@ static int nvme_rdma_configure_admin_queue(struct nvme_rdma_ctrl *ctrl, + + error = nvme_init_identify(&ctrl->ctrl); + if (error) +- goto out_stop_queue; ++ goto out_quiesce_queue; + + return 0; + ++out_quiesce_queue: ++ blk_mq_quiesce_queue(ctrl->ctrl.admin_q); ++ blk_sync_queue(ctrl->ctrl.admin_q); + out_stop_queue: + nvme_rdma_stop_queue(&ctrl->queues[0]); ++ nvme_cancel_admin_tagset(&ctrl->ctrl); + out_cleanup_queue: + if (new) + blk_cleanup_queue(ctrl->ctrl.admin_q); +@@ -1001,8 +1005,10 @@ static int nvme_rdma_configure_io_queues(struct nvme_rdma_ctrl *ctrl, bool new) + + out_wait_freeze_timed_out: + nvme_stop_queues(&ctrl->ctrl); ++ nvme_sync_io_queues(&ctrl->ctrl); + nvme_rdma_stop_io_queues(ctrl); + out_cleanup_connect_q: ++ nvme_cancel_tagset(&ctrl->ctrl); + if (new) + blk_cleanup_queue(ctrl->ctrl.connect_q); + out_free_tag_set: +@@ -1144,10 +1150,18 @@ static int nvme_rdma_setup_ctrl(struct nvme_rdma_ctrl *ctrl, bool new) + return 0; + + destroy_io: +- if (ctrl->ctrl.queue_count > 1) ++ if (ctrl->ctrl.queue_count > 1) { ++ nvme_stop_queues(&ctrl->ctrl); ++ nvme_sync_io_queues(&ctrl->ctrl); ++ nvme_rdma_stop_io_queues(ctrl); ++ nvme_cancel_tagset(&ctrl->ctrl); + nvme_rdma_destroy_io_queues(ctrl, new); ++ } + destroy_admin: ++ blk_mq_quiesce_queue(ctrl->ctrl.admin_q); ++ blk_sync_queue(ctrl->ctrl.admin_q); + nvme_rdma_stop_queue(&ctrl->queues[0]); ++ nvme_cancel_admin_tagset(&ctrl->ctrl); + nvme_rdma_destroy_admin_queue(ctrl, new); + return ret; + } +-- +2.31.1 + diff --git a/patches.suse/nvme-rdma-fix-reset-hang-if-controller-died-in-the-m.patch b/patches.suse/nvme-rdma-fix-reset-hang-if-controller-died-in-the-m.patch new file mode 100644 index 0000000..e43e37f --- /dev/null +++ b/patches.suse/nvme-rdma-fix-reset-hang-if-controller-died-in-the-m.patch @@ -0,0 +1,58 @@ +From: Sagi Grimberg +Date: Thu, 30 Jul 2020 13:42:42 -0700 +Subject: [PATCH] nvme-rdma: fix reset hang if controller died in the middle of + a reset +Patch-mainline: v5.9-rc4 +Git-commit: 2362acb6785611eda795bfc12e1ea6b202ecf62c +References: bsc#1181161 + +If the controller becomes unresponsive in the middle of a reset, we +will hang because we are waiting for the freeze to complete, but that +cannot happen since we have commands that are inflight holding the +q_usage_counter, and we can't blindly fail requests that times out. + +So give a timeout and if we cannot wait for queue freeze before +unfreezing, fail and have the error handling take care how to +proceed (either schedule a reconnect of remove the controller). + +Reviewed-by: Christoph Hellwig +Signed-off-by: Sagi Grimberg +Acked-by: Enzo Matsumiya +--- + drivers/nvme/host/rdma.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c +index cb8731f4b316..1d8ea5305d60 100644 +--- a/drivers/nvme/host/rdma.c ++++ b/drivers/nvme/host/rdma.c +@@ -976,7 +976,15 @@ static int nvme_rdma_configure_io_queues(struct nvme_rdma_ctrl *ctrl, bool new) + + if (!new) { + nvme_start_queues(&ctrl->ctrl); +- nvme_wait_freeze(&ctrl->ctrl); ++ if (!nvme_wait_freeze_timeout(&ctrl->ctrl, NVME_IO_TIMEOUT)) { ++ /* ++ * If we timed out waiting for freeze we are likely to ++ * be stuck. Fail the controller initialization just ++ * to be safe. ++ */ ++ ret = -ENODEV; ++ goto out_wait_freeze_timed_out; ++ } + blk_mq_update_nr_hw_queues(ctrl->ctrl.tagset, + ctrl->ctrl.queue_count - 1); + nvme_unfreeze(&ctrl->ctrl); +@@ -984,6 +992,9 @@ static int nvme_rdma_configure_io_queues(struct nvme_rdma_ctrl *ctrl, bool new) + + return 0; + ++out_wait_freeze_timed_out: ++ nvme_stop_queues(&ctrl->ctrl); ++ nvme_rdma_stop_io_queues(ctrl); + out_cleanup_connect_q: + if (new) + blk_cleanup_queue(ctrl->ctrl.connect_q); +-- +2.26.2 + diff --git a/patches.suse/nvme-rdma-use-cancel-tagset-helper-for-tear-down.patch b/patches.suse/nvme-rdma-use-cancel-tagset-helper-for-tear-down.patch new file mode 100644 index 0000000..a8767c5 --- /dev/null +++ b/patches.suse/nvme-rdma-use-cancel-tagset-helper-for-tear-down.patch @@ -0,0 +1,50 @@ +From: Chao Leng +Date: Thu, 21 Jan 2021 11:32:39 +0800 +Subject: [PATCH] nvme-rdma: use cancel tagset helper for tear down +Patch-mainline: v5.12-rc1 +Git-commit: c4189d680e12f0a41eea94a1f466142b2bf02c3d +References: bsc#1181161 + +Use nvme_cancel_tagset and nvme_cancel_admin_tagset to clean code for +tear down process. + +Signed-off-by: Chao Leng +Signed-off-by: Christoph Hellwig +Acked-by: Enzo Matsumiya +--- + drivers/nvme/host/rdma.c | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c +index d92132cbcbbe..6700d8bab68a 100644 +--- a/drivers/nvme/host/rdma.c ++++ b/drivers/nvme/host/rdma.c +@@ -1025,11 +1025,7 @@ static void nvme_rdma_teardown_admin_queue(struct nvme_rdma_ctrl *ctrl, + blk_mq_quiesce_queue(ctrl->ctrl.admin_q); + blk_sync_queue(ctrl->ctrl.admin_q); + nvme_rdma_stop_queue(&ctrl->queues[0]); +- if (ctrl->ctrl.admin_tagset) { +- blk_mq_tagset_busy_iter(ctrl->ctrl.admin_tagset, +- nvme_cancel_request, &ctrl->ctrl); +- blk_mq_tagset_wait_completed_request(ctrl->ctrl.admin_tagset); +- } ++ nvme_cancel_admin_tagset(&ctrl->ctrl); + if (remove) + blk_mq_unquiesce_queue(ctrl->ctrl.admin_q); + nvme_rdma_destroy_admin_queue(ctrl, remove); +@@ -1043,11 +1039,7 @@ static void nvme_rdma_teardown_io_queues(struct nvme_rdma_ctrl *ctrl, + nvme_stop_queues(&ctrl->ctrl); + nvme_sync_io_queues(&ctrl->ctrl); + nvme_rdma_stop_io_queues(ctrl); +- if (ctrl->ctrl.tagset) { +- blk_mq_tagset_busy_iter(ctrl->ctrl.tagset, +- nvme_cancel_request, &ctrl->ctrl); +- blk_mq_tagset_wait_completed_request(ctrl->ctrl.tagset); +- } ++ nvme_cancel_tagset(&ctrl->ctrl); + if (remove) + nvme_start_queues(&ctrl->ctrl); + nvme_rdma_destroy_io_queues(ctrl, remove); +-- +2.31.1 + diff --git a/patches.suse/nvmet-use-new-ana_log_size-instead-the-old-one.patch b/patches.suse/nvmet-use-new-ana_log_size-instead-the-old-one.patch new file mode 100644 index 0000000..f97cb44 --- /dev/null +++ b/patches.suse/nvmet-use-new-ana_log_size-instead-the-old-one.patch @@ -0,0 +1,69 @@ +From: Hou Pu +Date: Thu, 13 May 2021 21:04:10 +0800 +Subject: [PATCH] nvmet: use new ana_log_size instead the old one +Patch-mainline: v5.13-rc2 +Git-commit: e181811bd04d874fe48bbfa1165a82068b58144d +References: bsc#1181161 + +The new ana_log_size should be used instead of the old one. +Or kernel NULL pointer dereference will happen like below: + +[ 38.957849][ T69] BUG: kernel NULL pointer dereference, address: 000000000000003c +[ 38.975550][ T69] #PF: supervisor write access in kernel mode +[ 38.975955][ T69] #PF: error_code(0x0002) - not-present page +[ 38.976905][ T69] PGD 0 P4D 0 +[ 38.979388][ T69] Oops: 0002 [#1] SMP NOPTI +[ 38.980488][ T69] CPU: 0 PID: 69 Comm: kworker/0:2 Not tainted 5.12.0+ #54 +[ 38.981254][ T69] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014 +[ 38.982502][ T69] Workqueue: events nvme_loop_execute_work +[ 38.985219][ T69] RIP: 0010:memcpy_orig+0x68/0x10f +[ 38.986203][ T69] Code: 83 c2 20 eb 44 48 01 d6 48 01 d7 48 83 ea 20 0f 1f 00 48 83 ea 20 4c 8b 46 f8 4c 8b 4e f0 4c 8b 56 e8 4c 8b 5e e0 48 8d 76 e0 <4c> 89 47 f8 4c 89 4f f0 4c 89 57 e8 4c 89 5f e0 48 8d 7f e0 73 d2 +[ 38.987677][ T69] RSP: 0018:ffffc900001b7d48 EFLAGS: 00000287 +[ 38.987996][ T69] RAX: 0000000000000020 RBX: 0000000000000024 RCX: 0000000000000010 +[ 38.988327][ T69] RDX: ffffffffffffffe4 RSI: ffff8881084bc004 RDI: 0000000000000044 +[ 38.988620][ T69] RBP: 0000000000000024 R08: 0000000100000000 R09: 0000000000000000 +[ 38.988991][ T69] R10: 0000000100000000 R11: 0000000000000001 R12: 0000000000000024 +[ 38.989289][ T69] R13: ffff8881084bc000 R14: 0000000000000000 R15: 0000000000000024 +[ 38.989845][ T69] FS: 0000000000000000(0000) GS:ffff888237c00000(0000) knlGS:0000000000000000 +[ 38.990234][ T69] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 38.990490][ T69] CR2: 000000000000003c CR3: 00000001085b2000 CR4: 00000000000006f0 +[ 38.991105][ T69] Call Trace: +[ 38.994157][ T69] sg_copy_buffer+0xb8/0xf0 +[ 38.995357][ T69] nvmet_copy_to_sgl+0x48/0x6d +[ 38.995565][ T69] nvmet_execute_get_log_page_ana+0xd4/0x1cb +[ 38.995792][ T69] nvmet_execute_get_log_page+0xc9/0x146 +[ 38.995992][ T69] nvme_loop_execute_work+0x3e/0x44 +[ 38.996181][ T69] process_one_work+0x1c3/0x3c0 +[ 38.996393][ T69] worker_thread+0x44/0x3d0 +[ 38.996600][ T69] ? cancel_delayed_work+0x90/0x90 +[ 38.996804][ T69] kthread+0xf7/0x130 +[ 38.996961][ T69] ? kthread_create_worker_on_cpu+0x70/0x70 +[ 38.997171][ T69] ret_from_fork+0x22/0x30 +[ 38.997705][ T69] Modules linked in: +[ 38.998741][ T69] CR2: 000000000000003c +[ 39.000104][ T69] ---[ end trace e719927b609d0fa0 ]--- + +Fixes: 5e1f689913a4 ("nvme-multipath: fix double initialization of ANA state") +Signed-off-by: Hou Pu +Signed-off-by: Christoph Hellwig +Acked-by: Enzo Matsumiya +--- + drivers/nvme/host/multipath.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c +index deb14562c96a..f81871c7128a 100644 +--- a/drivers/nvme/host/multipath.c ++++ b/drivers/nvme/host/multipath.c +@@ -817,7 +817,7 @@ int nvme_mpath_init_identify(struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id) + if (ana_log_size > ctrl->ana_log_size) { + nvme_mpath_stop(ctrl); + kfree(ctrl->ana_log_buf); +- ctrl->ana_log_buf = kmalloc(ctrl->ana_log_size, GFP_KERNEL); ++ ctrl->ana_log_buf = kmalloc(ana_log_size, GFP_KERNEL); + if (!ctrl->ana_log_buf) + return -ENOMEM; + } +-- +2.26.2 + diff --git a/patches.suse/qlcnic-fix-error-return-code-in-qlcnic_83xx_restart_.patch b/patches.suse/qlcnic-fix-error-return-code-in-qlcnic_83xx_restart_.patch new file mode 100644 index 0000000..a661764 --- /dev/null +++ b/patches.suse/qlcnic-fix-error-return-code-in-qlcnic_83xx_restart_.patch @@ -0,0 +1,40 @@ +From 7c1a49aa5eed3f60f013c3a155cb5f5b4ba99c0f Mon Sep 17 00:00:00 2001 +From: Zhang Changzhong +Date: Fri, 13 Nov 2020 14:16:26 +0800 +Subject: [PATCH 04/10] qlcnic: fix error return code in + qlcnic_83xx_restart_hw() +Git-commit: 3beb9be165083c2964eba1923601c3bfac0b02d4 +Patch-mainline: v5.10-rc5 +References: git-fixes + + +Fix to return a negative error code from the error handling +case instead of 0, as done elsewhere in this function. + +Fixes: 3ced0a88cd4c ("qlcnic: Add support to run firmware POST") +Reported-by: Hulk Robot +Signed-off-by: Zhang Changzhong +Link: https://lore.kernel.org/r/1605248186-16013-1-git-send-email-zhangchangzhong@huawei.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Denis Kirjanov +--- + drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +index a496390b8632..65fe8e035f61 100644 +--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c ++++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +@@ -2250,7 +2250,8 @@ static int qlcnic_83xx_restart_hw(struct qlcnic_adapter *adapter) + + /* Boot either flash image or firmware image from host file system */ + if (qlcnic_load_fw_file == 1) { +- if (qlcnic_83xx_load_fw_image_from_host(adapter)) ++ err = qlcnic_83xx_load_fw_image_from_host(adapter); ++ if (err) + return err; + } else { + QLC_SHARED_REG_WR32(adapter, QLCNIC_FW_IMG_VALID, +-- +2.16.4 + diff --git a/series.conf b/series.conf index 0c7fb8c..e74daf9 100644 --- a/series.conf +++ b/series.conf @@ -44372,6 +44372,7 @@ patches.suse/nvme-validate-controller-state-before-rescheduling-k.patch patches.suse/nvmet-rdma-fix-response-use-after-free.patch patches.suse/Revert-PCI-ASPM-Do-not-initialize-link-state-when-as.patch + patches.suse/crypto-do-not-free-algorithm-before-using.patch patches.suse/vhost-vsock-fix-reset-orphans-race-with-close-timeou.patch patches.suse/virtio-s390-avoid-race-on-vcdev-config patches.suse/virtio-s390-fix-race-in-ccw_io_helper @@ -57037,10 +57038,12 @@ patches.suse/dmaengine-pl330-Fix-burst-length-if-burst-size-is-sm.patch patches.suse/thermal-ti-soc-thermal-Fix-bogus-thermal-shutdowns-f.patch patches.suse/nvme-fabrics-don-t-check-state-NVME_CTRL_NEW-for-req.patch + patches.suse/nvme-have-nvme_wait_freeze_timeout-return-if-it-time.patch patches.suse/nvme-tcp-serialize-controller-teardown-sequences.patch patches.suse/nvme-tcp-fix-timeout-handler-236187c4ed1.patch patches.suse/nvme-rdma-serialize-controller-teardown-sequences.patch patches.suse/nvme-rdma-fix-timeout-handler-0475a8dcbce.patch + patches.suse/nvme-rdma-fix-reset-hang-if-controller-died-in-the-m.patch patches.suse/block-ensure-bdi-io_pages-is-always-initialized.patch patches.suse/block-allow-for_each_bvec-to-support-zero-len-bvec.patch patches.suse/xfs-don-t-update-mtime-on-COW-faults.patch @@ -57742,6 +57745,7 @@ patches.suse/ACPI-GED-fix-Wformat.patch patches.suse/bpf-Zero-fill-re-used-per-cpu-map-element.patch patches.suse/net-af_iucv-fix-null-pointer-dereference-on-shutdown + patches.suse/cosa-Add-missing-kfree-in-error-path-of-cosa_write.patch patches.suse/igc-Fix-returning-wrong-statistics.patch patches.suse/0003-drm-gma500-Fix-out-of-bounds-access-to-struct-drm_de.patch patches.suse/mmc-sdhci-of-esdhc-Handle-pulse-width-detection-erra.patch @@ -57770,18 +57774,24 @@ patches.suse/mac80211-minstrel-remove-deferred-sampling-code.patch patches.suse/mac80211-minstrel-fix-tx-status-processing-corner-ca.patch patches.suse/mac80211-free-sta-in-sta_info_insert_finish-on-error.patch + patches.suse/net-dsa-mv88e6xxx-Avoid-VTU-corruption-on-6097.patch patches.suse/can-af_can-prevent-potential-access-of-uninitialized.patch patches.suse/can-af_can-prevent-potential-access-of-uninitialize2.patch patches.suse/can-dev-can_restart-post-buffer-from-the-right-conte.patch + patches.suse/can-ti_hecc-Fix-memleak-in-ti_hecc_probe.patch patches.suse/can-mcba_usb-mcba_usb_start_xmit-first-fill-skb-then.patch patches.suse/can-peak_usb-fix-potential-integer-overflow-on-shift.patch patches.suse/can-m_can-m_can_handle_state_change-fix-state-change.patch patches.suse/can-m_can-m_can_stop-set-device-to-software-init-mod.patch + patches.suse/qlcnic-fix-error-return-code-in-qlcnic_83xx_restart_.patch patches.suse/bnxt_en-read-EEPROM-A2h-address-using-page-0.patch patches.suse/qed-fix-error-return-code-in-qed_iwarp_ll2_start.patch + patches.suse/net-b44-fix-error-return-code-in-b44_init_one.patch patches.suse/inet_diag-Fix-error-path-to-cancel-the-meseage-in-in.patch + patches.suse/mlxsw-core-Use-variable-timeout-for-EMAD-retries.patch patches.suse/page_frag-Recover-from-memory-pressure.patch patches.suse/net-mlx5-Add-handling-of-port-type-in-rule-deletion.patch + patches.suse/net-mlx5-Disable-QoS-when-min_rates-on-all-VFs-are-z.patch patches.suse/net-mlx4_core-Fix-init_hca-fields-offset.patch patches.suse/0001-drm-bridge-dw-hdmi-Avoid-resetting-force-in-the-dete.patch patches.suse/drm-sun4i-dw-hdmi-fix-error-return-code-in-sun8i_dw_.patch @@ -57872,9 +57882,12 @@ patches.suse/ibmvnic-no-reset-timeout-for-5-seconds-after-reset.patch patches.suse/ibmvnic-reduce-wait-for-completion-time.patch patches.suse/chelsio-chtls-fix-panic-during-unload-reload-chtls.patch + patches.suse/can-sja1000-sja1000_err-don-t-count-arbitration-lose.patch + patches.suse/can-sun4i_can-sun4i_can_err-don-t-count-arbitration-.patch patches.suse/can-c_can-c_can_power_up-fix-error-handling.patch patches.suse/ibmvnic-Ensure-that-SCRQ-entry-reads-are-correctly-o.patch patches.suse/ibmvnic-Fix-TX-completion-error-handling.patch + patches.suse/net-broadcom-CNIC-requires-MMU.patch patches.suse/inet_ecn-Fix-endianness-of-checksum-update-when-sett.patch patches.suse/dpaa_eth-copy-timestamp-fields-to-new-skb-in-A-05038.patch patches.suse/net-x25-prevent-a-couple-of-overflows.patch @@ -58445,6 +58458,9 @@ patches.suse/btrfs-track-ordered-bytes-instead-of-just-dio-ordered-bytes.patch patches.suse/xfs-Fix-assert-failure-in-xfs_setattr_size.patch patches.suse/xfs-reduce-quota-reservation-when-doing-a-dax-unwrit.patch + patches.suse/nvme-core-add-cancel-tagset-helpers.patch + patches.suse/nvme-rdma-add-clean-action-for-failed-reconnection.patch + patches.suse/nvme-rdma-use-cancel-tagset-helper-for-tear-down.patch patches.suse/0001-Xen-x86-don-t-bail-early-from-clear_foreign_p2m_mapp.patch patches.suse/0002-Xen-x86-also-check-kernel-mapping-in-set_foreign_p2m.patch patches.suse/0003-Xen-gntdev-correct-dev_bus_addr-handling-in-gntdev_m.patch @@ -59142,6 +59158,8 @@ patches.suse/dax-Add-an-enum-for-specifying-dax-wakup-mode.patch patches.suse/dax-Add-a-wakeup-mode-parameter-to-put_unlocked_entr.patch patches.suse/dax-Wake-up-all-waiters-after-invalidating-dax-entry.patch + patches.suse/nvme-multipath-fix-double-initialization-of-ANA-stat.patch + patches.suse/nvmet-use-new-ana_log_size-instead-the-old-one.patch patches.suse/blk-mq-Swap-two-calls-in-blk_mq_exit_queue.patch patches.suse/powerpc-64s-Fix-crashes-when-toggling-stf-barrier.patch patches.suse/usb-typec-ucsi-Put-fwnode-in-any-case-during-probe.patch @@ -60459,6 +60477,7 @@ patches.kabi/scsi-ufs-fix-ktime_t-kabi-change patches.kabi/NFSv4.1-Don-t-rebind-to-the-same-source-port-when-re.patch patches.kabi/PCI-quirks-fix-false-kABI-positive.patch + patches.kabi/kabi-fix-nvme_wait_freeze_timeout-return-type.patch ######################################################## # You'd better have a good reason for adding a patch