Linux 5.16.13
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.16.13 kernel.
All users of the 5.16 kernel series must upgrade.
The updated 5.16.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.16.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/admin-guide/mm/pagemap.rst | 2 Documentation/arm64/silicon-errata.rst | 2 Documentation/trace/events.rst | 19 Documentation/virt/kvm/api.rst | 2 Makefile | 2 arch/arm/boot/dts/omap3-devkit8000-common.dtsi | 18 arch/arm/boot/dts/omap3-devkit8000.dts | 33 - arch/arm/boot/dts/tegra124-nyan-big.dts | 15 arch/arm/boot/dts/tegra124-nyan-blaze.dts | 15 arch/arm/boot/dts/tegra124-venice2.dts | 14 arch/arm/kernel/kgdb.c | 36 + arch/arm/mm/mmu.c | 2 arch/arm64/Kconfig | 16 arch/arm64/boot/dts/arm/juno-base.dtsi | 3 arch/arm64/boot/dts/freescale/imx8mm.dtsi | 1 arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi | 17 arch/arm64/boot/dts/rockchip/rk3566-quartz64-a.dts | 2 arch/arm64/boot/dts/rockchip/rk3568.dtsi | 6 arch/arm64/kernel/cpu_errata.c | 8 arch/arm64/kernel/stacktrace.c | 3 arch/arm64/kvm/hyp/include/hyp/switch.h | 20 arch/arm64/kvm/vgic/vgic-mmio.c | 2 arch/arm64/tools/cpucaps | 5 arch/mips/kernel/setup.c | 2 arch/mips/ralink/mt7621.c | 36 - arch/riscv/mm/Makefile | 3 arch/riscv/mm/kasan_init.c | 3 arch/s390/include/asm/extable.h | 9 arch/s390/include/asm/ftrace.h | 10 arch/s390/include/asm/ptrace.h | 2 arch/s390/kernel/ftrace.c | 37 + arch/s390/kernel/mcount.S | 9 arch/s390/kernel/setup.c | 2 arch/x86/kernel/kvmclock.c | 3 arch/x86/kvm/mmu/mmu.c | 2 arch/x86/kvm/x86.c | 1 block/blk-map.c | 2 drivers/ata/pata_hpt37x.c | 4 drivers/auxdisplay/lcd2s.c | 24 drivers/block/loop.c | 8 drivers/clocksource/timer-ti-dm-systimer.c | 3 drivers/dma/sh/shdma-base.c | 4 drivers/firmware/arm_scmi/driver.c | 2 drivers/firmware/efi/libstub/riscv-stub.c | 17 drivers/firmware/efi/vars.c | 5 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 10 drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 4 drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 26 - drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.h | 8 drivers/gpu/drm/bridge/ti-sn65dsi86.c | 5 drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c | 2 drivers/gpu/drm/i915/intel_pch.c | 2 drivers/gpu/drm/i915/intel_pch.h | 2 drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 69 ++ drivers/hid/amd-sfh-hid/amd_sfh_pcie.h | 2 drivers/hid/hid-debug.c | 5 drivers/hid/hid-input.c | 3 drivers/i2c/busses/Kconfig | 6 drivers/i2c/busses/i2c-bcm2835.c | 11 drivers/input/input.c | 6 drivers/input/keyboard/Kconfig | 2 drivers/input/mouse/elan_i2c_core.c | 64 -- drivers/iommu/amd/amd_iommu.h | 1 drivers/iommu/amd/amd_iommu_types.h | 1 drivers/iommu/amd/init.c | 10 drivers/iommu/amd/io_pgtable.c | 12 drivers/iommu/amd/iommu.c | 10 drivers/iommu/intel/iommu.c | 2 drivers/iommu/tegra-smmu.c | 4 drivers/net/arcnet/com20020-pci.c | 3 drivers/net/can/usb/etas_es58x/es58x_core.c | 9 drivers/net/can/usb/etas_es58x/es58x_core.h | 8 drivers/net/can/usb/gs_usb.c | 10 drivers/net/dsa/microchip/ksz_common.c | 26 - drivers/net/ethernet/chelsio/cxgb3/t3_hw.c | 2 drivers/net/ethernet/ibm/ibmvnic.c | 247 +++++++--- drivers/net/ethernet/ibm/ibmvnic.h | 1 drivers/net/ethernet/intel/e1000e/hw.h | 1 drivers/net/ethernet/intel/e1000e/ich8lan.c | 8 drivers/net/ethernet/intel/e1000e/ich8lan.h | 1 drivers/net/ethernet/intel/e1000e/netdev.c | 26 + drivers/net/ethernet/intel/iavf/iavf.h | 6 drivers/net/ethernet/intel/iavf/iavf_main.c | 152 ++++-- drivers/net/ethernet/intel/iavf/iavf_virtchnl.c | 14 drivers/net/ethernet/intel/igc/igc_phy.c | 4 drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 6 drivers/net/ethernet/microchip/sparx5/sparx5_vlan.c | 20 drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c | 6 drivers/net/ethernet/stmicro/stmmac/stmmac.h | 4 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 170 ++++++ drivers/net/ethernet/stmicro/stmmac/stmmac_xdp.c | 4 drivers/net/ipa/Kconfig | 2 drivers/net/usb/cdc_mbim.c | 5 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c | 11 drivers/net/wireless/mac80211_hwsim.c | 13 drivers/net/xen-netfront.c | 39 - drivers/ntb/hw/intel/ntb_hw_gen4.c | 17 drivers/ntb/hw/intel/ntb_hw_gen4.h | 16 drivers/pinctrl/sunxi/pinctrl-sunxi.c | 9 drivers/platform/x86/amd-pmc.c | 34 + drivers/ptp/ptp_ocp.c | 25 - drivers/regulator/core.c | 13 drivers/soc/fsl/guts.c | 14 drivers/soc/fsl/qe/qe_io.c | 2 drivers/soc/imx/gpcv2.c | 3 drivers/thermal/thermal_netlink.c | 5 drivers/tty/serial/stm32-usart.c | 12 drivers/usb/gadget/legacy/inode.c | 10 fs/binfmt_elf.c | 25 - fs/btrfs/ctree.h | 10 fs/btrfs/disk-io.c | 10 fs/btrfs/extent-tree.c | 10 fs/btrfs/extent_io.c | 16 fs/btrfs/extent_map.c | 2 fs/btrfs/extent_map.h | 8 fs/btrfs/inode.c | 170 ++++-- fs/btrfs/ioctl.c | 175 ++++++- fs/btrfs/qgroup.c | 9 fs/btrfs/relocation.c | 13 fs/btrfs/root-tree.c | 15 fs/btrfs/subpage.c | 2 fs/btrfs/transaction.c | 77 ++- fs/btrfs/transaction.h | 1 fs/btrfs/tree-log.c | 61 +- fs/cifs/cifsacl.c | 9 fs/cifs/cifsfs.c | 1 fs/exfat/file.c | 18 fs/exfat/inode.c | 13 fs/exfat/namei.c | 6 fs/exfat/super.c | 10 fs/ext4/ext4.h | 15 fs/ext4/extents.c | 6 fs/ext4/fast_commit.c | 218 +++----- fs/ext4/fast_commit.h | 27 - fs/ext4/inode.c | 4 fs/ext4/ioctl.c | 5 fs/ext4/namei.c | 4 fs/ext4/super.c | 3 fs/ext4/xattr.c | 6 fs/jbd2/commit.c | 2 fs/jbd2/journal.c | 2 fs/proc/task_mmu.c | 3 include/linux/jbd2.h | 2 include/linux/sched/task.h | 4 include/net/bluetooth/bluetooth.h | 3 include/net/ndisc.h | 4 include/net/netfilter/nf_queue.h | 2 include/net/xfrm.h | 1 include/uapi/linux/input-event-codes.h | 4 include/uapi/linux/xfrm.h | 6 kernel/fork.c | 13 kernel/sched/core.c | 23 kernel/trace/blktrace.c | 26 - kernel/trace/trace.c | 4 kernel/trace/trace_events_filter.c | 107 ++++ kernel/trace/trace_events_hist.c | 6 kernel/trace/trace_kprobe.c | 2 kernel/user_namespace.c | 14 mm/memfd.c | 40 + mm/util.c | 4 net/batman-adv/hard-interface.c | 29 - net/core/skbuff.c | 2 net/core/skmsg.c | 2 net/dcb/dcbnl.c | 44 + net/ipv4/esp4.c | 2 net/ipv6/addrconf.c | 8 net/ipv6/esp6.c | 2 net/ipv6/ip6_output.c | 11 net/ipv6/mcast.c | 32 - net/mac80211/ieee80211_i.h | 2 net/mac80211/mlme.c | 16 net/mac80211/rx.c | 14 net/mptcp/protocol.c | 7 net/netfilter/core.c | 5 net/netfilter/nf_queue.c | 36 + net/netfilter/nf_tables_api.c | 4 net/netfilter/nfnetlink_queue.c | 12 net/smc/af_smc.c | 10 net/smc/smc_core.c | 5 net/tipc/crypto.c | 2 net/wireless/nl80211.c | 12 net/xfrm/xfrm_device.c | 6 net/xfrm/xfrm_interface.c | 2 net/xfrm/xfrm_state.c | 14 sound/soc/codecs/cs4265.c | 3 sound/soc/codecs/rt5668.c | 12 sound/soc/codecs/rt5682.c | 12 sound/soc/codecs/rt5682s.c | 12 sound/soc/soc-ops.c | 4 sound/x86/intel_hdmi_audio.c | 2 tools/testing/selftests/drivers/net/mlxsw/spectrum/resource_scale.sh | 2 tools/testing/selftests/drivers/net/mlxsw/tc_police_scale.sh | 3 tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc | 2 tools/testing/selftests/seccomp/Makefile | 2 194 files changed, 2342 insertions(+), 868 deletions(-)
Aaron Lewis (1):
KVM: x86: Add KVM_CAP_ENABLE_CAP to x86
Adam Ford (1):
arm64: dts: imx8mm: Fix VPU Hanging
Adrian Huang (1):
iommu/vt-d: Fix double list_add when enabling VMD in scalable mode
Alex Elder (2):
net: ipa: fix a build dependency
net: ipa: add an interconnect dependency
Alexander Egorenkov (1):
s390/setup: preserve memory at OLDMEM_BASE and OLDMEM_SIZE
Alexandre Ghiti (2):
riscv: Fix config KASAN && SPARSEMEM && !SPARSE_VMEMMAP
riscv: Fix config KASAN && DEBUG_VIRTUALAlyssa Ross (1):
firmware: arm_scmi: Remove space in MODULE_ALIAS name
Amit Cohen (2):
selftests: mlxsw: tc_police_scale: Make test more robust
selftests: mlxsw: resource_scale: Fix return value
Andy Shevchenko (3):
auxdisplay: lcd2s: Fix lcd2s_redefine_char() feature
auxdisplay: lcd2s: Fix memory leak in ->remove()
auxdisplay: lcd2s: Use proper API to free the instance of charlcd object
Anthoine Bourgeois (2):
ARM: dts: switch timer config to common devkit8000 devicetree
ARM: dts: Use 32KiHz oscillator on devkit8000
Antony Antony (1):
xfrm: fix the if_id check in changelink
Basavaraj Natikar (3):
HID: amd_sfh: Handle amd_sfh work buffer in PM ops
HID: amd_sfh: Add functionality to clear interrupts
HID: amd_sfh: Add interrupt handler to process interrupts
Benjamin Beichler (1):
mac80211_hwsim: report NOACK frames in tx_status
Brian Norris (1):
arm64: dts: rockchip: Switch RK3399-Gru DP to SPDIF output
Casper Andersson (1):
net: sparx5: Fix add vlan when invalid operation
Christophe JAILLET (2):
soc: fsl: guts: Revert commit 3c0d64e867ed
soc: fsl: guts: Add a missing memory allocation failure check
Christophe Vu-Brugier (2):
exfat: reuse exfat_inode_info variable instead of calling EXFAT_I()
exfat: fix i_blocks for files truncated over 4 GiB
Chuanhong Guo (1):
MIPS: ralink: mt7621: do memory detection on KSEG1
Corinna Vinschen (1):
igc: igc_read_phy_reg_gpy: drop premature return
D. Wythe (3):
net/smc: fix connection leak
net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error generated by client net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error cause by server
Daniel Borkmann (1):
mm: Consider __GFP_NOWARN flag for oversized kvmalloc() calls
Daniele Palmas (1):
net: usb: cdc_mbim: avoid altsetting toggling for Telit FN990
Dany Madden (1):
ibmvnic: Update driver return codes
Dave Jiang (1):
ntb: intel: fix port config status offset for SPR
David Gow (1):
Input: samsung-keypad - properly state IOMEM dependency
Deren Wu (1):
mac80211: fix EAPoL rekey fail in 802.3 rx path
Dexuan Cui (1):
x86/kvmclock: Fix Hyper-V Isolated VM's boot issue when vCPUs > 64
Douglas Anderson (1):
drm/bridge: ti-sn65dsi86: Properly undo autosuspend
Eric Anholt (1):
i2c: bcm2835: Avoid clock stretching timeouts
Eric Dumazet (4):
ipv6: fix skb drops in igmp6_event_query() and igmp6_event_report()
netfilter: fix use-after-free in __nf_register_net_hook() bpf, sockmap: Do not ignore orig_len parameter
netfilter: nf_tables: prefer kfree_rcu(ptr, rcu) variant
Eric W. Biederman (1):
ucounts: Fix systemd LimitNPROC with private users regression
Evan Quan (1):
drm/amd/pm: correct UMD pstate clocks for Dimgrey Cavefish and Beige Goby
Fabio Estevam (1):
ASoC: cs4265: Fix the duplicated control name
Filipe Manana (5):
btrfs: get rid of warning on transaction commit when using flushoncommit
btrfs: fix ENOSPC failure when attempting direct IO write into NOCOW range
btrfs: fix lost prealloc extents beyond eof after full fsync
btrfs: add missing run of delayed items after unlink during log replay
btrfs: fallback to blocking mode when doing async dio over multiple extents
Florian Westphal (3):
netfilter: nf_queue: don't assume sk is full socket
netfilter: nf_queue: fix possible use-after-free
netfilter: nf_queue: handle socket prefetch
Frank Wunderlich (1):
arm64: dts: rockchip: drop pclk_xpcs from gmac0 on rk3568
Greg Kroah-Hartman (1):
Linux 5.16.13
Haimin Zhang (1):
block-map: add __GFP_ZERO flag for alloc_page in function bio_copy_kern
Hangyu Hua (3):
tipc: fix a bit overflow in tipc_crypto_key_rcv()
usb: gadget: don't release an existing dev->buf
usb: gadget: clear related members when goto fail
Hans de Goede (2):
Input: elan_i2c - move regulator_[en|dis]able() out of elan_[en|dis]able_power()
Input: elan_i2c - fix regulator enable count imbalance after suspend/resume
Harshad Shirwadkar (2):
ext4: drop ineligible txn start stop APIs
ext4: simplify updating of fast commit stats
Heiko Carstens (3):
s390/extable: fix exception table sorting s390/ftrace: fix arch_ftrace_get_regs implementation s390/ftrace: fix ftrace_caller/ftrace_regs_caller generation
Hugh Dickins (1):
memfd: fix F_SEAL_WRITE after shmem huge page allocated
Ilya Lipnitskiy (1):
MIPS: ralink: mt7621: use bitwise NOT instead of logical
JaeMan Park (1):
mac80211_hwsim: initialize ieee80211_tx_info at hw_scan_work
James Morse (1):
KVM: arm64: Workaround Cortex-A510's single-step and PAC trap errata
Jann Horn (1):
efivars: Respect "block" flag in efivar_entry_set_safe()
Jedrzej Jagielski (1):
iavf: Add trace while removing device
Jia-Ju Bai (1):
net: chelsio: cxgb3: check the return value of pci_find_capability()
Jiasheng Jiang (2):
soc: fsl: qe: Check of ioremap return value
nl80211: Handle nla_memdup failures in handle_nan_filter
Jiri Bohac (2):
xfrm: fix MTU regression
Revert "xfrm: xfrm_state_mtu should return at least 1280 for ipv6"
Johannes Berg (1):
mac80211: treat some SAE auth steps as final
Jonathan Lemon (1):
ptp: ocp: Add ptp_ocp_adjtime_coarse for large adjustments
Josef Bacik (2):
btrfs: do not WARN_ON() if we have PageError set
btrfs: do not start relocation until in progress drops are done
José Expósito (1):
Input: clear BTN_RIGHT/MIDDLE on buttonpads
Kai Vehmanen (3):
ASoC: rt5682s: do not block workqueue if card is unbound
ASoC: rt5668: do not block workqueue if card is unbound
ASoC: rt5682: do not block workqueue if card is unbound
Kees Cook (1):
binfmt_elf: Avoid total_mapping_size for ET_EXEC
Krzysztof Kozlowski (1):
selftests/ftrace: Do not trace do_softirq because of PREEMPT_RT
Laurent Pinchart (1):
soc: imx: gpcv2: Fix clock disabling imbalance in error path
Lennert Buytenhek (1):
iommu/amd: Recover from event log overflow
Leo (Hanghong) Ma (1):
drm/amd/display: Reduce dmesg error to a debug print
Leon Romanovsky (1):
xfrm: enforce validity of offload input flags
Like Xu (1):
KVM: x86/mmu: Passing up the error state of mmu_alloc_shadow_roots()
Luiz Augusto von Dentz (1):
Bluetooth: Fix bt_skb_sendmmsg not allocating partial chunks
Maciej Fijalkowski (1):
ixgbe: xsk: change !netif_carrier_ok() handling in ixgbe_xmit_zc()
Marc Zyngier (1):
KVM: arm64: vgic: Read HW interrupt pending state from the HW
Marek Marczykowski-Górecki (1):
xen/netfront: destroy queues before real_num_tx_queues is zeroed
Marek Vasut (1):
ASoC: ops: Shift tested values in snd_soc_put_volsw() by +min
Mario Limonciello (1):
platform/x86: amd-pmc: Set QOS during suspend on CZN w/ timer wakeup
Masami Hiramatsu (1):
arm64: Mark start_backtrace() notrace and NOKPROBE_SYMBOL
Mat Martineau (1):
mptcp: Correctly set DATA_FIN timeout when number of retransmits is large
Miaoqian Lin (1):
iommu/tegra-smmu: Fix missing put_device() call in tegra_smmu_find
Ming Lei (1):
block: loop:use kstatfs.f_bsize of backing file to set discard granularity
Nicolas Cavallari (1):
thermal: core: Fix TZ_GET_TRIP NULL pointer dereference
Nicolas Escande (1):
mac80211: fix forwarded mesh frames AC & queue selection
Oliver Barta (1):
regulator: core: fix false positive in regulator_late_cleanup()
Omar Sandoval (1):
btrfs: fix relocation crash due to premature return from btrfs_commit_transaction()
Ong Boon Leong (2):
net: stmmac: enhance XDP ZC driver level switching performance
net: stmmac: perserve TX and RX coalesce value during XDP setup
Peter Geis (1):
arm64: dts: rockchip: fix Quartz64-A ddr regulator voltage
Peter Zijlstra (1):
sched: Fix yet more sched_fork() races
Qiang Yu (2):
drm/amdgpu: check vm ready by amdgpu_vm->evicting flag drm/amdgpu: fix suspend/resume hang regression
Qu Wenruo (3):
btrfs: defrag: bring back the old file extent search behavior
btrfs: defrag: don't use merged extent map for their generation check
btrfs: subpage: fix a wrong check on subpage->writers
Randy Dunlap (6):
iwlwifi: mvm: check debugfs_dir ptr before use
net: stmmac: fix return value of __setup handler
net: sxgbe: fix return value of __setup handler
mips: setup: fix setnocoherentio() boolean setting
ARM: 9182/1: mmu: fix returns from early_param() and __setup() functions
tracing: Fix return value of __setup handlers
Robin Murphy (1):
arm64: dts: juno: Remove GICv2m dma-range
Ronnie Sahlberg (3):
cifs: do not use uninitialized data in the owner/group sid
cifs: fix double free race when mount fails in cifs_get_root()
cifs: modefromsids must add an ACE for authenticated users
Russell King (Oracle) (1):
ARM: Fix kgdb breakpoint for Thumb2
Samuel Holland (1):
pinctrl: sunxi: Use unique lockdep classes for IRQs
Sasha Neftin (3):
e1000e: Correct NVM checksum verification flow
igc: igc_write_phy_reg_gpy: drop premature return
e1000e: Fix possible HW unit hang after an s0ix exit
Sergey Shtylyov (1):
ata: pata_hpt37x: fix PCI clock detection
Sherry Yang (1):
selftests/seccomp: Fix seccomp failure by adding missing headers
Sidong Yang (1):
btrfs: qgroup: fix deadlock between rescan worker and remove qgroup
Slawomir Laba (8):
iavf: Fix missing check for running netdev
iavf: Fix deadlock in iavf_reset_task
iavf: Rework mutexes for better synchronisation
iavf: Add waiting so the port is initialized in remove
iavf: Fix init state closure on remove
iavf: Fix locking for VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS
iavf: Fix race in init state
iavf: Fix __IAVF_RESETTING state usage
Steven Rostedt (2):
tracing: Add test for user space strings when filtering on string pointers
tracing: Add ustring operation to filtering string pointers
Steven Rostedt (Google) (1):
tracing/histogram: Fix sorting on old "cpu" value
Sukadev Bhattiprolu (8):
ibmvnic: register netdev after init of adapter
ibmvnic: free reset-work-item when flushing
ibmvnic: initialize rc before completing wait
ibmvnic: define flush_reset_queue helper
ibmvnic: complete init_done on transport events
ibmvnic: init init_done_rc earlier
ibmvnic: clear fop when retrying probe
ibmvnic: Allow queueing resets during probe
Sunil V L (1):
riscv/efi_stub: Fix get_boot_hartid_from_fdt() return value
Suravee Suthikulpanit (1):
iommu/amd: Fix I/O page table memory leak
Sven Eckelmann (3):
batman-adv: Request iflink once in batadv-on-batadv check
batman-adv: Request iflink once in batadv_get_real_netdevice
batman-adv: Don't expect inter-netns unique iflink indices
Svenning Sørensen (1):
net: dsa: microchip: fix bridging with more than two member ports
Tadeusz Struk (1):
sched/fair: Fix fault in reweight_entity
Thierry Reding (1):
ARM: tegra: Move panels to AUX bus
Valentin Caron (1):
serial: stm32: prevent TDR register overwrite when sending x_char
Ville Syrjälä (1):
drm/i915: s/JSP2/ICP2/ PCH
Vinay Belgaumkar (1):
drm/i915/guc/slpc: Correct the param count for unset param
Vincent Mailhol (2):
can: gs_usb: change active_channels's type from atomic_t to u8
can: etas_es58x: change opened_channel_cnt's type from atomic_t to u8
Vincent Whitchurch (1):
net: stmmac: only enable DMA interrupts when ready
Vladimir Oltean (2):
net: dcb: flush lingering app table entries for unregistered devices
net: dcb: disable softirqs in dcbnl_flush_dev()
William Mahon (2):
HID: add mapping for KEY_DICTATE
HID: add mapping for KEY_ALL_APPLICATIONS
Wolfram Sang (3):
i2c: cadence: allow COMPILE_TEST
i2c: imx: allow COMPILE_TEST
i2c: qup: allow COMPILE_TEST
Xin Yin (2):
ext4: fast commit may not fallback for ineligible commit
ext4: fast commit may miss file actions
Yongzhi Liu (1):
dmaengine: shdma: Fix runtime PM imbalance on error
Yu Kuai (1):
blktrace: fix use after free for struct blk_trace
Yun Zhou (1):
proc: fix documentation and description of pagemap
Zhen Ni (1):
ALSA: intel_hdmi: Fix reference to PCM buffer address
Zheyu Ma (1):
net: arcnet: com20020: Fix null-ptr-deref in com20020pci_probe()
[email protected] (1):
net: ipv6: ensure we call ipv6_mc_down() at most once
lena wang (1):
net: fix up skbs delta_truesize in UDP GRO frag_list
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/mm/pagemap.rst +1 -1
@@ -23,7 +23,7 @@ There are four components to pagemap: * Bit 56 page exclusively mapped (since 4.2) * Bit 57 pte is uffd-wp write-protected (since 5.13) (see :ref:`Documentation/admin-guide/mm/userfaultfd.rst <userfaultfd>`) - * Bits 57-60 zero + * Bits 58-60 zero * Bit 61 page is file-page or shared-anon (since 3.5) * Bit 62 page swapped * Bit 63 page present
Documentation/arm64/silicon-errata.rst +2 -0
@@ -100,6 +100,8 @@ stable kernels. +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A510 | #2051678 | ARM64_ERRATUM_2051678 | +----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A510 | #2077057 | ARM64_ERRATUM_2077057 | ++----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A710 | #2119858 | ARM64_ERRATUM_2119858 | +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A710 | #2054223 | ARM64_ERRATUM_2054223 |
Documentation/trace/events.rst +19 -0
@@ -198,6 +198,15 @@ The glob (~) accepts a wild card character (\*,?) and character classes prev_comm ~ "*sh*" prev_comm ~ "ba*sh" +If the field is a pointer that points into user space (for example +"filename" from sys_enter_openat), then you have to append ".ustring" to the +field name:: + + filename.ustring ~ "password" + +As the kernel will have to know how to retrieve the memory that the pointer +is at from user space. + 5.2 Setting filters -------------------
@@ -230,6 +239,16 @@ Currently the caret ('^') for an error always appears at the beginning of the filter string; the error message should still be useful though even without more accurate position info. +5.2.1 Filter limitations +------------------------ + +If a filter is placed on a string pointer ``(char *)`` that does not point +to a string on the ring buffer, but instead points to kernel or user space +memory, then, for safety reasons, at most 1024 bytes of the content is +copied onto a temporary buffer to do the compare. If the copy of the memory +faults (the pointer points to memory that should not be accessed), then the +string compare will be treated as not matching. + 5.3 Clearing filters --------------------
Documentation/virt/kvm/api.rst +1 -1
@@ -1391,7 +1391,7 @@ documentation when it pops into existence). ------------------- :Capability: KVM_CAP_ENABLE_CAP -:Architectures: mips, ppc, s390 +:Architectures: mips, ppc, s390, x86 :Type: vcpu ioctl :Parameters: struct kvm_enable_cap (in) :Returns: 0 on success; -1 on error
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 16 -SUBLEVEL = 12 +SUBLEVEL = 13 EXTRAVERSION = NAME = Gobble Gobble
arch/arm/boot/dts/omap3-devkit8000-common.dtsi +18 -0
@@ -158,6 +158,24 @@ &mmc3 { status = "disabled"; }; +/* Unusable as clockevent because if unreliable oscillator, allow to idle */ +&timer1_target { + /delete-property/ti,no-reset-on-init; + /delete-property/ti,no-idle; + timer@0 { + /delete-property/ti,timer-alwon; + }; +}; + +/* Preferred timer for clockevent */ +&timer12_target { + ti,no-reset-on-init; + ti,no-idle; + timer@0 { + /* Always clocked by secure_32k_fck */ + }; +}; + &twl_gpio { ti,use-leds; /*
arch/arm/boot/dts/omap3-devkit8000.dts +0 -33
@@ -14,36 +14,3 @@ aliases { display2 = &tv0; }; }; - -/* Unusable as clocksource because of unreliable oscillator */ -&counter32k { - status = "disabled"; -}; - -/* Unusable as clockevent because if unreliable oscillator, allow to idle */ -&timer1_target { - /delete-property/ti,no-reset-on-init; - /delete-property/ti,no-idle; - timer@0 { - /delete-property/ti,timer-alwon; - }; -}; - -/* Preferred always-on timer for clocksource */ -&timer12_target { - ti,no-reset-on-init; - ti,no-idle; - timer@0 { - /* Always clocked by secure_32k_fck */ - }; -}; - -/* Preferred timer for clockevent */ -&timer2_target { - ti,no-reset-on-init; - ti,no-idle; - timer@0 { - assigned-clocks = <&gpt2_fck>; - assigned-clock-parents = <&sys_ck>; - }; -};
arch/arm/boot/dts/tegra124-nyan-big.dts +9 -6
@@ -13,12 +13,15 @@ / { "google,nyan-big-rev1", "google,nyan-big-rev0", "google,nyan-big", "google,nyan", "nvidia,tegra124"; - panel: panel { - compatible = "auo,b133xtn01"; - - power-supply = <&vdd_3v3_panel>; - backlight = <&backlight>; - ddc-i2c-bus = <&dpaux>; + host1x@50000000 { + dpaux@545c0000 { + aux-bus { + panel: panel { + compatible = "auo,b133xtn01"; + backlight = <&backlight>; + }; + }; + }; }; mmc@700b0400 { /* SD Card on this bus */
arch/arm/boot/dts/tegra124-nyan-blaze.dts +9 -6
@@ -15,12 +15,15 @@ / { "google,nyan-blaze-rev0", "google,nyan-blaze", "google,nyan", "nvidia,tegra124"; - panel: panel { - compatible = "samsung,ltn140at29-301"; - - power-supply = <&vdd_3v3_panel>; - backlight = <&backlight>; - ddc-i2c-bus = <&dpaux>; + host1x@50000000 { + dpaux@545c0000 { + aux-bus { + panel: panel { + compatible = "samsung,ltn140at29-301"; + backlight = <&backlight>; + }; + }; + }; }; sound {
arch/arm/boot/dts/tegra124-venice2.dts +7 -7
@@ -48,6 +48,13 @@ sor@54540000 { dpaux@545c0000 { vdd-supply = <&vdd_3v3_panel>; status = "okay"; + + aux-bus { + panel: panel { + compatible = "lg,lp129qe"; + backlight = <&backlight>; + }; + }; }; };
@@ -1079,13 +1086,6 @@ power { }; }; - panel: panel { - compatible = "lg,lp129qe"; - power-supply = <&vdd_3v3_panel>; - backlight = <&backlight>; - ddc-i2c-bus = <&dpaux>; - }; - vdd_mux: regulator@0 { compatible = "regulator-fixed"; regulator-name = "+VDD_MUX";
arch/arm/kernel/kgdb.c +28 -8
@@ -154,22 +154,38 @@ static int kgdb_compiled_brk_fn(struct pt_regs *regs, unsigned int instr)return 0 ; } -static struct undef_hook kgdb_brkpt_hook = { +static struct undef_hook kgdb_brkpt_arm_hook = { .instr_mask =0xffffffff , .instr_val =KGDB_BREAKINST , - .cpsr_mask =MODE_MASK , + .cpsr_mask =PSR_T_BIT |MODE_MASK , .cpsr_val =SVC_MODE , .fn = kgdb_brk_fn }; -static struct undef_hook kgdb_compiled_brkpt_hook = { +static struct undef_hook kgdb_brkpt_thumb_hook = { + .instr_mask =0xffff , + .instr_val =KGDB_BREAKINST &0xffff , + .cpsr_mask =PSR_T_BIT |MODE_MASK , + .cpsr_val =PSR_T_BIT |SVC_MODE , + .fn = kgdb_brk_fn +}; + +static struct undef_hook kgdb_compiled_brkpt_arm_hook = { .instr_mask =0xffffffff , .instr_val =KGDB_COMPILED_BREAK , - .cpsr_mask =MODE_MASK , + .cpsr_mask =PSR_T_BIT |MODE_MASK , .cpsr_val =SVC_MODE , .fn = kgdb_compiled_brk_fn }; +static struct undef_hook kgdb_compiled_brkpt_thumb_hook = { + .instr_mask =0xffff , + .instr_val =KGDB_COMPILED_BREAK &0xffff , + .cpsr_mask =PSR_T_BIT |MODE_MASK , + .cpsr_val =PSR_T_BIT |SVC_MODE , + .fn = kgdb_compiled_brk_fn +}; +static int __kgdb_notify (struct die_args *args,unsigned long cmd) {struct pt_regs *regs = args->regs;
@@ -210,8 +226,10 @@ int kgdb_arch_init(void)if (ret !=0 )return ret; -register_undef_hook (&kgdb_brkpt_hook); -register_undef_hook (&kgdb_compiled_brkpt_hook); +register_undef_hook (&kgdb_brkpt_arm_hook); +register_undef_hook (&kgdb_brkpt_thumb_hook); +register_undef_hook (&kgdb_compiled_brkpt_arm_hook); +register_undef_hook (&kgdb_compiled_brkpt_thumb_hook);return 0 ; }
@@ -224,8 +242,10 @@ int kgdb_arch_init(void)*/ void kgdb_arch_exit (void ) { -unregister_undef_hook (&kgdb_brkpt_hook); -unregister_undef_hook (&kgdb_compiled_brkpt_hook); +unregister_undef_hook (&kgdb_brkpt_arm_hook); +unregister_undef_hook (&kgdb_brkpt_thumb_hook); +unregister_undef_hook (&kgdb_compiled_brkpt_arm_hook); +unregister_undef_hook (&kgdb_compiled_brkpt_thumb_hook);unregister_die_notifier (&kgdb_notifier); }
arch/arm/mm/mmu.c +2 -0
@@ -212,12 +212,14 @@ early_param("ecc", early_ecc);static int __init early_cachepolicy (char *p) {pr_warn ("cachepolicy kernel parameter not supported without cp15\n" ); +return 0 ; }early_param ("cachepolicy" , early_cachepolicy);static int __init noalign_setup (char *__unused) {pr_warn ("noalign kernel parameter not supported without cp15\n" ); +return 1 ; }__setup ("noalign" , noalign_setup);
arch/arm64/Kconfig +16 -0
@@ -681,6 +681,22 @@ config ARM64_ERRATUM_2051678 If unsure, say Y. +config ARM64_ERRATUM_2077057 + bool "Cortex-A510: 2077057: workaround software-step corrupting SPSR_EL2" + help + This option adds the workaround for ARM Cortex-A510 erratum 2077057. + Affected Cortex-A510 may corrupt SPSR_EL2 when the a step exception is + expected, but a Pointer Authentication trap is taken instead. The + erratum causes SPSR_EL1 to be copied to SPSR_EL2, which could allow + EL1 to cause a return to EL2 with a guest controlled ELR_EL2. + + This can only happen when EL2 is stepping EL1. + + When these conditions occur, the SPSR_EL2 value is unchanged from the + previous guest entry, and can be restored from the in-memory copy. + + If unsure, say Y. + config ARM64_ERRATUM_2119858 bool "Cortex-A710/X2: 2119858: workaround TRBE overwriting trace data in FILL mode" default y
arch/arm64/boot/dts/arm/juno-base.dtsi +1 -2
@@ -543,8 +543,7 @@ pcie_ctlr: pcie@40000000 { <0x02000000 0x00 0x50000000 0x00 0x50000000 0x0 0x08000000>, <0x42000000 0x40 0x00000000 0x40 0x00000000 0x1 0x00000000>; /* Standard AXI Translation entries as programmed by EDK2 */ - dma-ranges = <0x02000000 0x0 0x2c1c0000 0x0 0x2c1c0000 0x0 0x00040000>, - <0x02000000 0x0 0x80000000 0x0 0x80000000 0x0 0x80000000>, + dma-ranges = <0x02000000 0x0 0x80000000 0x0 0x80000000 0x0 0x80000000>, <0x43000000 0x8 0x00000000 0x8 0x00000000 0x2 0x00000000>; #interrupt-cells = <1>; interrupt-map-mask = <0 0 0 7>;
arch/arm64/boot/dts/freescale/imx8mm.dtsi +0 -1
@@ -681,7 +681,6 @@ pgc_vpumix: power-domain@6 { clocks = <&clk IMX8MM_CLK_VPU_DEC_ROOT>; assigned-clocks = <&clk IMX8MM_CLK_VPU_BUS>; assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_800M>; - resets = <&src IMX8MQ_RESET_VPU_RESET>; }; pgc_vpu_g1: power-domain@7 {
arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi +12 -5
@@ -286,7 +286,7 @@ max98357a: max98357a { sound: sound { compatible = "rockchip,rk3399-gru-sound"; - rockchip,cpu = <&i2s0 &i2s2>; + rockchip,cpu = <&i2s0 &spdif>; }; };
@@ -437,10 +437,6 @@ &i2s0 { status = "okay"; }; -&i2s2 { - status = "okay"; -}; - &io_domains { status = "okay";
@@ -537,6 +533,17 @@ &sdmmc { vqmmc-supply = <&ppvar_sd_card_io>; }; +&spdif { + status = "okay"; + + /* + * SPDIF is routed internally to DP; we either don't use these pins, or + * mux them to something else. + */ + /delete-property/ pinctrl-0; + /delete-property/ pinctrl-names; +}; + &spi1 { status = "okay";
arch/arm64/boot/dts/rockchip/rk3566-quartz64-a.dts +0 -2
@@ -285,8 +285,6 @@ regulator-state-mem { vcc_ddr: DCDC_REG3 { regulator-always-on; regulator-boot-on; - regulator-min-microvolt = <1100000>; - regulator-max-microvolt = <1100000>; regulator-initial-mode = <0x2>; regulator-name = "vcc_ddr"; regulator-state-mem {
arch/arm64/boot/dts/rockchip/rk3568.dtsi +2 -4
@@ -32,13 +32,11 @@ gmac0: ethernet@fe2a0000 { clocks = <&cru SCLK_GMAC0>, <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0_RX_TX>, <&cru CLK_MAC0_REFOUT>, <&cru ACLK_GMAC0>, <&cru PCLK_GMAC0>, - <&cru SCLK_GMAC0_RX_TX>, <&cru CLK_GMAC0_PTP_REF>, - <&cru PCLK_XPCS>; + <&cru SCLK_GMAC0_RX_TX>, <&cru CLK_GMAC0_PTP_REF>; clock-names = "stmmaceth", "mac_clk_rx", "mac_clk_tx", "clk_mac_refout", "aclk_mac", "pclk_mac", - "clk_mac_speed", "ptp_ref", - "pclk_xpcs"; + "clk_mac_speed", "ptp_ref"; resets = <&cru SRST_A_GMAC0>; reset-names = "stmmaceth"; rockchip,grf = <&grf>;
arch/arm64/kernel/cpu_errata.c +8 -0
@@ -600,6 +600,14 @@ const struct arm64_cpu_capabilities arm64_errata[] = { CAP_MIDR_RANGE_LIST(trbe_write_out_of_range_cpus), },#endif +#ifdef CONFIG_ARM64_ERRATUM_2077057 + { + .desc = "ARM erratum 2077057", + .capability = ARM64_WORKAROUND_2077057, + .type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM, + ERRATA_MIDR_REV_RANGE(MIDR_CORTEX_A510, 0, 0, 2), + }, +#endif #ifdef CONFIG_ARM64_ERRATUM_2064142 { .desc = "ARM erratum 2064142",
arch/arm64/kernel/stacktrace.c +2 -1
@@ -33,7 +33,7 @@*/ -void start_backtrace (struct stackframe *frame,unsigned long fp, +notrace void start_backtrace(struct stackframe *frame, unsigned long fp,unsigned long pc) { frame->fp = fp;
@@ -55,6 +55,7 @@ void start_backtrace(struct stackframe *frame, unsigned long fp, frame->prev_fp =0 ; frame->prev_type =STACK_TYPE_UNKNOWN ; } +NOKPROBE_SYMBOL (start_backtrace);/* * Unwind from one frame record (A) to the next frame record (B).
arch/arm64/kvm/hyp/include/hyp/switch.h +19 -1
@@ -424,6 +424,24 @@ static inline bool kvm_hyp_handle_exit(struct kvm_vcpu *vcpu, u64 *exit_code)return false; } +static inline void synchronize_vcpu_pstate (struct kvm_vcpu *vcpu,u64 *exit_code) +{ +/* +* Check for the conditions of Cortex-A510's #2077057. When these occur +* SPSR_EL2 can't be trusted, but isn't needed either as it is +* unchanged from the value in vcpu_gp_regs(vcpu)->pstate. +* Are we single-stepping the guest, and took a PAC exception from the +* active-not-pending state? +*/ +if (cpus_have_final_cap (ARM64_WORKAROUND_2077057 ) && + vcpu->guest_debug &KVM_GUESTDBG_SINGLESTEP && + *vcpu_cpsr (vcpu) &DBG_SPSR_SS && +ESR_ELx_EC (read_sysreg_el2 (SYS_ESR )) == ESR_ELx_EC_PAC) +write_sysreg_el2 (*vcpu_cpsr (vcpu),SYS_SPSR ); + + vcpu->arch.ctxt.regs.pstate =read_sysreg_el2 (SYS_SPSR ); +} +/* * Return true when we were able to fixup the guest exit and should return to * the guest, false when we should restore the host state and return to the
@@ -435,7 +453,7 @@ static inline bool fixup_guest_exit(struct kvm_vcpu *vcpu, u64 *exit_code)* Save PSTATE early so that we can evaluate the vcpu mode * early on. */ - vcpu->arch.ctxt.regs.pstate =read_sysreg_el2 (SYS_SPSR ); +synchronize_vcpu_pstate (vcpu, exit_code);/* * Check whether we want to repaint the state one way or
arch/arm64/kvm/vgic/vgic-mmio.c +2 -0
@@ -248,6 +248,8 @@ unsigned long vgic_mmio_read_pending(struct kvm_vcpu *vcpu,IRQCHIP_STATE_PENDING , &val);WARN_RATELIMIT (err,"IRQ %d" , irq->host_irq); + }else if (vgic_irq_is_mapped_level (irq)) { + val =vgic_get_phys_line_level (irq); }else { val =irq_is_pending (irq); }
arch/arm64/tools/cpucaps +3 -2
@@ -55,9 +55,10 @@ WORKAROUND_1418040 WORKAROUND_1463225 WORKAROUND_1508412 WORKAROUND_1542419 -WORKAROUND_2064142 -WORKAROUND_2038923 WORKAROUND_1902691 +WORKAROUND_2038923 +WORKAROUND_2064142 +WORKAROUND_2077057 WORKAROUND_TRBE_OVERWRITE_FILL_MODE WORKAROUND_TSB_FLUSH_FAILURE WORKAROUND_TRBE_WRITE_OUT_OF_RANGE
arch/mips/kernel/setup.c +1 -1
@@ -803,7 +803,7 @@ early_param("coherentio", setcoherentio);static int __init setnocoherentio (char *str) { - dma_default_coherent = true; + dma_default_coherent = false;pr_info ("Software DMA cache coherency (command line)\n" );return 0 ; }
arch/mips/ralink/mt7621.c +23 -13
@@ -20,31 +20,41 @@#include "common.h" -static void *detect_magic__initdata = detect_memory_region; +#define MT7621_MEM_TEST_PATTERN 0xaa5555aa + +static u32 detect_magic__initdata ;phys_addr_t mips_cpc_default_phys_base (void ) {panic ("Cannot detect cpc address" ); } +static bool __init mt7621_addr_wraparound_test (phys_addr_t size) +{ +void *dm = (void *)KSEG1ADDR (&detect_magic); + +if (CPHYSADDR (dm + size) >=MT7621_LOWMEM_MAX_SIZE ) +return true; +__raw_writel (MT7621_MEM_TEST_PATTERN , dm); +if (__raw_readl (dm) !=__raw_readl (dm + size)) +return false; +__raw_writel (~MT7621_MEM_TEST_PATTERN , dm); +return __raw_readl (dm) ==__raw_readl (dm + size); +} +static void __init mt7621_memory_detect (void ) { -void *dm = &detect_magic;phys_addr_t size; -for (size =32 *SZ_1M ; size <256 *SZ_1M ; size <<=1 ) { -if (!__builtin_memcmp (dm, dm + size,sizeof (detect_magic))) -break ; +for (size =32 *SZ_1M ; size <=256 *SZ_1M ; size <<=1 ) { +if (mt7621_addr_wraparound_test (size)) { +memblock_add (MT7621_LOWMEM_BASE , size); +return ; + } } -if ((size ==256 *SZ_1M ) && - (CPHYSADDR (dm + size) <MT7621_LOWMEM_MAX_SIZE ) && -__builtin_memcmp (dm, dm + size,sizeof (detect_magic))) { -memblock_add (MT7621_LOWMEM_BASE ,MT7621_LOWMEM_MAX_SIZE ); -memblock_add (MT7621_HIGHMEM_BASE ,MT7621_HIGHMEM_SIZE ); - }else { -memblock_add (MT7621_LOWMEM_BASE , size); - } +memblock_add (MT7621_LOWMEM_BASE ,MT7621_LOWMEM_MAX_SIZE ); +memblock_add (MT7621_HIGHMEM_BASE ,MT7621_HIGHMEM_SIZE ); }void __init ralink_of_remap (void )
arch/riscv/mm/Makefile +3 -0
@@ -24,6 +24,9 @@ obj-$(CONFIG_KASAN) += kasan_init.o ifdef CONFIG_KASAN KASAN_SANITIZE_kasan_init.o := n KASAN_SANITIZE_init.o := n +ifdef CONFIG_DEBUG_VIRTUAL +KASAN_SANITIZE_physaddr.o := n +endif endif obj-$(CONFIG_DEBUG_VIRTUAL) += physaddr.o
arch/riscv/mm/kasan_init.c +1 -2
@@ -22,8 +22,7 @@ asmlinkage void __init kasan_early_init(void)for (i =0 ; i <PTRS_PER_PTE ; ++i)set_pte (kasan_early_shadow_pte + i, -mk_pte (virt_to_page (kasan_early_shadow_page), -PAGE_KERNEL )); +pfn_pte (virt_to_pfn (kasan_early_shadow_page),PAGE_KERNEL ));for (i =0 ; i <PTRS_PER_PMD ; ++i) set_pmd(kasan_early_shadow_pmd + i,
arch/s390/include/asm/extable.h +7 -2
@@ -69,8 +69,13 @@ static inline void swap_ex_entry_fixup(struct exception_table_entry *a, { a->fixup = b->fixup + delta; b->fixup = tmp.fixup - delta; - a->handler = b->handler + delta; - b->handler = tmp.handler - delta; + a->handler = b->handler; +if (a->handler) + a->handler += delta; + b->handler = tmp.handler; +if (b->handler) + b->handler -= delta; } +#define swap_ex_entry_fixup swap_ex_entry_fixup#endif
arch/s390/include/asm/ftrace.h +6 -4
@@ -47,15 +47,17 @@ struct ftrace_regs { static __always_inline struct pt_regs *arch_ftrace_get_regs(struct ftrace_regs *fregs) { -return &fregs->regs; +struct pt_regs *regs = &fregs->regs; + +if (test_pt_regs_flag (regs,PIF_FTRACE_FULL_REGS )) +return regs; +return NULL ; } static __always_inline void ftrace_instruction_pointer_set(struct ftrace_regs *fregs,unsigned long ip) { -struct pt_regs *regs =arch_ftrace_get_regs (fregs); - - regs->psw.addr = ip; + fregs->regs.psw.addr = ip; }/*
arch/s390/include/asm/ptrace.h +2 -0
@@ -15,11 +15,13 @@#define PIF_EXECVE_PGSTE_RESTART 1/* restart execve for PGSTE binaries */ #define PIF_SYSCALL_RET_SET 2/* return value was set via ptrace */ #define PIF_GUEST_FAULT 3/* indicates program check in sie64a */ +#define PIF_FTRACE_FULL_REGS 4/* all register contents valid (ftrace) */ #define _PIF_SYSCALL BIT(PIF_SYSCALL)#define _PIF_EXECVE_PGSTE_RESTART BIT(PIF_EXECVE_PGSTE_RESTART)#define _PIF_SYSCALL_RET_SET BIT(PIF_SYSCALL_RET_SET)#define _PIF_GUEST_FAULT BIT(PIF_GUEST_FAULT) +#define _PIF_FTRACE_FULL_REGS BIT(PIF_FTRACE_FULL_REGS)#ifndef __ASSEMBLY__
arch/s390/kernel/ftrace.c +36 -1
@@ -159,9 +159,38 @@ int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec)return 0 ; } +static struct ftrace_hotpatch_trampoline *ftrace_get_trampoline (struct dyn_ftrace *rec) +{ +struct ftrace_hotpatch_trampoline *trampoline; +struct ftrace_insn insn; +s64 disp; +u16 opc; + +if (copy_from_kernel_nofault (&insn, (void *)rec->ip,sizeof (insn))) +return ERR_PTR (-EFAULT ); + disp = (s64 )insn.disp *2 ; + trampoline = (void *)(rec->ip + disp); +if (get_kernel_nofault (opc, &trampoline->brasl_opc)) +return ERR_PTR (-EFAULT ); +if (opc !=0xc015 ) +return ERR_PTR (-EINVAL ); +return trampoline; +} +int ftrace_modify_call (struct dyn_ftrace *rec,unsigned long old_addr,unsigned long addr) { +struct ftrace_hotpatch_trampoline *trampoline; +u64 old; + + trampoline =ftrace_get_trampoline (rec); +if (IS_ERR (trampoline)) +return PTR_ERR (trampoline); +if (get_kernel_nofault (old, &trampoline->interceptor)) +return -EFAULT ; +if (old != old_addr) +return -EINVAL ; +s390_kernel_write (&trampoline->interceptor, &addr,sizeof (addr));return 0 ; }
@@ -188,6 +217,12 @@ static void brcl_enable(void *brcl)int ftrace_make_call (struct dyn_ftrace *rec,unsigned long addr) { +struct ftrace_hotpatch_trampoline *trampoline; + + trampoline =ftrace_get_trampoline (rec); +if (IS_ERR (trampoline)) +return PTR_ERR (trampoline); +s390_kernel_write (&trampoline->interceptor, &addr,sizeof (addr));brcl_enable ((void *)rec->ip);return 0 ; }
@@ -291,7 +326,7 @@ void kprobe_ftrace_handler(unsigned long ip, unsigned long parent_ip, regs =ftrace_get_regs (fregs); p =get_kprobe ((kprobe_opcode_t *)ip); -if (unlikely (!p) ||kprobe_disabled (p)) +if (!regs ||unlikely (!p) ||kprobe_disabled (p)) goto out;if (kprobe_running ()) {
arch/s390/kernel/mcount.S +9 -0
@@ -27,6 +27,7 @@ ENDPROC(ftrace_stub) #define STACK_PTREGS_GPRS (STACK_PTREGS + __PT_GPRS) #define STACK_PTREGS_PSW (STACK_PTREGS + __PT_PSW) #define STACK_PTREGS_ORIG_GPR2 (STACK_PTREGS + __PT_ORIG_GPR2) +#define STACK_PTREGS_FLAGS (STACK_PTREGS + __PT_FLAGS) #ifdef __PACK_STACK /* allocate just enough for r14, r15 and backchain */ #define TRACED_FUNC_FRAME_SIZE 24
@@ -57,6 +58,14 @@ ENDPROC(ftrace_stub) .if \allregs == 1 stg %r14,(STACK_PTREGS_PSW)(%r15) stosm (STACK_PTREGS_PSW)(%r15),0 +#ifdef CONFIG_HAVE_MARCH_Z10_FEATURES + mvghi STACK_PTREGS_FLAGS(%r15),_PIF_FTRACE_FULL_REGS +#else + lghi %r14,_PIF_FTRACE_FULL_REGS + stg %r14,STACK_PTREGS_FLAGS(%r15) +#endif + .else + xc STACK_PTREGS_FLAGS(8,%r15),STACK_PTREGS_FLAGS(%r15) .endif lg %r14,(__SF_GPRS+8*8)(%r1) # restore original return address
arch/s390/kernel/setup.c +2 -0
@@ -800,6 +800,8 @@ static void __init check_initrd(void)static void __init reserve_kernel (void ) {memblock_reserve (0 ,STARTUP_NORMAL_OFFSET ); +memblock_reserve (OLDMEM_BASE ,sizeof (unsigned long )); +memblock_reserve (OLDMEM_SIZE ,sizeof (unsigned long ));memblock_reserve (__amode31_base, __eamode31 - __samode31);memblock_reserve (__pa (sclp_early_sccb),EXT_SCCB_READ_SCP );memblock_reserve (__pa (_stext), _end - _stext);
arch/x86/kernel/kvmclock.c +3 -0
@@ -239,6 +239,9 @@ static void __init kvmclock_init_mem(void)static int __init kvm_setup_vsyscall_timeinfo (void ) { +if (!kvm_para_available ()) +return 0 ; +kvmclock_init_mem ();#ifdef CONFIG_X86_64
arch/x86/kvm/mmu/mmu.c +1 -1
@@ -3573,7 +3573,7 @@ static int mmu_alloc_shadow_roots(struct kvm_vcpu *vcpu) out_unlock:write_unlock (&vcpu->kvm->mmu_lock); -return 0 ; +return r; }static int mmu_alloc_special_roots (struct kvm_vcpu *vcpu)
arch/x86/kvm/x86.c +1 -0
@@ -4163,6 +4163,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)case KVM_CAP_SREGS2 :case KVM_CAP_EXIT_ON_EMULATION_FAILURE :case KVM_CAP_VCPU_ATTRIBUTES : +case KVM_CAP_ENABLE_CAP : r =1 ;break ;case KVM_CAP_EXIT_HYPERCALL :
block/blk-map.c +1 -1
@@ -446,7 +446,7 @@ static struct bio *bio_copy_kern(struct request_queue *q, void *data,if (bytes > len) bytes = len; - page =alloc_page (GFP_NOIO | gfp_mask); + page =alloc_page (GFP_NOIO | __GFP_ZERO | gfp_mask);if (!page) goto cleanup;
drivers/ata/pata_hpt37x.c +2 -2
@@ -964,14 +964,14 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id)if ((freq >>12 ) !=0xABCDE ) {int i; -u8 sr; +u16 sr;u32 total =0 ;pr_warn ("BIOS has not set timing clocks\n" );/* This is the process the HPT371 BIOS is reported to use */ for (i =0 ; i <128 ; i++) { -pci_read_config_byte (dev,0x78 , &sr); +pci_read_config_word (dev,0x78 , &sr); total += sr &0x1FF ;udelay (15 ); }
drivers/auxdisplay/lcd2s.c +10 -14
@@ -238,7 +238,7 @@ static int lcd2s_redefine_char(struct charlcd *lcd, char *esc)if (buf[1 ] >7 )return 1 ; - i =0 ; + i =2 ; shift =0 ; value =0 ;while (*esc && i <LCD2S_CHARACTER_SIZE +2 ) {
@@ -298,6 +298,10 @@ static int lcd2s_i2c_probe(struct i2c_client *i2c, I2C_FUNC_SMBUS_WRITE_BLOCK_DATA))return -EIO ; + lcd2s =devm_kzalloc (&i2c->dev,sizeof (*lcd2s),GFP_KERNEL ); +if (!lcd2s) +return -ENOMEM ; +/* Test, if the display is responding */ err =lcd2s_i2c_smbus_write_byte (i2c,LCD2S_CMD_DISPLAY_OFF );if (err <0 )
@@ -307,12 +311,6 @@ static int lcd2s_i2c_probe(struct i2c_client *i2c,if (!lcd)return -ENOMEM ; - lcd2s =kzalloc (sizeof (struct lcd2s_data ),GFP_KERNEL ); -if (!lcd2s) { - err = -ENOMEM ; - goto fail1; - } - lcd->drvdata = lcd2s; lcd2s->i2c = i2c; lcd2s->charlcd = lcd;
@@ -321,26 +319,24 @@ static int lcd2s_i2c_probe(struct i2c_client *i2c, err =device_property_read_u32 (&i2c->dev,"display-height-chars" , &lcd->height);if (err) - goto fail2; + goto fail1; err =device_property_read_u32 (&i2c->dev,"display-width-chars" , &lcd->width);if (err) - goto fail2; + goto fail1; lcd->ops = &lcd2s_ops; err =charlcd_register (lcd2s->charlcd);if (err) - goto fail2; + goto fail1;i2c_set_clientdata (i2c, lcd2s);return 0 ; -fail2: -kfree (lcd2s); fail1: -kfree (lcd); +charlcd_free (lcd2s->charlcd);return err; }
@@ -349,7 +345,7 @@ static int lcd2s_i2c_remove(struct i2c_client *i2c)struct lcd2s_data *lcd2s =i2c_get_clientdata (i2c);charlcd_unregister (lcd2s->charlcd); -kfree (lcd2s->charlcd); +charlcd_free (lcd2s->charlcd);return 0 ; }
drivers/block/loop.c +7 -1
@@ -79,6 +79,7 @@#include <linux/ioprio.h> #include <linux/blk-cgroup.h> #include <linux/sched/mm.h> +#include <linux/statfs.h> #include "loop.h"
@@ -774,8 +775,13 @@ static void loop_config_discard(struct loop_device *lo) granularity =0 ; }else { +struct kstatfs sbuf; + max_discard_sectors =UINT_MAX >>9 ; - granularity = inode->i_sb->s_blocksize; +if (!vfs_statfs (&file->f_path, &sbuf)) + granularity = sbuf.f_bsize; +else + max_discard_sectors =0 ; }if (max_discard_sectors) {
drivers/clocksource/timer-ti-dm-systimer.c +1 -2
@@ -241,8 +241,7 @@ static void __init dmtimer_systimer_assign_alwon(void)bool quirk_unreliable_oscillator = false;/* Quirk unreliable 32 KiHz oscillator with incomplete dts */ -if (of_machine_is_compatible ("ti,omap3-beagle-ab4" ) || -of_machine_is_compatible ("timll,omap3-devkit8000" )) { +if (of_machine_is_compatible ("ti,omap3-beagle-ab4" )) { quirk_unreliable_oscillator = true; counter_32k = -ENODEV ; }
drivers/dma/sh/shdma-base.c +3 -1
@@ -115,8 +115,10 @@ static dma_cookie_t shdma_tx_submit(struct dma_async_tx_descriptor *tx) ret =pm_runtime_get (schan->dev);spin_unlock_irq (&schan->chan_lock); -if (ret <0 ) +if (ret <0 ) {dev_err (schan->dev,"%s(): GET = %d\n" , __func__, ret); +pm_runtime_put (schan->dev); + }pm_runtime_barrier (schan->dev);
drivers/firmware/arm_scmi/driver.c +1 -1
@@ -2112,7 +2112,7 @@ static void __exit scmi_driver_exit(void) }module_exit (scmi_driver_exit); -MODULE_ALIAS ("platform: arm-scmi" ); +MODULE_ALIAS ("platform:arm-scmi" );MODULE_AUTHOR ("Sudeep Holla <[email protected]>" );MODULE_DESCRIPTION ("ARM SCMI protocol driver" );MODULE_LICENSE ("GPL v2" );
drivers/firmware/efi/libstub/riscv-stub.c +10 -7
@@ -25,7 +25,7 @@ typedef void __noreturn (*jump_kernel_func)(unsigned int, unsigned long);static u32 hartid; -static u32 get_boot_hartid_from_fdt (void ) +static int get_boot_hartid_from_fdt (void ) {const void *fdt;int chosen_node, len;
@@ -33,23 +33,26 @@ static u32 get_boot_hartid_from_fdt(void) fdt =get_efi_config_table (DEVICE_TREE_GUID );if (!fdt) -return U32_MAX ; +return -EINVAL ; chosen_node =fdt_path_offset (fdt,"/chosen" );if (chosen_node <0 ) -return U32_MAX ; +return -EINVAL ; prop =fdt_getprop ((void *)fdt, chosen_node,"boot-hartid" , &len);if (!prop || len !=sizeof (u32)) -return U32_MAX ; +return -EINVAL ; -return fdt32_to_cpu (*prop); + hartid =fdt32_to_cpu (*prop); +return 0 ; }efi_status_t check_platform_features (void ) { - hartid =get_boot_hartid_from_fdt (); -if (hartid ==U32_MAX ) { +int ret; + + ret =get_boot_hartid_from_fdt (); +if (ret) {efi_err ("/chosen/boot-hartid missing or invalid!\n" );return EFI_UNSUPPORTED ; }
drivers/firmware/efi/vars.c +4 -1
@@ -742,6 +742,7 @@ int efivar_entry_set_safe(efi_char16_t *name, efi_guid_t vendor, u32 attributes, {const struct efivar_operations *ops;efi_status_t status; +unsigned long varsize;if (!__efivars)return -EINVAL ;
@@ -764,15 +765,17 @@ int efivar_entry_set_safe(efi_char16_t *name, efi_guid_t vendor, u32 attributes,return efivar_entry_set_nonblocking (name, vendor, attributes, size, data); + varsize = size +ucs2_strsize (name,1024 );if (!block) {if (down_trylock (&efivars_lock))return -EBUSY ; + status =check_var_size_nonblocking (attributes, varsize); }else {if (down_interruptible (&efivars_lock))return -EINTR ; + status =check_var_size (attributes, varsize); } - status =check_var_size (attributes, size +ucs2_strsize (name,1024 ));if (status !=EFI_SUCCESS ) {up (&efivars_lock);return -ENOSPC ;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +8 -2
@@ -768,11 +768,17 @@ int amdgpu_vm_validate_pt_bos(struct amdgpu_device *adev, struct amdgpu_vm *vm,* Check if all VM PDs/PTs are ready for updates * * Returns: -* True if eviction list is empty. +* True if VM is not evicting. */ bool amdgpu_vm_ready (struct amdgpu_vm *vm) { -return list_empty (&vm->evicted); +bool ret; + +amdgpu_vm_eviction_lock (vm); + ret = !vm->evicting; +amdgpu_vm_eviction_unlock (vm); + +return ret &&list_empty (&vm->evicted); }/**
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +3 -1
@@ -4454,7 +4454,9 @@ bool dp_retrieve_lttpr_cap(struct dc_link *link) lttpr_dpcd_data, sizeof(lttpr_dpcd_data));if (status !=DC_OK ) { -dm_error ("%s: Read LTTPR caps data failed.\n" , __func__); +#if defined(CONFIG_DRM_AMD_DC_DCN ) +DC_LOG_DP2 ("%s: Read LTTPR caps data failed.\n" , __func__); +#endif return false; }
drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c +21 -5
@@ -1261,21 +1261,37 @@ static int sienna_cichlid_populate_umd_state_clk(struct smu_context *smu) &dpm_context->dpm_tables.soc_table;struct smu_umd_pstate_table *pstate_table = &smu->pstate_table; +struct amdgpu_device *adev = smu->adev; pstate_table->gfxclk_pstate.min = gfx_table->min; pstate_table->gfxclk_pstate.peak = gfx_table->max; -if (gfx_table->max >=SIENNA_CICHLID_UMD_PSTATE_PROFILING_GFXCLK ) - pstate_table->gfxclk_pstate.standard =SIENNA_CICHLID_UMD_PSTATE_PROFILING_GFXCLK ; pstate_table->uclk_pstate.min = mem_table->min; pstate_table->uclk_pstate.peak = mem_table->max; -if (mem_table->max >=SIENNA_CICHLID_UMD_PSTATE_PROFILING_MEMCLK ) - pstate_table->uclk_pstate.standard =SIENNA_CICHLID_UMD_PSTATE_PROFILING_MEMCLK ; pstate_table->socclk_pstate.min = soc_table->min; pstate_table->socclk_pstate.peak = soc_table->max; -if (soc_table->max >=SIENNA_CICHLID_UMD_PSTATE_PROFILING_SOCCLK ) + +switch (adev->asic_type) { +case CHIP_SIENNA_CICHLID : +case CHIP_NAVY_FLOUNDER : + pstate_table->gfxclk_pstate.standard =SIENNA_CICHLID_UMD_PSTATE_PROFILING_GFXCLK ; + pstate_table->uclk_pstate.standard =SIENNA_CICHLID_UMD_PSTATE_PROFILING_MEMCLK ; pstate_table->socclk_pstate.standard =SIENNA_CICHLID_UMD_PSTATE_PROFILING_SOCCLK ; +break ; +case CHIP_DIMGREY_CAVEFISH : + pstate_table->gfxclk_pstate.standard =DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_GFXCLK ; + pstate_table->uclk_pstate.standard =DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_MEMCLK ; + pstate_table->socclk_pstate.standard =DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_SOCCLK ; +break ; +case CHIP_BEIGE_GOBY : + pstate_table->gfxclk_pstate.standard =BEIGE_GOBY_UMD_PSTATE_PROFILING_GFXCLK ; + pstate_table->uclk_pstate.standard =BEIGE_GOBY_UMD_PSTATE_PROFILING_MEMCLK ; + pstate_table->socclk_pstate.standard =BEIGE_GOBY_UMD_PSTATE_PROFILING_SOCCLK ; +break ; +default : +break ; + }return 0 ; }
drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.h +8 -0
@@ -33,6 +33,14 @@ typedef enum {#define SIENNA_CICHLID_UMD_PSTATE_PROFILING_SOCCLK 960#define SIENNA_CICHLID_UMD_PSTATE_PROFILING_MEMCLK 1000 +#define DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_GFXCLK 1950 +#define DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_SOCCLK 960 +#define DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_MEMCLK 676 + +#define BEIGE_GOBY_UMD_PSTATE_PROFILING_GFXCLK 2200 +#define BEIGE_GOBY_UMD_PSTATE_PROFILING_SOCCLK 960 +#define BEIGE_GOBY_UMD_PSTATE_PROFILING_MEMCLK 1000 +extern void sienna_cichlid_set_ppt_funcs (struct smu_context *smu);#endif
drivers/gpu/drm/bridge/ti-sn65dsi86.c +3 -2
@@ -1474,6 +1474,7 @@ static inline void ti_sn_gpio_unregister(void) {}static void ti_sn65dsi86_runtime_disable (void *data) { +pm_runtime_dont_use_autosuspend (data);pm_runtime_disable (data); }
@@ -1533,11 +1534,11 @@ static int ti_sn65dsi86_probe(struct i2c_client *client, "failed to get reference clock\n");pm_runtime_enable (dev); +pm_runtime_set_autosuspend_delay (pdata->dev,500 ); +pm_runtime_use_autosuspend (pdata->dev); ret =devm_add_action_or_reset (dev, ti_sn65dsi86_runtime_disable, dev);if (ret)return ret; -pm_runtime_set_autosuspend_delay (pdata->dev,500 ); -pm_runtime_use_autosuspend (pdata->dev);ti_sn65dsi86_debugfs_init (pdata);
drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c +1 -1
@@ -133,7 +133,7 @@ static int guc_action_slpc_unset_param(struct intel_guc *guc, u8 id) {u32 request[] = {GUC_ACTION_HOST2GUC_PC_SLPC_REQUEST , -SLPC_EVENT (SLPC_EVENT_PARAMETER_UNSET ,2 ), +SLPC_EVENT (SLPC_EVENT_PARAMETER_UNSET ,1 ), id, };
drivers/gpu/drm/i915/intel_pch.c +1 -1
@@ -108,6 +108,7 @@ intel_pch_type(const struct drm_i915_private *dev_priv, unsigned short id)/* Comet Lake V PCH is based on KBP, which is SPT compatible */ return PCH_SPT ;case INTEL_PCH_ICP_DEVICE_ID_TYPE : +case INTEL_PCH_ICP2_DEVICE_ID_TYPE :drm_dbg_kms (&dev_priv->drm,"Found Ice Lake PCH\n" );drm_WARN_ON (&dev_priv->drm, !IS_ICELAKE (dev_priv));return PCH_ICP ;
@@ -123,7 +124,6 @@ intel_pch_type(const struct drm_i915_private *dev_priv, unsigned short id) !IS_GEN9_BC(dev_priv));return PCH_TGP ;case INTEL_PCH_JSP_DEVICE_ID_TYPE : -case INTEL_PCH_JSP2_DEVICE_ID_TYPE :drm_dbg_kms (&dev_priv->drm,"Found Jasper Lake PCH\n" );drm_WARN_ON (&dev_priv->drm, !IS_JSL_EHL (dev_priv));return PCH_JSP ;
drivers/gpu/drm/i915/intel_pch.h +1 -1
@@ -50,11 +50,11 @@ enum intel_pch {#define INTEL_PCH_CMP2_DEVICE_ID_TYPE 0x0680#define INTEL_PCH_CMP_V_DEVICE_ID_TYPE 0xA380#define INTEL_PCH_ICP_DEVICE_ID_TYPE 0x3480 +#define INTEL_PCH_ICP2_DEVICE_ID_TYPE 0x3880#define INTEL_PCH_MCC_DEVICE_ID_TYPE 0x4B00#define INTEL_PCH_TGP_DEVICE_ID_TYPE 0xA080#define INTEL_PCH_TGP2_DEVICE_ID_TYPE 0x4380#define INTEL_PCH_JSP_DEVICE_ID_TYPE 0x4D80 -#define INTEL_PCH_JSP2_DEVICE_ID_TYPE 0x3880#define INTEL_PCH_ADP_DEVICE_ID_TYPE 0x7A80#define INTEL_PCH_ADP2_DEVICE_ID_TYPE 0x5180#define INTEL_PCH_P2X_DEVICE_ID_TYPE 0x7100
drivers/hid/amd-sfh-hid/amd_sfh_pcie.c +68 -1
113 lines not on this page · raw message
drivers/hid/amd-sfh-hid/amd_sfh_pcie.h +2 -0
@@ -141,5 +141,7 @@ struct amd_mp2_ops {void (*stop)(struct amd_mp2_dev *privdata,u16 sensor_idx);void (*stop_all)(struct amd_mp2_dev *privdata);int (*response)(struct amd_mp2_dev *mp2,u8 sid,u32 sensor_sts); +void (*clear_intr)(struct amd_mp2_dev *privdata); + int (*init_intr)(struct amd_mp2_dev *privdata); };#endif
drivers/hid/hid-debug.c +4 -1
@@ -825,7 +825,9 @@ static const char *keys[KEY_MAX + 1] = { [KEY_F22] = "F22", [KEY_F23] = "F23", [KEY_F24] = "F24", [KEY_PLAYCD] = "PlayCD", [KEY_PAUSECD] = "PauseCD", [KEY_PROG3] = "Prog3", - [KEY_PROG4] = "Prog4", [KEY_SUSPEND] = "Suspend", + [KEY_PROG4] = "Prog4", + [KEY_ALL_APPLICATIONS] = "AllApplications", + [KEY_SUSPEND] = "Suspend", [KEY_CLOSE] = "Close", [KEY_PLAY] = "Play", [KEY_FASTFORWARD] = "FastForward", [KEY_BASSBOOST] = "BassBoost", [KEY_PRINT] = "Print", [KEY_HP] = "HP",
@@ -934,6 +936,7 @@ static const char *keys[KEY_MAX + 1] = { [KEY_ASSISTANT] = "Assistant", [KEY_KBD_LAYOUT_NEXT] = "KbdLayoutNext", [KEY_EMOJI_PICKER] = "EmojiPicker", + [KEY_DICTATE] = "Dictate", [KEY_BRIGHTNESS_MIN] = "BrightnessMin", [KEY_BRIGHTNESS_MAX] = "BrightnessMax", [KEY_BRIGHTNESS_AUTO] = "BrightnessAuto",
drivers/hid/hid-input.c +3 -0
@@ -994,6 +994,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fielcase 0x0cd :map_key_clear (KEY_PLAYPAUSE );break ;case 0x0cf :map_key_clear (KEY_VOICECOMMAND );break ; +case 0x0d8 :map_key_clear (KEY_DICTATE );break ;case 0x0d9 :map_key_clear (KEY_EMOJI_PICKER );break ;case 0x0e0 :map_abs_clear (ABS_VOLUME );break ;
@@ -1085,6 +1086,8 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fielcase 0x29d :map_key_clear (KEY_KBD_LAYOUT_NEXT );break ; +case 0x2a2 :map_key_clear (KEY_ALL_APPLICATIONS );break ; +case 0x2c7 :map_key_clear (KEY_KBDINPUTASSIST_PREV );break ;case 0x2c8 :map_key_clear (KEY_KBDINPUTASSIST_NEXT );break ;case 0x2c9 :map_key_clear (KEY_KBDINPUTASSIST_PREVGROUP );break ;
drivers/i2c/busses/Kconfig +3 -3
@@ -488,7 +488,7 @@ config I2C_BRCMSTB config I2C_CADENCE tristate "Cadence I2C Controller" - depends on ARCH_ZYNQ || ARM64 || XTENSA + depends on ARCH_ZYNQ || ARM64 || XTENSA || COMPILE_TEST help Say yes here to select Cadence I2C Host Controller. This controller is e.g. used by Xilinx Zynq.
@@ -680,7 +680,7 @@ config I2C_IMG config I2C_IMX tristate "IMX I2C interface" - depends on ARCH_MXC || ARCH_LAYERSCAPE || COLDFIRE + depends on ARCH_MXC || ARCH_LAYERSCAPE || COLDFIRE || COMPILE_TEST select I2C_SLAVE help Say Y here if you want to use the IIC bus controller on
@@ -935,7 +935,7 @@ config I2C_QCOM_GENI config I2C_QUP tristate "Qualcomm QUP based I2C controller" - depends on ARCH_QCOM + depends on ARCH_QCOM || COMPILE_TEST help If you say yes to this option, support will be included for the built-in I2C interface on the Qualcomm SoCs.
drivers/i2c/busses/i2c-bcm2835.c +11 -0
@@ -23,6 +23,11 @@#define BCM2835_I2C_FIFO 0x10#define BCM2835_I2C_DIV 0x14#define BCM2835_I2C_DEL 0x18 +/* +* 16-bit field for the number of SCL cycles to wait after rising SCL +* before deciding the slave is not responding. 0 disables the +* timeout detection. +*/ #define BCM2835_I2C_CLKT 0x1c#define BCM2835_I2C_C_READ BIT(0)
@@ -477,6 +482,12 @@ static int bcm2835_i2c_probe(struct platform_device *pdev) adap->dev.of_node = pdev->dev.of_node; adap->quirks =of_device_get_match_data (&pdev->dev); +/* +* Disable the hardware clock stretching timeout. SMBUS +* specifies a limit for how long the device can stretch the +* clock, but core I2C doesn't. +*/ +bcm2835_i2c_writel (i2c_dev,BCM2835_I2C_CLKT ,0 );bcm2835_i2c_writel (i2c_dev,BCM2835_I2C_C ,0 ); ret =i2c_add_adapter (adap);
drivers/input/input.c +6 -0
@@ -2285,6 +2285,12 @@ int input_register_device(struct input_dev *dev)/* KEY_RESERVED is not supposed to be transmitted to userspace. */ __clear_bit (KEY_RESERVED , dev->keybit); +/* Buttonpads should not map BTN_RIGHT and/or BTN_MIDDLE. */ +if (test_bit (INPUT_PROP_BUTTONPAD , dev->propbit)) { +__clear_bit (BTN_RIGHT , dev->keybit); +__clear_bit (BTN_MIDDLE , dev->keybit); + } +/* Make sure that bitmasks not mentioned in dev->evbit are clean. */ input_cleanse_bitmasks (dev);
drivers/input/keyboard/Kconfig +1 -1
@@ -556,7 +556,7 @@ config KEYBOARD_PMIC8XXX config KEYBOARD_SAMSUNG tristate "Samsung keypad support" - depends on HAVE_CLK + depends on HAS_IOMEM && HAVE_CLK select INPUT_MATRIXKMAP help Say Y here if you want to use the keypad on your Samsung mobile
drivers/input/mouse/elan_i2c_core.c +23 -41
99 lines not on this page · raw message
drivers/iommu/amd/amd_iommu.h +1 -0
@@ -14,6 +14,7 @@extern irqreturn_t amd_iommu_int_thread (int irq,void *data);extern irqreturn_t amd_iommu_int_handler (int irq,void *data);extern void amd_iommu_apply_erratum_63 (u16 devid); +extern void amd_iommu_restart_event_logging (struct amd_iommu *iommu);extern void amd_iommu_reset_cmd_buffer (struct amd_iommu *iommu);extern int amd_iommu_init_devices (void );extern void amd_iommu_uninit_devices (void );
drivers/iommu/amd/amd_iommu_types.h +1 -0
@@ -110,6 +110,7 @@#define PASID_MASK 0x0000ffff/* MMIO status bits */ +#define MMIO_STATUS_EVT_OVERFLOW_INT_MASK (1 << 0)#define MMIO_STATUS_EVT_INT_MASK (1 << 1)#define MMIO_STATUS_COM_WAIT_INT_MASK (1 << 2)#define MMIO_STATUS_PPR_INT_MASK (1 << 6)
drivers/iommu/amd/init.c +10 -0
@@ -657,6 +657,16 @@ static int __init alloc_command_buffer(struct amd_iommu *iommu)return iommu->cmd_buf ?0 : -ENOMEM ; } +/* +* This function restarts event logging in case the IOMMU experienced +* an event log buffer overflow. +*/ +void amd_iommu_restart_event_logging (struct amd_iommu *iommu) +{ +iommu_feature_disable (iommu,CONTROL_EVT_LOG_EN ); +iommu_feature_enable (iommu,CONTROL_EVT_LOG_EN ); +} +/* * This function resets the command buffer if the IOMMU stopped fetching * commands from it.
drivers/iommu/amd/io_pgtable.c +6 -6
@@ -519,12 +519,6 @@ static void v1_free_pgtable(struct io_pgtable *iop) dom = container_of(pgtable, struct protection_domain, iop); -/* Update data structure */ -amd_iommu_domain_clr_pt_root (dom); - -/* Make changes visible to IOMMUs */ -amd_iommu_domain_update (dom); -/* Page-table is not visible to IOMMU anymore, so free it */ BUG_ON (pgtable->mode <PAGE_MODE_NONE || pgtable->mode >PAGE_MODE_6_LEVEL );
@@ -532,6 +526,12 @@ static void v1_free_pgtable(struct io_pgtable *iop) root = (unsigned long )pgtable->root; freelist =free_sub_pt (root, pgtable->mode, freelist); +/* Update data structure */ +amd_iommu_domain_clr_pt_root (dom); + +/* Make changes visible to IOMMUs */ +amd_iommu_domain_update (dom); +free_page_list (freelist); }
drivers/iommu/amd/iommu.c +8 -2
@@ -764,7 +764,8 @@ amd_iommu_set_pci_msi_domain(struct device *dev, struct amd_iommu *iommu) { }#endif /* !CONFIG_IRQ_REMAP */ #define AMD_IOMMU_INT_MASK \ - (MMIO_STATUS_EVT_INT_MASK | \ + (MMIO_STATUS_EVT_OVERFLOW_INT_MASK | \ + MMIO_STATUS_EVT_INT_MASK | \ MMIO_STATUS_PPR_INT_MASK | \ MMIO_STATUS_GALOG_INT_MASK)
@@ -774,7 +775,7 @@ irqreturn_t amd_iommu_int_thread(int irq, void *data)u32 status =readl (iommu->mmio_base +MMIO_STATUS_OFFSET );while (status &AMD_IOMMU_INT_MASK ) { -/* Enable EVT and PPR and GA interrupts again */ +/* Enable interrupt sources again */ writel (AMD_IOMMU_INT_MASK , iommu->mmio_base +MMIO_STATUS_OFFSET );
@@ -795,6 +796,11 @@ irqreturn_t amd_iommu_int_thread(int irq, void *data) }#endif +if (status &MMIO_STATUS_EVT_OVERFLOW_INT_MASK ) { +pr_info_ratelimited ("IOMMU event log overflow\n" ); +amd_iommu_restart_event_logging (iommu); + } +/* * Hardware bug: ERBT1312 * When re-enabling interrupt (by writing 1
drivers/iommu/intel/iommu.c +1 -1
@@ -2773,7 +2773,7 @@ static struct dmar_domain *dmar_insert_one_dev_info(struct intel_iommu *iommu,spin_unlock_irqrestore (&device_domain_lock, flags);/* PASID table is mandatory for a PCI device in scalable mode. */ -if (dev &&dev_is_pci (dev) &&sm_supported (iommu)) { +if (sm_supported (iommu) && !dev_is_real_dma_subdevice (dev)) { ret =intel_pasid_alloc_table (dev);if (ret) {dev_err (dev,"PASID table allocation failed\n" );
drivers/iommu/tegra-smmu.c +3 -1
@@ -808,8 +808,10 @@ static struct tegra_smmu *tegra_smmu_find(struct device_node *np)return NULL ; mc =platform_get_drvdata (pdev); -if (!mc) +if (!mc) { +put_device (&pdev->dev);return NULL ; + }return mc->smmu; }
drivers/net/arcnet/com20020-pci.c +3 -0
@@ -138,6 +138,9 @@ static int com20020pci_probe(struct pci_dev *pdev,return -ENOMEM ; ci = (struct com20020_pci_card_info *)id->driver_data; +if (!ci) +return -EINVAL ; + priv->ci = ci; mm = &ci->misc_map;
drivers/net/can/usb/etas_es58x/es58x_core.c +5 -4
@@ -1787,7 +1787,7 @@ static int es58x_open(struct net_device *netdev)struct es58x_device *es58x_dev =es58x_priv (netdev)->es58x_dev;int ret; -if (atomic_inc_return (&es58x_dev->opened_channel_cnt) ==1 ) { +if (!es58x_dev->opened_channel_cnt) { ret =es58x_alloc_rx_urbs (es58x_dev);if (ret)return ret;
@@ -1805,12 +1805,13 @@ static int es58x_open(struct net_device *netdev)if (ret) goto free_urbs; + es58x_dev->opened_channel_cnt++;netif_start_queue (netdev);return ret; free_urbs: -if (atomic_dec_and_test (&es58x_dev->opened_channel_cnt)) +if (!es58x_dev->opened_channel_cnt)es58x_free_urbs (es58x_dev);netdev_err (netdev,"%s: Could not open the network device: %pe\n" , __func__,ERR_PTR (ret));
@@ -1845,7 +1846,8 @@ static int es58x_stop(struct net_device *netdev)es58x_flush_pending_tx_msg (netdev); -if (atomic_dec_and_test (&es58x_dev->opened_channel_cnt)) + es58x_dev->opened_channel_cnt--; +if (!es58x_dev->opened_channel_cnt)es58x_free_urbs (es58x_dev);return 0 ;
@@ -2214,7 +2216,6 @@ static struct es58x_device *es58x_init_es58x_dev(struct usb_interface *intf,init_usb_anchor (&es58x_dev->tx_urbs_idle);init_usb_anchor (&es58x_dev->tx_urbs_busy);atomic_set (&es58x_dev->tx_urbs_idle_cnt,0 ); -atomic_set (&es58x_dev->opened_channel_cnt,0 );usb_set_intfdata (intf, es58x_dev); es58x_dev->rx_pipe = usb_rcvbulkpipe(es58x_dev->udev,
drivers/net/can/usb/etas_es58x/es58x_core.h +5 -3
@@ -373,8 +373,6 @@ struct es58x_operators {* queue wake/stop logic should prevent this URB from getting * empty. Please refer to es58x_get_tx_urb() for more details. * @tx_urbs_idle_cnt: number of urbs in @tx_urbs_idle. -* @opened_channel_cnt: number of channels opened (c.f. es58x_open() -* and es58x_stop()). * @ktime_req_ns: kernel timestamp when es58x_set_realtime_diff_ns() * was called. * @realtime_diff_ns: difference in nanoseconds between the clocks of
@@ -384,6 +382,10 @@ struct es58x_operators {* in RX branches. * @rx_max_packet_size: Maximum length of bulk-in URB. * @num_can_ch: Number of CAN channel (i.e. number of elements of @netdev). +* @opened_channel_cnt: number of channels opened. Free of race +* conditions because its two users (net_device_ops:ndo_open() +* and net_device_ops:ndo_close()) guarantee that the network +* stack big kernel lock (a.k.a. rtnl_mutex) is being hold. * @rx_cmd_buf_len: Length of @rx_cmd_buf. * @rx_cmd_buf: The device might split the URB commands in an * arbitrary amount of pieces. This buffer is used to concatenate
@@ -406,7 +408,6 @@ struct es58x_device {struct usb_anchor tx_urbs_busy;struct usb_anchor tx_urbs_idle;atomic_t tx_urbs_idle_cnt; -atomic_t opened_channel_cnt;u64 ktime_req_ns;s64 realtime_diff_ns;
@@ -415,6 +416,7 @@ struct es58x_device {u16 rx_max_packet_size;u8 num_can_ch; +u8 opened_channel_cnt;u16 rx_cmd_buf_len;union es58x_urb_cmd rx_cmd_buf;
drivers/net/can/usb/gs_usb.c +5 -5
@@ -191,8 +191,8 @@ struct gs_can {struct gs_usb {struct gs_can *canch[GS_MAX_INTF ];struct usb_anchor rx_submitted; -atomic_t active_channels;struct usb_device *udev; +u8 active_channels; };/* 'allocate' a tx context.
@@ -590,7 +590,7 @@ static int gs_can_open(struct net_device *netdev)if (rc)return rc; -if (atomic_add_return (1 , &parent->active_channels) ==1 ) { +if (!parent->active_channels) {for (i =0 ; i <GS_MAX_RX_URBS ; i++) {struct urb *urb;u8 *buf;
@@ -691,6 +691,7 @@ static int gs_can_open(struct net_device *netdev) dev->can.state =CAN_STATE_ERROR_ACTIVE ; + parent->active_channels++;if (!(dev->can.ctrlmode &CAN_CTRLMODE_LISTENONLY ))netif_start_queue (netdev);
@@ -706,7 +707,8 @@ static int gs_can_close(struct net_device *netdev)netif_stop_queue (netdev);/* Stop polling */ -if (atomic_dec_and_test (&parent->active_channels)) + parent->active_channels--; +if (!parent->active_channels)usb_kill_anchored_urbs (&parent->rx_submitted);/* Stop sending URBs */
@@ -985,8 +987,6 @@ static int gs_usb_probe(struct usb_interface *intf,init_usb_anchor (&dev->rx_submitted); -atomic_set (&dev->active_channels,0 ); -usb_set_intfdata (intf, dev); dev->udev =interface_to_usbdev (intf);
drivers/net/dsa/microchip/ksz_common.c +23 -3
@@ -26,7 +26,7 @@ void ksz_update_port_member(struct ksz_device *dev, int port)struct dsa_switch *ds = dev->ds;u8 port_member =0 , cpu_port;const struct dsa_port *dp; -int i; +int i, j;if (!dsa_is_user_port (ds, port))return ;
@@ -45,13 +45,33 @@ void ksz_update_port_member(struct ksz_device *dev, int port)continue ;if (!dp->bridge_dev || dp->bridge_dev != other_dp->bridge_dev)continue ; +if (other_p->stp_state !=BR_STATE_FORWARDING ) +continue ; -if (other_p->stp_state ==BR_STATE_FORWARDING && - p->stp_state ==BR_STATE_FORWARDING ) { +if (p->stp_state ==BR_STATE_FORWARDING ) { val |=BIT (port); port_member |=BIT (i); } +/* Retain port [i]'s relationship to other ports than [port] */ +for (j =0 ; j < ds->num_ports; j++) { +const struct dsa_port *third_dp; +struct ksz_port *third_p; + +if (j == i) +continue ; +if (j == port) +continue ; +if (!dsa_is_user_port (ds, j)) +continue ; + third_p = &dev->ports[j]; +if (third_p->stp_state !=BR_STATE_FORWARDING ) +continue ; + third_dp =dsa_to_port (ds, j); +if (third_dp->bridge_dev == dp->bridge_dev) + val |=BIT (j); + } + dev->dev_ops->cfg_port_member (dev, i, val | cpu_port); }
drivers/net/ethernet/chelsio/cxgb3/t3_hw.c +2 -0
@@ -3613,6 +3613,8 @@ int t3_prep_adapter(struct adapter *adapter, const struct adapter_info *ai, MAC_STATS_ACCUM_SECS : (MAC_STATS_ACCUM_SECS *10 ); adapter->params.pci.vpd_cap_addr =pci_find_capability (adapter->pdev,PCI_CAP_ID_VPD ); +if (!adapter->params.pci.vpd_cap_addr) +return -ENODEV ; ret =get_vpd_params (adapter, &adapter->params.vpd);if (ret <0 )return ret;
drivers/net/ethernet/ibm/ibmvnic.c +189 -58
523 lines not on this page · raw message
drivers/net/ethernet/ibm/ibmvnic.h +1 -0
@@ -933,6 +933,7 @@ struct ibmvnic_adapter {struct ibmvnic_tx_pool *tx_pool;struct ibmvnic_tx_pool *tso_pool; +struct completion probe_done;struct completion init_done;int init_done_rc;
drivers/net/ethernet/intel/e1000e/hw.h +1 -0
@@ -630,6 +630,7 @@ struct e1000_phy_info {bool disable_polarity_correction;bool is_mdix;bool polarity_correction; +bool reset_disable;bool speed_downgraded;bool autoneg_wait_to_complete; };
drivers/net/ethernet/intel/e1000e/ich8lan.c +6 -2
@@ -2050,6 +2050,10 @@ static s32 e1000_check_reset_block_ich8lan(struct e1000_hw *hw)bool blocked = false;int i =0 ; +/* Check the PHY (LCD) reset flag */ +if (hw->phy.reset_disable) +return true; +while ((blocked = !(er32 (FWSM ) &E1000_ICH_FWSM_RSPCIPHY )) && (i++ <30 ))usleep_range (10000 ,11000 );
@@ -4136,9 +4140,9 @@ static s32 e1000_validate_nvm_checksum_ich8lan(struct e1000_hw *hw)return ret_val;if (!(data & valid_csum_mask)) { -e_dbg ("NVM Checksum Invalid\n" ); +e_dbg ("NVM Checksum valid bit not set\n" ); -if (hw->mac.type < e1000_pch_cnp) { +if (hw->mac.type < e1000_pch_tgp) { data |= valid_csum_mask; ret_val =e1000_write_nvm (hw, word,1 , &data);if (ret_val)
drivers/net/ethernet/intel/e1000e/ich8lan.h +1 -0
@@ -271,6 +271,7 @@#define I217_CGFREG_ENABLE_MTA_RESET 0x0002#define I217_MEMPWR PHY_REG(772, 26)#define I217_MEMPWR_DISABLE_SMB_RELEASE 0x0010 +#define I217_MEMPWR_MOEM 0x1000/* Receive Address Initial CRC Calculation */ #define E1000_PCH_RAICC (_n) (0x05F50 + ((_n) * 4))
drivers/net/ethernet/intel/e1000e/netdev.c +26 -0
@@ -6991,8 +6991,21 @@ static __maybe_unused int e1000e_pm_suspend(struct device *dev)struct net_device *netdev =pci_get_drvdata (to_pci_dev (dev));struct e1000_adapter *adapter =netdev_priv (netdev);struct pci_dev *pdev =to_pci_dev (dev); +struct e1000_hw *hw = &adapter->hw; +u16 phy_data;int rc; +if (er32 (FWSM ) &E1000_ICH_FWSM_FW_VALID && + hw->mac.type >= e1000_pch_adp) { +/* Mask OEM Bits / Gig Disable / Restart AN (772_26[12] = 1) */ +e1e_rphy (hw,I217_MEMPWR , &phy_data); + phy_data |=I217_MEMPWR_MOEM ; +e1e_wphy (hw,I217_MEMPWR , phy_data); + +/* Disable LCD reset */ + hw->phy.reset_disable = true; + } +e1000e_flush_lpic (pdev);e1000e_pm_freeze (dev);
@@ -7014,6 +7027,8 @@ static __maybe_unused int e1000e_pm_resume(struct device *dev)struct net_device *netdev =pci_get_drvdata (to_pci_dev (dev));struct e1000_adapter *adapter =netdev_priv (netdev);struct pci_dev *pdev =to_pci_dev (dev); +struct e1000_hw *hw = &adapter->hw; +u16 phy_data;int rc;/* Introduce S0ix implementation */
@@ -7024,6 +7039,17 @@ static __maybe_unused int e1000e_pm_resume(struct device *dev)if (rc)return rc; +if (er32 (FWSM ) &E1000_ICH_FWSM_FW_VALID && + hw->mac.type >= e1000_pch_adp) { +/* Unmask OEM Bits / Gig Disable / Restart AN 772_26[12] = 0 */ +e1e_rphy (hw,I217_MEMPWR , &phy_data); + phy_data &= ~I217_MEMPWR_MOEM ; +e1e_wphy (hw,I217_MEMPWR , phy_data); + +/* Enable LCD reset */ + hw->phy.reset_disable = false; + } +return e1000e_pm_thaw (dev); }
drivers/net/ethernet/intel/iavf/iavf.h +5 -1
@@ -188,6 +188,10 @@ enum iavf_state_t { __IAVF_RUNNING, /* opened, working */ }; +enum iavf_critical_section_t { + __IAVF_IN_REMOVE_TASK,/* device being removed */ +}; +#define IAVF_CLOUD_FIELD_OMAC 0x01#define IAVF_CLOUD_FIELD_IMAC 0x02#define IAVF_CLOUD_FIELD_IVLAN 0x04
@@ -233,7 +237,6 @@ struct iavf_adapter {struct list_head mac_filter_list;struct mutex crit_lock;struct mutex client_lock; -struct mutex remove_lock;/* Lock to protect accesses to MAC and VLAN lists */ spinlock_t mac_vlan_list_lock;char misc_vector_name[IFNAMSIZ +9 ];
@@ -271,6 +274,7 @@ struct iavf_adapter {#define IAVF_FLAG_LEGACY_RX BIT(15)#define IAVF_FLAG_REINIT_ITR_NEEDED BIT(16)#define IAVF_FLAG_QUEUES_DISABLED BIT(17) +#define IAVF_FLAG_SETUP_NETDEV_FEATURES BIT(18)/* duplicates for common code */ #define IAVF_FLAG_DCB_ENABLED 0/* flags for admin queue service task */
drivers/net/ethernet/intel/iavf/iavf_main.c +102 -50
297 lines not on this page · raw message
drivers/net/ethernet/intel/iavf/iavf_virtchnl.c +1 -13
@@ -1752,19 +1752,7 @@ void iavf_virtchnl_completion(struct iavf_adapter *adapter,spin_unlock_bh (&adapter->mac_vlan_list_lock);iavf_process_config (adapter); - -/* unlock crit_lock before acquiring rtnl_lock as other -* processes holding rtnl_lock could be waiting for the same -* crit_lock -*/ -mutex_unlock (&adapter->crit_lock); -rtnl_lock (); -netdev_update_features (adapter->netdev); -rtnl_unlock (); -if (iavf_lock_timeout (&adapter->crit_lock,10000 )) -dev_warn (&adapter->pdev->dev,"failed to acquire crit_lock in %s\n" , - __FUNCTION__); - + adapter->flags |=IAVF_FLAG_SETUP_NETDEV_FEATURES ; }break ;case VIRTCHNL_OP_ENABLE_QUEUES :
drivers/net/ethernet/intel/igc/igc_phy.c +0 -4
@@ -746,8 +746,6 @@ s32 igc_write_phy_reg_gpy(struct igc_hw *hw, u32 offset, u16 data)if (ret_val)return ret_val; ret_val =igc_write_phy_reg_mdic (hw, offset, data); -if (ret_val) -return ret_val; hw->phy.ops.release (hw); }else { ret_val = igc_write_xmdio_reg(hw, (u16)offset, dev_addr,
@@ -779,8 +777,6 @@ s32 igc_read_phy_reg_gpy(struct igc_hw *hw, u32 offset, u16 *data)if (ret_val)return ret_val; ret_val =igc_read_phy_reg_mdic (hw, offset, data); -if (ret_val) -return ret_val; hw->phy.ops.release (hw); }else { ret_val = igc_read_xmdio_reg(hw, (u16)offset, dev_addr,
drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c +4 -2
@@ -390,12 +390,14 @@ static bool ixgbe_xmit_zc(struct ixgbe_ring *xdp_ring, unsigned int budget)u32 cmd_type;while (budget-- >0 ) { -if (unlikely (!ixgbe_desc_unused (xdp_ring)) || - !netif_carrier_ok (xdp_ring->netdev)) { +if (unlikely (!ixgbe_desc_unused (xdp_ring))) { work_done = false;break ; } +if (!netif_carrier_ok (xdp_ring->netdev)) +break ; +if (!xsk_tx_peek_desc (pool, &desc))break ;
drivers/net/ethernet/microchip/sparx5/sparx5_vlan.c +10 -10
@@ -58,16 +58,6 @@ int sparx5_vlan_vid_add(struct sparx5_port *port, u16 vid, bool pvid,struct sparx5 *sparx5 = port->sparx5;int ret; -/* Make the port a member of the VLAN */ -set_bit (port->portno, sparx5->vlan_mask[vid]); - ret =sparx5_vlant_set_mask (sparx5, vid); -if (ret) -return ret; - -/* Default ingress vlan classification */ -if (pvid) - port->pvid = vid; -/* Untagged egress vlan classification */ if (untagged && port->vid != vid) {if (port->vid) {
@@ -79,6 +69,16 @@ int sparx5_vlan_vid_add(struct sparx5_port *port, u16 vid, bool pvid, port->vid = vid; } +/* Make the port a member of the VLAN */ +set_bit (port->portno, sparx5->vlan_mask[vid]); + ret =sparx5_vlant_set_mask (sparx5, vid); +if (ret) +return ret; + +/* Default ingress vlan classification */ +if (pvid) + port->pvid = vid; +sparx5_vlan_port_apply (sparx5, port);return 0 ;
drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c +3 -3
@@ -2285,18 +2285,18 @@ static int __init sxgbe_cmdline_opt(char *str)char *opt;if (!str || !*str) -return -EINVAL ; +return 1 ;while ((opt =strsep (&str,"," )) !=NULL ) {if (!strncmp (opt,"eee_timer:" ,10 )) {if (kstrtoint (opt +10 ,0 , &eee_timer)) goto err; } } -return 0 ; +return 1 ; err:pr_err ("%s: ERROR broken module parameter conversion\n" , __func__); -return -EINVAL ; +return 1 ; }__setup ("sxgbeeth=" , sxgbe_cmdline_opt);
drivers/net/ethernet/stmicro/stmmac/stmmac.h +2 -2
@@ -334,8 +334,8 @@ void stmmac_set_ethtool_ops(struct net_device *netdev);int stmmac_init_tstamp_counter (struct stmmac_priv *priv,u32 systime_flags);void stmmac_ptp_register (struct stmmac_priv *priv);void stmmac_ptp_unregister (struct stmmac_priv *priv); -int stmmac_open (struct net_device *dev); -int stmmac_release (struct net_device *dev); +int stmmac_xdp_open (struct net_device *dev); +void stmmac_xdp_release (struct net_device *dev);int stmmac_resume (struct device *dev);int stmmac_suspend (struct device *dev);int stmmac_dvr_remove (struct device *dev);
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +164 -6
228 lines not on this page · raw message
drivers/net/ethernet/stmicro/stmmac/stmmac_xdp.c +2 -2
@@ -119,7 +119,7 @@ int stmmac_xdp_set_prog(struct stmmac_priv *priv, struct bpf_prog *prog, need_update = !!priv->xdp_prog != !!prog;if (if_running && need_update) -stmmac_release (dev); +stmmac_xdp_release (dev); old_prog =xchg (&priv->xdp_prog, prog);if (old_prog)
@@ -129,7 +129,7 @@ int stmmac_xdp_set_prog(struct stmmac_priv *priv, struct bpf_prog *prog, priv->sph = priv->sph_cap && !stmmac_xdp_is_enabled (priv);if (if_running && need_update) -stmmac_open (dev); +stmmac_xdp_open (dev);return 0 ; }
drivers/net/ipa/Kconfig +2 -0
@@ -2,7 +2,9 @@ config QCOM_IPA tristate "Qualcomm IPA support" depends on NET && QCOM_SMEM depends on ARCH_QCOM || COMPILE_TEST + depends on INTERCONNECT depends on QCOM_RPROC_COMMON || (QCOM_RPROC_COMMON=n && COMPILE_TEST) + depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n select QCOM_MDT_LOADER if ARCH_QCOM select QCOM_SCM select QCOM_QMI_HELPERS
drivers/net/usb/cdc_mbim.c +5 -0
@@ -659,6 +659,11 @@ static const struct usb_device_id mbim_devs[] = { .driver_info = (unsigned long)&cdc_mbim_info_avoid_altsetting_toggle, }, +/* Telit FN990 */ + { USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x1071, USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), + .driver_info = (unsigned long )&cdc_mbim_info_avoid_altsetting_toggle, + }, + /* default entry */ { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), .driver_info = (unsigned long)&cdc_mbim_info_zlp,
drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c +8 -3
@@ -5,6 +5,7 @@* Copyright (C) 2016-2017 Intel Deutschland GmbH */ #include <linux/vmalloc.h> +#include <linux/err.h> #include <linux/ieee80211.h> #include <linux/netdevice.h>
@@ -1849,7 +1850,6 @@ void iwl_mvm_sta_add_debugfs(struct ieee80211_hw *hw,void iwl_mvm_dbgfs_register (struct iwl_mvm *mvm) {struct dentry *bcast_dir__maybe_unused ; -char buf[100 ];spin_lock_init (&mvm->drv_stats_lock);
@@ -1930,6 +1930,11 @@ void iwl_mvm_dbgfs_register(struct iwl_mvm *mvm)* Create a symlink with mac80211. It will be removed when mac80211 * exists (before the opmode exists which removes the target.) */ -snprintf (buf,100 ,"../../%pd2" , mvm->debugfs_dir->d_parent); -debugfs_create_symlink ("iwlwifi" , mvm->hw->wiphy->debugfsdir, buf); +if (!IS_ERR (mvm->debugfs_dir)) { +char buf[100 ]; + +snprintf (buf,100 ,"../../%pd2" , mvm->debugfs_dir->d_parent); +debugfs_create_symlink ("iwlwifi" , mvm->hw->wiphy->debugfsdir, + buf); + } }
drivers/net/wireless/mac80211_hwsim.c +13 -0
@@ -2336,6 +2336,15 @@ static void hw_scan_work(struct work_struct *work)if (req->ie_len)skb_put_data (probe, req->ie, req->ie_len); +if (!ieee80211_tx_prepare_skb (hwsim->hw, + hwsim->hw_scan_vif, + probe, + hwsim->tmp_chan->band, +NULL )) { +kfree_skb (probe); +continue ; + } +local_bh_disable ();mac80211_hwsim_tx_frame (hwsim->hw, probe, hwsim->tmp_chan);
@@ -3770,6 +3779,10 @@ static int hwsim_tx_info_frame_received_nl(struct sk_buff *skb_2, } txi->flags |=IEEE80211_TX_STAT_ACK ; } + +if (hwsim_flags &HWSIM_TX_CTL_NO_ACK ) + txi->flags |=IEEE80211_TX_STAT_NOACK_TRANSMITTED ; +ieee80211_tx_status_irqsafe (data2->hw, skb);return 0 ; out:
drivers/net/xen-netfront.c +23 -16
@@ -842,6 +842,28 @@ static int xennet_close(struct net_device *dev)return 0 ; } +static void xennet_destroy_queues (struct netfront_info *info) +{ +unsigned int i; + +for (i =0 ; i < info->netdev->real_num_tx_queues; i++) { +struct netfront_queue *queue = &info->queues[i]; + +if (netif_running (info->netdev)) +napi_disable (&queue->napi); +netif_napi_del (&queue->napi); + }
Lines of this file are not shown. View the raw message.
fs/btrfs/inode.c +106 -64
170 lines not on this page · raw message
fs/btrfs/ioctl.c +171 -4
175 lines not on this page · raw message
fs/btrfs/transaction.c +73 -4
77 lines not on this page · raw message
fs/btrfs/tree-log.c +49 -12
61 lines not on this page · raw message
fs/ext4/fast_commit.c +98 -120
218 lines not on this page · raw message
kernel/trace/trace_events_filter.c +100 -7
107 lines not on this page · raw message
net/dcb/dcbnl.c +44 -0
44 lines not on this page · raw message
tools/testing/selftests/drivers/net/mlxsw/spectrum/resource_scale.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/mlxsw/tc_police_scale.sh +2 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/seccomp/Makefile +1 -1
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.