Linux 6.1.130
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.1.130 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
------------
Documentation/core-api/pin_user_pages.rst | 6 Documentation/networking/strparser.rst | 9 Makefile | 2 arch/arm64/boot/dts/mediatek/mt8183.dtsi | 1 arch/arm64/boot/dts/qcom/sm8350.dtsi | 2 arch/arm64/boot/dts/qcom/sm8450.dtsi | 4 arch/arm64/include/asm/mman.h | 9 arch/mips/include/asm/ptrace.h | 2 arch/mips/kernel/ptrace.c | 7 arch/powerpc/include/asm/book3s/64/hash-4k.h | 28 + arch/powerpc/include/asm/book3s/64/pgtable.h | 26 - arch/powerpc/lib/code-patching.c | 2 arch/riscv/include/asm/futex.h | 2 arch/x86/Kconfig | 3 arch/x86/events/core.c | 2 arch/x86/kernel/cpu/bugs.c | 20 - arch/x86/kernel/cpu/cyrix.c | 4 block/bfq-cgroup.c | 95 ++-- block/bfq-iosched.c | 191 ++++++---- block/bfq-iosched.h | 51 ++ drivers/bluetooth/btqca.c | 110 ++++- drivers/char/tpm/eventlog/acpi.c | 16 drivers/char/tpm/eventlog/efi.c | 13 drivers/char/tpm/eventlog/of.c | 3 drivers/char/tpm/tpm-chip.c | 1 drivers/clk/mediatek/clk-mt2701-bdp.c | 1 drivers/clk/mediatek/clk-mt2701-img.c | 1 drivers/clk/mediatek/clk-mt2701-vdec.c | 1 drivers/clk/mediatek/clk-mtk.c | 16 drivers/clk/mediatek/clk-mtk.h | 19 drivers/edac/qcom_edac.c | 4 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c | 14 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c | 3 drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c | 16 drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c | 25 - drivers/gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c | 8 drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 26 + drivers/gpu/drm/i915/display/intel_display.c | 18 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 3 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dsc.c | 3 drivers/gpu/drm/nouveau/nouveau_svm.c | 9 drivers/gpu/drm/rcar-du/rcar_mipi_dsi.c | 2 drivers/gpu/drm/rcar-du/rcar_mipi_dsi_regs.h | 1 drivers/gpu/drm/tidss/tidss_dispc.c | 22 + drivers/gpu/drm/tidss/tidss_irq.c | 2 drivers/i2c/busses/i2c-npcm7xx.c | 7 drivers/idle/intel_idle.c | 4 drivers/infiniband/hw/mlx5/counters.c | 8 drivers/infiniband/hw/mlx5/qp.c | 4 drivers/md/md-bitmap.c | 34 - drivers/md/md-bitmap.h | 9 drivers/md/md-cluster.c | 34 + drivers/md/md.c | 33 + drivers/media/cec/platform/stm32/stm32-cec.c | 9 drivers/media/i2c/ad5820.c | 18 drivers/media/i2c/imx274.c | 5 drivers/media/i2c/tc358743.c | 9 drivers/media/platform/mediatek/mdp/mtk_mdp_comp.c | 5 drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c | 2 drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c | 9 drivers/media/platform/samsung/exynos4-is/media-dev.c | 4 drivers/media/platform/st/stm32/stm32-dcmi.c | 27 - drivers/media/platform/ti/omap3isp/isp.c | 3 drivers/media/platform/xilinx/xilinx-csi2rxss.c | 8 drivers/media/rc/gpio-ir-recv.c | 10 drivers/media/rc/gpio-ir-tx.c | 9 drivers/media/rc/ir-rx51.c | 9 drivers/media/usb/uvc/uvc_ctrl.c | 99 ++++- drivers/media/usb/uvc/uvc_driver.c | 35 + drivers/media/usb/uvc/uvc_v4l2.c | 2 drivers/media/usb/uvc/uvcvideo.h | 10 drivers/mtd/nand/raw/cadence-nand-controller.c | 42 +- drivers/net/ethernet/cadence/macb.h | 2 drivers/net/ethernet/cadence/macb_main.c | 12 drivers/net/ethernet/freescale/enetc/enetc.c | 100 +++-- drivers/net/ethernet/ibm/ibmvnic.c | 85 +++- drivers/net/ethernet/ibm/ibmvnic.h | 3 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c | 2 drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c | 2 drivers/net/ethernet/netronome/nfp/bpf/cmsg.c | 2 drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 1 drivers/net/geneve.c | 16 drivers/net/gtp.c | 5 drivers/net/ipvlan/ipvlan_core.c | 24 - drivers/net/loopback.c | 14 drivers/net/usb/gl620a.c | 4 drivers/nvme/host/ioctl.c | 3 drivers/phy/rockchip/phy-rockchip-naneng-combphy.c | 5 drivers/phy/samsung/phy-exynos5-usbdrd.c | 12 drivers/phy/tegra/xusb-tegra186.c | 11 drivers/power/supply/da9150-fg.c | 4 drivers/scsi/scsi_lib.c | 22 - drivers/scsi/sd.c | 4 drivers/soc/mediatek/mtk-devapc.c | 36 - drivers/spi/atmel-quadspi.c | 172 ++++++--- drivers/tee/optee/supp.c | 35 - drivers/usb/gadget/function/f_midi.c | 2 drivers/usb/gadget/udc/core.c | 11 fs/afs/cell.c | 1 fs/afs/internal.h | 23 - fs/afs/server.c | 1 fs/afs/server_list.c | 114 +++++ fs/afs/vl_alias.c | 2 fs/afs/volume.c | 40 +- fs/overlayfs/copy_up.c | 2 fs/smb/client/smb2ops.c | 4 fs/squashfs/inode.c | 5 include/asm-generic/vmlinux.lds.h | 2 include/linux/mm.h | 26 + include/linux/netdevice.h | 2 include/linux/ptrace.h | 4 include/linux/skmsg.h | 2 include/linux/sunrpc/sched.h | 17 include/net/dst.h | 9 include/net/ip.h | 5 include/net/netfilter/nf_conntrack_expect.h | 2 include/net/route.h | 5 include/net/strparser.h | 2 include/net/tcp.h | 22 + include/trace/events/icmp.h | 67 +++ include/trace/events/oom.h | 36 + include/trace/events/sunrpc.h | 3 io_uring/net.c | 4 kernel/acct.c | 134 ++++--- kernel/bpf/syscall.c | 18 kernel/events/core.c | 17 kernel/events/uprobes.c | 5 kernel/sched/core.c | 2 kernel/trace/ftrace.c | 30 - kernel/trace/trace_events_hist.c | 30 - kernel/trace/trace_functions.c | 6 mm/gup.c | 31 + mm/madvise.c | 11 mm/memcontrol.c | 7 mm/memory.c | 4 mm/oom_kill.c | 14 net/bluetooth/l2cap_core.c | 9 net/bpf/test_run.c | 5 net/bridge/br_netfilter_hooks.c | 8 net/core/dev.c | 37 + net/core/drop_monitor.c | 29 - net/core/flow_dissector.c | 49 +- net/core/gro.c | 1 net/core/skbuff.c | 2 net/core/skmsg.c | 7 net/core/sysctl_net_core.c | 3 net/ipv4/arp.c | 2 net/ipv4/icmp.c | 24 - net/ipv4/ip_options.c | 3 net/ipv4/tcp.c | 29 + net/ipv4/tcp_bpf.c | 36 + net/ipv4/tcp_fastopen.c | 4 net/ipv4/tcp_input.c | 8 net/ipv4/tcp_ipv4.c | 2 net/ipv4/tcp_minisocks.c | 10 net/ipv6/ip6_tunnel.c | 4 net/ipv6/rpl_iptunnel.c | 58 +-- net/ipv6/seg6_iptunnel.c | 97 +++-- net/mptcp/pm_netlink.c | 5 net/mptcp/subflow.c | 15 net/netfilter/nf_conntrack_core.c | 2 net/netfilter/nf_conntrack_expect.c | 4 net/netfilter/nft_ct.c | 2 net/sched/sch_fifo.c | 3 net/strparser/strparser.c | 11 net/sunrpc/cache.c | 10 net/sunrpc/sched.c | 2 sound/pci/hda/hda_codec.c | 4 sound/pci/hda/patch_conexant.c | 1 sound/pci/hda/patch_cs8409-tables.c | 6 sound/pci/hda/patch_cs8409.c | 20 - sound/pci/hda/patch_cs8409.h | 5 sound/pci/hda/patch_realtek.c | 1 sound/soc/codecs/es8328.c | 15 sound/soc/fsl/fsl_micfil.c | 2 sound/soc/rockchip/rockchip_i2s_tdm.c | 4 sound/soc/sh/rz-ssi.c | 2 sound/usb/midi.c | 2 sound/usb/quirks.c | 1 179 files changed, 2149 insertions(+), 944 deletions(-)
Alexander Dahl (2):
spi: atmel-quadspi: Avoid overwriting delay register settings
spi: atmel-quadspi: Fix wrong register value written to MR
Andreas Schwab (1):
riscv/futex: sign extend compare value in atomic cmpxchg
Andrey Vatoropin (1):
power: supply: da9150-fg: fix potential overflow
AngeloGioacchino Del Regno (2):
clk: mediatek: clk-mtk: Add dummy clock ops
soc: mediatek: mtk-devapc: Switch to devm_clk_get_enabled()
Ard Biesheuvel (1):
vmlinux.lds: Ensure that const vars with relocations are mapped R/O
Arnd Bergmann (1):
sunrpc: suppress warnings for unused procfs functions
BH Hsieh (1):
phy: tegra: xusb: reset VBUS & ID OVERRIDE
Bence Csókás (1):
spi: atmel-qspi: Memory barriers after memory-mapped I/O
Breno Leitao (2):
net: Add non-RCU dev_getbyhwaddr() helper
arp: switch to dev_getbyhwaddr() in arp_req_set_public()
Caleb Sander Mateos (1):
nvme/ioctl: add missing space in err message
Carlos Galo (1):
mm: update mark_victim tracepoints fields
Catalin Marinas (1):
arm64: mte: Do not allow PROT_MTE on MAP_HUGETLB user mappings
Chen Ridong (1):
memcg: fix soft lockup in the OOM process
Chen-Yu Tsai (1):
arm64: dts: mediatek: mt8183: Disable DSI display output by default
Cheng Jiang (1):
Bluetooth: qca: Update firmware-name to support board specific nvm
Christian Brauner (2):
acct: perform last write from workqueue
acct: block access to kernel internal filesystems
Christophe Leroy (2):
powerpc/64s: Rewrite __real_pte() and __rpte_to_hidx() as static inline powerpc/code-patching: Fix KASAN hit by not flagging text patching area as VM_ALLOC
Chukun Pan (1):
phy: rockchip: naneng-combphy: compatible reset with old DT
Colin Ian King (1):
afs: remove variable nr_servers
Cong Wang (2):
flow_dissector: Fix handling of mixed port and port-range keys
flow_dissector: Fix port range key handling in BPF conversion
Csókás, Bence (1):
spi: atmel-quadspi: Create atmel_qspi_ops to support newer SoC families
Dan Carpenter (1):
ASoC: renesas: rz-ssi: Add a check for negative sample_space
Daniel Golle (3):
clk: mediatek: mt2701-vdec: fix conversion to mtk_clk_simple_probe
clk: mediatek: mt2701-bdp: add missing dummy clk
clk: mediatek: mt2701-img: add missing dummy clk
David Hildenbrand (1):
nouveau/svm: fix missing folio unlock + put after make_device_exclusive_range()
David Howells (3):
afs: Make it possible to find the volumes that are using a server
afs: Fix the server_list to unuse a displaced server rather than putting it
mm: Don't pin ZERO_PAGE in pin_user_pages()
Devarsh Thakkar (1):
drm/tidss: Fix race condition while handling interrupt registers
Dmitry Panchenko (1):
ALSA: usb-audio: Re-add sample rate quirk for Pioneer DJM-900NXS2
Douglas Gilbert (1):
scsi: core: Handle depopulation and restoration in progress
Eddie James (1):
tpm: Use managed allocation for bios event log
Eric Dumazet (1):
ipvlan: ensure network headers are in skb linear part
Fullway Wang (1):
media: mtk-vcodec: potential null pointer deference in SCP
Gavrilov Ilia (1):
drop_monitor: fix incorrect initialization order
Greg Kroah-Hartman (1):
Linux 6.1.130
Guillaume Nault (3):
ipv4: Convert icmp_route_lookup() to dscp_t.
ipv4: Convert ip_route_input() to dscp_t.
ipvlan: Prepare ipvlan_process_v4_outbound() to future .flowi4_tos conversion.
Haoxiang Li (2):
nfp: bpf: Add check for nfp_app_ctrl_msg_alloc()
smb: client: Add check for next_buffer in receive_encrypted_standard()
Harshal Chaudhari (1):
net: mvpp2: cls: Fixed Non IP flow, with vlan tag flow defination.
Ido Schimmel (4):
net: loopback: Avoid sending IP packets without an Ethernet header
ipv4: icmp: Pass full DS field to ip_route_input()
ipv4: icmp: Unmask upper DSCP bits in icmp_route_lookup()
ipvlan: Unmask upper DSCP bits in ipvlan_process_v4_outbound()
Igor Pylypiv (1):
scsi: core: Do not retry I/Os during depopulation
Jarkko Sakkinen (1):
tpm: Change to kvalloc() in eventlog/acpi.c
Jessica Zhang (1):
drm/msm/dpu: Disable dither in phys encoder cleanup
Jiaxun Yang (2):
ptrace: Introduce exception_ip arch hook mm/memory: Use exception ip to search exception tables
Jiayuan Chen (2):
strparser: Add read_sock callback
bpf: Fix wrong copied_seq calculation
Jill Donahue (1):
USB: gadget: f_midi: f_midi_complete to call queue_work
Jiri Slaby (SUSE) (1):
net: set the minimum for net_hotdata.netdev_budget_usecs
John Keeping (1):
ASoC: rockchip: i2s-tdm: fix shift config for SND_SOC_DAIFMT_DSP_[AB]
John Veness (1):
ALSA: hda/conexant: Add quirk for HP ProBook 450 G4 mute LED
Justin Iurman (5):
include: net: add static inline dst_dev_overhead() to dst.h
net: ipv6: seg6_iptunnel: mitigate 2-realloc issue
net: ipv6: fix dst ref loop on input in seg6 lwt
net: ipv6: rpl_iptunnel: mitigate 2-realloc issue
net: ipv6: fix dst ref loop on input in rpl lwt
Kailang Yang (1):
ALSA: hda/realtek: Fixup ALC225 depop procedure
Kan Liang (2):
perf/x86: Fix low freqency setting issue perf/core: Fix low freq setting via IOC_PERIOD
Kaustabh Chakraborty (1):
phy: exynos5-usbdrd: fix MPLL_MULTIPLIER and SSC_REFCLKSEL masks in refclk
Komal Bajaj (1):
EDAC/qcom: Correct interrupt enable register configuration
Krzysztof Kozlowski (4):
arm64: dts: qcom: trim addresses to 8 digits
arm64: dts: qcom: sm8450: Fix CDSP memory length
soc: mediatek: mtk-devapc: Fix leaking IO map on error paths
soc: mediatek: mtk-devapc: Fix leaking IO map on driver remove
Kuniyuki Iwashima (3):
geneve: Fix use-after-free in geneve_find_dev().
gtp: Suppress list corruption splat in gtp_net_exit_batch_rtnl().
geneve: Suppress list corruption splat in geneve_destroy_tunnels().
Luiz Augusto von Dentz (1):
Bluetooth: L2CAP: Fix L2CAP_ECRED_CONN_RSP response
Marijn Suijten (1):
drm/msm/dpu: Don't leak bits_per_component into random DSC_ENC fields
Mark Zhang (1):
IB/mlx5: Set and get correct qp_num for a DCT QP
Matthieu Baerts (NGI0) (1):
mptcp: reset when MPTCP opts are dropped after join
Michael Ellerman (1):
powerpc/64s/mm: Move __real_pte stubs into hash-4k.h
Mohammad Heib (1):
net: Clear old fragment checksum value in napi_reuse_skb
Nick Child (4):
ibmvnic: Return error code on TX scrq flush fail
ibmvnic: Introduce send sub-crq direct
ibmvnic: Add stat for tx direct vs tx batched
ibmvnic: Don't reference skb after sending to VIOS
Nick Hu (1):
net: axienet: Set mac_managed_pm
Nicolas Frattaroli (1):
ASoC: es8328: fix route from DAC to output
Nikita Zhandarovich (2):
ASoC: fsl_micfil: Enable default case in micfil_set_quality()
usbnet: gl620a: fix endpoint checking in genelink_bind()
Nikolay Kuratov (1):
ftrace: Avoid potential division by zero in function_stat_show()
Niravkumar L Rabara (3):
mtd: rawnand: cadence: fix error code in cadence_nand_init()
mtd: rawnand: cadence: use dma_map_resource for sdma address
mtd: rawnand: cadence: fix incorrect device in dma_unmap_single
Paolo Abeni (1):
mptcp: always handle address removal under msk socket lock
Paolo Valente (1):
block, bfq: split sync bfq_queues on a per-actuator basis
Patrick Bellasi (1):
x86/cpu/kvm: SRSO: Fix possible missing IBPB on VM-Exit
Patrisious Haddad (1):
RDMA/mlx5: Fix bind QP error cleanup flow
Pavel Begunkov (1):
io_uring/net: save msg_control for compat
Peilin He (1):
net/ipv4: add tracepoint for icmp_send
Phillip Lougher (1):
Squashfs: check the inode number is not the invalid value of zero
Philo Lu (1):
ipvs: Always clear ipvs_property flag in skb_scrub_packet()
Quang Le (1):
pfifo_tail_enqueue: Drop new packet when sch->limit == 0
Ricardo Cañuelo Navarro (1):
mm,madvise,hugetlb: check for 0-length range after end address adjustment
Ricardo Ribalda (4):
media: uvcvideo: Fix crash during unbind if gpio unit is in use
media: uvcvideo: Refactor iterators
media: uvcvideo: Only save async fh if success
media: uvcvideo: Remove dangling pointers
Roman Li (1):
drm/amd/display: Fix HPD after gpu reset
Roy Luo (2):
USB: gadget: core: create sysfs link between udc and gadget
usb: gadget: core: flush gadget workqueue after device removal
Russell Senior (1):
x86/CPU: Fix warm boot hang regression on AMD SC1100 SoC systems
Sabrina Dubroca (1):
tcp: drop secpath at the same time as we currently drop dst
Sean Anderson (1):
net: cadence: macb: Synchronize stats calculations
Sebastian Andrzej Siewior (1):
ftrace: Correct preemption accounting for function tracing.
Shay Drory (1):
net/mlx5: IRQ, Fix null string in debug print
Shigeru Yoshida (1):
bpf, test_run: Fix use-after-free issue in eth_skb_pkt_type()
Sohaib Nadeem (1):
drm/amd/display: fixed integer types and null check locations
Stephen Brennan (1):
SUNRPC: convert RPC_TASK_* constants to enum
Steven Rostedt (2):
ftrace: Do not add duplicate entries in subops manager ops
tracing: Fix bad hist from corrupting named_triggers list
Sumit Garg (1):
tee: optee: Fix supplicant wait loop
Takashi Iwai (1):
ALSA: usb-audio: Avoid dropping MIDI events at closing multiple ports
Thomas Gleixner (2):
sched/core: Prevent rescheduling when interrupts are disabled
intel_idle: Handle older CPUs, which stop the TSC in deeper C states, correctly
Tom Chung (1):
drm/amd/display: Disable PSR-SU on eDP panels
Tomi Valkeinen (2):
drm/tidss: Add simple K2G manual reset
drm/rcar-du: dsi: Fix PHY lock bit check
Tong Tiangen (1):
uprobes: Reject the shared zeropage in uprobe_write_opcode()
Trond Myklebust (1):
SUNRPC: Prevent looping due to rpc_signal_task() races
Tudor Ambarus (1):
spi: atmel-quadspi: Add support for configuring CS timing
Tyrone Ting (1):
i2c: npcm: disable interrupt enable bit before devm_request_irq
Uwe Kleine-König (1):
soc/mediatek: mtk-devapc: Convert to platform remove callback returning void
Vasiliy Kovalev (1):
ovl: fix UAF in ovl_dentry_update_reval by moving dput() in ovl_link_up
Ville Syrjälä (1):
drm/i915: Make sure all planes in use by the joiner have their crtc included
Vitaly Rodionov (1):
ALSA: hda/cirrus: Correct the full scale volume set logic
Wang Hai (1):
tcp: Defer ts_recent changes until req is owned
Wei Fang (5):
net: enetc: fix the off-by-one issue in enetc_map_tx_buffs()
net: enetc: keep track of correct Tx BD count in enetc_map_tx_tso_buffs()
net: enetc: update UDP checksum when updating originTimestamp field
net: enetc: correct the xdp_tx statistics
net: enetc: fix the off-by-one issue in enetc_map_tx_tso_buffs()
Wentao Liang (1):
ALSA: hda: Add error check for snd_ctl_rename_id() in snd_hda_create_dig_out_ctls()
Xin Long (1):
netfilter: allow exp not to be removed in nf_ct_find_expectation
Yan Zhai (1):
bpf: skip non exist keys in generic_map_lookup_batch
Yang Yingliang (2):
spi: atmel-quadspi: switch to use modern name
media: Switch to use dev_err_probe() helper
Ye Bin (1):
scsi: core: Clear driver private data when retrying request
Yu Kuai (5):
md/md-bitmap: replace md_bitmap_status() with a new helper md_bitmap_get_stats() md/md-cluster: fix spares warnings for __le64
md/md-bitmap: add 'sync_size' into struct md_bitmap_stats md/md-bitmap: Synchronize bitmap_get_stats() with bitmap lifetime block, bfq: fix bfqq uaf in bfq_limit_depth()
Yunfei Dong (1):
media: mediatek: vcodec: Fix H264 multi stateless decoder smatch warning
Zijun Hu (2):
Bluetooth: qca: Support downloading board id specific NVM for WCN7850
Bluetooth: qca: Fix poor RF performance for WCN6855
chr[] (1):
amdgpu/pm/legacy: fix suspend/resume issues
Greg Kroah-Hartman
maintainerDocumentation/core-api/pin_user_pages.rst +6 -0
@@ -113,6 +113,12 @@ pages: This also leads to limitations: there are only 31-10==21 bits available for a counter that increments 10 bits at a time. +* Because of that limitation, special handling is applied to the zero pages + when using FOLL_PIN. We only pretend to pin a zero page - we don't alter its + refcount or pincount at all (it is permanent, so there's no need). The + unpinning functions also don't do anything to a zero page. This is + transparent to the caller. + * Callers must specifically request "dma-pinned tracking of pages". In other words, just calling get_user_pages() will not suffice; a new set of functions, pin_user_page() and related, must be used.
Documentation/networking/strparser.rst +8 -1
@@ -112,7 +112,7 @@ Functions Callbacks ========= -There are six callbacks: +There are seven callbacks: ::
@@ -182,6 +182,13 @@ There are six callbacks: the length of the message. skb->len - offset may be greater then full_len since strparser does not trim the skb. + :: + + int (*read_sock)(struct strparser *strp, read_descriptor_t *desc, + sk_read_actor_t recv_actor); + + The read_sock callback is used by strparser instead of + sock->ops->read_sock, if provided. :: int (*read_sock_done)(struct strparser *strp, int err);
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 129 +SUBLEVEL = 130 EXTRAVERSION = NAME = Curry Ramen
arch/arm64/boot/dts/mediatek/mt8183.dtsi +1 -0
@@ -1753,6 +1753,7 @@ dsi0: dsi@14014000 { resets = <&mmsys MT8183_MMSYS_SW0_RST_B_DISP_DSI0>; phys = <&mipi_tx0>; phy-names = "dphy"; + status = "disabled"; }; mutex: mutex@14016000 {
arch/arm64/boot/dts/qcom/sm8350.dtsi +1 -1
@@ -2226,7 +2226,7 @@ compute-cb@3 { cdsp: remoteproc@98900000 { compatible = "qcom,sm8350-cdsp-pas"; - reg = <0 0x098900000 0 0x1400000>; + reg = <0 0x98900000 0 0x1400000>; interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_LEVEL_HIGH>, <&smp2p_cdsp_in 0 IRQ_TYPE_EDGE_RISING>,
arch/arm64/boot/dts/qcom/sm8450.dtsi +2 -2
@@ -2093,7 +2093,7 @@ compute-cb@3 { remoteproc_adsp: remoteproc@30000000 { compatible = "qcom,sm8450-adsp-pas"; - reg = <0 0x030000000 0 0x100>; + reg = <0 0x30000000 0 0x100>; interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>, <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
@@ -2159,7 +2159,7 @@ compute-cb@5 { remoteproc_cdsp: remoteproc@32300000 { compatible = "qcom,sm8450-cdsp-pas"; - reg = <0 0x032300000 0 0x1400000>; + reg = <0 0x32300000 0 0x10000>; interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>, <&smp2p_cdsp_in 0 IRQ_TYPE_EDGE_RISING>,
arch/arm64/include/asm/mman.h +6 -3
@@ -31,9 +31,12 @@ static inline unsigned long arch_calc_vm_flag_bits(struct file *file,* backed by tags-capable memory. The vm_flags may be overridden by a * filesystem supporting MTE (RAM-based). */ -if (system_supports_mte () && - ((flags &MAP_ANONYMOUS ) ||shmem_file (file))) -return VM_MTE_ALLOWED ; +if (system_supports_mte ()) { +if ((flags &MAP_ANONYMOUS ) && !(flags &MAP_HUGETLB )) +return VM_MTE_ALLOWED ; +if (shmem_file (file)) +return VM_MTE_ALLOWED ; + }return 0 ; }
arch/mips/include/asm/ptrace.h +2 -0
@@ -155,6 +155,8 @@ static inline long regs_return_value(struct pt_regs *regs) }#define instruction_pointer (regs) ((regs)->cp0_epc) +extern unsigned long exception_ip (struct pt_regs *regs); +#define exception_ip (regs) exception_ip(regs)#define profile_pc (regs) instruction_pointer(regs)extern asmlinkage long syscall_trace_enter (struct pt_regs *regs);
arch/mips/kernel/ptrace.c +7 -0
@@ -31,6 +31,7 @@#include <linux/seccomp.h> #include <linux/ftrace.h> +#include <asm/branch.h> #include <asm/byteorder.h> #include <asm/cpu.h> #include <asm/cpu-info.h>
@@ -48,6 +49,12 @@#define CREATE_TRACE_POINTS #include <trace/events/syscalls.h> +unsigned long exception_ip (struct pt_regs *regs) +{ +return exception_epc (regs); +} +EXPORT_SYMBOL (exception_ip); +/* * Called by kernel/ptrace.c when detaching.. *
arch/powerpc/include/asm/book3s/64/hash-4k.h +28 -0
@@ -89,6 +89,34 @@ static inline int hash__hugepd_ok(hugepd_t hpd) }#endif +/* +* With 4K page size the real_pte machinery is all nops. +*/ +static inline real_pte_t __real_pte (pte_t pte,pte_t *ptep,int offset) +{ +return (real_pte_t ){pte}; +} + +#define __rpte_to_pte (r) ((r).pte) + +static inline unsigned long __rpte_to_hidx (real_pte_t rpte,unsigned long index) +{ +return pte_val (__rpte_to_pte (rpte)) >>H_PAGE_F_GIX_SHIFT ; +} + +#define pte_iterate_hashed_subpages (rpte, psize, va, index, shift) \ + do { \ + index = 0; \ + shift = mmu_psize_defs[psize].shift; \ + +#define pte_iterate_hashed_end () } while(0) + +/* +* We expect this to be called only for user addresses or kernel virtual +* addresses other than the linear mapping. +*/ +#define pte_pagesize_index (mm, addr, pte) MMU_PAGE_4K +/* * 4K PTE format is different from 64K PTE format. Saving the hash_slot is just * a matter of returning the PTE bits that need to be modified. On 64K PTE,
arch/powerpc/include/asm/book3s/64/pgtable.h +0 -26
@@ -318,32 +318,6 @@ extern unsigned long pci_io_base;#ifndef __ASSEMBLY__ -/* -* This is the default implementation of various PTE accessors, it's -* used in all cases except Book3S with 64K pages where we have a -* concept of sub-pages -*/ -#ifndef __real_pte - -#define __real_pte (e, p, o) ((real_pte_t){(e)}) -#define __rpte_to_pte (r) ((r).pte) -#define __rpte_to_hidx (r,index) (pte_val(__rpte_to_pte(r)) >> H_PAGE_F_GIX_SHIFT) - -#define pte_iterate_hashed_subpages (rpte, psize, va, index, shift) \ - do { \ - index = 0; \ - shift = mmu_psize_defs[psize].shift; \ - -#define pte_iterate_hashed_end () } while(0) - -/* -* We expect this to be called only for user addresses or kernel virtual -* addresses other than the linear mapping. -*/ -#define pte_pagesize_index (mm, addr, pte) MMU_PAGE_4K - -#endif /* __real_pte */ -static inline unsigned long pte_update (struct mm_struct *mm,unsigned long addr,pte_t *ptep,unsigned long clr,unsigned long set,int huge)
arch/powerpc/lib/code-patching.c +1 -1
@@ -53,7 +53,7 @@ static int text_area_cpu_up(unsigned int cpu)unsigned long addr;int err; - area =get_vm_area (PAGE_SIZE ,VM_ALLOC ); + area =get_vm_area (PAGE_SIZE ,0 );if (!area) {WARN_ONCE (1 ,"Failed to create text area for cpu %d\n" , cpu);
arch/riscv/include/asm/futex.h +1 -1
@@ -93,7 +93,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, _ASM_EXTABLE_UACCESS_ERR(1b, 3b, %[r]) \ _ASM_EXTABLE_UACCESS_ERR(2b, 3b, %[r]) \ : [r] "+r" (ret), [v] "=&r" (val), [u] "+m" (*uaddr), [t] "=&r" (tmp) - : [ov] "Jr" (oldval), [nv] "Jr" (newval) + : [ov] "Jr" ((long)(int)oldval), [nv] "Jr" (newval) : "memory"); __disable_user_access();
arch/x86/Kconfig +2 -1
@@ -2506,7 +2506,8 @@ config CPU_IBPB_ENTRY depends on CPU_SUP_AMD && X86_64 default y help - Compile the kernel with support for the retbleed=ibpb mitigation. + Compile the kernel with support for the retbleed=ibpb and + spec_rstack_overflow={ibpb,ibpb-vmexit} mitigations. config CPU_IBRS_ENTRY bool "Enable IBRS on kernel entry"
arch/x86/events/core.c +1 -1
@@ -623,7 +623,7 @@ int x86_pmu_hw_config(struct perf_event *event)if (event->attr.type == event->pmu->type) event->hw.config |= event->attr.config &X86_RAW_EVENT_MASK ; -if (event->attr.sample_period && x86_pmu.limit_period) { +if (!event->attr.freq && x86_pmu.limit_period) {s64 left = event->attr.sample_period; x86_pmu.limit_period (event, &left);if (left > event->attr.sample_period)
arch/x86/kernel/cpu/bugs.c +14 -6
@@ -1092,6 +1092,8 @@ static void __init retbleed_select_mitigation(void)case RETBLEED_MITIGATION_IBPB :setup_force_cpu_cap (X86_FEATURE_ENTRY_IBPB ); +setup_force_cpu_cap (X86_FEATURE_IBPB_ON_VMEXIT ); + mitigate_smt = true;/* * IBPB on entry already obviates the need for
@@ -1101,8 +1103,6 @@ static void __init retbleed_select_mitigation(void)setup_clear_cpu_cap (X86_FEATURE_UNRET );setup_clear_cpu_cap (X86_FEATURE_RETHUNK ); - mitigate_smt = true; -/* * There is no need for RSB filling: entry_ibpb() ensures * all predictions, including the RSB, are invalidated,
@@ -2607,6 +2607,7 @@ static void __init srso_select_mitigation(void)if (IS_ENABLED (CONFIG_CPU_IBPB_ENTRY )) {if (has_microcode) {setup_force_cpu_cap (X86_FEATURE_ENTRY_IBPB ); +setup_force_cpu_cap (X86_FEATURE_IBPB_ON_VMEXIT ); srso_mitigation =SRSO_MITIGATION_IBPB ;/*
@@ -2616,6 +2617,13 @@ static void __init srso_select_mitigation(void)*/ setup_clear_cpu_cap (X86_FEATURE_UNRET );setup_clear_cpu_cap (X86_FEATURE_RETHUNK ); + +/* +* There is no need for RSB filling: entry_ibpb() ensures +* all predictions, including the RSB, are invalidated, +* regardless of IBPB implementation. +*/ +setup_clear_cpu_cap (X86_FEATURE_RSB_VMEXIT ); } }else {pr_err ("WARNING: kernel not compiled with CPU_IBPB_ENTRY.\n" );
@@ -2624,8 +2632,8 @@ static void __init srso_select_mitigation(void)break ;case SRSO_CMD_IBPB_ON_VMEXIT : -if (IS_ENABLED (CONFIG_CPU_SRSO )) { -if (!boot_cpu_has (X86_FEATURE_ENTRY_IBPB ) && has_microcode) { +if (IS_ENABLED (CONFIG_CPU_IBPB_ENTRY )) { +if (has_microcode) {setup_force_cpu_cap (X86_FEATURE_IBPB_ON_VMEXIT ); srso_mitigation =SRSO_MITIGATION_IBPB_ON_VMEXIT ;
@@ -2637,9 +2645,9 @@ static void __init srso_select_mitigation(void)setup_clear_cpu_cap (X86_FEATURE_RSB_VMEXIT ); } }else { -pr_err ("WARNING: kernel not compiled with CPU_SRSO.\n" ); +pr_err ("WARNING: kernel not compiled with CPU_IBPB_ENTRY.\n" ); goto pred_cmd; - } + }break ;default :
arch/x86/kernel/cpu/cyrix.c +2 -2
@@ -153,8 +153,8 @@ static void geode_configure(void)u8 ccr3;local_irq_save (flags); -/* Suspend on halt power saving and enable #SUSP pin */ -setCx86 (CX86_CCR2 ,getCx86 (CX86_CCR2 ) |0x88 ); +/* Suspend on halt power saving */ +setCx86 (CX86_CCR2 ,getCx86 (CX86_CCR2 ) |0x08 ); ccr3 =getCx86 (CX86_CCR3 );setCx86 (CX86_CCR3 , (ccr3 &0x0f ) |0x10 );/* enable MAPEN */
block/bfq-cgroup.c +50 -45
116 lines not on this page · raw message
block/bfq-iosched.c +126 -65
382 lines not on this page · raw message
block/bfq-iosched.h +41 -10
87 lines not on this page · raw message
drivers/bluetooth/btqca.c +90 -20
159 lines not on this page · raw message
drivers/char/tpm/eventlog/acpi.c +14 -2
@@ -14,6 +14,7 @@* Access to the event log extended by the TCG BIOS of PC platform */ +#include <linux/device.h> #include <linux/seq_file.h> #include <linux/fs.h> #include <linux/security.h>
@@ -62,6 +63,11 @@ static bool tpm_is_tpm2_log(void *bios_event_log, u64 len)return n ==0 ; } +static void tpm_bios_log_free (void *data) +{ +kvfree (data); +} +/* read binary bios log */ int tpm_read_log_acpi (struct tpm_chip *chip) {
@@ -135,7 +141,7 @@ int tpm_read_log_acpi(struct tpm_chip *chip) }/* malloc EventLog space */ - log->bios_event_log =kmalloc (len,GFP_KERNEL ); + log->bios_event_log =kvmalloc (len,GFP_KERNEL );if (!log->bios_event_log)return -ENOMEM ;
@@ -161,10 +167,16 @@ int tpm_read_log_acpi(struct tpm_chip *chip) goto err; } + ret =devm_add_action (&chip->dev, tpm_bios_log_free, log->bios_event_log); +if (ret) { + log->bios_event_log =NULL ; + goto err; + } +return format; err: -kfree (log->bios_event_log); +tpm_bios_log_free (log->bios_event_log); log->bios_event_log =NULL ;return ret; }
drivers/char/tpm/eventlog/efi.c +7 -6
@@ -6,6 +6,7 @@* Thiebaud Weksteen <[email protected]> */ +#include <linux/device.h> #include <linux/efi.h> #include <linux/tpm_eventlog.h>
@@ -55,7 +56,7 @@ int tpm_read_log_efi(struct tpm_chip *chip) }/* malloc EventLog space */ - log->bios_event_log =kmemdup (log_tbl->log, log_size,GFP_KERNEL ); + log->bios_event_log =devm_kmemdup (&chip->dev, log_tbl->log, log_size,GFP_KERNEL );if (!log->bios_event_log) { ret = -ENOMEM ; goto out;
@@ -76,7 +77,7 @@ int tpm_read_log_efi(struct tpm_chip *chip) MEMREMAP_WB);if (!final_tbl) {pr_err ("Could not map UEFI TPM final log\n" ); -kfree (log->bios_event_log); +devm_kfree (&chip->dev, log->bios_event_log); ret = -ENOMEM ; goto out; }
@@ -91,11 +92,11 @@ int tpm_read_log_efi(struct tpm_chip *chip)* Allocate memory for the 'combined log' where we will append the * 'final events log' to. */ - tmp =krealloc (log->bios_event_log, - log_size + final_events_log_size, -GFP_KERNEL ); + tmp =devm_krealloc (&chip->dev, log->bios_event_log, + log_size + final_events_log_size, +GFP_KERNEL );if (!tmp) { -kfree (log->bios_event_log); +devm_kfree (&chip->dev, log->bios_event_log); ret = -ENOMEM ; goto out; }
drivers/char/tpm/eventlog/of.c +2 -1
@@ -10,6 +10,7 @@* Read the event log created by the firmware on PPC64 */ +#include <linux/device.h> #include <linux/slab.h> #include <linux/of.h> #include <linux/tpm_eventlog.h>
@@ -65,7 +66,7 @@ int tpm_read_log_of(struct tpm_chip *chip)return -EIO ; } - log->bios_event_log =kmemdup (__va (base), size,GFP_KERNEL ); + log->bios_event_log =devm_kmemdup (&chip->dev,__va (base), size,GFP_KERNEL );if (!log->bios_event_log)return -ENOMEM ;
drivers/char/tpm/tpm-chip.c +0 -1
@@ -267,7 +267,6 @@ static void tpm_dev_release(struct device *dev)idr_remove (&dev_nums_idr, chip->dev_num);mutex_unlock (&idr_lock); -kfree (chip->log.bios_event_log);kfree (chip->work_space.context_buf);kfree (chip->work_space.session_buf);kfree (chip->allocated_banks);
drivers/clk/mediatek/clk-mt2701-bdp.c +1 -0
@@ -31,6 +31,7 @@ static const struct mtk_gate_regs bdp1_cg_regs = { GATE_MTK(_id, _name, _parent, &bdp1_cg_regs, _shift, &mtk_clk_gate_ops_setclr_inv)static const struct mtk_gate bdp_clks[] = { +GATE_DUMMY (CLK_DUMMY ,"bdp_dummy" ),GATE_BDP0 (CLK_BDP_BRG_BA ,"brg_baclk" ,"mm_sel" ,0 ),GATE_BDP0 (CLK_BDP_BRG_DRAM ,"brg_dram" ,"mm_sel" ,1 ),GATE_BDP0 (CLK_BDP_LARB_DRAM ,"larb_dram" ,"mm_sel" ,2 ),
drivers/clk/mediatek/clk-mt2701-img.c +1 -0
@@ -22,6 +22,7 @@ static const struct mtk_gate_regs img_cg_regs = { GATE_MTK(_id, _name, _parent, &img_cg_regs, _shift, &mtk_clk_gate_ops_setclr)static const struct mtk_gate img_clks[] = { +GATE_DUMMY (CLK_DUMMY ,"img_dummy" ),GATE_IMG (CLK_IMG_SMI_COMM ,"img_smi_comm" ,"mm_sel" ,0 ),GATE_IMG (CLK_IMG_RESZ ,"img_resz" ,"mm_sel" ,1 ),GATE_IMG (CLK_IMG_JPGDEC_SMI ,"img_jpgdec_smi" ,"mm_sel" ,5 ),
drivers/clk/mediatek/clk-mt2701-vdec.c +1 -0
@@ -31,6 +31,7 @@ static const struct mtk_gate_regs vdec1_cg_regs = { GATE_MTK(_id, _name, _parent, &vdec1_cg_regs, _shift, &mtk_clk_gate_ops_setclr_inv)static const struct mtk_gate vdec_clks[] = { +GATE_DUMMY (CLK_DUMMY ,"vdec_dummy" ),GATE_VDEC0 (CLK_VDEC_CKGEN ,"vdec_cken" ,"vdec_sel" ,0 ),GATE_VDEC1 (CLK_VDEC_LARB ,"vdec_larb_cken" ,"mm_sel" ,0 ), };
drivers/clk/mediatek/clk-mtk.c +16 -0
@@ -21,6 +21,22 @@#include "clk-gate.h" #include "clk-mux.h" +const struct mtk_gate_regs cg_regs_dummy = {0 ,0 ,0 }; +EXPORT_SYMBOL_GPL (cg_regs_dummy); + +static int mtk_clk_dummy_enable (struct clk_hw *hw) +{ +return 0 ; +} + +static void mtk_clk_dummy_disable (struct clk_hw *hw) { } + +const struct clk_ops mtk_clk_dummy_ops = { + .enable = mtk_clk_dummy_enable, + .disable = mtk_clk_dummy_disable, +}; +EXPORT_SYMBOL_GPL (mtk_clk_dummy_ops); +static void mtk_init_clk_data (struct clk_hw_onecell_data *clk_data,unsigned int clk_num) {
drivers/clk/mediatek/clk-mtk.h +19 -0
@@ -22,6 +22,25 @@struct platform_device ; +/* +* We need the clock IDs to start from zero but to maintain devicetree +* backwards compatibility we can't change bindings to start from zero. +* Only a few platforms are affected, so we solve issues given by the +* commonized MTK clocks probe function(s) by adding a dummy clock at +* the beginning where needed. +*/ +#define CLK_DUMMY 0 + +extern const struct clk_ops mtk_clk_dummy_ops; +extern const struct mtk_gate_regs cg_regs_dummy; + +#define GATE_DUMMY (_id, _name) { \ + .id = _id, \ + .name = _name, \ + .regs = &cg_regs_dummy, \ + .ops = &mtk_clk_dummy_ops, \ + } +struct mtk_fixed_clk {int id;const char *name;
drivers/edac/qcom_edac.c +2 -2
@@ -95,7 +95,7 @@ static int qcom_llcc_core_setup(struct llcc_drv_data *drv, struct regmap *llcc_b* Configure interrupt enable registers such that Tag, Data RAM related * interrupts are propagated to interrupt controller for servicing */ - ret =regmap_update_bits (llcc_bcast_regmap, drv->edac_reg_offset->cmn_interrupt_2_enable, + ret =regmap_update_bits (llcc_bcast_regmap, drv->edac_reg_offset->cmn_interrupt_0_enable,TRP0_INTERRUPT_ENABLE ,TRP0_INTERRUPT_ENABLE );if (ret)
@@ -113,7 +113,7 @@ static int qcom_llcc_core_setup(struct llcc_drv_data *drv, struct regmap *llcc_bif (ret)return ret; - ret =regmap_update_bits (llcc_bcast_regmap, drv->edac_reg_offset->cmn_interrupt_2_enable, + ret =regmap_update_bits (llcc_bcast_regmap, drv->edac_reg_offset->cmn_interrupt_0_enable,DRP0_INTERRUPT_ENABLE ,DRP0_INTERRUPT_ENABLE );if (ret)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c +14 -0
@@ -885,6 +885,7 @@ void amdgpu_dm_hpd_init(struct amdgpu_device *adev)struct drm_device *dev =adev_to_drm (adev);struct drm_connector *connector;struct drm_connector_list_iter iter; +int i;drm_connector_list_iter_begin (dev, &iter);drm_for_each_connector_iter (connector, &iter) {
@@ -906,6 +907,12 @@ void amdgpu_dm_hpd_init(struct amdgpu_device *adev) } }drm_connector_list_iter_end (&iter); + +/* Update reference counts for HPDs */ +for (i =DC_IRQ_SOURCE_HPD1 ; i <= adev->mode_info.num_hpd; i++) { +if (amdgpu_irq_get (adev, &adev->hpd_irq, i -DC_IRQ_SOURCE_HPD1 )) +drm_err (dev,"DM_IRQ: Failed get HPD for source=%d)!\n" , i); + } }/**
@@ -921,6 +928,7 @@ void amdgpu_dm_hpd_fini(struct amdgpu_device *adev)struct drm_device *dev =adev_to_drm (adev);struct drm_connector *connector;struct drm_connector_list_iter iter; +int i;drm_connector_list_iter_begin (dev, &iter);drm_for_each_connector_iter (connector, &iter) {
@@ -941,4 +949,10 @@ void amdgpu_dm_hpd_fini(struct amdgpu_device *adev) } }drm_connector_list_iter_end (&iter); + +/* Update reference counts for HPDs */ +for (i =DC_IRQ_SOURCE_HPD1 ; i <= adev->mode_info.num_hpd; i++) { +if (amdgpu_irq_put (adev, &adev->hpd_irq, i -DC_IRQ_SOURCE_HPD1 )) +drm_err (dev,"DM_IRQ: Failed put HPD for source=%d!\n" , i); + } }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c +2 -1
@@ -51,7 +51,8 @@ static bool link_supports_psrsu(struct dc_link *link) !link->dpcd_caps.psr_info.psr2_su_y_granularity_cap)return false; -return dc_dmub_check_min_version (dc->ctx->dmub_srv->dmub); +/* Temporarily disable PSR-SU to avoid glitches */ +return false; }/*
drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c +10 -6
@@ -1862,19 +1862,21 @@ static enum bp_result get_firmware_info_v3_2(/* Vega12 */ smu_info_v3_2 = GET_IMAGE(struct atom_smu_info_v3_2,DATA_TABLES (smu_info)); -DC_LOG_BIOS ("gpuclk_ss_percentage (unit of 0.001 percent): %d\n" , smu_info_v3_2->gpuclk_ss_percentage);if (!smu_info_v3_2)return BP_RESULT_BADBIOSTABLE ; +DC_LOG_BIOS ("gpuclk_ss_percentage (unit of 0.001 percent): %d\n" , smu_info_v3_2->gpuclk_ss_percentage); + info->default_engine_clk = smu_info_v3_2->bootup_dcefclk_10khz *10 ; }else if (revision.minor ==3 ) {/* Vega20 */ smu_info_v3_3 = GET_IMAGE(struct atom_smu_info_v3_3,DATA_TABLES (smu_info)); -DC_LOG_BIOS ("gpuclk_ss_percentage (unit of 0.001 percent): %d\n" , smu_info_v3_3->gpuclk_ss_percentage);if (!smu_info_v3_3)return BP_RESULT_BADBIOSTABLE ; +DC_LOG_BIOS ("gpuclk_ss_percentage (unit of 0.001 percent): %d\n" , smu_info_v3_3->gpuclk_ss_percentage); + info->default_engine_clk = smu_info_v3_3->bootup_dcefclk_10khz *10 ; }
@@ -2439,10 +2441,11 @@ static enum bp_result get_integrated_info_v11( info_v11 = GET_IMAGE(struct atom_integrated_system_info_v1_11,DATA_TABLES (integratedsysteminfo)); -DC_LOG_BIOS ("gpuclk_ss_percentage (unit of 0.001 percent): %d\n" , info_v11->gpuclk_ss_percentage);if (info_v11 ==NULL )return BP_RESULT_BADBIOSTABLE ; +DC_LOG_BIOS ("gpuclk_ss_percentage (unit of 0.001 percent): %d\n" , info_v11->gpuclk_ss_percentage); + info->gpu_cap_info =le32_to_cpu (info_v11->gpucapinfo);/*
@@ -2654,11 +2657,12 @@ static enum bp_result get_integrated_info_v2_1( info_v2_1 = GET_IMAGE(struct atom_integrated_system_info_v2_1,DATA_TABLES (integratedsysteminfo)); -DC_LOG_BIOS ("gpuclk_ss_percentage (unit of 0.001 percent): %d\n" , info_v2_1->gpuclk_ss_percentage);if (info_v2_1 ==NULL )return BP_RESULT_BADBIOSTABLE ; +DC_LOG_BIOS ("gpuclk_ss_percentage (unit of 0.001 percent): %d\n" , info_v2_1->gpuclk_ss_percentage); + info->gpu_cap_info =le32_to_cpu (info_v2_1->gpucapinfo);/*
@@ -2816,11 +2820,11 @@ static enum bp_result get_integrated_info_v2_2( info_v2_2 = GET_IMAGE(struct atom_integrated_system_info_v2_2,DATA_TABLES (integratedsysteminfo)); -DC_LOG_BIOS ("gpuclk_ss_percentage (unit of 0.001 percent): %d\n" , info_v2_2->gpuclk_ss_percentage); -if (info_v2_2 ==NULL )return BP_RESULT_BADBIOSTABLE ; +DC_LOG_BIOS ("gpuclk_ss_percentage (unit of 0.001 percent): %d\n" , info_v2_2->gpuclk_ss_percentage); + info->gpu_cap_info =le32_to_cpu (info_v2_2->gpucapinfo);/*
drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c +19 -6
@@ -3056,6 +3056,7 @@ static int kv_dpm_hw_init(void *handle)if (!amdgpu_dpm)return 0 ; +mutex_lock (&adev->pm.mutex);kv_dpm_setup_asic (adev); ret =kv_dpm_enable (adev);if (ret)
@@ -3063,6 +3064,8 @@ static int kv_dpm_hw_init(void *handle)else adev->pm.dpm_enabled = true;amdgpu_legacy_dpm_compute_clocks (adev); +mutex_unlock (&adev->pm.mutex); +return ret; }
@@ -3080,32 +3083,42 @@ static int kv_dpm_suspend(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; +cancel_work_sync (&adev->pm.dpm.thermal.work); +if (adev->pm.dpm_enabled) { +mutex_lock (&adev->pm.mutex); + adev->pm.dpm_enabled = false;/* disable dpm */ kv_dpm_disable (adev);/* reset the power state */ adev->pm.dpm.current_ps = adev->pm.dpm.requested_ps = adev->pm.dpm.boot_ps; +mutex_unlock (&adev->pm.mutex); }return 0 ; }static int kv_dpm_resume (void *handle) { -int ret; +int ret =0 ;struct amdgpu_device *adev = (struct amdgpu_device *)handle; -if (adev->pm.dpm_enabled) { +if (!amdgpu_dpm) +return 0 ; + +if (!adev->pm.dpm_enabled) { +mutex_lock (&adev->pm.mutex);/* asic init will reset to the boot state */ kv_dpm_setup_asic (adev); ret =kv_dpm_enable (adev); -if (ret) +if (ret) { adev->pm.dpm_enabled = false; -else + }else { adev->pm.dpm_enabled = true; -if (adev->pm.dpm_enabled)amdgpu_legacy_dpm_compute_clocks (adev); + } +mutex_unlock (&adev->pm.mutex); } -return 0 ; +return ret; }static bool kv_dpm_is_idle (void *handle)
drivers/gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c +6 -2
@@ -1018,9 +1018,12 @@ void amdgpu_dpm_thermal_work_handler(struct work_struct *work)enum amd_pm_state_type dpm_state =POWER_STATE_TYPE_INTERNAL_THERMAL ;int temp, size =sizeof (temp); -if (!adev->pm.dpm_enabled) -return ; +mutex_lock (&adev->pm.mutex); +if (!adev->pm.dpm_enabled) { +mutex_unlock (&adev->pm.mutex); +return ; + } if (!pp_funcs->read_sensor(adev->powerplay.pp_handle, AMDGPU_PP_SENSOR_GPU_TEMP, (void *)&temp,
@@ -1042,4 +1045,5 @@ void amdgpu_dpm_thermal_work_handler(struct work_struct *work) adev->pm.dpm.state = dpm_state;amdgpu_legacy_dpm_compute_clocks (adev->powerplay.pp_handle); +mutex_unlock (&adev->pm.mutex); }
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c +20 -6
@@ -7796,6 +7796,7 @@ static int si_dpm_hw_init(void *handle)if (!amdgpu_dpm)return 0 ; +mutex_lock (&adev->pm.mutex);si_dpm_setup_asic (adev); ret =si_dpm_enable (adev);if (ret)
@@ -7803,6 +7804,7 @@ static int si_dpm_hw_init(void *handle)else adev->pm.dpm_enabled = true;amdgpu_legacy_dpm_compute_clocks (adev); +mutex_unlock (&adev->pm.mutex);return ret; }
@@ -7820,32 +7822,44 @@ static int si_dpm_suspend(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; +cancel_work_sync (&adev->pm.dpm.thermal.work); +if (adev->pm.dpm_enabled) { +mutex_lock (&adev->pm.mutex); + adev->pm.dpm_enabled = false;/* disable dpm */ si_dpm_disable (adev);/* reset the power state */ adev->pm.dpm.current_ps = adev->pm.dpm.requested_ps = adev->pm.dpm.boot_ps; +mutex_unlock (&adev->pm.mutex); } +return 0 ; }static int si_dpm_resume (void *handle) { -int ret; +int ret =0 ;struct amdgpu_device *adev = (struct amdgpu_device *)handle; -if (adev->pm.dpm_enabled) { +if (!amdgpu_dpm) +return 0 ; + +if (!adev->pm.dpm_enabled) {/* asic init will reset to the boot state */ +mutex_lock (&adev->pm.mutex);si_dpm_setup_asic (adev); ret =si_dpm_enable (adev); -if (ret) +if (ret) { adev->pm.dpm_enabled = false; -else + }else { adev->pm.dpm_enabled = true; -if (adev->pm.dpm_enabled)amdgpu_legacy_dpm_compute_clocks (adev); + } +mutex_unlock (&adev->pm.mutex); } -return 0 ; + +return ret; }static bool si_dpm_is_idle (void *handle)
drivers/gpu/drm/i915/display/intel_display.c +18 -0
@@ -6691,12 +6691,30 @@ static int intel_async_flip_check_hw(struct intel_atomic_state *state, struct instatic int intel_bigjoiner_add_affected_crtcs (struct intel_atomic_state *state) {struct drm_i915_private *i915 =to_i915 (state->base.dev); +const struct intel_plane_state *plane_state;struct intel_crtc_state *crtc_state; +struct intel_plane *plane;struct intel_crtc *crtc;u8 affected_pipes =0 ;u8 modeset_pipes =0 ;int i; +/* +* Any plane which is in use by the joiner needs its crtc. +* Pull those in first as this will not have happened yet +* if the plane remains disabled according to uapi. +*/ +for_each_new_intel_plane_in_state (state, plane, plane_state, i) { + crtc =to_intel_crtc (plane_state->hw.crtc); +if (!crtc) +continue ; + + crtc_state =intel_atomic_get_crtc_state (&state->base, crtc); +if (IS_ERR (crtc_state)) +return PTR_ERR (crtc_state); + } + +/* Now pull in all joined crtcs */ for_each_new_intel_crtc_in_state (state, crtc, crtc_state, i) { affected_pipes |= crtc_state->bigjoiner_pipes;if (intel_crtc_needs_modeset (crtc_state))
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +3 -0
@@ -2059,6 +2059,9 @@ void dpu_encoder_helper_phys_cleanup(struct dpu_encoder_phys *phys_enc) } } +if (phys_enc->hw_pp && phys_enc->hw_pp->ops.setup_dither) + phys_enc->hw_pp->ops.setup_dither (phys_enc->hw_pp,NULL ); +/* reset the merge 3D HW block */ if (phys_enc->hw_pp && phys_enc->hw_pp->merge_3d) { phys_enc->hw_pp->merge_3d->ops.setup_3d_mode(phys_enc->hw_pp->merge_3d,
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_dsc.c +2 -1
@@ -46,6 +46,7 @@ static void dpu_hw_dsc_config(struct dpu_hw_dsc *hw_dsc,u32 slice_last_group_size;u32 det_thresh_flatness;bool is_cmd_mode = !(mode &DSC_MODE_VIDEO ); +bool input_10_bits = dsc->bits_per_component ==10 ;DPU_REG_WRITE (c,DSC_COMMON_MODE , mode);
@@ -62,7 +63,7 @@ static void dpu_hw_dsc_config(struct dpu_hw_dsc *hw_dsc, data |= (dsc->line_buf_depth <<3 ); data |= (dsc->simple_422 <<2 ); data |= (dsc->convert_rgb <<1 ); - data |= dsc->bits_per_component; + data |= input_10_bits;DPU_REG_WRITE (c,DSC_ENC , data);
drivers/gpu/drm/nouveau/nouveau_svm.c +7 -2
@@ -592,6 +592,7 @@ static int nouveau_atomic_range_fault(struct nouveau_svmm *svmm,unsigned long timeout = jiffies +msecs_to_jiffies (HMM_RANGE_DEFAULT_TIMEOUT );struct mm_struct *mm = svmm->notifier.mm; +struct folio *folio;struct page *page;unsigned long start = args->p.addr;unsigned long notifier_seq;
@@ -618,12 +619,16 @@ static int nouveau_atomic_range_fault(struct nouveau_svmm *svmm, ret = -EINVAL ; goto out; } + folio =page_folio (page);mutex_lock (&svmm->mutex);if (!mmu_interval_read_retry (¬ifier->notifier, notifier_seq))break ;mutex_unlock (&svmm->mutex); + +folio_unlock (folio); +folio_put (folio); }/* Map the page on the GPU. */
@@ -639,8 +644,8 @@ static int nouveau_atomic_range_fault(struct nouveau_svmm *svmm, ret =nvif_object_ioctl (&svmm->vmm->vmm.object, args, size,NULL );mutex_unlock (&svmm->mutex); -unlock_page (page); -put_page (page); +folio_unlock (folio); +folio_put (folio); out:mmu_interval_notifier_remove (¬ifier->notifier);
drivers/gpu/drm/rcar-du/rcar_mipi_dsi.c +1 -1
@@ -396,7 +396,7 @@ static int rcar_mipi_dsi_startup(struct rcar_mipi_dsi *dsi,for (timeout =10 ; timeout >0 ; --timeout) {if ((rcar_mipi_dsi_read (dsi,PPICLSR ) &PPICLSR_STPST ) && (rcar_mipi_dsi_read (dsi,PPIDLSR ) &PPIDLSR_STPST ) && - (rcar_mipi_dsi_read (dsi,CLOCKSET1 ) &CLOCKSET1_LOCK )) + (rcar_mipi_dsi_read (dsi,CLOCKSET1 ) &CLOCKSET1_LOCK_PHY ))break ;usleep_range (1000 ,2000 );
drivers/gpu/drm/rcar-du/rcar_mipi_dsi_regs.h +0 -1
@@ -141,7 +141,6 @@#define CLOCKSET1 0x101c#define CLOCKSET1_LOCK_PHY (1 << 17) -#define CLOCKSET1_LOCK (1 << 16)#define CLOCKSET1_CLKSEL (1 << 8)#define CLOCKSET1_CLKINSEL_EXTAL (0 << 2)#define CLOCKSET1_CLKINSEL_DIG (1 << 2)
drivers/gpu/drm/tidss/tidss_dispc.c +20 -2
@@ -2655,14 +2655,32 @@ static void dispc_init_errata(struct dispc_device *dispc) } } +/* +* K2G display controller does not support soft reset, so we do a basic manual +* reset here: make sure the IRQs are masked and VPs are disabled. +*/ +static void dispc_softreset_k2g (struct dispc_device *dispc) +{ +unsigned long flags; + +spin_lock_irqsave (&dispc->tidss->wait_lock, flags); +dispc_set_irqenable (dispc,0 ); +dispc_read_and_clear_irqstatus (dispc); +spin_unlock_irqrestore (&dispc->tidss->wait_lock, flags); + +for (unsigned int vp_idx =0 ; vp_idx < dispc->feat->num_vps; ++vp_idx) +VP_REG_FLD_MOD (dispc, vp_idx,DISPC_VP_CONTROL ,0 ,0 ,0 ); +} +static int dispc_softreset (struct dispc_device *dispc) {u32 val;int ret =0 ; -/* K2G display controller does not support soft reset */ -if (dispc->feat->subrev ==DISPC_K2G ) +if (dispc->feat->subrev ==DISPC_K2G ) { +dispc_softreset_k2g (dispc);return 0 ; + }/* Soft reset */ REG_FLD_MOD (dispc,DSS_SYSCONFIG ,1 ,1 ,1 );
drivers/gpu/drm/tidss/tidss_irq.c +2 -0
@@ -60,7 +60,9 @@ static irqreturn_t tidss_irq_handler(int irq, void *arg)unsigned int id;dispc_irq_t irqstatus; +spin_lock (&tidss->wait_lock); irqstatus =dispc_read_and_clear_irqstatus (tidss->dispc); +spin_unlock (&tidss->wait_lock);for (id =0 ; id < tidss->num_crtcs; id++) {struct drm_crtc *crtc = tidss->crtcs[id];
drivers/i2c/busses/i2c-npcm7xx.c +7 -0
@@ -2335,6 +2335,13 @@ static int npcm_i2c_probe_bus(struct platform_device *pdev)if (irq <0 )return irq; +/* +* Disable the interrupt to avoid the interrupt handler being triggered +* incorrectly by the asynchronous interrupt status since the machine +* might do a warm reset during the last smbus/i2c transfer session. +*/ +npcm_i2c_int_enable (bus, false); + ret =devm_request_irq (bus->dev, irq, npcm_i2c_bus_irq,0 ,dev_name (bus->dev), bus);if (ret)
drivers/idle/intel_idle.c +4 -0
@@ -56,6 +56,7 @@#include <asm/nospec-branch.h> #include <asm/mwait.h> #include <asm/msr.h> +#include <asm/tsc.h> #include <asm/fpu/api.h> #define INTEL_IDLE_VERSION "0.5.1"
@@ -1583,6 +1584,9 @@ static void __init intel_idle_init_cstates_acpi(struct cpuidle_driver *drv)if (intel_idle_state_needs_timer_stop (state)) state->flags |=CPUIDLE_FLAG_TIMER_STOP ; +if (cx->type >ACPI_STATE_C1 && !boot_cpu_has (X86_FEATURE_NONSTOP_TSC )) +mark_tsc_unstable ("TSC halts in idle" ); + state->enter = intel_idle; state->enter_s2idle = intel_idle_s2idle; }
drivers/infiniband/hw/mlx5/counters.c +6 -2
@@ -444,6 +444,7 @@ static int mlx5_ib_counter_bind_qp(struct rdma_counter *counter, struct ib_qp *qp) {struct mlx5_ib_dev *dev =to_mdev (qp->device); +bool new = false;int err;if (!counter->id) {
@@ -458,6 +459,7 @@ static int mlx5_ib_counter_bind_qp(struct rdma_counter *counter,return err; counter->id =MLX5_GET (alloc_q_counter_out, out, counter_set_id); + new = true; } err =mlx5_ib_qp_set_counter (qp, counter);
@@ -467,8 +469,10 @@ static int mlx5_ib_counter_bind_qp(struct rdma_counter *counter,return 0 ; fail_set_counter: -mlx5_ib_counter_dealloc (counter); - counter->id =0 ; +if (new) { +mlx5_ib_counter_dealloc (counter); + counter->id =0 ; + }return err; }
drivers/infiniband/hw/mlx5/qp.c +3 -1
@@ -4466,6 +4466,8 @@ static int mlx5_ib_modify_dct(struct ib_qp *ibqp, struct ib_qp_attr *attr, set_id =mlx5_ib_get_counters_id (dev, attr->port_num -1 );MLX5_SET (dctc, dctc, counter_set_id, set_id); + + qp->port = attr->port_num; }else if (cur_state ==IB_QPS_INIT && new_state ==IB_QPS_RTR ) {struct mlx5_ib_modify_qp_resp resp = {};u32 out[MLX5_ST_SZ_DW (create_dct_out)] = {};
@@ -4955,7 +4957,7 @@ static int mlx5_ib_dct_query_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *mqp, }if (qp_attr_mask &IB_QP_PORT ) - qp_attr->port_num =MLX5_GET (dctc, dctc, port); + qp_attr->port_num = mqp->port;if (qp_attr_mask &IB_QP_MIN_RNR_TIMER ) qp_attr->min_rnr_timer =MLX5_GET (dctc, dctc, min_rnr_nak);if (qp_attr_mask &IB_QP_AV ) {
drivers/md/md-bitmap.c +15 -19
@@ -2022,33 +2022,29 @@ int md_bitmap_copy_from_slot(struct mddev *mddev, int slot, }EXPORT_SYMBOL_GPL (md_bitmap_copy_from_slot); - -void md_bitmap_status (struct seq_file *seq,struct bitmap *bitmap) +int md_bitmap_get_stats (struct bitmap *bitmap,struct md_bitmap_stats *stats) { -unsigned long chunk_kb;struct bitmap_counts *counts; +bitmap_super_t *sb;if (!bitmap) -return ; +return -ENOENT ; +if (bitmap->mddev->bitmap_info.external) +return -ENOENT ; +if (!bitmap->storage.sb_page)/* no superblock */ +return -EINVAL ; + sb =kmap_local_page (bitmap->storage.sb_page); + stats->sync_size =le64_to_cpu (sb->sync_size); +kunmap_local (sb); counts = &bitmap->counts; + stats->missing_pages = counts->missing_pages; + stats->pages = counts->pages; + stats->file = bitmap->storage.file; - chunk_kb = bitmap->mddev->bitmap_info.chunksize >>10 ; -seq_printf (seq,"bitmap: %lu/%lu pages [%luKB], " -"%lu%s chunk" , - counts->pages - counts->missing_pages, - counts->pages, - (counts->pages - counts->missing_pages) - << (PAGE_SHIFT -10 ), - chunk_kb ? chunk_kb : bitmap->mddev->bitmap_info.chunksize, - chunk_kb ?"KB" :"B" ); -if (bitmap->storage.file) { -seq_printf (seq,", file: " ); -seq_file_path (seq, bitmap->storage.file," \t\n" ); - } - -seq_printf (seq,"\n" ); +return 0 ; } +EXPORT_SYMBOL_GPL (md_bitmap_get_stats);int md_bitmap_resize (struct bitmap *bitmap,sector_t blocks,int chunksize,int init)
drivers/md/md-bitmap.h +8 -1
@@ -233,6 +233,13 @@ struct bitmap {int cluster_slot;/* Slot offset for clustered env */ }; +struct md_bitmap_stats { +unsigned long missing_pages; +unsigned long sync_size; +unsigned long pages; +struct file *file; +}; +/* the bitmap API */ /* these are used only by md/bitmap */
@@ -243,7 +250,7 @@ void md_bitmap_destroy(struct mddev *mddev);void md_bitmap_print_sb (struct bitmap *bitmap);void md_bitmap_update_sb (struct bitmap *bitmap); -void md_bitmap_status (struct seq_file *seq,struct bitmap *bitmap); +int md_bitmap_get_stats (struct bitmap *bitmap,struct md_bitmap_stats *stats);int md_bitmap_setallbits (struct bitmap *bitmap);void md_bitmap_write_all (struct bitmap *bitmap);
drivers/md/md-cluster.c +20 -14
@@ -1185,18 +1185,21 @@ static int resize_bitmaps(struct mddev *mddev, sector_t newsize, sector_t oldsiz*/ static int cluster_check_sync_size (struct mddev *mddev) { -int i, rv; -bitmap_super_t *sb; -unsigned long my_sync_size, sync_size =0 ; -int node_num = mddev->bitmap_info.nodes;int current_slot = md_cluster_ops->slot_number (mddev); +int node_num = mddev->bitmap_info.nodes;struct bitmap *bitmap = mddev->bitmap; -char str[64 ];struct dlm_lock_resource *bm_lockres; +struct md_bitmap_stats stats; +unsigned long sync_size =0 ; +unsigned long my_sync_size; +char str[64 ]; +int i, rv; - sb =kmap_atomic (bitmap->storage.sb_page); - my_sync_size = sb->sync_size; -kunmap_atomic (sb); + rv =md_bitmap_get_stats (bitmap, &stats); +if (rv) +return rv; + + my_sync_size = stats.sync_size;for (i =0 ; i < node_num; i++) {if (i == current_slot)
@@ -1225,15 +1228,18 @@ static int cluster_check_sync_size(struct mddev *mddev)md_bitmap_update_sb (bitmap);lockres_free (bm_lockres); - sb =kmap_atomic (bitmap->storage.sb_page); -if (sync_size ==0 ) - sync_size = sb->sync_size; -else if (sync_size != sb->sync_size) { -kunmap_atomic (sb); + rv =md_bitmap_get_stats (bitmap, &stats); +if (rv) { +md_bitmap_free (bitmap); +return rv; + } + +if (sync_size ==0 ) { + sync_size = stats.sync_size; + }else if (sync_size != stats.sync_size) {md_bitmap_free (bitmap);return -1 ; } -kunmap_atomic (sb);md_bitmap_free (bitmap); }
drivers/md/md.c +32 -1
@@ -8318,6 +8318,33 @@ static void md_seq_stop(struct seq_file *seq, void *v)mddev_put (mddev); } +static void md_bitmap_status (struct seq_file *seq,struct mddev *mddev) +{ +struct md_bitmap_stats stats; +unsigned long used_pages; +unsigned long chunk_kb; +int err; + + err =md_bitmap_get_stats (mddev->bitmap, &stats); +if (err) +return ; + + chunk_kb = mddev->bitmap_info.chunksize >>10 ; + used_pages = stats.pages - stats.missing_pages; + +seq_printf (seq,"bitmap: %lu/%lu pages [%luKB], %lu%s chunk" , + used_pages, stats.pages, used_pages << (PAGE_SHIFT -10 ), + chunk_kb ? chunk_kb : mddev->bitmap_info.chunksize, + chunk_kb ?"KB" :"B" ); + +if (stats.file) { +seq_puts (seq,", file: " ); +seq_file_path (seq, stats.file," \t\n" ); + } + +seq_putc (seq,'\n' ); +} +static int md_seq_show (struct seq_file *seq,void *v) {struct mddev *mddev = v;
@@ -8341,6 +8368,9 @@ static int md_seq_show(struct seq_file *seq, void *v)return 0 ; } +/* prevent bitmap to be freed after checking */ +mutex_lock (&mddev->bitmap_info.mutex); +spin_lock (&mddev->lock);if (mddev->pers || mddev->raid_disks || !list_empty (&mddev->disks)) { seq_printf(seq, "%s : %sactive", mdname(mddev),
@@ -8406,11 +8436,12 @@ static int md_seq_show(struct seq_file *seq, void *v) }else seq_printf (seq,"\n " ); -md_bitmap_status (seq, mddev->bitmap); +md_bitmap_status (seq, mddev);seq_printf (seq,"\n" ); }spin_unlock (&mddev->lock); +mutex_unlock (&mddev->bitmap_info.mutex);return 0 ; }
drivers/media/cec/platform/stm32/stm32-cec.c +3 -6
@@ -288,12 +288,9 @@ static int stm32_cec_probe(struct platform_device *pdev)return ret; cec->clk_cec =devm_clk_get (&pdev->dev,"cec" ); -if (IS_ERR (cec->clk_cec)) { -if (PTR_ERR (cec->clk_cec) != -EPROBE_DEFER ) -dev_err (&pdev->dev,"Cannot get cec clock\n" ); - -return PTR_ERR (cec->clk_cec); - } +if (IS_ERR (cec->clk_cec)) +return dev_err_probe (&pdev->dev,PTR_ERR (cec->clk_cec), +"Cannot get cec clock\n" ); ret =clk_prepare (cec->clk_cec);if (ret) {
drivers/media/i2c/ad5820.c +6 -12
@@ -301,21 +301,15 @@ static int ad5820_probe(struct i2c_client *client,return -ENOMEM ; coil->vana =devm_regulator_get (&client->dev,"VANA" ); -if (IS_ERR (coil->vana)) { - ret =PTR_ERR (coil->vana); -if (ret != -EPROBE_DEFER ) -dev_err (&client->dev,"could not get regulator for vana\n" ); -return ret; - } +if (IS_ERR (coil->vana)) +return dev_err_probe (&client->dev,PTR_ERR (coil->vana), +"could not get regulator for vana\n" ); coil->enable_gpio =devm_gpiod_get_optional (&client->dev,"enable" ,GPIOD_OUT_LOW ); -if (IS_ERR (coil->enable_gpio)) { - ret =PTR_ERR (coil->enable_gpio); -if (ret != -EPROBE_DEFER ) -dev_err (&client->dev,"could not get enable gpio\n" ); -return ret; - } +if (IS_ERR (coil->enable_gpio)) +return dev_err_probe (&client->dev,PTR_ERR (coil->enable_gpio), +"could not get enable gpio\n" );mutex_init (&coil->power_lock);
drivers/media/i2c/imx274.c +2 -3
@@ -2060,9 +2060,8 @@ static int imx274_probe(struct i2c_client *client) imx274->reset_gpio =devm_gpiod_get_optional (dev,"reset" ,GPIOD_OUT_HIGH );if (IS_ERR (imx274->reset_gpio)) { -if (PTR_ERR (imx274->reset_gpio) != -EPROBE_DEFER ) -dev_err (dev,"Reset GPIO not setup in DT" ); - ret =PTR_ERR (imx274->reset_gpio); + ret =dev_err_probe (dev,PTR_ERR (imx274->reset_gpio), +"Reset GPIO not setup in DT\n" ); goto err_me; }
drivers/media/i2c/tc358743.c +3 -6
@@ -1891,12 +1891,9 @@ static int tc358743_probe_of(struct tc358743_state *state)int ret; refclk =devm_clk_get (dev,"refclk" ); -if (IS_ERR (refclk)) { -if (PTR_ERR (refclk) != -EPROBE_DEFER ) -dev_err (dev,"failed to get refclk: %ld\n" , -PTR_ERR (refclk)); -return PTR_ERR (refclk); - } +if (IS_ERR (refclk)) +return dev_err_probe (dev,PTR_ERR (refclk), +"failed to get refclk\n" ); ep =of_graph_get_next_endpoint (dev->of_node,NULL );if (!ep) {
drivers/media/platform/mediatek/mdp/mtk_mdp_comp.c +2 -3
@@ -52,9 +52,8 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node,for (i =0 ; i <ARRAY_SIZE (comp->clk); i++) { comp->clk[i] =of_clk_get (node, i);if (IS_ERR (comp->clk[i])) { -if (PTR_ERR (comp->clk[i]) != -EPROBE_DEFER ) -dev_err (dev,"Failed to get clock\n" ); - ret =PTR_ERR (comp->clk[i]); + ret =dev_err_probe (dev,PTR_ERR (comp->clk[i]), +"Failed to get clock\n" ); goto put_dev; }
drivers/media/platform/mediatek/vcodec/mtk_vcodec_fw_scp.c +2 -0
@@ -65,6 +65,8 @@ struct mtk_vcodec_fw *mtk_vcodec_fw_scp_init(struct mtk_vcodec_dev *dev) } fw =devm_kzalloc (&dev->plat_dev->dev,sizeof (*fw),GFP_KERNEL ); +if (!fw) +return ERR_PTR (-ENOMEM ); fw->type =SCP ; fw->ops = &mtk_vcodec_rproc_msg; fw->scp = scp;
drivers/media/platform/mediatek/vcodec/vdec/vdec_h264_req_multi_if.c +7 -2
@@ -729,11 +729,16 @@ static int vdec_h264_slice_single_decode(void *h_vdec, struct mtk_vcodec_mem *bsreturn vpu_dec_reset (vpu); fb = inst->ctx->dev->vdec_pdata->get_cap_buffer (inst->ctx); +if (!fb) { +mtk_vcodec_err (inst,"fb buffer is NULL" ); +return -ENOMEM ; + } + src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer); dst_buf_info = container_of(fb, struct mtk_video_dec_buf, frame_buffer); - y_fb_dma = fb ? (u64 )fb->base_y.dma_addr :0 ; - c_fb_dma = fb ? (u64 )fb->base_c.dma_addr :0 ; + y_fb_dma = fb->base_y.dma_addr; + c_fb_dma = fb->base_c.dma_addr;mtk_vcodec_debug (inst,"[h264-dec] [%d] y_dma=%llx c_dma=%llx" , inst->ctx->decoded_frame_cnt, y_fb_dma, c_fb_dma);
drivers/media/platform/samsung/exynos4-is/media-dev.c +1 -3
@@ -1471,9 +1471,7 @@ static int fimc_md_probe(struct platform_device *pdev) pinctrl =devm_pinctrl_get (dev);if (IS_ERR (pinctrl)) { - ret =PTR_ERR (pinctrl); -if (ret != -EPROBE_DEFER ) -dev_err (dev,"Failed to get pinctrl: %d\n" , ret); + ret =dev_err_probe (dev,PTR_ERR (pinctrl),"Failed to get pinctrl\n" ); goto err_clk; }
drivers/media/platform/st/stm32/stm32-dcmi.c +9 -18
@@ -1946,12 +1946,9 @@ static int dcmi_probe(struct platform_device *pdev)return -ENOMEM ; dcmi->rstc =devm_reset_control_get_exclusive (&pdev->dev,NULL ); -if (IS_ERR (dcmi->rstc)) { -if (PTR_ERR (dcmi->rstc) != -EPROBE_DEFER ) -dev_err (&pdev->dev,"Could not get reset control\n" ); - -return PTR_ERR (dcmi->rstc); - } +if (IS_ERR (dcmi->rstc)) +return dev_err_probe (&pdev->dev,PTR_ERR (dcmi->rstc), +"Could not get reset control\n" );/* Get bus characteristics from devicetree */ np =of_graph_get_next_endpoint (np,NULL );
@@ -2003,20 +2000,14 @@ static int dcmi_probe(struct platform_device *pdev) } mclk =devm_clk_get (&pdev->dev,"mclk" ); -if (IS_ERR (mclk)) { -if (PTR_ERR (mclk) != -EPROBE_DEFER ) -dev_err (&pdev->dev,"Unable to get mclk\n" ); -return PTR_ERR (mclk); - } +if (IS_ERR (mclk)) +return dev_err_probe (&pdev->dev,PTR_ERR (mclk), +"Unable to get mclk\n" ); chan =dma_request_chan (&pdev->dev,"tx" ); -if (IS_ERR (chan)) { - ret =PTR_ERR (chan); -if (ret != -EPROBE_DEFER ) -dev_err (&pdev->dev, -"Failed to request DMA channel: %d\n" , ret); -return ret; - } +if (IS_ERR (chan)) +return dev_err_probe (&pdev->dev,PTR_ERR (chan), +"Failed to request DMA channel\n" ); dcmi->dma_max_burst =UINT_MAX ; ret =dma_get_slave_caps (chan, &caps);
drivers/media/platform/ti/omap3isp/isp.c +1 -2
@@ -1884,8 +1884,7 @@ static int isp_initialize_modules(struct isp_device *isp) ret =omap3isp_ccp2_init (isp);if (ret <0 ) { -if (ret != -EPROBE_DEFER ) -dev_err (isp->dev,"CCP2 initialization failed\n" ); +dev_err_probe (isp->dev, ret,"CCP2 initialization failed\n" ); goto error_ccp2; }
drivers/media/platform/xilinx/xilinx-csi2rxss.c +3 -5
@@ -976,11 +976,9 @@ static int xcsi2rxss_probe(struct platform_device *pdev)/* Reset GPIO */ xcsi2rxss->rst_gpio =devm_gpiod_get_optional (dev,"video-reset" ,GPIOD_OUT_HIGH ); -if (IS_ERR (xcsi2rxss->rst_gpio)) { -if (PTR_ERR (xcsi2rxss->rst_gpio) != -EPROBE_DEFER ) -dev_err (dev,"Video Reset GPIO not setup in DT" ); -return PTR_ERR (xcsi2rxss->rst_gpio); - } +if (IS_ERR (xcsi2rxss->rst_gpio)) +return dev_err_probe (dev,PTR_ERR (xcsi2rxss->rst_gpio), +"Video Reset GPIO not setup in DT\n" ); ret =xcsi2rxss_parse_of (xcsi2rxss);if (ret <0 )
drivers/media/rc/gpio-ir-recv.c +3 -7
@@ -74,13 +74,9 @@ static int gpio_ir_recv_probe(struct platform_device *pdev)return -ENOMEM ; gpio_dev->gpiod =devm_gpiod_get (dev,NULL ,GPIOD_IN ); -if (IS_ERR (gpio_dev->gpiod)) { - rc =PTR_ERR (gpio_dev->gpiod); -/* Just try again if this happens */ -if (rc != -EPROBE_DEFER ) -dev_err (dev,"error getting gpio (%d)\n" , rc); -return rc; - } +if (IS_ERR (gpio_dev->gpiod)) +return dev_err_probe (dev,PTR_ERR (gpio_dev->gpiod), +"error getting gpio\n" ); gpio_dev->irq =gpiod_to_irq (gpio_dev->gpiod);if (gpio_dev->irq <0 )return gpio_dev->irq;
drivers/media/rc/gpio-ir-tx.c +3 -6
@@ -174,12 +174,9 @@ static int gpio_ir_tx_probe(struct platform_device *pdev)return -ENOMEM ; gpio_ir->gpio =devm_gpiod_get (&pdev->dev,NULL ,GPIOD_OUT_LOW ); -if (IS_ERR (gpio_ir->gpio)) { -if (PTR_ERR (gpio_ir->gpio) != -EPROBE_DEFER ) -dev_err (&pdev->dev,"Failed to get gpio (%ld)\n" , -PTR_ERR (gpio_ir->gpio)); -return PTR_ERR (gpio_ir->gpio); - } +if (IS_ERR (gpio_ir->gpio)) +return dev_err_probe (&pdev->dev,PTR_ERR (gpio_ir->gpio), +"Failed to get gpio\n" ); rcdev->priv = gpio_ir; rcdev->driver_name =DRIVER_NAME ;
drivers/media/rc/ir-rx51.c +2 -7
@@ -231,13 +231,8 @@ static int ir_rx51_probe(struct platform_device *dev)struct rc_dev *rcdev; pwm =pwm_get (&dev->dev,NULL ); -if (IS_ERR (pwm)) { -int err =PTR_ERR (pwm); - -if (err != -EPROBE_DEFER ) -dev_err (&dev->dev,"pwm_get failed: %d\n" , err); -return err; - } +if (IS_ERR (pwm)) +return dev_err_probe (&dev->dev,PTR_ERR (pwm),"pwm_get failed\n" );/* Use default, in case userspace does not set the carrier */ ir_rx51.freq =DIV_ROUND_CLOSEST_ULL (pwm_get_period (pwm),NSEC_PER_SEC );
drivers/media/usb/uvc/uvc_ctrl.c +80 -19
169 lines not on this page · raw message
drivers/media/usb/uvc/uvc_driver.c +23 -12
@@ -1247,18 +1247,15 @@ static int uvc_gpio_parse(struct uvc_device *dev)struct gpio_desc *gpio_privacy;int irq; - gpio_privacy =devm_gpiod_get_optional (&dev->udev->dev,"privacy" , + gpio_privacy =devm_gpiod_get_optional (&dev->intf->dev,"privacy" ,GPIOD_IN );if (IS_ERR_OR_NULL (gpio_privacy))return PTR_ERR_OR_ZERO (gpio_privacy); irq =gpiod_to_irq (gpio_privacy); -if (irq <0 ) { -if (irq !=EPROBE_DEFER ) -dev_err (&dev->udev->dev, -"No IRQ for privacy GPIO (%d)\n" , irq); -return irq; - } +if (irq <0 ) +return dev_err_probe (&dev->intf->dev, irq, +"No IRQ for privacy GPIO\n" ); unit =uvc_alloc_entity (UVC_EXT_GPIO_UNIT ,UVC_EXT_GPIO_UNIT_ID ,0 ,1 );if (!unit)
@@ -1283,15 +1280,27 @@ static int uvc_gpio_parse(struct uvc_device *dev)static int uvc_gpio_init_irq (struct uvc_device *dev) {struct uvc_entity *unit = dev->gpio_unit; +int ret;if (!unit || unit->gpio.irq <0 )return 0 ; -return devm_request_threaded_irq (&dev->udev->dev, unit->gpio.irq,NULL , - uvc_gpio_irq, -IRQF_ONESHOT |IRQF_TRIGGER_FALLING | -IRQF_TRIGGER_RISING , -"uvc_privacy_gpio" , dev); + ret =request_threaded_irq (unit->gpio.irq,NULL , uvc_gpio_irq, +IRQF_ONESHOT |IRQF_TRIGGER_FALLING | +IRQF_TRIGGER_RISING , +"uvc_privacy_gpio" , dev); + + unit->gpio.initialized = !ret; + +return ret; +} + +static void uvc_gpio_deinit (struct uvc_device *dev) +{ +if (!dev->gpio_unit || !dev->gpio_unit->gpio.initialized) +return ; + +free_irq (dev->gpio_unit->gpio.irq, dev); }/* ------------------------------------------------------------------------
@@ -1885,6 +1894,8 @@ static void uvc_unregister_video(struct uvc_device *dev) {struct uvc_streaming *stream; +uvc_gpio_deinit (dev); +list_for_each_entry (stream, &dev->streams, list) {/* Nothing to do here, continue. */ if (!video_is_registered (&stream->vdev))
drivers/media/usb/uvc/uvc_v4l2.c +2 -0
@@ -607,6 +607,8 @@ static int uvc_v4l2_release(struct file *file)uvc_dbg (stream->dev,CALLS ,"%s\n" , __func__); +uvc_ctrl_cleanup_fh (handle); +/* Only free resources if this is a privileged handle. */ if (uvc_has_privileges (handle))uvc_queue_release (&stream->queue);
drivers/media/usb/uvc/uvcvideo.h +9 -1
@@ -227,6 +227,7 @@ struct uvc_entity {u8 *bmControls;struct gpio_desc *gpio_privacy;int irq; +bool initialized; } gpio; };
@@ -330,7 +331,11 @@ struct uvc_video_chain {struct uvc_entity *processing;/* Processing unit */ struct uvc_entity *selector;/* Selector unit */ -struct mutex ctrl_mutex;/* Protects ctrl.info */ +struct mutex ctrl_mutex;/* +* Protects ctrl.info, +* ctrl.handle and +* uvc_fh.pending_async_ctrls +*/ struct v4l2_prio_state prio;/* V4L2 priority state */ u32 caps;/* V4L2 chain-wide caps */
@@ -584,6 +589,7 @@ struct uvc_fh {struct uvc_video_chain *chain;struct uvc_streaming *stream;enum uvc_handle_state state; +unsigned int pending_async_ctrls; };struct uvc_driver {
@@ -768,6 +774,8 @@ int uvc_ctrl_is_accessible(struct uvc_video_chain *chain, u32 v4l2_id,int uvc_xu_ctrl_query (struct uvc_video_chain *chain,struct uvc_xu_control_query *xqry); +void uvc_ctrl_cleanup_fh (struct uvc_fh *handle); +/* Utility functions */ struct usb_host_endpoint *uvc_find_endpoint (struct usb_host_interface *alts,u8 epaddr);
drivers/mtd/nand/raw/cadence-nand-controller.c +31 -11
112 lines not on this page · raw message
drivers/net/ethernet/cadence/macb.h +2 -0
@@ -1271,6 +1271,8 @@ struct macb {struct clk *rx_clk;struct clk *tsu_clk;struct net_device *dev; +/* Protects hw_stats and ethtool_stats */ +spinlock_t stats_lock;union {struct macb_stats macb;struct gem_stats gem;
drivers/net/ethernet/cadence/macb_main.c +10 -2
@@ -1936,10 +1936,12 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)if (status &MACB_BIT (ISR_ROVR )) {/* We missed at least one packet */ +spin_lock (&bp->stats_lock);if (macb_is_gem (bp)) bp->hw_stats.gem.rx_overruns++;else bp->hw_stats.macb.rx_overruns++; +spin_unlock (&bp->stats_lock);if (bp->caps &MACB_CAPS_ISR_CLEAR_ON_WRITE )queue_writel (queue,ISR ,MACB_BIT (ISR_ROVR ));
@@ -2999,6 +3001,7 @@ static struct net_device_stats *gem_get_stats(struct macb *bp)if (!netif_running (bp->dev))return nstat; +spin_lock_irq (&bp->stats_lock);gem_update_stats (bp); nstat->rx_errors = (hwstat->rx_frame_check_sequence_errors +
@@ -3028,6 +3031,7 @@ static struct net_device_stats *gem_get_stats(struct macb *bp) nstat->tx_aborted_errors = hwstat->tx_excessive_collisions; nstat->tx_carrier_errors = hwstat->tx_carrier_sense_errors; nstat->tx_fifo_errors = hwstat->tx_underrun; +spin_unlock_irq (&bp->stats_lock);return nstat; }
@@ -3035,12 +3039,13 @@ static struct net_device_stats *gem_get_stats(struct macb *bp)static void gem_get_ethtool_stats (struct net_device *dev,struct ethtool_stats *stats,u64 *data) { -struct macb *bp; +struct macb *bp =netdev_priv (dev); - bp =netdev_priv (dev); +spin_lock_irq (&bp->stats_lock);gem_update_stats (bp);memcpy (data, &bp->ethtool_stats,sizeof (u64) * (GEM_STATS_LEN +QUEUE_STATS_LEN *MACB_MAX_QUEUES )); +spin_unlock_irq (&bp->stats_lock); }static int gem_get_sset_count (struct net_device *dev,int sset)
@@ -3090,6 +3095,7 @@ static struct net_device_stats *macb_get_stats(struct net_device *dev)return gem_get_stats (bp);/* read stats from hardware */ +spin_lock_irq (&bp->stats_lock);macb_update_stats (bp);/* Convert HW stats into netdevice stats */
@@ -3123,6 +3129,7 @@ static struct net_device_stats *macb_get_stats(struct net_device *dev) nstat->tx_carrier_errors = hwstat->tx_carrier_errors; nstat->tx_fifo_errors = hwstat->tx_underruns;/* Don't know about heartbeat or window errors... */ +spin_unlock_irq (&bp->stats_lock);return nstat; }
@@ -4949,6 +4956,7 @@ static int macb_probe(struct platform_device *pdev) bp->usrio = macb_config->usrio;spin_lock_init (&bp->lock); +spin_lock_init (&bp->stats_lock);/* setup capabilities */ macb_configure_caps (bp, macb_config);
drivers/net/ethernet/freescale/enetc/enetc.c +71 -29
168 lines not on this page · raw message
drivers/net/ethernet/ibm/ibmvnic.c +70 -15
195 lines not on this page · raw message
drivers/net/ethernet/ibm/ibmvnic.h +2 -1
@@ -213,7 +213,8 @@ struct ibmvnic_statistics {#define NUM_TX_STATS 3struct ibmvnic_tx_queue_stats { -u64 packets; +u64 batched_packets; +u64 direct_packets;u64 bytes;u64 dropped_packets; };
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c +1 -1
@@ -324,7 +324,7 @@ static const struct mvpp2_cls_flow cls_flows[MVPP2_N_PRS_FLOWS] = { MVPP2_PRS_RI_VLAN_MASK),/* Non IP flow, with vlan tag */ MVPP2_DEF_FLOW (MVPP22_FLOW_ETHERNET ,MVPP2_FL_NON_IP_TAG , -MVPP22_CLS_HEK_OPT_VLAN , +MVPP22_CLS_HEK_TAGGED , 0, 0), };
drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c +1 -1
@@ -513,7 +513,7 @@ irq_pool_alloc(struct mlx5_core_dev *dev, int start, int size, char *name, pool->min_threshold = min_threshold *MLX5_EQ_REFS_PER_IRQ ; pool->max_threshold = max_threshold *MLX5_EQ_REFS_PER_IRQ ;mlx5_core_dbg (dev,"pool->name = %s, pool->size = %d, pool->start = %d" , - name, size, start); + name ? name :"mlx5_pcif_pool" , size, start);return pool; }
drivers/net/ethernet/netronome/nfp/bpf/cmsg.c +2 -0
@@ -20,6 +20,8 @@ nfp_bpf_cmsg_alloc(struct nfp_app_bpf *bpf, unsigned int size)struct sk_buff *skb; skb =nfp_app_ctrl_msg_alloc (bpf->app, size,GFP_KERNEL ); +if (!skb) +return NULL ;skb_put (skb, size);return skb;
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +1 -0
@@ -2159,6 +2159,7 @@ static int axienet_probe(struct platform_device *pdev) lp->phylink_config.dev = &ndev->dev; lp->phylink_config.type =PHYLINK_NETDEV ; + lp->phylink_config.mac_managed_pm = true; lp->phylink_config.mac_capabilities =MAC_SYM_PAUSE |MAC_ASYM_PAUSE |MAC_10FD |MAC_100FD |MAC_1000FD ;
drivers/net/geneve.c +2 -14
@@ -1965,21 +1965,9 @@ static void geneve_destroy_tunnels(struct net *net, struct list_head *head) {struct geneve_net *gn =net_generic (net, geneve_net_id);struct geneve_dev *geneve, *next; -struct net_device *dev, *aux; -/* gather any geneve devices that were moved into this ns */ -for_each_netdev_safe (net, dev, aux) -if (dev->rtnl_link_ops == &geneve_link_ops) -unregister_netdevice_queue (dev, head); - -/* now gather any other geneve devices that were created in this ns */ -list_for_each_entry_safe (geneve, next, &gn->geneve_list, next) { -/* If geneve->dev is in the same netns, it was already added -* to the list by the previous loop. -*/ -if (!net_eq (dev_net (geneve->dev), net)) -unregister_netdevice_queue (geneve->dev, head); - } +list_for_each_entry_safe (geneve, next, &gn->geneve_list, next) +geneve_dellink (geneve->dev, head); } static void __net_exit geneve_exit_batch_net(struct list_head *net_list)
drivers/net/gtp.c +0 -5
@@ -1894,11 +1894,6 @@ static void __net_exit gtp_net_exit_batch_rtnl(struct list_head *net_list,list_for_each_entry (net, net_list, exit_list) {struct gtp_net *gn =net_generic (net, gtp_net_id);struct gtp_dev *gtp, *gtp_next; -struct net_device *dev; - -for_each_netdev (net, dev) -if (dev->rtnl_link_ops == >p_link_ops) -gtp_dellink (dev, dev_to_kill);list_for_each_entry_safe (gtp, gtp_next, &gn->gtp_dev_list, list)gtp_dellink (gtp->dev, dev_to_kill);
drivers/net/ipvlan/ipvlan_core.c +19 -5
@@ -2,6 +2,9 @@/* Copyright (c) 2014 Mahesh Bandewar <[email protected]> */ +#include <net/inet_dscp.h> +#include <net/ip.h> +#include "ipvlan.h" static u32 ipvlan_jhash_secret__read_mostly ;
@@ -413,20 +416,25 @@ struct ipvl_addr *ipvlan_addr_lookup(struct ipvl_port *port, void *lyr3h, static noinline_for_stack int ipvlan_process_v4_outbound(struct sk_buff *skb) { -const struct iphdr *ip4h =ip_hdr (skb);struct net_device *dev = skb->dev;struct net *net =dev_net (dev); -struct rtable *rt;int err, ret =NET_XMIT_DROP ; +const struct iphdr *ip4h; +struct rtable *rt;struct flowi4 fl4 = { .flowi4_oif = dev->ifindex, - .flowi4_tos =RT_TOS (ip4h->tos), .flowi4_flags =FLOWI_FLAG_ANYSRC , .flowi4_mark = skb->mark, - .daddr = ip4h->daddr, - .saddr = ip4h->saddr, };
Lines of this file are not shown. View the raw message.
drivers/phy/rockchip/phy-rockchip-naneng-combphy.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/phy/samsung/phy-exynos5-usbdrd.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/spi/atmel-quadspi.c +129 -43
172 lines not on this page · raw message
fs/afs/server_list.c +104 -10
114 lines not on this page · raw message
include/net/netfilter/nf_conntrack_expect.h +1 -1
Lines of this file are not shown. View the raw message.
include/trace/events/icmp.h new file +67 -0
67 lines not on this page · raw message
kernel/acct.c +84 -50
134 lines not on this page · raw message
net/core/flow_dissector.c +29 -20
49 lines not on this page · raw message
net/ipv6/rpl_iptunnel.c +36 -22
58 lines not on this page · raw message
net/ipv6/seg6_iptunnel.c +63 -34
97 lines not on this page · 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.