Linux 6.1.72
Greg Kroah-Hartman
maintainerI'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_typeEugen 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
Greg Kroah-Hartman
maintainerMAINTAINERS +2 -0
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 pif (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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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/smb/client/smb2ops.c +30 -18
48 lines not on this page · raw message
fs/smb/common/smb2pdu.h +24 -18
42 lines not on this page · raw message
include/linux/udp.h +42 -27
69 lines not on this page · raw message
include/net/netfilter/nf_conntrack_act_ct.h +17 -13
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
lib/group_cpus.c new file +438 -0
438 lines not on this page · raw message
net/ipv4/udp.c +40 -66
106 lines not on this page · raw message
net/sched/act_ct.c +123 -42
165 lines not on this page · raw message
sound/soc/mediatek/mt8186/mt8186-dai-adda.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/verifier/ld_imm64.c +4 -4
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
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/mptcp_join.sh +7 -7
Lines of this file are not shown. View the raw message.
tools/testing/selftests/vm/memfd_secret.c +3 -0
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.