Skip to contentSkip to conversation

Linux 6.1.72

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jan 10, 2024 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.1.72 kernel.

All users of the 6.1 kernel series must upgrade.

The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 MAINTAINERS                                                                   |    2 
 Makefile                                                                      |    2 
 arch/Kconfig                                                                  |    3 
 arch/arm/mach-sunxi/mc_smp.c                                                  |    4 
 arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi                                    |   24 
 arch/arm64/boot/dts/qcom/sdm845-db845c.dts                                    |    4 
 arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi                                |    6 
 arch/arm64/boot/dts/qcom/sdm845-mtp.dts                                       |    6 
 arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi                           |    6 
 arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts                             |    6 
 arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi                         |    6 
 arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium.dts                          |    2 
 arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts                            |    6 
 arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts                          |    2 
 arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts                              |    2 
 arch/s390/kernel/perf_cpum_cf.c                                               |   35 
 arch/s390/mm/vmem.c                                                           |    8 
 arch/x86/events/intel/core.c                                                  |    7 
 arch/x86/kernel/kprobes/core.c                                                |    3 
 arch/x86/net/bpf_jit_comp.c                                                   |  150 +--
 block/bdev.c                                                                  |    2 
 block/blk-mq.c                                                                |   75 -
 block/fops.c                                                                  |   21 
 drivers/base/memory.c                                                         |   18 
 drivers/firewire/ohci.c                                                       |   51 +
 drivers/firmware/arm_scmi/perf.c                                              |    6 
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c                                    |   11 
 drivers/gpu/drm/amd/display/dc/dml/dcn20/dcn20_fpu.c                          |  110 ++
 drivers/gpu/drm/bridge/ti-sn65dsi86.c                                         |    4 
 drivers/gpu/drm/i915/display/intel_dp.c                                       |    2 
 drivers/gpu/drm/mgag200/mgag200_drv.h                                         |    5 
 drivers/gpu/drm/mgag200/mgag200_g200er.c                                      |    5 
 drivers/gpu/drm/mgag200/mgag200_g200ev.c                                      |    5 
 drivers/gpu/drm/mgag200/mgag200_g200se.c                                      |    5 
 drivers/gpu/drm/mgag200/mgag200_mode.c                                        |   10 
 drivers/i2c/i2c-core.h                                                        |    4 
 drivers/interconnect/qcom/sm8250.c                                            |    1 
 drivers/media/platform/qcom/camss/camss-csid-gen2.c                           |   68 +
 drivers/media/platform/qcom/camss/camss-csid.c                                |   44 -
 drivers/media/platform/qcom/camss/camss-csid.h                                |   11 
 drivers/mmc/core/block.c                                                      |    7 
 drivers/mmc/core/host.c                                                       |    1 
 drivers/mmc/host/meson-mx-sdhc-mmc.c                                          |   26 
 drivers/mmc/host/sdhci-sprd.c                                                 |   10 
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                                     |    4 
 drivers/net/ethernet/broadcom/genet/bcmgenet.c                                |    4 
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c                              |    7 
 drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c                          |   18 
 drivers/net/ethernet/intel/i40e/i40e_main.c                                   |   11 
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c                            |   34 
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h                            |    3 
 drivers/net/ethernet/intel/ice/ice_main.c                                     |   12 
 drivers/net/ethernet/intel/igc/igc.h                                          |    1 
 drivers/net/ethernet/intel/igc/igc_ethtool.c                                  |   42 
 drivers/net/ethernet/intel/igc/igc_tsn.c                                      |    2 
 drivers/net/ethernet/marvell/octeontx2/af/cgx.c                               |   35 
 drivers/net/ethernet/marvell/octeontx2/af/cgx.h                               |    6 
 drivers/net/ethernet/marvell/octeontx2/af/lmac_common.h                       |    5 
 drivers/net/ethernet/marvell/octeontx2/af/npc.h                               |    4 
 drivers/net/ethernet/marvell/octeontx2/af/rpm.c                               |   11 
 drivers/net/ethernet/marvell/octeontx2/af/rvu.h                               |    3 
 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c                           |   43 
 drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c                       |    2 
 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c                           |  120 --
 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_hash.c                      |    4 
 drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c                             |    6 
 drivers/net/ethernet/mellanox/mlx5/core/pci_irq.h                             |    3 
 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c                      |    9 
 drivers/net/ethernet/qlogic/qla3xxx.c                                         |    2 
 drivers/net/ethernet/realtek/r8169_main.c                                     |    2 
 drivers/net/ethernet/renesas/ravb_main.c                                      |   65 -
 drivers/net/ethernet/sfc/rx_common.c                                          |    4 
 drivers/net/gtp.c                                                             |    4 
 drivers/net/usb/ax88172a.c                                                    |    4 
 drivers/net/wireless/intel/iwlwifi/iwl-prph.h                                 |    4 
 drivers/net/wireless/intel/iwlwifi/pcie/internal.h                            |    4 
 drivers/net/wireless/intel/iwlwifi/pcie/rx.c                                  |    8 
 drivers/net/wireless/intel/iwlwifi/pcie/trans.c                               |   17 
 drivers/pci/pci.c                                                             |    6 
 drivers/pci/pci.h                                                             |    2 
 drivers/pci/pcie/aspm.c                                                       |   19 
 drivers/video/fbdev/imsttfb.c                                                 |    6 
 fs/9p/cache.c                                                                 |    2 
 fs/afs/internal.h                                                             |    2 
 fs/btrfs/delalloc-space.c                                                     |    2 
 fs/btrfs/file-item.c                                                          |    2 
 fs/btrfs/file.c                                                               |    2 
 fs/btrfs/inode.c                                                              |   16 
 fs/btrfs/ordered-data.c                                                       |    7 
 fs/btrfs/ordered-data.h                                                       |    2 
 fs/btrfs/qgroup.c                                                             |   25 
 fs/btrfs/qgroup.h                                                             |    4 
 fs/cachefiles/namei.c                                                         |    2 
 fs/ceph/cache.c                                                               |    2 
 fs/ext4/move_extent.c                                                         |   48 -
 fs/f2fs/checkpoint.c                                                          |    2 
 fs/f2fs/compress.c                                                            |   15 
 fs/f2fs/data.c                                                                |   12 
 fs/f2fs/dir.c                                                                 |    2 
 fs/f2fs/f2fs.h                                                                |   35 
 fs/f2fs/file.c                                                                |   11 
 fs/f2fs/inode.c                                                               |   18 
 fs/f2fs/node.h                                                                |   20 
 fs/f2fs/super.c                                                               |   26 
 fs/f2fs/sysfs.c                                                               |    2 
 fs/inode.c                                                                    |    2 
 fs/nfs/fscache.c                                                              |    3 
 fs/smb/client/cifsglob.h                                                      |    1 
 fs/smb/client/connect.c                                                       |    7 
 fs/smb/client/fscache.c                                                       |    2 
 fs/smb/client/inode.c                                                         |    2 
 fs/smb/client/smb2file.c                                                      |    2 
 fs/smb/client/smb2misc.c                                                      |    2 
 fs/smb/client/smb2ops.c                                                       |   48 -
 fs/smb/client/smb2pdu.c                                                       |   16 
 fs/smb/client/smb2pdu.h                                                       |    2 
 fs/smb/common/smb2pdu.h                                                       |   42 
 fs/smb/server/smb2ops.c                                                       |    8 
 fs/smb/server/smb2pdu.c                                                       |    8 
 fs/splice.c                                                                   |   34 
 include/linux/bpf.h                                                           |   13 
 include/linux/bpf_verifier.h                                                  |    1 
 include/linux/f2fs_fs.h                                                       |    9 
 include/linux/fs.h                                                            |    1 
 include/linux/group_cpus.h                                                    |   14 
 include/linux/net.h                                                           |    1 
 include/linux/pagemap.h                                                       |   33 
 include/linux/skmsg.h                                                         |    1 
 include/linux/socket.h                                                        |    3 
 include/linux/splice.h                                                        |    1 
 include/linux/udp.h                                                           |   69 -
 include/net/af_unix.h                                                         |    1 
 include/net/inet_common.h                                                     |    1 
 include/net/ip.h                                                              |    2 
 include/net/netfilter/nf_conntrack_act_ct.h                                   |   30 
 include/net/netfilter/nf_flow_table.h                                         |   21 
 include/net/netfilter/nf_tables_ipv4.h                                        |    6 
 include/net/sock.h                                                            |   23 
 include/net/tcp.h                                                             |    1 
 include/net/udp.h                                                             |    1 
 include/net/udp_tunnel.h                                                      |    9 
 io_uring/net.c                                                                |    2 
 kernel/bpf/core.c                                                             |   25 
 kernel/bpf/trampoline.c                                                       |    4 
 kernel/bpf/verifier.c                                                         |  162 ++-
 kernel/cpu.c                                                                  |   42 
 kernel/irq/affinity.c                                                         |  405 ---------
 kernel/rcu/srcutree.c                                                         |   31 
 kernel/trace/ring_buffer.c                                                    |    4 
 lib/Makefile                                                                  |    2 
 lib/group_cpus.c                                                              |  438 ++++++++++
 mm/filemap.c                                                                  |    2 
 mm/huge_memory.c                                                              |    3 
 mm/internal.h                                                                 |   11 
 mm/khugepaged.c                                                               |   22 
 mm/memory-failure.c                                                           |    9 
 mm/memory.c                                                                   |    4 
 mm/memory_hotplug.c                                                           |   15 
 mm/migrate.c                                                                  |    3 
 mm/page-writeback.c                                                           |    2 
 mm/truncate.c                                                                 |    6 
 mm/vmscan.c                                                                   |    8 
 net/can/j1939/socket.c                                                        |   10 
 net/can/raw.c                                                                 |    1 
 net/core/skbuff.c                                                             |   10 
 net/core/skmsg.c                                                              |    2 
 net/core/sock.c                                                               |   16 
 net/core/sock_map.c                                                           |    2 
 net/dns_resolver/dns_key.c                                                    |   19 
 net/ethtool/netlink.c                                                         |    2 
 net/ipv4/af_inet.c                                                            |   18 
 net/ipv4/ip_output.c                                                          |    4 
 net/ipv4/ip_sockglue.c                                                        |    2 
 net/ipv4/tcp.c                                                                |   20 
 net/ipv4/tcp_ipv4.c                                                           |    1 
 net/ipv4/udp.c                                                                |  106 --
 net/ipv4/udp_offload.c                                                        |    4 
 net/ipv4/udp_tunnel_core.c                                                    |    2 
 net/ipv4/xfrm4_input.c                                                        |    4 
 net/ipv6/af_inet6.c                                                           |    1 
 net/ipv6/ip6_output.c                                                         |    4 
 net/ipv6/ping.c                                                               |    2 
 net/ipv6/raw.c                                                                |    2 
 net/ipv6/tcp_ipv6.c                                                           |    1 
 net/ipv6/udp.c                                                                |   38 
 net/ipv6/xfrm6_input.c                                                        |    4 
 net/l2tp/l2tp_core.c                                                          |    6 
 net/mptcp/subflow.c                                                           |   13 
 net/netfilter/ipvs/ip_vs_xmit.c                                               |    2 
 net/netfilter/nf_flow_table_core.c                                            |   13 
 net/netfilter/nf_flow_table_inet.c                                            |    2 
 net/netfilter/nf_flow_table_ip.c                                              |    4 
 net/netfilter/nf_flow_table_offload.c                                         |   18 
 net/netfilter/nf_log_syslog.c                                                 |    2 
 net/netfilter/nf_tables_core.c                                                |    2 
 net/netfilter/nft_immediate.c                                                 |    2 
 net/netfilter/xt_length.c                                                     |    2 
 net/nfc/llcp_core.c                                                           |   39 
 net/openvswitch/conntrack.c                                                   |    2 
 net/sched/act_ct.c                                                            |  165 ++-
 net/sched/em_text.c                                                           |    4 
 net/smc/smc_diag.c                                                            |    3 
 net/socket.c                                                                  |   29 
 net/unix/af_unix.c                                                            |    2 
 net/unix/unix_bpf.c                                                           |    5 
 sound/pci/hda/patch_realtek.c                                                 |    4 
 sound/soc/fsl/fsl_rpmsg.c                                                     |   10 
 sound/soc/mediatek/mt8186/mt8186-dai-adda.c                                   |    2 
 sound/soc/meson/g12a-toacodec.c                                               |    5 
 sound/soc/meson/g12a-tohdmitx.c                                               |    8 
 tools/testing/selftests/bpf/verifier/ld_imm64.c                               |    8 
 tools/testing/selftests/drivers/net/bonding/bond-arp-interval-causes-panic.sh |    6 
 tools/testing/selftests/net/mptcp/mptcp_join.sh                               |   14 
 tools/testing/selftests/vm/memfd_secret.c                                     |    3 
 214 files changed, 2400 insertions(+), 1451 deletions(-)

Aabish Malik (1):
ALSA: hda/realtek: enable SND_PCI_QUIRK for hp pavilion 14-ec1xxx series

Adrian Cinal (1):
net: bcmgenet: Fix FCS generation for fragmented skbuffs

Alex Deucher (2):
drm/amdgpu: skip gpu_info fw loading on navi12 drm/amd/display: add nv12 bounding box

Amit Pundir (1):
Revert "interconnect: qcom: sm8250: Enable sync_state"

Andrii Nakryiko (6):
bpf: decouple prune and jump points
bpf: remove unnecessary prune and jump points
bpf: Remove unused insn_cnt argument from visit_[func_call_]insn()
bpf: clean up visit_insn()'s instruction processing
bpf: handle ldimm64 properly in check_cfg()
bpf: fix precision backtracking instruction iteration

Andrii Staikov (1):
i40e: Restore VF MSI-X state during PCI reset

Andy Chi (1):
ALSA: hda/realtek: fix mute/micmute LEDs for a HP ZBook

Benjamin Bara (1):
i2c: core: Fix atomic xfer check for non-preempt config

Bjorn Helgaas (1):
Revert "PCI/ASPM: Remove pcie_aspm_pm_state_change()"

Boris Burkov (1):
btrfs: fix qgroup_free_reserved_data int overflow

Bryan O'Donoghue (2):
media: qcom: camss: Fix set CSI2_RX_CFG1_VC_MODE when VC is greater than 3
media: qcom: camss: Comment CSID dt_id field

Chancel Liu (1):
ASoC: fsl_rpmsg: Fix error handler with pm_runtime_enable

Chao Yu (2):
f2fs: clean up i_compress_flag and i_compress_level usage
f2fs: compress: fix to assign compress_level for lz4 correctly

Chen Ni (1):
asix: Add check for usbnet_get_endpoints

Christoph Hellwig (4):
blk-mq: make sure active queue usage is held for bio_integrity_prep()
filemap: add a per-mapping stable writes flag
block: update the stable_writes flag in bdev_add
btrfs: mark the len field in struct btrfs_ordered_sum as unsigned

Claudiu Beznea (1):
net: ravb: Wait for operating mode to be applied

Dan Carpenter (1):
fbdev: imsttfb: fix double free in probe()

David Heidelberg (1):
arm64: dts: qcom: sdm845: Fix PSCI power domain names

David Howells (6):
net: Declare MSG_SPLICE_PAGES internal sendmsg() flag
udp: Convert udp_sendpage() to use MSG_SPLICE_PAGES
splice, net: Add a splice_eof op to file-ops and socket-ops ipv4, ipv6: Use splice_eof() to flush
mm: merge folio_has_private()/filemap_release_folio() call pairs mm, netfs, fscache: stop read optimisation when folio removed from pagecache

David Thompson (1):
mlxbf_gige: fix receive packet race condition

Dinghao Liu (1):
net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues

Douglas Anderson (1):

      drm/bridge: ti-sn65dsi86: Never store more than msg->size bytes in AUX xfer

Edward Adam Davis (1):
keys, dns: Fix missing size check of V1 server-list header

Eric Dumazet (9):

      net: annotate data-races around sk->sk_tsflags
      net: annotate data-races around sk->sk_bind_phc
      udp: introduce udp->udp_flags
      udp: move udp->no_check6_tx to udp->udp_flags
      udp: move udp->no_check6_rx to udp->udp_flags
      udp: move udp->gro_enabled to udp->udp_flags
      udp: move udp->accept_udp_{l4|fraglist} to udp->udp_flags
      udp: lockless UDP_ENCAP_L2TPINUDP / UDP_GRO
      udp: annotate data-races around udp->encap_type

Eugen Hristev (1):
ASoC: mediatek: mt8186: fix AUD_PAD_TOP register and offset

Frederic Weisbecker (1):
srcu: Fix callbacks acceleration mishandling

Geert Uytterhoeven (1):
mmc: core: Cancel delayed work before releasing host

Geliang Tang (1):
selftests: mptcp: set FAILING_LINKS in run_tests

