From: Greg Kroah-Hartman Date: Thu, 15 Jun 2017 12:49:17 +0000 (+0200) Subject: 4.9-stable patches X-Git-Tag: v4.9.33~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f9c996266199a9f7b5cbe189bae3e301426d3cde;p=thirdparty%2Fkernel%2Fstable-queue.git 4.9-stable patches added patches: drm-don-t-race-connector-registration.patch drm-i915-check-for-null-i915_vma-in-intel_unpin_fb_obj.patch net-adaptec-starfire-add-checks-for-dma-mapping-errors.patch net-mlx5-e-switch-err-when-retrieving-steering-name-space-fails.patch net-mlx5-return-eopnotsupp-when-failing-to-get-steering-name-space.patch net-phy-micrel-add-support-for-ksz8795.patch parisc-parport_gsc-fixes-for-printk-continuation-lines.patch pinctrl-berlin-bg4ct-fix-the-value-for-sd1a-of-pin-scrd0_crd_pres.patch --- diff --git a/queue-4.9/drm-don-t-race-connector-registration.patch b/queue-4.9/drm-don-t-race-connector-registration.patch new file mode 100644 index 00000000000..2376f02c3d0 --- /dev/null +++ b/queue-4.9/drm-don-t-race-connector-registration.patch @@ -0,0 +1,81 @@ +From foo@baz Thu Jun 15 14:38:52 CEST 2017 +From: Daniel Vetter +Date: Thu, 12 Jan 2017 17:15:56 +0100 +Subject: drm: Don't race connector registration + +From: Daniel Vetter + + +[ Upstream commit e6e7b48b295afa5a5ab440de0a94d9ad8b3ce2d0 ] + +I was under the misconception that the sysfs dev stuff can be fully +set up, and then registered all in one step with device_add. That's +true for properties and property groups, but not for parents and child +devices. Those must be fully registered before you can register a +child. + +Add a bit of tracking to make sure that asynchronous mst connector +hotplugging gets this right. For consistency we rely upon the implicit +barriers of the connector->mutex, which is taken anyway, to ensure +that at least either the connector or device registration call will +work out. + +Mildly tested since I can't reliably reproduce this on my mst box +here. + +Reported-by: Dave Hansen +Cc: Dave Hansen +Acked-by: Chris Wilson +Cc: Chris Wilson +Signed-off-by: Daniel Vetter +Link: http://patchwork.freedesktop.org/patch/msgid/1484237756-2720-1-git-send-email-daniel.vetter@ffwll.ch +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/drm_connector.c | 3 +++ + drivers/gpu/drm/drm_drv.c | 4 ++++ + include/drm/drmP.h | 1 + + 3 files changed, 8 insertions(+) + +--- a/drivers/gpu/drm/drm_connector.c ++++ b/drivers/gpu/drm/drm_connector.c +@@ -379,6 +379,9 @@ int drm_connector_register(struct drm_co + { + int ret = 0; + ++ if (!connector->dev->registered) ++ return 0; ++ + mutex_lock(&connector->mutex); + if (connector->registered) + goto unlock; +--- a/drivers/gpu/drm/drm_drv.c ++++ b/drivers/gpu/drm/drm_drv.c +@@ -710,6 +710,8 @@ int drm_dev_register(struct drm_device * + if (ret) + goto err_minors; + ++ dev->registered = true; ++ + if (dev->driver->load) { + ret = dev->driver->load(dev, flags); + if (ret) +@@ -749,6 +751,8 @@ void drm_dev_unregister(struct drm_devic + + drm_lastclose(dev); + ++ dev->registered = false; ++ + if (drm_core_check_feature(dev, DRIVER_MODESET)) + drm_modeset_unregister_all(dev); + +--- a/include/drm/drmP.h ++++ b/include/drm/drmP.h +@@ -776,6 +776,7 @@ struct drm_device { + struct drm_minor *control; /**< Control node */ + struct drm_minor *primary; /**< Primary node */ + struct drm_minor *render; /**< Render node */ ++ bool registered; + + /* currently active master for this device. Protected by master_mutex */ + struct drm_master *master; diff --git a/queue-4.9/drm-i915-check-for-null-i915_vma-in-intel_unpin_fb_obj.patch b/queue-4.9/drm-i915-check-for-null-i915_vma-in-intel_unpin_fb_obj.patch new file mode 100644 index 00000000000..895af1b8776 --- /dev/null +++ b/queue-4.9/drm-i915-check-for-null-i915_vma-in-intel_unpin_fb_obj.patch @@ -0,0 +1,92 @@ +From foo@baz Thu Jun 15 14:38:52 CEST 2017 +From: Linus Torvalds +Date: Sun, 29 Jan 2017 13:50:06 -0800 +Subject: drm/i915: Check for NULL i915_vma in intel_unpin_fb_obj() + +From: Linus Torvalds + + +[ Upstream commit 39cb2c9a316e77f6dfba96c543e55b6672d5a37e ] + +I've seen this trigger twice now, where the i915_gem_object_to_ggtt() +call in intel_unpin_fb_obj() returns NULL, resulting in an oops +immediately afterwards as the (inlined) call to i915_vma_unpin_fence() +tries to dereference it. + +It seems to be some race condition where the object is going away at +shutdown time, since both times happened when shutting down the X +server. The call chains were different: + + - VT ioctl(KDSETMODE, KD_TEXT): + + intel_cleanup_plane_fb+0x5b/0xa0 [i915] + drm_atomic_helper_cleanup_planes+0x6f/0x90 [drm_kms_helper] + intel_atomic_commit_tail+0x749/0xfe0 [i915] + intel_atomic_commit+0x3cb/0x4f0 [i915] + drm_atomic_commit+0x4b/0x50 [drm] + restore_fbdev_mode+0x14c/0x2a0 [drm_kms_helper] + drm_fb_helper_restore_fbdev_mode_unlocked+0x34/0x80 [drm_kms_helper] + drm_fb_helper_set_par+0x2d/0x60 [drm_kms_helper] + intel_fbdev_set_par+0x18/0x70 [i915] + fb_set_var+0x236/0x460 + fbcon_blank+0x30f/0x350 + do_unblank_screen+0xd2/0x1a0 + vt_ioctl+0x507/0x12a0 + tty_ioctl+0x355/0xc30 + do_vfs_ioctl+0xa3/0x5e0 + SyS_ioctl+0x79/0x90 + entry_SYSCALL_64_fastpath+0x13/0x94 + + - i915 unpin_work workqueue: + + intel_unpin_work_fn+0x58/0x140 [i915] + process_one_work+0x1f1/0x480 + worker_thread+0x48/0x4d0 + kthread+0x101/0x140 + +and this patch purely papers over the issue by adding a NULL pointer +check and a WARN_ON_ONCE() to avoid the oops that would then generally +make the machine unresponsive. + +Other callers of i915_gem_object_to_ggtt() seem to also check for the +returned pointer being NULL and warn about it, so this clearly has +happened before in other places. + +[ Reported it originally to the i915 developers on Jan 8, applying the + ugly workaround on my own now after triggering the problem for the + second time with no feedback. + + This is likely to be the same bug reported as + + https://bugs.freedesktop.org/show_bug.cgi?id=98829 + https://bugs.freedesktop.org/show_bug.cgi?id=99134 + + which has a patch for the underlying problem, but it hasn't gotten to + me, so I'm applying the workaround. ] + +Cc: Daniel Vetter +Cc: Jani Nikula +Cc: Ville Syrjälä +Cc: Chris Wilson +Cc: Maarten Lankhorst +Cc: Tvrtko Ursulin +Cc: Imre Deak +Signed-off-by: Linus Torvalds +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/intel_display.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/gpu/drm/i915/intel_display.c ++++ b/drivers/gpu/drm/i915/intel_display.c +@@ -2253,6 +2253,9 @@ void intel_unpin_fb_obj(struct drm_frame + intel_fill_fb_ggtt_view(&view, fb, rotation); + vma = i915_gem_object_to_ggtt(obj, &view); + ++ if (WARN_ON_ONCE(!vma)) ++ return; ++ + i915_vma_unpin_fence(vma); + i915_gem_object_unpin_from_display_plane(vma); + } diff --git a/queue-4.9/net-adaptec-starfire-add-checks-for-dma-mapping-errors.patch b/queue-4.9/net-adaptec-starfire-add-checks-for-dma-mapping-errors.patch new file mode 100644 index 00000000000..59e9ba9a882 --- /dev/null +++ b/queue-4.9/net-adaptec-starfire-add-checks-for-dma-mapping-errors.patch @@ -0,0 +1,115 @@ +From foo@baz Thu Jun 15 14:38:52 CEST 2017 +From: Alexey Khoroshilov +Date: Sat, 28 Jan 2017 01:07:30 +0300 +Subject: net: adaptec: starfire: add checks for dma mapping errors + +From: Alexey Khoroshilov + + +[ Upstream commit d1156b489fa734d1af763d6a07b1637c01bb0aed ] + +init_ring(), refill_rx_ring() and start_tx() don't check +if mapping dma memory succeed. +The patch adds the checks and failure handling. + +Found by Linux Driver Verification project (linuxtesting.org). + +Signed-off-by: Alexey Khoroshilov +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/adaptec/starfire.c | 45 ++++++++++++++++++++++++++++++-- + 1 file changed, 43 insertions(+), 2 deletions(-) + +--- a/drivers/net/ethernet/adaptec/starfire.c ++++ b/drivers/net/ethernet/adaptec/starfire.c +@@ -1153,6 +1153,12 @@ static void init_ring(struct net_device + if (skb == NULL) + break; + np->rx_info[i].mapping = pci_map_single(np->pci_dev, skb->data, np->rx_buf_sz, PCI_DMA_FROMDEVICE); ++ if (pci_dma_mapping_error(np->pci_dev, ++ np->rx_info[i].mapping)) { ++ dev_kfree_skb(skb); ++ np->rx_info[i].skb = NULL; ++ break; ++ } + /* Grrr, we cannot offset to correctly align the IP header. */ + np->rx_ring[i].rxaddr = cpu_to_dma(np->rx_info[i].mapping | RxDescValid); + } +@@ -1183,8 +1189,9 @@ static netdev_tx_t start_tx(struct sk_bu + { + struct netdev_private *np = netdev_priv(dev); + unsigned int entry; ++ unsigned int prev_tx; + u32 status; +- int i; ++ int i, j; + + /* + * be cautious here, wrapping the queue has weird semantics +@@ -1202,6 +1209,7 @@ static netdev_tx_t start_tx(struct sk_bu + } + #endif /* ZEROCOPY && HAS_BROKEN_FIRMWARE */ + ++ prev_tx = np->cur_tx; + entry = np->cur_tx % TX_RING_SIZE; + for (i = 0; i < skb_num_frags(skb); i++) { + int wrap_ring = 0; +@@ -1235,6 +1243,11 @@ static netdev_tx_t start_tx(struct sk_bu + skb_frag_size(this_frag), + PCI_DMA_TODEVICE); + } ++ if (pci_dma_mapping_error(np->pci_dev, ++ np->tx_info[entry].mapping)) { ++ dev->stats.tx_dropped++; ++ goto err_out; ++ } + + np->tx_ring[entry].addr = cpu_to_dma(np->tx_info[entry].mapping); + np->tx_ring[entry].status = cpu_to_le32(status); +@@ -1269,8 +1282,30 @@ static netdev_tx_t start_tx(struct sk_bu + netif_stop_queue(dev); + + return NETDEV_TX_OK; +-} + ++err_out: ++ entry = prev_tx % TX_RING_SIZE; ++ np->tx_info[entry].skb = NULL; ++ if (i > 0) { ++ pci_unmap_single(np->pci_dev, ++ np->tx_info[entry].mapping, ++ skb_first_frag_len(skb), ++ PCI_DMA_TODEVICE); ++ np->tx_info[entry].mapping = 0; ++ entry = (entry + np->tx_info[entry].used_slots) % TX_RING_SIZE; ++ for (j = 1; j < i; j++) { ++ pci_unmap_single(np->pci_dev, ++ np->tx_info[entry].mapping, ++ skb_frag_size( ++ &skb_shinfo(skb)->frags[j-1]), ++ PCI_DMA_TODEVICE); ++ entry++; ++ } ++ } ++ dev_kfree_skb_any(skb); ++ np->cur_tx = prev_tx; ++ return NETDEV_TX_OK; ++} + + /* The interrupt handler does all of the Rx thread work and cleans up + after the Tx thread. */ +@@ -1570,6 +1605,12 @@ static void refill_rx_ring(struct net_de + break; /* Better luck next round. */ + np->rx_info[entry].mapping = + pci_map_single(np->pci_dev, skb->data, np->rx_buf_sz, PCI_DMA_FROMDEVICE); ++ if (pci_dma_mapping_error(np->pci_dev, ++ np->rx_info[entry].mapping)) { ++ dev_kfree_skb(skb); ++ np->rx_info[entry].skb = NULL; ++ break; ++ } + np->rx_ring[entry].rxaddr = + cpu_to_dma(np->rx_info[entry].mapping | RxDescValid); + } diff --git a/queue-4.9/net-mlx5-e-switch-err-when-retrieving-steering-name-space-fails.patch b/queue-4.9/net-mlx5-e-switch-err-when-retrieving-steering-name-space-fails.patch new file mode 100644 index 00000000000..29b90ae83e5 --- /dev/null +++ b/queue-4.9/net-mlx5-e-switch-err-when-retrieving-steering-name-space-fails.patch @@ -0,0 +1,43 @@ +From foo@baz Thu Jun 15 14:38:52 CEST 2017 +From: Or Gerlitz +Date: Wed, 11 Jan 2017 19:39:42 +0200 +Subject: net/mlx5: E-Switch, Err when retrieving steering name-space fails + +From: Or Gerlitz + + +[ Upstream commit 5403dc703ff277f8a2a12a83ac820750485f13b3 ] + +Make sure to return error when we failed retrieving the FDB steering +name space. Also, while around, correctly print the error when mode +change revert fails in the warning message. + +Signed-off-by: Or Gerlitz +Reported-by: Leon Romanovsky +Reviewed-by: Roi Dayan +Signed-off-by: Saeed Mahameed +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c ++++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +@@ -414,6 +414,7 @@ static int esw_create_offloads_fdb_table + root_ns = mlx5_get_flow_namespace(dev, MLX5_FLOW_NAMESPACE_FDB); + if (!root_ns) { + esw_warn(dev, "Failed to get FDB flow namespace\n"); ++ err = -EOPNOTSUPP; + goto ns_err; + } + +@@ -639,7 +640,7 @@ static int esw_offloads_start(struct mlx + esw_warn(esw->dev, "Failed setting eswitch to offloads, err %d\n", err); + err1 = mlx5_eswitch_enable_sriov(esw, num_vfs, SRIOV_LEGACY); + if (err1) +- esw_warn(esw->dev, "Failed setting eswitch back to legacy, err %d\n", err); ++ esw_warn(esw->dev, "Failed setting eswitch back to legacy, err %d\n", err1); + } + return err; + } diff --git a/queue-4.9/net-mlx5-return-eopnotsupp-when-failing-to-get-steering-name-space.patch b/queue-4.9/net-mlx5-return-eopnotsupp-when-failing-to-get-steering-name-space.patch new file mode 100644 index 00000000000..5a1298a1c3e --- /dev/null +++ b/queue-4.9/net-mlx5-return-eopnotsupp-when-failing-to-get-steering-name-space.patch @@ -0,0 +1,90 @@ +From foo@baz Thu Jun 15 14:38:52 CEST 2017 +From: Or Gerlitz +Date: Thu, 12 Jan 2017 13:04:01 +0200 +Subject: net/mlx5: Return EOPNOTSUPP when failing to get steering name-space + +From: Or Gerlitz + + +[ Upstream commit eff596da48784316ccb83bef82bc1213b512d5e0 ] + +When we fail to retrieve a hardware steering name-space, the returned error +code should say that this operation is not supported. Align the various +places in the driver where this call is made to this convention. + +Also, make sure to warn when we fail to retrieve a SW (ANCHOR) name-space. + +Signed-off-by: Or Gerlitz +Reviewed-by: Matan Barak +Signed-off-by: Saeed Mahameed +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/mellanox/mlx5/core/en_fs.c | 2 +- + drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 6 +++--- + drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 2 +- + drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 2 +- + 4 files changed, 6 insertions(+), 6 deletions(-) + +--- a/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c ++++ b/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c +@@ -1081,7 +1081,7 @@ int mlx5e_create_flow_steering(struct ml + MLX5_FLOW_NAMESPACE_KERNEL); + + if (!priv->fs.ns) +- return -EINVAL; ++ return -EOPNOTSUPP; + + err = mlx5e_arfs_create_tables(priv); + if (err) { +--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c ++++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +@@ -352,7 +352,7 @@ static int esw_create_legacy_fdb_table(s + root_ns = mlx5_get_flow_namespace(dev, MLX5_FLOW_NAMESPACE_FDB); + if (!root_ns) { + esw_warn(dev, "Failed to get FDB flow namespace\n"); +- return -ENOMEM; ++ return -EOPNOTSUPP; + } + + flow_group_in = mlx5_vzalloc(inlen); +@@ -961,7 +961,7 @@ static int esw_vport_enable_egress_acl(s + root_ns = mlx5_get_flow_namespace(dev, MLX5_FLOW_NAMESPACE_ESW_EGRESS); + if (!root_ns) { + esw_warn(dev, "Failed to get E-Switch egress flow namespace\n"); +- return -EIO; ++ return -EOPNOTSUPP; + } + + flow_group_in = mlx5_vzalloc(inlen); +@@ -1078,7 +1078,7 @@ static int esw_vport_enable_ingress_acl( + root_ns = mlx5_get_flow_namespace(dev, MLX5_FLOW_NAMESPACE_ESW_INGRESS); + if (!root_ns) { + esw_warn(dev, "Failed to get E-Switch ingress flow namespace\n"); +- return -EIO; ++ return -EOPNOTSUPP; + } + + flow_group_in = mlx5_vzalloc(inlen); +--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c ++++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +@@ -521,7 +521,7 @@ static int esw_create_offloads_table(str + ns = mlx5_get_flow_namespace(dev, MLX5_FLOW_NAMESPACE_OFFLOADS); + if (!ns) { + esw_warn(esw->dev, "Failed to get offloads flow namespace\n"); +- return -ENOMEM; ++ return -EOPNOTSUPP; + } + + ft_offloads = mlx5_create_flow_table(ns, 0, dev->priv.sriov.num_vfs + 2, 0); +--- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c ++++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +@@ -1678,7 +1678,7 @@ static int create_anchor_flow_table(stru + struct mlx5_flow_table *ft; + + ns = mlx5_get_flow_namespace(steering->dev, MLX5_FLOW_NAMESPACE_ANCHOR); +- if (!ns) ++ if (WARN_ON(!ns)) + return -EINVAL; + ft = mlx5_create_flow_table(ns, ANCHOR_PRIO, ANCHOR_SIZE, ANCHOR_LEVEL); + if (IS_ERR(ft)) { diff --git a/queue-4.9/net-phy-micrel-add-support-for-ksz8795.patch b/queue-4.9/net-phy-micrel-add-support-for-ksz8795.patch new file mode 100644 index 00000000000..1b865eb959f --- /dev/null +++ b/queue-4.9/net-phy-micrel-add-support-for-ksz8795.patch @@ -0,0 +1,58 @@ +From foo@baz Thu Jun 15 14:38:52 CEST 2017 +From: Sean Nyekjaer +Date: Fri, 27 Jan 2017 08:46:23 +0100 +Subject: net: phy: micrel: add support for KSZ8795 + +From: Sean Nyekjaer + + +[ Upstream commit 9d162ed69f51cbd9ee5a0c7e82aba7acc96362ff ] + +This is adds support for the PHYs in the KSZ8795 5port managed switch. + +It will allow to detect the link between the switch and the soc +and uses the same read_status functions as the KSZ8873MLL switch. + +Signed-off-by: Sean Nyekjaer +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/phy/micrel.c | 14 ++++++++++++++ + include/linux/micrel_phy.h | 2 ++ + 2 files changed, 16 insertions(+) + +--- a/drivers/net/phy/micrel.c ++++ b/drivers/net/phy/micrel.c +@@ -1014,6 +1014,20 @@ static struct phy_driver ksphy_driver[] + .get_stats = kszphy_get_stats, + .suspend = genphy_suspend, + .resume = genphy_resume, ++}, { ++ .phy_id = PHY_ID_KSZ8795, ++ .phy_id_mask = MICREL_PHY_ID_MASK, ++ .name = "Micrel KSZ8795", ++ .features = (SUPPORTED_Pause | SUPPORTED_Asym_Pause), ++ .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT, ++ .config_init = kszphy_config_init, ++ .config_aneg = ksz8873mll_config_aneg, ++ .read_status = ksz8873mll_read_status, ++ .get_sset_count = kszphy_get_sset_count, ++ .get_strings = kszphy_get_strings, ++ .get_stats = kszphy_get_stats, ++ .suspend = genphy_suspend, ++ .resume = genphy_resume, + } }; + + module_phy_driver(ksphy_driver); +--- a/include/linux/micrel_phy.h ++++ b/include/linux/micrel_phy.h +@@ -35,6 +35,8 @@ + #define PHY_ID_KSZ886X 0x00221430 + #define PHY_ID_KSZ8863 0x00221435 + ++#define PHY_ID_KSZ8795 0x00221550 ++ + /* struct phy_device dev_flags definitions */ + #define MICREL_PHY_50MHZ_CLK 0x00000001 + #define MICREL_PHY_FXEN 0x00000002 diff --git a/queue-4.9/parisc-parport_gsc-fixes-for-printk-continuation-lines.patch b/queue-4.9/parisc-parport_gsc-fixes-for-printk-continuation-lines.patch new file mode 100644 index 00000000000..902d61df0d9 --- /dev/null +++ b/queue-4.9/parisc-parport_gsc-fixes-for-printk-continuation-lines.patch @@ -0,0 +1,48 @@ +From foo@baz Thu Jun 15 14:38:52 CEST 2017 +From: Helge Deller +Date: Tue, 3 Jan 2017 22:55:50 +0100 +Subject: parisc, parport_gsc: Fixes for printk continuation lines + +From: Helge Deller + + +[ Upstream commit 83b5d1e3d3013dbf90645a5d07179d018c8243fa ] + +Signed-off-by: Helge Deller +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/parport/parport_gsc.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/parport/parport_gsc.c ++++ b/drivers/parport/parport_gsc.c +@@ -293,7 +293,7 @@ struct parport *parport_gsc_probe_port(u + p->irq = PARPORT_IRQ_NONE; + } + if (p->irq != PARPORT_IRQ_NONE) { +- printk(", irq %d", p->irq); ++ pr_cont(", irq %d", p->irq); + + if (p->dma == PARPORT_DMA_AUTO) { + p->dma = PARPORT_DMA_NONE; +@@ -303,8 +303,8 @@ struct parport *parport_gsc_probe_port(u + is mandatory (see above) */ + p->dma = PARPORT_DMA_NONE; + +- printk(" ["); +-#define printmode(x) {if(p->modes&PARPORT_MODE_##x){printk("%s%s",f?",":"",#x);f++;}} ++ pr_cont(" ["); ++#define printmode(x) {if(p->modes&PARPORT_MODE_##x){pr_cont("%s%s",f?",":"",#x);f++;}} + { + int f = 0; + printmode(PCSPP); +@@ -315,7 +315,7 @@ struct parport *parport_gsc_probe_port(u + // printmode(DMA); + } + #undef printmode +- printk("]\n"); ++ pr_cont("]\n"); + + if (p->irq != PARPORT_IRQ_NONE) { + if (request_irq (p->irq, parport_irq_handler, diff --git a/queue-4.9/pinctrl-berlin-bg4ct-fix-the-value-for-sd1a-of-pin-scrd0_crd_pres.patch b/queue-4.9/pinctrl-berlin-bg4ct-fix-the-value-for-sd1a-of-pin-scrd0_crd_pres.patch new file mode 100644 index 00000000000..a66b6cc4907 --- /dev/null +++ b/queue-4.9/pinctrl-berlin-bg4ct-fix-the-value-for-sd1a-of-pin-scrd0_crd_pres.patch @@ -0,0 +1,31 @@ +From foo@baz Thu Jun 15 14:38:52 CEST 2017 +From: Jisheng Zhang +Date: Mon, 23 Jan 2017 15:15:32 +0800 +Subject: pinctrl: berlin-bg4ct: fix the value for "sd1a" of pin SCRD0_CRD_PRES + +From: Jisheng Zhang + + +[ Upstream commit e82d02580af45663fad6d3596e4344c606e81e10 ] + +This should be a typo. + +Signed-off-by: Jisheng Zhang +Signed-off-by: Linus Walleij +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/pinctrl/berlin/berlin-bg4ct.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/pinctrl/berlin/berlin-bg4ct.c ++++ b/drivers/pinctrl/berlin/berlin-bg4ct.c +@@ -217,7 +217,7 @@ static const struct berlin_desc_group be + BERLIN_PINCTRL_GROUP("SCRD0_CRD_PRES", 0xc, 0x3, 0x15, + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), /* GPIO20 */ + BERLIN_PINCTRL_FUNCTION(0x1, "scrd0"), /* crd pres */ +- BERLIN_PINCTRL_FUNCTION(0x1, "sd1a")), /* DAT3 */ ++ BERLIN_PINCTRL_FUNCTION(0x3, "sd1a")), /* DAT3 */ + BERLIN_PINCTRL_GROUP("SPI1_SS0n", 0xc, 0x3, 0x18, + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* SS0n */ + BERLIN_PINCTRL_FUNCTION(0x1, "gpio"), /* GPIO37 */ diff --git a/queue-4.9/series b/queue-4.9/series index 774f4d5b78b..34a843c7616 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -47,3 +47,11 @@ gianfar-synchronize-dma-api-usage-by-free_skb_rx_queue-w-gfar_new_page.patch pinctrl-baytrail-rectify-debounce-support-part-2.patch cec-fix-wrong-last_la-determination.patch drm-prevent-double-un-registration-for-connectors.patch +drm-don-t-race-connector-registration.patch +pinctrl-berlin-bg4ct-fix-the-value-for-sd1a-of-pin-scrd0_crd_pres.patch +net-adaptec-starfire-add-checks-for-dma-mapping-errors.patch +drm-i915-check-for-null-i915_vma-in-intel_unpin_fb_obj.patch +net-mlx5-e-switch-err-when-retrieving-steering-name-space-fails.patch +net-mlx5-return-eopnotsupp-when-failing-to-get-steering-name-space.patch +parisc-parport_gsc-fixes-for-printk-continuation-lines.patch +net-phy-micrel-add-support-for-ksz8795.patch