From: Stefan Berger <stefanb(a)linux.ibm.com>
There has been a bunch of reports (one from kernel bugzilla linked)
reporting that when this commit is applied it causes on some machines
boot freezes.
Unfortunately hardware where this commit causes a failure is not widely
available (only one I'm aware is Lenovo T490), which means we cannot
predict yet how long it will take to properly fix tpm_tis interrupt
probing.
Thus, the least worst short term action is to revert the code to the
state before this commit. In long term we need fix the tpm_tis probing
code to work on machines that Stefan's fix was supposed to fix.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=205935
Fixes: 1ea32c83c699 ("tpm_tis_core: Set TPM_CHIP_FLAG_IRQ before probing for interrupts")
Cc: stable(a)vger.kernel.org
Cc: Jerry Snitselaar <jsnitsel(a)redhat.com>
Cc: Dan Williams <dan.j.williams(a)intel.com>
Tested-by: Dan Williams <dan.j.williams(a)intel.com>
Tested-by: Xiaoping Zhou <xiaoping.zhou(a)intel.com>
Signed-off-by: Stefan Berger <stefanb(a)linux.ibm.com>
Reported-by: Jerry Snitselaar <jsnitsel(a)redhat.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen(a)linux.intel.com>
---
drivers/char/tpm/tpm_tis_core.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
index 8af2cee1a762..5dc52c4e2292 100644
--- a/drivers/char/tpm/tpm_tis_core.c
+++ b/drivers/char/tpm/tpm_tis_core.c
@@ -1060,7 +1060,6 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq,
}
tpm_chip_start(chip);
- chip->flags |= TPM_CHIP_FLAG_IRQ;
if (irq) {
tpm_tis_probe_irq_single(chip, intmask, IRQF_SHARED,
irq);
--
2.20.1
This is the start of the stable review cycle for the 4.14.162 release.
There are 91 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Sat, 04 Jan 2020 22:01:54 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.162-r…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.14.162-rc1
Taehee Yoo <ap420073(a)gmail.com>
gtp: avoid zero size hashtable
Taehee Yoo <ap420073(a)gmail.com>
gtp: fix an use-after-free in ipv4_pdp_find()
Taehee Yoo <ap420073(a)gmail.com>
gtp: fix wrong condition in gtp_genl_dump_pdp()
Eric Dumazet <edumazet(a)google.com>
tcp: do not send empty skb from tcp_write_xmit()
Eric Dumazet <edumazet(a)google.com>
tcp/dccp: fix possible race __inet_lookup_established()
Taehee Yoo <ap420073(a)gmail.com>
gtp: do not allow adding duplicate tid and ms_addr pdp context
Hangbin Liu <liuhangbin(a)gmail.com>
sit: do not confirm neighbor when do pmtu update
Hangbin Liu <liuhangbin(a)gmail.com>
vti: do not confirm neighbor when do pmtu update
Hangbin Liu <liuhangbin(a)gmail.com>
tunnel: do not confirm neighbor when do pmtu update
Hangbin Liu <liuhangbin(a)gmail.com>
net/dst: add new function skb_dst_update_pmtu_no_confirm
Hangbin Liu <liuhangbin(a)gmail.com>
gtp: do not confirm neighbor when do pmtu update
Hangbin Liu <liuhangbin(a)gmail.com>
ip6_gre: do not confirm neighbor when do pmtu update
Hangbin Liu <liuhangbin(a)gmail.com>
net: add bool confirm_neigh parameter for dst_ops.update_pmtu
Stefano Garzarella <sgarzare(a)redhat.com>
vhost/vsock: accept only packets with the right dst_cid
Antonio Messina <amessina(a)google.com>
udp: fix integer overflow while computing available space in sk_rcvbuf
Vladis Dronov <vdronov(a)redhat.com>
ptp: fix the race between the release of ptp_clock and cdev
Vladyslav Tarasiuk <vladyslavt(a)mellanox.com>
net/mlxfw: Fix out-of-memory error in mfa2 flash burning
Netanel Belgazal <netanel(a)amazon.com>
net: ena: fix napi handler misbehavior when the napi budget is zero
Hans de Goede <hdegoede(a)redhat.com>
pinctrl: baytrail: Really serialize all register accesses
David Engraf <david.engraf(a)sysgo.com>
tty/serial: atmel: fix out of range clock divider handling
Christophe Leroy <christophe.leroy(a)c-s.fr>
spi: fsl: don't map irq during probe
Eric Dumazet <edumazet(a)google.com>
hrtimer: Annotate lockless access to timer->state
Eric Dumazet <edumazet(a)google.com>
net: icmp: fix data-race in cmp_global_allow()
Eric Dumazet <edumazet(a)google.com>
net: add a READ_ONCE() in skb_peek_tail()
Eric Dumazet <edumazet(a)google.com>
inetpeer: fix data-race in inet_putpeer / inet_putpeer
Eric Dumazet <edumazet(a)google.com>
netfilter: bridge: make sure to pull arp header in br_nf_forward_arp()
Eric Dumazet <edumazet(a)google.com>
6pack,mkiss: fix possible deadlock
Florian Westphal <fw(a)strlen.de>
netfilter: ebtables: compat: reject all padding in matches/watchers
Logan Gunthorpe <logang(a)deltatee.com>
PCI/switchtec: Read all 64 bits of part_event_bitmap
Linus Torvalds <torvalds(a)linux-foundation.org>
filldir[64]: remove WARN_ON_ONCE() for bad directory entries
Linus Torvalds <torvalds(a)linux-foundation.org>
Make filldir[64]() verify the directory entry filename is valid
Mattias Jacobsson <2pi(a)mok.nu>
perf strbuf: Remove redundant va_end() in strbuf_addv()
Mahesh Bandewar <maheshb(a)google.com>
bonding: fix active-backup transition after link failure
Takashi Iwai <tiwai(a)suse.de>
ALSA: hda - Downgrade error message for single-cmd fallback
Marco Oliverio <marco.oliverio(a)tanaza.com>
netfilter: nf_queue: enqueue skbs with NULL dst
Alexander Lobakin <alobakin(a)dlink.ru>
net, sysctl: Fix compiler warning when only cBPF is present
Jan H. Schönherr <jschoenh(a)amazon.de>
x86/mce: Fix possibly incorrect severity calculation on AMD
Mike Rapoport <rppt(a)linux.ibm.com>
userfaultfd: require CAP_SYS_PTRACE for UFFD_FEATURE_EVENT_FORK
Johannes Weiner <hannes(a)cmpxchg.org>
kernel: sysctl: make drop_caches write-only
Ding Xiang <dingxiang(a)cmss.chinamobile.com>
ocfs2: fix passing zero to 'PTR_ERR' warning
Thomas Richter <tmricht(a)linux.ibm.com>
s390/cpum_sf: Check for SDBT and SDB consistency
Masahiro Yamada <yamada.masahiro(a)socionext.com>
libfdt: define INT32_MAX and UINT32_MAX in libfdt_env.h
Harald Freudenberger <freude(a)linux.ibm.com>
s390/zcrypt: handle new reply code FILTERED_BY_HYPERVISOR
Arnaldo Carvalho de Melo <acme(a)redhat.com>
perf regs: Make perf_reg_name() return "unknown" instead of NULL
Adrian Hunter <adrian.hunter(a)intel.com>
perf script: Fix brstackinsn for AUXTRACE
Diego Elio Pettenò <flameeyes(a)flameeyes.com>
cdrom: respect device capabilities during opening action
Chengguang Xu <cgxu519(a)mykernel.net>
f2fs: choose hardlimit when softlimit is larger than hardlimit in f2fs_statfs_project()
Masahiro Yamada <yamada.masahiro(a)socionext.com>
scripts/kallsyms: fix definitely-lost memory leak
Colin Ian King <colin.king(a)canonical.com>
apparmor: fix unsigned len comparison with less than zero
Vladimir Oltean <vladimir.oltean(a)nxp.com>
gpio: mpc8xxx: Don't overwrite default irq_set_type callback
Bart Van Assche <bvanassche(a)acm.org>
scsi: target: iscsi: Wait for all commands to finish before freeing a session
Anatol Pomazau <anatol(a)google.com>
scsi: iscsi: Don't send data to unbound connection
Finn Thain <fthain(a)telegraphics.com.au>
scsi: NCR5380: Add disconnect_mask module parameter
Maurizio Lombardi <mlombard(a)redhat.com>
scsi: scsi_debug: num_tgts must be >= 0
Subhash Jadavani <subhashj(a)codeaurora.org>
scsi: ufs: Fix error handing during hibern8 enter
peter chang <dpf(a)google.com>
scsi: pm80xx: Fix for SATA device discovery
Blaž Hrastnik <blaz(a)mxxn.io>
HID: Improve Windows Precision Touchpad detection.
Qian Cai <cai(a)lca.pw>
libnvdimm/btt: fix variable 'rc' set but not used
Hans de Goede <hdegoede(a)redhat.com>
HID: logitech-hidpp: Silence intermittent get_battery_capacity errors
Coly Li <colyli(a)suse.de>
bcache: at least try to shrink 1 node in bch_mca_scan()
Robert Jarzmik <robert.jarzmik(a)free.fr>
clk: pxa: fix one of the pxa RTC clocks
Finn Thain <fthain(a)telegraphics.com.au>
scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE
Gustavo L. F. Walbon <gwalbon(a)linux.ibm.com>
powerpc/security: Fix wrong message when RFI Flush is disable
David Hildenbrand <david(a)redhat.com>
powerpc/pseries/cmm: Implement release() function for sysfs device
Bean Huo <beanhuo(a)micron.com>
scsi: ufs: fix potential bug which ends in system hang
James Smart <jsmart2021(a)gmail.com>
scsi: lpfc: fix: Coverity: lpfc_cmpl_els_rsp(): Null pointer dereferences
Konstantin Khlebnikov <khlebnikov(a)yandex-team.ru>
fs/quota: handle overflows of sysctl fs.quota.* and report as unsigned long
Lee Jones <lee.jones(a)linaro.org>
mfd: mfd-core: Honour Device Tree's request to disable a child-device
Paul Cercueil <paul(a)crapouillou.net>
irqchip: ingenic: Error out if IRQ domain creation failed
Florian Fainelli <f.fainelli(a)gmail.com>
irqchip/irq-bcm7038-l1: Enable parent IRQ if necessary
Jeffrey Hugo <jeffrey.l.hugo(a)gmail.com>
clk: qcom: Allow constant ratio freq tables for rcg
Chao Yu <yuchao0(a)huawei.com>
f2fs: fix to update dir's i_pino during cross_rename
James Smart <jsmart2021(a)gmail.com>
scsi: lpfc: Fix duplicate unreg_rpi error in port offline flow
Bart Van Assche <bvanassche(a)acm.org>
scsi: tracing: Fix handling of TRANSFER LENGTH == 0 for READ(6) and WRITE(6)
Jan Kara <jack(a)suse.cz>
jbd2: Fix statistics for the number of logged blocks
Matthew Bobrowski <mbobrowski(a)mbobrowski.org>
ext4: update direct I/O read lock pattern for IOCB_NOWAIT
Aneesh Kumar K.V <aneesh.kumar(a)linux.ibm.com>
powerpc/book3s64/hash: Add cond_resched to avoid soft lockup warning
Anthony Steinhauser <asteinhauser(a)google.com>
powerpc/security/book3s64: Report L1TF status in sysfs
Chuhong Yuan <hslester96(a)gmail.com>
clocksource/drivers/asm9260: Add a check for of_clk_get
Eric Dumazet <edumazet(a)google.com>
dma-debug: add a schedule point in debug_dma_dump_mappings()
Michael Ellerman <mpe(a)ellerman.id.au>
powerpc/tools: Don't quote $objdump in scripts
Aneesh Kumar K.V <aneesh.kumar(a)linux.ibm.com>
powerpc/pseries: Don't fail hash page table insert for bolted mapping
Michael Ellerman <mpe(a)ellerman.id.au>
powerpc/pseries: Mark accumulate_stolen_time() as notrace
Dan Carpenter <dan.carpenter(a)oracle.com>
scsi: csiostor: Don't enable IRQs too early
James Smart <jsmart2021(a)gmail.com>
scsi: lpfc: Fix SLI3 hba in loop mode not discovering devices
David Disseldorp <ddiss(a)suse.de>
scsi: target: compare full CHAP_A Algorithm strings
Thierry Reding <treding(a)nvidia.com>
iommu/tegra-smmu: Fix page tables in > 4 GiB memory
Evan Green <evgreen(a)chromium.org>
Input: atmel_mxt_ts - disable IRQ across suspend
James Smart <jsmart2021(a)gmail.com>
scsi: lpfc: Fix locking on mailbox command completion
Sreekanth Reddy <sreekanth.reddy(a)broadcom.com>
scsi: mpt3sas: Fix clear pending bit in ioctl status
James Smart <jsmart2021(a)gmail.com>
scsi: lpfc: Fix discovery failures when target device connectivity bounces
-------------
Diffstat:
Makefile | 4 +-
arch/arm/boot/compressed/libfdt_env.h | 4 +-
arch/powerpc/boot/libfdt_env.h | 2 +
arch/powerpc/kernel/security.c | 21 +++--
arch/powerpc/kernel/time.c | 2 +-
arch/powerpc/mm/hash_utils_64.c | 10 +-
arch/powerpc/platforms/pseries/cmm.c | 5 +
arch/powerpc/tools/relocs_check.sh | 2 +-
arch/powerpc/tools/unrel_branch_check.sh | 4 +-
arch/s390/kernel/perf_cpum_sf.c | 17 +++-
arch/x86/kernel/cpu/mcheck/mce.c | 2 +-
drivers/cdrom/cdrom.c | 12 ++-
drivers/clk/pxa/clk-pxa27x.c | 1 +
drivers/clk/qcom/clk-rcg2.c | 2 +
drivers/clk/qcom/common.c | 3 +
drivers/clocksource/asm9260_timer.c | 4 +
drivers/gpio/gpio-mpc8xxx.c | 3 +-
drivers/hid/hid-core.c | 4 +
drivers/hid/hid-logitech-hidpp.c | 3 +
drivers/input/touchscreen/atmel_mxt_ts.c | 4 +
drivers/iommu/tegra-smmu.c | 11 ++-
drivers/irqchip/irq-bcm7038-l1.c | 4 +
drivers/irqchip/irq-ingenic.c | 15 ++-
drivers/md/bcache/btree.c | 2 +
drivers/mfd/mfd-core.c | 5 +
drivers/net/bonding/bond_main.c | 3 -
drivers/net/ethernet/amazon/ena/ena_netdev.c | 10 +-
drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2.c | 7 +-
drivers/net/gtp.c | 111 +++++++++++++----------
drivers/net/hamradio/6pack.c | 4 +-
drivers/net/hamradio/mkiss.c | 4 +-
drivers/nvdimm/btt.c | 8 +-
drivers/pci/switch/switchtec.c | 2 +-
drivers/pinctrl/intel/pinctrl-baytrail.c | 81 +++++++++--------
drivers/ptp/ptp_clock.c | 31 +++----
drivers/ptp/ptp_private.h | 2 +-
drivers/s390/crypto/zcrypt_error.h | 2 +
drivers/scsi/NCR5380.c | 6 +-
drivers/scsi/atari_scsi.c | 6 +-
drivers/scsi/csiostor/csio_lnode.c | 15 +--
drivers/scsi/iscsi_tcp.c | 8 ++
drivers/scsi/lpfc/lpfc_els.c | 2 +-
drivers/scsi/lpfc/lpfc_hbadisc.c | 7 +-
drivers/scsi/lpfc/lpfc_nportdisc.c | 4 +-
drivers/scsi/lpfc/lpfc_sli.c | 15 ++-
drivers/scsi/mac_scsi.c | 2 +-
drivers/scsi/mpt3sas/mpt3sas_ctl.c | 3 +-
drivers/scsi/pm8001/pm80xx_hwi.c | 2 +
drivers/scsi/scsi_debug.c | 5 +
drivers/scsi/scsi_trace.c | 11 ++-
drivers/scsi/sun3_scsi.c | 4 +-
drivers/scsi/ufs/ufshcd.c | 21 +++--
drivers/spi/spi-fsl-spi.c | 5 +-
drivers/target/iscsi/iscsi_target.c | 10 +-
drivers/target/iscsi/iscsi_target_auth.c | 2 +-
drivers/tty/serial/atmel_serial.c | 43 ++++-----
drivers/vhost/vsock.c | 4 +-
fs/ext4/inode.c | 8 +-
fs/f2fs/namei.c | 15 ++-
fs/f2fs/super.c | 20 ++--
fs/jbd2/commit.c | 4 +-
fs/ocfs2/acl.c | 4 +-
fs/quota/dquot.c | 29 +++---
fs/readdir.c | 40 ++++++++
fs/userfaultfd.c | 18 ++--
include/linux/hrtimer.h | 14 ++-
include/linux/libfdt_env.h | 3 +
include/linux/posix-clock.h | 19 ++--
include/linux/quota.h | 2 +-
include/linux/rculist_nulls.h | 37 ++++++++
include/linux/skbuff.h | 6 +-
include/net/dst.h | 11 ++-
include/net/dst_ops.h | 3 +-
include/net/inet_hashtables.h | 12 ++-
include/net/sock.h | 5 +
include/scsi/iscsi_proto.h | 1 +
kernel/sysctl.c | 2 +-
kernel/time/hrtimer.c | 11 ++-
kernel/time/posix-clock.c | 31 +++----
lib/dma-debug.c | 1 +
net/bridge/br_netfilter_hooks.c | 3 +
net/bridge/br_nf_core.c | 3 +-
net/bridge/netfilter/ebtables.c | 33 ++++---
net/core/sysctl_net_core.c | 2 +
net/decnet/dn_route.c | 6 +-
net/ipv4/icmp.c | 11 ++-
net/ipv4/inet_connection_sock.c | 2 +-
net/ipv4/inet_diag.c | 3 +-
net/ipv4/inet_hashtables.c | 18 ++--
net/ipv4/inetpeer.c | 12 ++-
net/ipv4/ip_tunnel.c | 2 +-
net/ipv4/ip_vti.c | 2 +-
net/ipv4/route.c | 9 +-
net/ipv4/tcp_ipv4.c | 7 +-
net/ipv4/tcp_output.c | 8 ++
net/ipv4/udp.c | 2 +-
net/ipv4/xfrm4_policy.c | 5 +-
net/ipv6/inet6_connection_sock.c | 2 +-
net/ipv6/inet6_hashtables.c | 3 +-
net/ipv6/ip6_gre.c | 2 +-
net/ipv6/ip6_tunnel.c | 4 +-
net/ipv6/ip6_vti.c | 2 +-
net/ipv6/route.c | 22 +++--
net/ipv6/sit.c | 2 +-
net/ipv6/xfrm6_policy.c | 5 +-
net/netfilter/ipvs/ip_vs_xmit.c | 2 +-
net/netfilter/nf_queue.c | 2 +-
net/sctp/transport.c | 2 +-
scripts/kallsyms.c | 2 +
security/apparmor/label.c | 12 ++-
sound/pci/hda/hda_controller.c | 2 +-
tools/perf/builtin-script.c | 2 +-
tools/perf/util/perf_regs.h | 2 +-
tools/perf/util/strbuf.c | 1 -
114 files changed, 718 insertions(+), 361 deletions(-)
From: Kaike Wan <kaike.wan(a)intel.com>
When a TID RDMA ACK to RESYNC request is received, the flow PSNs for
pending TID RDMA WRITE segments will be adjusted with the next flow
generation number, based on the resync_psn value extracted from the
flow PSN of the TID RDMA ACK packet. The resync_psn value indicates
the last flow PSN for which a TID RDMA WRITE DATA packet has been
received by the responder and the requester should resend TID RDMA
WRITE DATA packets, starting from the next flow PSN. However, if
resync_psn points to the last flow PSN for a segment and the next
segment flow PSN starts with a new generation number, use of the
old resync_psn to adjust the flow PSN for the next segment will
lead to miscalculation, resulting in WARN_ON and sge rewinding
errors:
[2419460.492485] WARNING: CPU: 4 PID: 146961 at /nfs/site/home/phcvs2/gitrepo/ifs-all/components/Drivers/tmp/rpmbuild/BUILD/ifs-kernel-updates-3.10.0_957.el7.x86_64/hfi1/tid_rdma.c:4764 hfi1_rc_rcv_tid_rdma_ack+0x8f6/0xa90 [hfi1]
[2419460.514565] Modules linked in: ib_ipoib(OE) hfi1(OE) rdmavt(OE) rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfsv3 nfs_acl nfs lockd grace fscache iTCO_wdt iTCO_vendor_support skx_edac intel_powerclamp coretemp intel_rapl iosf_mbi kvm irqbypass crc32_pclmul ghash_clmulni_intel ib_isert iscsi_target_mod target_core_mod aesni_intel lrw gf128mul glue_helper ablk_helper cryptd rpcrdma sunrpc opa_vnic ast ttm ib_iser libiscsi drm_kms_helper scsi_transport_iscsi ipmi_ssif syscopyarea sysfillrect sysimgblt fb_sys_fops drm joydev ipmi_si pcspkr sg drm_panel_orientation_quirks ipmi_devintf lpc_ich i2c_i801 ipmi_msghandler wmi rdma_ucm ib_ucm ib_uverbs acpi_cpufreq acpi_power_meter ib_umad rdma_cm ib_cm iw_cm ip_tables ext4 mbcache jbd2 sd_mod crc_t10dif crct10dif_generic crct10dif_pclmul i2c_algo_bit crct10dif_common
[2419460.594432] crc32c_intel e1000e ib_core ahci libahci ptp libata pps_core nfit libnvdimm [last unloaded: rdmavt]
[2419460.605645] CPU: 4 PID: 146961 Comm: kworker/4:0H Kdump: loaded Tainted: G W OE ------------ 3.10.0-957.el7.x86_64 #1
[2419460.619424] Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.0X.02.0117.040420182310 04/04/2018
[2419460.631062] Workqueue: hfi0_0 _hfi1_do_tid_send [hfi1]
[2419460.637423] Call Trace:
[2419460.641044] <IRQ> [<ffffffff9e361dc1>] dump_stack+0x19/0x1b
[2419460.647980] [<ffffffff9dc97648>] __warn+0xd8/0x100
[2419460.654023] [<ffffffff9dc9778d>] warn_slowpath_null+0x1d/0x20
[2419460.661025] [<ffffffffc05d28c6>] hfi1_rc_rcv_tid_rdma_ack+0x8f6/0xa90 [hfi1]
[2419460.669333] [<ffffffffc05c21cc>] hfi1_kdeth_eager_rcv+0x1dc/0x210 [hfi1]
[2419460.677295] [<ffffffffc05c23ef>] ? hfi1_kdeth_expected_rcv+0x1ef/0x210 [hfi1]
[2419460.685693] [<ffffffffc0574f15>] kdeth_process_eager+0x35/0x90 [hfi1]
[2419460.693394] [<ffffffffc0575b5a>] handle_receive_interrupt_nodma_rtail+0x17a/0x2b0 [hfi1]
[2419460.702745] [<ffffffffc056a623>] receive_context_interrupt+0x23/0x40 [hfi1]
[2419460.710963] [<ffffffff9dd4a294>] __handle_irq_event_percpu+0x44/0x1c0
[2419460.718659] [<ffffffff9dd4a442>] handle_irq_event_percpu+0x32/0x80
[2419460.726086] [<ffffffff9dd4a4cc>] handle_irq_event+0x3c/0x60
[2419460.732903] [<ffffffff9dd4d27f>] handle_edge_irq+0x7f/0x150
[2419460.739710] [<ffffffff9dc2e554>] handle_irq+0xe4/0x1a0
[2419460.746091] [<ffffffff9e3795dd>] do_IRQ+0x4d/0xf0
[2419460.752040] [<ffffffff9e36b362>] common_interrupt+0x162/0x162
[2419460.759029] <EOI> [<ffffffff9dfa0f79>] ? swiotlb_map_page+0x49/0x150
[2419460.766758] [<ffffffffc05c2ed1>] hfi1_verbs_send_dma+0x291/0xb70 [hfi1]
[2419460.774637] [<ffffffffc05c2c40>] ? hfi1_wait_kmem+0xf0/0xf0 [hfi1]
[2419460.782080] [<ffffffffc05c3f26>] hfi1_verbs_send+0x126/0x2b0 [hfi1]
[2419460.789606] [<ffffffffc05ce683>] _hfi1_do_tid_send+0x1d3/0x320 [hfi1]
[2419460.797298] [<ffffffff9dcb9d4f>] process_one_work+0x17f/0x440
[2419460.804292] [<ffffffff9dcbade6>] worker_thread+0x126/0x3c0
[2419460.811025] [<ffffffff9dcbacc0>] ? manage_workers.isra.25+0x2a0/0x2a0
[2419460.818710] [<ffffffff9dcc1c31>] kthread+0xd1/0xe0
[2419460.824751] [<ffffffff9dcc1b60>] ? insert_kthread_work+0x40/0x40
[2419460.832013] [<ffffffff9e374c1d>] ret_from_fork_nospec_begin+0x7/0x21
[2419460.839611] [<ffffffff9dcc1b60>] ? insert_kthread_work+0x40/0x40
This patch fixes the issue by adjusting the resync_psn first if the flow
generation has been advanced for a pending segment.
Fixes: 9e93e967f7b4 ("IB/hfi1: Add a function to receive TID RDMA ACK packet")
Cc: <stable(a)vger.kernel.org>
Reviewed-by: Mike Marciniszyn <mike.marciniszyn(a)intel.com>
Signed-off-by: Kaike Wan <kaike.wan(a)intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro(a)intel.com>
---
drivers/infiniband/hw/hfi1/tid_rdma.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/infiniband/hw/hfi1/tid_rdma.c b/drivers/infiniband/hw/hfi1/tid_rdma.c
index e53f542..8a2e0d9 100644
--- a/drivers/infiniband/hw/hfi1/tid_rdma.c
+++ b/drivers/infiniband/hw/hfi1/tid_rdma.c
@@ -4633,6 +4633,15 @@ void hfi1_rc_rcv_tid_rdma_ack(struct hfi1_packet *packet)
*/
fpsn = full_flow_psn(flow, flow->flow_state.spsn);
req->r_ack_psn = psn;
+ /*
+ * If resync_psn points to the last flow PSN for a
+ * segment and the new segment (likely from a new
+ * request) starts with a new generation number, we
+ * need to adjust resync_psn accordingly.
+ */
+ if (flow->flow_state.generation !=
+ (resync_psn >> HFI1_KDETH_BTH_SEQ_SHIFT))
+ resync_psn = mask_psn(fpsn - 1);
flow->resync_npkts +=
delta_psn(mask_psn(resync_psn + 1), fpsn);
/*