Greg Kroah-Hartman (1):

      Linux 6.1.72

Hangbin Liu (1):
selftests: bonding: do not set port down when adding to bond

Hangyu Hua (1):
net: sched: em_text: fix possible memory leak in em_text_destroy()

Hariprasad Kelam (1):
octeontx2-af: Fix pause frame configuration

Heiko Carstens (1):
s390/mm: add missing arch_set_page_dat() call to vmem_crst_alloc()

Helge Deller (1):
fbdev: imsttfb: Release framebuffer and dealloc cmap on error path

Ingo Molnar (1):
genirq/affinity: Only build SMP-only helper functions on SMP kernels

Ioana Ciornei (2):
net: dpaa2-eth: rearrange variable in dpaa2_eth_get_ethtool_stats
dpaa2-eth: recycle the RX buffer only after all processing done

Jaegeuk Kim (2):
f2fs: assign default compression level
f2fs: set the default compress_level on ioctl

Jakub Kicinski (1):
ethtool: don't propagate EOPNOTSUPP from dumps

Jiajun Xie (1):
mm: fix unmap_mapping_range high bits shift bug

Jinghao Jia (1):
x86/kprobes: fix incorrect return address calculation in kprobe_emulate_call_indirect

Jocelyn Falempe (1):
drm/mgag200: Fix gamma lut not initialized for G200ER, G200EV, G200SE

Johannes Berg (1):
wifi: iwlwifi: pcie: don't synchronize IRQs from IRQ

John Fastabend (2):
bpf, sockmap: af_unix stream sockets need to hold ref for pair sock
bpf: syzkaller found null ptr deref in unix_bpf proto add

Jorge Ramirez-Ortiz (1):
mmc: rpmb: fixes pause retune on all RPMB partitions.

Jörn-Thorben Hinz (1):
net: Implement missing getsockopt(SO_TIMESTAMPING_NEW)

Kai-Heng Feng (1):
r8169: Fix PCI error on system resume

Katarzyna Wieczerzycka (1):
ice: Fix link_down_on_close message

Ke Xiao (1):
i40e: fix use-after-free in i40e_aqc_add_filters()

Kees Cook (1):
smb3: Replace smb2pdu 1-element arrays with flex-arrays

Khaled Almahallawy (1):
drm/i915/dp: Fix passing the correct DPCD_REV for drm_dp_set_phy_test_pattern

Krzysztof Kozlowski (1):
arm64: dts: qcom: sdm845: align RPMh regulator nodes with bindings

Kurt Kanzenbach (3):
igc: Report VLAN EtherType matching back to user
igc: Check VLAN TCI mask
igc: Check VLAN EtherType mask

Leon Hwang (1):
bpf, x64: Fix tailcall infinite loop

Marc Dionne (1):
net: Save and restore msg_namelen in sock_sendmsg

Marc Kleine-Budde (1):
can: raw: add support for SO_MARK

Mark Brown (4):
ASoC: meson: g12a-toacodec: Validate written enum values
ASoC: meson: g12a-tohdmitx: Validate written enum values
ASoC: meson: g12a-toacodec: Fix event generation
ASoC: meson: g12a-tohdmitx: Fix event generation for S/PDIF mux

Mathieu Desnoyers (1):
ring-buffer: Fix 32-bit rb_time_read() race with rb_time_cmpxchg()

Menglong Dong (1):
bpf, x86: save/restore regs with BPF_DW size

Michael Chan (1):
bnxt_en: Remove mis-applied code from bnxt_cfg_ntp_filters()

Michael Ellerman (1):
cpu/SMT: Create topology_smt_thread_allowed()

Milen Mitkov (1):
media: camss: sm8250: Virtual channels for CSID

Ming Lei (6):
genirq/affinity: Remove the 'firstvec' parameter from irq_build_affinity_masks genirq/affinity: Pass affinity managed mask array to irq_build_affinity_masks genirq/affinity: Don't pass irq_affinity_desc array to irq_build_affinity_masks genirq/affinity: Rename irq_build_affinity_masks as group_cpus_evenly genirq/affinity: Move group_cpus_evenly() into lib/ lib/group_cpus.c: avoid acquiring cpu hotplug lock in group_cpus_evenly

Muhammad Usama Anjum (1):
selftests: secretmem: floor the memory size to the multiple of page_size

Naveen Mamindlapalli (2):
octeontx2-af: Always configure NIX TX link credits based on max frame size
octeontx2-af: Re-enable MAC TX in otx2_stop processing

Ngai-Mint Kwan (1):
ice: Shut down VSI with "link-down-on-close" enabled

Pablo Neira Ayuso (3):
netfilter: nf_tables: set transport offset from mac header for netdev/egress
netfilter: nft_immediate: drop chain reference counter on error
netfilter: flowtable: GC pushes back packets to classic path

Paolo Abeni (2):
mptcp: prevent tcp diag from closing listener subflows
selftests: mptcp: fix fastclose with csum failure

Paolo Bonzini (1):
KVM: x86/pmu: fix masking logic for MSR_CORE_PERF_GLOBAL_CTRL

Paul Blakey (1):
net/sched: act_ct: Fix promotion of offloaded unreplied tuple

Paulo Alcantara (1):
smb: client: fix missing mode bits for SMB symlinks

Pu Lehui (1):
bpf, x86: Simplify the parsing logic of structure parameters

Rahul Rameshbabu (1):
net/mlx5: Increase size of irq name buffer

Rakesh Babu Saladi (1):
octeontx2-af: Support variable number of lmacs

Rodrigo Cataldo (1):
igc: Fix hicredit calculation

Rotem Saado (1):
wifi: iwlwifi: yoyo: swap cdb and jacket bits values

Sarthak Kukreti (1):
block: Don't invalidate pagecache for invalid falloc modes

Shyam Prasad N (2):
cifs: cifs_chan_is_iface_active should be called with chan_lock held
cifs: do not depend on release_iface for maintaining iface_list

Siddh Raman Pant (1):

      nfc: llcp_core: Hold a ref to llcp_local->dev when holding a ref to llcp_local

Siddhesh Dharme (1):
ALSA: hda/realtek: Fix mute and mic-mute LEDs for HP ProBook 440 G6

Stefan Wahren (1):
ARM: sun9i: smp: Fix array-index-out-of-bounds read in sunxi_mc_smp_init

Sudeep Holla (1):
firmware: arm_scmi: Fix frequency truncation by promoting multiplier type

Sudheer Mogilappagari (1):
i40e: Fix filter input checks to prevent config with invalid values

Suman Ghosh (1):
octeontx2-af: Fix marking couple of structure as __packed

Sumanth Korikkar (2):
mm/memory_hotplug: add missing mem_hotplug_lock mm/memory_hotplug: fix error handling in add_memory_resource()

Takashi Iwai (1):
ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7

Takashi Sakamoto (1):

      firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and ASM108x/VT630x PCIe cards

Thomas Gleixner (1):
cpu/SMT: Make SMT control more robust against enumeration failures

Thomas Lange (1):
net: Implement missing SO_TIMESTAMPING_NEW cmsg support

Thomas Richter (1):
s390/cpumf: support user space events for counting

Vadim Fedorenko (1):
net-timestamp: extend SOF_TIMESTAMPING_OPT_ID to HW timestamps

Vishal Moola (Oracle) (3):
ext4: convert move_extent_per_page() to use folios
khugepage: replace try_to_release_page() with filemap_release_folio()
memory-failure: convert truncate_error_page() to use folio

Vlad Buslov (6):
netfilter: flowtable: allow unidirectional rules
netfilter: flowtable: cache info of last offload net/sched: act_ct: offload UDP NEW connections net/sched: act_ct: Take per-cb reference to tcf_ct_flow_table net/sched: act_ct: additional checks for outdated flows net/sched: act_ct: Always fill offloading tuple iifidx

Wen Gu (1):
net/smc: fix invalid link access in dumping SMC-R connections

Wenchao Chen (1):
mmc: sdhci-sprd: Fix eMMC init failure after hw reset

Xin Long (2):
netfilter: use skb_ip_totlen and iph_totlen
net: sched: call tcf_ct_params_free to free params in tcf_ct_init

Yangtao Li (1):
f2fs: convert to use bitmap API

Yonghong Song (2):
bpf: Support new 32bit offset jmp instruction
bpf: Fix a verifier bug due to incorrect branch offset comparison with cpu=v4

Zhipeng Lu (1):
sfc: fix a double-free bug in efx_probe_filters

Ziyang Huang (1):
mmc: meson-mx-sdhc: Fix initialization frozen issue

author maintainer
#1 lore raw
MAINTAINERS +2 -0
index 07a9c274c0e2..13d1078808bb 100644
@@ -10803,6 +10803,8 @@ L:	[email protected]
 S:	Maintained
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
 F:	kernel/irq/
+F:	include/linux/group_cpus.h
+F:	lib/group_cpus.c
 
 IRQCHIP DRIVERS
 M:	Thomas Gleixner <[email protected]>
Makefile +1 -1
index 2840e36fd559..bad3387b3251 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 1
-SUBLEVEL = 71
+SUBLEVEL = 72
 EXTRAVERSION =
 NAME = Curry Ramen
 
arch/Kconfig +3 -0
index b60d271bf76a..14273a6203df 100644
@@ -34,6 +34,9 @@ config ARCH_HAS_SUBPAGE_FAULTS
 config HOTPLUG_SMT
 	bool
 
+config SMT_NUM_THREADS_DYNAMIC
+	bool
+
 config GENERIC_ENTRY
        bool
 
arch/arm/mach-sunxi/mc_smp.c +2 -2
index 26cbce135338..b2f5f4f28705 100644
@@ -808,12 +808,12 @@ static int __init sunxi_mc_smp_init(void)
 			break;
 	}
 
-	is_a83t = sunxi_mc_smp_data[i].is_a83t;
-
 	of_node_put(node);
 	if (ret)
 		return -ENODEV;
 
+	is_a83t = sunxi_mc_smp_data[i].is_a83t;
+
 	if (!sunxi_mc_smp_cpu_table_init())
 		return -EINVAL;
 
arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi +13 -11
index a5c0c788969f..43ee28db61aa 100644
@@ -150,15 +150,15 @@ &cpufreq_hw {
 };
 
 &psci {
-	/delete-node/ cpu0;
-	/delete-node/ cpu1;
-	/delete-node/ cpu2;
-	/delete-node/ cpu3;
-	/delete-node/ cpu4;
-	/delete-node/ cpu5;
-	/delete-node/ cpu6;
-	/delete-node/ cpu7;
-	/delete-node/ cpu-cluster0;
+	/delete-node/ power-domain-cpu0;
+	/delete-node/ power-domain-cpu1;
+	/delete-node/ power-domain-cpu2;
+	/delete-node/ power-domain-cpu3;
+	/delete-node/ power-domain-cpu4;
+	/delete-node/ power-domain-cpu5;
+	/delete-node/ power-domain-cpu6;
+	/delete-node/ power-domain-cpu7;
+	/delete-node/ power-domain-cluster;
 };
 
 &cpus {
@@ -351,7 +351,9 @@ flash@0 {
 
 
 &apps_rsc {
-	pm8998-rpmh-regulators {
+	/delete-property/ power-domains;
+
+	regulators-0 {
 		compatible = "qcom,pm8998-rpmh-regulators";
 		qcom,pmic-id = "a";
 
@@ -633,7 +635,7 @@ src_pp1800_lvs2: lvs2 {
 		};
 	};
 
-	pm8005-rpmh-regulators {
+	regulators-1 {
 		compatible = "qcom,pm8005-rpmh-regulators";
 		qcom,pmic-id = "c";
 
arch/arm64/boot/dts/qcom/sdm845-db845c.dts +2 -2
index c9efcb894a52..8c9ccf5b4ea4 100644
@@ -271,7 +271,7 @@ &adsp_pas {
 };
 
 &apps_rsc {
-	pm8998-rpmh-regulators {
+	regulators-0 {
 		compatible = "qcom,pm8998-rpmh-regulators";
 		qcom,pmic-id = "a";
 		vdd-s1-supply = <&vph_pwr>;
@@ -396,7 +396,7 @@ vreg_lvs2a_1p8: lvs2 {
 		};
 	};
 
-	pmi8998-rpmh-regulators {
+	regulators-1 {
 		compatible = "qcom,pmi8998-rpmh-regulators";
 		qcom,pmic-id = "b";
 
arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi +3 -3
index 20f275f8694d..e2921640880a 100644
@@ -166,7 +166,7 @@ &adsp_pas {
 };
 
 &apps_rsc {
-	pm8998-rpmh-regulators {
+	regulators-0 {
 		compatible = "qcom,pm8998-rpmh-regulators";
 		qcom,pmic-id = "a";
 
@@ -419,7 +419,7 @@ vreg_lvs2a_1p8: lvs2 {
 		};
 	};
 
-	pmi8998-rpmh-regulators {
+	regulators-1 {
 		compatible = "qcom,pmi8998-rpmh-regulators";
 		qcom,pmic-id = "b";
 
@@ -433,7 +433,7 @@ vreg_bob: bob {
 		};
 	};
 
-	pm8005-rpmh-regulators {
+	regulators-2 {
 		compatible = "qcom,pm8005-rpmh-regulators";
 		qcom,pmic-id = "c";
 
arch/arm64/boot/dts/qcom/sdm845-mtp.dts +3 -3
index 64958dee17d8..b47e333aa351 100644
@@ -117,7 +117,7 @@ &adsp_pas {
 };
 
 &apps_rsc {
-	pm8998-rpmh-regulators {
+	regulators-0 {
 		compatible = "qcom,pm8998-rpmh-regulators";
 		qcom,pmic-id = "a";
 
@@ -382,7 +382,7 @@ vreg_lvs2a_1p8: lvs2 {
 		};
 	};
 
-	pmi8998-rpmh-regulators {
+	regulators-1 {
 		compatible = "qcom,pmi8998-rpmh-regulators";
 		qcom,pmic-id = "b";
 
@@ -396,7 +396,7 @@ vreg_bob: bob {
 		};
 	};
 
-	pm8005-rpmh-regulators {
+	regulators-2 {
 		compatible = "qcom,pm8005-rpmh-regulators";
 		qcom,pmic-id = "c";
 
arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi +3 -3
index 392461c29e76..0713b774a97b 100644
@@ -144,7 +144,7 @@ &adsp_pas {
 };
 
 &apps_rsc {
-	pm8998-rpmh-regulators {
+	regulators-0 {
 		compatible = "qcom,pm8998-rpmh-regulators";
 		qcom,pmic-id = "a";
 
@@ -280,7 +280,7 @@ vreg_l28a_3p0: ldo28 {
 		};
 	};
 
-	pmi8998-rpmh-regulators {
+	regulators-1 {
 		compatible = "qcom,pmi8998-rpmh-regulators";
 		qcom,pmic-id = "b";
 
@@ -294,7 +294,7 @@ vreg_bob: bob {
 		};
 	};
 
-	pm8005-rpmh-regulators {
+	regulators-2 {
 		compatible = "qcom,pm8005-rpmh-regulators";
 		qcom,pmic-id = "c";
 
arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts +3 -3
index 83261c9bb4f2..b65c35865dab 100644
@@ -110,7 +110,7 @@ &adsp_pas {
 };
 
 &apps_rsc {
-	pm8998-rpmh-regulators {
+	regulators-0 {
 		compatible = "qcom,pm8998-rpmh-regulators";
 		qcom,pmic-id = "a";
 
@@ -375,7 +375,7 @@ vreg_lvs2a_1p8: lvs2 {
 		};
 	};
 
-	pmi8998-rpmh-regulators {
+	regulators-1 {
 		compatible = "qcom,pmi8998-rpmh-regulators";
 		qcom,pmic-id = "b";
 
@@ -389,7 +389,7 @@ vreg_bob: bob {
 		};
 	};
 
-	pm8005-rpmh-regulators {
+	regulators-2 {
 		compatible = "qcom,pm8005-rpmh-regulators";
 		qcom,pmic-id = "c";
 
arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi +3 -3
index d6918e6d1979..249a715d5aae 100644
@@ -78,7 +78,7 @@ ramoops@ffc00000 {
 };
 
 &apps_rsc {
-	pm8998-rpmh-regulators {
+	regulators-0 {
 		compatible = "qcom,pm8998-rpmh-regulators";
 		qcom,pmic-id = "a";
 
@@ -308,7 +308,7 @@ vreg_lvs2a_1p8: lvs2 {
 		};
 	};
 
-	pmi8998-rpmh-regulators {
+	regulators-1 {
 		compatible = "qcom,pmi8998-rpmh-regulators";
 		qcom,pmic-id = "b";
 
@@ -319,7 +319,7 @@ src_vreg_bob: bob {
 		};
 	};
 
-	pm8005-rpmh-regulators {
+	regulators-2 {
 		compatible = "qcom,pm8005-rpmh-regulators";
 		qcom,pmic-id = "c";
 
arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium.dts +1 -1
index 0f470cf1ed1c..6d6b3dd69947 100644
@@ -125,7 +125,7 @@ &adsp_pas {
 };
 
 &apps_rsc {
-	pm8998-rpmh-regulators {
+	regulators-0 {
 		compatible = "qcom,pm8998-rpmh-regulators";
 		qcom,pmic-id = "a";
 
arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts +3 -3
index 093b04359ec3..ffbe45a99b74 100644
@@ -143,7 +143,7 @@ vreg_s4a_1p8: vreg-s4a-1p8 {
 };
 
 &apps_rsc {
-	pm8998-rpmh-regulators {
+	regulators-0 {
 		compatible = "qcom,pm8998-rpmh-regulators";
 		qcom,pmic-id = "a";
 
@@ -343,7 +343,7 @@ vreg_lvs2a_1p8: lvs2 {
 		};
 	};
 
-	pmi8998-rpmh-regulators {
+	regulators-1 {
 		compatible = "qcom,pmi8998-rpmh-regulators";
 		qcom,pmic-id = "b";
 
@@ -355,7 +355,7 @@ vreg_bob: bob {
 		};
 	};
 
-	pm8005-rpmh-regulators {
+	regulators-2 {
 		compatible = "qcom,pm8005-rpmh-regulators";
 		qcom,pmic-id = "c";
 
arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts +1 -1
index 74f43da51fa5..48a41ace8fc5 100644
@@ -99,7 +99,7 @@ &adsp_pas {
 };
 
 &apps_rsc {
-	pm8998-rpmh-regulators {
+	regulators-0 {
 		compatible = "qcom,pm8998-rpmh-regulators";
 		qcom,pmic-id = "a";
 
arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts +1 -1
index d028a7eb364a..c169d2870bdf 100644
@@ -129,7 +129,7 @@ &adsp_pas {
 };
 
 &apps_rsc {
-	pm8998-rpmh-regulators {
+	regulators-0 {
 		compatible = "qcom,pm8998-rpmh-regulators";
 		qcom,pmic-id = "a";
 
arch/s390/kernel/perf_cpum_cf.c +24 -11
index f043a7ff220b..28fa80fd69fa 100644
@@ -2,7 +2,7 @@
 /*
  * Performance event support for s390x - CPU-measurement Counter Facility
  *
- *  Copyright IBM Corp. 2012, 2021
+ *  Copyright IBM Corp. 2012, 2022
  *  Author(s): Hendrik Brueckner <[email protected]>
  *	       Thomas Richter <[email protected]>
  */
@@ -434,6 +434,12 @@ static void cpumf_hw_inuse(void)
 	mutex_unlock(&pmc_reserve_mutex);
 }
 
+static int is_userspace_event(u64 ev)
+{
+	return cpumf_generic_events_user[PERF_COUNT_HW_CPU_CYCLES] == ev ||
+	       cpumf_generic_events_user[PERF_COUNT_HW_INSTRUCTIONS] == ev;
+}
+
 static int __hw_perf_event_init(struct perf_event *event, unsigned int type)
 {
 	struct perf_event_attr *attr = &event->attr;
@@ -456,19 +462,26 @@ static int __hw_perf_event_init(struct perf_event *event, unsigned int type)
 		if (is_sampling_event(event))	/* No sampling support */
 			return -ENOENT;
 		ev = attr->config;
-		/* Count user space (problem-state) only */
 		if (!attr->exclude_user && attr->exclude_kernel) {
-			if (ev >= ARRAY_SIZE(cpumf_generic_events_user))
-				return -EOPNOTSUPP;
-			ev = cpumf_generic_events_user[ev];
-
-		/* No support for kernel space counters only */
+			/*
+			 * Count user space (problem-state) only
+			 * Handle events 32 and 33 as 0:u and 1:u
+			 */
+			if (!is_userspace_event(ev)) {
+				if (ev >= ARRAY_SIZE(cpumf_generic_events_user))
+					return -EOPNOTSUPP;
+				ev = cpumf_generic_events_user[ev];
+			}
 		} else if (!attr->exclude_kernel && attr->exclude_user) {
+			/* No support for kernel space counters only */
 			return -EOPNOTSUPP;
-		} else {	/* Count user and kernel space */
-			if (ev >= ARRAY_SIZE(cpumf_generic_events_basic))
-				return -EOPNOTSUPP;
-			ev = cpumf_generic_events_basic[ev];
+		} else {
+			/* Count user and kernel space, incl. events 32 + 33 */
+			if (!is_userspace_event(ev)) {
+				if (ev >= ARRAY_SIZE(cpumf_generic_events_basic))
+					return -EOPNOTSUPP;
+				ev = cpumf_generic_events_basic[ev];
+			}
 		}
 		break;
 
arch/s390/mm/vmem.c +6 -2
index 9a0ce5315f36..3cbb46182066 100644
@@ -11,6 +11,7 @@
 #include <linux/list.h>
 #include <linux/hugetlb.h>
 #include <linux/slab.h>
+#include <asm/page-states.h>
 #include <asm/cacheflush.h>
 #include <asm/nospec-branch.h>
 #include <asm/pgalloc.h>
@@ -44,8 +45,11 @@ void *vmem_crst_alloc(unsigned long val)
 	unsigned long *table;
 
 	table = vmem_alloc_pages(CRST_ALLOC_ORDER);
-	if (table)
-		crst_table_init(table, val);
+	if (!table)
+		return NULL;
+	crst_table_init(table, val);
+	if (slab_is_available())
+		arch_set_page_dat(virt_to_page(table), CRST_ALLOC_ORDER);
 	return table;
 }
 
arch/x86/events/intel/core.c +6 -1
index 2fb5e1541efc..949129443b1c 100644
@@ -4033,12 +4033,17 @@ static struct perf_guest_switch_msr *intel_guest_get_msrs(int *nr, void *data)
 	u64 pebs_mask = cpuc->pebs_enabled & x86_pmu.pebs_capable;
 	int global_ctrl, pebs_enable;
 
+	/*
+	 * In addition to obeying exclude_guest/exclude_host, remove bits being
+	 * used for PEBS when running a guest, because PEBS writes to virtual
+	 * addresses (not physical addresses).
+	 */
 	*nr = 0;
 	global_ctrl = (*nr)++;
 	arr[global_ctrl] = (struct perf_guest_switch_msr){
 		.msr = MSR_CORE_PERF_GLOBAL_CTRL,
 		.host = intel_ctrl & ~cpuc->intel_ctrl_guest_mask,
-		.guest = intel_ctrl & (~cpuc->intel_ctrl_host_mask | ~pebs_mask),
+		.guest = intel_ctrl & ~cpuc->intel_ctrl_host_mask & ~pebs_mask,
 	};
 
 	if (!x86_pmu.pebs)
arch/x86/kernel/kprobes/core.c +2 -1
index ea155f0cf545..6120f25b0d5c 100644
@@ -549,7 +549,8 @@ static void kprobe_emulate_call_indirect(struct kprobe *p, struct pt_regs *regs)
 {
 	unsigned long offs = addrmode_regoffs[p->ainsn.indirect.reg];
 
-	int3_emulate_call(regs, regs_get_register(regs, offs));
+	int3_emulate_push(regs, regs->ip - INT3_INSN_SIZE + p->ainsn.size);
+	int3_emulate_jmp(regs, regs_get_register(regs, offs));
 }
 NOKPROBE_SYMBOL(kprobe_emulate_call_indirect);
 
arch/x86/net/bpf_jit_comp.c +73 -77

260 lines not on this page · raw message

block/bdev.c +2 -0
index d699ecdb3260..b61502ec8da0 100644
@@ -507,6 +507,8 @@ struct block_device *bdev_alloc(struct gendisk *disk, u8 partno)
 
 void bdev_add(struct block_device *bdev, dev_t dev)
 {
+	if (bdev_stable_writes(bdev))
+		mapping_set_stable_writes(bdev->bd_inode->i_mapping);
 	bdev->bd_dev = dev;
 	bdev->bd_inode->i_rdev = dev;
 	bdev->bd_inode->i_ino = dev;
block/blk-mq.c +38 -37

122 lines not on this page · raw message

block/fops.c +16 -5
index 6197d1c41652..01cb6260fa24 100644
@@ -655,24 +655,35 @@ static long blkdev_fallocate(struct file *file, int mode, loff_t start,
 
 	filemap_invalidate_lock(inode->i_mapping);
 
-	/* Invalidate the page cache, including dirty pages. */
-	error = truncate_bdev_range(bdev, file->f_mode, start, end);
-	if (error)
-		goto fail;
-
+	/*
+	 * Invalidate the page cache, including dirty pages, for valid
+	 * de-allocate mode calls to fallocate().
+	 */
 	switch (mode) {
 	case FALLOC_FL_ZERO_RANGE:
 	case FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE:
+		error = truncate_bdev_range(bdev, file->f_mode, start, end);
+		if (error)
+			goto fail;
+
 		error = blkdev_issue_zeroout(bdev, start >> SECTOR_SHIFT,
 					     len >> SECTOR_SHIFT, GFP_KERNEL,
 					     BLKDEV_ZERO_NOUNMAP);
 		break;
 	case FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE:
+		error = truncate_bdev_range(bdev, file->f_mode, start, end);
+		if (error)
+			goto fail;
+
 		error = blkdev_issue_zeroout(bdev, start >> SECTOR_SHIFT,
 					     len >> SECTOR_SHIFT, GFP_KERNEL,
 					     BLKDEV_ZERO_NOFALLBACK);
 		break;
 	case FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE | FALLOC_FL_NO_HIDE_STALE:
+		error = truncate_bdev_range(bdev, file->f_mode, start, end);
+		if (error)
+			goto fail;
+
 		error = blkdev_issue_discard(bdev, start >> SECTOR_SHIFT,
 					     len >> SECTOR_SHIFT, GFP_KERNEL);
 		break;
drivers/base/memory.c +15 -3
index 9aa0da991cfb..5d39f3e374da 100644
@@ -175,6 +175,9 @@ int memory_notify(unsigned long val, void *v)
 	return blocking_notifier_call_chain(&memory_chain, val, v);
 }
 
+/*
+ * Must acquire mem_hotplug_lock in write mode.
+ */
 static int memory_block_online(struct memory_block *mem)
 {
 	unsigned long start_pfn = section_nr_to_pfn(mem->start_section_nr);
@@ -193,10 +196,11 @@ static int memory_block_online(struct memory_block *mem)
 	 * stage helps to keep accounting easier to follow - e.g vmemmaps
 	 * belong to the same zone as the memory they backed.
 	 */
+	mem_hotplug_begin();
 	if (nr_vmemmap_pages) {
 		ret = mhp_init_memmap_on_memory(start_pfn, nr_vmemmap_pages, zone);
 		if (ret)
-			return ret;
+			goto out;
 	}
 
 	ret = online_pages(start_pfn + nr_vmemmap_pages,
@@ -204,7 +208,7 @@ static int memory_block_online(struct memory_block *mem)
 	if (ret) {
 		if (nr_vmemmap_pages)
 			mhp_deinit_memmap_on_memory(start_pfn, nr_vmemmap_pages);
-		return ret;
+		goto out;
 	}
 
 	/*
@@ -216,9 +220,14 @@ static int memory_block_online(struct memory_block *mem)
 					  nr_vmemmap_pages);
 
 	mem->zone = zone;
+out:
+	mem_hotplug_done();
 	return ret;
 }
 
+/*
+ * Must acquire mem_hotplug_lock in write mode.
+ */
 static int memory_block_offline(struct memory_block *mem)
 {
 	unsigned long start_pfn = section_nr_to_pfn(mem->start_section_nr);
@@ -233,6 +242,7 @@ static int memory_block_offline(struct memory_block *mem)
 	 * Unaccount before offlining, such that unpopulated zone and kthreads
 	 * can properly be torn down in offline_pages().
 	 */
+	mem_hotplug_begin();
 	if (nr_vmemmap_pages)
 		adjust_present_page_count(pfn_to_page(start_pfn), mem->group,
 					  -nr_vmemmap_pages);
@@ -244,13 +254,15 @@ static int memory_block_offline(struct memory_block *mem)
 		if (nr_vmemmap_pages)
 			adjust_present_page_count(pfn_to_page(start_pfn),
 						  mem->group, nr_vmemmap_pages);
-		return ret;
+		goto out;
 	}
 
 	if (nr_vmemmap_pages)
 		mhp_deinit_memmap_on_memory(start_pfn, nr_vmemmap_pages);
 
 	mem->zone = NULL;
+out:
+	mem_hotplug_done();
 	return ret;
 }
 
drivers/firewire/ohci.c +51 -0

69 lines not on this page · raw message

drivers/firmware/arm_scmi/perf.c +3 -3
index 431bda9165c3..2775bcafe40f 100644
@@ -131,7 +131,7 @@ struct perf_dom_info {
 	u32 opp_count;
 	u32 sustained_freq_khz;
 	u32 sustained_perf_level;
-	u32 mult_factor;
+	unsigned long mult_factor;
 	char name[SCMI_MAX_STR_SIZE];
 	struct scmi_opp opp[MAX_OPPS];
 	struct scmi_fc_info *fc_info;
@@ -223,8 +223,8 @@ scmi_perf_domain_attributes_get(const struct scmi_protocol_handle *ph,
 			dom_info->mult_factor =	1000;
 		else
 			dom_info->mult_factor =
-					(dom_info->sustained_freq_khz * 1000) /
-					dom_info->sustained_perf_level;
+					(dom_info->sustained_freq_khz * 1000UL)
+					/ dom_info->sustained_perf_level;
 		strscpy(dom_info->name, attr->name, SCMI_SHORT_NAME_MAX_SIZE);
 	}
 
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +2 -9
index 8a1b84aaaf71..a5352e5e2bd4 100644
@@ -1976,15 +1976,8 @@ static int amdgpu_device_parse_gpu_info_fw(struct amdgpu_device *adev)
 
 	adev->firmware.gpu_info_fw = NULL;
 
-	if (adev->mman.discovery_bin) {
-		/*
-		 * FIXME: The bounding box is still needed by Navi12, so
-		 * temporarily read it from gpu_info firmware. Should be dropped
-		 * when DAL no longer needs it.
-		 */
-		if (adev->asic_type != CHIP_NAVI12)
-			return 0;
-	}
+	if (adev->mman.discovery_bin)
+		return 0;
 
 	switch (adev->asic_type) {
 	default:
drivers/gpu/drm/amd/display/dc/dml/dcn20/dcn20_fpu.c +109 -1

116 lines not on this page · raw message

drivers/gpu/drm/bridge/ti-sn65dsi86.c +3 -1
index 1b5c27ed2737..ff4d0564122a 100644
@@ -527,6 +527,7 @@ static ssize_t ti_sn_aux_transfer(struct drm_dp_aux *aux,
 	u32 request_val = AUX_CMD_REQ(msg->request);
 	u8 *buf = msg->buffer;
 	unsigned int len = msg->size;
+	unsigned int short_len;
 	unsigned int val;
 	int ret;
 	u8 addr_len[SN_AUX_LENGTH_REG + 1 - SN_AUX_ADDR_19_16_REG];
@@ -600,7 +601,8 @@ static ssize_t ti_sn_aux_transfer(struct drm_dp_aux *aux,
 	}
 
 	if (val & AUX_IRQ_STATUS_AUX_SHORT) {
-		ret = regmap_read(pdata->regmap, SN_AUX_LENGTH_REG, &len);
+		ret = regmap_read(pdata->regmap, SN_AUX_LENGTH_REG, &short_len);
+		len = min(len, short_len);
 		if (ret)
 			goto exit;
 	} else if (val & AUX_IRQ_STATUS_NAT_I2C_FAIL) {
drivers/gpu/drm/i915/display/intel_dp.c +1 -1
index 5970f4149090..4699c2110226 100644
@@ -3707,7 +3707,7 @@ static void intel_dp_process_phy_request(struct intel_dp *intel_dp,
 			  intel_dp->train_set, crtc_state->lane_count);
 
 	drm_dp_set_phy_test_pattern(&intel_dp->aux, data,
-				    link_status[DP_DPCD_REV]);
+				    intel_dp->dpcd[DP_DPCD_REV]);
 }
 
 static u8 intel_dp_autotest_phy_pattern(struct intel_dp *intel_dp)
drivers/gpu/drm/mgag200/mgag200_drv.h +5 -0
index f0c2349404b4..aebd09e2d408 100644
@@ -390,6 +390,11 @@ void mgag200_primary_plane_helper_atomic_disable(struct drm_plane *plane,
 	.destroy = drm_plane_cleanup, \
 	DRM_GEM_SHADOW_PLANE_FUNCS
 
+void mgag200_crtc_set_gamma_linear(struct mga_device *mdev, const struct drm_format_info *format);
+void mgag200_crtc_set_gamma(struct mga_device *mdev,
+			    const struct drm_format_info *format,
+			    struct drm_color_lut *lut);
+
 enum drm_mode_status mgag200_crtc_helper_mode_valid(struct drm_crtc *crtc,
 						    const struct drm_display_mode *mode);
 int mgag200_crtc_helper_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *new_state);
drivers/gpu/drm/mgag200/mgag200_g200er.c +5 -0
index bce267e0f7de..8d4538b71047 100644
@@ -202,6 +202,11 @@ static void mgag200_g200er_crtc_helper_atomic_enable(struct drm_crtc *crtc,
 
 	mgag200_g200er_reset_tagfifo(mdev);
 
+	if (crtc_state->gamma_lut)
+		mgag200_crtc_set_gamma(mdev, format, crtc_state->gamma_lut->data);
+	else
+		mgag200_crtc_set_gamma_linear(mdev, format);
+
 	mgag200_enable_display(mdev);
 
 	if (funcs->enable_vidrst)
drivers/gpu/drm/mgag200/mgag200_g200ev.c +5 -0
index ac957f42abe1..56e6f986bff3 100644
@@ -203,6 +203,11 @@ static void mgag200_g200ev_crtc_helper_atomic_enable(struct drm_crtc *crtc,
 
 	mgag200_g200ev_set_hiprilvl(mdev);
 
+	if (crtc_state->gamma_lut)
+		mgag200_crtc_set_gamma(mdev, format, crtc_state->gamma_lut->data);
+	else
+		mgag200_crtc_set_gamma_linear(mdev, format);
+
 	mgag200_enable_display(mdev);
 
 	if (funcs->enable_vidrst)
drivers/gpu/drm/mgag200/mgag200_g200se.c +5 -0
index bd6e573c9a1a..ff2b3c6622e7 100644
@@ -334,6 +334,11 @@ static void mgag200_g200se_crtc_helper_atomic_enable(struct drm_crtc *crtc,
 
 	mgag200_g200se_set_hiprilvl(mdev, adjusted_mode, format);
 
+	if (crtc_state->gamma_lut)
+		mgag200_crtc_set_gamma(mdev, format, crtc_state->gamma_lut->data);
+	else
+		mgag200_crtc_set_gamma_linear(mdev, format);
+
 	mgag200_enable_display(mdev);
 
 	if (funcs->enable_vidrst)
drivers/gpu/drm/mgag200/mgag200_mode.c +5 -5
index ae90b260312a..554adf05e073 100644
@@ -28,8 +28,8 @@
  * This file contains setup code for the CRTC.
  */
 
-static void mgag200_crtc_set_gamma_linear(struct mga_device *mdev,
-					  const struct drm_format_info *format)
+void mgag200_crtc_set_gamma_linear(struct mga_device *mdev,
+				   const struct drm_format_info *format)
 {
 	int i;
 
@@ -65,9 +65,9 @@ static void mgag200_crtc_set_gamma_linear(struct mga_device *mdev,
 	}
 }
 
-static void mgag200_crtc_set_gamma(struct mga_device *mdev,
-				   const struct drm_format_info *format,
-				   struct drm_color_lut *lut)
+void mgag200_crtc_set_gamma(struct mga_device *mdev,
+			    const struct drm_format_info *format,
+			    struct drm_color_lut *lut)
 {
 	int i;
 
drivers/i2c/i2c-core.h +3 -1
index 05b8b8dfa9bd..36587f38dff3 100644
@@ -3,6 +3,7 @@
  * i2c-core.h - interfaces internal to the I2C framework
  */
 
+#include <linux/kconfig.h>
 #include <linux/rwsem.h>
 
 struct i2c_devinfo {
@@ -29,7 +30,8 @@ int i2c_dev_irq_from_resources(const struct resource *resources,
  */
 static inline bool i2c_in_atomic_xfer_mode(void)
 {
-	return system_state > SYSTEM_RUNNING && !preemptible();
+	return system_state > SYSTEM_RUNNING &&
+	       (IS_ENABLED(CONFIG_PREEMPT_COUNT) ? !preemptible() : irqs_disabled());
 }
 
 static inline int __i2c_lock_bus_helper(struct i2c_adapter *adap)
drivers/interconnect/qcom/sm8250.c +0 -1
index 9c2dd40d9a55..5cdb058fa095 100644
@@ -551,7 +551,6 @@ static struct platform_driver qnoc_driver = {
 	.driver = {
 		.name = "qnoc-sm8250",
 		.of_match_table = qnoc_of_match,
-		.sync_state = icc_sync_state,
 	},
 };
 module_platform_driver(qnoc_driver);
drivers/media/platform/qcom/camss/camss-csid-gen2.c +48 -20

138 lines not on this page · raw message

drivers/media/platform/qcom/camss/camss-csid.c +31 -13

95 lines not on this page · raw message

drivers/media/platform/qcom/camss/camss-csid.h +9 -2
index f06040e44c51..d4b48432a097 100644
@@ -19,8 +19,13 @@
 #include <media/v4l2-subdev.h>
 
 #define MSM_CSID_PAD_SINK 0
-#define MSM_CSID_PAD_SRC 1
-#define MSM_CSID_PADS_NUM 2
+#define MSM_CSID_PAD_FIRST_SRC 1
+#define MSM_CSID_PADS_NUM 5
+
+#define MSM_CSID_PAD_SRC (MSM_CSID_PAD_FIRST_SRC)
+
+/* CSID hardware can demultiplex up to 4 outputs */
+#define MSM_CSID_MAX_SRC_STREAMS	4
 
 #define DATA_TYPE_EMBEDDED_DATA_8BIT	0x12
 #define DATA_TYPE_YUV420_8BIT		0x18
@@ -81,6 +86,8 @@ struct csid_phy_config {
 	u8 csiphy_id;
 	u8 lane_cnt;
 	u32 lane_assign;
+	u32 en_vc;
+	u8 need_vc_update;
 };
 
 struct csid_device;
drivers/mmc/core/block.c +4 -3
index 770490234c87..e9ce53d200bc 100644
@@ -866,9 +866,10 @@ static const struct block_device_operations mmc_bdops = {
 static int mmc_blk_part_switch_pre(struct mmc_card *card,
 				   unsigned int part_type)
 {
+	const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_RPMB;
 	int ret = 0;
 
-	if (part_type == EXT_CSD_PART_CONFIG_ACC_RPMB) {
+	if ((part_type & mask) == mask) {
 		if (card->ext_csd.cmdq_en) {
 			ret = mmc_cmdq_disable(card);
 			if (ret)
@@ -883,9 +884,10 @@ static int mmc_blk_part_switch_pre(struct mmc_card *card,
 static int mmc_blk_part_switch_post(struct mmc_card *card,
 				    unsigned int part_type)
 {
+	const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_RPMB;
 	int ret = 0;
 
-	if (part_type == EXT_CSD_PART_CONFIG_ACC_RPMB) {
+	if ((part_type & mask) == mask) {
 		mmc_retune_unpause(card->host);
 		if (card->reenable_cmdq && !card->ext_csd.cmdq_en)
 			ret = mmc_cmdq_enable(card);
@@ -3180,4 +3182,3 @@ module_exit(mmc_blk_exit);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Multimedia Card (MMC) block device driver");
-
drivers/mmc/core/host.c +1 -0
index b89dca1f15e9..25c152ef5d60 100644
@@ -670,6 +670,7 @@ EXPORT_SYMBOL(mmc_remove_host);
  */
 void mmc_free_host(struct mmc_host *host)
 {
+	cancel_delayed_work_sync(&host->detect);
 	mmc_pwrseq_free(host);
 	put_device(&host->class_dev);
 }
drivers/mmc/host/meson-mx-sdhc-mmc.c +5 -21
index da85c2f2acb8..c0e3b1634a88 100644
@@ -269,7 +269,7 @@ static int meson_mx_sdhc_enable_clks(struct mmc_host *mmc)
 static int meson_mx_sdhc_set_clk(struct mmc_host *mmc, struct mmc_ios *ios)
 {
 	struct meson_mx_sdhc_host *host = mmc_priv(mmc);
-	u32 rx_clk_phase;
+	u32 val, rx_clk_phase;
 	int ret;
 
 	meson_mx_sdhc_disable_clks(mmc);
@@ -290,27 +290,11 @@ static int meson_mx_sdhc_set_clk(struct mmc_host *mmc, struct mmc_ios *ios)
 		mmc->actual_clock = clk_get_rate(host->sd_clk);
 
 		/*
-		 * according to Amlogic the following latching points are
-		 * selected with empirical values, there is no (known) formula
-		 * to calculate these.
+		 * Phase 90 should work in most cases. For data transmission,
+		 * meson_mx_sdhc_execute_tuning() will find a accurate value
 		 */
-		if (mmc->actual_clock > 100000000) {
-			rx_clk_phase = 1;
-		} else if (mmc->actual_clock > 45000000) {
-			if (ios->signal_voltage == MMC_SIGNAL_VOLTAGE_330)
-				rx_clk_phase = 15;
-			else
-				rx_clk_phase = 11;
-		} else if (mmc->actual_clock >= 25000000) {
-			rx_clk_phase = 15;
-		} else if (mmc->actual_clock > 5000000) {
-			rx_clk_phase = 23;
-		} else if (mmc->actual_clock > 1000000) {
-			rx_clk_phase = 55;
-		} else {
-			rx_clk_phase = 1061;
-		}
-
+		regmap_read(host->regmap, MESON_SDHC_CLKC, &val);
+		rx_clk_phase = FIELD_GET(MESON_SDHC_CLKC_CLK_DIV, val) / 4;
 		regmap_update_bits(host->regmap, MESON_SDHC_CLK2,
 				   MESON_SDHC_CLK2_RX_CLK_PHASE,
 				   FIELD_PREP(MESON_SDHC_CLK2_RX_CLK_PHASE,
drivers/mmc/host/sdhci-sprd.c +7 -3
index 2101b6e794c0..66c1782823d8 100644
@@ -228,15 +228,19 @@ static inline void _sdhci_sprd_set_clock(struct sdhci_host *host,
 	div = ((div & 0x300) >> 2) | ((div & 0xFF) << 8);
 	sdhci_enable_clk(host, div);
 
+	val = sdhci_readl(host, SDHCI_SPRD_REG_32_BUSY_POSI);
+	mask = SDHCI_SPRD_BIT_OUTR_CLK_AUTO_EN | SDHCI_SPRD_BIT_INNR_CLK_AUTO_EN;
 	/* Enable CLK_AUTO when the clock is greater than 400K. */
 	if (clk > 400000) {
-		val = sdhci_readl(host, SDHCI_SPRD_REG_32_BUSY_POSI);
-		mask = SDHCI_SPRD_BIT_OUTR_CLK_AUTO_EN |
-			SDHCI_SPRD_BIT_INNR_CLK_AUTO_EN;
 		if (mask != (val & mask)) {
 			val |= mask;
 			sdhci_writel(host, val, SDHCI_SPRD_REG_32_BUSY_POSI);
 		}
+	} else {
+		if (val & mask) {
+			val &= ~mask;
+			sdhci_writel(host, val, SDHCI_SPRD_REG_32_BUSY_POSI);
+		}
 	}
 }
 
drivers/net/ethernet/broadcom/bnxt/bnxt.c +2 -2
index 623cdeb29ed9..df4d88d35701 100644
@@ -12081,6 +12081,8 @@ static void bnxt_sp_task(struct work_struct *work)
 		bnxt_cfg_ntp_filters(bp);
 	if (test_and_clear_bit(BNXT_HWRM_EXEC_FWD_REQ_SP_EVENT, &bp->sp_event))
 		bnxt_hwrm_exec_fwd_req(bp);
+	if (test_and_clear_bit(BNXT_HWRM_PF_UNLOAD_SP_EVENT, &bp->sp_event))
+		netdev_info(bp->dev, "Receive PF driver unload event!\n");
 	if (test_and_clear_bit(BNXT_PERIODIC_STATS_SP_EVENT, &bp->sp_event)) {
 		bnxt_hwrm_port_qstats(bp, 0);
 		bnxt_hwrm_port_qstats_ext(bp, 0);
@@ -13059,8 +13061,6 @@ static void bnxt_cfg_ntp_filters(struct bnxt *bp)
 			}
 		}
 	}
-	if (test_and_clear_bit(BNXT_HWRM_PF_UNLOAD_SP_EVENT, &bp->sp_event))
-		netdev_info(bp->dev, "Receive PF driver unload event!\n");
 }
 
 #else
drivers/net/ethernet/broadcom/genet/bcmgenet.c +3 -1
index 1ae082eb9e90..c2a991308215 100644
@@ -2131,8 +2131,10 @@ static netdev_tx_t bcmgenet_xmit(struct sk_buff *skb, struct net_device *dev)
 		/* Note: if we ever change from DMA_TX_APPEND_CRC below we
 		 * will need to restore software padding of "runt" packets
 		 */
+		len_stat |= DMA_TX_APPEND_CRC;
+
 		if (!i) {
-			len_stat |= DMA_TX_APPEND_CRC | DMA_SOP;
+			len_stat |= DMA_SOP;
 			if (skb->ip_summed == CHECKSUM_PARTIAL)
 				len_stat |= DMA_TX_DO_CSUM;
 		}
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +5 -2
index b58162ce81d8..de62eee58a00 100644
@@ -509,8 +509,6 @@ static struct sk_buff *dpaa2_eth_copybreak(struct dpaa2_eth_channel *ch,
 
 	memcpy(skb->data, fd_vaddr + fd_offset, fd_length);
 
-	dpaa2_eth_recycle_buf(priv, ch, dpaa2_fd_get_addr(fd));
-
 	return skb;
 }
 
@@ -528,6 +526,7 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv,
 	struct dpaa2_eth_drv_stats *percpu_extras;
 	struct device *dev = priv->net_dev->dev.parent;
 	struct dpaa2_fas *fas;
+	bool recycle_rx_buf = false;
 	void *buf_data;
 	u32 status = 0;
 	u32 xdp_act;
@@ -560,6 +559,8 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv,
 			dma_unmap_page(dev, addr, priv->rx_buf_size,
 				       DMA_BIDIRECTIONAL);
 			skb = dpaa2_eth_build_linear_skb(ch, fd, vaddr);
+		} else {
+			recycle_rx_buf = true;
 		}
 	} else if (fd_format == dpaa2_fd_sg) {
 		WARN_ON(priv->xdp_prog);
@@ -607,6 +608,8 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv,
 
 	list_add_tail(&skb->list, ch->rx_list);
 
+	if (recycle_rx_buf)
+		dpaa2_eth_recycle_buf(priv, ch, dpaa2_fd_get_addr(fd));
 	return;
 
 err_build_skb:
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c +8 -10
index eea7d7a07c00..59888826469b 100644
@@ -227,17 +227,8 @@ static void dpaa2_eth_get_ethtool_stats(struct net_device *net_dev,
 					struct ethtool_stats *stats,
 					u64 *data)
 {
-	int i = 0;
-	int j, k, err;
-	int num_cnt;
-	union dpni_statistics dpni_stats;
-	u32 fcnt, bcnt;
-	u32 fcnt_rx_total = 0, fcnt_tx_total = 0;
-	u32 bcnt_rx_total = 0, bcnt_tx_total = 0;
-	u32 buf_cnt;
 	struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
-	struct dpaa2_eth_drv_stats *extras;
-	struct dpaa2_eth_ch_stats *ch_stats;
+	union dpni_statistics dpni_stats;
 	int dpni_stats_page_size[DPNI_STATISTICS_CNT] = {
 		sizeof(dpni_stats.page_0),
 		sizeof(dpni_stats.page_1),
@@ -247,6 +238,13 @@ static void dpaa2_eth_get_ethtool_stats(struct net_device *net_dev,
 		sizeof(dpni_stats.page_5),
 		sizeof(dpni_stats.page_6),
 	};
+	u32 fcnt_rx_total = 0, fcnt_tx_total = 0;
+	u32 bcnt_rx_total = 0, bcnt_tx_total = 0;
+	struct dpaa2_eth_ch_stats *ch_stats;
+	struct dpaa2_eth_drv_stats *extras;
+	int j, k, err, num_cnt, i = 0;
+	u32 fcnt, bcnt;
+	u32 buf_cnt;
 
 	memset(data, 0,
 	       sizeof(u64) * (DPAA2_ETH_NUM_STATS + DPAA2_ETH_NUM_EXTRA_STATS));
drivers/net/ethernet/intel/i40e/i40e_main.c +10 -1
index b4157ff370a3..63d43ef86f9b 100644
@@ -104,12 +104,18 @@ static struct workqueue_struct *i40e_wq;
 static void netdev_hw_addr_refcnt(struct i40e_mac_filter *f,
 				  struct net_device *netdev, int delta)
 {
+	struct netdev_hw_addr_list *ha_list;
 	struct netdev_hw_addr *ha;
 
 	if (!f || !netdev)
 		return;
 
-	netdev_for_each_mc_addr(ha, netdev) {
+	if (is_unicast_ether_addr(f->macaddr) || is_link_local_ether_addr(f->macaddr))
+		ha_list = &netdev->uc;
+	else
+		ha_list = &netdev->mc;
+
+	netdev_hw_addr_list_for_each(ha, ha_list) {
 		if (ether_addr_equal(ha->addr, f->macaddr)) {
 			ha->refcount += delta;
 			if (ha->refcount <= 0)
@@ -16444,6 +16450,9 @@ static void i40e_pci_error_reset_done(struct pci_dev *pdev)
 		return;
 
 	i40e_reset_and_rebuild(pf, false, false);
+#ifdef CONFIG_PCI_IOV
+	i40e_restore_all_vfs_msi_state(pdev);
+#endif /* CONFIG_PCI_IOV */
 }
 
 /**
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +30 -4
index cb925baf72ce..c7d761426d6c 100644
@@ -152,6 +152,32 @@ void i40e_vc_notify_reset(struct i40e_pf *pf)
 			     (u8 *)&pfe, sizeof(struct virtchnl_pf_event));
 }
 
+#ifdef CONFIG_PCI_IOV
+void i40e_restore_all_vfs_msi_state(struct pci_dev *pdev)
+{
+	u16 vf_id;
+	u16 pos;
+
+	/* Continue only if this is a PF */
+	if (!pdev->is_physfn)
+		return;
+
+	if (!pci_num_vf(pdev))
+		return;
+
+	pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);
+	if (pos) {
+		struct pci_dev *vf_dev = NULL;
+
+		pci_read_config_word(pdev, pos + PCI_SRIOV_VF_DID, &vf_id);
+		while ((vf_dev = pci_get_device(pdev->vendor, vf_id, vf_dev))) {
+			if (vf_dev->is_virtfn && vf_dev->physfn == pdev)
+				pci_restore_msi_state(vf_dev);
+		}
+	}
+}
+#endif /* CONFIG_PCI_IOV */
+
 /**
  * i40e_vc_notify_vf_reset
  * @vf: pointer to the VF structure
@@ -3451,16 +3477,16 @@ static int i40e_validate_cloud_filter(struct i40e_vf *vf,
 	bool found = false;
 	int bkt;
 
-	if (!tc_filter->action) {
+	if (tc_filter->action != VIRTCHNL_ACTION_TC_REDIRECT) {
 		dev_info(&pf->pdev->dev,
-			 "VF %d: Currently ADq doesn't support Drop Action\n",
-			 vf->vf_id);
+			 "VF %d: ADQ doesn't support this action (%d)\n",
+			 vf->vf_id, tc_filter->action);
 		goto err;
 	}
 
 	/* action_meta is TC number here to which the filter is applied */
 	if (!tc_filter->action_meta ||
-	    tc_filter->action_meta > I40E_MAX_VF_VSI) {
+	    tc_filter->action_meta > vf->num_tc) {
 		dev_info(&pf->pdev->dev, "VF %d: Invalid TC number %u\n",
 			 vf->vf_id, tc_filter->action_meta);
 		goto err;
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h +3 -0
index 358bbdb58795..bd497cc5303a 100644
@@ -135,6 +135,9 @@ int i40e_ndo_set_vf_spoofchk(struct net_device *netdev, int vf_id, bool enable);
 
 void i40e_vc_notify_link_state(struct i40e_pf *pf);
 void i40e_vc_notify_reset(struct i40e_pf *pf);
+#ifdef CONFIG_PCI_IOV
+void i40e_restore_all_vfs_msi_state(struct pci_dev *pdev);
+#endif /* CONFIG_PCI_IOV */
 int i40e_get_vf_stats(struct net_device *netdev, int vf_id,
 		      struct ifla_vf_stats *vf_stats);
 
drivers/net/ethernet/intel/ice/ice_main.c +9 -3
index f0f39364819a..ab46cfca4028 100644
@@ -2138,7 +2138,7 @@ static int ice_configure_phy(struct ice_vsi *vsi)
 
 	/* Ensure we have media as we cannot configure a medialess port */
 	if (!(phy->link_info.link_info & ICE_AQ_MEDIA_AVAILABLE))
-		return -EPERM;
+		return -ENOMEDIUM;
 
 	ice_print_topo_conflict(vsi);
 
@@ -9065,8 +9065,14 @@ int ice_stop(struct net_device *netdev)
 		int link_err = ice_force_phys_link_state(vsi, false);
 
 		if (link_err) {
-			netdev_err(vsi->netdev, "Failed to set physical link down, VSI %d error %d\n",
-				   vsi->vsi_num, link_err);
+			if (link_err == -ENOMEDIUM)
+				netdev_info(vsi->netdev, "Skipping link reconfig - no media attached, VSI %d\n",
+					    vsi->vsi_num);
+			else
+				netdev_err(vsi->netdev, "Failed to set physical link down, VSI %d error %d\n",
+					   vsi->vsi_num, link_err);
+
+			ice_vsi_close(vsi);
 			return -EIO;
 		}
 	}
drivers/net/ethernet/intel/igc/igc.h +1 -0
index 43c05b41627f..2a894ca49d93 100644
@@ -538,6 +538,7 @@ struct igc_nfc_filter {
 	u16 etype;
 	__be16 vlan_etype;
 	u16 vlan_tci;
+	u16 vlan_tci_mask;
 	u8 src_addr[ETH_ALEN];
 	u8 dst_addr[ETH_ALEN];
 	u8 user_data[8];
drivers/net/ethernet/intel/igc/igc_ethtool.c +39 -3

78 lines not on this page · raw message

drivers/net/ethernet/intel/igc/igc_tsn.c +1 -1
index 725db36e399d..31ea0781b65e 100644
@@ -178,7 +178,7 @@ static int igc_tsn_enable_offload(struct igc_adapter *adapter)
 			wr32(IGC_TQAVCC(i), tqavcc);
 
 			wr32(IGC_TQAVHC(i),
-			     0x80000000 + ring->hicredit * 0x7735);
+			     0x80000000 + ring->hicredit * 0x7736);
 		} else {
 			/* Disable any CBS for the queue */
 			txqctl &= ~(IGC_TXQCTL_QAV_SEL_MASK);
drivers/net/ethernet/marvell/octeontx2/af/cgx.c +15 -20
index 65c0373d34d1..90be87dc105d 100644
@@ -78,7 +78,7 @@ static bool is_dev_rpm(void *cgxd)
 
 bool is_lmac_valid(struct cgx *cgx, int lmac_id)
 {
-	if (!cgx || lmac_id < 0 || lmac_id >= MAX_LMAC_PER_CGX)
+	if (!cgx || lmac_id < 0 || lmac_id >= cgx->max_lmac_per_mac)
 		return false;
 	return test_bit(lmac_id, &cgx->lmac_bmap);
 }
@@ -90,7 +90,7 @@ static int get_sequence_id_of_lmac(struct cgx *cgx, int lmac_id)
 {
 	int tmp, id = 0;
 
-	for_each_set_bit(tmp, &cgx->lmac_bmap, MAX_LMAC_PER_CGX) {
+	for_each_set_bit(tmp, &cgx->lmac_bmap, cgx->max_lmac_per_mac) {
 		if (tmp == lmac_id)
 			break;
 		id++;
@@ -121,7 +121,7 @@ u64 cgx_read(struct cgx *cgx, u64 lmac, u64 offset)
 
 struct lmac *lmac_pdata(u8 lmac_id, struct cgx *cgx)
 {
-	if (!cgx || lmac_id >= MAX_LMAC_PER_CGX)
+	if (!cgx || lmac_id >= cgx->max_lmac_per_mac)
 		return NULL;
 
 	return cgx->lmac_idmap[lmac_id];
@@ -1410,7 +1410,7 @@ int cgx_get_fwdata_base(u64 *base)
 	if (!cgx)
 		return -ENXIO;
 
-	first_lmac = find_first_bit(&cgx->lmac_bmap, MAX_LMAC_PER_CGX);
+	first_lmac = find_first_bit(&cgx->lmac_bmap, cgx->max_lmac_per_mac);
 	req = FIELD_SET(CMDREG_ID, CGX_CMD_GET_FWD_BASE, req);
 	err = cgx_fwi_cmd_generic(req, &resp, cgx, first_lmac);
 	if (!err)
@@ -1499,7 +1499,7 @@ static int cgx_fwi_link_change(struct cgx *cgx, int lmac_id, bool enable)
 
 static inline int cgx_fwi_read_version(u64 *resp, struct cgx *cgx)
 {
-	int first_lmac = find_first_bit(&cgx->lmac_bmap, MAX_LMAC_PER_CGX);
+	int first_lmac = find_first_bit(&cgx->lmac_bmap, cgx->max_lmac_per_mac);
 	u64 req = 0;
 
 	req = FIELD_SET(CMDREG_ID, CGX_CMD_GET_FW_VER, req);
@@ -1537,7 +1537,7 @@ static void cgx_lmac_linkup_work(struct work_struct *work)
 	int i, err;
 
 	/* Do Link up for all the enabled lmacs */
-	for_each_set_bit(i, &cgx->lmac_bmap, MAX_LMAC_PER_CGX) {
+	for_each_set_bit(i, &cgx->lmac_bmap, cgx->max_lmac_per_mac) {
 		err = cgx_fwi_link_change(cgx, i, true);
 		if (err)
 			dev_info(dev, "cgx port %d:%d Link up command failed\n",
@@ -1557,14 +1557,6 @@ int cgx_lmac_linkup_start(void *cgxd)
 	return 0;
 }
 
-static void cgx_lmac_get_fifolen(struct cgx *cgx)
-{
-	u64 cfg;
-
-	cfg = cgx_read(cgx, 0, CGX_CONST);
-	cgx->mac_ops->fifo_len = FIELD_GET(CGX_CONST_RXFIFO_SIZE, cfg);
-}
-
 static int cgx_configure_interrupt(struct cgx *cgx, struct lmac *lmac,
 				   int cnt, bool req_free)
 {
@@ -1619,17 +1611,14 @@ static int cgx_lmac_init(struct cgx *cgx)
 	u64 lmac_list;
 	int i, err;
 
-	cgx_lmac_get_fifolen(cgx);
-
-	cgx->lmac_count = cgx->mac_ops->get_nr_lmacs(cgx);
 	/* lmac_list specifies which lmacs are enabled
 	 * when bit n is set to 1, LMAC[n] is enabled
 	 */
 	if (cgx->mac_ops->non_contiguous_serdes_lane)
 		lmac_list = cgx_read(cgx, 0, CGXX_CMRX_RX_LMACS) & 0xFULL;
 
-	if (cgx->lmac_count > MAX_LMAC_PER_CGX)
-		cgx->lmac_count = MAX_LMAC_PER_CGX;
+	if (cgx->lmac_count > cgx->max_lmac_per_mac)
+		cgx->lmac_count = cgx->max_lmac_per_mac;
 
 	for (i = 0; i < cgx->lmac_count; i++) {
 		lmac = kzalloc(sizeof(struct lmac), GFP_KERNEL);
@@ -1707,7 +1696,7 @@ static int cgx_lmac_exit(struct cgx *cgx)
 	}
 
 	/* Free all lmac related resources */
-	for_each_set_bit(i, &cgx->lmac_bmap, MAX_LMAC_PER_CGX) {
+	for_each_set_bit(i, &cgx->lmac_bmap, cgx->max_lmac_per_mac) {
 		lmac = cgx->lmac_idmap[i];
 		if (!lmac)
 			continue;
@@ -1723,6 +1712,12 @@ static int cgx_lmac_exit(struct cgx *cgx)
 
 static void cgx_populate_features(struct cgx *cgx)
 {
+	u64 cfg;
+
+	cfg = cgx_read(cgx, 0, CGX_CONST);
+	cgx->mac_ops->fifo_len = FIELD_GET(CGX_CONST_RXFIFO_SIZE, cfg);
+	cgx->max_lmac_per_mac = FIELD_GET(CGX_CONST_MAX_LMACS, cfg);
+
 	if (is_dev_rpm(cgx))
 		cgx->hw_features = (RVU_LMAC_FEAT_DMACF | RVU_MAC_RPM |
 				    RVU_LMAC_FEAT_FC | RVU_LMAC_FEAT_PTP);
drivers/net/ethernet/marvell/octeontx2/af/cgx.h +2 -4
index 04338db38671..09ddb00f63cc 100644
@@ -18,11 +18,8 @@
 /* PCI BAR nos */
 #define PCI_CFG_REG_BAR_NUM		0
 
-#define CGX_ID_MASK			0x7
-#define MAX_LMAC_PER_CGX		4
+#define CGX_ID_MASK			0xF
 #define MAX_DMAC_ENTRIES_PER_CGX	32
-#define CGX_FIFO_LEN			65536 /* 64K for both Rx & Tx */
-#define CGX_OFFSET(x)			((x) * MAX_LMAC_PER_CGX)
 
 /* Registers */
 #define CGXX_CMRX_CFG			0x00
@@ -56,6 +53,7 @@
 #define CGXX_SCRATCH1_REG		0x1058
 #define CGX_CONST			0x2000
 #define CGX_CONST_RXFIFO_SIZE	        GENMASK_ULL(23, 0)
+#define CGX_CONST_MAX_LMACS	        GENMASK_ULL(31, 24)
 #define CGXX_SPUX_CONTROL1		0x10000
 #define CGXX_SPUX_LNX_FEC_CORR_BLOCKS	0x10700
 #define CGXX_SPUX_LNX_FEC_UNCORR_BLOCKS	0x10800
drivers/net/ethernet/marvell/octeontx2/af/lmac_common.h +4 -1
index 52b6016789fa..697cfec74aa1 100644
@@ -128,7 +128,10 @@ struct cgx {
 	struct pci_dev		*pdev;
 	u8			cgx_id;
 	u8			lmac_count;
-	struct lmac		*lmac_idmap[MAX_LMAC_PER_CGX];
+	/* number of LMACs per MAC could be 4 or 8 */
+	u8			max_lmac_per_mac;
+#define MAX_LMAC_COUNT		8
+	struct lmac             *lmac_idmap[MAX_LMAC_COUNT];
 	struct			work_struct cgx_cmd_work;
 	struct			workqueue_struct *cgx_cmd_workq;
 	struct list_head	cgx_list;
drivers/net/ethernet/marvell/octeontx2/af/npc.h +2 -2
index d027c23b8ef8..aaff91bc7415 100644
@@ -514,7 +514,7 @@ struct npc_lt_def {
 	u8	ltype_mask;
 	u8	ltype_match;
 	u8	lid;
-};
+} __packed;
 
 struct npc_lt_def_ipsec {
 	u8	ltype_mask;
@@ -522,7 +522,7 @@ struct npc_lt_def_ipsec {
 	u8	lid;
 	u8	spi_offset;
 	u8	spi_nz;
-};
+} __packed;
 
 struct npc_lt_def_apad {
 	u8	ltype_mask;
drivers/net/ethernet/marvell/octeontx2/af/rpm.c +7 -4
index a70e1153fa04..6b4792a942d8 100644
@@ -283,6 +283,11 @@ void rpm_lmac_pause_frm_config(void *rpmd, int lmac_id, bool enable)
 	cfg = FIELD_SET(RPM_PFC_CLASS_MASK, 0, cfg);
 	rpm_write(rpm, lmac_id, RPMX_CMRX_PRT_CBFC_CTL, cfg);
 
+	/* Disable forward pause to driver */
+	cfg = rpm_read(rpm, lmac_id, RPMX_MTI_MAC100X_COMMAND_CONFIG);
+	cfg &= ~RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_FWD;
+	rpm_write(rpm, lmac_id, RPMX_MTI_MAC100X_COMMAND_CONFIG, cfg);
+
 	/* Enable channel mask for all LMACS */
 	rpm_write(rpm, 0, RPMX_CMR_CHAN_MSK_OR, ~0ULL);
 }
@@ -451,12 +456,10 @@ int rpm_lmac_pfc_config(void *rpmd, int lmac_id, u8 tx_pause, u8 rx_pause, u16 p
 
 	if (rx_pause) {
 		cfg &= ~(RPMX_MTI_MAC100X_COMMAND_CONFIG_RX_P_DISABLE |
-				RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_IGNORE |
-				RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_FWD);
+			 RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_IGNORE);
 	} else {
 		cfg |= (RPMX_MTI_MAC100X_COMMAND_CONFIG_RX_P_DISABLE |
-				RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_IGNORE |
-				RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_FWD);
+			RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_IGNORE);
 	}
 
 	if (tx_pause) {
drivers/net/ethernet/marvell/octeontx2/af/rvu.h +2 -1
index 95a7bc396e8e..0b76dfa979d4 100644
@@ -480,7 +480,7 @@ struct rvu {
 	u8			cgx_mapped_pfs;
 	u8			cgx_cnt_max;	 /* CGX port count max */
 	u8			*pf2cgxlmac_map; /* pf to cgx_lmac map */
-	u16			*cgxlmac2pf_map; /* bitmap of mapped pfs for
+	u64			*cgxlmac2pf_map; /* bitmap of mapped pfs for
 						  * every cgx lmac port
 						  */
 	unsigned long		pf_notify_bmap; /* Flags for PF notification */
@@ -850,6 +850,7 @@ u32  rvu_cgx_get_fifolen(struct rvu *rvu);
 void *rvu_first_cgx_pdata(struct rvu *rvu);
 int cgxlmac_to_pf(struct rvu *rvu, int cgx_id, int lmac_id);
 int rvu_cgx_config_tx(void *cgxd, int lmac_id, bool enable);
+int rvu_cgx_tx_enable(struct rvu *rvu, u16 pcifunc, bool enable);
 int rvu_cgx_prio_flow_ctrl_cfg(struct rvu *rvu, u16 pcifunc, u8 tx_pause, u8 rx_pause,
 			       u16 pfc_en);
 int rvu_cgx_cfg_pause_frm(struct rvu *rvu, u16 pcifunc, u8 tx_pause, u8 rx_pause);
drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c +32 -11

104 lines not on this page · raw message

drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c +1 -1
index 5c9dc3f9262f..cc5d342e026c 100644
@@ -2618,7 +2618,7 @@ static void rvu_dbg_cgx_init(struct rvu *rvu)
 		rvu->rvu_dbg.cgx = debugfs_create_dir(dname,
 						      rvu->rvu_dbg.cgx_root);
 
-		for_each_set_bit(lmac_id, &lmac_bmap, MAX_LMAC_PER_CGX) {
+		for_each_set_bit(lmac_id, &lmac_bmap, rvu->hw->lmac_per_cgx) {
 			/* lmac debugfs dir */
 			sprintf(dname, "lmac%d", lmac_id);
 			rvu->rvu_dbg.lmac =
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +11 -109

166 lines not on this page · raw message

drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_hash.c +3 -1
index 34fa59575fa9..54e0dfdc9d98 100644
@@ -1999,7 +1999,9 @@ int rvu_npc_exact_init(struct rvu *rvu)
 	/* Install SDP drop rule */
 	drop_mcam_idx = &table->num_drop_rules;
 
-	max_lmac_cnt = rvu->cgx_cnt_max * MAX_LMAC_PER_CGX + PF_CGXMAP_BASE;
+	max_lmac_cnt = rvu->cgx_cnt_max * rvu->hw->lmac_per_cgx +
+		       PF_CGXMAP_BASE;
+
 	for (i = PF_CGXMAP_BASE; i < max_lmac_cnt; i++) {
 		if (rvu->pf2cgxlmac_map[i] == 0xFF)
 			continue;
drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c +3 -3
index d136360ac6a9..a6d3fc96e168 100644
@@ -25,7 +25,7 @@
 struct mlx5_irq {
 	struct atomic_notifier_head nh;
 	cpumask_var_t mask;
-	char name[MLX5_MAX_IRQ_NAME];
+	char name[MLX5_MAX_IRQ_FORMATTED_NAME];
 	struct mlx5_irq_pool *pool;
 	int refcount;
 	u32 index;
@@ -236,8 +236,8 @@ struct mlx5_irq *mlx5_irq_alloc(struct mlx5_irq_pool *pool, int i,
 	else
 		irq_sf_set_name(pool, name, i);
 	ATOMIC_INIT_NOTIFIER_HEAD(&irq->nh);
-	snprintf(irq->name, MLX5_MAX_IRQ_NAME,
-		 "%s@pci:%s", name, pci_name(dev->pdev));
+	snprintf(irq->name, MLX5_MAX_IRQ_FORMATTED_NAME,
+		 MLX5_IRQ_NAME_FORMAT_STR, name, pci_name(dev->pdev));
 	err = request_irq(irq->irqn, irq_int_handler, 0, irq->name,
 			  &irq->nh);
 	if (err) {
drivers/net/ethernet/mellanox/mlx5/core/pci_irq.h +3 -0
index 5c7e68bee43a..4047179307c4 100644
@@ -7,6 +7,9 @@
 #include <linux/mlx5/driver.h>
 
 #define MLX5_MAX_IRQ_NAME (32)
+#define MLX5_IRQ_NAME_FORMAT_STR ("%s@pci:%s")
+#define MLX5_MAX_IRQ_FORMATTED_NAME \
+	(MLX5_MAX_IRQ_NAME + sizeof(MLX5_IRQ_NAME_FORMAT_STR))
 /* max irq_index is 2047, so four chars */
 #define MLX5_MAX_IRQ_IDX_CHARS (4)
 #define MLX5_EQ_REFS_PER_IRQ (2)
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c +7 -2
index 0d5a41a2ae01..227d01cace3f 100644
@@ -267,6 +267,13 @@ static bool mlxbf_gige_rx_packet(struct mlxbf_gige *priv, int *rx_pkts)
 		priv->stats.rx_truncate_errors++;
 	}
 
+	/* Read receive consumer index before replenish so that this routine
+	 * returns accurate return value even if packet is received into
+	 * just-replenished buffer prior to exiting this routine.
+	 */
+	rx_ci = readq(priv->base + MLXBF_GIGE_RX_CQE_PACKET_CI);
+	rx_ci_rem = rx_ci % priv->rx_q_entries;
+
 	/* Let hardware know we've replenished one buffer */
 	rx_pi++;
 
@@ -279,8 +286,6 @@ static bool mlxbf_gige_rx_packet(struct mlxbf_gige *priv, int *rx_pkts)
 	rx_pi_rem = rx_pi % priv->rx_q_entries;
 	if (rx_pi_rem == 0)
 		priv->valid_polarity ^= 1;
-	rx_ci = readq(priv->base + MLXBF_GIGE_RX_CQE_PACKET_CI);
-	rx_ci_rem = rx_ci % priv->rx_q_entries;
 
 	if (skb)
 		netif_receive_skb(skb);
drivers/net/ethernet/qlogic/qla3xxx.c +2 -0
index 0d57ffcedf0c..fc78bc959ded 100644
@@ -2591,6 +2591,7 @@ static int ql_alloc_buffer_queues(struct ql3_adapter *qdev)
 
 	if (qdev->lrg_buf_q_alloc_virt_addr == NULL) {
 		netdev_err(qdev->ndev, "lBufQ failed\n");
+		kfree(qdev->lrg_buf);
 		return -ENOMEM;
 	}
 	qdev->lrg_buf_q_virt_addr = qdev->lrg_buf_q_alloc_virt_addr;
@@ -2615,6 +2616,7 @@ static int ql_alloc_buffer_queues(struct ql3_adapter *qdev)
 				  qdev->lrg_buf_q_alloc_size,
 				  qdev->lrg_buf_q_alloc_virt_addr,
 				  qdev->lrg_buf_q_alloc_phy_addr);
+		kfree(qdev->lrg_buf);
 		return -ENOMEM;
 	}
 
drivers/net/ethernet/realtek/r8169_main.c +1 -1
index d22457f2cf9c..06663c11ca96 100644
@@ -1145,7 +1145,7 @@ static void rtl8168ep_driver_start(struct rtl8169_private *tp)
 {
 	r8168ep_ocp_write(tp, 0x01, 0x180, OOB_CMD_DRIVER_START);
 	r8168ep_ocp_write(tp, 0x01, 0x30, r8168ep_ocp_read(tp, 0x30) | 0x01);
-	rtl_loop_wait_high(tp, &rtl_ep_ocp_read_cond, 10000, 10);
+	rtl_loop_wait_high(tp, &rtl_ep_ocp_read_cond, 10000, 30);
 }
 
 static void rtl8168_driver_start(struct rtl8169_private *tp)
drivers/net/ethernet/renesas/ravb_main.c +42 -23

132 lines not on this page · raw message

drivers/net/ethernet/sfc/rx_common.c +3 -1
index 9220afeddee8..3f290791df1c 100644
@@ -820,8 +820,10 @@ int efx_probe_filters(struct efx_nic *efx)
 		}
 
 		if (!success) {
-			efx_for_each_channel(channel, efx)
+			efx_for_each_channel(channel, efx) {
 				kfree(channel->rps_flow_id);
+				channel->rps_flow_id = NULL;
+			}
 			efx->type->filter_table_remove(efx);
 			rc = -ENOMEM;
 			goto out_unlock;
drivers/net/gtp.c +2 -2
index 477b4d4f860b..bace989591f7 100644
@@ -629,7 +629,7 @@ static void __gtp_encap_destroy(struct sock *sk)
 			gtp->sk0 = NULL;
 		else
 			gtp->sk1u = NULL;
-		udp_sk(sk)->encap_type = 0;
+		WRITE_ONCE(udp_sk(sk)->encap_type, 0);
 		rcu_assign_sk_user_data(sk, NULL);
 		release_sock(sk);
 		sock_put(sk);
@@ -681,7 +681,7 @@ static int gtp_encap_recv(struct sock *sk, struct sk_buff *skb)
 
 	netdev_dbg(gtp->dev, "encap_recv sk=%p\n", sk);
 
-	switch (udp_sk(sk)->encap_type) {
+	switch (READ_ONCE(udp_sk(sk)->encap_type)) {
 	case UDP_ENCAP_GTP0:
 		netdev_dbg(gtp->dev, "received GTP0 packet\n");
 		ret = gtp0_udp_encap_recv(gtp, skb);
drivers/net/usb/ax88172a.c +3 -1
index 3777c7e2e6fc..e47bb125048d 100644
@@ -161,7 +161,9 @@ static int ax88172a_bind(struct usbnet *dev, struct usb_interface *intf)
 	u8 buf[ETH_ALEN];
 	struct ax88172a_private *priv;
 
-	usbnet_get_endpoints(dev, intf);
+	ret = usbnet_get_endpoints(dev, intf);
+	if (ret)
+		return ret;
 
 	priv = kzalloc(sizeof(*priv), GFP_KERNEL);
 	if (!priv)
drivers/net/wireless/intel/iwlwifi/iwl-prph.h +2 -2
index 157d1f31c487..c5a306b01fe2 100644
@@ -348,8 +348,8 @@
 #define RFIC_REG_RD			0xAD0470
 #define WFPM_CTRL_REG			0xA03030
 #define WFPM_OTP_CFG1_ADDR		0x00a03098
-#define WFPM_OTP_CFG1_IS_JACKET_BIT	BIT(4)
-#define WFPM_OTP_CFG1_IS_CDB_BIT	BIT(5)
+#define WFPM_OTP_CFG1_IS_JACKET_BIT	BIT(5)
+#define WFPM_OTP_CFG1_IS_CDB_BIT	BIT(4)
 
 #define WFPM_GP2			0xA030B4
 
drivers/net/wireless/intel/iwlwifi/pcie/internal.h +2 -2
index 69b95ad5993b..2ec4ee8ab317 100644
@@ -745,7 +745,7 @@ static inline void iwl_enable_rfkill_int(struct iwl_trans *trans)
 	}
 }
 
-void iwl_pcie_handle_rfkill_irq(struct iwl_trans *trans);
+void iwl_pcie_handle_rfkill_irq(struct iwl_trans *trans, bool from_irq);
 
 static inline bool iwl_is_rfkill_set(struct iwl_trans *trans)
 {
@@ -792,7 +792,7 @@ static inline bool iwl_pcie_dbg_on(struct iwl_trans *trans)
 	return (trans->dbg.dest_tlv || iwl_trans_dbg_ini_valid(trans));
 }
 
-void iwl_trans_pcie_rf_kill(struct iwl_trans *trans, bool state);
+void iwl_trans_pcie_rf_kill(struct iwl_trans *trans, bool state, bool from_irq);
 void iwl_trans_pcie_dump_regs(struct iwl_trans *trans);
 
 #ifdef CONFIG_IWLWIFI_DEBUGFS
drivers/net/wireless/intel/iwlwifi/pcie/rx.c +4 -4
index 90a46faaaffd..57a11ee05bc3 100644
@@ -1781,7 +1781,7 @@ static u32 iwl_pcie_int_cause_ict(struct iwl_trans *trans)
 	return inta;
 }
 
-void iwl_pcie_handle_rfkill_irq(struct iwl_trans *trans)
+void iwl_pcie_handle_rfkill_irq(struct iwl_trans *trans, bool from_irq)
 {
 	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
 	struct isr_statistics *isr_stats = &trans_pcie->isr_stats;
@@ -1805,7 +1805,7 @@ void iwl_pcie_handle_rfkill_irq(struct iwl_trans *trans)
 	isr_stats->rfkill++;
 
 	if (prev != report)
-		iwl_trans_pcie_rf_kill(trans, report);
+		iwl_trans_pcie_rf_kill(trans, report, from_irq);
 	mutex_unlock(&trans_pcie->mutex);
 
 	if (hw_rfkill) {
@@ -1945,7 +1945,7 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
 
 	/* HW RF KILL switch toggled */
 	if (inta & CSR_INT_BIT_RF_KILL) {
-		iwl_pcie_handle_rfkill_irq(trans);
+		iwl_pcie_handle_rfkill_irq(trans, true);
 		handled |= CSR_INT_BIT_RF_KILL;
 	}
 
@@ -2362,7 +2362,7 @@ irqreturn_t iwl_pcie_irq_msix_handler(int irq, void *dev_id)
 
 	/* HW RF KILL switch toggled */
 	if (inta_hw & MSIX_HW_INT_CAUSES_REG_RF_KILL)
-		iwl_pcie_handle_rfkill_irq(trans);
+		iwl_pcie_handle_rfkill_irq(trans, true);
 
 	if (inta_hw & MSIX_HW_INT_CAUSES_REG_HW_ERR) {
 		IWL_ERR(trans,
drivers/net/wireless/intel/iwlwifi/pcie/trans.c +9 -8
index 796972f22432..c7ed35b3dd8d 100644
@@ -1080,7 +1080,7 @@ bool iwl_pcie_check_hw_rf_kill(struct iwl_trans *trans)
 	report = test_bit(STATUS_RFKILL_OPMODE, &trans->status);
 
 	if (prev != report)
-		iwl_trans_pcie_rf_kill(trans, report);
+		iwl_trans_pcie_rf_kill(trans, report, false);
 
 	return hw_rfkill;
 }
@@ -1234,7 +1234,7 @@ static void iwl_pcie_init_msix(struct iwl_trans_pcie *trans_pcie)
 	trans_pcie->hw_mask = trans_pcie->hw_init_mask;
 }
 
-static void _iwl_trans_pcie_stop_device(struct iwl_trans *trans)
+static void _iwl_trans_pcie_stop_device(struct iwl_trans *trans, bool from_irq)
 {
 	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
 
@@ -1261,7 +1261,8 @@ static void _iwl_trans_pcie_stop_device(struct iwl_trans *trans)
 	if (test_and_clear_bit(STATUS_DEVICE_ENABLED, &trans->status)) {
 		IWL_DEBUG_INFO(trans,
 			       "DEVICE_ENABLED bit was set and is now cleared\n");
-		iwl_pcie_synchronize_irqs(trans);
+		if (!from_irq)
+			iwl_pcie_synchronize_irqs(trans);
 		iwl_pcie_rx_napi_sync(trans);
 		iwl_pcie_tx_stop(trans);
 		iwl_pcie_rx_stop(trans);
@@ -1451,7 +1452,7 @@ void iwl_trans_pcie_handle_stop_rfkill(struct iwl_trans *trans,
 		clear_bit(STATUS_RFKILL_OPMODE, &trans->status);
 	}
 	if (hw_rfkill != was_in_rfkill)
-		iwl_trans_pcie_rf_kill(trans, hw_rfkill);
+		iwl_trans_pcie_rf_kill(trans, hw_rfkill, false);
 }
 
 static void iwl_trans_pcie_stop_device(struct iwl_trans *trans)
@@ -1466,12 +1467,12 @@ static void iwl_trans_pcie_stop_device(struct iwl_trans *trans)
 	mutex_lock(&trans_pcie->mutex);
 	trans_pcie->opmode_down = true;
 	was_in_rfkill = test_bit(STATUS_RFKILL_OPMODE, &trans->status);
-	_iwl_trans_pcie_stop_device(trans);
+	_iwl_trans_pcie_stop_device(trans, false);
 	iwl_trans_pcie_handle_stop_rfkill(trans, was_in_rfkill);
 	mutex_unlock(&trans_pcie->mutex);
 }
 
-void iwl_trans_pcie_rf_kill(struct iwl_trans *trans, bool state)
+void iwl_trans_pcie_rf_kill(struct iwl_trans *trans, bool state, bool from_irq)
 {
 	struct iwl_trans_pcie __maybe_unused *trans_pcie =
 		IWL_TRANS_GET_PCIE_TRANS(trans);
@@ -1484,7 +1485,7 @@ void iwl_trans_pcie_rf_kill(struct iwl_trans *trans, bool state)
 		if (trans->trans_cfg->gen2)
 			_iwl_trans_pcie_gen2_stop_device(trans);
 		else
-			_iwl_trans_pcie_stop_device(trans);
+			_iwl_trans_pcie_stop_device(trans, from_irq);
 	}
 }
 
@@ -2815,7 +2816,7 @@ static ssize_t iwl_dbgfs_rfkill_write(struct file *file,
 	IWL_WARN(trans, "changing debug rfkill %d->%d\n",
 		 trans_pcie->debug_rfkill, new_value);
 	trans_pcie->debug_rfkill = new_value;
-	iwl_pcie_handle_rfkill_irq(trans);
+	iwl_pcie_handle_rfkill_irq(trans, false);
 
 	return count;
 }
drivers/pci/pci.c +6 -0
index 8df156c28aad..5368a37154cf 100644
@@ -1302,6 +1302,9 @@ static int pci_set_full_power_state(struct pci_dev *dev)
 		pci_restore_bars(dev);
 	}
 
+	if (dev->bus->self)
+		pcie_aspm_pm_state_change(dev->bus->self);
+
 	return 0;
 }
 
@@ -1396,6 +1399,9 @@ static int pci_set_low_power_state(struct pci_dev *dev, pci_power_t state)
 				     pci_power_name(dev->current_state),
 				     pci_power_name(state));
 
+	if (dev->bus->self)
+		pcie_aspm_pm_state_change(dev->bus->self);
+
 	return 0;
 }
 
drivers/pci/pci.h +2 -0
index ffccb03933e2..ed6d75d138c7 100644
@@ -561,10 +561,12 @@ bool pcie_wait_for_link(struct pci_dev *pdev, bool active);
 #ifdef CONFIG_PCIEASPM
 void pcie_aspm_init_link_state(struct pci_dev *pdev);
 void pcie_aspm_exit_link_state(struct pci_dev *pdev);
+void pcie_aspm_pm_state_change(struct pci_dev *pdev);
 void pcie_aspm_powersave_config_link(struct pci_dev *pdev);
 #else
 static inline void pcie_aspm_init_link_state(struct pci_dev *pdev) { }
 static inline void pcie_aspm_exit_link_state(struct pci_dev *pdev) { }
+static inline void pcie_aspm_pm_state_change(struct pci_dev *pdev) { }
 static inline void pcie_aspm_powersave_config_link(struct pci_dev *pdev) { }
 #endif
 
drivers/pci/pcie/aspm.c +19 -0
index 5d1756f53ba8..25736d408e88 100644
@@ -1055,6 +1055,25 @@ void pcie_aspm_exit_link_state(struct pci_dev *pdev)
 	up_read(&pci_bus_sem);
 }
 
+/* @pdev: the root port or switch downstream port */
+void pcie_aspm_pm_state_change(struct pci_dev *pdev)
+{
+	struct pcie_link_state *link = pdev->link_state;
+
+	if (aspm_disabled || !link)
+		return;
+	/*
+	 * Devices changed PM state, we should recheck if latency
+	 * meets all functions' requirement
+	 */
+	down_read(&pci_bus_sem);
+	mutex_lock(&aspm_lock);
+	pcie_update_aspm_capable(link->root);
+	pcie_config_aspm_path(link);
+	mutex_unlock(&aspm_lock);
+	up_read(&pci_bus_sem);
+}
+
 void pcie_aspm_powersave_config_link(struct pci_dev *pdev)
 {
 	struct pcie_link_state *link = pdev->link_state;
drivers/video/fbdev/imsttfb.c +3 -3
index b194e71f07bf..aa51cb72cbba 100644
@@ -1419,7 +1419,6 @@ static int init_imstt(struct fb_info *info)
 	if ((info->var.xres * info->var.yres) * (info->var.bits_per_pixel >> 3) > info->fix.smem_len
 	    || !(compute_imstt_regvals(par, info->var.xres, info->var.yres))) {
 		printk("imsttfb: %ux%ux%u not supported\n", info->var.xres, info->var.yres, info->var.bits_per_pixel);
-		framebuffer_release(info);
 		return -ENODEV;
 	}
 
@@ -1452,10 +1451,11 @@ static int init_imstt(struct fb_info *info)
 	              FBINFO_HWACCEL_FILLRECT |
 	              FBINFO_HWACCEL_YPAN;
 
-	fb_alloc_cmap(&info->cmap, 0, 0);
+	if (fb_alloc_cmap(&info->cmap, 0, 0))
+		return -ENODEV;
 
 	if (register_framebuffer(info) < 0) {
-		framebuffer_release(info);
+		fb_dealloc_cmap(&info->cmap);
 		return -ENODEV;
 	}
 
fs/9p/cache.c +2 -0
index cebba4eaa0b5..12c0ae29f185 100644
@@ -68,6 +68,8 @@ void v9fs_cache_inode_get_cookie(struct inode *inode)
 				       &path, sizeof(path),
 				       &version, sizeof(version),
 				       i_size_read(&v9inode->netfs.inode));
+	if (v9inode->netfs.cache)
+		mapping_set_release_always(inode->i_mapping);
 
 	p9_debug(P9_DEBUG_FSC, "inode %p get cookie %p\n",
 		 inode, v9fs_inode_cookie(v9inode));
fs/afs/internal.h +2 -0
index fcbb598d8c85..a25fdc3e5231 100644
@@ -682,6 +682,8 @@ static inline void afs_vnode_set_cache(struct afs_vnode *vnode,
 {
 #ifdef CONFIG_AFS_FSCACHE
 	vnode->netfs.cache = cookie;
+	if (cookie)
+		mapping_set_release_always(vnode->netfs.inode.i_mapping);
 #endif
 }
 
fs/btrfs/delalloc-space.c +1 -1
index 0b62ce77053f..f2bc5563c0f9 100644
@@ -197,7 +197,7 @@ void btrfs_free_reserved_data_space(struct btrfs_inode *inode,
 	start = round_down(start, fs_info->sectorsize);
 
 	btrfs_free_reserved_data_space_noquota(fs_info, len);
-	btrfs_qgroup_free_data(inode, reserved, start, len);
+	btrfs_qgroup_free_data(inode, reserved, start, len, NULL);
 }
 
 /**
fs/btrfs/file-item.c +1 -1
index b14d2da9b26d..14478da87531 100644
@@ -602,7 +602,7 @@ int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end,
 			}
 
 			sums->bytenr = start;
-			sums->len = (int)size;
+			sums->len = size;
 
 			offset = (start - key.offset) >> fs_info->sectorsize_bits;
 			offset *= csum_size;
fs/btrfs/file.c +1 -1
index 0a46fff3dd06..1783a0fbf166 100644
@@ -3191,7 +3191,7 @@ static long btrfs_fallocate(struct file *file, int mode,
 			qgroup_reserved -= range->len;
 		} else if (qgroup_reserved > 0) {
 			btrfs_qgroup_free_data(BTRFS_I(inode), data_reserved,
-					       range->start, range->len);
+					       range->start, range->len, NULL);
 			qgroup_reserved -= range->len;
 		}
 		list_del(&range->list);
fs/btrfs/inode.c +8 -8
index 81eac121c6b2..9a7d77c410e2 100644
@@ -466,7 +466,7 @@ static noinline int cow_file_range_inline(struct btrfs_inode *inode, u64 size,
 	 * And at reserve time, it's always aligned to page size, so
 	 * just free one page here.
 	 */
-	btrfs_qgroup_free_data(inode, NULL, 0, PAGE_SIZE);
+	btrfs_qgroup_free_data(inode, NULL, 0, PAGE_SIZE, NULL);
 	btrfs_free_path(path);
 	btrfs_end_transaction(trans);
 	return ret;
@@ -5372,7 +5372,7 @@ static void evict_inode_truncate_pages(struct inode *inode)
 		 */
 		if (state_flags & EXTENT_DELALLOC)
 			btrfs_qgroup_free_data(BTRFS_I(inode), NULL, start,
-					       end - start + 1);
+					       end - start + 1, NULL);
 
 		clear_extent_bit(io_tree, start, end,
 				 EXTENT_CLEAR_ALL_BITS | EXTENT_DO_ACCOUNTING,
@@ -8440,7 +8440,7 @@ static void btrfs_invalidate_folio(struct folio *folio, size_t offset,
 		 *    reserved data space.
 		 *    Since the IO will never happen for this page.
 		 */
-		btrfs_qgroup_free_data(inode, NULL, cur, range_end + 1 - cur);
+		btrfs_qgroup_free_data(inode, NULL, cur, range_end + 1 - cur, NULL);
 		if (!inode_evicting) {
 			clear_extent_bit(tree, cur, range_end, EXTENT_LOCKED |
 				 EXTENT_DELALLOC | EXTENT_UPTODATE |
@@ -9902,7 +9902,7 @@ static struct btrfs_trans_handle *insert_prealloc_file_extent(
 	struct btrfs_path *path;
 	u64 start = ins->objectid;
 	u64 len = ins->offset;
-	int qgroup_released;
+	u64 qgroup_released = 0;
 	int ret;
 
 	memset(&stack_fi, 0, sizeof(stack_fi));
@@ -9915,9 +9915,9 @@ static struct btrfs_trans_handle *insert_prealloc_file_extent(
 	btrfs_set_stack_file_extent_compression(&stack_fi, BTRFS_COMPRESS_NONE);
 	/* Encryption and other encoding is reserved and all 0 */
 
-	qgroup_released = btrfs_qgroup_release_data(inode, file_offset, len);
-	if (qgroup_released < 0)
-		return ERR_PTR(qgroup_released);
+	ret = btrfs_qgroup_release_data(inode, file_offset, len, &qgroup_released);
+	if (ret < 0)
+		return ERR_PTR(ret);
 
 	if (trans) {
 		ret = insert_reserved_file_extent(trans, inode,
@@ -10903,7 +10903,7 @@ ssize_t btrfs_do_encoded_write(struct kiocb *iocb, struct iov_iter *from,
 	btrfs_delalloc_release_metadata(inode, disk_num_bytes, ret < 0);
 out_qgroup_free_data:
 	if (ret < 0)
-		btrfs_qgroup_free_data(inode, data_reserved, start, num_bytes);
+		btrfs_qgroup_free_data(inode, data_reserved, start, num_bytes, NULL);
 out_free_data_space:
 	/*
 	 * If btrfs_reserve_extent() succeeded, then we already decremented
fs/btrfs/ordered-data.c +4 -3
index 0321753c16b9..1b2af4785c0e 100644
@@ -172,11 +172,12 @@ int btrfs_add_ordered_extent(struct btrfs_inode *inode, u64 file_offset,
 	struct rb_node *node;
 	struct btrfs_ordered_extent *entry;
 	int ret;
+	u64 qgroup_rsv = 0;
 
 	if (flags &
 	    ((1 << BTRFS_ORDERED_NOCOW) | (1 << BTRFS_ORDERED_PREALLOC))) {
 		/* For nocow write, we can release the qgroup rsv right now */
-		ret = btrfs_qgroup_free_data(inode, NULL, file_offset, num_bytes);
+		ret = btrfs_qgroup_free_data(inode, NULL, file_offset, num_bytes, &qgroup_rsv);
 		if (ret < 0)
 			return ret;
 		ret = 0;
@@ -185,7 +186,7 @@ int btrfs_add_ordered_extent(struct btrfs_inode *inode, u64 file_offset,
 		 * The ordered extent has reserved qgroup space, release now
 		 * and pass the reserved number for qgroup_record to free.
 		 */
-		ret = btrfs_qgroup_release_data(inode, file_offset, num_bytes);
+		ret = btrfs_qgroup_release_data(inode, file_offset, num_bytes, &qgroup_rsv);
 		if (ret < 0)
 			return ret;
 	}
@@ -203,7 +204,7 @@ int btrfs_add_ordered_extent(struct btrfs_inode *inode, u64 file_offset,
 	entry->inode = igrab(&inode->vfs_inode);
 	entry->compress_type = compress_type;
 	entry->truncated_len = (u64)-1;
-	entry->qgroup_rsv = ret;
+	entry->qgroup_rsv = qgroup_rsv;
 	entry->physical = (u64)-1;
 
 	ASSERT((flags & ~BTRFS_ORDERED_TYPE_FLAGS) == 0);
fs/btrfs/ordered-data.h +1 -1
index f59f2dbdb25e..cc3ca4bb9bd5 100644
@@ -20,7 +20,7 @@ struct btrfs_ordered_sum {
 	/*
 	 * this is the length in bytes covered by the sums array below.
 	 */
-	int len;
+	u32 len;
 	struct list_head list;
 	/* last field is a variable length array of csums */
 	u8 sums[];
fs/btrfs/qgroup.c +15 -10
index 26cabffd5971..96ec9ccc2ef6 100644
@@ -3833,13 +3833,14 @@ int btrfs_qgroup_reserve_data(struct btrfs_inode *inode,
 
 /* Free ranges specified by @reserved, normally in error path */
 static int qgroup_free_reserved_data(struct btrfs_inode *inode,
-			struct extent_changeset *reserved, u64 start, u64 len)
+				     struct extent_changeset *reserved,
+				     u64 start, u64 len, u64 *freed_ret)
 {
 	struct btrfs_root *root = inode->root;
 	struct ulist_node *unode;
 	struct ulist_iterator uiter;
 	struct extent_changeset changeset;
-	int freed = 0;
+	u64 freed = 0;
 	int ret;
 
 	extent_changeset_init(&changeset);
@@ -3880,7 +3881,9 @@ static int qgroup_free_reserved_data(struct btrfs_inode *inode,
 	}
 	btrfs_qgroup_free_refroot(root->fs_info, root->root_key.objectid, freed,
 				  BTRFS_QGROUP_RSV_DATA);
-	ret = freed;
+	if (freed_ret)
+		*freed_ret = freed;
+	ret = 0;
 out:
 	extent_changeset_release(&changeset);
 	return ret;
@@ -3888,7 +3891,7 @@ static int qgroup_free_reserved_data(struct btrfs_inode *inode,
 
 static int __btrfs_qgroup_release_data(struct btrfs_inode *inode,
 			struct extent_changeset *reserved, u64 start, u64 len,
-			int free)
+			u64 *released, int free)
 {
 	struct extent_changeset changeset;
 	int trace_op = QGROUP_RELEASE;
@@ -3900,7 +3903,7 @@ static int __btrfs_qgroup_release_data(struct btrfs_inode *inode,
 	/* In release case, we shouldn't have @reserved */
 	WARN_ON(!free && reserved);
 	if (free && reserved)
-		return qgroup_free_reserved_data(inode, reserved, start, len);
+		return qgroup_free_reserved_data(inode, reserved, start, len, released);
 	extent_changeset_init(&changeset);
 	ret = clear_record_extent_bits(&inode->io_tree, start, start + len -1,
 				       EXTENT_QGROUP_RESERVED, &changeset);
@@ -3915,7 +3918,8 @@ static int __btrfs_qgroup_release_data(struct btrfs_inode *inode,
 		btrfs_qgroup_free_refroot(inode->root->fs_info,
 				inode->root->root_key.objectid,
 				changeset.bytes_changed, BTRFS_QGROUP_RSV_DATA);
-	ret = changeset.bytes_changed;
+	if (released)
+		*released = changeset.bytes_changed;
 out:
 	extent_changeset_release(&changeset);
 	return ret;
@@ -3934,9 +3938,10 @@ static int __btrfs_qgroup_release_data(struct btrfs_inode *inode,
  * NOTE: This function may sleep for memory allocation.
  */
 int btrfs_qgroup_free_data(struct btrfs_inode *inode,
-			struct extent_changeset *reserved, u64 start, u64 len)
+			   struct extent_changeset *reserved,
+			   u64 start, u64 len, u64 *freed)
 {
-	return __btrfs_qgroup_release_data(inode, reserved, start, len, 1);
+	return __btrfs_qgroup_release_data(inode, reserved, start, len, freed, 1);
 }
 
 /*
@@ -3954,9 +3959,9 @@ int btrfs_qgroup_free_data(struct btrfs_inode *inode,
  *
  * NOTE: This function may sleep for memory allocation.
  */
-int btrfs_qgroup_release_data(struct btrfs_inode *inode, u64 start, u64 len)
+int btrfs_qgroup_release_data(struct btrfs_inode *inode, u64 start, u64 len, u64 *released)
 {
-	return __btrfs_qgroup_release_data(inode, NULL, start, len, 0);
+	return __btrfs_qgroup_release_data(inode, NULL, start, len, released, 0);
 }
 
 static void add_root_meta_rsv(struct btrfs_root *root, int num_bytes,
fs/btrfs/qgroup.h +2 -2
index 578c77e94200..c382923f7628 100644
@@ -360,10 +360,10 @@ int btrfs_verify_qgroup_counts(struct btrfs_fs_info *fs_info, u64 qgroupid,
 /* New io_tree based accurate qgroup reserve API */
 int btrfs_qgroup_reserve_data(struct btrfs_inode *inode,
 			struct extent_changeset **reserved, u64 start, u64 len);
-int btrfs_qgroup_release_data(struct btrfs_inode *inode, u64 start, u64 len);
+int btrfs_qgroup_release_data(struct btrfs_inode *inode, u64 start, u64 len, u64 *released);
 int btrfs_qgroup_free_data(struct btrfs_inode *inode,
 			   struct extent_changeset *reserved, u64 start,
-			   u64 len);
+			   u64 len, u64 *freed);
 int btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
 			      enum btrfs_qgroup_rsv_type type, bool enforce);
 int __btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
fs/cachefiles/namei.c +2 -0
index 03ca8f2f657a..50b2ee163af6 100644
@@ -584,6 +584,8 @@ static bool cachefiles_open_file(struct cachefiles_object *object,
 	if (ret < 0)
 		goto check_failed;
 
+	clear_bit(FSCACHE_COOKIE_NO_DATA_TO_READ, &object->cookie->flags);
+
 	object->file = file;
 
 	/* Always update the atime on an object we've just looked up (this is
fs/ceph/cache.c +2 -0
index 177d8e8d73fe..de1dee46d3df 100644
@@ -36,6 +36,8 @@ void ceph_fscache_register_inode_cookie(struct inode *inode)
 				       &ci->i_vino, sizeof(ci->i_vino),
 				       &ci->i_version, sizeof(ci->i_version),
 				       i_size_read(inode));
+	if (ci->netfs.cache)
+		mapping_set_release_always(inode->i_mapping);
 }
 
 void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info *ci)
fs/ext4/move_extent.c +27 -21

17 lines not on this page · raw message

fs/f2fs/checkpoint.c +1 -1
index 5df04ed010ca..eb4d69f53337 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/compress.c +6 -9
index 11d9dce994db..4cb58e8d699e 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/data.c +6 -6
index ea05710ca9bd..3666c1fd77a6 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/dir.c +1 -1
index 8373eba3a133..510736d2ae11 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/f2fs.h +18 -17
index f56abb39601a..5c76ba764b71 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/file.c +10 -1
index d0c17366ebf4..9b9fb3c57ec6 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/inode.c +14 -4
index 1fc7760499f1..0010579f1736 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/node.h +9 -11
index 0aa48704c77a..7068f3ac036a 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/super.c +14 -12
index 1ba85ef97cbd..3805162dcef2 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/sysfs.c +1 -1
index 3d68bfa75cf2..751a108e612f 100644

Lines of this file are not shown. View the raw message.

fs/inode.c +2 -0
index 73ad1b0d4775..8cfda7a6d590 100644

Lines of this file are not shown. View the raw message.

fs/nfs/fscache.c +3 -0
index e731c00a9fcb..d3c938dd2b12 100644

Lines of this file are not shown. View the raw message.

fs/smb/client/cifsglob.h +0 -1
index 512ac9dea978..7f1aea4c11b9 100644

Lines of this file are not shown. View the raw message.

fs/smb/client/connect.c +5 -2
index f725a119ce31..49fdc6dfdcf8 100644

Lines of this file are not shown. View the raw message.

fs/smb/client/fscache.c +2 -0
index e73625b5d0cc..f64bad513ba6 100644

Lines of this file are not shown. View the raw message.

fs/smb/client/inode.c +1 -1
index 7be51f9d2fa1..5343898bac8a 100644

Lines of this file are not shown. View the raw message.

fs/smb/client/smb2file.c +1 -1
index ba6cc50af390..a7475bc05cac 100644

Lines of this file are not shown. View the raw message.

fs/smb/client/smb2misc.c +1 -1
index 88942b1fb431..fdf7a7f188c5 100644

Lines of this file are not shown. View the raw message.

fs/smb/client/smb2ops.c +30 -18

48 lines not on this page · raw message

fs/smb/client/smb2pdu.c +7 -9
index 05ff8a457a3d..2dfbf1b23cfa 100644

Lines of this file are not shown. View the raw message.

fs/smb/client/smb2pdu.h +1 -1
index 1237bb86e93a..a5773a06aba8 100644

Lines of this file are not shown. View the raw message.

fs/smb/common/smb2pdu.h +24 -18

42 lines not on this page · raw message

fs/smb/server/smb2ops.c +4 -4
index 535402629655..27a9dce3e03a 100644

Lines of this file are not shown. View the raw message.

fs/smb/server/smb2pdu.c +3 -5
index ea48dd06d4da..6e5ed0ac578a 100644

Lines of this file are not shown. View the raw message.

fs/splice.c +31 -3
index 5969b7a1d353..d0230cf8ec57 100644

Lines of this file are not shown. View the raw message.

include/linux/bpf.h +11 -2
index 3ce9e39ecdb8..ba22cf4f5fc0 100644

Lines of this file are not shown. View the raw message.

include/linux/bpf_verifier.h +1 -0
index 1a32baa78ce2..f080ccf27d25 100644

Lines of this file are not shown. View the raw message.

include/linux/f2fs_fs.h +4 -5
index ee0d75d9a302..1e0df607e40c 100644

Lines of this file are not shown. View the raw message.

include/linux/fs.h +1 -0
index b6af6abc7a77..4a1911dcf834 100644

Lines of this file are not shown. View the raw message.

include/linux/group_cpus.h new file +14 -0
new file mode 100644
index 000000000000..e42807ec61f6

Lines of this file are not shown. View the raw message.

include/linux/net.h +1 -0
index 18d942bbdf6e..25baca60f6cb 100644

Lines of this file are not shown. View the raw message.

include/linux/pagemap.h +33 -0
index 03307b72de6c..1be5a1fa6a3a 100644

Lines of this file are not shown. View the raw message.

include/linux/skmsg.h +1 -0
index c1637515a8a4..c953b8c0d2f4 100644

Lines of this file are not shown. View the raw message.

include/linux/socket.h +3 -0
index 1db29aab8f9c..b3c58042bd25 100644

Lines of this file are not shown. View the raw message.

include/linux/splice.h +1 -0
index a55179fd60fc..41a70687be85 100644

Lines of this file are not shown. View the raw message.

include/linux/udp.h +42 -27

69 lines not on this page · raw message

include/net/af_unix.h +1 -0
index 480fa579787e..55ca217c626b 100644

Lines of this file are not shown. View the raw message.

include/net/inet_common.h +1 -0
index cec453c18f1d..4673bbfd2811 100644

Lines of this file are not shown. View the raw message.

include/net/ip.h +1 -1
index c286344628db..c83c09c65623 100644

Lines of this file are not shown. View the raw message.

include/net/netfilter/nf_conntrack_act_ct.h +17 -13
index 078d3c52c03f..e5f2f0b73a9a 100644

Lines of this file are not shown. View the raw message.

include/net/netfilter/nf_flow_table.h +17 -4
index cd982f4a0f50..dde4dd9c4012 100644

Lines of this file are not shown. View the raw message.

include/net/netfilter/nf_tables_ipv4.h +3 -3
index c4a6147b0ef8..5225d2bd1a6e 100644

Lines of this file are not shown. View the raw message.

include/net/sock.h +16 -7
index b6027b01c245..6b51e85ae69e 100644

Lines of this file are not shown. View the raw message.

include/net/tcp.h +1 -0
index c3d56b337f35..4c838f7290dd 100644

Lines of this file are not shown. View the raw message.

include/net/udp.h +1 -0
index fee053bcd17c..fa4cdbe55552 100644

Lines of this file are not shown. View the raw message.

include/net/udp_tunnel.h +3 -6
index 72394f441dad..e5f81710b18f 100644

Lines of this file are not shown. View the raw message.

io_uring/net.c +2 -0
index 57c626cb4d1a..67f09a40bcb2 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/core.c +21 -4
index 7225cb67c0d3..76bf1de26115 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/trampoline.c +2 -2
index c4381dfcd6b0..748ac8616994 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/verifier.c +110 -52

162 lines not on this page · raw message

kernel/cpu.c +36 -6

42 lines not on this page · raw message

kernel/irq/affinity.c +9 -396

405 lines not on this page · raw message

kernel/rcu/srcutree.c +29 -2
index 8fdf07672038..929dcbc04d29 100644

Lines of this file are not shown. View the raw message.

kernel/trace/ring_buffer.c +2 -2
index 06d52525407b..71cad4f1323c 100644

Lines of this file are not shown. View the raw message.

lib/Makefile +2 -0
index 5ffe72ec9979..6f1611d053e6 100644

Lines of this file are not shown. View the raw message.

lib/group_cpus.c new file +438 -0

438 lines not on this page · raw message

mm/filemap.c +2 -0
index 10fe6430693b..2809b1174f04 100644

Lines of this file are not shown. View the raw message.

mm/huge_memory.c +1 -2
index 2753fb54cdf3..59577946735b 100644

Lines of this file are not shown. View the raw message.

mm/internal.h +11 -0
index 6b7ef495b56d..d01130efce5f 100644

Lines of this file are not shown. View the raw message.

mm/khugepaged.c +11 -11
index ef72d3df4b65..65bd0b105266 100644

Lines of this file are not shown. View the raw message.

mm/memory-failure.c +4 -5
index ebd717157c81..5b846ed5dcbe 100644

Lines of this file are not shown. View the raw message.

mm/memory.c +2 -2
index 0d1b3ee8fcd7..fc8b264ec0ca 100644

Lines of this file are not shown. View the raw message.

mm/memory_hotplug.c +7 -8
index bd2570b4f9b7..3b9d3a4b4386 100644

Lines of this file are not shown. View the raw message.

mm/migrate.c +1 -2
index 91bd69c61148..c93dd6a31c31 100644

Lines of this file are not shown. View the raw message.

mm/page-writeback.c +1 -1
index 7e9d8d857ecc..de5f69921b94 100644

Lines of this file are not shown. View the raw message.

mm/truncate.c +2 -4
index c0be77e5c008..0d4dd233f518 100644

Lines of this file are not shown. View the raw message.

mm/vmscan.c +4 -4
index 3f090faa6377..9f3cfb7caa48 100644

Lines of this file are not shown. View the raw message.

net/can/j1939/socket.c +6 -4
index 9c828067b448..b0be23559243 100644

Lines of this file are not shown. View the raw message.

net/can/raw.c +1 -0
index 8c104339d538..488320738e31 100644

Lines of this file are not shown. View the raw message.

net/core/skbuff.c +6 -4
index 73b1e0e53534..8a819d0a7bfb 100644

Lines of this file are not shown. View the raw message.

net/core/skmsg.c +2 -0
index a5c1f67dc96e..3818035ea002 100644

Lines of this file are not shown. View the raw message.

net/core/sock.c +12 -4
index 4305e55dbfba..c50a14a02edd 100644

Lines of this file are not shown. View the raw message.

net/core/sock_map.c +2 -0
index 38e01f82f2ef..91140bc0541f 100644

Lines of this file are not shown. View the raw message.

net/dns_resolver/dns_key.c +9 -10
index 03f8f33dc134..8324e9f97066 100644

Lines of this file are not shown. View the raw message.

net/ethtool/netlink.c +1 -1
index 1a4c11356c96..fc4ccecf9495 100644

Lines of this file are not shown. View the raw message.

net/ipv4/af_inet.c +18 -0
index 5d379df90c82..347c3768df6e 100644

Lines of this file are not shown. View the raw message.

net/ipv4/ip_output.c +2 -2
index 493c679ea54f..e19ef88ae181 100644

Lines of this file are not shown. View the raw message.

net/ipv4/ip_sockglue.c +1 -1
index 63aa52becd88..c1fb7580ea58 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp.c +18 -2
index 58409ea2da0a..0b7844a8d571 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_ipv4.c +1 -0
index 7ebbbe561e40..be2c807eed15 100644

Lines of this file are not shown. View the raw message.

net/ipv4/udp.c +40 -66

106 lines not on this page · raw message

net/ipv4/udp_offload.c +2 -2
index 6d1a4bec2614..8096576fd9bd 100644

Lines of this file are not shown. View the raw message.

net/ipv4/udp_tunnel_core.c +1 -1
index 5f8104cf082d..732e21b75ba2 100644

Lines of this file are not shown. View the raw message.

net/ipv4/xfrm4_input.c +2 -2
index eac206a290d0..183f6dc37242 100644

Lines of this file are not shown. View the raw message.

net/ipv6/af_inet6.c +1 -0
index b5309ae87fd7..a2f29ca51600 100644

Lines of this file are not shown. View the raw message.

net/ipv6/ip6_output.c +2 -2
index 3c2b2a85de36..e9ae084d038d 100644

Lines of this file are not shown. View the raw message.

net/ipv6/ping.c +1 -1
index 4d5a27dd9a4b..a5d7d1915ba7 100644

Lines of this file are not shown. View the raw message.

net/ipv6/raw.c +1 -1
index df3abd9e5237..dc31752a7edc 100644

Lines of this file are not shown. View the raw message.

net/ipv6/tcp_ipv6.c +1 -0
index 7be89dcfd5fc..ba9a22db5805 100644

Lines of this file are not shown. View the raw message.

net/ipv6/udp.c +27 -11
index 64b36c2ba774..961106eda69d 100644

Lines of this file are not shown. View the raw message.

net/ipv6/xfrm6_input.c +2 -2
index 4907ab241d6b..4156387248e4 100644

Lines of this file are not shown. View the raw message.

net/l2tp/l2tp_core.c +3 -3
index 03608d3ded4b..8d21ff25f160 100644

Lines of this file are not shown. View the raw message.

net/mptcp/subflow.c +13 -0
index d611783c2601..8ed7769cae83 100644

Lines of this file are not shown. View the raw message.

net/netfilter/ipvs/ip_vs_xmit.c +1 -1
index 7243079ef354..b452eb3ddcec 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_flow_table_core.c +10 -3
index 81c26a96c30b..c1d99cb370b4 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_flow_table_inet.c +1 -1
index 0ccabf3fa6aa..9505f9d188ff 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_flow_table_ip.c +2 -2
index b350fe9d00b0..6feaac9ab05c 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_flow_table_offload.c +11 -7
index 4d9b99abe37d..1c26f03fc661 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_log_syslog.c +1 -1
index cb894f0d63e9..c66689ad2b49 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_tables_core.c +1 -1
index cee3e4e905ec..e0c117229ee9 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nft_immediate.c +1 -1
index 5f59dbab3e93..55fcf0280c5c 100644

Lines of this file are not shown. View the raw message.

net/netfilter/xt_length.c +1 -1
index 9fbfad13176f..ca730cedb5d4 100644

Lines of this file are not shown. View the raw message.

net/nfc/llcp_core.c +36 -3
index 1dac28136e6a..18be13fb9b75 100644

Lines of this file are not shown. View the raw message.

net/openvswitch/conntrack.c +1 -1
index c8eaf4234b2e..0591cfb289d5 100644

Lines of this file are not shown. View the raw message.

net/sched/act_ct.c +123 -42

165 lines not on this page · raw message

net/sched/em_text.c +3 -1
index 6f3c1fb2fb44..f176afb70559 100644

Lines of this file are not shown. View the raw message.

net/smc/smc_diag.c +1 -2
index 80ea7d954ece..801044e7d194 100644

Lines of this file are not shown. View the raw message.

net/socket.c +22 -7
index 04cba91c7cbe..639d76f20384 100644

Lines of this file are not shown. View the raw message.

net/unix/af_unix.c +0 -2
index 6dbeb8007333..be2ed7b0fe21 100644

Lines of this file are not shown. View the raw message.

net/unix/unix_bpf.c +5 -0
index 2f9d8271c6ec..7ea7c3a0d0d0 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +4 -0
index a88ed60dcd96..1c8ffc5cf97f 100644

Lines of this file are not shown. View the raw message.

sound/soc/fsl/fsl_rpmsg.c +8 -2
index bf94838bdbef..5c07a8ff0c9c 100644

Lines of this file are not shown. View the raw message.

sound/soc/mediatek/mt8186/mt8186-dai-adda.c +1 -1
index 094402470dc2..858b95b199dc 100644

Lines of this file are not shown. View the raw message.

sound/soc/meson/g12a-toacodec.c +4 -1
index ddc667956cf5..8d8d848ebd58 100644

Lines of this file are not shown. View the raw message.

sound/soc/meson/g12a-tohdmitx.c +7 -1
index 579a04ad4d19..154c324fdd42 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/bpf/verifier/ld_imm64.c +4 -4
index f9297900cea6..78f19c255f20 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/drivers/net/bonding/bond-arp-interval-causes-panic.sh +3 -3
index 71c00bfafbc9..2ff58fed76e2 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/mptcp/mptcp_join.sh +7 -7
index e52d513009fb..2107579e2939 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/vm/memfd_secret.c +3 -0
index 957b9e18c729..9b298f6a04b3 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.