]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Jun 2017 12:49:17 +0000 (14:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Jun 2017 12:49:17 +0000 (14:49 +0200)
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

queue-4.9/drm-don-t-race-connector-registration.patch [new file with mode: 0644]
queue-4.9/drm-i915-check-for-null-i915_vma-in-intel_unpin_fb_obj.patch [new file with mode: 0644]
queue-4.9/net-adaptec-starfire-add-checks-for-dma-mapping-errors.patch [new file with mode: 0644]
queue-4.9/net-mlx5-e-switch-err-when-retrieving-steering-name-space-fails.patch [new file with mode: 0644]
queue-4.9/net-mlx5-return-eopnotsupp-when-failing-to-get-steering-name-space.patch [new file with mode: 0644]
queue-4.9/net-phy-micrel-add-support-for-ksz8795.patch [new file with mode: 0644]
queue-4.9/parisc-parport_gsc-fixes-for-printk-continuation-lines.patch [new file with mode: 0644]
queue-4.9/pinctrl-berlin-bg4ct-fix-the-value-for-sd1a-of-pin-scrd0_crd_pres.patch [new file with mode: 0644]
queue-4.9/series

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 (file)
index 0000000..2376f02
--- /dev/null
@@ -0,0 +1,81 @@
+From foo@baz Thu Jun 15 14:38:52 CEST 2017
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Thu, 12 Jan 2017 17:15:56 +0100
+Subject: drm: Don't race connector registration
+
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+
+
+[ 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 <dave.hansen@intel.com>
+Cc: Dave Hansen <dave.hansen@intel.com>
+Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
+Cc: Chris Wilson <chris@chris-wilson.co.uk>
+Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1484237756-2720-1-git-send-email-daniel.vetter@ffwll.ch
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..895af1b
--- /dev/null
@@ -0,0 +1,92 @@
+From foo@baz Thu Jun 15 14:38:52 CEST 2017
+From: Linus Torvalds <torvalds@linux-foundation.org>
+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 <torvalds@linux-foundation.org>
+
+
+[ 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 <daniel.vetter@intel.com>
+Cc: Jani Nikula <jani.nikula@linux.intel.com>
+Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Cc: Chris Wilson <chris@chris-wilson.co.uk>
+Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
+Cc: Imre Deak <imre.deak@intel.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..59e9ba9
--- /dev/null
@@ -0,0 +1,115 @@
+From foo@baz Thu Jun 15 14:38:52 CEST 2017
+From: Alexey Khoroshilov <khoroshilov@ispras.ru>
+Date: Sat, 28 Jan 2017 01:07:30 +0300
+Subject: net: adaptec: starfire: add checks for dma mapping errors
+
+From: Alexey Khoroshilov <khoroshilov@ispras.ru>
+
+
+[ 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 <khoroshilov@ispras.ru>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..29b90ae
--- /dev/null
@@ -0,0 +1,43 @@
+From foo@baz Thu Jun 15 14:38:52 CEST 2017
+From: Or Gerlitz <ogerlitz@mellanox.com>
+Date: Wed, 11 Jan 2017 19:39:42 +0200
+Subject: net/mlx5: E-Switch, Err when retrieving steering name-space fails
+
+From: Or Gerlitz <ogerlitz@mellanox.com>
+
+
+[ 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 <ogerlitz@mellanox.com>
+Reported-by: Leon Romanovsky <leonro@mellanox.com>
+Reviewed-by: Roi Dayan <roid@mellanox.com>
+Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..5a1298a
--- /dev/null
@@ -0,0 +1,90 @@
+From foo@baz Thu Jun 15 14:38:52 CEST 2017
+From: Or Gerlitz <ogerlitz@mellanox.com>
+Date: Thu, 12 Jan 2017 13:04:01 +0200
+Subject: net/mlx5: Return EOPNOTSUPP when failing to get steering name-space
+
+From: Or Gerlitz <ogerlitz@mellanox.com>
+
+
+[ 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 <ogerlitz@mellanox.com>
+Reviewed-by: Matan Barak <matanb@mellanox.com>
+Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..1b865eb
--- /dev/null
@@ -0,0 +1,58 @@
+From foo@baz Thu Jun 15 14:38:52 CEST 2017
+From: Sean Nyekjaer <sean.nyekjaer@prevas.dk>
+Date: Fri, 27 Jan 2017 08:46:23 +0100
+Subject: net: phy: micrel: add support for KSZ8795
+
+From: Sean Nyekjaer <sean.nyekjaer@prevas.dk>
+
+
+[ 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 <sean.nyekjaer@prevas.dk>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..902d61d
--- /dev/null
@@ -0,0 +1,48 @@
+From foo@baz Thu Jun 15 14:38:52 CEST 2017
+From: Helge Deller <deller@gmx.de>
+Date: Tue, 3 Jan 2017 22:55:50 +0100
+Subject: parisc, parport_gsc: Fixes for printk continuation lines
+
+From: Helge Deller <deller@gmx.de>
+
+
+[ Upstream commit 83b5d1e3d3013dbf90645a5d07179d018c8243fa ]
+
+Signed-off-by: Helge Deller <deller@gmx.de>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..a66b6cc
--- /dev/null
@@ -0,0 +1,31 @@
+From foo@baz Thu Jun 15 14:38:52 CEST 2017
+From: Jisheng Zhang <jszhang@marvell.com>
+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 <jszhang@marvell.com>
+
+
+[ Upstream commit e82d02580af45663fad6d3596e4344c606e81e10 ]
+
+This should be a typo.
+
+Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 */
index 774f4d5b78b9cfe40a2fb8e184f680e9d83324eb..34a843c7616d0e6559a523722e33b5a0ade67b24 100644 (file)
@@ -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