--- /dev/null
+From stable+bounces-189964-greg=kroah.com@vger.kernel.org Mon Oct 27 21:45:18 2025
+From: Celeste Liu <uwu@coelacanthus.name>
+Date: Mon, 27 Oct 2025 20:32:31 +0800
+Subject: can: gs_usb: increase max interface to U8_MAX
+To: stable@vger.kernel.org
+Cc: Celeste Liu <uwu@coelacanthus.name>, Runcheng Lu <runcheng.lu@hpmicro.com>, Vincent Mailhol <mailhol@kernel.org>, Marc Kleine-Budde <mkl@pengutronix.de>
+Message-ID: <20251027123230.661960-2-uwu@coelacanthus.name>
+
+From: Celeste Liu <uwu@coelacanthus.name>
+
+commit 2a27f6a8fb5722223d526843040f747e9b0e8060 upstream
+
+This issue was found by Runcheng Lu when develop HSCanT USB to CAN FD
+converter[1]. The original developers may have only 3 interfaces
+device to test so they write 3 here and wait for future change.
+
+During the HSCanT development, we actually used 4 interfaces, so the
+limitation of 3 is not enough now. But just increase one is not
+future-proofed. Since the channel index type in gs_host_frame is u8,
+just make canch[] become a flexible array with a u8 index, so it
+naturally constraint by U8_MAX and avoid statically allocate 256
+pointer for every gs_usb device.
+
+[1]: https://github.com/cherry-embedded/HSCanT-hardware
+
+Fixes: d08e973a77d1 ("can: gs_usb: Added support for the GS_USB CAN devices")
+Reported-by: Runcheng Lu <runcheng.lu@hpmicro.com>
+Cc: stable@vger.kernel.org
+Reviewed-by: Vincent Mailhol <mailhol@kernel.org>
+Signed-off-by: Celeste Liu <uwu@coelacanthus.name>
+Link: https://patch.msgid.link/20250930-gs-usb-max-if-v5-1-863330bf6666@coelacanthus.name
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/can/usb/gs_usb.c | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+--- a/drivers/net/can/usb/gs_usb.c
++++ b/drivers/net/can/usb/gs_usb.c
+@@ -277,10 +277,6 @@ struct gs_host_frame {
+ #define GS_MAX_TX_URBS 10
+ /* Only launch a max of GS_MAX_RX_URBS usb requests at a time. */
+ #define GS_MAX_RX_URBS 30
+-/* Maximum number of interfaces the driver supports per device.
+- * Current hardware only supports 3 interfaces. The future may vary.
+- */
+-#define GS_MAX_INTF 3
+
+ struct gs_tx_context {
+ struct gs_can *dev;
+@@ -318,14 +314,15 @@ struct gs_can {
+
+ /* usb interface struct */
+ struct gs_usb {
+- struct gs_can *canch[GS_MAX_INTF];
+ struct usb_anchor rx_submitted;
+ struct usb_device *udev;
+ unsigned int hf_size_rx;
+ u8 active_channels;
++ u8 channel_cnt;
+
+ unsigned int pipe_in;
+ unsigned int pipe_out;
++ struct gs_can *canch[];
+ };
+
+ /* 'allocate' a tx context.
+@@ -550,7 +547,7 @@ static void gs_usb_receive_bulk_callback
+ }
+
+ /* device reports out of range channel id */
+- if (hf->channel >= GS_MAX_INTF)
++ if (hf->channel >= parent->channel_cnt)
+ goto device_detach;
+
+ dev = parent->canch[hf->channel];
+@@ -653,7 +650,7 @@ resubmit_urb:
+ /* USB failure take down all interfaces */
+ if (rc == -ENODEV) {
+ device_detach:
+- for (rc = 0; rc < GS_MAX_INTF; rc++) {
++ for (rc = 0; rc < parent->channel_cnt; rc++) {
+ if (parent->canch[rc])
+ netif_device_detach(parent->canch[rc]->netdev);
+ }
+@@ -1374,17 +1371,19 @@ static int gs_usb_probe(struct usb_inter
+ icount = dconf.icount + 1;
+ dev_info(&intf->dev, "Configuring for %u interfaces\n", icount);
+
+- if (icount > GS_MAX_INTF) {
++ if (icount > type_max(typeof(parent->channel_cnt))) {
+ dev_err(&intf->dev,
+ "Driver cannot handle more that %u CAN interfaces\n",
+- GS_MAX_INTF);
++ type_max(typeof(parent->channel_cnt)));
+ return -EINVAL;
+ }
+
+- parent = kzalloc(sizeof(*parent), GFP_KERNEL);
++ parent = kzalloc(struct_size(parent, canch, icount), GFP_KERNEL);
+ if (!parent)
+ return -ENOMEM;
+
++ parent->channel_cnt = icount;
++
+ init_usb_anchor(&parent->rx_submitted);
+
+ usb_set_intfdata(intf, parent);
+@@ -1445,7 +1444,7 @@ static void gs_usb_disconnect(struct usb
+ return;
+ }
+
+- for (i = 0; i < GS_MAX_INTF; i++)
++ for (i = 0; i < parent->channel_cnt; i++)
+ if (parent->canch[i])
+ gs_destroy_candev(parent->canch[i]);
+
--- /dev/null
+From stable+bounces-192078-greg=kroah.com@vger.kernel.org Mon Nov 3 04:00:09 2025
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 2 Nov 2025 14:00:02 -0500
+Subject: mptcp: change 'first' as a parameter
+To: stable@vger.kernel.org
+Cc: Geliang Tang <geliang.tang@suse.com>, Mat Martineau <mathew.j.martineau@linux.intel.com>, Jakub Kicinski <kuba@kernel.org>, Sasha Levin <sashal@kernel.org>
+Message-ID: <20251102190003.3553215-1-sashal@kernel.org>
+
+From: Geliang Tang <geliang.tang@suse.com>
+
+[ Upstream commit 73a0052a61f98354f39f461e03f1a7e513b84578 ]
+
+The function mptcp_subflow_process_delegated() uses the input ssk first,
+while __mptcp_check_push() invokes the packet scheduler first.
+
+So this patch adds a new parameter named 'first' for the function
+__mptcp_subflow_push_pending() to deal with these two cases separately.
+
+With this change, the code that invokes the packet scheduler in the
+function __mptcp_check_push() can be removed, and replaced by invoking
+__mptcp_subflow_push_pending() directly.
+
+Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
+Signed-off-by: Geliang Tang <geliang.tang@suse.com>
+Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Stable-dep-of: 27b0e701d387 ("mptcp: drop bogus optimization in __mptcp_check_push()")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/mptcp/protocol.c | 20 ++++++--------------
+ 1 file changed, 6 insertions(+), 14 deletions(-)
+
+--- a/net/mptcp/protocol.c
++++ b/net/mptcp/protocol.c
+@@ -1706,7 +1706,7 @@ out:
+ mptcp_check_send_data_fin(sk);
+ }
+
+-static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk)
++static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk, bool first)
+ {
+ struct mptcp_sock *msk = mptcp_sk(sk);
+ struct mptcp_sendmsg_info info = {
+@@ -1715,7 +1715,6 @@ static void __mptcp_subflow_push_pending
+ struct mptcp_data_frag *dfrag;
+ struct sock *xmit_ssk;
+ int len, copied = 0;
+- bool first = true;
+
+ info.flags = 0;
+ while ((dfrag = mptcp_send_head(sk))) {
+@@ -1725,8 +1724,7 @@ static void __mptcp_subflow_push_pending
+ while (len > 0) {
+ int ret = 0;
+
+- /* the caller already invoked the packet scheduler,
+- * check for a different subflow usage only after
++ /* check for a different subflow usage only after
+ * spooling the first chunk of data
+ */
+ xmit_ssk = first ? ssk : mptcp_subflow_get_send(mptcp_sk(sk));
+@@ -3501,16 +3499,10 @@ void __mptcp_check_push(struct sock *sk,
+ if (!mptcp_send_head(sk))
+ return;
+
+- if (!sock_owned_by_user(sk)) {
+- struct sock *xmit_ssk = mptcp_subflow_get_send(mptcp_sk(sk));
+-
+- if (xmit_ssk == ssk)
+- __mptcp_subflow_push_pending(sk, ssk);
+- else if (xmit_ssk)
+- mptcp_subflow_delegate(mptcp_subflow_ctx(xmit_ssk), MPTCP_DELEGATE_SEND);
+- } else {
++ if (!sock_owned_by_user(sk))
++ __mptcp_subflow_push_pending(sk, ssk, false);
++ else
+ __set_bit(MPTCP_PUSH_PENDING, &mptcp_sk(sk)->cb_flags);
+- }
+ }
+
+ #define MPTCP_FLAGS_PROCESS_CTX_NEED (BIT(MPTCP_PUSH_PENDING) | \
+@@ -3605,7 +3597,7 @@ void mptcp_subflow_process_delegated(str
+ if (status & BIT(MPTCP_DELEGATE_SEND)) {
+ mptcp_data_lock(sk);
+ if (!sock_owned_by_user(sk))
+- __mptcp_subflow_push_pending(sk, ssk);
++ __mptcp_subflow_push_pending(sk, ssk, true);
+ else
+ __set_bit(MPTCP_PUSH_PENDING, &mptcp_sk(sk)->cb_flags);
+ mptcp_data_unlock(sk);
--- /dev/null
+From stable+bounces-192079-greg=kroah.com@vger.kernel.org Mon Nov 3 04:00:17 2025
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 2 Nov 2025 14:00:03 -0500
+Subject: mptcp: drop bogus optimization in __mptcp_check_push()
+To: stable@vger.kernel.org
+Cc: Paolo Abeni <pabeni@redhat.com>, Geliang Tang <geliang@kernel.org>, Mat Martineau <martineau@kernel.org>, "Matthieu Baerts (NGI0)" <matttbe@kernel.org>, Jakub Kicinski <kuba@kernel.org>, Sasha Levin <sashal@kernel.org>
+Message-ID: <20251102190003.3553215-2-sashal@kernel.org>
+
+From: Paolo Abeni <pabeni@redhat.com>
+
+[ Upstream commit 27b0e701d3872ba59c5b579a9e8a02ea49ad3d3b ]
+
+Accessing the transmit queue without owning the msk socket lock is
+inherently racy, hence __mptcp_check_push() could actually quit early
+even when there is pending data.
+
+That in turn could cause unexpected tx lock and timeout.
+
+Dropping the early check avoids the race, implicitly relaying on later
+tests under the relevant lock. With such change, all the other
+mptcp_send_head() call sites are now under the msk socket lock and we
+can additionally drop the now unneeded annotation on the transmit head
+pointer accesses.
+
+Fixes: 6e628cd3a8f7 ("mptcp: use mptcp release_cb for delayed tasks")
+Cc: stable@vger.kernel.org
+Signed-off-by: Paolo Abeni <pabeni@redhat.com>
+Reviewed-by: Geliang Tang <geliang@kernel.org>
+Tested-by: Geliang Tang <geliang@kernel.org>
+Reviewed-by: Mat Martineau <martineau@kernel.org>
+Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Link: https://patch.msgid.link/20251028-net-mptcp-send-timeout-v1-1-38ffff5a9ec8@kernel.org
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+[ split upstream __subflow_push_pending change across __mptcp_push_pending and __mptcp_subflow_push_pending ]
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/mptcp/protocol.c | 13 +++++--------
+ net/mptcp/protocol.h | 2 +-
+ 2 files changed, 6 insertions(+), 9 deletions(-)
+
+--- a/net/mptcp/protocol.c
++++ b/net/mptcp/protocol.c
+@@ -1101,7 +1101,7 @@ static void __mptcp_clean_una(struct soc
+ if (WARN_ON_ONCE(!msk->recovery))
+ break;
+
+- WRITE_ONCE(msk->first_pending, mptcp_send_next(sk));
++ msk->first_pending = mptcp_send_next(sk);
+ }
+
+ dfrag_clear(sk, dfrag);
+@@ -1691,7 +1691,7 @@ void __mptcp_push_pending(struct sock *s
+
+ mptcp_update_post_push(msk, dfrag, ret);
+ }
+- WRITE_ONCE(msk->first_pending, mptcp_send_next(sk));
++ msk->first_pending = mptcp_send_next(sk);
+ }
+
+ /* at this point we held the socket lock for the last subflow we used */
+@@ -1747,7 +1747,7 @@ static void __mptcp_subflow_push_pending
+
+ mptcp_update_post_push(msk, dfrag, ret);
+ }
+- WRITE_ONCE(msk->first_pending, mptcp_send_next(sk));
++ msk->first_pending = mptcp_send_next(sk);
+ }
+
+ out:
+@@ -1917,7 +1917,7 @@ static int mptcp_sendmsg(struct sock *sk
+ get_page(dfrag->page);
+ list_add_tail(&dfrag->list, &msk->rtx_queue);
+ if (!msk->first_pending)
+- WRITE_ONCE(msk->first_pending, dfrag);
++ msk->first_pending = dfrag;
+ }
+ pr_debug("msk=%p dfrag at seq=%llu len=%u sent=%u new=%d\n", msk,
+ dfrag->data_seq, dfrag->data_len, dfrag->already_sent,
+@@ -2915,7 +2915,7 @@ static void __mptcp_clear_xmit(struct so
+ struct mptcp_sock *msk = mptcp_sk(sk);
+ struct mptcp_data_frag *dtmp, *dfrag;
+
+- WRITE_ONCE(msk->first_pending, NULL);
++ msk->first_pending = NULL;
+ list_for_each_entry_safe(dfrag, dtmp, &msk->rtx_queue, list)
+ dfrag_clear(sk, dfrag);
+ }
+@@ -3496,9 +3496,6 @@ void __mptcp_data_acked(struct sock *sk)
+
+ void __mptcp_check_push(struct sock *sk, struct sock *ssk)
+ {
+- if (!mptcp_send_head(sk))
+- return;
+-
+ if (!sock_owned_by_user(sk))
+ __mptcp_subflow_push_pending(sk, ssk, false);
+ else
+--- a/net/mptcp/protocol.h
++++ b/net/mptcp/protocol.h
+@@ -360,7 +360,7 @@ static inline struct mptcp_data_frag *mp
+ {
+ const struct mptcp_sock *msk = mptcp_sk(sk);
+
+- return READ_ONCE(msk->first_pending);
++ return msk->first_pending;
+ }
+
+ static inline struct mptcp_data_frag *mptcp_send_next(struct sock *sk)
--- /dev/null
+From stable+bounces-192086-greg=kroah.com@vger.kernel.org Mon Nov 3 05:15:36 2025
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 2 Nov 2025 15:15:27 -0500
+Subject: net: phy: dp83867: Disable EEE support as not implemented
+To: stable@vger.kernel.org
+Cc: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>, Andrew Lunn <andrew@lunn.ch>, Jakub Kicinski <kuba@kernel.org>, Sasha Levin <sashal@kernel.org>
+Message-ID: <20251102201527.3587707-1-sashal@kernel.org>
+
+From: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
+
+[ Upstream commit 84a905290cb4c3d9a71a9e3b2f2e02e031e7512f ]
+
+While the DP83867 PHYs report EEE capability through their feature
+registers, the actual hardware does not support EEE (see Links).
+When the connected MAC enables EEE, it causes link instability and
+communication failures.
+
+The issue is reproducible with a iMX8MP and relevant stmmac ethernet port.
+Since the introduction of phylink-managed EEE support in the stmmac driver,
+EEE is now enabled by default, leading to issues on systems using the
+DP83867 PHY.
+
+Call phy_disable_eee during phy initialization to prevent EEE from being
+enabled on DP83867 PHYs.
+
+Link: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1445244/dp83867ir-dp83867-disable-eee-lpi
+Link: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/658638/dp83867ir-eee-energy-efficient-ethernet
+Fixes: 2a10154abcb7 ("net: phy: dp83867: Add TI dp83867 phy")
+Cc: stable@vger.kernel.org
+Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Link: https://patch.msgid.link/20251023144857.529566-1-ghidoliemanuele@gmail.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+[ replaced phy_disable_eee() call with direct eee_broken_modes assignment ]
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/phy/dp83867.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/net/phy/dp83867.c
++++ b/drivers/net/phy/dp83867.c
+@@ -743,6 +743,12 @@ static int dp83867_config_init(struct ph
+ return ret;
+ }
+
++ /* Although the DP83867 reports EEE capability through the
++ * MDIO_PCS_EEE_ABLE and MDIO_AN_EEE_ADV registers, the feature
++ * is not actually implemented in hardware.
++ */
++ phydev->eee_broken_modes = MDIO_EEE_100TX | MDIO_EEE_1000T;
++
+ if (phy_interface_is_rgmii(phydev) ||
+ phydev->interface == PHY_INTERFACE_MODE_SGMII) {
+ val = phy_read(phydev, MII_DP83867_PHYCTRL);
--- /dev/null
+From 8c227a5050c07450c4585832a9a35659b39c4bf1 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Tue, 27 Feb 2024 13:08:12 -0500
+Subject: Reapply "Revert drm/amd/display: Enable Freesync Video Mode by default"
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+This reverts commit 11b92df8a2f7f4605ccc764ce6ae4a72760674df.
+
+This conflicts with how compositors want to handle VRR. Now
+that compositors actually handle VRR, we probably don't need
+freesync video.
+
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/2985
+Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+[ Salvatore Bonaccorso: Adjust context due to missing 3e094a287526
+ ("drm/amd/display: Use drm_connector in create_stream_for_sink") in
+ 6.1.y stable series ]
+Signed-off-by: Salvatore Bonaccorso <carnil@debian.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -6044,7 +6044,8 @@ create_stream_for_sink(struct amdgpu_dm_
+ */
+ DRM_DEBUG_DRIVER("No preferred mode found\n");
+ } else {
+- recalculate_timing = is_freesync_video_mode(&mode, aconnector);
++ recalculate_timing = amdgpu_freesync_vid_mode &&
++ is_freesync_video_mode(&mode, aconnector);
+ if (recalculate_timing) {
+ freesync_mode = get_highest_refresh_rate_mode(aconnector, false);
+ drm_mode_copy(&saved_mode, &mode);
+@@ -7147,7 +7148,7 @@ static void amdgpu_dm_connector_add_free
+ struct amdgpu_dm_connector *amdgpu_dm_connector =
+ to_amdgpu_dm_connector(connector);
+
+- if (!edid)
++ if (!(amdgpu_freesync_vid_mode && edid))
+ return;
+
+ if (amdgpu_dm_connector->max_vfreq - amdgpu_dm_connector->min_vfreq > 10)
+@@ -9160,7 +9161,8 @@ static int dm_update_crtc_state(struct a
+ * TODO: Refactor this function to allow this check to work
+ * in all conditions.
+ */
+- if (dm_new_crtc_state->stream &&
++ if (amdgpu_freesync_vid_mode &&
++ dm_new_crtc_state->stream &&
+ is_timing_unchanged_for_freesync(new_crtc_state, old_crtc_state))
+ goto skip_modeset;
+
+@@ -9200,7 +9202,7 @@ static int dm_update_crtc_state(struct a
+ }
+
+ /* Now check if we should set freesync video mode */
+- if (dm_new_crtc_state->stream &&
++ if (amdgpu_freesync_vid_mode && dm_new_crtc_state->stream &&
+ dc_is_stream_unchanged(new_stream, dm_old_crtc_state->stream) &&
+ dc_is_stream_scaling_unchanged(new_stream, dm_old_crtc_state->stream) &&
+ is_timing_unchanged_for_freesync(new_crtc_state,
+@@ -9213,7 +9215,7 @@ static int dm_update_crtc_state(struct a
+ set_freesync_fixed_config(dm_new_crtc_state);
+
+ goto skip_modeset;
+- } else if (aconnector &&
++ } else if (amdgpu_freesync_vid_mode && aconnector &&
+ is_freesync_video_mode(&new_crtc_state->mode,
+ aconnector)) {
+ struct drm_display_mode *high_mode;
--- /dev/null
+From stable+bounces-192102-greg=kroah.com@vger.kernel.org Mon Nov 3 08:43:42 2025
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 2 Nov 2025 18:43:36 -0500
+Subject: s390/pci: Restore IRQ unconditionally for the zPCI device
+To: stable@vger.kernel.org
+Cc: Farhan Ali <alifm@linux.ibm.com>, stable@vger.kernnel.org, Niklas Schnelle <schnelle@linux.ibm.com>, Matthew Rosato <mjrosato@linux.ibm.com>, Heiko Carstens <hca@linux.ibm.com>, Sasha Levin <sashal@kernel.org>
+Message-ID: <20251102234336.3659237-1-sashal@kernel.org>
+
+From: Farhan Ali <alifm@linux.ibm.com>
+
+[ Upstream commit b45873c3f09153d1ad9b3a7bf9e5c0b0387fd2ea ]
+
+Commit c1e18c17bda6 ("s390/pci: add zpci_set_irq()/zpci_clear_irq()"),
+introduced the zpci_set_irq() and zpci_clear_irq(), to be used while
+resetting a zPCI device.
+
+Commit da995d538d3a ("s390/pci: implement reset_slot for hotplug
+slot"), mentions zpci_clear_irq() being called in the path for
+zpci_hot_reset_device(). But that is not the case anymore and these
+functions are not called outside of this file. Instead
+zpci_hot_reset_device() relies on zpci_disable_device() also clearing
+the IRQs, but misses to reset the zdev->irqs_registered flag.
+
+However after a CLP disable/enable reset, the device's IRQ are
+unregistered, but the flag zdev->irq_registered does not get cleared. It
+creates an inconsistent state and so arch_restore_msi_irqs() doesn't
+correctly restore the device's IRQ. This becomes a problem when a PCI
+driver tries to restore the state of the device through
+pci_restore_state(). Restore IRQ unconditionally for the device and remove
+the irq_registered flag as its redundant.
+
+Fixes: c1e18c17bda6 ("s390/pci: add zpci_set_irq()/zpci_clear_irq()")
+Cc: stable@vger.kernnel.org
+Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
+Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
+Signed-off-by: Farhan Ali <alifm@linux.ibm.com>
+Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
+[ adjusted bitfield context ]
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/s390/include/asm/pci.h | 1 -
+ arch/s390/pci/pci_irq.c | 9 +--------
+ 2 files changed, 1 insertion(+), 9 deletions(-)
+
+--- a/arch/s390/include/asm/pci.h
++++ b/arch/s390/include/asm/pci.h
+@@ -136,7 +136,6 @@ struct zpci_dev {
+ u8 has_resources : 1;
+ u8 is_physfn : 1;
+ u8 util_str_avail : 1;
+- u8 irqs_registered : 1;
+ u8 reserved : 2;
+ unsigned int devfn; /* DEVFN part of the RID*/
+
+--- a/arch/s390/pci/pci_irq.c
++++ b/arch/s390/pci/pci_irq.c
+@@ -107,9 +107,6 @@ static int zpci_set_irq(struct zpci_dev
+ else
+ rc = zpci_set_airq(zdev);
+
+- if (!rc)
+- zdev->irqs_registered = 1;
+-
+ return rc;
+ }
+
+@@ -123,9 +120,6 @@ static int zpci_clear_irq(struct zpci_de
+ else
+ rc = zpci_clear_airq(zdev);
+
+- if (!rc)
+- zdev->irqs_registered = 0;
+-
+ return rc;
+ }
+
+@@ -427,8 +421,7 @@ bool arch_restore_msi_irqs(struct pci_de
+ {
+ struct zpci_dev *zdev = to_zpci(pdev);
+
+- if (!zdev->irqs_registered)
+- zpci_set_irq(zdev);
++ zpci_set_irq(zdev);
+ return true;
+ }
+
block-fix-op_is_zone_mgmt-to-handle-req_op_zone_reset_all.patch
block-make-req_op_zone_open-a-write-operation.patch
regmap-slimbus-fix-bus_context-pointer-in-regmap-init-calls.patch
+reapply-revert-drm-amd-display-enable-freesync-video-mode-by-default.patch
+s390-pci-restore-irq-unconditionally-for-the-zpci-device.patch
+net-phy-dp83867-disable-eee-support-as-not-implemented.patch
+mptcp-change-first-as-a-parameter.patch
+mptcp-drop-bogus-optimization-in-__mptcp_check_push.patch
+can-gs_usb-increase-max-interface-to-u8_max.patch