Linux 5.10.51
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.51 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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
------------
Makefile | 2 arch/arm64/boot/dts/rockchip/rk3328-rock64.dts | 5 arch/arm64/boot/dts/rockchip/rk3328.dtsi | 19 + arch/arm64/include/asm/tlb.h | 4 arch/mips/Kconfig | 2 arch/mips/include/asm/cpu-features.h | 4 arch/mips/include/asm/hugetlb.h | 8 arch/mips/include/asm/mipsregs.h | 8 arch/mips/include/asm/pgalloc.h | 10 arch/mips/kernel/cpu-probe.c | 5 arch/mips/loongson64/numa.c | 3 arch/powerpc/include/asm/barrier.h | 2 arch/powerpc/mm/fault.c | 4 arch/powerpc/platforms/powernv/vas-window.c | 9 block/blk-rq-qos.c | 4 drivers/ata/ahci_sunxi.c | 2 drivers/atm/iphase.c | 2 drivers/atm/nicstar.c | 26 + drivers/block/loop.c | 3 drivers/bluetooth/btusb.c | 24 + drivers/char/ipmi/ipmi_watchdog.c | 22 - drivers/clk/renesas/r8a77995-cpg-mssr.c | 1 drivers/clk/renesas/rcar-usb2-clock-sel.c | 24 + drivers/clk/tegra/clk-periph-gate.c | 72 +++-- drivers/clk/tegra/clk-periph.c | 11 drivers/clk/tegra/clk-pll.c | 9 drivers/clocksource/arm_arch_timer.c | 2 drivers/extcon/extcon-intel-mrfld.c | 9 drivers/firmware/qemu_fw_cfg.c | 8 drivers/fpga/stratix10-soc.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 21 - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 11 drivers/gpu/drm/amd/amdgpu/amdgpu_umc.h | 5 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 4 drivers/gpu/drm/amd/amdgpu/umc_v8_7.c | 2 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 68 ++-- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 24 + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 1 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c | 41 ++ drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 2 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c | 9 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c | 2 drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c | 78 ++--- drivers/gpu/drm/amd/display/dc/irq_types.h | 2 drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c | 1 drivers/gpu/drm/amd/display/modules/hdcp/hdcp1_execution.c | 4 drivers/gpu/drm/amd/include/navi10_enum.h | 2 drivers/gpu/drm/arm/malidp_planes.c | 9 drivers/gpu/drm/ast/ast_dp501.c | 139 +++++++--- drivers/gpu/drm/ast/ast_drv.h | 12 drivers/gpu/drm/ast/ast_main.c | 11 drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 4 drivers/gpu/drm/bridge/cdns-dsi.c | 2 drivers/gpu/drm/bridge/lontium-lt9611.c | 1 drivers/gpu/drm/bridge/nwl-dsi.c | 61 ++-- drivers/gpu/drm/drm_dp_helper.c | 7 drivers/gpu/drm/i915/display/intel_dp.c | 2 drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 2 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 2 drivers/gpu/drm/msm/disp/mdp4/mdp4_plane.c | 8 drivers/gpu/drm/mxsfb/Kconfig | 1 drivers/gpu/drm/nouveau/nouveau_display.c | 1 drivers/gpu/drm/radeon/radeon_display.c | 1 drivers/gpu/drm/radeon/radeon_drv.c | 8 drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c | 4 drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 21 - drivers/gpu/drm/scheduler/sched_entity.c | 8 drivers/gpu/drm/scheduler/sched_main.c | 24 + drivers/gpu/drm/tegra/dc.c | 10 drivers/gpu/drm/tegra/drm.c | 2 drivers/gpu/drm/vc4/vc4_crtc.c | 5 drivers/gpu/drm/vc4/vc4_drv.h | 2 drivers/gpu/drm/vc4/vc4_hdmi.c | 10 drivers/gpu/drm/vc4/vc4_txp.c | 2 drivers/gpu/drm/virtio/virtgpu_kms.c | 1 drivers/gpu/drm/zte/Kconfig | 1 drivers/hwtracing/coresight/coresight-core.c | 2 drivers/hwtracing/coresight/coresight-tmc-etf.c | 2 drivers/infiniband/core/cma.c | 3 drivers/infiniband/hw/cxgb4/qp.c | 1 drivers/infiniband/sw/rxe/rxe_mr.c | 2 drivers/infiniband/ulp/isert/ib_isert.c | 4 drivers/infiniband/ulp/isert/ib_isert.h | 3 drivers/infiniband/ulp/rtrs/rtrs-pri.h | 13 drivers/ipack/carriers/tpci200.c | 5 drivers/isdn/hardware/mISDN/hfcpci.c | 2 drivers/md/dm-writecache.c | 48 ++- drivers/md/dm-zoned-metadata.c | 7 drivers/md/dm.c | 8 drivers/md/persistent-data/dm-btree-remove.c | 3 drivers/md/persistent-data/dm-space-map-disk.c | 9 drivers/md/persistent-data/dm-space-map-metadata.c | 9 drivers/media/i2c/saa6588.c | 4 drivers/media/pci/bt8xx/bttv-driver.c | 6 drivers/media/pci/saa7134/saa7134-video.c | 6 drivers/media/platform/davinci/vpbe_display.c | 2 drivers/media/platform/davinci/vpbe_venc.c | 6 drivers/media/rc/bpf-lirc.c | 3 drivers/media/usb/dvb-usb/dtv5100.c | 7 drivers/media/usb/gspca/sq905.c | 2 drivers/media/usb/gspca/sunplus.c | 8 drivers/media/usb/uvc/uvc_video.c | 27 + drivers/media/usb/zr364xx/zr364xx.c | 1 drivers/mfd/syscon.c | 2 drivers/misc/lkdtm/bugs.c | 3 drivers/mmc/core/core.c | 7 drivers/mmc/core/sd.c | 10 drivers/mmc/host/sdhci-acpi.c | 11 drivers/mmc/host/sdhci.c | 4 drivers/mmc/host/sdhci.h | 1 drivers/net/dsa/ocelot/seville_vsc9953.c | 5 drivers/net/ethernet/broadcom/genet/bcmmii.c | 4 drivers/net/ethernet/freescale/fec_main.c | 32 ++ drivers/net/ethernet/intel/e100.c | 12 drivers/net/ethernet/intel/i40e/i40e_ptp.c | 8 drivers/net/ethernet/intel/ice/ice_ethtool.c | 6 drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h | 4 drivers/net/ethernet/intel/ice/ice_type.h | 2 drivers/net/ethernet/intel/igb/igb_main.c | 9 drivers/net/ethernet/intel/igbvf/netdev.c | 4 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 4 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 6 drivers/net/ethernet/mellanox/mlx5/core/lag.c | 19 - drivers/net/ethernet/micrel/ks8842.c | 4 drivers/net/ethernet/moxa/moxart_ether.c | 5 drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 19 - drivers/net/ethernet/realtek/r8169_main.c | 1 drivers/net/ethernet/sfc/ef10_sriov.c | 25 - drivers/net/ethernet/sgi/ioc3-eth.c | 4 drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 21 + drivers/net/fjes/fjes_main.c | 4 drivers/net/ipa/ipa_main.c | 1 drivers/net/mdio/mdio-ipq8064.c | 33 +- drivers/net/phy/realtek.c | 15 + drivers/net/virtio_net.c | 22 + drivers/net/wireless/ath/ath11k/mac.c | 4 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 24 + drivers/net/wireless/intel/iwlwifi/mvm/time-event.c | 4 drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c | 15 - drivers/net/wireless/intel/iwlwifi/pcie/internal.h | 3 drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c | 3 drivers/net/wireless/mac80211_hwsim.c | 48 ++- drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 10 drivers/net/wireless/mediatek/mt76/mt7915/init.c | 6 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h | 11 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c | 59 +++- drivers/net/wireless/st/cw1200/cw1200_sdio.c | 1 drivers/net/wireless/ti/wl1251/cmd.c | 9 drivers/net/wireless/ti/wl12xx/main.c | 7 drivers/nvmem/core.c | 9 drivers/pci/controller/pci-aardvark.c | 13 drivers/pci/quirks.c | 11 drivers/pinctrl/pinctrl-amd.c | 1 drivers/pinctrl/pinctrl-equilibrium.c | 1 drivers/pinctrl/pinctrl-mcp23s08.c | 10 drivers/scsi/libiscsi.c | 26 - drivers/scsi/scsi_transport_iscsi.c | 28 +- drivers/thermal/intel/int340x_thermal/processor_thermal_device.c | 20 - fs/ext4/ext4.h | 4 fs/ext4/mmp.c | 28 -- fs/ext4/super.c | 10 fs/f2fs/f2fs.h | 2 fs/f2fs/recovery.c | 23 + fs/f2fs/super.c | 8 fs/io-wq.c | 5 fs/io_uring.c | 118 +++----- fs/jfs/inode.c | 3 fs/reiserfs/journal.c | 14 + fs/ubifs/super.c | 1 fs/ubifs/ubifs.h | 2 fs/ubifs/xattr.c | 44 ++- fs/udf/namei.c | 4 include/linux/mfd/abx500/ux500_chargalg.h | 2 include/linux/netdev_features.h | 2 include/linux/of_mdio.h | 7 include/linux/wait.h | 2 include/media/v4l2-subdev.h | 4 include/net/flow_offload.h | 12 include/net/sctp/structs.h | 2 include/scsi/scsi_transport_iscsi.h | 1 include/uapi/linux/ethtool.h | 4 kernel/bpf/core.c | 61 +++- kernel/bpf/ringbuf.c | 2 kernel/cpu.c | 49 +++ kernel/sched/fair.c | 6 kernel/sched/wait.c | 9 kernel/trace/trace.c | 91 +++--- lib/seq_buf.c | 4 mm/memory-failure.c | 6 net/bluetooth/hci_core.c | 16 - net/bluetooth/hci_event.c | 6 net/bluetooth/l2cap_core.c | 8 net/bluetooth/mgmt.c | 5 net/bridge/br_mrp.c | 6 net/core/dev.c | 11 net/ipv4/ip_output.c | 32 +- net/ipv4/tcp_input.c | 45 +-- net/ipv6/ip6_output.c | 32 +- net/ipv6/output_core.c | 28 -- net/mac80211/sta_info.c | 11 net/sched/act_api.c | 3 net/sched/cls_api.c | 2 net/sctp/bind_addr.c | 19 - net/sctp/input.c | 8 net/sctp/ipv6.c | 7 net/sctp/protocol.c | 7 net/sctp/sm_make_chunk.c | 29 +- net/vmw_vsock/af_vsock.c | 2 net/wireless/nl80211.c | 9 net/wireless/wext-spy.c | 14 - net/xfrm/xfrm_user.c | 28 +- security/selinux/avc.c | 13 security/smack/smackfs.c | 2 sound/soc/tegra/tegra_alc5632.c | 1 sound/soc/tegra/tegra_max98090.c | 1 sound/soc/tegra/tegra_rt5640.c | 1 sound/soc/tegra/tegra_rt5677.c | 1 sound/soc/tegra/tegra_sgtl5000.c | 1 sound/soc/tegra/tegra_wm8753.c | 1 sound/soc/tegra/tegra_wm8903.c | 1 sound/soc/tegra/tegra_wm9712.c | 1 sound/soc/tegra/trimslice.c | 1 tools/testing/selftests/drivers/net/mlxsw/devlink_trap_l3_drops.sh | 3 tools/testing/selftests/drivers/net/mlxsw/devlink_trap_l3_exceptions.sh | 3 tools/testing/selftests/drivers/net/mlxsw/qos_dscp_bridge.sh | 2 tools/testing/selftests/lkdtm/tests.txt | 2 tools/testing/selftests/net/forwarding/pedit_dsfield.sh | 2 tools/testing/selftests/net/forwarding/pedit_l4port.sh | 2 tools/testing/selftests/net/forwarding/skbedit_priority.sh | 2 tools/testing/selftests/resctrl/README | 2 tools/testing/selftests/resctrl/resctrl_tests.c | 4 232 files changed, 1770 insertions(+), 902 deletions(-)
Aaron Liu (1):
drm/amdgpu: enable sdma0 tmz for Raven/Renoir(V2)
Al Cooper (1):
mmc: sdhci: Fix warning message when accessing RPMB in HS400 mode
Alex Bee (2):
drm: rockchip: add missing registers for RK3188
drm: rockchip: add missing registers for RK3066
Amber Lin (1):
drm/amdkfd: Fix circular lock in nocpsch path
Amit Cohen (1):
selftests: Clean forgotten resources as part of cleanup()
Andrey Grodzovsky (2):
drm/scheduler: Fix hang when sched_entity released drm/sched: Avoid data corruptions
Andy Shevchenko (1):
net: pch_gbe: Use proper accessors to BE data in pch_ptp_match()
Ansuel Smith (1):
net: mdio: ipq8064: add regmap config to disable REGCACHE
Arnd Bergmann (1):
media: subdev: disallow ioctl for saa6588/davinci
Arturo Giusti (1):
udf: Fix NULL pointer dereference in udf_symlink function
Benjamin Drung (1):
media: uvcvideo: Fix pixel format change for Elgato Cam Link 4K
Bibo Mao (1):
hugetlb: clear huge pte during flush function on mips platform
Bixuan Cui (1):
pinctrl: equilibrium: Add missing MODULE_DEVICE_TABLE
Brandon Syu (1):
drm/amd/display: fix HDCP reset sequence on reinitialize
Cameron Nemo (2):
arm64: dts: rockchip: add rk3328 dwc3 usb controller node
arm64: dts: rockchip: Enable USB3 for rk3328 Rock64
Chao Yu (1):
f2fs: fix to avoid racing on fsync_entry_slab by multi filesystem instances
Christian Löhle (1):
mmc: core: Allow UHS-I voltage switch for SDSC cards if supported
Christophe JAILLET (1):
nvmem: core: add a missing of_node_put
Christophe Leroy (1):
powerpc/mm: Fix lockup on kernel exec fault
Damien Le Moal (2):
dm: Fix dm_accept_partial_bio() relative to zone management commands dm zoned: check zone capacity
Dan Carpenter (2):
drm/vc4: fix argument ordering in vc4_crtc_get_margins()
ath11k: unlock on error path in ath11k_mac_op_add_interface()
Daniel Borkmann (1):
bpf: Fix up register-based shifts in interpreter to silence KUBSAN
Daniel Lenski (1):
Bluetooth: btusb: Add a new QCA_ROME device (0cf3:e500)
Daniel Vetter (4):
drm/tegra: Don't set allow_fb_modifiers explicitly drm/msm/mdp4: Fix modifier support enabling drm/arm/malidp: Always list modifiers drm/nouveau: Don't set allow_fb_modifiers explicitly
Davide Caratti (1):
net/sched: cls_api: increase max_reclassify_loop
Dinghao Liu (1):
clk: renesas: rcar-usb2-clock-sel: Fix error handling in .probe()
Dmitry Osipenko (3):
clk: tegra: Fix refcounting of gate clocks
clk: tegra: Ensure that PLLU configuration is applied properly
ASoC: tegra: Set driver_name=tegra for all machine drivers
Dmytro Laktyushkin (1):
drm/amd/display: fix use_max_lb flag for 420 pixel formats
Eli Cohen (1):
net/mlx5: Fix lag port remapping logic
Felix Fietkau (1):
mt76: mt7615: fix fixed-rate tx status reporting
Ferry Toth (1):
extcon: intel-mrfld: Sync hardware and software state on init
Fugang Duan (1):
net: fec: add ndo_select_queue to fix TX bandwidth fluctuations
Gerd Rausch (1):
RDMA/cma: Fix rdma_resolve_route() memory leak
Gioh Kim (1):
RDMA/rtrs: Change MAX_SESS_QUEUE_DEPTH
Greg Kroah-Hartman (1):
Linux 5.10.51
Guchun Chen (1):
drm/amd/display: fix incorrrect valid irq check
Gulam Mohamed (1):
scsi: iscsi: Fix race condition between login and sync thread
Gustavo A. R. Silva (1):
wireless: wext-spy: Fix out-of-bounds warning
Hans de Goede (1):
mmc: sdhci-acpi: Disable write protect detection on Toshiba Encore 2 WT8-B
Haren Myneni (1):
powerpc/powernv/vas: Release reference to tgid during window close
Harry Wentland (1):
drm/amd/display: Reject non-zero src_y and src_x for video planes
Heiner Kallweit (1):
r8169: avoid link-up interrupt issue on RTL8106e if user enables ASPM
Hilda Wu (1):
Bluetooth: btusb: Add support USB ALT 3 for WBS
Horatiu Vultur (1):
net: bridge: mrp: Update ring transitions.
Hou Tao (1):
dm btree remove: assign new_root only when removal succeeds
Huang Pei (1):
MIPS: add PMD table accounting into MIPS'pmd_alloc_one
Huy Nguyen (1):
net/mlx5e: IPsec/rep_tc: Fix rep_tc_update_skb drops IPsec packet
Jack Zhang (1):
drm/amd/amdgpu/sriov disable all ip hw status by default
Jacob Keller (2):
ice: fix incorrect payload indicator on PTYPE
ice: mark PTYPE 2 as reserved
Jakub Kicinski (1):
net: ip: avoid OOM kills with large UDP sends over loopback
Jan Kara (1):
rq-qos: fix missed wake-ups in rq_qos_throttle try two
Jens Axboe (1):
io_uring: convert io_buffer_idr to XArray
Jeremy Linton (1):
coresight: Propagate symlink failure
Jesse Brandeburg (4):
e100: handle eeprom as little endian
igb: handle vlan types with checker enabled
igb: fix assignment on big endian machines
i40e: fix PTP on 5Gb links
Jian Shen (1):
net: fix mistake path for netdev_features_strings
Jiansong Chen (1):
drm/amdgpu: remove unsafe optimization to drop preamble ib
Jiapeng Chong (1):
RDMA/cxgb4: Fix missing error code in create_qp()
Jing Xiangfeng (1):
drm/radeon: Add the missed drm_gem_object_put() in radeon_user_framebuffer_create()
Joakim Zhang (1):
net: phy: realtek: add delay to fix RXC generation issue
Joe Thornber (1):
dm space maps: don't reset space map allocation cursor when committing
Johan Hovold (3):
media: dtv5100: fix control-request directions
media: gspca/sq905: fix control-request direction
media: gspca/sunplus: fix zero-length control requests
Johannes Berg (4):
iwlwifi: mvm: don't change band on bound PHY contexts
iwlwifi: pcie: free IML DMA memory allocation
iwlwifi: pcie: fix context info freeing
mac80211: consider per-CPU statistics if present
Jonathan Kim (1):
drm/amdkfd: fix circular locking on get_wave_state
Joseph Greathouse (1):
drm/amdgpu: Update NV SIMD-per-CU to 2
Kai-Heng Feng (1):
Bluetooth: Shutdown controller after workqueues are flushed or cancelled
Kees Cook (4):
drm/amd/display: Avoid HDCP over-read and corruption drm/i915/display: Do not zero past infoframes.vsc lkdtm/bugs: XFAIL UNALIGNED_LOAD_STORE_WRITE selftests/lkdtm: Fix expected text for CR4 pinning
Kiran K (1):
Bluetooth: Fix alt settings for incoming SCO with transparent coding format
Konstantin Kharlamov (1):
PCI: Leave Apple Thunderbolt controllers on for s2idle or standby
Kuninori Morimoto (1):
clk: renesas: r8a77995: Add ZA2 clock
KuoHsiang Chou (1):
drm/ast: Fixed CVE for DP501
Lee Gibson (1):
wl1251: Fix possible buffer overflow in wl1251_cmd_scan
Limeng (1):
mfd: syscon: Free the allocated name field of struct regmap_config
Linus Walleij (1):
power: supply: ab8500: Fix an old bug
Liu Ying (1):
drm/bridge: nwl-dsi: Force a full modeset when crtc_state->active is changed to be true
Liwei Song (1):
ice: set the value of global config lock timeout longer
Longpeng(Mike) (1):
vsock: notify server to shutdown when client has pending signal
Luiz Augusto von Dentz (2):
Bluetooth: L2CAP: Fix invalid access if ECRED Reconfigure fails
Bluetooth: L2CAP: Fix invalid access on ECRED Connection response
Lv Yunlong (1):
ipack/carriers/tpci200: Fix a double free in tpci200_pci_probe
Lyude Paul (1):
drm/dp: Handle zeroed port counts in drm_dp_read_downstream_info()
Marcelo Ricardo Leitner (2):
sctp: validate from_addr_param return
sctp: add size validation when walking chunks
Mark Yacoub (1):
drm/amd/display: Verify Gamma & Degamma LUT sizes in amdgpu_dm_atomic_check
Mateusz Kwiatkowski (1):
drm/vc4: Fix clock source for VEC PixelValve on BCM2711
Matthew Wilcox (Oracle) (1):
io_uring: Convert personality_idr to XArray
Mauricio Faria de Oliveira (1):
loop: fix I/O error on fsync() in detached loop devices
Max Gurtovoy (1):
IB/isert: Align target max I/O size to initiator size
Maxime Ripard (3):
drm/vc4: txp: Properly set the possible_crtcs mask drm/vc4: crtc: Skip the TXP
drm/vc4: hdmi: Prevent clock unbalance
Maximilian Luz (1):
pinctrl/amd: Add device HID for new AMD GPIO controller
Mike Christie (1):
scsi: iscsi: Fix iSCSI cls conn state
Mikulas Patocka (4):
dm writecache: don't split bios when overwriting contiguous cache content dm writecache: commit just one block, not a full page
dm writecache: flush origin device when writing and cache is full dm writecache: write at least 4k when committing
Minchan Kim (1):
selinux: use __GFP_NOWARN with GFP_NOWAIT in the AVC
Nathan Chancellor (2):
powerpc/barrier: Avoid collision with clang's __lwsync macro
qemu_fw_cfg: Make fw_cfg_rev_attr a proper kobj_attribute
Nick Desaulniers (1):
MIPS: set mips32r5 for virt extensions
Nikola Cornij (1):
drm/amd/display: Fix DCN 3.01 DSCCLK validation
Nirmoy Das (1):
drm/amdkfd: use allowed domain for vmbo validation
Odin Ugedal (1):
sched/fair: Ensure _sum and _avg values stay consistent
Oscar Salvador (1):
mm,hwpoison: return -EBUSY when migration fails
Pali Rohár (2):
PCI: aardvark: Fix checking for PIO Non-posted Request
PCI: aardvark: Implement workaround for the readback value of VEND_ID
Pascal Terjan (1):
rtl8xxxu: Fix device info for RTL8192EU devices
Paul Burton (2):
tracing: Simplify & fix saved_tgids logic
tracing: Resize tgid_map to pid_max, not PID_MAX_DEFAULT
Paul Cercueil (3):
MIPS: cpu-probe: Fix FPU detection on Ingenic JZ4760(B)
MIPS: ingenic: Select CPU_SUPPORTS_CPUFREQ && MIPS_EXTERNAL_TIMER
MIPS: MT extensions are not available on MIPS32r1
Paul M Stillwell Jr (1):
ice: fix clang warning regarding deadcode.DeadStores
Pavel Begunkov (1):
io_uring: fix false WARN_ONCE
Pavel Skripkin (4):
reiserfs: add check for invalid 1st journal block
media: zr364xx: fix memory leak in zr364xx_start_readpipe
jfs: fix GPF in diFree
ext4: fix memory leak in ext4_fill_super
Petr Pavlu (1):
ipmi/watchdog: Stop watchdog timer when the current action is 'none'
Ping-Ke Shih (1):
cfg80211: fix default HE tx bitrate mask in 2G band
Radim Pavlik (1):
pinctrl: mcp23s08: fix race condition in irq handler
Roman Li (1):
drm/amd/display: Update scaling settings on modeset
Russ Weight (1):
fpga: stratix10-soc: Add missing fpga_mgr_free() call
Rustam Kovhaev (1):
bpf: Fix false positive kmemleak report in bpf_ringbuf_area_alloc()
Ryder Lee (1):
mt76: mt7915: fix IEEE80211_HE_PHY_CAP7_MAX_NC for station mode
Sai Prakash Ranjan (1):
coresight: tmc-etf: Fix global-out-of-bounds in tmc_update_etf_buffer()
Samuel Holland (1):
clocksource/arm_arch_timer: Improve Allwinner A64 timer workaround
Sean Young (1):
media, bpf: Do not copy more entries than user space requested
Sebastian Andrzej Siewior (1):
net: Treat __napi_schedule_irqoff() as __napi_schedule() on PREEMPT_RT
Shaul Triebitz (1):
iwlwifi: mvm: fix error print when session protection ends
Srinivas Pandruvada (1):
thermal/drivers/int340x/processor_thermal: Fix tcc setting
Stanley.Yang (1):
drm/amdgpu: fix bad address translation for sienna_cichlid
Steffen Klassert (1):
xfrm: Fix error reporting in xfrm_state_construct.
Tedd Ho-Jeong An (1):
Bluetooth: mgmt: Fix the command returns garbage parameter value
Tetsuo Handa (1):
smackfs: restrict bytes count in smk_set_cipso()
Thomas Gleixner (1):
cpu/hotplug: Cure the cpusets trainwreck
Thomas Hebb (1):
drm/rockchip: dsi: remove extra component_del() call
Thomas Zimmermann (3):
drm/mxsfb: Don't select DRM_KMS_FB_HELPER drm/zte: Don't select DRM_KMS_FB_HELPER drm/ast: Remove reference to struct drm_device.pdev
Tiezhu Yang (1):
drm/radeon: Call radeon_suspend_kms() in radeon_pci_shutdown() for Loongson64
Tim Jiang (1):
Bluetooth: btusb: fix bt fiwmare downloading failure issue for qca btsoc.
Timo Sigurdsson (1):
ata: ahci_sunxi: Disable DIPM
Tony Lindgren (1):
wlcore/wl12xx: Fix wl12xx get_mac error if device is in ELP
Vladimir Oltean (2):
net: mdio: provide shim implementation of devm_of_mdiobus_register
net: stmmac: the XPCS obscures a potential "PHY not found" error
Vladimir Stempen (1):
drm/amd/display: Release MST resources on switch from MST to SST
Wang Li (1):
drm/mediatek: Fix PM reference leak in mtk_crtc_ddp_hw_init()
Weilun Du (1):
mac80211_hwsim: add concurrent channels scanning support over virtio
Wesley Chalmers (2):
drm/amd/display: Set DISPCLK_MAX_ERRDET_CYCLES to 7 drm/amd/display: Fix off-by-one error in DML
Willy Tarreau (1):
ipv6: use prandom_u32() for ID generation
Wolfram Sang (1):
mmc: core: clear flags before allowing to retune
Xianting Tian (1):
virtio_net: Remove BUG() to avoid machine dead
Xiao Yang (1):
RDMA/rxe: Don't overwrite errno from ib_umem_get()
Xiaochen Shen (1):
selftests/resctrl: Fix incorrect parsing of option "-t"
Xie Yongji (2):
drm/virtio: Fix double free on probe failure
virtio-net: Add validation for used length
Yang Yingliang (10):
net: mscc: ocelot: check return value after calling platform_get_resource()
net: bcmgenet: check return value after calling platform_get_resource()
net: mvpp2: check return value after calling platform_get_resource()
net: micrel: check return value after calling platform_get_resource()
net: moxa: Use devm_platform_get_and_ioremap_resource()
net: sgi: ioc3-eth: check return value after calling platform_get_resource()
fjes: check return value after calling platform_get_resource()
net: ipa: Add missing of_node_put() in ipa_firmware_load()
net: sched: fix error return code in tcf_del_walker()
io_uring: fix clear IORING_SETUP_R_DISABLED in wrong function
Yejune Deng (1):
io_uring: simplify io_remove_personalities()
Yu Kuai (1):
drm: bridge: cdns-mhdp8546: Fix PM reference leak in
Yu Liu (1):
Bluetooth: Fix the HCI to MGMT status conversion table
Yuchung Cheng (1):
net: tcp better handling of reordering then loss cases
Yun Zhou (1):
seq_buf: Fix overflow in seq_buf_putmem_hex()
Zhenyu Ye (1):
arm64: tlb: fix the TTL value of tlb_get_level
Zheyu Ma (2):
atm: nicstar: use 'dma_free_coherent' instead of 'kfree'
atm: nicstar: register the interrupt handler in the right place
Zhihao Cheng (1):
ubifs: Fix races between xattr_{set|get} and listxattr operations
Zou Wei (8):
atm: iphase: fix possible use-after-free in ia_module_exit()
mISDN: fix possible use-after-free in HFC_cleanup()
atm: nicstar: Fix possible use-after-free in nicstar_cleanup() drm/bridge: lt9611: Add missing MODULE_DEVICE_TABLE drm/vc4: hdmi: Fix PM reference leak in vc4_hdmi_encoder_pre_crtc_co() drm/bridge: cdns: Fix PM reference leak in cdns_dsi_transfer()
cw1200: add missing MODULE_DEVICE_TABLE
pinctrl: mcp23s08: Fix missing unlock on error in mcp23s08_irq()
gushengxian (1):
flow_offload: action should not be NULL when it is referenced
mark-yw.chen (1):
Bluetooth: btusb: Fixed too many in-token issue for Mediatek Chip.
xinhui pan (1):
drm/amdkfd: Walk through list with dqm lock hold
zhanglianjie (1):
MIPS: loongsoon64: Reserve memory below starting pfn to prevent Oops
Íñigo Huguet (2):
sfc: avoid double pci_remove of VFs
sfc: error code if SRIOV cannot be disabled
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 50 +SUBLEVEL = 51 EXTRAVERSION = NAME = Dare mighty things
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts +5 -0
@@ -384,6 +384,11 @@ &usb20_otg { status = "okay"; }; +&usbdrd3 { + dr_mode = "host"; + status = "okay"; +}; + &usb_host0_ehci { status = "okay"; };
arch/arm64/boot/dts/rockchip/rk3328.dtsi +19 -0
@@ -984,6 +984,25 @@ usb_host0_ohci: usb@ff5d0000 { status = "disabled"; }; + usbdrd3: usb@ff600000 { + compatible = "rockchip,rk3328-dwc3", "snps,dwc3"; + reg = <0x0 0xff600000 0x0 0x100000>; + interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cru SCLK_USB3OTG_REF>, <&cru SCLK_USB3OTG_SUSPEND>, + <&cru ACLK_USB3OTG>; + clock-names = "ref_clk", "suspend_clk", + "bus_clk"; + dr_mode = "otg"; + phy_type = "utmi_wide"; + snps,dis-del-phy-power-chg-quirk; + snps,dis_enblslpm_quirk; + snps,dis-tx-ipgap-linecheck-quirk; + snps,dis-u2-freeclk-exists-quirk; + snps,dis_u2_susphy_quirk; + snps,dis_u3_susphy_quirk; + status = "disabled"; + }; + gic: interrupt-controller@ff811000 { compatible = "arm,gic-400"; #interrupt-cells = <3>;
arch/arm64/include/asm/tlb.h +4 -0
@@ -28,6 +28,10 @@ static void tlb_flush(struct mmu_gather *tlb);*/ static inline int tlb_get_level (struct mmu_gather *tlb) { +/* The TTL field is only valid for the leaf entry. */ +if (tlb->freed_tables) +return 0 ; +if (tlb->cleared_ptes && !(tlb->cleared_pmds || tlb->cleared_puds || tlb->cleared_p4ds))
arch/mips/Kconfig +2 -0
@@ -418,6 +418,8 @@ config MACH_INGENIC_SOC select MIPS_GENERIC select MACH_INGENIC select SYS_SUPPORTS_ZBOOT_UART16550 + select CPU_SUPPORTS_CPUFREQ + select MIPS_EXTERNAL_TIMER config LANTIQ bool "Lantiq based platforms"
arch/mips/include/asm/cpu-features.h +3 -1
@@ -64,6 +64,8 @@ ((MIPS_ISA_REV >= (ge)) && (MIPS_ISA_REV < (lt)))#define __isa_range_or_flag (ge, lt, flag) \ (__isa_range(ge, lt) || ((MIPS_ISA_REV < (lt)) && __isa(flag))) +#define __isa_range_and_ase (ge, lt, ase) \ + (__isa_range(ge, lt) && __ase(ase))/* * SMP assumption: Options of CPU 0 are a superset of all processors.
@@ -423,7 +425,7 @@#endif #ifndef cpu_has_mipsmt -#define cpu_has_mipsmt __isa_lt_and_ase(6, MIPS_ASE_MIPSMT) +#define cpu_has_mipsmt __isa_range_and_ase(2, 6, MIPS_ASE_MIPSMT)#endif #ifndef cpu_has_vp
arch/mips/include/asm/hugetlb.h +7 -1
@@ -46,7 +46,13 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,static inline void huge_ptep_clear_flush (struct vm_area_struct *vma,unsigned long addr,pte_t *ptep) { -flush_tlb_page (vma, addr &huge_page_mask (hstate_vma (vma))); +/* +* clear the huge pte entry firstly, so that the other smp threads will +* not get old pte entry after finishing flush_tlb_page and before +* setting new huge pte entry +*/ +huge_ptep_get_and_clear (vma->vm_mm, addr, ptep); +flush_tlb_page (vma, addr); }#define __HAVE_ARCH_HUGE_PTE_NONE
arch/mips/include/asm/mipsregs.h +4 -4
@@ -2073,7 +2073,7 @@ _ASM_MACRO_0(tlbginvf, _ASM_INSN_IF_MIPS(0x4200000c) ({ int __res; \ __asm__ __volatile__( \ ".set\tpush\n\t" \ - ".set\tmips32r2\n\t" \ + ".set\tmips32r5\n\t" \ _ASM_SET_VIRT \ "mfgc0\t%0, " #source ", %1\n\t" \ ".set\tpop" \
@@ -2086,7 +2086,7 @@ _ASM_MACRO_0(tlbginvf, _ASM_INSN_IF_MIPS(0x4200000c) ({ unsigned long long __res; \ __asm__ __volatile__( \ ".set\tpush\n\t" \ - ".set\tmips64r2\n\t" \ + ".set\tmips64r5\n\t" \ _ASM_SET_VIRT \ "dmfgc0\t%0, " #source ", %1\n\t" \ ".set\tpop" \
@@ -2099,7 +2099,7 @@ _ASM_MACRO_0(tlbginvf, _ASM_INSN_IF_MIPS(0x4200000c) do { \ __asm__ __volatile__( \ ".set\tpush\n\t" \ - ".set\tmips32r2\n\t" \ + ".set\tmips32r5\n\t" \ _ASM_SET_VIRT \ "mtgc0\t%z0, " #register ", %1\n\t" \ ".set\tpop" \
@@ -2111,7 +2111,7 @@ do { \ do { \ __asm__ __volatile__( \ ".set\tpush\n\t" \ - ".set\tmips64r2\n\t" \ + ".set\tmips64r5\n\t" \ _ASM_SET_VIRT \ "dmtgc0\t%z0, " #register ", %1\n\t" \ ".set\tpop" \
arch/mips/include/asm/pgalloc.h +7 -3
@@ -59,11 +59,15 @@ do { \static inline pmd_t *pmd_alloc_one (struct mm_struct *mm,unsigned long address) { -pmd_t *pmd; +pmd_t *pmd =NULL ; +struct page *pg; - pmd = (pmd_t *)__get_free_pages (GFP_KERNEL ,PMD_ORDER ); -if (pmd) + pg =alloc_pages (GFP_KERNEL | __GFP_ACCOUNT,PMD_ORDER ); +if (pg) { +pgtable_pmd_page_ctor (pg); + pmd = (pmd_t *)page_address (pg);pmd_init ((unsigned long )pmd, (unsigned long )invalid_pte_table); + }return pmd; }
arch/mips/kernel/cpu-probe.c +5 -0
@@ -1827,6 +1827,11 @@ static inline void cpu_probe_ingenic(struct cpuinfo_mips *c, unsigned int cpu)*/ case PRID_COMP_INGENIC_D0 : c->isa_level &= ~MIPS_CPU_ISA_M32R2 ; + +/* FPU is not properly detected on JZ4760(B). */ +if (c->processor_id ==0x2ed0024f ) + c->options |=MIPS_CPU_FPU ; + fallthrough;/*
arch/mips/loongson64/numa.c +3 -0
@@ -182,6 +182,9 @@ static void __init node_mem_init(unsigned int node)if (node_end_pfn (0 ) >= (0xffffffff >>PAGE_SHIFT ))memblock_reserve ((node_addrspace_offset |0xfe000000 ),32 <<20 ); + +/* Reserve pfn range 0~node[0]->node_start_pfn */ +memblock_reserve (0 ,PAGE_SIZE * start_pfn); } }
arch/powerpc/include/asm/barrier.h +2 -0
@@ -46,6 +46,8 @@# define SMPWMB eieio#endif +/* clang defines this macro for a builtin, which will not work with runtime patching */ +#undef __lwsync#define __lwsync () __asm__ __volatile__ (stringify_in_c(LWSYNC) : : :"memory")#define dma_rmb () __lwsync()#define dma_wmb () __asm__ __volatile__ (stringify_in_c(SMPWMB) : : :"memory")
arch/powerpc/mm/fault.c +1 -3
@@ -198,9 +198,7 @@ static bool bad_kernel_fault(struct pt_regs *regs, unsigned long error_code, {int is_exec =TRAP (regs) ==0x400 ; -/* NX faults set DSISR_PROTFAULT on the 8xx, DSISR_NOEXEC_OR_G on others */ -if (is_exec && (error_code & (DSISR_NOEXEC_OR_G |DSISR_KEYFAULT | -DSISR_PROTFAULT ))) { +if (is_exec) { pr_crit_ratelimited("kernel tried to execute %s page (%lx) - exploit attempt? (uid: %d)\n", address >= TASK_SIZE ? "exec-protected" : "user", address,
arch/powerpc/platforms/powernv/vas-window.c +5 -4
@@ -1093,9 +1093,9 @@ struct vas_window *vas_tx_win_open(int vasid, enum vas_cop_type cop,/* * Process closes window during exit. In the case of * multithread application, the child thread can open -* window and can exit without closing it. Expects parent -* thread to use and close the window. So do not need -* to take pid reference for parent thread. +* window and can exit without closing it. so takes tgid +* reference until window closed to make sure tgid is not +* reused. */ txwin->tgid =find_get_pid (task_tgid_vnr (current));/*
@@ -1339,8 +1339,9 @@ int vas_win_close(struct vas_window *window)/* if send window, drop reference to matching receive window */ if (window->tx_win) {if (window->user_win) { -/* Drop references to pid and mm */ +/* Drop references to pid. tgid and mm */ put_pid (window->pid); +put_pid (window->tgid);if (window->mm) {mm_context_remove_vas_window (window->mm);mmdrop (window->mm);
block/blk-rq-qos.c +2 -2
@@ -266,8 +266,8 @@ void rq_qos_wait(struct rq_wait *rqw, void *private_data,if (!has_sleeper &&acquire_inflight_cb (rqw, private_data))return ; -prepare_to_wait_exclusive (&rqw->wait, &data.wq,TASK_UNINTERRUPTIBLE ); - has_sleeper = !wq_has_single_sleeper (&rqw->wait); + has_sleeper = !prepare_to_wait_exclusive (&rqw->wait, &data.wq, +TASK_UNINTERRUPTIBLE ); do { /* The memory barrier in set_task_state saves us here. */ if (data.got_token)
drivers/ata/ahci_sunxi.c +1 -1
@@ -200,7 +200,7 @@ static void ahci_sunxi_start_engine(struct ata_port *ap) }static const struct ata_port_info ahci_sunxi_port_info = { - .flags =AHCI_FLAG_COMMON |ATA_FLAG_NCQ , + .flags =AHCI_FLAG_COMMON |ATA_FLAG_NCQ |ATA_FLAG_NO_DIPM , .pio_mask =ATA_PIO4 , .udma_mask =ATA_UDMA6 , .port_ops = &ahci_platform_ops,
drivers/atm/iphase.c +1 -1
@@ -3279,7 +3279,7 @@ static void __exit ia_module_exit(void) {pci_unregister_driver (&ia_driver); -del_timer (&ia_timer); +del_timer_sync (&ia_timer); }module_init (ia_module_init);
drivers/atm/nicstar.c +14 -12
@@ -297,7 +297,7 @@ static void __exit nicstar_cleanup(void) {XPRINTK ("nicstar: nicstar_cleanup() called.\n" ); -del_timer (&ns_timer); +del_timer_sync (&ns_timer);pci_unregister_driver (&nicstar_driver);
@@ -525,6 +525,15 @@ static int ns_init_card(int i, struct pci_dev *pcidev)/* Set the VPI/VCI MSb mask to zero so we can receive OAM cells */ writel (0x00000000 , card->membase +VPM ); + card->intcnt =0 ; +if (request_irq + (pcidev->irq, &ns_irq_handler,IRQF_SHARED ,"nicstar" , card) !=0 ) { +pr_err ("nicstar%d: can't allocate IRQ %d.\n" , i, pcidev->irq); + error =9 ; +ns_init_card_error (card, error); +return error; + } +/* Initialize TSQ */ card->tsq.org = dma_alloc_coherent(&card->pcidev->dev, NS_TSQSIZE + NS_TSQ_ALIGNMENT,
@@ -751,15 +760,6 @@ static int ns_init_card(int i, struct pci_dev *pcidev) card->efbie =1 ; - card->intcnt =0 ; -if (request_irq - (pcidev->irq, &ns_irq_handler,IRQF_SHARED ,"nicstar" , card) !=0 ) { -printk ("nicstar%d: can't allocate IRQ %d.\n" , i, pcidev->irq); - error =9 ; -ns_init_card_error (card, error); -return error; - } -/* Register device */ card->atmdev =atm_dev_register ("nicstar" , &card->pcidev->dev, &atm_ops,-1 ,NULL );
@@ -837,10 +837,12 @@ static void ns_init_card_error(ns_dev *card, int error)dev_kfree_skb_any (hb); }if (error >=12 ) { -kfree (card->rsq.org); +dma_free_coherent (&card->pcidev->dev,NS_RSQSIZE +NS_RSQ_ALIGNMENT , + card->rsq.org, card->rsq.dma); }if (error >=11 ) { -kfree (card->tsq.org); +dma_free_coherent (&card->pcidev->dev,NS_TSQSIZE +NS_TSQ_ALIGNMENT , + card->tsq.org, card->tsq.dma); }if (error >=10 ) {free_irq (card->pcidev->irq, card);
drivers/block/loop.c +3 -0
@@ -1224,6 +1224,9 @@ static int __loop_clr_fd(struct loop_device *lo, bool release) goto out_unlock; } +if (test_bit (QUEUE_FLAG_WC , &lo->lo_queue->queue_flags)) +blk_queue_write_cache (lo->lo_queue, false, false); +/* freeze request queue during the transition */ blk_mq_freeze_queue (lo->lo_queue);
drivers/bluetooth/btusb.c +19 -5
@@ -269,6 +269,8 @@ static const struct usb_device_id blacklist_table[] = { BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x0cf3, 0xe360), .driver_info = BTUSB_QCA_ROME | BTUSB_WIDEBAND_SPEECH }, + { USB_DEVICE(0x0cf3, 0xe500), .driver_info = BTUSB_QCA_ROME | + BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x0489, 0xe092), .driver_info = BTUSB_QCA_ROME | BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x0489, 0xe09f), .driver_info = BTUSB_QCA_ROME |
@@ -1719,6 +1721,13 @@ static void btusb_work(struct work_struct *work)* which work with WBS at all. */ new_alts =btusb_find_altsetting (data,6 ) ?6 :1 ; +/* Because mSBC frames do not need to be aligned to the +* SCO packet boundary. If support the Alt 3, use the +* Alt 3 for HCI payload >= 60 Bytes let air packet +* data satisfy 60 bytes. +*/ +if (new_alts ==1 &&btusb_find_altsetting (data,3 )) + new_alts =3 ; }if (btusb_switch_alt_setting (hdev, new_alts) <0 )
@@ -2963,11 +2972,6 @@ static int btusb_mtk_hci_wmt_sync(struct hci_dev *hdev,struct btmtk_wmt_hdr *hdr;int err; -/* Submit control IN URB on demand to process the WMT event */ - err =btusb_mtk_submit_wmt_recv_urb (hdev); -if (err <0 ) -return err; -/* Send the WMT command and wait until the WMT event returns */ hlen =sizeof (*hdr) + wmt_params->dlen;if (hlen >255 )
@@ -2989,6 +2993,11 @@ static int btusb_mtk_hci_wmt_sync(struct hci_dev *hdev,return err; } +/* Submit control IN URB on demand to process the WMT event */ + err =btusb_mtk_submit_wmt_recv_urb (hdev); +if (err <0 ) +return err; +/* The vendor specific WMT commands are all answered by a vendor * specific event and will have the Command Status or Command * Complete as with usual HCI command flow control.
@@ -3549,6 +3558,11 @@ static int btusb_setup_qca_download_fw(struct hci_dev *hdev, sent += size; count -= size; +/* ep2 need time to switch from function acl to function dfu, +* so we add 20ms delay here. +*/ +msleep (20 ); +while (count) { size =min_t (size_t, count,QCA_DFU_PACKET_LEN );
drivers/char/ipmi/ipmi_watchdog.c +12 -10
@@ -371,16 +371,18 @@ static int __ipmi_set_timeout(struct ipmi_smi_msg *smi_msg, data[0 ] =0 ;WDOG_SET_TIMER_USE (data[0 ],WDOG_TIMER_USE_SMS_OS ); -if ((ipmi_version_major >1 ) - || ((ipmi_version_major ==1 ) && (ipmi_version_minor >=5 ))) { -/* This is an IPMI 1.5-only feature. */ - data[0 ] |=WDOG_DONT_STOP_ON_SET ; - }else if (ipmi_watchdog_state !=WDOG_TIMEOUT_NONE ) { -/* -* In ipmi 1.0, setting the timer stops the watchdog, we -* need to start it back up again. -*/ - hbnow =1 ; +if (ipmi_watchdog_state !=WDOG_TIMEOUT_NONE ) { +if ((ipmi_version_major >1 ) || + ((ipmi_version_major ==1 ) && (ipmi_version_minor >=5 ))) { +/* This is an IPMI 1.5-only feature. */ + data[0 ] |=WDOG_DONT_STOP_ON_SET ; + }else { +/* +* In ipmi 1.0, setting the timer stops the watchdog, we +* need to start it back up again. +*/ + hbnow =1 ; + } } data[1 ] =0 ;
drivers/clk/renesas/r8a77995-cpg-mssr.c +1 -0
@@ -75,6 +75,7 @@ static const struct cpg_core_clk r8a77995_core_clks[] __initconst = {DEF_RATE (".oco" ,CLK_OCO ,8 *1000 *1000 ),/* Core Clock Outputs */ +DEF_FIXED ("za2" ,R8A77995_CLK_ZA2 ,CLK_PLL0D3 ,2 ,1 ),DEF_FIXED ("z2" ,R8A77995_CLK_Z2 ,CLK_PLL0D3 ,1 ,1 ),DEF_FIXED ("ztr" ,R8A77995_CLK_ZTR ,CLK_PLL1 ,6 ,1 ), DEF_FIXED("zt", R8A77995_CLK_ZT, CLK_PLL1, 4, 1),
drivers/clk/renesas/rcar-usb2-clock-sel.c +15 -9
@@ -128,10 +128,8 @@ static int rcar_usb2_clock_sel_resume(struct device *dev)static int rcar_usb2_clock_sel_remove (struct platform_device *pdev) {struct device *dev = &pdev->dev; -struct usb2_clock_sel_priv *priv =platform_get_drvdata (pdev);of_clk_del_provider (dev->of_node); -clk_hw_unregister (&priv->hw);pm_runtime_put (dev);pm_runtime_disable (dev);
@@ -164,9 +162,6 @@ static int rcar_usb2_clock_sel_probe(struct platform_device *pdev)if (IS_ERR (priv->rsts))return PTR_ERR (priv->rsts); -pm_runtime_enable (dev); -pm_runtime_get_sync (dev); - clk =devm_clk_get (dev,"usb_extal" );if (!IS_ERR (clk) && !clk_prepare_enable (clk)) { priv->extal = !!clk_get_rate (clk);
@@ -183,6 +178,8 @@ static int rcar_usb2_clock_sel_probe(struct platform_device *pdev)return -ENOENT ; } +pm_runtime_enable (dev); +pm_runtime_get_sync (dev);platform_set_drvdata (pdev, priv);dev_set_drvdata (dev, priv);
@@ -193,11 +190,20 @@ static int rcar_usb2_clock_sel_probe(struct platform_device *pdev) init.num_parents =0 ; priv->hw.init = &init; - clk =clk_register (NULL , &priv->hw); -if (IS_ERR (clk)) -return PTR_ERR (clk); + ret =devm_clk_hw_register (NULL , &priv->hw); +if (ret) + goto pm_put; + + ret =of_clk_add_hw_provider (np, of_clk_hw_simple_get, &priv->hw); +if (ret) + goto pm_put; + +return 0 ; -return of_clk_add_hw_provider (np, of_clk_hw_simple_get, &priv->hw); +pm_put: +pm_runtime_put (dev); +pm_runtime_disable (dev); +return ret; }static const struct dev_pm_ops rcar_usb2_clock_sel_pm_ops = {
drivers/clk/tegra/clk-periph-gate.c +47 -25
107 lines not on this page · raw message
drivers/clk/tegra/clk-periph.c +11 -0
@@ -100,6 +100,15 @@ static void clk_periph_disable(struct clk_hw *hw) gate_ops->disable (gate_hw); } +static void clk_periph_disable_unused (struct clk_hw *hw) +{ +struct tegra_clk_periph *periph =to_clk_periph (hw); +const struct clk_ops *gate_ops = periph->gate_ops; +struct clk_hw *gate_hw = &periph->gate.hw; + + gate_ops->disable_unused (gate_hw); +} +static void clk_periph_restore_context (struct clk_hw *hw) {struct tegra_clk_periph *periph =to_clk_periph (hw);
@@ -126,6 +135,7 @@ const struct clk_ops tegra_clk_periph_ops = { .is_enabled = clk_periph_is_enabled, .enable = clk_periph_enable, .disable = clk_periph_disable, + .disable_unused = clk_periph_disable_unused, .restore_context = clk_periph_restore_context, };
@@ -135,6 +145,7 @@ static const struct clk_ops tegra_clk_periph_nodiv_ops = { .is_enabled = clk_periph_is_enabled, .enable = clk_periph_enable, .disable = clk_periph_disable, + .disable_unused = clk_periph_disable_unused, .restore_context = clk_periph_restore_context, };
drivers/clk/tegra/clk-pll.c +4 -5
@@ -1131,7 +1131,8 @@ static int clk_pllu_enable(struct clk_hw *hw)if (pll->lock)spin_lock_irqsave (pll->lock, flags); -_clk_pll_enable (hw); +if (!clk_pll_is_enabled (hw)) +_clk_pll_enable (hw); ret =clk_pll_wait_for_lock (pll);if (ret <0 )
@@ -1748,15 +1749,13 @@ static int clk_pllu_tegra114_enable(struct clk_hw *hw)return -EINVAL ; } -if (clk_pll_is_enabled (hw)) -return 0 ; - input_rate =clk_hw_get_rate (__clk_get_hw (osc));if (pll->lock)spin_lock_irqsave (pll->lock, flags); -_clk_pll_enable (hw); +if (!clk_pll_is_enabled (hw)) +_clk_pll_enable (hw); ret =clk_pll_wait_for_lock (pll);if (ret <0 )
drivers/clocksource/arm_arch_timer.c +1 -1
@@ -352,7 +352,7 @@ static u64 notrace arm64_858921_read_cntvct_el0(void)do { \ _val =read_sysreg (reg); \ _retries--; \ - }while (((_val +1 ) &GENMASK (9 ,0 )) <=1 && _retries); \ + }while (((_val +1 ) &GENMASK (8 ,0 )) <=1 && _retries); \ \WARN_ON_ONCE (!_retries); \ _val; \
drivers/extcon/extcon-intel-mrfld.c +9 -0
@@ -197,6 +197,7 @@ static int mrfld_extcon_probe(struct platform_device *pdev)struct intel_soc_pmic *pmic =dev_get_drvdata (dev->parent);struct regmap *regmap = pmic->regmap;struct mrfld_extcon_data *data; +unsigned int status;unsigned int id;int irq, ret;
@@ -244,6 +245,14 @@ static int mrfld_extcon_probe(struct platform_device *pdev)/* Get initial state */ mrfld_extcon_role_detect (data); +/* +* Cached status value is used for cable detection, see comments +* in mrfld_extcon_cable_detect(), we need to sync cached value +* with a real state of the hardware. +*/ +regmap_read (regmap,BCOVE_SCHGRIRQ1 , &status); + data->status = status; +mrfld_extcon_clear (data,BCOVE_MIRQLVL1 ,BCOVE_LVL1_CHGR );mrfld_extcon_clear (data,BCOVE_MCHGRIRQ1 ,BCOVE_CHGRIRQ_ALL );
drivers/firmware/qemu_fw_cfg.c +3 -5
@@ -299,15 +299,13 @@ static int fw_cfg_do_platform_probe(struct platform_device *pdev)return 0 ; } -static ssize_t fw_cfg_showrev (struct kobject *k,struct attribute *a,char *buf) +static ssize_t fw_cfg_showrev (struct kobject *k,struct kobj_attribute *a, +char *buf) {return sprintf (buf,"%u\n" , fw_cfg_rev); } -static const struct { -struct attribute attr; -ssize_t (*show)(struct kobject *k,struct attribute *a,char *buf); -} fw_cfg_rev_attr = { +static const struct kobj_attribute fw_cfg_rev_attr = { .attr = { .name ="rev" , .mode =S_IRUSR }, .show = fw_cfg_showrev, };
drivers/fpga/stratix10-soc.c +1 -0
@@ -454,6 +454,7 @@ static int s10_remove(struct platform_device *pdev)struct s10_priv *priv = mgr->priv;fpga_mgr_unregister (mgr); +fpga_mgr_free (mgr);stratix10_svc_free_channel (priv->chan);return 0 ;
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +4 -17
@@ -48,12 +48,6 @@ static struct {spinlock_t mem_limit_lock; } kfd_mem_limit; -/* Struct used for amdgpu_amdkfd_bo_validate */ -struct amdgpu_vm_parser { -uint32_t domain; -bool wait; -}; -static const char *const domain_bit_to_string[] = {"CPU" ,"GTT" ,
@@ -337,11 +331,9 @@ static int amdgpu_amdkfd_bo_validate(struct amdgpu_bo *bo, uint32_t domain,return ret; } -static int amdgpu_amdkfd_validate (void *param,struct amdgpu_bo *bo) +static int amdgpu_amdkfd_validate_vm_bo (void *_unused,struct amdgpu_bo *bo) { -struct amdgpu_vm_parser *p = param; - -return amdgpu_amdkfd_bo_validate (bo, p->domain, p->wait); +return amdgpu_amdkfd_bo_validate (bo, bo->allowed_domains, false); }/* vm_validate_pt_pd_bos - Validate page table and directory BOs
@@ -355,20 +347,15 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm) {struct amdgpu_bo *pd = vm->root.base.bo;struct amdgpu_device *adev =amdgpu_ttm_adev (pd->tbo.bdev); -struct amdgpu_vm_parser param;int ret; - param.domain =AMDGPU_GEM_DOMAIN_VRAM ; - param.wait = false; - - ret =amdgpu_vm_validate_pt_bos (adev, vm, amdgpu_amdkfd_validate, - ¶m); + ret =amdgpu_vm_validate_pt_bos (adev, vm, amdgpu_amdkfd_validate_vm_bo,NULL );if (ret) {pr_err ("failed to validate PT BOs\n" );return ret; } - ret =amdgpu_amdkfd_validate (¶m, pd); + ret =amdgpu_amdkfd_validate_vm_bo (NULL , pd);if (ret) {pr_err ("failed to validate PD\n" );return ret;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +1 -1
@@ -2760,7 +2760,7 @@ static int amdgpu_device_ip_reinit_early_sriov(struct amdgpu_device *adev) AMD_IP_BLOCK_TYPE_IH, }; -for (i =0 ; i <ARRAY_SIZE (ip_order); i++) { +for (i =0 ; i < adev->num_ip_blocks; i++) {int j;struct amdgpu_ip_block *block;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +1 -10
@@ -128,7 +128,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,struct amdgpu_device *adev = ring->adev;struct amdgpu_ib *ib = &ibs[0 ];struct dma_fence *tmp =NULL ; -bool skip_preamble, need_ctx_switch; +bool need_ctx_switch;unsigned patch_offset = ~0 ;struct amdgpu_vm *vm;uint64_t fence_ctx;
@@ -221,7 +221,6 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,if (need_ctx_switch) status |=AMDGPU_HAVE_CTX_SWITCH ; - skip_preamble = ring->current_ctx == fence_ctx;if (job && ring->funcs->emit_cntxcntl) { status |= job->preamble_status; status |= job->preemption_status;
@@ -239,14 +238,6 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,for (i =0 ; i < num_ibs; ++i) { ib = &ibs[i]; -/* drop preamble IBs if we don't have a context switch */ -if ((ib->flags &AMDGPU_IB_FLAG_PREAMBLE ) && - skip_preamble && - !(status &AMDGPU_PREAMBLE_IB_PRESENT_FIRST ) && - !amdgpu_mcbp && - !amdgpu_sriov_vf (adev))/* for SRIOV preemption, Preamble CE ib must be inserted anyway */ -continue ; -if (job && ring->funcs->emit_frame_cntl) {if (secure != !!(ib->flags &AMDGPU_IB_FLAGS_SECURE )) {amdgpu_ring_emit_frame_cntl (ring, false, secure);
drivers/gpu/drm/amd/amdgpu/amdgpu_umc.h +5 -0
@@ -21,6 +21,11 @@#ifndef __AMDGPU_UMC_H__#define __AMDGPU_UMC_H__ +/* +* (addr / 256) * 4096, the higher 26 bits in ErrorAddr +* is the index of 4KB block +*/ +#define ADDR_OF_4KB_BLOCK (addr) (((addr) & ~0xffULL) << 4)/* * (addr / 256) * 8192, the higher 26 bits in ErrorAddr * is the index of 8KB block
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +2 -2
@@ -143,7 +143,7 @@ static const struct soc15_reg_golden golden_settings_sdma_4_1[] = {SOC15_REG_GOLDEN_VALUE (SDMA0 ,0 , mmSDMA0_RLC0_RB_WPTR_POLL_CNTL,0xfffffff7 ,0x00403000 ),SOC15_REG_GOLDEN_VALUE (SDMA0 ,0 , mmSDMA0_RLC1_IB_CNTL,0x800f0111 ,0x00000100 ),SOC15_REG_GOLDEN_VALUE (SDMA0 ,0 , mmSDMA0_RLC1_RB_WPTR_POLL_CNTL,0xfffffff7 ,0x00403000 ), -SOC15_REG_GOLDEN_VALUE (SDMA0 ,0 , mmSDMA0_UTCL1_PAGE,0x000003ff ,0x000003c0 ), +SOC15_REG_GOLDEN_VALUE (SDMA0 ,0 , mmSDMA0_UTCL1_PAGE,0x000003ff ,0x000003e0 ), SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_WATERMK, 0xfc000000, 0x00000000) };
@@ -269,7 +269,7 @@ static const struct soc15_reg_golden golden_settings_sdma_4_3[] = {SOC15_REG_GOLDEN_VALUE (SDMA0 ,0 , mmSDMA0_POWER_CNTL,0x003fff07 ,0x40000051 ),SOC15_REG_GOLDEN_VALUE (SDMA0 ,0 , mmSDMA0_RLC0_RB_WPTR_POLL_CNTL,0xfffffff7 ,0x00403000 ),SOC15_REG_GOLDEN_VALUE (SDMA0 ,0 , mmSDMA0_RLC1_RB_WPTR_POLL_CNTL,0xfffffff7 ,0x00403000 ), -SOC15_REG_GOLDEN_VALUE (SDMA0 ,0 , mmSDMA0_UTCL1_PAGE,0x000003ff ,0x000003c0 ), +SOC15_REG_GOLDEN_VALUE (SDMA0 ,0 , mmSDMA0_UTCL1_PAGE,0x000003ff ,0x000003e0 ), SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_WATERMK, 0xfc000000, 0x03fbe1fe) };
drivers/gpu/drm/amd/amdgpu/umc_v8_7.c +1 -1
@@ -233,7 +233,7 @@ static void umc_v8_7_query_error_address(struct amdgpu_device *adev, err_addr &= ~((0x1ULL << lsb) -1 );/* translate umc channel address to soc pa, 3 parts are included */ - retired_page =ADDR_OF_8KB_BLOCK (err_addr) | + retired_page =ADDR_OF_4KB_BLOCK (err_addr) |ADDR_OF_256B_BLOCK (channel_index) |OFFSET_IN_256B_BLOCK (err_addr);
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +38 -30
138 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +23 -1
@@ -3685,6 +3685,23 @@ static int fill_dc_scaling_info(const struct drm_plane_state *state, scaling_info->src_rect.x = state->src_x >>16 ; scaling_info->src_rect.y = state->src_y >>16 ; +/* +* For reasons we don't (yet) fully understand a non-zero +* src_y coordinate into an NV12 buffer can cause a +* system hang. To avoid hangs (and maybe be overly cautious) +* let's reject both non-zero src_x and src_y. +* +* We currently know of only one use-case to reproduce a +* scenario with non-zero src_x and src_y for NV12, which +* is to gesture the YouTube Android app into full screen +* on ChromeOS. +*/ +if (state->fb && + state->fb->format->format ==DRM_FORMAT_NV12 && + (scaling_info->src_rect.x !=0 || + scaling_info->src_rect.y !=0 )) +return -EINVAL ; +/* * For reasons we don't (yet) fully understand a non-zero * src_y coordinate into an NV12 buffer can cause a
@@ -8291,7 +8308,8 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm,BUG_ON (dm_new_crtc_state->stream ==NULL );/* Scaling or underscan settings */ -if (is_scaling_state_different (dm_old_conn_state, dm_new_conn_state)) +if (is_scaling_state_different (dm_old_conn_state, dm_new_conn_state) || +drm_atomic_crtc_needs_modeset (new_crtc_state))update_stream_scaling_settings ( &new_crtc_state->mode, dm_new_conn_state, dm_new_crtc_state->stream);
@@ -8744,6 +8762,10 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, old_crtc_state->vrr_enabled == new_crtc_state->vrr_enabled)continue ; + ret =amdgpu_dm_verify_lut_sizes (new_crtc_state); +if (ret) + goto fail; +if (!new_crtc_state->enable)continue ;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +1 -0
@@ -498,6 +498,7 @@ void amdgpu_dm_trigger_timing_sync(struct drm_device *dev);#define MAX_COLOR_LEGACY_LUT_ENTRIES 256void amdgpu_dm_init_color_mod (void ); +int amdgpu_dm_verify_lut_sizes (const struct drm_crtc_state *crtc_state);int amdgpu_dm_update_crtc_color_mgmt (struct dm_crtc_state *crtc);int amdgpu_dm_update_plane_color_mgmt (struct dm_crtc_state *crtc,struct dc_plane_state *dc_plane_state);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c +35 -6
55 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +2 -0
@@ -1704,6 +1704,8 @@ static void set_dp_mst_mode(struct dc_link *link, bool mst_enable) link->type = dc_connection_single; link->local_sink = link->remote_sinks[0 ]; link->local_sink->sink_signal =SIGNAL_TYPE_DISPLAY_PORT ; +dc_sink_retain (link->local_sink); +dm_helpers_dp_mst_stop_top_mgr (link->ctx, link); }else if (mst_enable == true && link->type == dc_connection_single && link->remote_sinks[0 ] !=NULL ) {
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c +6 -3
@@ -482,10 +482,13 @@ static enum lb_memory_config dpp1_dscl_find_lb_memory_config(struct dcn10_dpp *dint vtaps_c = scl_data->taps.v_taps_c;int ceil_vratio =dc_fixpt_ceil (scl_data->ratios.vert);int ceil_vratio_c =dc_fixpt_ceil (scl_data->ratios.vert_c); -enum lb_memory_config mem_cfg =LB_MEMORY_CONFIG_0 ; -if (dpp->base.ctx->dc->debug.use_max_lb) -return mem_cfg; +if (dpp->base.ctx->dc->debug.use_max_lb) { +if (scl_data->format ==PIXEL_FORMAT_420BPP8 + || scl_data->format ==PIXEL_FORMAT_420BPP10 ) +return LB_MEMORY_CONFIG_3 ; +return LB_MEMORY_CONFIG_0 ; + } dpp->base.caps->dscl_calc_lb_num_partitions ( scl_data,LB_MEMORY_CONFIG_1 , &num_part_y, &num_part_c);
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +1 -1
@@ -243,7 +243,7 @@ void dcn20_dccg_init(struct dce_hwseq *hws)REG_WRITE (MILLISECOND_TIME_BASE_DIV ,0x1186a0 );/* This value is dependent on the hardware pipeline delay so set once per SOC */ -REG_WRITE (DISPCLK_FREQ_CHANGE_CNTL ,0x801003c ); +REG_WRITE (DISPCLK_FREQ_CHANGE_CNTL ,0xe01003c ); } void dcn20_disable_vga(
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c +28 -50
129 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/irq_types.h +1 -1
@@ -163,7 +163,7 @@ enum irq_type };#define DAL_VALID_IRQ_SRC_NUM (src) \ - ((src) <= DAL_IRQ_SOURCES_NUMBER && (src) > DC_IRQ_SOURCE_INVALID) + ((src) < DAL_IRQ_SOURCES_NUMBER && (src) > DC_IRQ_SOURCE_INVALID)/* Number of Page Flip IRQ Sources. */ #define DAL_PFLIP_IRQ_SRC_NUM \
drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c +0 -1
@@ -260,7 +260,6 @@ enum mod_hdcp_status mod_hdcp_setup(struct mod_hdcp *hdcp,struct mod_hdcp_output output;enum mod_hdcp_status status =MOD_HDCP_STATUS_SUCCESS ; -memset (hdcp,0 ,sizeof (struct mod_hdcp ));memset (&output,0 ,sizeof (output)); hdcp->config = *config;HDCP_TOP_INTERFACE_TRACE (hdcp);
drivers/gpu/drm/amd/display/modules/hdcp/hdcp1_execution.c +3 -1
@@ -29,8 +29,10 @@ static inline enum mod_hdcp_status validate_bksv(struct mod_hdcp *hdcp) {uint64_t n =0 ;uint8_t count =0 ; +u8 bksv[sizeof (n)] = { }; -memcpy (&n, hdcp->auth.msg.hdcp1.bksv,sizeof (uint64_t )); +memcpy (bksv, hdcp->auth.msg.hdcp1.bksv,sizeof (hdcp->auth.msg.hdcp1.bksv)); + n = *(uint64_t *)bksv;while (n) { count++;
drivers/gpu/drm/amd/include/navi10_enum.h +1 -1
@@ -430,7 +430,7 @@ ARRAY_2D_DEPTH = 0x00000001,*/ typedef enum ENUM_NUM_SIMD_PER_CU { -NUM_SIMD_PER_CU =0x00000004 , +NUM_SIMD_PER_CU =0x00000002 , }ENUM_NUM_SIMD_PER_CU ;/*
drivers/gpu/drm/arm/malidp_planes.c +7 -2
@@ -922,6 +922,11 @@ static const struct drm_plane_helper_funcs malidp_de_plane_helper_funcs = { .atomic_disable = malidp_de_plane_disable, }; +static const uint64_t linear_only_modifiers[] = { +DRM_FORMAT_MOD_LINEAR , +DRM_FORMAT_MOD_INVALID +}; +int malidp_de_planes_init (struct drm_device *drm) {struct malidp_drm *malidp = drm->dev_private;
@@ -985,8 +990,8 @@ int malidp_de_planes_init(struct drm_device *drm)*/ ret =drm_universal_plane_init (drm, &plane->base, crtcs, &malidp_de_plane_funcs, formats, n, - (id ==DE_SMART ) ?NULL : modifiers, plane_type, -NULL ); + (id ==DE_SMART ) ? linear_only_modifiers : modifiers, + plane_type,NULL );if (ret <0 ) goto cleanup;
drivers/gpu/drm/ast/ast_dp501.c +103 -36
166 lines not on this page · raw message
drivers/gpu/drm/ast/ast_drv.h +12 -0
@@ -120,6 +120,7 @@ struct ast_private {void __iomem *regs;void __iomem *ioregs; +void __iomem *dp501_fw_buf;enum ast_chip chip;bool vga2_clone;
@@ -298,6 +299,17 @@ int ast_mode_config_init(struct ast_private *ast);#define AST_MM_ALIGN_SHIFT 4#define AST_MM_ALIGN_MASK ((1 << AST_MM_ALIGN_SHIFT) - 1) +#define AST_DP501_FW_VERSION_MASK GENMASK(7, 4) +#define AST_DP501_FW_VERSION_1 BIT(4) +#define AST_DP501_PNP_CONNECTED BIT(1) + +#define AST_DP501_DEFAULT_DCLK 65 + +#define AST_DP501_GBL_VERSION 0xf000 +#define AST_DP501_PNPMONITOR 0xf010 +#define AST_DP501_LINKRATE 0xf014 +#define AST_DP501_EDID_DATA 0xf020 +int ast_mm_init (struct ast_private *ast);/* ast post */
drivers/gpu/drm/ast/ast_main.c +9 -2
@@ -98,7 +98,7 @@ static void ast_detect_config_mode(struct drm_device *dev, u32 *scu_rev)if (!(jregd0 &0x80 ) || !(jregd1 &0x10 )) {/* Double check it's actually working */ data =ast_read32 (ast,0xf004 ); -if (data !=0xFFFFFFFF ) { +if ((data !=0xFFFFFFFF ) && (data !=0x00 )) {/* P2A works, grab silicon revision */ ast->config_mode = ast_use_p2a;
@@ -406,7 +406,6 @@ struct ast_private *ast_device_create(struct drm_driver *drv,return ast; dev = &ast->base; - dev->pdev = pdev;pci_set_drvdata (pdev, dev); ast->regs =pcim_iomap (pdev,1 ,0 );
@@ -446,6 +445,14 @@ struct ast_private *ast_device_create(struct drm_driver *drv,if (ret)return ERR_PTR (ret); +/* map reserved buffer */ + ast->dp501_fw_buf =NULL ; +if (dev->vram_mm->vram_size <pci_resource_len (pdev,0 )) { + ast->dp501_fw_buf =pci_iomap_range (pdev,0 , dev->vram_mm->vram_size,0 ); +if (!ast->dp501_fw_buf) +drm_info (dev,"failed to map reserved buffer!\n" ); + } + ret =ast_mode_config_init (ast);if (ret)return ERR_PTR (ret);
drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +2 -2
@@ -2369,9 +2369,9 @@ static int cdns_mhdp_probe(struct platform_device *pdev)clk_prepare_enable (clk);pm_runtime_enable (dev); - ret =pm_runtime_get_sync (dev); + ret =pm_runtime_resume_and_get (dev);if (ret <0 ) { -dev_err (dev,"pm_runtime_get_sync failed\n" ); +dev_err (dev,"pm_runtime_resume_and_get failed\n" );pm_runtime_disable (dev); goto clk_disable; }
drivers/gpu/drm/bridge/cdns-dsi.c +1 -1
@@ -1028,7 +1028,7 @@ static ssize_t cdns_dsi_transfer(struct mipi_dsi_host *host,struct mipi_dsi_packet packet;int ret, i, tx_len, rx_len; - ret =pm_runtime_get_sync (host->dev); + ret =pm_runtime_resume_and_get (host->dev);if (ret <0 )return ret;
drivers/gpu/drm/bridge/lontium-lt9611.c +1 -0
@@ -1209,6 +1209,7 @@ static struct i2c_device_id lt9611_id[] = { { "lontium,lt9611", 0 }, {} }; +MODULE_DEVICE_TABLE (i2c, lt9611_id);static const struct of_device_id lt9611_match_table[] = { { .compatible = "lontium,lt9611" },
drivers/gpu/drm/bridge/nwl-dsi.c +39 -22
103 lines not on this page · raw message
drivers/gpu/drm/drm_dp_helper.c +7 -0
@@ -602,7 +602,14 @@ int drm_dp_read_downstream_info(struct drm_dp_aux *aux, !(dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_PRESENT))return 0 ; +/* Some branches advertise having 0 downstream ports, despite also advertising they have a +* downstream port present. The DP spec isn't clear on if this is allowed or not, but since +* some branches do it we need to handle it regardless. +*/ len =drm_dp_downstream_port_count (dpcd); +if (!len) +return 0 ; +if (dpcd[DP_DOWNSTREAMPORT_PRESENT ] &DP_DETAILED_CAP_INFO_AVAILABLE ) len *=4 ;
drivers/gpu/drm/i915/display/intel_dp.c +1 -1
@@ -5080,7 +5080,7 @@ static int intel_dp_vsc_sdp_unpack(struct drm_dp_vsc_sdp *vsc,if (size <sizeof (struct dp_sdp ))return -EINVAL ; -memset (vsc,0 , size); +memset (vsc,0 ,sizeof (*vsc));if (sdp->sdp_header.HB0 !=0 )return -EINVAL ;
drivers/gpu/drm/mediatek/mtk_drm_crtc.c +1 -1
@@ -274,7 +274,7 @@ static int mtk_crtc_ddp_hw_init(struct mtk_drm_crtc *mtk_crtc)drm_connector_list_iter_end (&conn_iter); } - ret =pm_runtime_get_sync (crtc->dev->dev); + ret =pm_runtime_resume_and_get (crtc->dev->dev);if (ret <0 ) {DRM_ERROR ("Failed to enable power domain: %d\n" , ret);return ret;
drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c +0 -2
@@ -88,8 +88,6 @@ static int mdp4_hw_init(struct msm_kms *kms)if (mdp4_kms->rev >1 )mdp4_write (mdp4_kms,REG_MDP4_RESET_STATUS ,1 ); - dev->mode_config.allow_fb_modifiers = true; - out:pm_runtime_put_sync (dev->dev);
drivers/gpu/drm/msm/disp/mdp4/mdp4_plane.c +7 -1
@@ -347,6 +347,12 @@ enum mdp4_pipe mdp4_plane_pipe(struct drm_plane *plane)return mdp4_plane->pipe; } +static const uint64_t supported_format_modifiers[] = { +DRM_FORMAT_MOD_SAMSUNG_64_32_TILE , +DRM_FORMAT_MOD_LINEAR , +DRM_FORMAT_MOD_INVALID +}; +/* initialize plane */ struct drm_plane *mdp4_plane_init (struct drm_device *dev,enum mdp4_pipe pipe_id,bool private_plane)
@@ -375,7 +381,7 @@ struct drm_plane *mdp4_plane_init(struct drm_device *dev, type = private_plane ?DRM_PLANE_TYPE_PRIMARY :DRM_PLANE_TYPE_OVERLAY ; ret =drm_universal_plane_init (dev, plane,0xff , &mdp4_plane_funcs, mdp4_plane->formats, mdp4_plane->nformats, -NULL , type,NULL ); + supported_format_modifiers, type,NULL );if (ret) goto fail;
drivers/gpu/drm/mxsfb/Kconfig +0 -1
@@ -10,7 +10,6 @@ config DRM_MXSFB depends on COMMON_CLK select DRM_MXS select DRM_KMS_HELPER - select DRM_KMS_FB_HELPER select DRM_KMS_CMA_HELPER select DRM_PANEL select DRM_PANEL_BRIDGE
drivers/gpu/drm/nouveau/nouveau_display.c +0 -1
@@ -700,7 +700,6 @@ nouveau_display_create(struct drm_device *dev) dev->mode_config.preferred_depth =24 ; dev->mode_config.prefer_shadow =1 ; - dev->mode_config.allow_fb_modifiers = true;if (drm->client.device.info.chipset <0x11 ) dev->mode_config.async_page_flip = false;
drivers/gpu/drm/radeon/radeon_display.c +1 -0
@@ -1334,6 +1334,7 @@ radeon_user_framebuffer_create(struct drm_device *dev,/* Handle is imported dma-buf, so cannot be migrated to VRAM for scanout */ if (obj->import_attach) {DRM_DEBUG_KMS ("Cannot create framebuffer from imported dma_buf\n" ); +drm_gem_object_put (obj);return ERR_PTR (-EINVAL ); }
drivers/gpu/drm/radeon/radeon_drv.c +4 -4
@@ -416,13 +416,13 @@ radeon_pci_shutdown(struct pci_dev *pdev)if (radeon_device_is_virtual ())radeon_pci_remove (pdev); -#ifdef CONFIG_PPC64 +#if defined(CONFIG_PPC64 ) || defined(CONFIG_MACH_LOONGSON64 )/* * Some adapters need to be suspended before a * shutdown occurs in order to prevent an error -* during kexec. -* Make this power specific becauase it breaks -* some non-power boards. +* during kexec, shutdown or reboot. +* Make this power and Loongson specific because +* it breaks some other boards. */ radeon_suspend_kms (pci_get_drvdata (pdev), true, true, false);#endif
drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c +0 -4
@@ -243,7 +243,6 @@ struct dw_mipi_dsi_rockchip {struct dw_mipi_dsi *dmd;const struct rockchip_dw_dsi_chip_data *cdata;struct dw_mipi_dsi_plat_data pdata; -int devcnt; };struct dphy_pll_parameter_map {
@@ -1141,9 +1140,6 @@ static int dw_mipi_dsi_rockchip_remove(struct platform_device *pdev) {struct dw_mipi_dsi_rockchip *dsi =platform_get_drvdata (pdev); -if (dsi->devcnt ==0 ) -component_del (dsi->dev, &dw_mipi_dsi_rockchip_ops); -dw_mipi_dsi_remove (dsi->dmd);return 0 ;
drivers/gpu/drm/rockchip/rockchip_vop_reg.c +13 -8
@@ -349,8 +349,8 @@ static const struct vop_win_phy rk3066_win0_data = { .nformats = ARRAY_SIZE(formats_win_full), .format_modifiers = format_modifiers_win_full, .enable = VOP_REG(RK3066_SYS_CTRL1, 0x1, 0), - .format = VOP_REG(RK3066_SYS_CTRL0, 0x7, 4), - .rb_swap = VOP_REG(RK3066_SYS_CTRL0, 0x1, 19), + .format = VOP_REG(RK3066_SYS_CTRL1, 0x7, 4), + .rb_swap = VOP_REG(RK3066_SYS_CTRL1, 0x1, 19), .act_info = VOP_REG(RK3066_WIN0_ACT_INFO, 0x1fff1fff, 0), .dsp_info = VOP_REG(RK3066_WIN0_DSP_INFO, 0x0fff0fff, 0), .dsp_st = VOP_REG(RK3066_WIN0_DSP_ST, 0x1fff1fff, 0),
@@ -361,13 +361,12 @@ static const struct vop_win_phy rk3066_win0_data = { };static const struct vop_win_phy rk3066_win1_data = { - .scl = &rk3066_win_scl, .data_formats = formats_win_full, .nformats =ARRAY_SIZE (formats_win_full), .format_modifiers = format_modifiers_win_full, .enable =VOP_REG (RK3066_SYS_CTRL1 ,0x1 ,1 ), - .format =VOP_REG (RK3066_SYS_CTRL0 ,0x7 ,7 ), - .rb_swap =VOP_REG (RK3066_SYS_CTRL0 ,0x1 ,23 ), + .format =VOP_REG (RK3066_SYS_CTRL1 ,0x7 ,7 ), + .rb_swap =VOP_REG (RK3066_SYS_CTRL1 ,0x1 ,23 ), .act_info =VOP_REG (RK3066_WIN1_ACT_INFO ,0x1fff1fff ,0 ), .dsp_info =VOP_REG (RK3066_WIN1_DSP_INFO ,0x0fff0fff ,0 ), .dsp_st =VOP_REG (RK3066_WIN1_DSP_ST ,0x1fff1fff ,0 ),
@@ -382,8 +381,8 @@ static const struct vop_win_phy rk3066_win2_data = { .nformats = ARRAY_SIZE(formats_win_lite), .format_modifiers = format_modifiers_win_lite, .enable = VOP_REG(RK3066_SYS_CTRL1, 0x1, 2), - .format = VOP_REG(RK3066_SYS_CTRL0, 0x7, 10), - .rb_swap = VOP_REG(RK3066_SYS_CTRL0, 0x1, 27), + .format = VOP_REG(RK3066_SYS_CTRL1, 0x7, 10), + .rb_swap = VOP_REG(RK3066_SYS_CTRL1, 0x1, 27), .dsp_info = VOP_REG(RK3066_WIN2_DSP_INFO, 0x0fff0fff, 0), .dsp_st = VOP_REG(RK3066_WIN2_DSP_ST, 0x1fff1fff, 0), .yrgb_mst = VOP_REG(RK3066_WIN2_MST, 0xffffffff, 0),
@@ -408,6 +407,9 @@ static const struct vop_common rk3066_common = { .dither_down_en = VOP_REG(RK3066_DSP_CTRL0, 0x1, 11), .dither_down_mode = VOP_REG(RK3066_DSP_CTRL0, 0x1, 10), .dsp_blank = VOP_REG(RK3066_DSP_CTRL1, 0x1, 24), + .dither_up = VOP_REG(RK3066_DSP_CTRL0, 0x1, 9), + .dsp_lut_en = VOP_REG(RK3066_SYS_CTRL1, 0x1, 31), + .data_blank = VOP_REG(RK3066_DSP_CTRL1, 0x1, 25), };static const struct vop_win_data rk3066_vop_win_data[] = {
@@ -505,7 +507,10 @@ static const struct vop_common rk3188_common = { .dither_down_sel = VOP_REG(RK3188_DSP_CTRL0, 0x1, 27), .dither_down_en = VOP_REG(RK3188_DSP_CTRL0, 0x1, 11), .dither_down_mode = VOP_REG(RK3188_DSP_CTRL0, 0x1, 10), - .dsp_blank = VOP_REG(RK3188_DSP_CTRL1, 0x3, 24), + .dsp_blank = VOP_REG(RK3188_DSP_CTRL1, 0x1, 24), + .dither_up = VOP_REG(RK3188_DSP_CTRL0, 0x1, 9), + .dsp_lut_en = VOP_REG(RK3188_SYS_CTRL, 0x1, 28), + .data_blank = VOP_REG(RK3188_DSP_CTRL1, 0x1, 25), };static const struct vop_win_data rk3188_vop_win_data[] = {
drivers/gpu/drm/scheduler/sched_entity.c +7 -1
@@ -113,7 +113,8 @@ static bool drm_sched_entity_is_idle(struct drm_sched_entity *entity)rmb ();/* for list_empty to work without lock */ if (list_empty (&entity->list) || -spsc_queue_count (&entity->job_queue) ==0 ) +spsc_queue_count (&entity->job_queue) ==0 || + entity->stopped)return true;return false;
@@ -218,11 +219,16 @@ static void drm_sched_entity_kill_jobs_cb(struct dma_fence *f,static void drm_sched_entity_kill_jobs (struct drm_sched_entity *entity) {struct drm_sched_job *job; +struct dma_fence *f;int r;while ((job =to_drm_sched_job (spsc_queue_pop (&entity->job_queue)))) {struct drm_sched_fence *s_fence = job->s_fence; +/* Wait for all dependencies to avoid data corruptions */ +while ((f = job->sched->ops->dependency (job, entity))) +dma_fence_wait (f, false); +drm_sched_fence_scheduled (s_fence);dma_fence_set_error (&s_fence->finished, -ESRCH );
drivers/gpu/drm/scheduler/sched_main.c +24 -0
@@ -887,9 +887,33 @@ EXPORT_SYMBOL(drm_sched_init);*/ void drm_sched_fini (struct drm_gpu_scheduler *sched) { +struct drm_sched_entity *s_entity; +int i; +if (sched->thread)kthread_stop (sched->thread); +for (i =DRM_SCHED_PRIORITY_COUNT -1 ; i >=DRM_SCHED_PRIORITY_MIN ; i--) { +struct drm_sched_rq *rq = &sched->sched_rq[i]; + +if (!rq) +continue ; + +spin_lock (&rq->lock); +list_for_each_entry (s_entity, &rq->entities, list) +/* +* Prevents reinsertion and marks job_queue as idle, +* it will removed from rq in drm_sched_entity_fini +* eventually +*/ + s_entity->stopped = true; +spin_unlock (&rq->lock); + + } + +/* Wakeup everyone stuck in drm_sched_entity_flush for this scheduler */ +wake_up_all (&sched->job_scheduled); +/* Confirm no work left behind accessing device structures */ cancel_delayed_work_sync (&sched->work_tdr);
drivers/gpu/drm/tegra/dc.c +8 -2
@@ -947,6 +947,11 @@ static const struct drm_plane_helper_funcs tegra_cursor_plane_helper_funcs = { .atomic_disable = tegra_cursor_atomic_disable, }; +static const uint64_t linear_modifiers[] = { +DRM_FORMAT_MOD_LINEAR , +DRM_FORMAT_MOD_INVALID +}; +static struct drm_plane *tegra_dc_cursor_plane_create (struct drm_device *drm,struct tegra_dc *dc) {
@@ -975,7 +980,7 @@ static struct drm_plane *tegra_dc_cursor_plane_create(struct drm_device *drm, err =drm_universal_plane_init (drm, &plane->base, possible_crtcs, &tegra_plane_funcs, formats, - num_formats,NULL , + num_formats, linear_modifiers,DRM_PLANE_TYPE_CURSOR ,NULL );if (err <0 ) {kfree (plane);
@@ -1094,7 +1099,8 @@ static struct drm_plane *tegra_dc_overlay_plane_create(struct drm_device *drm, err =drm_universal_plane_init (drm, &plane->base, possible_crtcs, &tegra_plane_funcs, formats, - num_formats,NULL , type,NULL ); + num_formats, linear_modifiers, + type,NULL );if (err <0 ) {kfree (plane);return ERR_PTR (err);
drivers/gpu/drm/tegra/drm.c +0 -2
@@ -1127,8 +1127,6 @@ static int host1x_drm_probe(struct host1x_device *dev) drm->mode_config.max_width =4096 ; drm->mode_config.max_height =4096 ; - drm->mode_config.allow_fb_modifiers = true; - drm->mode_config.normalize_zpos = true; drm->mode_config.funcs = &tegra_drm_mode_config_funcs;
drivers/gpu/drm/vc4/vc4_crtc.c +4 -1
@@ -1001,7 +1001,7 @@ static const struct vc4_pv_data bcm2711_pv3_data = { .fifo_depth = 64, .pixels_per_clock = 1, .encoder_types = { - [0] = VC4_ENCODER_TYPE_VEC, + [PV_CONTROL_CLK_SELECT_VEC] = VC4_ENCODER_TYPE_VEC, }, };
@@ -1042,6 +1042,9 @@ static void vc4_set_crtc_possible_masks(struct drm_device *drm,struct vc4_encoder *vc4_encoder;int i; +if (encoder->encoder_type ==DRM_MODE_ENCODER_VIRTUAL ) +continue ; + vc4_encoder =to_vc4_encoder (encoder);for (i =0 ; i <ARRAY_SIZE (pv_data->encoder_types); i++) {if (vc4_encoder->type == encoder_types[i]) {
drivers/gpu/drm/vc4/vc4_drv.h +1 -1
@@ -837,7 +837,7 @@ void vc4_crtc_destroy_state(struct drm_crtc *crtc,void vc4_crtc_reset (struct drm_crtc *crtc);void vc4_crtc_handle_vblank (struct vc4_crtc *crtc);void vc4_crtc_get_margins (struct drm_crtc_state *state, -unsigned int *right,unsigned int *left, +unsigned int *left,unsigned int *right,unsigned int *top,unsigned int *bottom);/* vc4_debugfs.c */
drivers/gpu/drm/vc4/vc4_hdmi.c +9 -1
@@ -627,7 +627,7 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder)unsigned long pixel_rate, hsm_rate;int ret; - ret =pm_runtime_get_sync (&vc4_hdmi->pdev->dev); + ret =pm_runtime_resume_and_get (&vc4_hdmi->pdev->dev);if (ret <0 ) {DRM_ERROR ("Failed to retain power domain: %d\n" , ret);return ;
@@ -1807,6 +1807,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)if (vc4_hdmi->variant->reset) vc4_hdmi->variant->reset (vc4_hdmi); +if ((of_device_is_compatible (dev->of_node,"brcm,bcm2711-hdmi0" ) || +of_device_is_compatible (dev->of_node,"brcm,bcm2711-hdmi1" )) && +HDMI_READ (HDMI_VID_CTL ) &VC4_HD_VID_CTL_ENABLE ) { +clk_prepare_enable (vc4_hdmi->pixel_clock); +clk_prepare_enable (vc4_hdmi->hsm_clock); +clk_prepare_enable (vc4_hdmi->pixel_bvb_clock); + } +pm_runtime_enable (dev);drm_simple_encoder_init (drm, encoder,DRM_MODE_ENCODER_TMDS );
drivers/gpu/drm/vc4/vc4_txp.c +1 -1
@@ -503,7 +503,7 @@ static int vc4_txp_bind(struct device *dev, struct device *master, void *data)return ret; encoder = &txp->connector.encoder; - encoder->possible_crtcs |=drm_crtc_mask (crtc); + encoder->possible_crtcs =drm_crtc_mask (crtc); ret =devm_request_irq (dev, irq, vc4_txp_interrupt,0 ,dev_name (dev), txp);
drivers/gpu/drm/virtio/virtgpu_kms.c +1 -0
@@ -209,6 +209,7 @@ int virtio_gpu_init(struct drm_device *dev) err_vbufs: vgdev->vdev->config->del_vqs (vgdev->vdev); err_vqs: + dev->dev_private =NULL ;kfree (vgdev);return ret; }
drivers/gpu/drm/zte/Kconfig +0 -1
@@ -3,7 +3,6 @@ config DRM_ZTE tristate "DRM Support for ZTE SoCs" depends on DRM && ARCH_ZX select DRM_KMS_CMA_HELPER - select DRM_KMS_FB_HELPER select DRM_KMS_HELPER select SND_SOC_HDMI_CODEC if SND_SOC select VIDEOMODE_HELPERS
drivers/hwtracing/coresight/coresight-core.c +1 -1
@@ -1347,7 +1347,7 @@ static int coresight_fixup_device_conns(struct coresight_device *csdev) } } -return 0 ; +return ret; }static int coresight_remove_match (struct device *dev,void *data)
drivers/hwtracing/coresight/coresight-tmc-etf.c +1 -1
@@ -528,7 +528,7 @@ static unsigned long tmc_update_etf_buffer(struct coresight_device *csdev, buf_ptr = buf->data_pages[cur] + offset; *buf_ptr =readl_relaxed (drvdata->base +TMC_RRD ); -if (lost && *barrier) { +if (lost && i <CORESIGHT_BARRIER_PKT_SIZE ) { *buf_ptr = *barrier; barrier++; }
drivers/infiniband/core/cma.c +2 -1
@@ -2793,7 +2793,8 @@ static int cma_resolve_ib_route(struct rdma_id_private *id_priv,cma_init_resolve_route_work (work, id_priv); - route->path_rec =kmalloc (sizeof *route->path_rec,GFP_KERNEL ); +if (!route->path_rec) + route->path_rec =kmalloc (sizeof *route->path_rec,GFP_KERNEL );if (!route->path_rec) { ret = -ENOMEM ; goto err1;
drivers/infiniband/hw/cxgb4/qp.c +1 -0
@@ -295,6 +295,7 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,if (user && (!wq->sq.bar2_pa || (need_rq && !wq->rq.bar2_pa))) {pr_warn ("%s: sqid %u or rqid %u not in BAR2 range\n" ,pci_name (rdev->lldi.pdev), wq->sq.qid, wq->rq.qid); + ret = -EINVAL ; goto free_dma; }
drivers/infiniband/sw/rxe/rxe_mr.c +1 -1
@@ -139,7 +139,7 @@ int rxe_mem_init_user(struct rxe_pd *pd, u64 start,if (IS_ERR (umem)) {pr_warn ("err %d from rxe_umem_get\n" , (int )PTR_ERR (umem)); - err = -EINVAL ; + err =PTR_ERR (umem); goto err1; }
drivers/infiniband/ulp/isert/ib_isert.c +2 -2
@@ -35,10 +35,10 @@ static const struct kernel_param_ops sg_tablesize_ops = { .get = param_get_int, }; -static int isert_sg_tablesize =ISCSI_ISER_DEF_SG_TABLESIZE ; +static int isert_sg_tablesize =ISCSI_ISER_MIN_SG_TABLESIZE ;module_param_cb (sg_tablesize, &sg_tablesize_ops, &isert_sg_tablesize,0644 );MODULE_PARM_DESC (sg_tablesize, -"Number of gather/scatter entries in a single scsi command, should >= 128 (default: 256, max: 4096)" ); +"Number of gather/scatter entries in a single scsi command, should >= 128 (default: 128, max: 4096)" );static DEFINE_MUTEX (device_list_mutex);static LIST_HEAD (device_list);
drivers/infiniband/ulp/isert/ib_isert.h +0 -3
@@ -65,9 +65,6 @@*/ #define ISER_RX_SIZE (ISCSI_DEF_MAX_RECV_SEG_LEN + 1024) -/* Default I/O size is 1MB */ -#define ISCSI_ISER_DEF_SG_TABLESIZE 256 -/* Minimum I/O size is 512KB */ #define ISCSI_ISER_MIN_SG_TABLESIZE 128
drivers/infiniband/ulp/rtrs/rtrs-pri.h +8 -5
@@ -47,12 +47,15 @@ enum {MAX_PATHS_NUM =128 ,/* -* With the size of struct rtrs_permit allocated on the client, 4K -* is the maximum number of rtrs_permits we can allocate. This number is -* also used on the client to allocate the IU for the user connection -* to receive the RDMA addresses from the server. +* Max IB immediate data size is 2^28 (MAX_IMM_PAYL_BITS) +* and the minimum chunk size is 4096 (2^12). +* So the maximum sess_queue_depth is 65536 (2^16) in theory. +* But mempool_create, create_qp and ib_post_send fail with +* "cannot allocate memory" error if sess_queue_depth is too big. +* Therefore the pratical max value of sess_queue_depth is +* somewhere between 1 and 65536 and it depends on the system. */ -MAX_SESS_QUEUE_DEPTH =4096 , +MAX_SESS_QUEUE_DEPTH =65536 ,RTRS_HB_INTERVAL_MS =5000 , RTRS_HB_MISSED_MAX = 5,
drivers/ipack/carriers/tpci200.c +4 -1
@@ -596,8 +596,11 @@ static int tpci200_pci_probe(struct pci_dev *pdev, out_err_bus_register:tpci200_uninstall (tpci200); +/* tpci200->info->cfg_regs is unmapped in tpci200_uninstall */ + tpci200->info->cfg_regs =NULL ; out_err_install: -iounmap (tpci200->info->cfg_regs); +if (tpci200->info->cfg_regs) +iounmap (tpci200->info->cfg_regs); out_err_ioremap:pci_release_region (pdev,TPCI200_CFG_MEM_BAR ); out_err_pci_request:
drivers/isdn/hardware/mISDN/hfcpci.c +1 -1
@@ -2342,7 +2342,7 @@ static void __exitHFC_cleanup (void) {if (timer_pending (&hfc_tl)) -del_timer (&hfc_tl); +del_timer_sync (&hfc_tl);pci_unregister_driver (&hfc_driver); }
drivers/md/dm-writecache.c +37 -11
93 lines not on this page · raw message
drivers/md/dm-zoned-metadata.c +7 -0
@@ -1390,6 +1390,13 @@ static int dmz_init_zone(struct blk_zone *blkz, unsigned int num, void *data)return -ENXIO ; } +/* +* Devices that have zones with a capacity smaller than the zone size +* (e.g. NVMe zoned namespaces) are not supported. +*/ +if (blkz->capacity != blkz->len) +return -ENXIO ; +switch (blkz->type) {case BLK_ZONE_TYPE_CONVENTIONAL :set_bit (DMZ_RND , &zone->flags);
drivers/md/dm.c +6 -2
@@ -1230,8 +1230,8 @@ static int dm_dax_zero_page_range(struct dax_device *dax_dev, pgoff_t pgoff,/* * A target may call dm_accept_partial_bio only from the map routine. It is -* allowed for all bio types except REQ_PREFLUSH, REQ_OP_ZONE_RESET, -* REQ_OP_ZONE_OPEN, REQ_OP_ZONE_CLOSE and REQ_OP_ZONE_FINISH. +* allowed for all bio types except REQ_PREFLUSH, REQ_OP_ZONE_* zone management +* operations and REQ_OP_ZONE_APPEND (zone append writes). * * dm_accept_partial_bio informs the dm that the target only wants to process * additional n_sectors sectors of the bio and the rest of the data should be
@@ -1261,9 +1261,13 @@ void dm_accept_partial_bio(struct bio *bio, unsigned n_sectors) { struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone);unsigned bi_size = bio->bi_iter.bi_size >>SECTOR_SHIFT ; +BUG_ON (bio->bi_opf &REQ_PREFLUSH ); +BUG_ON (op_is_zone_mgmt (bio_op (bio))); +BUG_ON (bio_op (bio) ==REQ_OP_ZONE_APPEND );BUG_ON (bi_size > *tio->len_ptr);BUG_ON (n_sectors > bi_size); + *tio->len_ptr -= bi_size - n_sectors; bio->bi_iter.bi_size = n_sectors <<SECTOR_SHIFT ; }
drivers/md/persistent-data/dm-btree-remove.c +2 -1
@@ -549,7 +549,8 @@ int dm_btree_remove(struct dm_btree_info *info, dm_block_t root,delete_at (n, index); } - *new_root =shadow_root (&spine); +if (!r) + *new_root =shadow_root (&spine);exit_shadow_spine (&spine);return r;
drivers/md/persistent-data/dm-space-map-disk.c +8 -1
@@ -171,6 +171,14 @@ static int sm_disk_new_block(struct dm_space_map *sm, dm_block_t *b)* Any block we allocate has to be free in both the old and current ll. */ r =sm_ll_find_common_free_block (&smd->old_ll, &smd->ll, smd->begin, smd->ll.nr_blocks, b); +if (r == -ENOSPC ) { +/* +* There's no free block between smd->begin and the end of the metadata device. +* We search before smd->begin in case something has been freed. +*/ + r =sm_ll_find_common_free_block (&smd->old_ll, &smd->ll,0 , smd->begin, b); + } +if (r)return r;
@@ -199,7 +207,6 @@ static int sm_disk_commit(struct dm_space_map *sm)return r;memcpy (&smd->old_ll, &smd->ll,sizeof (smd->old_ll)); - smd->begin =0 ; smd->nr_allocated_this_transaction =0 ; r =sm_disk_get_nr_free (sm, &nr_free);
drivers/md/persistent-data/dm-space-map-metadata.c +8 -1
@@ -452,6 +452,14 @@ static int sm_metadata_new_block_(struct dm_space_map *sm, dm_block_t *b)* Any block we allocate has to be free in both the old and current ll. */ r =sm_ll_find_common_free_block (&smm->old_ll, &smm->ll, smm->begin, smm->ll.nr_blocks, b); +if (r == -ENOSPC ) { +/* +* There's no free block between smm->begin and the end of the metadata device. +* We search before smm->begin in case something has been freed. +*/ + r =sm_ll_find_common_free_block (&smm->old_ll, &smm->ll,0 , smm->begin, b); + } +if (r)return r;
@@ -503,7 +511,6 @@ static int sm_metadata_commit(struct dm_space_map *sm)return r;memcpy (&smm->old_ll, &smm->ll,sizeof (smm->old_ll)); - smm->begin =0 ; smm->allocated_this_transaction =0 ;return 0 ;
drivers/media/i2c/saa6588.c +2 -2
@@ -380,7 +380,7 @@ static void saa6588_configure(struct saa6588 *s)/* ---------------------------------------------------------------------- */ -static long saa6588_ioctl (struct v4l2_subdev *sd,unsigned int cmd,void *arg) +static long saa6588_command (struct v4l2_subdev *sd,unsigned int cmd,void *arg) {struct saa6588 *s =to_saa6588 (sd);struct saa6588_command *a = arg;
@@ -433,7 +433,7 @@ static int saa6588_s_tuner(struct v4l2_subdev *sd, const struct v4l2_tuner *vt)/* ----------------------------------------------------------------------- */ static const struct v4l2_subdev_core_ops saa6588_core_ops = { - .ioctl = saa6588_ioctl, + .command = saa6588_command, };static const struct v4l2_subdev_tuner_ops saa6588_tuner_ops = {
drivers/media/pci/bt8xx/bttv-driver.c +3 -3
@@ -3187,7 +3187,7 @@ static int radio_release(struct file *file) btv->radio_user--; -bttv_call_all (btv, core, ioctl,SAA6588_CMD_CLOSE , &cmd); +bttv_call_all (btv, core, command,SAA6588_CMD_CLOSE , &cmd);if (btv->radio_user ==0 ) btv->has_radio_tuner =0 ;
@@ -3268,7 +3268,7 @@ static ssize_t radio_read(struct file *file, char __user *data, cmd.result = -ENODEV ;radio_enable (btv); -bttv_call_all (btv, core, ioctl,SAA6588_CMD_READ , &cmd); +bttv_call_all (btv, core, command,SAA6588_CMD_READ , &cmd);return cmd.result; }
@@ -3289,7 +3289,7 @@ static __poll_t radio_poll(struct file *file, poll_table *wait) cmd.instance = file; cmd.event_list = wait; cmd.poll_mask = res; -bttv_call_all (btv, core, ioctl,SAA6588_CMD_POLL , &cmd); +bttv_call_all (btv, core, command,SAA6588_CMD_POLL , &cmd);return cmd.poll_mask; }
drivers/media/pci/saa7134/saa7134-video.c +3 -3
@@ -1178,7 +1178,7 @@ static int video_release(struct file *file)saa_call_all (dev, tuner, standby);if (vdev->vfl_type ==VFL_TYPE_RADIO ) -saa_call_all (dev, core, ioctl,SAA6588_CMD_CLOSE , &cmd); +saa_call_all (dev, core, command,SAA6588_CMD_CLOSE , &cmd);mutex_unlock (&dev->lock);return 0 ;
@@ -1197,7 +1197,7 @@ static ssize_t radio_read(struct file *file, char __user *data, cmd.result = -ENODEV ;mutex_lock (&dev->lock); -saa_call_all (dev, core, ioctl,SAA6588_CMD_READ , &cmd); +saa_call_all (dev, core, command,SAA6588_CMD_READ , &cmd);mutex_unlock (&dev->lock);return cmd.result;
@@ -1213,7 +1213,7 @@ static __poll_t radio_poll(struct file *file, poll_table *wait) cmd.event_list = wait; cmd.poll_mask =0 ;mutex_lock (&dev->lock); -saa_call_all (dev, core, ioctl,SAA6588_CMD_POLL , &cmd); +saa_call_all (dev, core, command,SAA6588_CMD_POLL , &cmd);mutex_unlock (&dev->lock);return rc | cmd.poll_mask;
drivers/media/platform/davinci/vpbe_display.c +1 -1
@@ -47,7 +47,7 @@ static int venc_is_second_field(struct vpbe_display *disp_dev) ret =v4l2_subdev_call (vpbe_dev->venc, core, - ioctl, + command,VENC_GET_FLD , &val);if (ret <0 ) {
drivers/media/platform/davinci/vpbe_venc.c +2 -4
@@ -521,9 +521,7 @@ static int venc_s_routing(struct v4l2_subdev *sd, u32 input, u32 output,return ret; } -static long venc_ioctl (struct v4l2_subdev *sd, -unsigned int cmd, -void *arg) +static long venc_command (struct v4l2_subdev *sd,unsigned int cmd,void *arg) {u32 val;
@@ -542,7 +540,7 @@ static long venc_ioctl(struct v4l2_subdev *sd, }static const struct v4l2_subdev_core_ops venc_core_ops = { - .ioctl = venc_ioctl, + .command = venc_command, };static const struct v4l2_subdev_video_ops venc_video_ops = {
drivers/media/rc/bpf-lirc.c +2 -1
@@ -326,7 +326,8 @@ int lirc_prog_query(const union bpf_attr *attr, union bpf_attr __user *uattr) }if (attr->query.prog_cnt !=0 && prog_ids && cnt) - ret =bpf_prog_array_copy_to_user (progs, prog_ids, cnt); + ret =bpf_prog_array_copy_to_user (progs, prog_ids, + attr->query.prog_cnt); unlock:mutex_unlock (&ir_raw_handler_lock);
drivers/media/usb/dvb-usb/dtv5100.c +5 -2
@@ -26,6 +26,7 @@ static int dtv5100_i2c_msg(struct dvb_usb_device *d, u8 addr, u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen) { struct dtv5100_state *st = d->priv; +unsigned int pipe;u8 request;u8 type;u16 value;
@@ -34,6 +35,7 @@ static int dtv5100_i2c_msg(struct dvb_usb_device *d, u8 addr,switch (wlen) {case 1 :/* write { reg }, read { value } */ + pipe =usb_rcvctrlpipe (d->udev,0 ); request = (addr ==DTV5100_DEMOD_ADDR ?DTV5100_DEMOD_READ :DTV5100_TUNER_READ ); type =USB_TYPE_VENDOR |USB_DIR_IN ;
@@ -41,6 +43,7 @@ static int dtv5100_i2c_msg(struct dvb_usb_device *d, u8 addr,break ;case 2 :/* write { reg, value } */ + pipe =usb_sndctrlpipe (d->udev,0 ); request = (addr ==DTV5100_DEMOD_ADDR ?DTV5100_DEMOD_WRITE :DTV5100_TUNER_WRITE ); type =USB_TYPE_VENDOR |USB_DIR_OUT ;
@@ -54,7 +57,7 @@ static int dtv5100_i2c_msg(struct dvb_usb_device *d, u8 addr,memcpy (st->data, rbuf, rlen);msleep (1 );/* avoid I2C errors */ -return usb_control_msg (d->udev,usb_rcvctrlpipe (d->udev,0 ), request, +return usb_control_msg (d->udev, pipe, request, type, value, index, st->data, rlen,DTV5100_USB_TIMEOUT ); }
@@ -141,7 +144,7 @@ static int dtv5100_probe(struct usb_interface *intf,/* initialize non qt1010/zl10353 part? */ for (i =0 ; dtv5100_init[i].request; i++) { - ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), + ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), dtv5100_init[i].request, USB_TYPE_VENDOR | USB_DIR_OUT, dtv5100_init[i].value,
drivers/media/usb/gspca/sq905.c +1 -1
@@ -116,7 +116,7 @@ static int sq905_command(struct gspca_dev *gspca_dev, u16 index) } ret = usb_control_msg(gspca_dev->dev, - usb_sndctrlpipe(gspca_dev->dev, 0), + usb_rcvctrlpipe(gspca_dev->dev, 0), USB_REQ_SYNCH_FRAME, /* request */ USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, SQ905_PING, 0, gspca_dev->usb_buf, 1,
drivers/media/usb/gspca/sunplus.c +6 -2
@@ -242,6 +242,10 @@ static void reg_r(struct gspca_dev *gspca_dev,gspca_err (gspca_dev,"reg_r: buffer overflow\n" );return ; } +if (len ==0 ) { +gspca_err (gspca_dev,"reg_r: zero-length read\n" ); +return ; + }if (gspca_dev->usb_err <0 )return ; ret = usb_control_msg(gspca_dev->dev,
@@ -250,7 +254,7 @@ static void reg_r(struct gspca_dev *gspca_dev,USB_DIR_IN |USB_TYPE_VENDOR |USB_RECIP_DEVICE ,0 ,/* value */ index, - len ? gspca_dev->usb_buf :NULL , len, + gspca_dev->usb_buf, len, 500);if (ret <0 ) {pr_err ("reg_r err %d\n" , ret);
@@ -727,7 +731,7 @@ static int sd_start(struct gspca_dev *gspca_dev)case MegaImageVI:reg_w_riv (gspca_dev,0xf0 ,0 ,0 );spca504B_WaitCmdStatus (gspca_dev); -reg_r (gspca_dev,0xf0 ,4 ,0 ); +reg_w_riv (gspca_dev,0xf0 ,4 ,0 );spca504B_WaitCmdStatus (gspca_dev);break ;default :
drivers/media/usb/uvc/uvc_video.c +27 -0
@@ -124,10 +124,37 @@ int uvc_query_ctrl(struct uvc_device *dev, u8 query, u8 unit,static void uvc_fixup_video_ctrl (struct uvc_streaming *stream,struct uvc_streaming_control *ctrl) { +static const struct usb_device_id elgato_cam_link_4k = { +USB_DEVICE (0x0fd9 ,0x0066 ) + };struct uvc_format *format =NULL ;struct uvc_frame *frame =NULL ;unsigned int i; +/* +* The response of the Elgato Cam Link 4K is incorrect: The second byte +* contains bFormatIndex (instead of being the second byte of bmHint). +* The first byte is always zero. The third byte is always 1. +* +* The UVC 1.5 class specification defines the first five bits in the +* bmHint bitfield. The remaining bits are reserved and should be zero. +* Therefore a valid bmHint will be less than 32. +* +* Latest Elgato Cam Link 4K firmware as of 2021-03-23 needs this fix. +* MCU: 20.02.19, FPGA: 67 +*/ +if (usb_match_one_id (stream->dev->intf, &elgato_cam_link_4k) && + ctrl->bmHint >255 ) { +u8 corrected_format_index = ctrl->bmHint >>8 ; + +/* uvc_dbg(stream->dev, VIDEO, +"Correct USB video probe response from {bmHint: 0x%04x, bFormatIndex: %u} to {bmHint: 0x%04x, bFormatIndex: %u}\n", +ctrl->bmHint, ctrl->bFormatIndex, +1, corrected_format_index); */ + ctrl->bmHint =1 ; + ctrl->bFormatIndex = corrected_format_index; + } +for (i =0 ; i < stream->nformats; ++i) {if (stream->format[i].index == ctrl->bFormatIndex) { format = &stream->format[i];
drivers/media/usb/zr364xx/zr364xx.c +1 -0
@@ -1034,6 +1034,7 @@ static int zr364xx_start_readpipe(struct zr364xx_camera *cam)DBG ("submitting URB %p\n" , pipe_info->stream_urb); retval =usb_submit_urb (pipe_info->stream_urb,GFP_KERNEL );if (retval) { +usb_free_urb (pipe_info->stream_urb); printk(KERN_ERR KBUILD_MODNAME ": start read pipe failed\n");return retval; }
drivers/mfd/syscon.c +1 -1
@@ -108,6 +108,7 @@ static struct syscon *of_syscon_register(struct device_node *np, bool check_clk) syscon_config.max_register =resource_size (&res) - reg_io_width; regmap =regmap_init_mmio (NULL , base, &syscon_config); +kfree (syscon_config.name);if (IS_ERR (regmap)) {pr_err ("regmap init failed\n" ); ret =PTR_ERR (regmap);
@@ -144,7 +145,6 @@ static struct syscon *of_syscon_register(struct device_node *np, bool check_clk)regmap_exit (regmap); err_regmap:iounmap (base); -kfree (syscon_config.name); err_map:kfree (syscon);return ERR_PTR (ret);
drivers/misc/lkdtm/bugs.c +3 -0
@@ -144,6 +144,9 @@ void lkdtm_UNALIGNED_LOAD_STORE_WRITE(void)if (*p ==0 ) val =0x87654321 ; *p = val; + +if (IS_ENABLED (CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS )) +pr_err ("XFAIL: arch has CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS\n" ); }void lkdtm_SOFTLOCKUP (void )
drivers/mmc/core/core.c +5 -2
@@ -936,11 +936,14 @@ int mmc_execute_tuning(struct mmc_card *card) err = host->ops->execute_tuning (host, opcode); -if (err) +if (err) {pr_err ("%s: tuning execution failed: %d\n" ,mmc_hostname (host), err); -else + }else { + host->retune_now =0 ; + host->need_retune =0 ;mmc_retune_enable (host); + }return err; }
drivers/mmc/core/sd.c +6 -4
@@ -847,11 +847,13 @@ int mmc_sd_get_cid(struct mmc_host *host, u32 ocr, u32 *cid, u32 *rocr)return err;/* -* In case CCS and S18A in the response is set, start Signal Voltage -* Switch procedure. SPI mode doesn't support CMD11. +* In case the S18A bit is set in the response, let's start the signal +* voltage switch procedure. SPI mode doesn't support CMD11. +* Note that, according to the spec, the S18A bit is not valid unless +* the CCS bit is set as well. We deliberately deviate from the spec in +* regards to this, which allows UHS-I to be supported for SDSC cards. */ -if (!mmc_host_is_spi (host) && rocr && - ((*rocr &0x41000000 ) ==0x41000000 )) { +if (!mmc_host_is_spi (host) && rocr && (*rocr &0x01000000 )) { err =mmc_set_uhs_voltage (host, pocr);if (err == -EAGAIN ) { retries--;
drivers/mmc/host/sdhci-acpi.c +11 -0
@@ -788,6 +788,17 @@ static const struct dmi_system_id sdhci_acpi_quirks[] = { }, .driver_data = (void *)DMI_QUIRK_SD_NO_WRITE_PROTECT, }, + { + /* + * The Toshiba WT8-B's microSD slot always reports the card being + * write-protected. + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "TOSHIBA ENCORE 2 WT8-B"), + }, + .driver_data = (void *)DMI_QUIRK_SD_NO_WRITE_PROTECT, + }, {} /* Terminating entry */ };
drivers/mmc/host/sdhci.c +4 -0
@@ -1813,6 +1813,10 @@ static u16 sdhci_get_preset_value(struct sdhci_host *host)u16 preset =0 ;switch (host->timing) { +case MMC_TIMING_MMC_HS : +case MMC_TIMING_SD_HS : + preset =sdhci_readw (host,SDHCI_PRESET_FOR_HIGH_SPEED ); +break ;case MMC_TIMING_UHS_SDR12 : preset =sdhci_readw (host,SDHCI_PRESET_FOR_SDR12 );break ;
drivers/mmc/host/sdhci.h +1 -0
@@ -253,6 +253,7 @@/* 60-FB reserved */ +#define SDHCI_PRESET_FOR_HIGH_SPEED 0x64#define SDHCI_PRESET_FOR_SDR12 0x66#define SDHCI_PRESET_FOR_SDR25 0x68#define SDHCI_PRESET_FOR_SDR50 0x6A
drivers/net/dsa/ocelot/seville_vsc9953.c +5 -0
@@ -1214,6 +1214,11 @@ static int seville_probe(struct platform_device *pdev) felix->info = &seville_info_vsc9953; res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!res) { + err = -EINVAL ; +dev_err (&pdev->dev,"Invalid resource\n" ); + goto err_alloc_felix; + } felix->switch_base = res->start; ds =kzalloc (sizeof (struct dsa_switch ),GFP_KERNEL );
drivers/net/ethernet/broadcom/genet/bcmmii.c +4 -0
@@ -423,6 +423,10 @@ static int bcmgenet_mii_register(struct bcmgenet_priv *priv)int id, ret; pres =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!pres) { +dev_err (&pdev->dev,"Invalid resource\n" ); +return -EINVAL ; + }memset (&res,0 ,sizeof (res));memset (&ppd,0 ,sizeof (ppd));
drivers/net/ethernet/freescale/fec_main.c +32 -0
@@ -75,6 +75,8 @@ static void fec_enet_itr_coal_init(struct net_device *ndev);#define DRIVER_NAME "fec" +static const u16 fec_enet_vlan_pri_to_queue[8 ] = {0 ,0 ,1 ,1 ,1 ,2 ,2 ,2 }; +/* Pause frame feild and FIFO threshold */ #define FEC_ENET_FCE (1 << 5)#define FEC_ENET_RSEM_V 0x84
@@ -3222,10 +3224,40 @@ static int fec_set_features(struct net_device *netdev,return 0 ; } +static u16 fec_enet_get_raw_vlan_tci (struct sk_buff *skb) +{ +struct vlan_ethhdr *vhdr; +unsigned short vlan_TCI =0 ; + +if (skb->protocol ==htons (ETH_P_ALL )) { + vhdr = (struct vlan_ethhdr *)(skb->data); + vlan_TCI =ntohs (vhdr->h_vlan_TCI); + } + +return vlan_TCI; +} + +static u16 fec_enet_select_queue (struct net_device *ndev,struct sk_buff *skb, +struct net_device *sb_dev) +{ +struct fec_enet_private *fep =netdev_priv (ndev); +u16 vlan_tag; + +if (!(fep->quirks &FEC_QUIRK_HAS_AVB )) +return netdev_pick_tx (ndev, skb,NULL ); + + vlan_tag =fec_enet_get_raw_vlan_tci (skb); +if (!vlan_tag) +return vlan_tag; + +return fec_enet_vlan_pri_to_queue[vlan_tag >>13 ]; +} +static const struct net_device_ops fec_netdev_ops = { .ndo_open = fec_enet_open, .ndo_stop = fec_enet_close, .ndo_start_xmit = fec_enet_start_xmit, + .ndo_select_queue = fec_enet_select_queue, .ndo_set_rx_mode = set_multicast_list, .ndo_validate_addr = eth_validate_addr, .ndo_tx_timeout = fec_timeout,
drivers/net/ethernet/intel/e100.c +6 -6
@@ -1395,7 +1395,7 @@ static int e100_phy_check_without_mii(struct nic *nic)u8 phy_type;int without_mii; - phy_type = (nic->eeprom[eeprom_phy_iface] >>8 ) &0x0f ; + phy_type = (le16_to_cpu (nic->eeprom[eeprom_phy_iface]) >>8 ) &0x0f ;switch (phy_type) {case NoSuchPhy:/* Non-MII PHY; UNTESTED! */
@@ -1515,7 +1515,7 @@ static int e100_phy_init(struct nic *nic)mdio_write (netdev, nic->mii.phy_id,MII_BMCR , bmcr); }else if ((nic->mac >= mac_82550_D102) || ((nic->flags & ich) && (mdio_read (netdev, nic->mii.phy_id,MII_TPISTATUS ) &0x8000 ) && - (nic->eeprom[eeprom_cnfg_mdix] & eeprom_mdix_enabled))) { + (le16_to_cpu (nic->eeprom[eeprom_cnfg_mdix]) & eeprom_mdix_enabled))) {/* enable/disable MDI/MDI-X auto-switching. */ mdio_write (netdev, nic->mii.phy_id,MII_NCONFIG , nic->mii.force_media ?0 :NCONFIG_AUTO_SWITCH );
@@ -2263,9 +2263,9 @@ static int e100_asf(struct nic *nic) {/* ASF can be enabled from eeprom */ return (nic->pdev->device >=0x1050 ) && (nic->pdev->device <=0x1057 ) && - (nic->eeprom[eeprom_config_asf] & eeprom_asf) && - !(nic->eeprom[eeprom_config_asf] & eeprom_gcl) && - ((nic->eeprom[eeprom_smbus_addr] &0xFF ) !=0xFE ); + (le16_to_cpu (nic->eeprom[eeprom_config_asf]) & eeprom_asf) && + !(le16_to_cpu (nic->eeprom[eeprom_config_asf]) & eeprom_gcl) && + ((le16_to_cpu (nic->eeprom[eeprom_smbus_addr]) &0xFF ) !=0xFE ); }static int e100_up (struct nic *nic)
@@ -2920,7 +2920,7 @@ static int e100_probe(struct pci_dev *pdev, const struct pci_device_id *ent)/* Wol magic packet can be enabled from eeprom */ if ((nic->mac >= mac_82558_D101_A4) && - (nic->eeprom[eeprom_id] & eeprom_id_wol)) { + (le16_to_cpu (nic->eeprom[eeprom_id]) & eeprom_id_wol)) { nic->flags |= wol_magic;device_set_wakeup_enable (&pdev->dev, true); }
drivers/net/ethernet/intel/i40e/i40e_ptp.c +6 -2
@@ -11,13 +11,14 @@* operate with the nanosecond field directly without fear of overflow. * * Much like the 82599, the update period is dependent upon the link speed: -* At 40Gb link or no link, the period is 1.6ns. -* At 10Gb link, the period is multiplied by 2. (3.2ns) +* At 40Gb, 25Gb, or no link, the period is 1.6ns. +* At 10Gb or 5Gb link, the period is multiplied by 2. (3.2ns) * At 1Gb link, the period is multiplied by 20. (32ns) * 1588 functionality is not supported at 100Mbps. */ #define I40E_PTP_40GB_INCVAL 0x0199999999ULL#define I40E_PTP_10GB_INCVAL_MULT 2 +#define I40E_PTP_5GB_INCVAL_MULT 2#define I40E_PTP_1GB_INCVAL_MULT 20#define I40E_PRTTSYN_CTL1_TSYNTYPE_V1 BIT(I40E_PRTTSYN_CTL1_TSYNTYPE_SHIFT)
@@ -465,6 +466,9 @@ void i40e_ptp_set_increment(struct i40e_pf *pf)case I40E_LINK_SPEED_10GB : mult =I40E_PTP_10GB_INCVAL_MULT ;break ; +case I40E_LINK_SPEED_5GB : + mult =I40E_PTP_5GB_INCVAL_MULT ; +break ;case I40E_LINK_SPEED_1GB : mult =I40E_PTP_1GB_INCVAL_MULT ;break ;
drivers/net/ethernet/intel/ice/ice_ethtool.c +1 -5
@@ -3492,13 +3492,9 @@ static int ice_get_rc_coalesce(struct ethtool_coalesce *ec, enum ice_container_type c_type, struct ice_ring_container *rc) { - struct ice_pf *pf; - if (!rc->ring) return -EINVAL; - pf = rc->ring->vsi->back; -switch (c_type) {case ICE_RX_CONTAINER : ec->use_adaptive_rx_coalesce =ITR_IS_DYNAMIC (rc->itr_setting);
@@ -3510,7 +3506,7 @@ ice_get_rc_coalesce(struct ethtool_coalesce *ec, enum ice_container_type c_type, ec->tx_coalesce_usecs = rc->itr_setting & ~ICE_ITR_DYNAMIC ;break ;default : -dev_dbg (ice_pf_to_dev (pf),"Invalid c_type %d\n" , c_type); +dev_dbg (ice_pf_to_dev (rc->ring->vsi->back),"Invalid c_type %d\n" , c_type);return -EINVAL ; }
drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h +2 -2
@@ -608,7 +608,7 @@ static const struct ice_rx_ptype_decoded ice_ptype_lkup[] = {/* L2 Packet types */ ICE_PTT_UNUSED_ENTRY (0 ),ICE_PTT (1 ,L2 ,NONE ,NOF ,NONE ,NONE ,NOF ,NONE ,PAY2 ), -ICE_PTT (2 ,L2 ,NONE ,NOF ,NONE ,NONE ,NOF ,NONE ,NONE ), +ICE_PTT_UNUSED_ENTRY (2 ),ICE_PTT_UNUSED_ENTRY (3 ),ICE_PTT_UNUSED_ENTRY (4 ), ICE_PTT_UNUSED_ENTRY(5),
@@ -722,7 +722,7 @@ static const struct ice_rx_ptype_decoded ice_ptype_lkup[] = {/* Non Tunneled IPv6 */ ICE_PTT (88 ,IP ,IPV6 ,FRG ,NONE ,NONE ,NOF ,NONE ,PAY3 ),ICE_PTT (89 ,IP ,IPV6 ,NOF ,NONE ,NONE ,NOF ,NONE ,PAY3 ), -ICE_PTT (90 ,IP ,IPV6 ,NOF ,NONE ,NONE ,NOF ,UDP ,PAY3 ), +ICE_PTT (90 ,IP ,IPV6 ,NOF ,NONE ,NONE ,NOF ,UDP ,PAY4 ),ICE_PTT_UNUSED_ENTRY (91 ),ICE_PTT (92 ,IP ,IPV6 ,NOF ,NONE ,NONE ,NOF ,TCP ,PAY4 ), ICE_PTT(93, IP, IPV6, NOF, NONE, NONE, NOF, SCTP, PAY4),
drivers/net/ethernet/intel/ice/ice_type.h +1 -1
@@ -63,7 +63,7 @@ enum ice_aq_res_ids {/* FW update timeout definitions are in milliseconds */ #define ICE_NVM_TIMEOUT 180000#define ICE_CHANGE_LOCK_TIMEOUT 1000 -#define ICE_GLOBAL_CFG_LOCK_TIMEOUT 3000 +#define ICE_GLOBAL_CFG_LOCK_TIMEOUT 5000enum ice_aq_res_access_type {ICE_RES_READ =1 ,
drivers/net/ethernet/intel/igb/igb_main.c +5 -4
@@ -2643,7 +2643,8 @@ static int igb_parse_cls_flower(struct igb_adapter *adapter, } input->filter.match_flags |=IGB_FILTER_FLAG_VLAN_TCI ; - input->filter.vlan_tci = match.key->vlan_priority; + input->filter.vlan_tci = + (__force __be16 )match.key->vlan_priority; } }
@@ -6288,12 +6289,12 @@ int igb_xmit_xdp_ring(struct igb_adapter *adapter, cmd_type |= len |IGB_TXD_DCMD ; tx_desc->read.cmd_type_len =cpu_to_le32 (cmd_type); - olinfo_status =cpu_to_le32 (len <<E1000_ADVTXD_PAYLEN_SHIFT ); + olinfo_status = len <<E1000_ADVTXD_PAYLEN_SHIFT ;/* 82575 requires a unique index per ring */ if (test_bit (IGB_RING_FLAG_TX_CTX_IDX , &tx_ring->flags)) olinfo_status |= tx_ring->reg_idx <<4 ; - tx_desc->read.olinfo_status = olinfo_status; + tx_desc->read.olinfo_status =cpu_to_le32 (olinfo_status);netdev_tx_sent_queue (txring_txq (tx_ring), tx_buffer->bytecount);
@@ -8617,7 +8618,7 @@ static void igb_process_skb_fields(struct igb_ring *rx_ring,if (igb_test_staterr (rx_desc,E1000_RXDEXT_STATERR_LB ) &&test_bit (IGB_RING_FLAG_RX_LB_VLAN_BSWAP , &rx_ring->flags)) - vid =be16_to_cpu (rx_desc->wb.upper.vlan); + vid =be16_to_cpu ((__force __be16 )rx_desc->wb.upper.vlan);else vid =le16_to_cpu (rx_desc->wb.upper.vlan);
drivers/net/ethernet/intel/igbvf/netdev.c +2 -2
@@ -83,14 +83,14 @@ static int igbvf_desc_unused(struct igbvf_ring *ring)static void igbvf_receive_skb (struct igbvf_adapter *adapter,struct net_device *netdev,struct sk_buff *skb, -u32 status,u16 vlan) +u32 status,__le16 vlan) {u16 vid;if (status &E1000_RXD_STAT_VP ) {if ((adapter->flags &IGBVF_FLAG_RX_LB_VLAN_BSWAP ) && (status &E1000_RXDEXT_STATERR_LB )) - vid =be16_to_cpu (vlan) &E1000_RXD_SPC_VLAN_MASK ; + vid =be16_to_cpu ((__force __be16 )vlan) &E1000_RXD_SPC_VLAN_MASK ;else vid =le16_to_cpu (vlan) &E1000_RXD_SPC_VLAN_MASK ;if (test_bit (vid, adapter->active_vlans))
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +4 -0
@@ -6871,6 +6871,10 @@ static int mvpp2_probe(struct platform_device *pdev)return PTR_ERR (priv->lms_base); }else { res =platform_get_resource (pdev,IORESOURCE_MEM ,1 ); +if (!res) { +dev_err (&pdev->dev,"Invalid resource\n" ); +return -EINVAL ; + }if (has_acpi_companion (&pdev->dev)) {/* In case the MDIO memory region is declared in * the ACPI, it can already appear as 'in-use'
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +4 -2
@@ -1318,7 +1318,8 @@ static void mlx5e_handle_rx_cqe_rep(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)if (rep->vlan &&skb_vlan_tag_present (skb))skb_vlan_pop (skb); -if (!mlx5e_rep_tc_update_skb (cqe, skb, &tc_priv)) { +if (unlikely (!mlx5_ipsec_is_rx_flow (cqe) && + !mlx5e_rep_tc_update_skb (cqe, skb, &tc_priv))) {dev_kfree_skb_any (skb); goto free_wqe; }
@@ -1375,7 +1376,8 @@ static void mlx5e_handle_rx_cqe_mpwrq_rep(struct mlx5e_rq *rq, struct mlx5_cqe64mlx5e_complete_rx_cqe (rq, cqe, cqe_bcnt, skb); -if (!mlx5e_rep_tc_update_skb (cqe, skb, &tc_priv)) { +if (unlikely (!mlx5_ipsec_is_rx_flow (cqe) && + !mlx5e_rep_tc_update_skb (cqe, skb, &tc_priv))) {dev_kfree_skb_any (skb); goto mpwrq_cqe_out; }
drivers/net/ethernet/mellanox/mlx5/core/lag.c +13 -6
@@ -118,17 +118,24 @@ static bool __mlx5_lag_is_sriov(struct mlx5_lag *ldev)static void mlx5_infer_tx_affinity_mapping (struct lag_tracker *tracker,u8 *port1,u8 *port2) { +bool p1en; +bool p2en; + + p1en = tracker->netdev_state[MLX5_LAG_P1 ].tx_enabled && + tracker->netdev_state[MLX5_LAG_P1 ].link_up; + + p2en = tracker->netdev_state[MLX5_LAG_P2 ].tx_enabled && + tracker->netdev_state[MLX5_LAG_P2 ].link_up; + *port1 =1 ; *port2 =2 ; -if (!tracker->netdev_state[MLX5_LAG_P1 ].tx_enabled || - !tracker->netdev_state[MLX5_LAG_P1 ].link_up) { - *port1 =2 ; +if ((!p1en && !p2en) || (p1en && p2en))return ; - } -if (!tracker->netdev_state[MLX5_LAG_P2 ].tx_enabled || - !tracker->netdev_state[MLX5_LAG_P2 ].link_up) +if (p1en) *port2 =1 ; +else + *port1 =2 ; } void mlx5_modify_lag(struct mlx5_lag *ldev,
drivers/net/ethernet/micrel/ks8842.c +4 -0
@@ -1135,6 +1135,10 @@ static int ks8842_probe(struct platform_device *pdev)unsigned i; iomem =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!iomem) { +dev_err (&pdev->dev,"Invalid resource\n" ); +return -EINVAL ; + }if (!request_mem_region (iomem->start,resource_size (iomem),DRV_NAME )) goto err_mem_region;
drivers/net/ethernet/moxa/moxart_ether.c +2 -3
@@ -481,14 +481,13 @@ static int moxart_mac_probe(struct platform_device *pdev) priv->ndev = ndev; priv->pdev = pdev; - res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); - ndev->base_addr = res->start; - priv->base =devm_ioremap_resource (p_dev, res); + priv->base =devm_platform_get_and_ioremap_resource (pdev,0 , &res);if (IS_ERR (priv->base)) {dev_err (p_dev,"devm_ioremap_resource failed\n" ); ret =PTR_ERR (priv->base); goto init_fail; } + ndev->base_addr = res->start;spin_lock_init (&priv->txlock);
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +6 -13
@@ -107,7 +107,7 @@ static int pch_ptp_match(struct sk_buff *skb, u16 uid_hi, u32 uid_lo, u16 seqid) {u8 *data = skb->data;unsigned int offset; -u16 *hi, *id; +u16 hi, id;u32 lo;if (ptp_classify_raw (skb) ==PTP_CLASS_NONE )
@@ -118,14 +118,11 @@ static int pch_ptp_match(struct sk_buff *skb, u16 uid_hi, u32 uid_lo, u16 seqid)if (skb->len < offset +OFF_PTP_SEQUENCE_ID +sizeof (seqid))return 0 ; - hi = (u16 *)(data + offset +OFF_PTP_SOURCE_UUID ); - id = (u16 *)(data + offset +OFF_PTP_SEQUENCE_ID ); + hi =get_unaligned_be16 (data + offset +OFF_PTP_SOURCE_UUID +0 ); + lo =get_unaligned_be32 (data + offset +OFF_PTP_SOURCE_UUID +2 ); + id =get_unaligned_be16 (data + offset +OFF_PTP_SEQUENCE_ID ); -memcpy (&lo, &hi[1 ],sizeof (lo)); - -return (uid_hi == *hi && - uid_lo == lo && - seqid == *id); +return (uid_hi == hi && uid_lo == lo && seqid == id); } static void
@@ -135,7 +132,6 @@ pch_rx_timestamp(struct pch_gbe_adapter *adapter, struct sk_buff *skb)struct pci_dev *pdev;u64 ns;u32 hi, lo, val; -u16 uid, seq;if (!adapter->hwts_rx_en)return ;
@@ -151,10 +147,7 @@ pch_rx_timestamp(struct pch_gbe_adapter *adapter, struct sk_buff *skb) lo =pch_src_uuid_lo_read (pdev); hi =pch_src_uuid_hi_read (pdev); - uid = hi &0xffff ; - seq = (hi >>16 ) &0xffff ; - -if (!pch_ptp_match (skb,htons (uid),htonl (lo),htons (seq))) +if (!pch_ptp_match (skb, hi, lo, hi >>16 )) goto out; ns =pch_rx_snap_read (pdev);
drivers/net/ethernet/realtek/r8169_main.c +0 -1
@@ -3547,7 +3547,6 @@ static void rtl_hw_start_8106(struct rtl8169_private *tp)rtl_eri_write (tp,0x1b0 ,ERIAR_MASK_0011 ,0x0000 );rtl_pcie_state_l2l3_disable (tp); -rtl_hw_aspm_clkreq_enable (tp, true); }DECLARE_RTL_COND (rtl_mac_ocp_e00e_cond)
drivers/net/ethernet/sfc/ef10_sriov.c +12 -13
@@ -402,12 +402,17 @@ static int efx_ef10_pci_sriov_enable(struct efx_nic *efx, int num_vfs)return rc; } +/* Disable SRIOV and remove VFs +* If some VFs are attached to a guest (using Xen, only) nothing is +* done if force=false, and vports are freed if force=true (for the non +* attachedc ones, only) but SRIOV is not disabled and VFs are not +* removed in either case. +*/ static int efx_ef10_pci_sriov_disable (struct efx_nic *efx,bool force) {struct pci_dev *dev = efx->pci_dev; -unsigned int vfs_assigned =0 ; - - vfs_assigned =pci_vfs_assigned (dev); +unsigned int vfs_assigned =pci_vfs_assigned (dev); +int rc =0 ;if (vfs_assigned && !force) { netif_info(efx, drv, efx->net_dev, "VFs are assigned to guests; "
@@ -417,10 +422,12 @@ static int efx_ef10_pci_sriov_disable(struct efx_nic *efx, bool force)if (!vfs_assigned)pci_disable_sriov (dev); +else + rc = -EBUSY ;efx_ef10_sriov_free_vf_vswitching (efx); efx->vf_count =0 ; -return 0 ; +return rc; }int efx_ef10_sriov_configure (struct efx_nic *efx,int num_vfs)
@@ -439,7 +446,6 @@ int efx_ef10_sriov_init(struct efx_nic *efx)void efx_ef10_sriov_fini (struct efx_nic *efx) {struct efx_ef10_nic_data *nic_data = efx->nic_data; -unsigned int i;int rc;if (!nic_data->vf) {
@@ -449,14 +455,7 @@ void efx_ef10_sriov_fini(struct efx_nic *efx)return ; } -/* Remove any VFs in the host */ -for (i =0 ; i < efx->vf_count; ++i) { -struct efx_nic *vf_efx = nic_data->vf[i].efx; - -if (vf_efx) - vf_efx->pci_dev->driver->remove (vf_efx->pci_dev); - } - +/* Disable SRIOV and remove any VFs in the host */ rc =efx_ef10_pci_sriov_disable (efx, true);if (rc) netif_dbg(efx, drv, efx->net_dev,
drivers/net/ethernet/sgi/ioc3-eth.c +4 -0
@@ -835,6 +835,10 @@ static int ioc3eth_probe(struct platform_device *pdev)int err; regs =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!regs) { +dev_err (&pdev->dev,"Invalid resource\n" ); +return -EINVAL ; + }/* get mac addr from one wire prom */ if (ioc3eth_get_mac_addr (regs, mac_addr))return -EPROBE_DEFER ;/* not available yet */
drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c +15 -6
@@ -441,6 +441,12 @@ int stmmac_mdio_register(struct net_device *ndev) found =1 ; } +if (!found && !mdio_node) { +dev_warn (dev,"No PHY found\n" ); + err = -ENODEV ; + goto no_phy_found; + } +/* Try to probe the XPCS by scanning all addresses. */ if (priv->hw->xpcs) {struct mdio_xpcs_args *xpcs = &priv->hw->xpcs_args;
@@ -449,6 +455,7 @@ int stmmac_mdio_register(struct net_device *ndev) xpcs->bus = new_bus; + found =0 ;for (addr =0 ; addr < max_addr; addr++) { xpcs->addr = addr;
@@ -458,13 +465,12 @@ int stmmac_mdio_register(struct net_device *ndev)break ; } } - } -if (!found && !mdio_node) { -dev_warn (dev,"No PHY found\n" ); -mdiobus_unregister (new_bus); -mdiobus_free (new_bus); -return -ENODEV ; +if (!found && !mdio_node) { +dev_warn (dev,"No XPCS found\n" ); + err = -ENODEV ; + goto no_xpcs_found; + } } bus_register_done:
@@ -472,6 +478,9 @@ int stmmac_mdio_register(struct net_device *ndev)return 0 ; +no_xpcs_found: +no_phy_found: +mdiobus_unregister (new_bus); bus_register_fail:mdiobus_free (new_bus);return err;
drivers/net/fjes/fjes_main.c +4 -0
@@ -1262,6 +1262,10 @@ static int fjes_probe(struct platform_device *plat_dev) adapter->interrupt_watch_enable = false; res =platform_get_resource (plat_dev,IORESOURCE_MEM ,0 ); +if (!res) { + err = -EINVAL ; + goto err_free_control_wq; + } hw->hw_res.start = res->start; hw->hw_res.size =resource_size (res); hw->hw_res.irq =platform_get_irq (plat_dev,0 );
drivers/net/ipa/ipa_main.c +1 -0
@@ -589,6 +589,7 @@ static int ipa_firmware_load(struct device *dev) } ret =of_address_to_resource (node,0 , &res); +of_node_put (node);if (ret) {dev_err (dev,"error %d getting \"memory-region\" resource\n" , ret);
drivers/net/mdio/mdio-ipq8064.c +24 -9
@@ -10,7 +10,7 @@#include <linux/module.h> #include <linux/regmap.h> #include <linux/of_mdio.h> -#include <linux/phy.h> +#include <linux/of_address.h> #include <linux/platform_device.h> #include <linux/mfd/syscon.h>
@@ -96,14 +96,34 @@ ipq8064_mdio_write(struct mii_bus *bus, int phy_addr, int reg_offset, u16 data)return ipq8064_mdio_wait_busy (priv); } +static const struct regmap_config ipq8064_mdio_regmap_config = { + .reg_bits =32 , + .reg_stride =4 , + .val_bits =32 , + .can_multi_write = false, +/* the mdio lock is used by any user of this mdio driver */ + .disable_locking = true, + + .cache_type =REGCACHE_NONE , +}; +static int ipq8064_mdio_probe (struct platform_device *pdev) {struct device_node *np = pdev->dev.of_node;struct ipq8064_mdio *priv; +struct resource res;struct mii_bus *bus; +void __iomem *base;
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +18 -6
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/time-event.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +10 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/internal.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mac80211_hwsim.c +38 -10
48 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +4 -6
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7915/init.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h +3 -8
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c +53 -6
59 lines not on this page · raw message
drivers/net/wireless/st/cw1200/cw1200_sdio.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/thermal/intel/int340x_thermal/processor_thermal_device.c +12 -8
Lines of this file are not shown. View the raw message.
fs/io_uring.c +50 -68
118 lines not on this page · raw message
fs/ubifs/xattr.c +33 -11
44 lines not on this page · raw message
include/linux/mfd/abx500/ux500_chargalg.h +1 -1
Lines of this file are not shown. View the raw message.
kernel/bpf/core.c +43 -18
61 lines not on this page · raw message
kernel/cpu.c +49 -0
49 lines not on this page · raw message
kernel/trace/trace.c +55 -36
91 lines not on this page · raw message
net/ipv4/tcp_input.c +26 -19
45 lines not on this page · raw message
tools/testing/selftests/drivers/net/mlxsw/devlink_trap_l3_drops.sh +3 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/mlxsw/devlink_trap_l3_exceptions.sh +3 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/mlxsw/qos_dscp_bridge.sh +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/lkdtm/tests.txt +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/pedit_dsfield.sh +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/pedit_l4port.sh +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/skbedit_priority.sh +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/resctrl/resctrl_tests.c +2 -2
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.