--- /dev/null
+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;
--- /dev/null
+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);
+ }
--- /dev/null
+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);
+ }
--- /dev/null
+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;
+ }
--- /dev/null
+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)) {
--- /dev/null
+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
--- /dev/null
+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,
--- /dev/null
+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 */
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