summaryrefslogtreecommitdiff |
diff options
author | Kernel Build Daemon <kbuild@suse.de> | 2018-08-16 07:02:39 +0200 |
---|---|---|
committer | Kernel Build Daemon <kbuild@suse.de> | 2018-08-16 07:02:39 +0200 |
commit | bb7931078a2e6f1c2e353e287c303be9f11d7f52 (patch) | |
tree | 45b25172c0c53c9b7d6d2745bbe8fe3b8b35bb8b | |
parent | 7edca9f6412f0e9172ad6930a636a92547d02e27 (diff) | |
parent | 5063094bee7ceda1aa4049a5fd98fe3437549ecb (diff) |
Merge branch 'SLE15' into SLE15-AZURErpm-4.12.14-5.13--sle15-updatesrpm-4.12.14-5.13
42 files changed, 1739 insertions, 49 deletions
diff --git a/patches.arch/PM-devfreq-rk3399_dmc-Fix-duplicated-opp-table-on-re.patch b/patches.arch/PM-devfreq-rk3399_dmc-Fix-duplicated-opp-table-on-re.patch new file mode 100644 index 0000000000..32854c737e --- /dev/null +++ b/patches.arch/PM-devfreq-rk3399_dmc-Fix-duplicated-opp-table-on-re.patch @@ -0,0 +1,101 @@ +From d6e98f3e6d825380b566dc59359917a116090154 Mon Sep 17 00:00:00 2001 +From: Enric Balletbo i Serra <enric.balletbo@collabora.com> +Date: Fri, 15 Jun 2018 17:12:17 +0200 +Subject: [PATCH] PM / devfreq: rk3399_dmc: Fix duplicated opp table on reload. +Git-commit: d6e98f3e6d825380b566dc59359917a116090154 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +The opp table is not removed when the driver is unloaded neither when +there is an error within probe, so if the driver is reloaded the opp +core shows the following warning: + + rk3399-dmc-freq dmc: _opp_add: duplicate OPPs detected. Existing: freq: + 200000000, volt: 900000, enabled: 1. New: freq: 200000000, + volt: 900000, enabled: 1 + rk3399-dmc-freq dmc: _opp_add: duplicate OPPs detected. Existing: freq: + 400000000, volt: 900000, enabled: 1. New: freq: 400000000, + volt: 900000, enabled: 1 + rk3399-dmc-freq dmc: _opp_add: duplicate OPPs detected. Existing: freq: + 666000000, volt: 900000, enabled: 1. New: freq: 666000000, + volt: 900000, enabled: 1 + rk3399-dmc-freq dmc: _opp_add: duplicate OPPs detected. Existing: freq: + 800000000, volt: 900000, enabled: 1. New: freq: 800000000, + volt: 900000, enabled: 1 + rk3399-dmc-freq dmc: _opp_add: duplicate OPPs detected. Existing: freq: + 928000000, volt: 900000, enabled: 1. New: freq: 928000000, + volt: 900000, enabled: 1 + +This patch fixes the error path in the probe function and adds a .remove +function to properly cleanup the opp table on unloading. + +Fixes: 5a893e31a636c (PM / devfreq: rockchip: add devfreq driver for rk3399 dmc) +Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> +Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com> +Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/devfreq/rk3399_dmc.c | 31 +++++++++++++++++++++++++++---- + 1 file changed, 27 insertions(+), 4 deletions(-) + +--- a/drivers/devfreq/rk3399_dmc.c ++++ b/drivers/devfreq/rk3399_dmc.c +@@ -420,8 +420,10 @@ static int rk3399_dmcfreq_probe(struct p + data->rate = clk_get_rate(data->dmc_clk); + + opp = devfreq_recommended_opp(dev, &data->rate, 0); +- if (IS_ERR(opp)) +- return PTR_ERR(opp); ++ if (IS_ERR(opp)) { ++ ret = PTR_ERR(opp); ++ goto err_free_opp; ++ } + + data->rate = dev_pm_opp_get_freq(opp); + data->volt = dev_pm_opp_get_voltage(opp); +@@ -433,14 +435,34 @@ static int rk3399_dmcfreq_probe(struct p + &rk3399_devfreq_dmc_profile, + "simple_ondemand", + &data->ondemand_data); +- if (IS_ERR(data->devfreq)) +- return PTR_ERR(data->devfreq); ++ if (IS_ERR(data->devfreq)) { ++ ret = PTR_ERR(data->devfreq); ++ goto err_free_opp; ++ } ++ + devm_devfreq_register_opp_notifier(dev, data->devfreq); + + data->dev = dev; + platform_set_drvdata(pdev, data); + + return 0; ++ ++err_free_opp: ++ dev_pm_opp_of_remove_table(&pdev->dev); ++ return ret; ++} ++ ++static int rk3399_dmcfreq_remove(struct platform_device *pdev) ++{ ++ struct rk3399_dmcfreq *dmcfreq = dev_get_drvdata(&pdev->dev); ++ ++ /* ++ * Before remove the opp table we need to unregister the opp notifier. ++ */ ++ devm_devfreq_unregister_opp_notifier(dmcfreq->dev, dmcfreq->devfreq); ++ dev_pm_opp_of_remove_table(dmcfreq->dev); ++ ++ return 0; + } + + static const struct of_device_id rk3399dmc_devfreq_of_match[] = { +@@ -451,6 +473,7 @@ MODULE_DEVICE_TABLE(of, rk3399dmc_devfre + + static struct platform_driver rk3399_dmcfreq_driver = { + .probe = rk3399_dmcfreq_probe, ++ .remove = rk3399_dmcfreq_remove, + .driver = { + .name = "rk3399-dmc-freq", + .pm = &rk3399_dmcfreq_pm, diff --git a/patches.drivers/ALSA-snd-aoa-add-of_node_put-in-error-path b/patches.drivers/ALSA-snd-aoa-add-of_node_put-in-error-path new file mode 100644 index 0000000000..8592c92bbb --- /dev/null +++ b/patches.drivers/ALSA-snd-aoa-add-of_node_put-in-error-path @@ -0,0 +1,43 @@ +From 222bce5eb88d1af656419db04bcd84b2419fb900 Mon Sep 17 00:00:00 2001 +From: Nicholas Mc Guire <hofrat@osadl.org> +Date: Fri, 29 Jun 2018 19:07:42 +0200 +Subject: [PATCH] ALSA: snd-aoa: add of_node_put() in error path +Git-commit: 222bce5eb88d1af656419db04bcd84b2419fb900 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + + Both calls to of_find_node_by_name() and of_get_next_child() return a +node pointer with refcount incremented thus it must be explicidly +decremented here after the last usage. As we are assured to have a +refcounted np either from the initial +of_find_node_by_name(NULL, name); or from the of_get_next_child(gpio, np) +in the while loop if we reached the error code path below, an +x of_node_put(np) is needed. + +Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org> +Fixes: commit f3d9478b2ce4 ("[ALSA] snd-aoa: add snd-aoa") +Signed-off-by: Takashi Iwai <tiwai@suse.de> + +--- + sound/aoa/core/gpio-feature.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/sound/aoa/core/gpio-feature.c b/sound/aoa/core/gpio-feature.c +index 71960089e207..65557421fe0b 100644 +--- a/sound/aoa/core/gpio-feature.c ++++ b/sound/aoa/core/gpio-feature.c +@@ -88,8 +88,10 @@ static struct device_node *get_gpio(char *name, + } + + reg = of_get_property(np, "reg", NULL); +- if (!reg) ++ if (!reg) { ++ of_node_put(np); + return NULL; ++ } + + *gpioptr = *reg; + +-- +2.18.0 + diff --git a/patches.drivers/ASoC-dpcm-don-t-merge-format-from-invalid-codec-dai b/patches.drivers/ASoC-dpcm-don-t-merge-format-from-invalid-codec-dai new file mode 100644 index 0000000000..97f385d26c --- /dev/null +++ b/patches.drivers/ASoC-dpcm-don-t-merge-format-from-invalid-codec-dai @@ -0,0 +1,49 @@ +From 4febced15ac8ddb9cf3e603edb111842e4863d9a Mon Sep 17 00:00:00 2001 +From: Jerome Brunet <jbrunet@baylibre.com> +Date: Wed, 27 Jun 2018 17:36:38 +0200 +Subject: [PATCH] ASoC: dpcm: don't merge format from invalid codec dai +Git-commit: 4febced15ac8ddb9cf3e603edb111842e4863d9a +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +When merging codec formats, dpcm_runtime_base_format() should skip +the codecs which are not supporting the current stream direction. + +At the moment, if a BE link has more than one codec, and only one +of these codecs has no capture DAI, it becomes impossible to start +a capture stream because the merged format would be 0. + +Skipping invalid codec DAI solves the problem. + +Fixes: b073ed4e2126 ("ASoC: soc-pcm: DPCM cares BE format") +Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> +Signed-off-by: Mark Brown <broonie@kernel.org> +Cc: stable@vger.kernel.org +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + sound/soc/soc-pcm.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c +index 5e7ae47a9658..5feae9666822 100644 +--- a/sound/soc/soc-pcm.c ++++ b/sound/soc/soc-pcm.c +@@ -1694,6 +1694,14 @@ static u64 dpcm_runtime_base_format(struct snd_pcm_substream *substream) + int i; + + for (i = 0; i < be->num_codecs; i++) { ++ /* ++ * Skip CODECs which don't support the current stream ++ * type. See soc_pcm_init_runtime_hw() for more details ++ */ ++ if (!snd_soc_dai_stream_valid(be->codec_dais[i], ++ stream)) ++ continue; ++ + codec_dai_drv = be->codec_dais[i]->driver; + if (stream == SNDRV_PCM_STREAM_PLAYBACK) + codec_stream = &codec_dai_drv->playback; +-- +2.18.0 + diff --git a/patches.drivers/ASoC-es7134-remove-64kHz-rate-from-the-supported-rat b/patches.drivers/ASoC-es7134-remove-64kHz-rate-from-the-supported-rat new file mode 100644 index 0000000000..877c21de4a --- /dev/null +++ b/patches.drivers/ASoC-es7134-remove-64kHz-rate-from-the-supported-rat @@ -0,0 +1,39 @@ +From 5650729f9a1bbf65b57139d855dabe0a7e6cb494 Mon Sep 17 00:00:00 2001 +From: Jerome Brunet <jbrunet@baylibre.com> +Date: Fri, 29 Jun 2018 17:09:20 +0200 +Subject: [PATCH] ASoC: es7134: remove 64kHz rate from the supported rates +Git-commit: 5650729f9a1bbf65b57139d855dabe0a7e6cb494 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +64Khz is actually not supported by the es7134 according to the datasheet + +Fixes: 9000b59d7a12 ("ASoC: es7134: add es7134 DAC driver") +Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> +Signed-off-by: Mark Brown <broonie@kernel.org> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + sound/soc/codecs/es7134.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/sound/soc/codecs/es7134.c b/sound/soc/codecs/es7134.c +index 58515bb1a303..2fbb49f5b278 100644 +--- a/sound/soc/codecs/es7134.c ++++ b/sound/soc/codecs/es7134.c +@@ -48,7 +48,11 @@ static struct snd_soc_dai_driver es7134_dai = { + .stream_name = "Playback", + .channels_min = 2, + .channels_max = 2, +- .rates = SNDRV_PCM_RATE_8000_192000, ++ .rates = (SNDRV_PCM_RATE_8000_48000 | ++ SNDRV_PCM_RATE_88200 | ++ SNDRV_PCM_RATE_96000 | ++ SNDRV_PCM_RATE_176400 | ++ SNDRV_PCM_RATE_192000), + .formats = (SNDRV_PCM_FMTBIT_S16_LE | + SNDRV_PCM_FMTBIT_S18_3LE | + SNDRV_PCM_FMTBIT_S20_3LE | +-- +2.18.0 + diff --git a/patches.drivers/ASoC-rsnd-cmd-Add-missing-newline-to-debug-message b/patches.drivers/ASoC-rsnd-cmd-Add-missing-newline-to-debug-message new file mode 100644 index 0000000000..562ea8f55f --- /dev/null +++ b/patches.drivers/ASoC-rsnd-cmd-Add-missing-newline-to-debug-message @@ -0,0 +1,38 @@ +From 74b37e299f038c910dc728d736e3f071ba0ead2a Mon Sep 17 00:00:00 2001 +From: Andrew Gabbasov <andrew_gabbasov@mentor.com> +Date: Thu, 5 Jul 2018 11:20:04 +0900 +Subject: [PATCH] ASoC: rsnd: cmd: Add missing newline to debug message +Git-commit: 74b37e299f038c910dc728d736e3f071ba0ead2a +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +To comply with the style of all kernel messages, add newline +to the end of every message. + +Fixes: 70fb10529f61 ("ASoC: rsnd: add MIX (Mixer) support") +Signed-off-by: Andrew Gabbasov <andrew_gabbasov@mentor.com> +Signed-off-by: Jiada Wang <jiada_wang@mentor.com> +Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> +Signed-off-by: Mark Brown <broonie@kernel.org> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + sound/soc/sh/rcar/cmd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sound/soc/sh/rcar/cmd.c b/sound/soc/sh/rcar/cmd.c +index d8043ad33540..cc191cd5fb82 100644 +--- a/sound/soc/sh/rcar/cmd.c ++++ b/sound/soc/sh/rcar/cmd.c +@@ -86,7 +86,7 @@ static int rsnd_cmd_init(struct rsnd_mod *mod, + cmd_case[rsnd_mod_id(src)] << 16; + } + +- dev_dbg(dev, "ctu/mix path = 0x%08x", data); ++ dev_dbg(dev, "ctu/mix path = 0x%08x\n", data); + + rsnd_mod_write(mod, CMD_ROUTE_SLCT, data); + rsnd_mod_write(mod, CMD_BUSIF_MODE, rsnd_get_busif_shift(io, mod) | 1); +-- +2.18.0 + diff --git a/patches.drivers/ASoC-sirf-Fix-potential-NULL-pointer-dereference b/patches.drivers/ASoC-sirf-Fix-potential-NULL-pointer-dereference new file mode 100644 index 0000000000..2f1f6daea7 --- /dev/null +++ b/patches.drivers/ASoC-sirf-Fix-potential-NULL-pointer-dereference @@ -0,0 +1,48 @@ +From ae1c696a480c67c45fb23b35162183f72c6be0e1 Mon Sep 17 00:00:00 2001 +From: "Gustavo A. R. Silva" <gustavo@embeddedor.com> +Date: Thu, 26 Jul 2018 15:49:10 -0500 +Subject: [PATCH] ASoC: sirf: Fix potential NULL pointer dereference +Git-commit: ae1c696a480c67c45fb23b35162183f72c6be0e1 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +There is a potential execution path in which function +platform_get_resource() returns NULL. If this happens, +we will end up having a NULL pointer dereference. + +Fix this by replacing devm_ioremap with devm_ioremap_resource, +which has the NULL check and the memory region request. + +This code was detected with the help of Coccinelle. + +Cc: stable@vger.kernel.org +Fixes: 2bd8d1d5cf89 ("ASoC: sirf: Add audio usp interface driver") +Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com> +Signed-off-by: Mark Brown <broonie@kernel.org> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + sound/soc/sirf/sirf-usp.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/sound/soc/sirf/sirf-usp.c b/sound/soc/sirf/sirf-usp.c +index 77e7dcf969d0..d70fcd4a1adf 100644 +--- a/sound/soc/sirf/sirf-usp.c ++++ b/sound/soc/sirf/sirf-usp.c +@@ -370,10 +370,9 @@ static int sirf_usp_pcm_probe(struct platform_device *pdev) + platform_set_drvdata(pdev, usp); + + mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); +- base = devm_ioremap(&pdev->dev, mem_res->start, +- resource_size(mem_res)); +- if (base == NULL) +- return -ENOMEM; ++ base = devm_ioremap_resource(&pdev->dev, mem_res); ++ if (IS_ERR(base)) ++ return PTR_ERR(base); + usp->regmap = devm_regmap_init_mmio(&pdev->dev, base, + &sirf_usp_regmap_config); + if (IS_ERR(usp->regmap)) +-- +2.18.0 + diff --git a/patches.drivers/ASoC-zte-Fix-incorrect-PCM-format-bit-usages b/patches.drivers/ASoC-zte-Fix-incorrect-PCM-format-bit-usages new file mode 100644 index 0000000000..4180edda6b --- /dev/null +++ b/patches.drivers/ASoC-zte-Fix-incorrect-PCM-format-bit-usages @@ -0,0 +1,43 @@ +From c889a45d229938a94b50aadb819def8bb11a6a54 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai <tiwai@suse.de> +Date: Wed, 25 Jul 2018 22:40:49 +0200 +Subject: [PATCH] ASoC: zte: Fix incorrect PCM format bit usages +Git-commit: c889a45d229938a94b50aadb819def8bb11a6a54 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +zx-tdm driver sets the DAI driver definitions with the format bits +wrongly set with SNDRV_PCM_FORMAT_*, instead of SNDRV_PCM_FMTBIT_*. + +This patch corrects the definitions. + +Spotted by a sparse warning: + sound/soc/zte/zx-tdm.c:363:35: warning: restricted snd_pcm_format_t degrades to integer + +Fixes: 870e0ddc4345 ("ASoC: zx-tdm: add zte's tdm controller driver") +Cc: <stable@vger.kernel.org> +Signed-off-by: Takashi Iwai <tiwai@suse.de> +Signed-off-by: Mark Brown <broonie@kernel.org> + +--- + sound/soc/zte/zx-tdm.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/sound/soc/zte/zx-tdm.c b/sound/soc/zte/zx-tdm.c +index dc955272f58b..389272eeba9a 100644 +--- a/sound/soc/zte/zx-tdm.c ++++ b/sound/soc/zte/zx-tdm.c +@@ -144,8 +144,8 @@ static void zx_tdm_rx_dma_en(struct zx_tdm_info *tdm, bool on) + #define ZX_TDM_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000) + + #define ZX_TDM_FMTBIT \ +- (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FORMAT_MU_LAW | \ +- SNDRV_PCM_FORMAT_A_LAW) ++ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_MU_LAW | \ ++ SNDRV_PCM_FMTBIT_A_LAW) + + static int zx_tdm_dai_probe(struct snd_soc_dai *dai) + { +-- +2.18.0 + diff --git a/patches.drivers/geneve-update-skb-dst-pmtu-on-tx-path.patch b/patches.drivers/geneve-update-skb-dst-pmtu-on-tx-path.patch new file mode 100644 index 0000000000..2a7bdf2d59 --- /dev/null +++ b/patches.drivers/geneve-update-skb-dst-pmtu-on-tx-path.patch @@ -0,0 +1,61 @@ +From 52a589d51f1008f62569bf89e95b26221ee76690 Mon Sep 17 00:00:00 2001 +From: Xin Long <lucien.xin@gmail.com> +Date: Mon, 25 Dec 2017 14:43:58 +0800 +Subject: [PATCH] geneve: update skb dst pmtu on tx path +Git-commit: 52a589d51f1008f62569bf89e95b26221ee76690 +Patch-mainline: v4.15-rc8 +References: bsc#1051510 + +Commit a93bf0ff4490 ("vxlan: update skb dst pmtu on tx path") has fixed +a performance issue caused by the change of lower dev's mtu for vxlan. + +The same thing needs to be done for geneve as well. + +Note that geneve cannot adjust it's mtu according to lower dev's mtu +when creating it. The performance is very low later when netperfing +over it without fixing the mtu manually. This patch could also avoid +this issue. + +Signed-off-by: Xin Long <lucien.xin@gmail.com> +Signed-off-by: David S. Miller <davem@davemloft.net> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/net/geneve.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c +index b718a02a6bb6..0a48b3073d3d 100644 +--- a/drivers/net/geneve.c ++++ b/drivers/net/geneve.c +@@ -825,6 +825,13 @@ static int geneve_xmit_skb(struct sk_buff *skb, struct net_device *dev, + if (IS_ERR(rt)) + return PTR_ERR(rt); + ++ if (skb_dst(skb)) { ++ int mtu = dst_mtu(&rt->dst) - sizeof(struct iphdr) - ++ GENEVE_BASE_HLEN - info->options_len - 14; ++ ++ skb_dst(skb)->ops->update_pmtu(skb_dst(skb), NULL, skb, mtu); ++ } ++ + sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true); + if (geneve->collect_md) { + tos = ip_tunnel_ecn_encap(key->tos, ip_hdr(skb), skb); +@@ -864,6 +871,13 @@ static int geneve6_xmit_skb(struct sk_buff *skb, struct net_device *dev, + if (IS_ERR(dst)) + return PTR_ERR(dst); + ++ if (skb_dst(skb)) { ++ int mtu = dst_mtu(dst) - sizeof(struct ipv6hdr) - ++ GENEVE_BASE_HLEN - info->options_len - 14; ++ ++ skb_dst(skb)->ops->update_pmtu(skb_dst(skb), NULL, skb, mtu); ++ } ++ + sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true); + if (geneve->collect_md) { + prio = ip_tunnel_ecn_encap(key->tos, ip_hdr(skb), skb); +-- +2.18.0 + diff --git a/patches.drivers/i2c-imx-Fix-reinit_completion-use.patch b/patches.drivers/i2c-imx-Fix-reinit_completion-use.patch new file mode 100644 index 0000000000..57d1ac449c --- /dev/null +++ b/patches.drivers/i2c-imx-Fix-reinit_completion-use.patch @@ -0,0 +1,52 @@ +From 9f9e3e0d4dd3338b3f3dde080789f71901e1e4ff Mon Sep 17 00:00:00 2001 +From: Esben Haabendal <eha@deif.com> +Date: Mon, 9 Jul 2018 11:43:01 +0200 +Subject: [PATCH] i2c: imx: Fix reinit_completion() use +Mime-version: 1.0 +Content-type: text/plain; charset=UTF-8 +Content-transfer-encoding: 8bit +Git-commit: 9f9e3e0d4dd3338b3f3dde080789f71901e1e4ff +Patch-mainline: v4.18-rc7 +References: bsc#1051510 + +Make sure to call reinit_completion() before dma is started to avoid race +condition where reinit_completion() is called after complete() and before +wait_for_completion_timeout(). + +Signed-off-by: Esben Haabendal <eha@deif.com> +Fixes: ce1a78840ff7 ("i2c: imx: add DMA support for freescale i2c driver") +Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> +Signed-off-by: Wolfram Sang <wsa@the-dreams.de> +Cc: stable@kernel.org +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/i2c/busses/i2c-imx.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/i2c/busses/i2c-imx.c ++++ b/drivers/i2c/busses/i2c-imx.c +@@ -376,6 +376,7 @@ static int i2c_imx_dma_xfer(struct imx_i + goto err_desc; + } + ++ reinit_completion(&dma->cmd_complete); + txdesc->callback = i2c_imx_dma_callback; + txdesc->callback_param = i2c_imx; + if (dma_submit_error(dmaengine_submit(txdesc))) { +@@ -619,7 +620,6 @@ static int i2c_imx_dma_write(struct imx_ + * The first byte must be transmitted by the CPU. + */ + imx_i2c_write_reg(msgs->addr << 1, i2c_imx, IMX_I2C_I2DR); +- reinit_completion(&i2c_imx->dma->cmd_complete); + time_left = wait_for_completion_timeout( + &i2c_imx->dma->cmd_complete, + msecs_to_jiffies(DMA_TIMEOUT)); +@@ -678,7 +678,6 @@ static int i2c_imx_dma_read(struct imx_i + if (result) + return result; + +- reinit_completion(&i2c_imx->dma->cmd_complete); + time_left = wait_for_completion_timeout( + &i2c_imx->dma->cmd_complete, + msecs_to_jiffies(DMA_TIMEOUT)); diff --git a/patches.drivers/nvme-add-ANA-support.patch b/patches.drivers/nvme-add-ANA-support.patch index def86f40a3..506c7090b6 100644 --- a/patches.drivers/nvme-add-ANA-support.patch +++ b/patches.drivers/nvme-add-ANA-support.patch @@ -2,8 +2,7 @@ From: Christoph Hellwig <hch@lst.de> Date: Mon, 14 May 2018 08:48:54 +0200 Subject: [PATCH] nvme: add ANA support Git-commit: 0d0b660f214dc4905db7b6bc998bad0c16dfb1ba -Git-repo: git://git.kernel.dk/linux-block.git -Patch-Mainline: queued +Patch-Mainline: v4.19-rc1 References: bsc#1054245 Add support for Asynchronous Namespace Access as specified in NVMe 1.3 diff --git a/patches.drivers/nvme-move-init-of-keep_alive-work-item-to-controller.patch b/patches.drivers/nvme-move-init-of-keep_alive-work-item-to-controller.patch index c043026e70..0a17be9f8e 100644 --- a/patches.drivers/nvme-move-init-of-keep_alive-work-item-to-controller.patch +++ b/patches.drivers/nvme-move-init-of-keep_alive-work-item-to-controller.patch @@ -3,8 +3,7 @@ Date: Tue, 12 Jun 2018 16:28:24 -0700 Subject: [PATCH] nvme: move init of keep_alive work item to controller initialization Git-commit: 230f1f9e04e2abee34b1478b3bcc2d947b7cc2a0 -Git-repo: git://git.kernel.dk/linux-block.git -Patch-Mainline: queued +Patch-Mainline: v4.19-rc1 References: bsc#1098706 diff --git a/patches.drivers/nvme-remove-nvme_req_needs_failover.patch b/patches.drivers/nvme-remove-nvme_req_needs_failover.patch index b651aa3c6b..8b97c6a7ef 100644 --- a/patches.drivers/nvme-remove-nvme_req_needs_failover.patch +++ b/patches.drivers/nvme-remove-nvme_req_needs_failover.patch @@ -2,8 +2,7 @@ From: Christoph Hellwig <hch@lst.de> Date: Mon, 4 Jun 2018 08:43:00 +0200 Subject: [PATCH] nvme: remove nvme_req_needs_failover Git-commit: 8decf5d5b9f3f72b802a017b0b035f7db0592acf -Git-repo: git://git.kernel.dk/linux-block.git -Patch-Mainline: queued +Patch-Mainline: v4.19-rc1 References: bsc#1054245 Now that we just call out to blk_path_error there isn't really any good diff --git a/patches.drivers/nvme-simplify-the-API-for-getting-log-pages.patch b/patches.drivers/nvme-simplify-the-API-for-getting-log-pages.patch index facc1a3780..b45ee18db2 100644 --- a/patches.drivers/nvme-simplify-the-API-for-getting-log-pages.patch +++ b/patches.drivers/nvme-simplify-the-API-for-getting-log-pages.patch @@ -2,8 +2,7 @@ From: Christoph Hellwig <hch@lst.de> Date: Wed, 6 Jun 2018 14:39:00 +0200 Subject: [PATCH] nvme: simplify the API for getting log pages Git-commit: 0e98719b0e4b48b61965e1d1cba037c2005d01d7 -Git-repo: git://git.kernel.dk/linux-block.git -Patch-Mainline: queued +Patch-Mainline: v4.19-rc1 References: bsc#1054245 Merge nvme_get_log and nvme_get_log_ext into a single helper, which takes diff --git a/patches.drivers/nvme.h-add-ANA-definitions.patch b/patches.drivers/nvme.h-add-ANA-definitions.patch index e29e7cf125..5faaf7414d 100644 --- a/patches.drivers/nvme.h-add-ANA-definitions.patch +++ b/patches.drivers/nvme.h-add-ANA-definitions.patch @@ -2,8 +2,7 @@ From: Christoph Hellwig <hch@lst.de> Date: Sun, 13 May 2018 18:53:57 +0200 Subject: [PATCH] nvme.h: add ANA definitions Git-commit: 1a37621658fe06b10cf8bac02c32304d2a1c888c -Git-repo: git://git.kernel.dk/linux-block.git -Patch-Mainline: queued +Patch-Mainline: v4.19-rc1 References: bsc#1054245 Add various defintions from NVMe 1.3 TP 4004. diff --git a/patches.drivers/nvme.h-add-support-for-the-log-specific-field.patch b/patches.drivers/nvme.h-add-support-for-the-log-specific-field.patch index fc6140e17a..331d910ce2 100644 --- a/patches.drivers/nvme.h-add-support-for-the-log-specific-field.patch +++ b/patches.drivers/nvme.h-add-support-for-the-log-specific-field.patch @@ -2,8 +2,7 @@ From: Christoph Hellwig <hch@lst.de> Date: Sat, 12 May 2018 18:18:12 +0200 Subject: [PATCH] nvme.h: add support for the log specific field Git-commit: 9b89bc3857a6c0dfda18ddae2a42c114ecc32753 -Git-repo: git://git.kernel.dk/linux-block.git -Patch-Mainline: queued +Patch-Mainline: v4.19-rc1 References: bsc#1054245 NVMe 1.3 added a new log specific field to the get log page CQ diff --git a/patches.drivers/nvmet-add-minimal-ANA-support.patch b/patches.drivers/nvmet-add-minimal-ANA-support.patch index 81365fb6d5..550eea62f3 100644 --- a/patches.drivers/nvmet-add-minimal-ANA-support.patch +++ b/patches.drivers/nvmet-add-minimal-ANA-support.patch @@ -2,8 +2,7 @@ From: Christoph Hellwig <hch@lst.de> Date: Thu, 19 Jul 2018 07:35:20 -0700 Subject: [PATCH] nvmet: add minimal ANA support Git-commit: 72efd25dcf4f6310e9e6fa85620aa443b27c23fe -Git-repo: git://git.kernel.dk/linux-block.git -Patch-Mainline: queued +Patch-Mainline: v4.19-rc1 References: bsc#1054245 Add support for Asynchronous Namespace Access as specified in NVMe 1.3 diff --git a/patches.drivers/nvmet-keep-a-port-pointer-in-nvmet_ctrl.patch b/patches.drivers/nvmet-keep-a-port-pointer-in-nvmet_ctrl.patch index f3a2b4af73..5d44fb5654 100644 --- a/patches.drivers/nvmet-keep-a-port-pointer-in-nvmet_ctrl.patch +++ b/patches.drivers/nvmet-keep-a-port-pointer-in-nvmet_ctrl.patch @@ -2,8 +2,7 @@ From: Christoph Hellwig <hch@lst.de> Date: Thu, 7 Jun 2018 15:09:50 +0200 Subject: [PATCH] nvmet: keep a port pointer in nvmet_ctrl Git-commit: 4ee43280488b0f6cbd74702725a32f47d03d690b -Git-repo: git://git.kernel.dk/linux-block.git -Patch-Mainline: queued +Patch-Mainline: v4.19-rc1 References: bsc#1054245 This will be needed for the ANA AEN code. diff --git a/patches.drivers/nvmet-support-configuring-ANA-groups.patch b/patches.drivers/nvmet-support-configuring-ANA-groups.patch index 56434c1304..16b6d43acd 100644 --- a/patches.drivers/nvmet-support-configuring-ANA-groups.patch +++ b/patches.drivers/nvmet-support-configuring-ANA-groups.patch @@ -2,8 +2,7 @@ From: Christoph Hellwig <hch@lst.de> Date: Fri, 1 Jun 2018 08:59:25 +0200 Subject: [PATCH] nvmet: support configuring ANA groups Git-commit: 62ac0d32f74ea511d5813be728dc589d03f866a3 -Git-repo: git://git.kernel.dk/linux-block.git -Patch-Mainline: queued +Patch-Mainline: v4.19-rc1 References: bsc#1054245 Allow creating non-default ANA groups (group ID > 1). Groups are created diff --git a/patches.drivers/nvmet-track-and-limit-the-number-of-namespaces-per-s.patch b/patches.drivers/nvmet-track-and-limit-the-number-of-namespaces-per-s.patch index d33714404d..bea4719773 100644 --- a/patches.drivers/nvmet-track-and-limit-the-number-of-namespaces-per-s.patch +++ b/patches.drivers/nvmet-track-and-limit-the-number-of-namespaces-per-s.patch @@ -2,8 +2,7 @@ From: Christoph Hellwig <hch@lst.de> Date: Sun, 13 May 2018 19:00:13 +0200 Subject: [PATCH] nvmet: track and limit the number of namespaces per subsystem Git-commit: 793c7cfce02ce88b7bd67d43834c052d16c096e3 -Git-repo: git://git.kernel.dk/linux-block.git -Patch-Mainline: queued +Patch-Mainline: v4.19-rc1 References: 1054245 TP 4004 introduces a new 'Maximum Number of Allocated Namespaces' field diff --git a/patches.drivers/nvmet-use-Retain-Async-Event-bit-to-clear-AEN.patch b/patches.drivers/nvmet-use-Retain-Async-Event-bit-to-clear-AEN.patch index 703884dba6..3c436eeb30 100644 --- a/patches.drivers/nvmet-use-Retain-Async-Event-bit-to-clear-AEN.patch +++ b/patches.drivers/nvmet-use-Retain-Async-Event-bit-to-clear-AEN.patch @@ -2,8 +2,7 @@ From: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Date: Thu, 26 Jul 2018 14:00:41 -0700 Subject: [PATCH] nvmet: use Retain Async Event bit to clear AEN Git-commit: b369b30cf510fe94d8884837039362e2ec223cec -Git-repo: git://git.kernel.dk/linux-block.git -Patch-Mainline: queued +Patch-Mainline: v4.19-rc1 References: bsc#1054245 In the current implementation, we clear the AEN bit when we get the diff --git a/patches.drivers/pinctrl-cannonlake-Fix-community-ordering-for-H-vari b/patches.drivers/pinctrl-cannonlake-Fix-community-ordering-for-H-vari new file mode 100644 index 0000000000..059d50d979 --- /dev/null +++ b/patches.drivers/pinctrl-cannonlake-Fix-community-ordering-for-H-vari @@ -0,0 +1,47 @@ +From 17ac526824a8b5544bc2545c76f489e49c6593a2 Mon Sep 17 00:00:00 2001 +From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> +Date: Thu, 26 Jul 2018 19:59:05 +0300 +Subject: [PATCH] pinctrl: cannonlake: Fix community ordering for H variant +Git-commit: 17ac526824a8b5544bc2545c76f489e49c6593a2 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +The driver was written based on an assumption that BIOS provides +unordered communities in ACPI DSDT. Nevertheless, it seems that +BIOS getting fixed before being provisioned to OxM:s. +So does driver. + +Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=199911 +Reported-by: Marc Landolt <2009@marclandolt.ch> +Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> +Fixes: a663ccf0fea1 ("pinctrl: intel: Add Intel Cannon Lake PCH-H pin controller support") +Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com> +Signed-off-by: Linus Walleij <linus.walleij@linaro.org> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/pinctrl/intel/pinctrl-cannonlake.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +diff --git a/drivers/pinctrl/intel/pinctrl-cannonlake.c b/drivers/pinctrl/intel/pinctrl-cannonlake.c +index 71ad67b8fc35..fb1afe55bf53 100644 +--- a/drivers/pinctrl/intel/pinctrl-cannonlake.c ++++ b/drivers/pinctrl/intel/pinctrl-cannonlake.c +@@ -444,12 +444,8 @@ static const struct intel_function cnlh_functions[] = { + static const struct intel_community cnlh_communities[] = { + CNL_COMMUNITY(0, 0, 50, cnlh_community0_gpps), + CNL_COMMUNITY(1, 51, 154, cnlh_community1_gpps), +- /* +- * ACPI MMIO resources are returned in reverse order for +- * communities 3 and 4. +- */ +- CNL_COMMUNITY(3, 155, 248, cnlh_community3_gpps), +- CNL_COMMUNITY(2, 249, 298, cnlh_community4_gpps), ++ CNL_COMMUNITY(2, 155, 248, cnlh_community3_gpps), ++ CNL_COMMUNITY(3, 249, 298, cnlh_community4_gpps), + }; + + static const struct intel_pinctrl_soc_data cnlh_soc_data = { +-- +2.18.0 + diff --git a/patches.drivers/pinctrl-core-Return-selector-to-the-pinctrl-driver b/patches.drivers/pinctrl-core-Return-selector-to-the-pinctrl-driver new file mode 100644 index 0000000000..b723bb5507 --- /dev/null +++ b/patches.drivers/pinctrl-core-Return-selector-to-the-pinctrl-driver @@ -0,0 +1,102 @@ +From a203728ac6bbbed2fdcf0a2e807c5473efcfdb30 Mon Sep 17 00:00:00 2001 +From: Tony Lindgren <tony@atomide.com> +Date: Thu, 5 Jul 2018 02:10:14 -0700 +Subject: [PATCH] pinctrl: core: Return selector to the pinctrl driver +Git-commit: a203728ac6bbbed2fdcf0a2e807c5473efcfdb30 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +We must return the selector from pinctrl_generic_add_group() so +pin controller device drivers can remove the right group if needed +for deferred probe for example. And we now must make sure that a +proper name is passed so we can use it to check if the entry already +exists. + +Note that fixes are also needed for the pin controller drivers to +use the selector value. + +Fixes: c7059c5ac70a ("pinctrl: core: Add generic pinctrl functions +for managing groups") + +Reported-by: H. Nikolaus Schaller <hns@goldelico.com> +Cc: Christ van Willegen <cvwillegen@gmail.com> +Cc: Haojian Zhuang <haojian.zhuang@linaro.org> +Cc: Jacopo Mondi <jacopo+renesas@jmondi.org> +Cc: Paul Cercueil <paul@crapouillou.net> +Cc: Sean Wang <sean.wang@mediatek.com> +Signed-off-by: Tony Lindgren <tony@atomide.com> +Tested-by: H. Nikolaus Schaller <hns@goldelico.com> +Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> +Signed-off-by: Linus Walleij <linus.walleij@linaro.org> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/pinctrl/core.c | 35 ++++++++++++++++++++++++++++++++--- + 1 file changed, 32 insertions(+), 3 deletions(-) + +diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c +index 9fa6c1608b80..a3dd777e3ce8 100644 +--- a/drivers/pinctrl/core.c ++++ b/drivers/pinctrl/core.c +@@ -616,6 +616,26 @@ struct group_desc *pinctrl_generic_get_group(struct pinctrl_dev *pctldev, + } + EXPORT_SYMBOL_GPL(pinctrl_generic_get_group); + ++static int pinctrl_generic_group_name_to_selector(struct pinctrl_dev *pctldev, ++ const char *function) ++{ ++ const struct pinctrl_ops *ops = pctldev->desc->pctlops; ++ int ngroups = ops->get_groups_count(pctldev); ++ int selector = 0; ++ ++ /* See if this pctldev has this group */ ++ while (selector < ngroups) { ++ const char *gname = ops->get_group_name(pctldev, selector); ++ ++ if (!strcmp(function, gname)) ++ return selector; ++ ++ selector++; ++ } ++ ++ return -EINVAL; ++} ++ + /** + * pinctrl_generic_add_group() - adds a new pin group + * @pctldev: pin controller device +@@ -630,6 +650,16 @@ int pinctrl_generic_add_group(struct pinctrl_dev *pctldev, const char *name, + int *pins, int num_pins, void *data) + { + struct group_desc *group; ++ int selector; ++ ++ if (!name) ++ return -EINVAL; ++ ++ selector = pinctrl_generic_group_name_to_selector(pctldev, name); ++ if (selector >= 0) ++ return selector; ++ ++ selector = pctldev->num_groups; + + group = devm_kzalloc(pctldev->dev, sizeof(*group), GFP_KERNEL); + if (!group) +@@ -640,12 +670,11 @@ int pinctrl_generic_add_group(struct pinctrl_dev *pctldev, const char *name, + group->num_pins = num_pins; + group->data = data; + +- radix_tree_insert(&pctldev->pin_group_tree, pctldev->num_groups, +- group); ++ radix_tree_insert(&pctldev->pin_group_tree, selector, group); + + pctldev->num_groups++; + +- return 0; ++ return selector; + } + EXPORT_SYMBOL_GPL(pinctrl_generic_add_group); + +-- +2.18.0 + diff --git a/patches.drivers/pinctrl-freescale-off-by-one-in-imx1_pinconf_group_d b/patches.drivers/pinctrl-freescale-off-by-one-in-imx1_pinconf_group_d new file mode 100644 index 0000000000..e1328d29f1 --- /dev/null +++ b/patches.drivers/pinctrl-freescale-off-by-one-in-imx1_pinconf_group_d @@ -0,0 +1,43 @@ +From 19da44cd33a3a6ff7c97fff0189999ff15b241e4 Mon Sep 17 00:00:00 2001 +From: Dan Carpenter <dan.carpenter@oracle.com> +Date: Fri, 13 Jul 2018 17:55:15 +0300 +Subject: [PATCH] pinctrl: freescale: off by one in imx1_pinconf_group_dbg_show() +Mime-version: 1.0 +Content-type: text/plain; charset=UTF-8 +Content-transfer-encoding: 8bit +Git-commit: 19da44cd33a3a6ff7c97fff0189999ff15b241e4 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +The info->groups[] array is allocated in imx1_pinctrl_parse_dt(). It +has info->ngroups elements. Thus the > here should be >= to prevent +reading one element beyond the end of the array. + +Cc: stable@vger.kernel.org +Fixes: 30612cd90005 ("pinctrl: imx1 core driver") +Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> +Reviewed-by: Uwe Kleine-König <u.kleine-könig@pengutronix.de> +Acked-by: Dong Aisheng <Aisheng.dong@nxp.com> +Signed-off-by: Linus Walleij <linus.walleij@linaro.org> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/pinctrl/freescale/pinctrl-imx1-core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/pinctrl/freescale/pinctrl-imx1-core.c b/drivers/pinctrl/freescale/pinctrl-imx1-core.c +index c3bdd90b1422..deb7870b3d1a 100644 +--- a/drivers/pinctrl/freescale/pinctrl-imx1-core.c ++++ b/drivers/pinctrl/freescale/pinctrl-imx1-core.c +@@ -429,7 +429,7 @@ static void imx1_pinconf_group_dbg_show(struct pinctrl_dev *pctldev, + const char *name; + int i, ret; + +- if (group > info->ngroups) ++ if (group >= info->ngroups) + return; + + seq_puts(s, "\n"); +-- +2.18.0 + diff --git a/patches.drivers/pinctrl-imx-off-by-one-in-imx_pinconf_group_dbg_show b/patches.drivers/pinctrl-imx-off-by-one-in-imx_pinconf_group_dbg_show new file mode 100644 index 0000000000..b46d408bb1 --- /dev/null +++ b/patches.drivers/pinctrl-imx-off-by-one-in-imx_pinconf_group_dbg_show @@ -0,0 +1,32 @@ +From b4859f3edb47825f62d1b2efdd75fe7945996f49 Mon Sep 17 00:00:00 2001 +From: Dan Carpenter <dan.carpenter@oracle.com> +Date: Thu, 19 Jul 2018 11:16:48 +0300 +Subject: [PATCH] pinctrl: imx: off by one in imx_pinconf_group_dbg_show() +Git-commit: b4859f3edb47825f62d1b2efdd75fe7945996f49 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +The > should really be >= here. It's harmless because +pinctrl_generic_get_group() will return a NULL if group is invalid. + +Fixes: ae75ff814538 ("pinctrl: pinctrl-imx: add imx pinctrl core driver") +Reported-by: Dong Aisheng <aisheng.dong@nxp.com> +Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> +Signed-off-by: Linus Walleij <linus.walleij@linaro.org> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/pinctrl/freescale/pinctrl-imx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/pinctrl/freescale/pinctrl-imx.c ++++ b/drivers/pinctrl/freescale/pinctrl-imx.c +@@ -444,7 +444,7 @@ static void imx_pinconf_group_dbg_show(s + const char *name; + int i, ret; + +- if (group > pctldev->num_groups) ++ if (group >= pctldev->num_groups) + return; + + seq_printf(s, "\n"); diff --git a/patches.drivers/pinctrl-pinmux-Return-selector-to-the-pinctrl-driver b/patches.drivers/pinctrl-pinmux-Return-selector-to-the-pinctrl-driver new file mode 100644 index 0000000000..1784c6b950 --- /dev/null +++ b/patches.drivers/pinctrl-pinmux-Return-selector-to-the-pinctrl-driver @@ -0,0 +1,83 @@ +From f913cfce4ee49a3382a9ff95696f49a46e56e974 Mon Sep 17 00:00:00 2001 +From: Tony Lindgren <tony@atomide.com> +Date: Thu, 5 Jul 2018 02:10:15 -0700 +Subject: [PATCH] pinctrl: pinmux: Return selector to the pinctrl driver +Git-commit: f913cfce4ee49a3382a9ff95696f49a46e56e974 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +We must return the selector from pinmux_generic_add_function() so +pin controller device drivers can remove the right group if needed +for deferred probe for example. And we now must make sure that a +proper name is passed so we can use it to check if the entry already +exists. + +Note that fixes are also needed for the pin controller drivers to +use the selector value. + +Fixes: a76edc89b100 ("pinctrl: core: Add generic pinctrl functions for +managing groups") + +Reported-by: H. Nikolaus Schaller <hns@goldelico.com> +Cc: Christ van Willegen <cvwillegen@gmail.com> +Cc: Haojian Zhuang <haojian.zhuang@linaro.org> +Cc: Jacopo Mondi <jacopo+renesas@jmondi.org> +Cc: Paul Cercueil <paul@crapouillou.net> +Cc: Sean Wang <sean.wang@mediatek.com> +Signed-off-by: Tony Lindgren <tony@atomide.com> +Tested-by: H. Nikolaus Schaller <hns@goldelico.com> +Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> +Signed-off-by: Linus Walleij <linus.walleij@linaro.org> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/pinctrl/pinmux.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c +index d7c5b4abd741..5780442c068b 100644 +--- a/drivers/pinctrl/pinmux.c ++++ b/drivers/pinctrl/pinmux.c +@@ -307,7 +307,6 @@ static int pinmux_func_name_to_selector(struct pinctrl_dev *pctldev, + selector++; + } + +- dev_err(pctldev->dev, "function '%s' not supported\n", function); + return -EINVAL; + } + +@@ -774,6 +773,16 @@ int pinmux_generic_add_function(struct pinctrl_dev *pctldev, + void *data) + { + struct function_desc *function; ++ int selector; ++ ++ if (!name) ++ return -EINVAL; ++ ++ selector = pinmux_func_name_to_selector(pctldev, name); ++ if (selector >= 0) ++ return selector; ++ ++ selector = pctldev->num_functions; + + function = devm_kzalloc(pctldev->dev, sizeof(*function), GFP_KERNEL); + if (!function) +@@ -784,12 +793,11 @@ int pinmux_generic_add_function(struct pinctrl_dev *pctldev, + function->num_group_names = num_groups; + function->data = data; + +- radix_tree_insert(&pctldev->pin_function_tree, pctldev->num_functions, +- function); ++ radix_tree_insert(&pctldev->pin_function_tree, selector, function); + + pctldev->num_functions++; + +- return 0; ++ return selector; + } + EXPORT_SYMBOL_GPL(pinmux_generic_add_function); + +-- +2.18.0 + diff --git a/patches.drivers/pinctrl-qcom-spmi-gpio-Fix-pmic_gpio_config_get-to-b b/patches.drivers/pinctrl-qcom-spmi-gpio-Fix-pmic_gpio_config_get-to-b new file mode 100644 index 0000000000..6045cad715 --- /dev/null +++ b/patches.drivers/pinctrl-qcom-spmi-gpio-Fix-pmic_gpio_config_get-to-b @@ -0,0 +1,107 @@ +From 1cf86bc21257a330e3af51f2a4e885f1a705f6a5 Mon Sep 17 00:00:00 2001 +From: Douglas Anderson <dianders@chromium.org> +Date: Mon, 2 Jul 2018 15:59:39 -0700 +Subject: [PATCH] pinctrl: qcom: spmi-gpio: Fix pmic_gpio_config_get() to be compliant +Git-commit: 1cf86bc21257a330e3af51f2a4e885f1a705f6a5 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +If you do this on an sdm845 board: + grep "" /sys/kernel/debug/pinctrl/*spmi:pmic*/pinconf-groups + +...it looks like nonsense. For every pin you see listed: + input bias disabled, input bias high impedance, input bias pull down, input bias pull up, ... + +That's because pmic_gpio_config_get() isn't complying with the rules +that pinconf_generic_dump_one() expects. Specifically for boolean +parameters (anything with a "struct pin_config_item" where has_arg is +false) the function expects that the function should return its value +not through the "config" parameter but should return "0" if the value +is set and "-EINVAL" if the value isn't set. + +Let's fix this. + +From a quick sample of other pinctrl drivers, it appears to be +tradition to also return 1 through the config parameter for these +boolean parameters when they exist. I'm not one to knock tradition, +so I'll follow tradition and return 1 in these cases. While I'm at +it, I'll also continue searching for four leaf clovers, kocking on +wood three times, and trying not to break mirrors. + +Note: This also fixes an apparent typo for reading +PIN_CONFIG_BIAS_DISABLE where the old driver was accidentally +using "=" instead of "==" and thus was setting some internal +state when you tried to query PIN_CONFIG_BIAS_DISABLE. Oops. + +Fixes: eadff3024472 ("pinctrl: Qualcomm SPMI PMIC GPIO pin controller driver") +Signed-off-by: Douglas Anderson <dianders@chromium.org> +Signed-off-by: Linus Walleij <linus.walleij@linaro.org> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/pinctrl/qcom/pinctrl-spmi-gpio.c | 32 ++++++++++++++++++------ + 1 file changed, 24 insertions(+), 8 deletions(-) + +diff --git a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c b/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c +index 3e66e0d10010..cf82db78e69e 100644 +--- a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c ++++ b/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c +@@ -390,31 +390,47 @@ static int pmic_gpio_config_get(struct pinctrl_dev *pctldev, + + switch (param) { + case PIN_CONFIG_DRIVE_PUSH_PULL: +- arg = pad->buffer_type == PMIC_GPIO_OUT_BUF_CMOS; ++ if (pad->buffer_type != PMIC_GPIO_OUT_BUF_CMOS) ++ return -EINVAL; ++ arg = 1; + break; + case PIN_CONFIG_DRIVE_OPEN_DRAIN: +- arg = pad->buffer_type == PMIC_GPIO_OUT_BUF_OPEN_DRAIN_NMOS; ++ if (pad->buffer_type != PMIC_GPIO_OUT_BUF_OPEN_DRAIN_NMOS) ++ return -EINVAL; ++ arg = 1; + break; + case PIN_CONFIG_DRIVE_OPEN_SOURCE: +- arg = pad->buffer_type == PMIC_GPIO_OUT_BUF_OPEN_DRAIN_PMOS; ++ if (pad->buffer_type != PMIC_GPIO_OUT_BUF_OPEN_DRAIN_PMOS) ++ return -EINVAL; ++ arg = 1; + break; + case PIN_CONFIG_BIAS_PULL_DOWN: +- arg = pad->pullup == PMIC_GPIO_PULL_DOWN; ++ if (pad->pullup != PMIC_GPIO_PULL_DOWN) ++ return -EINVAL; ++ arg = 1; + break; + case PIN_CONFIG_BIAS_DISABLE: +- arg = pad->pullup = PMIC_GPIO_PULL_DISABLE; ++ if (pad->pullup != PMIC_GPIO_PULL_DISABLE) ++ return -EINVAL; ++ arg = 1; + break; + case PIN_CONFIG_BIAS_PULL_UP: +- arg = pad->pullup == PMIC_GPIO_PULL_UP_30; ++ if (pad->pullup != PMIC_GPIO_PULL_UP_30) ++ return -EINVAL; ++ arg = 1; + break; + case PIN_CONFIG_BIAS_HIGH_IMPEDANCE: +- arg = !pad->is_enabled; ++ if (pad->is_enabled) ++ return -EINVAL; ++ arg = 1; + break; + case PIN_CONFIG_POWER_SOURCE: + arg = pad->power_source; + break; + case PIN_CONFIG_INPUT_ENABLE: +- arg = pad->input_enabled; ++ if (!pad->input_enabled) ++ return -EINVAL; ++ arg = 1; + break; + case PIN_CONFIG_OUTPUT: + arg = pad->out_value; +-- +2.18.0 + diff --git a/patches.drivers/pinctrl-single-Fix-group-and-function-selector-use b/patches.drivers/pinctrl-single-Fix-group-and-function-selector-use new file mode 100644 index 0000000000..8febd6f1b5 --- /dev/null +++ b/patches.drivers/pinctrl-single-Fix-group-and-function-selector-use @@ -0,0 +1,222 @@ +From a4ab1086072365235864151bca57230afa8bcc93 Mon Sep 17 00:00:00 2001 +From: Tony Lindgren <tony@atomide.com> +Date: Thu, 5 Jul 2018 02:10:16 -0700 +Subject: [PATCH] pinctrl: single: Fix group and function selector use +Git-commit: a4ab1086072365235864151bca57230afa8bcc93 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +We must use a mutex around the generic_add functions and save the +function and group selector in case we need to remove them. Otherwise +the selector use will be racy for deferred probe at least. + +Note that struct device_node *np is unused in pcs_add_function() we +remove that too and fix a checkpatch warning for bare unsigned while +at it. + +Fixes: 571aec4df5b7 ("pinctrl: single: Use generic pinmux helpers for +managing functions") + +Reported-by: H. Nikolaus Schaller <hns@goldelico.com> +Cc: Christ van Willegen <cvwillegen@gmail.com> +Cc: Haojian Zhuang <haojian.zhuang@linaro.org> +Cc: Jacopo Mondi <jacopo+renesas@jmondi.org> +Cc: Paul Cercueil <paul@crapouillou.net> +Cc: Sean Wang <sean.wang@mediatek.com> +Signed-off-by: Tony Lindgren <tony@atomide.com> +Tested-by: H. Nikolaus Schaller <hns@goldelico.com> +Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> +Signed-off-by: Linus Walleij <linus.walleij@linaro.org> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/pinctrl/pinctrl-single.c | 91 +++++++++++++++++++------------- + 1 file changed, 55 insertions(+), 36 deletions(-) + +diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c +index 92b694675a56..42d7e76baccf 100644 +--- a/drivers/pinctrl/pinctrl-single.c ++++ b/drivers/pinctrl/pinctrl-single.c +@@ -747,38 +747,44 @@ static int pcs_allocate_pin_table(struct pcs_device *pcs) + /** + * pcs_add_function() - adds a new function to the function list + * @pcs: pcs driver instance +- * @np: device node of the mux entry ++ * @fcn: new function allocated + * @name: name of the function + * @vals: array of mux register value pairs used by the function + * @nvals: number of mux register value pairs + * @pgnames: array of pingroup names for the function + * @npgnames: number of pingroup names ++ * ++ * Caller must take care of locking. + */ +-static struct pcs_function *pcs_add_function(struct pcs_device *pcs, +- struct device_node *np, +- const char *name, +- struct pcs_func_vals *vals, +- unsigned nvals, +- const char **pgnames, +- unsigned npgnames) ++static int pcs_add_function(struct pcs_device *pcs, ++ struct pcs_function **fcn, ++ const char *name, ++ struct pcs_func_vals *vals, ++ unsigned int nvals, ++ const char **pgnames, ++ unsigned int npgnames) + { + struct pcs_function *function; +- int res; ++ int selector; + + function = devm_kzalloc(pcs->dev, sizeof(*function), GFP_KERNEL); + if (!function) +- return NULL; ++ return -ENOMEM; + + function->vals = vals; + function->nvals = nvals; + +- res = pinmux_generic_add_function(pcs->pctl, name, +- pgnames, npgnames, +- function); +- if (res) +- return NULL; ++ selector = pinmux_generic_add_function(pcs->pctl, name, ++ pgnames, npgnames, ++ function); ++ if (selector < 0) { ++ devm_kfree(pcs->dev, function); ++ *fcn = NULL; ++ } else { ++ *fcn = function; ++ } + +- return function; ++ return selector; + } + + /** +@@ -979,8 +985,8 @@ static int pcs_parse_one_pinctrl_entry(struct pcs_device *pcs, + { + const char *name = "pinctrl-single,pins"; + struct pcs_func_vals *vals; +- int rows, *pins, found = 0, res = -ENOMEM, i; +- struct pcs_function *function; ++ int rows, *pins, found = 0, res = -ENOMEM, i, fsel, gsel; ++ struct pcs_function *function = NULL; + + rows = pinctrl_count_index_with_args(np, name); + if (rows <= 0) { +@@ -1030,21 +1036,25 @@ static int pcs_parse_one_pinctrl_entry(struct pcs_device *pcs, + } + + pgnames[0] = np->name; +- function = pcs_add_function(pcs, np, np->name, vals, found, pgnames, 1); +- if (!function) { +- res = -ENOMEM; ++ mutex_lock(&pcs->mutex); ++ fsel = pcs_add_function(pcs, &function, np->name, vals, found, ++ pgnames, 1); ++ if (fsel < 0) { ++ res = fsel; + goto free_pins; + } + +- res = pinctrl_generic_add_group(pcs->pctl, np->name, pins, found, pcs); +- if (res < 0) ++ gsel = pinctrl_generic_add_group(pcs->pctl, np->name, pins, found, pcs); ++ if (gsel < 0) { ++ res = gsel; + goto free_function; ++ } + + (*map)->type = PIN_MAP_TYPE_MUX_GROUP; + (*map)->data.mux.group = np->name; + (*map)->data.mux.function = np->name; + +- if (PCS_HAS_PINCONF) { ++ if (PCS_HAS_PINCONF && function) { + res = pcs_parse_pinconf(pcs, np, function, map); + if (res) + goto free_pingroups; +@@ -1052,14 +1062,16 @@ static int pcs_parse_one_pinctrl_entry(struct pcs_device *pcs, + } else { + *num_maps = 1; + } ++ mutex_unlock(&pcs->mutex); ++ + return 0; + + free_pingroups: +- pinctrl_generic_remove_last_group(pcs->pctl); ++ pinctrl_generic_remove_group(pcs->pctl, gsel); + *num_maps = 1; + free_function: +- pinmux_generic_remove_last_function(pcs->pctl); +- ++ pinmux_generic_remove_function(pcs->pctl, fsel); ++ mutex_unlock(&pcs->mutex); + free_pins: + devm_kfree(pcs->dev, pins); + +@@ -1077,9 +1089,9 @@ static int pcs_parse_bits_in_pinctrl_entry(struct pcs_device *pcs, + { + const char *name = "pinctrl-single,bits"; + struct pcs_func_vals *vals; +- int rows, *pins, found = 0, res = -ENOMEM, i; ++ int rows, *pins, found = 0, res = -ENOMEM, i, fsel, gsel; + int npins_in_row; +- struct pcs_function *function; ++ struct pcs_function *function = NULL; + + rows = pinctrl_count_index_with_args(np, name); + if (rows <= 0) { +@@ -1166,15 +1178,19 @@ static int pcs_parse_bits_in_pinctrl_entry(struct pcs_device *pcs, + } + + pgnames[0] = np->name; +- function = pcs_add_function(pcs, np, np->name, vals, found, pgnames, 1); +- if (!function) { +- res = -ENOMEM; ++ mutex_lock(&pcs->mutex); ++ fsel = pcs_add_function(pcs, &function, np->name, vals, found, ++ pgnames, 1); ++ if (fsel < 0) { ++ res = fsel; + goto free_pins; + } + +- res = pinctrl_generic_add_group(pcs->pctl, np->name, pins, found, pcs); +- if (res < 0) ++ gsel = pinctrl_generic_add_group(pcs->pctl, np->name, pins, found, pcs); ++ if (gsel < 0) { ++ res = gsel; + goto free_function; ++ } + + (*map)->type = PIN_MAP_TYPE_MUX_GROUP; + (*map)->data.mux.group = np->name; +@@ -1186,13 +1202,16 @@ static int pcs_parse_bits_in_pinctrl_entry(struct pcs_device *pcs, + } + + *num_maps = 1; ++ mutex_unlock(&pcs->mutex); ++ + return 0; + + free_pingroups: +- pinctrl_generic_remove_last_group(pcs->pctl); ++ pinctrl_generic_remove_group(pcs->pctl, gsel); + *num_maps = 1; + free_function: +- pinmux_generic_remove_last_function(pcs->pctl); ++ pinmux_generic_remove_function(pcs->pctl, fsel); ++ mutex_unlock(&pcs->mutex); + free_pins: + devm_kfree(pcs->dev, pins); + +-- +2.18.0 + diff --git a/patches.drivers/rtc-ensure-rtc_set_alarm-fails-when-alarms-are-not-s b/patches.drivers/rtc-ensure-rtc_set_alarm-fails-when-alarms-are-not-s new file mode 100644 index 0000000000..ba2bdc8956 --- /dev/null +++ b/patches.drivers/rtc-ensure-rtc_set_alarm-fails-when-alarms-are-not-s @@ -0,0 +1,43 @@ +From abfdff44bc38e9e2ef7929f633fb8462632299d4 Mon Sep 17 00:00:00 2001 +From: Alexandre Belloni <alexandre.belloni@bootlin.com> +Date: Tue, 5 Jun 2018 23:09:14 +0200 +Subject: [PATCH] rtc: ensure rtc_set_alarm fails when alarms are not supported +Git-commit: abfdff44bc38e9e2ef7929f633fb8462632299d4 +Patch-mainline: v4.18-rc1 +References: bsc#1051510 + +When using RTC_ALM_SET or RTC_WKALM_SET with rtc_wkalrm.enabled not set, +rtc_timer_enqueue() is not called and rtc_set_alarm() may succeed but the +subsequent RTC_AIE_ON ioctl will fail. RTC_ALM_READ would also fail in that +case. + +Ensure rtc_set_alarm() fails when alarms are not supported to avoid letting +programs think the alarms are working for a particular RTC when they are +not. + +Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/rtc/interface.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c +index 7cbdc9228dd5..6d4012dd6922 100644 +--- a/drivers/rtc/interface.c ++++ b/drivers/rtc/interface.c +@@ -441,6 +441,11 @@ int rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) + { + int err; + ++ if (!rtc->ops) ++ return -ENODEV; ++ else if (!rtc->ops->set_alarm) ++ return -EINVAL; ++ + err = rtc_valid_tm(&alarm->time); + if (err != 0) + return err; +-- +2.18.0 + diff --git a/patches.drivers/spi-spi-fsl-dspi-Fix-imprecise-abort-on-VF500-during b/patches.drivers/spi-spi-fsl-dspi-Fix-imprecise-abort-on-VF500-during new file mode 100644 index 0000000000..c54400971d --- /dev/null +++ b/patches.drivers/spi-spi-fsl-dspi-Fix-imprecise-abort-on-VF500-during @@ -0,0 +1,89 @@ +From d8ffee2f551a627ffb7b216e2da322cb9a037f77 Mon Sep 17 00:00:00 2001 +From: Krzysztof Kozlowski <krzk@kernel.org> +Date: Fri, 29 Jun 2018 13:33:09 +0200 +Subject: [PATCH] spi: spi-fsl-dspi: Fix imprecise abort on VF500 during probe +Git-commit: d8ffee2f551a627ffb7b216e2da322cb9a037f77 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +Registers of DSPI should not be accessed before enabling its clock. On +Toradex Colibri VF50 on Iris carrier board this could be seen during +bootup as imprecise abort: + + Unhandled fault: imprecise external abort (0x1c06) at 0x00000000 + Internal error: : 1c06 [#1] ARM + Modules linked in: + CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.39-dirty #97 + Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree) + Backtrace: + [<804166a8>] (regmap_write) from [<80466b5c>] (dspi_probe+0x1f0/0x8dc) + [<8046696c>] (dspi_probe) from [<8040107c>] (platform_drv_probe+0x54/0xb8) + [<80401028>] (platform_drv_probe) from [<803ff53c>] (driver_probe_device+0x280/0x2f8) + [<803ff2bc>] (driver_probe_device) from [<803ff674>] (__driver_attach+0xc0/0xc4) + [<803ff5b4>] (__driver_attach) from [<803fd818>] (bus_for_each_dev+0x70/0xa4) + [<803fd7a8>] (bus_for_each_dev) from [<803fee74>] (driver_attach+0x24/0x28) + [<803fee50>] (driver_attach) from [<803fe980>] (bus_add_driver+0x1a0/0x218) + [<803fe7e0>] (bus_add_driver) from [<803fffe8>] (driver_register+0x80/0x100) + [<803fff68>] (driver_register) from [<80400fdc>] (__platform_driver_register+0x48/0x50) + [<80400f94>] (__platform_driver_register) from [<8091cf7c>] (fsl_dspi_driver_init+0x1c/0x20) + [<8091cf60>] (fsl_dspi_driver_init) from [<8010195c>] (do_one_initcall+0x4c/0x174) + [<80101910>] (do_one_initcall) from [<80900e8c>] (kernel_init_freeable+0x144/0x1d8) + [<80900d48>] (kernel_init_freeable) from [<805ff6a8>] (kernel_init+0x10/0x114) + [<805ff698>] (kernel_init) from [<80107be8>] (ret_from_fork+0x14/0x2c) + +Cc: <stable@vger.kernel.org> +Fixes: 5ee67b587a2b ("spi: dspi: clear SPI_SR before enable interrupt") +Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> +Signed-off-by: Mark Brown <broonie@kernel.org> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/spi/spi-fsl-dspi.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +--- a/drivers/spi/spi-fsl-dspi.c ++++ b/drivers/spi/spi-fsl-dspi.c +@@ -1006,31 +1006,31 @@ static int dspi_probe(struct platform_de + goto out_master_put; + } + ++ dspi->clk = devm_clk_get(&pdev->dev, "dspi"); ++ if (IS_ERR(dspi->clk)) { ++ ret = PTR_ERR(dspi->clk); ++ dev_err(&pdev->dev, "unable to get clock\n"); ++ goto out_master_put; ++ } ++ ret = clk_prepare_enable(dspi->clk); ++ if (ret) ++ goto out_master_put; ++ + dspi_init(dspi); + dspi->irq = platform_get_irq(pdev, 0); + if (dspi->irq < 0) { + dev_err(&pdev->dev, "can't get platform irq\n"); + ret = dspi->irq; +- goto out_master_put; ++ goto out_clk_put; + } + + ret = devm_request_irq(&pdev->dev, dspi->irq, dspi_interrupt, 0, + pdev->name, dspi); + if (ret < 0) { + dev_err(&pdev->dev, "Unable to attach DSPI interrupt\n"); +- goto out_master_put; ++ goto out_clk_put; + } + +- dspi->clk = devm_clk_get(&pdev->dev, "dspi"); +- if (IS_ERR(dspi->clk)) { +- ret = PTR_ERR(dspi->clk); +- dev_err(&pdev->dev, "unable to get clock\n"); +- goto out_master_put; +- } +- ret = clk_prepare_enable(dspi->clk); +- if (ret) +- goto out_master_put; +- + if (dspi->devtype_data->trans_mode == DSPI_DMA_MODE) { + if (dspi_request_dma(dspi, res->start)) { + dev_err(&pdev->dev, "can't get dma channels\n"); diff --git a/patches.fixes/0001-drm-cirrus-Use-drm_framebuffer_put-to-avoid-kernel-o.patch b/patches.fixes/0001-drm-cirrus-Use-drm_framebuffer_put-to-avoid-kernel-o.patch new file mode 100644 index 0000000000..1d85348c12 --- /dev/null +++ b/patches.fixes/0001-drm-cirrus-Use-drm_framebuffer_put-to-avoid-kernel-o.patch @@ -0,0 +1,167 @@ +From cd88ee3d68f305c27018820adaaf3050b6e134b1 Mon Sep 17 00:00:00 2001 +From: Thomas Zimmermann <tzimmermann@suse.de> +Date: Fri, 20 Jul 2018 12:48:02 +0200 +Subject: drm/cirrus: Use drm_framebuffer_put to avoid kernel oops in clean-up +References: bsc#1101822 +Git-commit: abf7b30d7f61d981bfcca65d1e8331b27021b475 +Git-repo: git://anongit.freedesktop.org/drm/drm-misc +Patch-mainline: Queued for upstream in drm-misc-next + +In the Cirrus driver, the regular clean-up code also performs the clean-up +of a failed initialization. If the fbdev's framebuffer was not initialized, +the clean-up will fail within drm_framebuffer_unregister_private. Booting +with cirrus.bpp=16 triggers this bug. + +The framebuffer is currently stored directly within struct cirrus_fbdev. To +fix the bug, we turn it into a pointer that is only set for initialized +framebuffers. The fbdev's clean-up code skips uninitialized framebuffers. + +The memory for struct drm_framebuffer is allocated dynamically. This requires +additional error handling within cirrusfb_create. The framebuffer clean-up is +now performed by drm_framebuffer_put, which also frees the data strcuture's +memory. + +Link: https://bugzilla.suse.com/show_bug.cgi?id=1101822 +Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> +--- + drivers/gpu/drm/cirrus/cirrus_drv.h | 2 - + drivers/gpu/drm/cirrus/cirrus_fbdev.c | 49 ++++++++++++++++++++-------------- + drivers/gpu/drm/cirrus/cirrus_mode.c | 2 - + 3 files changed, 32 insertions(+), 21 deletions(-) + +--- a/drivers/gpu/drm/cirrus/cirrus_drv.h ++++ b/drivers/gpu/drm/cirrus/cirrus_drv.h +@@ -152,7 +152,7 @@ struct cirrus_device { + + struct cirrus_fbdev { + struct drm_fb_helper helper; +- struct cirrus_framebuffer gfb; ++ struct cirrus_framebuffer *gfb; + void *sysram; + int size; + int x1, y1, x2, y2; /* dirty rect */ +--- a/drivers/gpu/drm/cirrus/cirrus_fbdev.c ++++ b/drivers/gpu/drm/cirrus/cirrus_fbdev.c +@@ -22,14 +22,14 @@ static void cirrus_dirty_update(struct c + struct drm_gem_object *obj; + struct cirrus_bo *bo; + int src_offset, dst_offset; +- int bpp = afbdev->gfb.base.format->cpp[0]; ++ int bpp = afbdev->gfb->base.format->cpp[0]; + int ret = -EBUSY; + bool unmap = false; + bool store_for_later = false; + int x2, y2; + unsigned long flags; + +- obj = afbdev->gfb.obj; ++ obj = afbdev->gfb->obj; + bo = gem_to_cirrus_bo(obj); + + /* +@@ -82,7 +82,7 @@ static void cirrus_dirty_update(struct c + } + for (i = y; i < y + height; i++) { + /* assume equal stride for now */ +- src_offset = dst_offset = i * afbdev->gfb.base.pitches[0] + (x * bpp); ++ src_offset = dst_offset = i * afbdev->gfb->base.pitches[0] + (x * bpp); + memcpy_toio(bo->kmap.virtual + src_offset, afbdev->sysram + src_offset, width * bpp); + + } +@@ -165,7 +165,7 @@ static int cirrusfb_create(struct drm_fb + container_of(helper, struct cirrus_fbdev, helper); + struct cirrus_device *cdev = gfbdev->helper.dev->dev_private; + struct fb_info *info; +- struct drm_framebuffer *fb; ++ struct cirrus_framebuffer *fb; + struct drm_mode_fb_cmd2 mode_cmd; + void *sysram; + struct drm_gem_object *gobj = NULL; +@@ -192,33 +192,36 @@ static int cirrusfb_create(struct drm_fb + return -ENOMEM; + + info = drm_fb_helper_alloc_fbi(helper); +- if (IS_ERR(info)) +- return PTR_ERR(info); ++ if (IS_ERR(info)) { ++ ret = PTR_ERR(info); ++ goto err_vfree; ++ } + + info->par = gfbdev; + +- ret = cirrus_framebuffer_init(cdev->dev, &gfbdev->gfb, &mode_cmd, gobj); ++ fb = kzalloc(sizeof(*fb), GFP_KERNEL); ++ if (!fb) { ++ ret = -ENOMEM; ++ goto err_drm_gem_object_put_unlocked; ++ } ++ ++ ret = cirrus_framebuffer_init(cdev->dev, fb, &mode_cmd, gobj); + if (ret) +- return ret; ++ goto err_kfree; + + gfbdev->sysram = sysram; + gfbdev->size = size; +- +- fb = &gfbdev->gfb.base; +- if (!fb) { +- DRM_INFO("fb is NULL\n"); +- return -EINVAL; +- } ++ gfbdev->gfb = fb; + + /* setup helper */ +- gfbdev->helper.fb = fb; ++ gfbdev->helper.fb = &fb->base; + + strcpy(info->fix.id, "cirrusdrmfb"); + + info->flags = FBINFO_DEFAULT; + info->fbops = &cirrusfb_ops; + +- drm_fb_helper_fill_fix(info, fb->pitches[0], fb->format->depth); ++ drm_fb_helper_fill_fix(info, fb->base.pitches[0], fb->base.format->depth); + drm_fb_helper_fill_var(info, &gfbdev->helper, sizes->fb_width, + sizes->fb_height); + +@@ -238,16 +241,24 @@ static int cirrusfb_create(struct drm_fb + DRM_INFO("fb mappable at 0x%lX\n", info->fix.smem_start); + DRM_INFO("vram aper at 0x%lX\n", (unsigned long)info->fix.smem_start); + DRM_INFO("size %lu\n", (unsigned long)info->fix.smem_len); +- DRM_INFO("fb depth is %d\n", fb->format->depth); +- DRM_INFO(" pitch is %d\n", fb->pitches[0]); ++ DRM_INFO("fb depth is %d\n", fb->base.format->depth); ++ DRM_INFO(" pitch is %d\n", fb->base.pitches[0]); + + return 0; ++ ++err_kfree: ++ kfree(fb); ++err_drm_gem_object_put_unlocked: ++ drm_gem_object_put_unlocked(gobj); ++err_vfree: ++ vfree(sysram); ++ return ret; + } + + static int cirrus_fbdev_destroy(struct drm_device *dev, + struct cirrus_fbdev *gfbdev) + { +- struct cirrus_framebuffer *gfb = &gfbdev->gfb; ++ struct cirrus_framebuffer *gfb = gfbdev->gfb; + + drm_fb_helper_unregister_fbi(&gfbdev->helper); + +--- a/drivers/gpu/drm/cirrus/cirrus_mode.c ++++ b/drivers/gpu/drm/cirrus/cirrus_mode.c +@@ -133,7 +133,7 @@ static int cirrus_crtc_do_set_base(struc + return ret; + } + +- if (&cdev->mode_info.gfbdev->gfb == cirrus_fb) { ++ if (cdev->mode_info.gfbdev->gfb == cirrus_fb) { + /* if pushing console in kmap it */ + ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap); + if (ret) diff --git a/patches.fixes/docs-zh_CN-fix-location-of-oops-tracing.txt.patch b/patches.fixes/docs-zh_CN-fix-location-of-oops-tracing.txt.patch new file mode 100644 index 0000000000..2719d12f76 --- /dev/null +++ b/patches.fixes/docs-zh_CN-fix-location-of-oops-tracing.txt.patch @@ -0,0 +1,42 @@ +From 1d1636e32e69961ed42ee043ef6b75c26d327599 Mon Sep 17 00:00:00 2001 +From: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> +Date: Tue, 26 Jun 2018 06:49:05 -0300 +Subject: [PATCH] docs: zh_CN: fix location of oops-tracing.txt +Git-commit: 1d1636e32e69961ed42ee043ef6b75c26d327599 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +This file was merged with bug-hunting. Make the translation +to point for its new location. + +Fixes: f226e460875d ("admin-guide: merge oops-tracing with bug-hunting") +Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> +Signed-off-by: Jonathan Corbet <corbet@lwn.net> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + Documentation/translations/zh_CN/oops-tracing.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Documentation/translations/zh_CN/oops-tracing.txt b/Documentation/translations/zh_CN/oops-tracing.txt +index 41ab53cc0e83..a893f04dfd5d 100644 +--- a/Documentation/translations/zh_CN/oops-tracing.txt ++++ b/Documentation/translations/zh_CN/oops-tracing.txt +@@ -1,4 +1,4 @@ +-Chinese translated version of Documentation/admin-guide/oops-tracing.rst ++Chinese translated version of Documentation/admin-guide/bug-hunting.rst + + If you have any comment or update to the content, please contact the + original document maintainer directly. However, if you have a problem +@@ -8,7 +8,7 @@ or if there is a problem with the translation. + + Chinese maintainer: Dave Young <hidave.darkstar@gmail.com> + --------------------------------------------------------------------- +-Documentation/admin-guide/oops-tracing.rst 的中文翻译 ++Documentation/admin-guide/bug-hunting.rst 的中文翻译 + + 如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文 + 交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻 +-- +2.18.0 + diff --git a/patches.fixes/genirq-Fix-editing-error-in-a-comment.patch b/patches.fixes/genirq-Fix-editing-error-in-a-comment.patch new file mode 100644 index 0000000000..0bf9167835 --- /dev/null +++ b/patches.fixes/genirq-Fix-editing-error-in-a-comment.patch @@ -0,0 +1,39 @@ +From 0a13ec0bbc42bddf90ab6a444df8aaa67c148b16 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonathan=20Neusch=C3=A4fer?= <j.neuschaefer@gmx.net> +Date: Sun, 17 Jun 2018 14:40:18 +0200 +Subject: [PATCH] genirq: Fix editing error in a comment +Mime-version: 1.0 +Content-type: text/plain; charset=UTF-8 +Content-transfer-encoding: 8bit +Git-commit: 0a13ec0bbc42bddf90ab6a444df8aaa67c148b16 +Patch-mainline: v4.19-rc1 +References: bsc#1051510 + +When the comment was reflowed to a wider format, the "*" snuck in. + +Fixes: ae88a23b32fa ("irq: refactor and clean up the free_irq() code flow") +Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net> +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Link: https://lkml.kernel.org/r/20180617124018.25539-1-j.neuschaefer@gmx.net +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + kernel/irq/manage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c +index daeabd791d58..591cfe901162 100644 +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c +@@ -1638,7 +1638,7 @@ static struct irqaction *__free_irq(struct irq_desc *desc, void *dev_id) + * is so by doing an extra call to the handler .... + * + * ( We do this after actually deregistering it, to make sure that a +- * 'real' IRQ doesn't run in * parallel with our fake. ) ++ * 'real' IRQ doesn't run in parallel with our fake. ) + */ + if (action->flags & IRQF_SHARED) { + local_irq_save(flags); +-- +2.18.0 + diff --git a/patches.fixes/genirq-Make-force-irq-threading-setup-more-robust.patch b/patches.fixes/genirq-Make-force-irq-threading-setup-more-robust.patch new file mode 100644 index 0000000000..dbb47450ac --- /dev/null +++ b/patches.fixes/genirq-Make-force-irq-threading-setup-more-robust.patch @@ -0,0 +1,69 @@ +From d1f0301b3333eef5efbfa1fe0f0edbea01863d5d Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner <tglx@linutronix.de> +Date: Fri, 3 Aug 2018 14:44:59 +0200 +Subject: [PATCH] genirq: Make force irq threading setup more robust +Git-commit: d1f0301b3333eef5efbfa1fe0f0edbea01863d5d +Patch-mainline: v4.18-rc8 +References: bsc#1051510 + +The support of force threading interrupts which are set up with both a +primary and a threaded handler wreckaged the setup of regular requested +threaded interrupts (primary handler == NULL). + +The reason is that it does not check whether the primary handler is set to +the default handler which wakes the handler thread. Instead it replaces the +thread handler with the primary handler as it would do with force threaded +interrupts which have been requested via request_irq(). So both the primary +and the thread handler become the same which then triggers the warnon that +the thread handler tries to wakeup a not configured secondary thread. + +Fortunately this only happens when the driver omits the IRQF_ONESHOT flag +when requesting the threaded interrupt, which is normaly caught by the +sanity checks when force irq threading is disabled. + +Fix it by skipping the force threading setup when a regular threaded +interrupt is requested. As a consequence the interrupt request which lacks +the IRQ_ONESHOT flag is rejected correctly instead of silently wreckaging +it. + +Fixes: 2a1d3ab8986d ("genirq: Handle force threading of irqs with primary and thread handler") +Reported-by: Kurt Kanzenbach <kurt.kanzenbach@linutronix.de> +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Tested-by: Kurt Kanzenbach <kurt.kanzenbach@linutronix.de> +Cc: stable@vger.kernel.org +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + kernel/irq/manage.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c +index daeabd791d58..9a8b7ba9aa88 100644 +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c +@@ -1068,6 +1068,13 @@ static int irq_setup_forced_threading(struct irqaction *new) + if (new->flags & (IRQF_NO_THREAD | IRQF_PERCPU | IRQF_ONESHOT)) + return 0; + ++ /* ++ * No further action required for interrupts which are requested as ++ * threaded interrupts already ++ */ ++ if (new->handler == irq_default_primary_handler) ++ return 0; ++ + new->flags |= IRQF_ONESHOT; + + /* +@@ -1075,7 +1082,7 @@ static int irq_setup_forced_threading(struct irqaction *new) + * thread handler. We force thread them as well by creating a + * secondary action. + */ +- if (new->handler != irq_default_primary_handler && new->thread_fn) { ++ if (new->handler && new->thread_fn) { + /* Allocate the secondary action */ + new->secondary = kzalloc(sizeof(struct irqaction), GFP_KERNEL); + if (!new->secondary) +-- +2.18.0 + diff --git a/patches.fixes/gtp-Initialize-64-bit-per-cpu-stats-correctly.patch b/patches.fixes/gtp-Initialize-64-bit-per-cpu-stats-correctly.patch new file mode 100644 index 0000000000..b9e152aa4b --- /dev/null +++ b/patches.fixes/gtp-Initialize-64-bit-per-cpu-stats-correctly.patch @@ -0,0 +1,38 @@ +From 790cb2ebb3f9c5d26a320117d5d13cafe479484d Mon Sep 17 00:00:00 2001 +From: Florian Fainelli <f.fainelli@gmail.com> +Date: Tue, 1 Aug 2017 12:11:10 -0700 +Subject: [PATCH] gtp: Initialize 64-bit per-cpu stats correctly +Git-commit: 790cb2ebb3f9c5d26a320117d5d13cafe479484d +Patch-mainline: v4.13-rc5 +References: bsc#1051510 + +On 32-bit hosts and with CONFIG_DEBUG_LOCK_ALLOC we should be seeing a +lockdep splat indicating this seqcount is not correctly initialized, fix +that by using netdev_alloc_pcpu_stats() instead of an open coded +allocation. + +Fixes: 459aa660eb1d ("gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U)") +Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> +Signed-off-by: David S. Miller <davem@davemloft.net> +Acked-by: Takashi Iwai <tiwai@suse.de> + +--- + drivers/net/gtp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c +index 1542e837fdfa..f38e32a7ec9c 100644 +--- a/drivers/net/gtp.c ++++ b/drivers/net/gtp.c +@@ -364,7 +364,7 @@ static int gtp_dev_init(struct net_device *dev) + + gtp->dev = dev; + +- dev->tstats = alloc_percpu(struct pcpu_sw_netstats); ++ dev->tstats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats); + if (!dev->tstats) + return -ENOMEM; + +-- +2.18.0 + diff --git a/patches.fixes/kthread-tracing-Don-t-expose-half-written-comm-when-.patch b/patches.fixes/kthread-tracing-Don-t-expose-half-written-comm-when-.patch new file mode 100644 index 0000000000..38ce21f9ac --- /dev/null +++ b/patches.fixes/kthread-tracing-Don-t-expose-half-written-comm-when-.patch @@ -0,0 +1,85 @@ +From 3e536e222f2930534c252c1cc7ae799c725c5ff9 Mon Sep 17 00:00:00 2001 +From: Snild Dolkow <snild@sony.com> +Date: Thu, 26 Jul 2018 09:15:39 +0200 +Subject: [PATCH] kthread, tracing: Don't expose half-written comm when + creating kthreads +Git-commit: 3e536e222f2930534c252c1cc7ae799c725c5ff9 +Patch-mainline: v4.18-rc7 +References: bsc#1104897 + +There is a window for racing when printing directly to task->comm, +allowing other threads to see a non-terminated string. The vsnprintf +function fills the buffer, counts the truncated chars, then finally +writes the \0 at the end. + + creator other + vsnprintf: + fill (not terminated) + count the rest trace_sched_waking(p): + ... memcpy(comm, p->comm, TASK_COMM_LEN) + write \0 + +The consequences depend on how 'other' uses the string. In our case, +it was copied into the tracing system's saved cmdlines, a buffer of +adjacent TASK_COMM_LEN-byte buffers (note the 'n' where 0 should be): + + crash-arm64> x/1024s savedcmd->saved_cmdlines | grep 'evenk' + 0xffffffd5b3818640: "irq/497-pwr_evenkworker/u16:12" + +...and a strcpy out of there would cause stack corruption: + + [224761.522292] Kernel panic - not syncing: stack-protector: + Kernel stack is corrupted in: ffffff9bf9783c78 + + crash-arm64> kbt | grep 'comm\|trace_print_context' + #6 0xffffff9bf9783c78 in trace_print_context+0x18c(+396) + comm (char [16]) = "irq/497-pwr_even" + + crash-arm64> rd 0xffffffd4d0e17d14 8 + ffffffd4d0e17d14: 2f71726900000000 5f7277702d373934 ....irq/497-pwr_ + ffffffd4d0e17d24: 726f776b6e657665 3a3631752f72656b evenkworker/u16: + ffffffd4d0e17d34: f9780248ff003231 cede60e0ffffff9b 12..H.x......`.. + ffffffd4d0e17d44: cede60c8ffffffd4 00000fffffffffd4 .....`.......... + +The workaround in e09e28671 (use strlcpy in __trace_find_cmdline) was +likely needed because of this same bug. + +Solved by vsnprintf:ing to a local buffer, then using set_task_comm(). +This way, there won't be a window where comm is not terminated. + +Link: http://lkml.kernel.org/r/20180726071539.188015-1-snild@sony.com + +Cc: stable@vger.kernel.org +Fixes: bc0c38d139ec7 ("ftrace: latency tracer infrastructure") +Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org> +Signed-off-by: Snild Dolkow <snild@sony.com> +Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> +Acked-by: Petr Mladek <pmladek@suse.com> + +--- + kernel/kthread.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/kernel/kthread.c b/kernel/kthread.c +index 750cb8082694..486dedbd9af5 100644 +--- a/kernel/kthread.c ++++ b/kernel/kthread.c +@@ -325,8 +325,14 @@ struct task_struct *__kthread_create_on_node(int (*threadfn)(void *data), + task = create->result; + if (!IS_ERR(task)) { + static const struct sched_param param = { .sched_priority = 0 }; ++ char name[TASK_COMM_LEN]; + +- vsnprintf(task->comm, sizeof(task->comm), namefmt, args); ++ /* ++ * task is already visible to other tasks, so updating ++ * COMM must be protected. ++ */ ++ vsnprintf(name, sizeof(name), namefmt, args); ++ set_task_comm(task, name); + /* + * root may have changed our (kthreadd's) priority or CPU mask. + * The kernel thread should not inherit these properties. +-- +2.13.7 + diff --git a/patches.fixes/nvme-fixup-crash-on-failed-discovery.patch b/patches.fixes/nvme-fixup-crash-on-failed-discovery.patch index b3b0682de7..de59533ed2 100644 --- a/patches.fixes/nvme-fixup-crash-on-failed-discovery.patch +++ b/patches.fixes/nvme-fixup-crash-on-failed-discovery.patch @@ -3,8 +3,7 @@ Date: Tue, 7 Aug 2018 12:43:42 +0200 Subject: [PATCH] nvme: fixup crash on failed discovery Git-commit: 8f220c418d070a097f7d292cf6b37f88d67845ad References: bsc#1103920 -Patch-Mainline: queued in subsystem maintainer repository -Git-repo: git://git.infradead.org/nvme.git +Patch-Mainline: v4.19-rc1 When the initial discovery fails the subsystem hasn't been setup yet in nvme_mpath_stop, and we can't dereference ctrl->subsys. diff --git a/patches.fixes/nvme-use-hw-qid-in-trace-events.patch b/patches.fixes/nvme-use-hw-qid-in-trace-events.patch index ffe85a43e1..e432bbdabc 100644 --- a/patches.fixes/nvme-use-hw-qid-in-trace-events.patch +++ b/patches.fixes/nvme-use-hw-qid-in-trace-events.patch @@ -3,8 +3,7 @@ Date: Fri, 29 Jun 2018 16:50:01 -0600 Subject: [PATCH] nvme: use hw qid in trace events References: bsc#1102633 Git-commit: 5d87eb94d9ba13e5e2d5ceb56ac6fe0948259ffa -Git-repo: git://git.kernel.dk/linux-block.git -Patch-mainline: Queued in subsystem maintainer repository +Patch-mainline: v4.19-rc1 We can not match a command to its completion based on the command id alone. We need the submitting queue identifier to pair with the diff --git a/patches.fixes/nvme.h-fixup-ANA-group-descriptor-format.patch b/patches.fixes/nvme.h-fixup-ANA-group-descriptor-format.patch index 12f0e87c31..68a302ed4e 100644 --- a/patches.fixes/nvme.h-fixup-ANA-group-descriptor-format.patch +++ b/patches.fixes/nvme.h-fixup-ANA-group-descriptor-format.patch @@ -2,8 +2,7 @@ From: Hannes Reinecke <hare@suse.com> Date: Wed, 8 Aug 2018 08:35:29 +0200 Subject: [PATCH] nvme.h: fixup ANA group descriptor format Git-commit: 8b92d0e3d400390660a26ef7f475524700fb86cf -Git-repo: git://git.infradead.org/nvme.git -Patch-mainline: queued in subsystem maintainers repository +Patch-mainline: v4.19-rc1 References: bsc#1104111 ANA Phase 3 draft had the 'reserved' field in the group descriptor diff --git a/patches.suse/KABI-cpu-hotplug-provide-the-old-get-put_online_cpus.patch b/patches.kabi/KABI-cpu-hotplug-provide-the-old-get-put_online_cpus.patch index 5c1af10b1d..5c1af10b1d 100644 --- a/patches.suse/KABI-cpu-hotplug-provide-the-old-get-put_online_cpus.patch +++ b/patches.kabi/KABI-cpu-hotplug-provide-the-old-get-put_online_cpus.patch diff --git a/patches.arch/KABI-hide-ftrace_enabled-in-paca.patch b/patches.kabi/KABI-hide-ftrace_enabled-in-paca.patch index 619155dee7..619155dee7 100644 --- a/patches.arch/KABI-hide-ftrace_enabled-in-paca.patch +++ b/patches.kabi/KABI-hide-ftrace_enabled-in-paca.patch diff --git a/patches.suse/sched-numa-Remove-redundant-field-kabi.patch b/patches.kabi/sched-numa-Remove-redundant-field-kabi.patch index 8aa8fba787..8aa8fba787 100644 --- a/patches.suse/sched-numa-Remove-redundant-field-kabi.patch +++ b/patches.kabi/sched-numa-Remove-redundant-field-kabi.patch diff --git a/series.conf b/series.conf index 1154e64841..62230810bb 100644 --- a/series.conf +++ b/series.conf @@ -4145,6 +4145,7 @@ patches.drivers/i40e-Initialize-64-bit-statistics-TX-ring-seqcount.patch patches.drivers/ixgbe-Initialize-64-bit-stats-seqcounts.patch patches.drivers/nfp-Initialize-RX-and-TX-ring-64-bit-stats-seqcounts.patch + patches.fixes/gtp-Initialize-64-bit-per-cpu-stats-correctly.patch patches.suse/msft-hv-1410-netvsc-Initialize-64-bit-stats-seqcount.patch patches.fixes/ipvlan-Fix-64-bit-statistics-seqcount-initialization.patch patches.suse/lan78xx-USB-fast-connect-disconnect-crash-fix.patch @@ -10759,6 +10760,7 @@ patches.drivers/IB-srpt-Disable-RDMA-access-by-the-initiator.patch patches.drivers/IB-srpt-Fix-ACL-lookup-during-login.patch patches.suse/ip6_tunnel-disable-dst-caching-if-tunnel-is-dual-sta.patch + patches.drivers/geneve-update-skb-dst-pmtu-on-tx-path.patch patches.suse/mlxsw-spectrum_router-Fix-NULL-pointer-deref.patch patches.suse/mlxsw-spectrum-Relax-sanity-checks-during-enslavemen.patch patches.drivers/net-sched-Fix-update-of-lastuse-in-act-modules-imple.patch @@ -15828,6 +15830,7 @@ patches.drivers/scsi-lpfc-update-driver-version-to-12-0-0-4.patch patches.drivers/ubi-fastmap-Cancel-work-upon-detach patches.drivers/ubi-fastmap-Correctly-handle-interrupted-erasures-in + patches.drivers/rtc-ensure-rtc_set_alarm-fails-when-alarms-are-not-s patches.drivers/rtc-pxa-fix-probe-function patches.suse/net-in-virtio_net_hdr-only-add-VLAN_HLEN-to-csum_sta.patch patches.suse/msft-hv-1657-hv_netvsc-Fix-a-network-regression-after-ifdown-ifup.patch @@ -16159,6 +16162,7 @@ patches.drivers/usb-gadget-f_uac2-fix-endianness-of-struct-cntrl_-_l.patch patches.drivers/usb-gadget-f_fs-Only-return-delayed-status-when-len-.patch patches.drivers/usb-core-handle-hub-C_PORT_OVER_CURRENT-condition.patch + patches.fixes/kthread-tracing-Don-t-expose-half-written-comm-when-.patch patches.drivers/Input-elan_i2c-add-ACPI-ID-for-lenovo-ideapad-330 patches.drivers/Input-elan_i2c-add-another-ACPI-ID-for-Lenovo-Ideapa patches.drivers/Input-i8042-add-Lenovo-LaVie-Z-to-the-i8042-reset-li @@ -16166,6 +16170,7 @@ patches.drivers/nvmet-fc-fix-target-sgl-list-on-large-transfers.patch patches.fixes/nvme-if_ready-checks-to-fail-io-to-deleting-controll.patch patches.fixes/nvmet-fixup-crash-on-NULL-device-path.patch + patches.drivers/i2c-imx-Fix-reinit_completion-use.patch patches.fixes/ext4-fix-false-negatives-and-false-positives-in-ext4.patch patches.fixes/ext4-fix-inline-data-updates-with-checksums-enabled.patch patches.fixes/ext4-check-for-allocation-block-validity-with-block-.patch @@ -16187,9 +16192,11 @@ patches.drivers/drm-atomic-Check-old_plane_state-crtc-in-drm_atomic_ patches.drivers/drm-atomic-Initialize-variables-in-drm_atomic_helper patches.drivers/drm-vc4-Reset-x-y-_scaling-1-when-dealing-with-unipl + patches.fixes/genirq-Make-force-irq-threading-setup-more-robust.patch patches.fixes/nohz-Fix-local_timer_softirq_pending.patch patches.fixes/xen-netfront-dont-cache-skb_shinfo.patch patches.fixes/init-rename-and-re-order-boot_cpu_state_init.patch + patches.fixes/genirq-Fix-editing-error-in-a-comment.patch patches.suse/sched-numa-Remove-redundant-field.patch patches.suse/sched-numa-Evaluate-move-once-per-node.patch patches.suse/sched-numa-Simplify-load_too_imbalanced.patch @@ -16202,6 +16209,36 @@ patches.suse/sched-numa-Update-the-scan-period-without-holding-the-numa_group-lock.patch patches.suse/sched-numa-Use-group_weights-to-identify-if-migration-degrades-locality.patch patches.suse/sched-numa-Move-task_numa_placement-closer-to-numa_migrate_preferred.patch + patches.drivers/nvme-move-init-of-keep_alive-work-item-to-controller.patch + patches.fixes/nvme-use-hw-qid-in-trace-events.patch + patches.drivers/nvme.h-add-support-for-the-log-specific-field.patch + patches.drivers/nvme.h-add-ANA-definitions.patch + patches.drivers/nvme-simplify-the-API-for-getting-log-pages.patch + patches.drivers/nvme-remove-nvme_req_needs_failover.patch + patches.drivers/nvme-add-ANA-support.patch + patches.drivers/nvmet-keep-a-port-pointer-in-nvmet_ctrl.patch + patches.drivers/nvmet-track-and-limit-the-number-of-namespaces-per-s.patch + patches.drivers/nvmet-add-minimal-ANA-support.patch + patches.drivers/nvmet-support-configuring-ANA-groups.patch + patches.drivers/nvmet-use-Retain-Async-Event-bit-to-clear-AEN.patch + patches.fixes/nvme-fixup-crash-on-failed-discovery.patch + patches.fixes/nvme.h-fixup-ANA-group-descriptor-format.patch + patches.drivers/spi-spi-fsl-dspi-Fix-imprecise-abort-on-VF500-during + patches.drivers/pinctrl-qcom-spmi-gpio-Fix-pmic_gpio_config_get-to-b + patches.drivers/pinctrl-core-Return-selector-to-the-pinctrl-driver + patches.drivers/pinctrl-pinmux-Return-selector-to-the-pinctrl-driver + patches.drivers/pinctrl-single-Fix-group-and-function-selector-use + patches.drivers/pinctrl-imx-off-by-one-in-imx_pinconf_group_dbg_show + patches.drivers/pinctrl-cannonlake-Fix-community-ordering-for-H-vari + patches.drivers/pinctrl-freescale-off-by-one-in-imx1_pinconf_group_d + patches.arch/PM-devfreq-rk3399_dmc-Fix-duplicated-opp-table-on-re.patch + patches.drivers/ALSA-snd-aoa-add-of_node_put-in-error-path + patches.drivers/ASoC-dpcm-don-t-merge-format-from-invalid-codec-dai + patches.drivers/ASoC-es7134-remove-64kHz-rate-from-the-supported-rat + patches.drivers/ASoC-rsnd-cmd-Add-missing-newline-to-debug-message + patches.drivers/ASoC-zte-Fix-incorrect-PCM-format-bit-usages + patches.drivers/ASoC-sirf-Fix-potential-NULL-pointer-dereference + patches.fixes/docs-zh_CN-fix-location-of-oops-tracing.txt.patch # davem/net-next patches.fixes/ip-discard-IPv4-datagrams-with-overlapping-segments.patch @@ -16269,24 +16306,6 @@ patches.suse/0005-MODSIGN-Allow-the-db-UEFI-variable-to-be-suppressed.patch patches.suse/0006-modsign-Use-secondary-trust-keyring-for-module-signi.patch - # git://git.kernel.dk/linux-block.git for-next - patches.drivers/nvme-move-init-of-keep_alive-work-item-to-controller.patch - patches.fixes/nvme-use-hw-qid-in-trace-events.patch - patches.drivers/nvme.h-add-support-for-the-log-specific-field.patch - patches.drivers/nvme.h-add-ANA-definitions.patch - patches.drivers/nvme-simplify-the-API-for-getting-log-pages.patch - patches.drivers/nvme-remove-nvme_req_needs_failover.patch - patches.drivers/nvme-add-ANA-support.patch - patches.drivers/nvmet-keep-a-port-pointer-in-nvmet_ctrl.patch - patches.drivers/nvmet-track-and-limit-the-number-of-namespaces-per-s.patch - patches.drivers/nvmet-add-minimal-ANA-support.patch - patches.drivers/nvmet-support-configuring-ANA-groups.patch - patches.drivers/nvmet-use-Retain-Async-Event-bit-to-clear-AEN.patch - - # git://git.infradead.org/nvme.git nvme-4.19 - patches.fixes/nvme-fixup-crash-on-failed-discovery.patch - patches.fixes/nvme.h-fixup-ANA-group-descriptor-format.patch - # jeyu/linux modules-next patches.suse/0001-module-make-it-clear-when-we-re-handling-the-module-.patch patches.suse/0002-module-setup-load-info-before-module_sig_check.patch @@ -16418,7 +16437,7 @@ patches.fixes/getcwd-close-race-with-d_move-called-by-lustre.patch patches.fixes/vfs-use-synchronize_rcu_expedited-in-namespace_unlock.patch patches.fixes/0001-autofs-revert-autofs-take-more-care-to-not-update-la.patch - patches.suse/sched-numa-Remove-redundant-field-kabi.patch + patches.kabi/sched-numa-Remove-redundant-field-kabi.patch ######################################################## # misc small fixes @@ -16690,6 +16709,9 @@ patches.drivers/drm-hibmc-initialize-the-hibmc_bo_driver_io_mem_pfn.patch patches.suse/Revert-drm-nouveau-drm-therm-fan-add-a-fallback-if-n + # bsc#1101822 + patches.fixes/0001-drm-cirrus-Use-drm_framebuffer_put-to-avoid-kernel-o.patch + ######################################################## # Out-of-tree networking ######################################################## @@ -16927,7 +16949,7 @@ patches.suse/0001-Thunderbolt-kABI-paddings-added.patch patches.suse/0008-kabi-arm64-reserve-space-in-cpu_hwcaps-and-cpu_hwcap.patch patches.suse/prepare-arm64-kgraft - patches.suse/KABI-cpu-hotplug-provide-the-old-get-put_online_cpus.patch + patches.kabi/KABI-cpu-hotplug-provide-the-old-get-put_online_cpus.patch patches.kabi/kabi-IB-mlx5-Fix-integer-overflows-in-mlx5_ib_create_srq.patch patches.kabi/musb-flush_irq_work-kabi-fix.patch patches.kabi/ALSA-pcm-oss-rw_ref-kabi-fix.patch @@ -16936,7 +16958,7 @@ patches.kabi/ALSA-emu10k1-kabi-workaround.patch patches.kabi/acpi-ec-gpe-kabi-fix.patch patches.kabi/0003-md-fix-md_write_start-deadlock-w-o-metadata-devices.kabi - patches.arch/KABI-hide-ftrace_enabled-in-paca.patch + patches.kabi/KABI-hide-ftrace_enabled-in-paca.patch patches.kabi/ocfs2-dlm-wait-for-dlm-recovery-done-kabi.patch patches.kabi/fsnotify-Fix-fsnotify_mark_connector-race-kabi.patch patches.kabi/kabi-protect-struct-acpi_nfit_desc.patch |