Skip to contentSkip to conversation

Linux 6.1.34

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jun 14, 2023 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.1.34 kernel.

All users of the 6.1 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/mm/page_table_check.rst                      |   19 
 Documentation/networking/ip-sysctl.rst                     |    4 
 Makefile                                                   |    2 
 arch/arm/boot/dts/at91-sama7g5ek.dts                       |    2 
 arch/arm/mach-at91/pm.c                                    |   20 -
 arch/arm64/boot/dts/freescale/imx8-ss-dma.dtsi             |    8 
 arch/arm64/boot/dts/freescale/imx8mn-beacon-baseboard.dtsi |    4 
 arch/arm64/boot/dts/freescale/imx8qm-mek.dts               |    4 
 arch/arm64/boot/dts/qcom/sc7180-lite.dtsi                  |    8 
 arch/arm64/boot/dts/qcom/sc8280xp.dtsi                     |    1 
 arch/riscv/Kconfig                                         |    1 
 arch/riscv/include/asm/pgtable.h                           |    3 
 arch/riscv/mm/init.c                                       |    2 
 block/blk-mq.c                                             |    8 
 drivers/block/rbd.c                                        |   62 ++-
 drivers/bluetooth/hci_qca.c                                |    6 
 drivers/firmware/arm_ffa/driver.c                          |    1 
 drivers/gpio/gpio-sim.c                                    |    6 
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c                 |   10 
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c                  |    1 
 drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c               |    7 
 drivers/gpu/drm/amd/amdgpu/vi.c                            |   11 
 drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c       |    2 
 drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c    |   92 +++-
 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c             |    4 
 drivers/gpu/drm/i915/display/intel_dp_aux.c                |   32 +
 drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c      |  130 +++---
 drivers/gpu/drm/i915/gt/selftest_execlists.c               |   60 +--
 drivers/gpu/drm/i915/gt/selftest_hangcheck.c               |   51 +-
 drivers/gpu/drm/i915/selftests/i915_request.c              |  252 ++++++++-----
 drivers/i2c/busses/i2c-mv64xxx.c                           |   11 
 drivers/i2c/busses/i2c-sprd.c                              |    8 
 drivers/input/input.c                                      |    2 
 drivers/input/joystick/xpad.c                              |    1 
 drivers/input/mouse/elantech.c                             |    9 
 drivers/misc/eeprom/Kconfig                                |    1 
 drivers/net/dsa/lan9303-core.c                             |    4 
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                  |   39 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c          |    2 
 drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c              |    1 
 drivers/net/ethernet/broadcom/genet/bcmgenet.c             |   22 -
 drivers/net/ethernet/broadcom/genet/bcmgenet.h             |    3 
 drivers/net/ethernet/broadcom/genet/bcmmii.c               |    5 
 drivers/net/ethernet/freescale/enetc/enetc.c               |   16 
 drivers/net/ethernet/qlogic/qed/qed_l2.c                   |    2 
 drivers/net/ethernet/qlogic/qede/qede.h                    |    4 
 drivers/net/ethernet/qlogic/qede/qede_ethtool.c            |   24 +
 drivers/net/ethernet/qlogic/qede/qede_main.c               |   34 +
 drivers/net/phy/sfp.c                                      |    5 
 drivers/net/virtio_net.c                                   |   16 
 drivers/net/wireless/intel/iwlwifi/mvm/d3.c                |    8 
 drivers/net/wireless/mediatek/mt76/mt7615/mac.c            |    3 
 drivers/net/wireless/realtek/rtw88/mac80211.c              |   14 
 drivers/net/wireless/realtek/rtw88/main.c                  |    4 
 drivers/net/wireless/realtek/rtw88/ps.c                    |   43 ++
 drivers/net/wireless/realtek/rtw88/ps.h                    |    2 
 drivers/net/wireless/realtek/rtw89/mac80211.c              |   16 
 drivers/net/wireless/realtek/rtw89/ps.c                    |   26 +
 drivers/net/wireless/realtek/rtw89/ps.h                    |    1 
 drivers/pinctrl/meson/pinctrl-meson-axg.c                  |    1 
 drivers/platform/surface/aggregator/controller.c           |    2 
 drivers/platform/surface/surface_aggregator_tabletsw.c     |    5 
 drivers/s390/block/dasd_ioctl.c                            |    4 
 drivers/scsi/megaraid/megaraid_sas_fusion.c                |    2 
 drivers/scsi/megaraid/megaraid_sas_fusion.h                |    5 
 drivers/soc/qcom/icc-bwmon.c                               |    4 
 drivers/soundwire/stream.c                                 |    4 
 drivers/spi/spi-mt65xx.c                                   |    3 
 drivers/spi/spi-qup.c                                      |   37 -
 drivers/staging/rtl8192e/rtl8192e/rtl_core.c               |    6 
 drivers/staging/rtl8192e/rtl8192e/rtl_core.h               |    5 
 drivers/tee/amdtee/amdtee_if.h                             |   10 
 drivers/tee/amdtee/call.c                                  |   30 -
 drivers/usb/core/buffer.c                                  |   41 ++
 drivers/usb/core/devio.c                                   |   20 -
 drivers/vdpa/vdpa_user/vduse_dev.c                         |    3 
 drivers/vhost/vdpa.c                                       |   21 -
 drivers/vhost/vhost.c                                      |   18 
 drivers/vhost/vhost.h                                      |    8 
 fs/afs/dir.c                                               |    3 
 fs/ceph/caps.c                                             |    6 
 fs/ceph/snap.c                                             |    4 
 fs/ext4/super.c                                            |    6 
 fs/ext4/xattr.c                                            |    6 
 fs/ksmbd/connection.c                                      |   12 
 fs/ksmbd/oplock.c                                          |   66 +--
 fs/ksmbd/smb2pdu.c                                         |   13 
 include/linux/netdevice.h                                  |    9 
 include/linux/page-flags.h                                 |    6 
 include/linux/usb/hcd.h                                    |    5 
 include/net/bluetooth/hci.h                                |    1 
 include/net/bluetooth/hci_core.h                           |    1 
 include/net/neighbour.h                                    |    2 
 include/net/netns/ipv6.h                                   |    2 
 include/net/ping.h                                         |    6 
 include/net/pkt_sched.h                                    |    2 
 include/net/rpl.h                                          |    3 
 include/net/sch_generic.h                                  |    6 
 include/net/sock.h                                         |   18 
 kernel/bpf/map_in_map.c                                    |    8 
 kernel/fork.c                                              |    2 
 kernel/trace/bpf_trace.c                                   |   12 
 lib/cpu_rmap.c                                             |    2 
 mm/Kconfig.debug                                           |    1 
 mm/page_table_check.c                                      |    6 
 net/batman-adv/distributed-arp-table.c                     |    2 
 net/bluetooth/hci_conn.c                                   |    2 
 net/bluetooth/hci_core.c                                   |   10 
 net/bluetooth/hci_sync.c                                   |   23 -
 net/bluetooth/l2cap_core.c                                 |   13 
 net/can/j1939/main.c                                       |   24 -
 net/can/j1939/socket.c                                     |    5 
 net/core/dev.c                                             |    8 
 net/core/skmsg.c                                           |    3 
 net/ipv4/sysctl_net_ipv4.c                                 |    8 
 net/ipv4/tcp_offload.c                                     |   19 
 net/ipv6/exthdrs.c                                         |   29 -
 net/mac80211/he.c                                          |   15 
 net/mac80211/mlme.c                                        |    8 
 net/mac80211/rx.c                                          |    4 
 net/mptcp/pm.c                                             |   23 -
 net/mptcp/pm_netlink.c                                     |   18 
 net/mptcp/pm_userspace.c                                   |   48 ++
 net/mptcp/protocol.h                                       |    1 
 net/netfilter/ipset/ip_set_core.c                          |    8 
 net/netfilter/nf_conntrack_core.c                          |    3 
 net/netfilter/nf_tables_api.c                              |    2 
 net/netfilter/nft_bitwise.c                                |    2 
 net/sched/act_police.c                                     |   10 
 net/sched/cls_api.c                                        |    3 
 net/sched/sch_api.c                                        |   26 -
 net/sched/sch_fq_pie.c                                     |   10 
 net/sched/sch_generic.c                                    |   30 -
 net/sched/sch_mq.c                                         |    8 
 net/sched/sch_mqprio.c                                     |    8 
 net/sched/sch_pie.c                                        |    5 
 net/sched/sch_red.c                                        |    5 
 net/sched/sch_sfq.c                                        |    5 
 net/sched/sch_taprio.c                                     |    6 
 net/sched/sch_teql.c                                       |    2 
 net/smc/smc_llc.c                                          |    4 
 net/wireless/core.c                                        |    4 
 net/wireless/nl80211.c                                     |    2 
 sound/isa/gus/gus_pcm.c                                    |    2 
 sound/pci/cmipci.c                                         |    6 
 sound/pci/hda/hda_codec.c                                  |    6 
 sound/pci/hda/patch_realtek.c                              |    9 
 sound/pci/ice1712/aureon.c                                 |    7 
 sound/pci/ice1712/ice1712.c                                |   14 
 sound/pci/ice1712/ice1724.c                                |   16 
 sound/pci/ymfpci/ymfpci_main.c                             |    6 
 sound/soc/codecs/wsa881x.c                                 |    1 
 sound/soc/codecs/wsa883x.c                                 |    1 
 sound/soc/generic/simple-card-utils.c                      |    2 
 sound/soc/mediatek/mt8195/mt8195-afe-clk.c                 |    5 
 sound/soc/mediatek/mt8195/mt8195-afe-clk.h                 |    1 
 sound/soc/mediatek/mt8195/mt8195-afe-pcm.c                 |    9 
 sound/soc/mediatek/mt8195/mt8195-audsys-clk.c              |   47 +-
 sound/soc/mediatek/mt8195/mt8195-audsys-clk.h              |    1 
 tools/testing/selftests/bpf/prog_tests/sockopt_sk.c        |   28 +
 tools/testing/selftests/bpf/progs/sockopt_sk.c             |   12 
 tools/testing/selftests/net/mptcp/mptcp_join.sh            |   11 
 162 files changed, 1479 insertions(+), 687 deletions(-)

Adam Ford (1):
arm64: dts: imx8mn-beacon: Fix SPI CS pinmux

Ai Chao (1):
ALSA: hda/realtek: Add a quirk for HP Slim Desktop S01

Akihiro Suda (1):

      net/ipv4: ping_group_range: allow GID from 2147483648 to 4294967294

Alexander Sverdlin (1):

      net: dsa: lan9303: allow vid != 0 in port_fdb_{add|del} methods

Alvin Lee (1):
drm/amd/display: Reduce sdp bw after urgent to 90%

Andi Shyti (1):
drm/i915/gt: Use the correct error value when kernel_context() fails

Balint Dobszay (1):
firmware: arm_ffa: Set handle field to zero in memory descriptor

Ben Hutchings (1):
lib: cpu_rmap: Fix potential use-after-free in irq_cpu_rmap_release()

Bjorn Andersson (1):

      arm64: dts: qcom: sc8280xp: Flush RSC sleep & wake votes

Brett Creeley (1):
virtio_net: use control_buf for coalesce params

Charles Keepax (1):
soundwire: stream: Add missing clear of alloc_slave_rt

Chia-I Wu (1):
drm/amdgpu: fix xclk freq on CHIP_STONEY

Claudiu Beznea (2):
ARM: at91: pm: fix imbalanced reference counter for ethernet devices
ARM: dts: at91: sama7g5ek: fix debounce delay property for shdwc

Daniel Golle (1):
spi: mt65xx: make sure operations completed before unloading

David Howells (1):
afs: Fix setting of mtime when creating a file/dir/symlink

Dmitry Torokhov (2):
Input: psmouse - fix OOB access in Elantech protocol
Input: fix open count when closing inhibited device

Douglas Anderson (1):
arm64: dts: qcom: sc7180-lite: Fix SDRAM freq for misidentified sc7180-lite boards

Eric Dumazet (9):
bpf, sockmap: Avoid potential NULL dereference in sk_psock_verdict_data_ready() net/ipv6: fix bool/int mismatch for skip_notify_on_dev_down net/sched: fq_pie: ensure reasonable TCA_FQ_PIE_QUANTUM values
tcp: gso: really support BIG TCP
rfs: annotate lockless accesses to sk->sk_rxhash
rfs: annotate lockless accesses to RFS sock flow table
net: sched: add rcu annotations around qdisc->qdisc_sleeping
net: sched: move rtm_tca_policy declaration to include file
net: sched: act_police: fix sparse errors in tcf_police_dump()

Evan Quan (1):
drm/amd/pm: conditionally disable pcie lane switching for some sienna_cichlid SKUs

Fedor Pchelkin (2):
can: j1939: change j1939_netdev_lock type to mutex
can: j1939: avoid possible use-after-free when j1939_can_rx_register fails

Florian Fainelli (1):
net: bcmgenet: Fix EEE implementation

Geliang Tang (5):
mptcp: only send RM_ADDR in nl_cmd_remove
mptcp: add address into userspace pm list
mptcp: update userspace pm infos
selftests: mptcp: update userspace pm addr tests
selftests: mptcp: update userspace pm subflow tests

Greg Kroah-Hartman (2):
Revert "staging: rtl8192e: Replace macro RTL_PCI_DEVICE with PCI_DEVICE" Linux 6.1.34

Gustavo A. R. Silva (1):
wifi: iwlwifi: mvm: Fix -Warray-bounds bug in iwl_mvm_wait_d3_notif()

Hangyu Hua (1):
net: sched: fix possible refcount leak in tc_chain_tmplt_add()

Horatio Zhang (1):
drm/amdgpu: fix Null pointer dereference error in amdgpu_device_recover_vram

Hsieh-Tseng Shen (1):
riscv: mm: Ensure prot of VM_WRITE and VM_EXEC must be readable

Ilya Dryomov (2):
rbd: move RBD_OBJ_FLAG_COPYUP_ENABLED flag setting
rbd: get snapshot context after exclusive lock is ensured to be held

Ismael Ferreras Morezuelas (1):
Input: xpad - delete a Razer DeathAdder mouse VID/PID entry

Jan Höppner (1):
s390/dasd: Use correct lock while counting channel queue length

Jaroslav Kysela (1):

      ALSA: ice1712,ice1724: fix the kcontrol->id initialization

Jeremy Sowden (1):
netfilter: nft_bitwise: fix register tracking

Jiri Olsa (1):
bpf: Add extra path pointer check to d_path helper

Johan Hovold (2):
Bluetooth: fix debugfs registration
Bluetooth: hci_qca: fix debugfs registration

Johannes Berg (5):
wifi: mac80211: use correct iftype HE cap
wifi: cfg80211: reject bad AP MLD address
wifi: mac80211: mlme: fix non-inheritence element
wifi: mac80211: don't translate beacon/presp addrs
wifi: cfg80211: fix locking in sched scan stop work

Jouni Högander (1):
drm/i915: Use 18 fast wake AUX sync len

KP Singh (1):
bpf: Fix UAF in task local storage

Kees Cook (1):
scsi: megaraid_sas: Add flexible array member for SGLs

Kent Gibson (1):
gpio: sim: fix memory corruption when adding named lines and unnamed hogs

Krzysztof Kozlowski (1):
soc: qcom: icc-bwmon: fix incorrect error code passed to dev_err_probe()

Kuniyuki Iwashima (2):
netfilter: ipset: Add schedule point in call_ad().
ipv6: rpl: Fix Route of Death.

Lijo Lazar (1):
drm/amd/pm: Fix power context allocation in SMU13

Lorenzo Bianconi (1):

      wifi: mt76: mt7615: fix possible race in mt7615_mac_sta_poll

Luiz Augusto von Dentz (1):
Bluetooth: Fix use-after-free in hci_remove_ltk/hci_remove_irk

Manish Chopra (1):
qed/qede: Fix scheduling while atomic

Marek Behún (1):
i2c: mv64xxx: Fix reading invalid status value in atomic mode

Martin Hundebøll (1):
pinctrl: meson-axg: add missing GPIOA_18 gpio group

Maximilian Luz (2):
platform/surface: aggregator: Allow completion work-items to be executed in parallel platform/surface: aggregator_tabletsw: Add support for book mode in KIP subsystem

Namjae Jeon (3):
ksmbd: fix out-of-bound read in deassemble_neg_contexts()
ksmbd: fix out-of-bound read in parse_lease_state()
ksmbd: check the validation of pdu_size in ksmbd_conn_handler_loop

Oleksij Rempel (1):
can: j1939: j1939_sk_send_loop_abort(): improved error queue handling in J1939 Socket

Pablo Neira Ayuso (1):
netfilter: nf_tables: out-of-bound check in chain blob

Pauli Virtanen (1):
Bluetooth: ISO: don't try to remove CIG if there are bound CIS left

Pavan Chebbi (1):
bnxt_en: Prevent kernel panic when receiving unexpected PHC_UPDATE event

Ping-Ke Shih (2):
wifi: rtw89: correct PS calculation for SUPPORTS_DYNAMIC_PS
wifi: rtw88: correct PS calculation for SUPPORTS_DYNAMIC_PS

Qingfang DENG (1):
neighbour: fix unaligned access to pneigh_entry

Randy Dunlap (1):
eeprom: at24: also select REGMAP

RenHai (1):
ALSA: hda/realtek: Add Lenovo P3 Tower platform

Rhys Rustad-Elliott (1):
bpf: Fix elem_size not being set for inner maps

Rijo Thomas (1):
tee: amdtee: Add return_origin to 'struct tee_cmd_load_ta'

Robert Hancock (1):
ASoC: simple-card-utils: fix PCM constraint error check

Ruan Jinjie (1):
riscv: fix kprobe __user string arg print fault issue

Ruihan Li (4):
usb: usbfs: Enforce page requirements for mmap
usb: usbfs: Use consistent mmap functions
mm: page_table_check: Make it dependent on EXCLUSIVE_SYSTEM_RAM
mm: page_table_check: Ensure user pages are not slab pages

Russell King (Oracle) (1):
net: sfp: fix state loss when updating state_hw_mask

Shannon Nelson (2):
vhost: support PACKED when setting-getting vring_base
vhost_vdpa: support PACKED when setting-getting vring_base

Sheng Zhao (1):
vduse: avoid empty string for dev name

Shenwei Wang (2):
arm64: dts: imx8qm-mek: correct GPIOs for USDHC2 CD and WP signals
arm64: dts: imx8-ss-dma: assign default clock rate for lpuarts

Somnath Kotur (2):
bnxt_en: Query default VLAN before VNIC setup on a VF
bnxt_en: Implement .set_port / .unset_port UDP tunnel callbacks

Sreekanth Reddy (1):
bnxt_en: Don't issue AP reset during ethtool's reset operation

Srinivas Kandagatla (2):
ASoC: codecs: wsa883x: do not set can_multi_write flag
ASoC: codecs: wsa881x: do not set can_multi_write flag

Stanislav Fomichev (1):
selftests/bpf: Verify optval=NULL case

Stefan Binding (1):
ALSA: hda/realtek: Add quirks for Asus ROG 2024 laptops using CS35L41

Stephan Gerhold (1):
spi: qup: Request DMA before enabling clocks

Sungwoo Kim (1):
Bluetooth: L2CAP: Add missing checks for invalid DCID

Takashi Iwai (4):

      ALSA: hda: Fix kctl->id initialization
      ALSA: ymfpci: Fix kctl->id initialization
      ALSA: gus: Fix kctl->id initialization
      ALSA: cmipci: Fix kctl->id initialization

Theodore Ts'o (2):
Revert "ext4: don't clear SB_RDONLY when remounting r/w until quota is re-enabled"
ext4: only check dquot_initialize_needed() when debugging

Tian Lan (1):
blk-mq: fix blk_mq_hw_ctx active request accounting

Tijs Van Buggenhout (1):
netfilter: conntrack: fix NULL pointer dereference in nf_confirm_cthelper

Tim Crawford (1):
ALSA: hda/realtek: Add quirk for Clevo NS50AU

Trevor Wu (1):
ASoC: mediatek: mt8195: fix use-after-free in driver remove path

Tvrtko Ursulin (2):
drm/i915/selftests: Stop using kthread_stop() drm/i915/selftests: Add some missing error propagation

Uwe Kleine-König (2):
ASoC: mediatek: mt8195-afe-pcm: Convert to platform remove callback returning void
i2c: sprd: Delete i2c adapter in .remove's error path

Vikas Gupta (1):
bnxt_en: Skip firmware fatal error recovery if chip is not accessible

Ville Syrjälä (1):
drm/i915: Explain the magic numbers for AUX SYNC/precharge length

Vladislav Efanov (1):
batman-adv: Broken sync while rescheduling delayed work

Wei Fang (2):
net: enetc: correct the statistics of rx bytes
net: enetc: correct rx_bytes statistics of XDP

Wen Gu (1):
net/smc: Avoid to access invalid RMBs' MRs in SMCRv1 ADD LINK CONT

Xiubo Li (1):
ceph: fix use-after-free bug for inodes when flushing capsnaps

YiPeng Chai (1):
drm/amdgpu: change reserved vram info print

Ying Hsu (1):
Bluetooth: Fix l2cap_disconnect_req deadlock

Yonghong Song (1):
selftests/bpf: Fix sockopt_sk selftest

Zhengping Jiang (1):
Bluetooth: hci_sync: add lock to protect HCI_UNREGISTER

author maintainer
#1 lore raw
Documentation/mm/page_table_check.rst +19 -0
index 1a09472f10a3..d19ca356b7bf 100644
@@ -54,3 +54,22 @@ Build kernel with:
 
 Optionally, build kernel with PAGE_TABLE_CHECK_ENFORCED in order to have page
 table support without extra kernel parameter.
+
+Implementation notes
+====================
+
+We specifically decided not to use VMA information in order to avoid relying on
+MM states (except for limited "struct page" info). The page table check is a
+separate from Linux-MM state machine that verifies that the user accessible
+pages are not falsely shared.
+
+PAGE_TABLE_CHECK depends on EXCLUSIVE_SYSTEM_RAM. The reason is that without
+EXCLUSIVE_SYSTEM_RAM, users are allowed to map arbitrary physical memory
+regions into the userspace via /dev/mem. At the same time, pages may change
+their properties (e.g., from anonymous pages to named pages) while they are
+still being mapped in the userspace, leading to "corruption" detected by the
+page table check.
+
+Even with EXCLUSIVE_SYSTEM_RAM, I/O pages may be still allowed to be mapped via
+/dev/mem. However, these pages are always considered as named pages, so they
+won't break the logic used in the page table check.
Documentation/networking/ip-sysctl.rst +2 -2
index 4ecb549fd052..3301288a7c69 100644
@@ -1247,8 +1247,8 @@ ping_group_range - 2 INTEGERS
 	Restrict ICMP_PROTO datagram sockets to users in the group range.
 	The default is "1 0", meaning, that nobody (not even root) may
 	create ping sockets.  Setting it to "100 100" would grant permissions
-	to the single group. "0 4294967295" would enable it for the world, "100
-	4294967295" would enable it for the users, but not daemons.
+	to the single group. "0 4294967294" would enable it for the world, "100
+	4294967294" would enable it for the users, but not daemons.
 
 tcp_early_demux - BOOLEAN
 	Enable early demux for established TCP sockets.
Makefile +1 -1
index 6be79c5c934f..bc7cc17b0e75 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 1
-SUBLEVEL = 33
+SUBLEVEL = 34
 EXTRAVERSION =
 NAME = Curry Ramen
 
arch/arm/boot/dts/at91-sama7g5ek.dts +1 -1
index 3b25c67795dd..4af8a1c96ed6 100644
@@ -789,7 +789,7 @@ &sdmmc2 {
 };
 
 &shdwc {
-	atmel,shdwc-debouncer = <976>;
+	debounce-delay-us = <976>;
 	status = "okay";
 
 	input@0 {
arch/arm/mach-at91/pm.c +9 -11
index 60dc56d8acfb..437dd0352fd4 100644
@@ -334,16 +334,14 @@ static bool at91_pm_eth_quirk_is_valid(struct at91_pm_quirk_eth *eth)
 		pdev = of_find_device_by_node(eth->np);
 		if (!pdev)
 			return false;
+		/* put_device(eth->dev) is called at the end of suspend. */
 		eth->dev = &pdev->dev;
 	}
 
 	/* No quirks if device isn't a wakeup source. */
-	if (!device_may_wakeup(eth->dev)) {
-		put_device(eth->dev);
+	if (!device_may_wakeup(eth->dev))
 		return false;
-	}
 
-	/* put_device(eth->dev) is called at the end of suspend. */
 	return true;
 }
 
@@ -439,14 +437,14 @@ static int at91_pm_config_quirks(bool suspend)
 				pr_err("AT91: PM: failed to enable %s clocks\n",
 				       j == AT91_PM_G_ETH ? "geth" : "eth");
 			}
-		} else {
-			/*
-			 * Release the reference to eth->dev taken in
-			 * at91_pm_eth_quirk_is_valid().
-			 */
-			put_device(eth->dev);
-			eth->dev = NULL;
 		}
+
+		/*
+		 * Release the reference to eth->dev taken in
+		 * at91_pm_eth_quirk_is_valid().
+		 */
+		put_device(eth->dev);
+		eth->dev = NULL;
 	}
 
 	return ret;
arch/arm64/boot/dts/freescale/imx8-ss-dma.dtsi +8 -0
index d7b4229bb4a2..9ad56aaf19b4 100644
@@ -26,6 +26,8 @@ lpuart0: serial@5a060000 {
 		clocks = <&uart0_lpcg IMX_LPCG_CLK_4>,
 			 <&uart0_lpcg IMX_LPCG_CLK_0>;
 		clock-names = "ipg", "baud";
+		assigned-clocks = <&clk IMX_SC_R_UART_0 IMX_SC_PM_CLK_PER>;
+		assigned-clock-rates = <80000000>;
 		power-domains = <&pd IMX_SC_R_UART_0>;
 		status = "disabled";
 	};
@@ -36,6 +38,8 @@ lpuart1: serial@5a070000 {
 		clocks = <&uart1_lpcg IMX_LPCG_CLK_4>,
 			 <&uart1_lpcg IMX_LPCG_CLK_0>;
 		clock-names = "ipg", "baud";
+		assigned-clocks = <&clk IMX_SC_R_UART_1 IMX_SC_PM_CLK_PER>;
+		assigned-clock-rates = <80000000>;
 		power-domains = <&pd IMX_SC_R_UART_1>;
 		status = "disabled";
 	};
@@ -46,6 +50,8 @@ lpuart2: serial@5a080000 {
 		clocks = <&uart2_lpcg IMX_LPCG_CLK_4>,
 			 <&uart2_lpcg IMX_LPCG_CLK_0>;
 		clock-names = "ipg", "baud";
+		assigned-clocks = <&clk IMX_SC_R_UART_2 IMX_SC_PM_CLK_PER>;
+		assigned-clock-rates = <80000000>;
 		power-domains = <&pd IMX_SC_R_UART_2>;
 		status = "disabled";
 	};
@@ -56,6 +62,8 @@ lpuart3: serial@5a090000 {
 		clocks = <&uart3_lpcg IMX_LPCG_CLK_4>,
 			 <&uart3_lpcg IMX_LPCG_CLK_0>;
 		clock-names = "ipg", "baud";
+		assigned-clocks = <&clk IMX_SC_R_UART_3 IMX_SC_PM_CLK_PER>;
+		assigned-clock-rates = <80000000>;
 		power-domains = <&pd IMX_SC_R_UART_3>;
 		status = "disabled";
 	};
arch/arm64/boot/dts/freescale/imx8mn-beacon-baseboard.dtsi +2 -2
index 9e82069c941f..5a1f7c30afe5 100644
@@ -81,7 +81,7 @@ sound {
 &ecspi2 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_espi2>;
-	cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
+	cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
 	status = "okay";
 
 	eeprom@0 {
@@ -202,7 +202,7 @@ pinctrl_espi2: espi2grp {
 			MX8MN_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK		0x82
 			MX8MN_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI		0x82
 			MX8MN_IOMUXC_ECSPI2_MISO_ECSPI2_MISO		0x82
-			MX8MN_IOMUXC_ECSPI1_SS0_GPIO5_IO9		0x41
+			MX8MN_IOMUXC_ECSPI2_SS0_GPIO5_IO13		0x41
 		>;
 	};
 
arch/arm64/boot/dts/freescale/imx8qm-mek.dts +2 -2
index ce9d3f0b98fc..607cd6b4e972 100644
@@ -82,8 +82,8 @@ &usdhc2 {
 	pinctrl-0 = <&pinctrl_usdhc2>;
 	bus-width = <4>;
 	vmmc-supply = <&reg_usdhc2_vmmc>;
-	cd-gpios = <&lsio_gpio4 22 GPIO_ACTIVE_LOW>;
-	wp-gpios = <&lsio_gpio4 21 GPIO_ACTIVE_HIGH>;
+	cd-gpios = <&lsio_gpio5 22 GPIO_ACTIVE_LOW>;
+	wp-gpios = <&lsio_gpio5 21 GPIO_ACTIVE_HIGH>;
 	status = "okay";
 };
 
arch/arm64/boot/dts/qcom/sc7180-lite.dtsi +8 -0
index d8ed1d7b4ec7..4b306a59d9be 100644
@@ -16,3 +16,11 @@ &cpu6_opp11 {
 &cpu6_opp12 {
 	opp-peak-kBps = <8532000 23347200>;
 };
+
+&cpu6_opp13 {
+	opp-peak-kBps = <8532000 23347200>;
+};
+
+&cpu6_opp14 {
+	opp-peak-kBps = <8532000 23347200>;
+};
arch/arm64/boot/dts/qcom/sc8280xp.dtsi +1 -0
index ba684d980cf2..1afc960bab5c 100644
@@ -1727,6 +1727,7 @@ apps_rsc: rsc@18200000 {
 			qcom,tcs-config = <ACTIVE_TCS  2>, <SLEEP_TCS   3>,
 					  <WAKE_TCS    3>, <CONTROL_TCS 1>;
 			label = "apps_rsc";
+			power-domains = <&CLUSTER_PD>;
 
 			apps_bcm_voter: bcm-voter {
 				compatible = "qcom,bcm-voter";
arch/riscv/Kconfig +1 -0
index 06b9b2f60b9f..a85bbe28dcf4 100644
@@ -25,6 +25,7 @@ config RISCV
 	select ARCH_HAS_GIGANTIC_PAGE
 	select ARCH_HAS_KCOV
 	select ARCH_HAS_MMIOWB
+	select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
 	select ARCH_HAS_PTE_SPECIAL
 	select ARCH_HAS_SET_DIRECT_MAP if MMU
 	select ARCH_HAS_SET_MEMORY if MMU
arch/riscv/include/asm/pgtable.h +1 -2
index 2aeaf8e3a4ab..59bb53da473d 100644
@@ -165,8 +165,7 @@ extern struct pt_alloc_ops pt_ops __initdata;
 					 _PAGE_EXEC | _PAGE_WRITE)
 
 #define PAGE_COPY		PAGE_READ
-#define PAGE_COPY_EXEC		PAGE_EXEC
-#define PAGE_COPY_READ_EXEC	PAGE_READ_EXEC
+#define PAGE_COPY_EXEC		PAGE_READ_EXEC
 #define PAGE_SHARED		PAGE_WRITE
 #define PAGE_SHARED_EXEC	PAGE_WRITE_EXEC
 
arch/riscv/mm/init.c +1 -1
index 2b9906ed2d1d..d8d97df80190 100644
@@ -286,7 +286,7 @@ static const pgprot_t protection_map[16] = {
 	[VM_EXEC]					= PAGE_EXEC,
 	[VM_EXEC | VM_READ]				= PAGE_READ_EXEC,
 	[VM_EXEC | VM_WRITE]				= PAGE_COPY_EXEC,
-	[VM_EXEC | VM_WRITE | VM_READ]			= PAGE_COPY_READ_EXEC,
+	[VM_EXEC | VM_WRITE | VM_READ]			= PAGE_COPY_EXEC,
 	[VM_SHARED]					= PAGE_NONE,
 	[VM_SHARED | VM_READ]				= PAGE_READ,
 	[VM_SHARED | VM_WRITE]				= PAGE_SHARED,
block/blk-mq.c +4 -4
index 1ab41fbca094..add013d5bbda 100644
@@ -685,6 +685,10 @@ static void __blk_mq_free_request(struct request *rq)
 	blk_crypto_free_request(rq);
 	blk_pm_mark_last_busy(rq);
 	rq->mq_hctx = NULL;
+
+	if (rq->rq_flags & RQF_MQ_INFLIGHT)
+		__blk_mq_dec_active_requests(hctx);
+
 	if (rq->tag != BLK_MQ_NO_TAG)
 		blk_mq_put_tag(hctx->tags, ctx, rq->tag);
 	if (sched_tag != BLK_MQ_NO_TAG)
@@ -696,15 +700,11 @@ static void __blk_mq_free_request(struct request *rq)
 void blk_mq_free_request(struct request *rq)
 {
 	struct request_queue *q = rq->q;
-	struct blk_mq_hw_ctx *hctx = rq->mq_hctx;
 
 	if ((rq->rq_flags & RQF_ELVPRIV) &&
 	    q->elevator->type->ops.finish_request)
 		q->elevator->type->ops.finish_request(rq);
 
-	if (rq->rq_flags & RQF_MQ_INFLIGHT)
-		__blk_mq_dec_active_requests(hctx);
-
 	if (unlikely(laptop_mode && !blk_rq_is_passthrough(rq)))
 		laptop_io_completion(q->disk->bdi);
 
drivers/block/rbd.c +44 -18

133 lines not on this page · raw message

drivers/bluetooth/hci_qca.c +5 -1
index 7b9fd5f10433..45dffd2cbc71 100644
@@ -78,7 +78,8 @@ enum qca_flags {
 	QCA_HW_ERROR_EVENT,
 	QCA_SSR_TRIGGERED,
 	QCA_BT_OFF,
-	QCA_ROM_FW
+	QCA_ROM_FW,
+	QCA_DEBUGFS_CREATED,
 };
 
 enum qca_capabilities {
@@ -635,6 +636,9 @@ static void qca_debugfs_init(struct hci_dev *hdev)
 	if (!hdev->debugfs)
 		return;
 
+	if (test_and_set_bit(QCA_DEBUGFS_CREATED, &qca->flags))
+		return;
+
 	ibs_dir = debugfs_create_dir("ibs", hdev->debugfs);
 
 	/* read only */
drivers/firmware/arm_ffa/driver.c +1 -0
index 5904a679d351..c37e82359005 100644
@@ -505,6 +505,7 @@ ffa_setup_and_transmit(u32 func_id, void *buffer, u32 max_fragsize,
 		ep_mem_access->flag = 0;
 		ep_mem_access->reserved = 0;
 	}
+	mem_region->handle = 0;
 	mem_region->reserved_0 = 0;
 	mem_region->reserved_1 = 0;
 	mem_region->ep_count = args->nattrs;
drivers/gpio/gpio-sim.c +4 -2
index cff68f31a09f..803676e307d7 100644
@@ -717,8 +717,10 @@ static char **gpio_sim_make_line_names(struct gpio_sim_bank *bank,
 	if (!line_names)
 		return ERR_PTR(-ENOMEM);
 
-	list_for_each_entry(line, &bank->line_list, siblings)
-		line_names[line->offset] = line->name;
+	list_for_each_entry(line, &bank->line_list, siblings) {
+		if (line->name && (line->offset <= max_offset))
+			line_names[line->offset] = line->name;
+	}
 
 	return line_names;
 }
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +4 -6
index 4feedf518a19..ad8cb9e6d1ab 100644
@@ -79,9 +79,10 @@ static void amdgpu_bo_user_destroy(struct ttm_buffer_object *tbo)
 static void amdgpu_bo_vm_destroy(struct ttm_buffer_object *tbo)
 {
 	struct amdgpu_device *adev = amdgpu_ttm_adev(tbo->bdev);
-	struct amdgpu_bo *bo = ttm_to_amdgpu_bo(tbo);
+	struct amdgpu_bo *shadow_bo = ttm_to_amdgpu_bo(tbo), *bo;
 	struct amdgpu_bo_vm *vmbo;
 
+	bo = shadow_bo->parent;
 	vmbo = to_amdgpu_bo_vm(bo);
 	/* in case amdgpu_device_recover_vram got NULL of bo->parent */
 	if (!list_empty(&vmbo->shadow_list)) {
@@ -691,11 +692,6 @@ int amdgpu_bo_create_vm(struct amdgpu_device *adev,
 		return r;
 
 	*vmbo_ptr = to_amdgpu_bo_vm(bo_ptr);
-	INIT_LIST_HEAD(&(*vmbo_ptr)->shadow_list);
-	/* Set destroy callback to amdgpu_bo_vm_destroy after vmbo->shadow_list
-	 * is initialized.
-	 */
-	bo_ptr->tbo.destroy = &amdgpu_bo_vm_destroy;
 	return r;
 }
 
@@ -712,6 +708,8 @@ void amdgpu_bo_add_to_shadow_list(struct amdgpu_bo_vm *vmbo)
 
 	mutex_lock(&adev->shadow_list_lock);
 	list_add_tail(&vmbo->shadow_list, &adev->shadow_list);
+	vmbo->shadow->parent = amdgpu_bo_ref(&vmbo->bo);
+	vmbo->shadow->tbo.destroy = &amdgpu_bo_vm_destroy;
 	mutex_unlock(&adev->shadow_list_lock);
 }
 
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c +0 -1
index 01e42bdd8e4e..4642cff0e1a4 100644
@@ -564,7 +564,6 @@ int amdgpu_vm_pt_create(struct amdgpu_device *adev, struct amdgpu_vm *vm,
 		return r;
 	}
 
-	(*vmbo)->shadow->parent = amdgpu_bo_ref(bo);
 	amdgpu_bo_add_to_shadow_list(*vmbo);
 
 	return 0;
drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c +4 -3
index 75c80c557b6e..16594a0a6d18 100644
@@ -799,7 +799,7 @@ static void amdgpu_vram_mgr_debug(struct ttm_resource_manager *man,
 {
 	struct amdgpu_vram_mgr *mgr = to_vram_mgr(man);
 	struct drm_buddy *mm = &mgr->mm;
-	struct drm_buddy_block *block;
+	struct amdgpu_vram_reservation *rsv;
 
 	drm_printf(printer, "  vis usage:%llu\n",
 		   amdgpu_vram_mgr_vis_usage(mgr));
@@ -811,8 +811,9 @@ static void amdgpu_vram_mgr_debug(struct ttm_resource_manager *man,
 	drm_buddy_print(mm, printer);
 
 	drm_printf(printer, "reserved:\n");
-	list_for_each_entry(block, &mgr->reserved_pages, link)
-		drm_buddy_block_print(mm, block, printer);
+	list_for_each_entry(rsv, &mgr->reserved_pages, blocks)
+		drm_printf(printer, "%#018llx-%#018llx: %llu\n",
+			rsv->start, rsv->start + rsv->size, rsv->size);
 	mutex_unlock(&mgr->lock);
 }
 
drivers/gpu/drm/amd/amdgpu/vi.c +9 -2
index d6c37c90c628..53a3bb7fc9c4 100644
@@ -542,8 +542,15 @@ static u32 vi_get_xclk(struct amdgpu_device *adev)
 	u32 reference_clock = adev->clock.spll.reference_freq;
 	u32 tmp;
 
-	if (adev->flags & AMD_IS_APU)
-		return reference_clock;
+	if (adev->flags & AMD_IS_APU) {
+		switch (adev->asic_type) {
+		case CHIP_STONEY:
+			/* vbios says 48Mhz, but the actual freq is 100Mhz */
+			return 10000;
+		default:
+			return reference_clock;
+		}
+	}
 
 	tmp = RREG32_SMC(ixCG_CLKPIN_CNTL_2);
 	if (REG_GET_FIELD(tmp, CG_CLKPIN_CNTL_2, MUX_TCLK_TO_XCLK))
drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c +1 -1
index d2b184fdd7e0..f28caece5f90 100644
@@ -137,7 +137,7 @@ struct _vcs_dpi_soc_bounding_box_st dcn3_2_soc = {
 	.urgent_out_of_order_return_per_channel_pixel_only_bytes = 4096,
 	.urgent_out_of_order_return_per_channel_pixel_and_vm_bytes = 4096,
 	.urgent_out_of_order_return_per_channel_vm_only_bytes = 4096,
-	.pct_ideal_sdp_bw_after_urgent = 100.0,
+	.pct_ideal_sdp_bw_after_urgent = 90.0,
 	.pct_ideal_fabric_bw_after_urgent = 67.0,
 	.pct_ideal_dram_sdp_bw_after_urgent_pixel_only = 20.0,
 	.pct_ideal_dram_sdp_bw_after_urgent_pixel_and_vm = 60.0, // N/A, for now keep as is until DML implemented
drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c +74 -18

118 lines not on this page · raw message

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c +2 -2
index 479cbf05c331..5143b4df2cc1 100644
@@ -582,11 +582,11 @@ int smu_v13_0_init_power(struct smu_context *smu)
 	if (smu_power->power_context || smu_power->power_context_size != 0)
 		return -EINVAL;
 
-	smu_power->power_context = kzalloc(sizeof(struct smu_13_0_dpm_context),
+	smu_power->power_context = kzalloc(sizeof(struct smu_13_0_power_context),
 					   GFP_KERNEL);
 	if (!smu_power->power_context)
 		return -ENOMEM;
-	smu_power->power_context_size = sizeof(struct smu_13_0_dpm_context);
+	smu_power->power_context_size = sizeof(struct smu_13_0_power_context);
 
 	return 0;
 }
drivers/gpu/drm/i915/display/intel_dp_aux.c +29 -3
index 7f3f2d50e6cd..ab357161ccc3 100644
@@ -119,6 +119,32 @@ static u32 skl_get_aux_clock_divider(struct intel_dp *intel_dp, int index)
 	return index ? 0 : 1;
 }
 
+static int intel_dp_aux_sync_len(void)
+{
+	int precharge = 16; /* 10-16 */
+	int preamble = 16;
+
+	return precharge + preamble;
+}
+
+static int intel_dp_aux_fw_sync_len(void)
+{
+	int precharge = 10; /* 10-16 */
+	int preamble = 8;
+
+	return precharge + preamble;
+}
+
+static int g4x_dp_aux_precharge_len(void)
+{
+	int precharge_min = 10;
+	int preamble = 16;
+
+	/* HW wants the length of the extra precharge in 2us units */
+	return (intel_dp_aux_sync_len() -
+		precharge_min - preamble) / 2;
+}
+
 static u32 g4x_get_aux_send_ctl(struct intel_dp *intel_dp,
 				int send_bytes,
 				u32 aux_clock_divider)
@@ -141,7 +167,7 @@ static u32 g4x_get_aux_send_ctl(struct intel_dp *intel_dp,
 	       timeout |
 	       DP_AUX_CH_CTL_RECEIVE_ERROR |
 	       (send_bytes << DP_AUX_CH_CTL_MESSAGE_SIZE_SHIFT) |
-	       (3 << DP_AUX_CH_CTL_PRECHARGE_2US_SHIFT) |
+	       (g4x_dp_aux_precharge_len() << DP_AUX_CH_CTL_PRECHARGE_2US_SHIFT) |
 	       (aux_clock_divider << DP_AUX_CH_CTL_BIT_CLOCK_2X_SHIFT);
 }
 
@@ -165,8 +191,8 @@ static u32 skl_get_aux_send_ctl(struct intel_dp *intel_dp,
 	      DP_AUX_CH_CTL_TIME_OUT_MAX |
 	      DP_AUX_CH_CTL_RECEIVE_ERROR |
 	      (send_bytes << DP_AUX_CH_CTL_MESSAGE_SIZE_SHIFT) |
-	      DP_AUX_CH_CTL_FW_SYNC_PULSE_SKL(24) |
-	      DP_AUX_CH_CTL_SYNC_PULSE_SKL(32);
+	      DP_AUX_CH_CTL_FW_SYNC_PULSE_SKL(intel_dp_aux_fw_sync_len()) |
+	      DP_AUX_CH_CTL_SYNC_PULSE_SKL(intel_dp_aux_sync_len());
 
 	if (intel_tc_port_in_tbt_alt_mode(dig_port))
 		ret |= DP_AUX_CH_CTL_TBT_IO;
drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c +75 -55

236 lines not on this page · raw message

drivers/gpu/drm/i915/gt/selftest_execlists.c +31 -29

135 lines not on this page · raw message

drivers/gpu/drm/i915/gt/selftest_hangcheck.c +30 -21

116 lines not on this page · raw message

drivers/gpu/drm/i915/selftests/i915_request.c +162 -90

520 lines not on this page · raw message

drivers/i2c/busses/i2c-mv64xxx.c +11 -0
index 047dfef7a657..878c076ebdc6 100644
@@ -520,6 +520,17 @@ mv64xxx_i2c_intr(int irq, void *dev_id)
 
 	while (readl(drv_data->reg_base + drv_data->reg_offsets.control) &
 						MV64XXX_I2C_REG_CONTROL_IFLG) {
+		/*
+		 * It seems that sometime the controller updates the status
+		 * register only after it asserts IFLG in control register.
+		 * This may result in weird bugs when in atomic mode. A delay
+		 * of 100 ns before reading the status register solves this
+		 * issue. This bug does not seem to appear when using
+		 * interrupts.
+		 */
+		if (drv_data->atomic)
+			ndelay(100);
+
 		status = readl(drv_data->reg_base + drv_data->reg_offsets.status);
 		mv64xxx_i2c_fsm(drv_data, status);
 		mv64xxx_i2c_do_action(drv_data);
drivers/i2c/busses/i2c-sprd.c +5 -3
index 4fe15cd78907..ffc54fbf814d 100644
@@ -576,12 +576,14 @@ static int sprd_i2c_remove(struct platform_device *pdev)
 	struct sprd_i2c *i2c_dev = platform_get_drvdata(pdev);
 	int ret;
 
-	ret = pm_runtime_resume_and_get(i2c_dev->dev);
+	ret = pm_runtime_get_sync(i2c_dev->dev);
 	if (ret < 0)
-		return ret;
+		dev_err(&pdev->dev, "Failed to resume device (%pe)\n", ERR_PTR(ret));
 
 	i2c_del_adapter(&i2c_dev->adap);
-	clk_disable_unprepare(i2c_dev->clk);
+
+	if (ret >= 0)
+		clk_disable_unprepare(i2c_dev->clk);
 
 	pm_runtime_put_noidle(i2c_dev->dev);
 	pm_runtime_disable(i2c_dev->dev);
drivers/input/input.c +1 -1
index ebb2b7f0f8ff..8b6a922f8470 100644
@@ -701,7 +701,7 @@ void input_close_device(struct input_handle *handle)
 
 	__input_release_device(handle);
 
-	if (!dev->inhibited && !--dev->users) {
+	if (!--dev->users && !dev->inhibited) {
 		if (dev->poller)
 			input_dev_poller_stop(dev->poller);
 		if (dev->close)
drivers/input/joystick/xpad.c +0 -1
index cd36cf716542..76cbcca13c9e 100644
@@ -282,7 +282,6 @@ static const struct xpad_device {
 	{ 0x1430, 0xf801, "RedOctane Controller", 0, XTYPE_XBOX360 },
 	{ 0x146b, 0x0601, "BigBen Interactive XBOX 360 Controller", 0, XTYPE_XBOX360 },
 	{ 0x146b, 0x0604, "Bigben Interactive DAIJA Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
-	{ 0x1532, 0x0037, "Razer Sabertooth", 0, XTYPE_XBOX360 },
 	{ 0x1532, 0x0a00, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
 	{ 0x1532, 0x0a03, "Razer Wildcat", 0, XTYPE_XBOXONE },
 	{ 0x15e4, 0x3f00, "Power A Mini Pro Elite", 0, XTYPE_XBOX360 },
drivers/input/mouse/elantech.c +5 -4
index ece97f8c6a3e..2118b2075f43 100644
@@ -674,10 +674,11 @@ static void process_packet_head_v4(struct psmouse *psmouse)
 	struct input_dev *dev = psmouse->dev;
 	struct elantech_data *etd = psmouse->private;
 	unsigned char *packet = psmouse->packet;
-	int id = ((packet[3] & 0xe0) >> 5) - 1;
+	int id;
 	int pres, traces;
 
-	if (id < 0)
+	id = ((packet[3] & 0xe0) >> 5) - 1;
+	if (id < 0 || id >= ETP_MAX_FINGERS)
 		return;
 
 	etd->mt[id].x = ((packet[1] & 0x0f) << 8) | packet[2];
@@ -707,7 +708,7 @@ static void process_packet_motion_v4(struct psmouse *psmouse)
 	int id, sid;
 
 	id = ((packet[0] & 0xe0) >> 5) - 1;
-	if (id < 0)
+	if (id < 0 || id >= ETP_MAX_FINGERS)
 		return;
 
 	sid = ((packet[3] & 0xe0) >> 5) - 1;
@@ -728,7 +729,7 @@ static void process_packet_motion_v4(struct psmouse *psmouse)
 	input_report_abs(dev, ABS_MT_POSITION_X, etd->mt[id].x);
 	input_report_abs(dev, ABS_MT_POSITION_Y, etd->mt[id].y);
 
-	if (sid >= 0) {
+	if (sid >= 0 && sid < ETP_MAX_FINGERS) {
 		etd->mt[sid].x += delta_x2 * weight;
 		etd->mt[sid].y -= delta_y2 * weight;
 		input_mt_slot(dev, sid);
drivers/misc/eeprom/Kconfig +1 -0
index f0a7531f354c..2d240bfa819f 100644
@@ -6,6 +6,7 @@ config EEPROM_AT24
 	depends on I2C && SYSFS
 	select NVMEM
 	select NVMEM_SYSFS
+	select REGMAP
 	select REGMAP_I2C
 	help
 	  Enable this driver to get read/write support to most I2C EEPROMs
drivers/net/dsa/lan9303-core.c +0 -4
index 2e270b479143..a08e7cbb23c9 100644
@@ -1199,8 +1199,6 @@ static int lan9303_port_fdb_add(struct dsa_switch *ds, int port,
 	struct lan9303 *chip = ds->priv;
 
 	dev_dbg(chip->dev, "%s(%d, %pM, %d)\n", __func__, port, addr, vid);
-	if (vid)
-		return -EOPNOTSUPP;
 
 	return lan9303_alr_add_port(chip, addr, port, false);
 }
@@ -1212,8 +1210,6 @@ static int lan9303_port_fdb_del(struct dsa_switch *ds, int port,
 	struct lan9303 *chip = ds->priv;
 
 	dev_dbg(chip->dev, "%s(%d, %pM, %d)\n", __func__, port, addr, vid);
-	if (vid)
-		return -EOPNOTSUPP;
 	lan9303_alr_del_port(chip, addr, port);
 
 	return 0;
drivers/net/ethernet/broadcom/bnxt/bnxt.c +30 -9
index e3e5a427222f..6469fb8a42a8 100644
@@ -2389,6 +2389,9 @@ static int bnxt_async_event_process(struct bnxt *bp,
 				struct bnxt_ptp_cfg *ptp = bp->ptp_cfg;
 				u64 ns;
 
+				if (!ptp)
+					goto async_event_process_exit;
+
 				spin_lock_bh(&ptp->ptp_lock);
 				bnxt_ptp_update_current_time(bp);
 				ns = (((u64)BNXT_EVENT_PHC_RTC_UPDATE(data1) <<
@@ -4787,6 +4790,9 @@ int bnxt_hwrm_func_drv_rgtr(struct bnxt *bp, unsigned long *bmap, int bmap_size,
 		if (event_id == ASYNC_EVENT_CMPL_EVENT_ID_ERROR_RECOVERY &&
 		    !(bp->fw_cap & BNXT_FW_CAP_ERROR_RECOVERY))
 			continue;
+		if (event_id == ASYNC_EVENT_CMPL_EVENT_ID_PHC_UPDATE &&
+		    !bp->ptp_cfg)
+			continue;
 		__set_bit(bnxt_async_events_arr[i], async_events_bmap);
 	}
 	if (bmap && bmap_size) {
@@ -8808,6 +8814,9 @@ static int bnxt_init_chip(struct bnxt *bp, bool irq_re_init)
 		goto err_out;
 	}
 
+	if (BNXT_VF(bp))
+		bnxt_hwrm_func_qcfg(bp);
+
 	rc = bnxt_setup_vnic(bp, 0);
 	if (rc)
 		goto err_out;
@@ -11573,6 +11582,7 @@ static void bnxt_tx_timeout(struct net_device *dev, unsigned int txqueue)
 static void bnxt_fw_health_check(struct bnxt *bp)
 {
 	struct bnxt_fw_health *fw_health = bp->fw_health;
+	struct pci_dev *pdev = bp->pdev;
 	u32 val;
 
 	if (!fw_health->enabled || test_bit(BNXT_STATE_IN_FW_RESET, &bp->state))
@@ -11586,7 +11596,7 @@ static void bnxt_fw_health_check(struct bnxt *bp)
 	}
 
 	val = bnxt_fw_health_readl(bp, BNXT_FW_HEARTBEAT_REG);
-	if (val == fw_health->last_fw_heartbeat) {
+	if (val == fw_health->last_fw_heartbeat && pci_device_is_present(pdev)) {
 		fw_health->arrests++;
 		goto fw_reset;
 	}
@@ -11594,7 +11604,7 @@ static void bnxt_fw_health_check(struct bnxt *bp)
 	fw_health->last_fw_heartbeat = val;
 
 	val = bnxt_fw_health_readl(bp, BNXT_FW_RESET_CNT_REG);
-	if (val != fw_health->last_fw_reset_cnt) {
+	if (val != fw_health->last_fw_reset_cnt && pci_device_is_present(pdev)) {
 		fw_health->discoveries++;
 		goto fw_reset;
 	}
@@ -12998,26 +13008,37 @@ static void bnxt_cfg_ntp_filters(struct bnxt *bp)
 
 #endif /* CONFIG_RFS_ACCEL */
 
-static int bnxt_udp_tunnel_sync(struct net_device *netdev, unsigned int table)
+static int bnxt_udp_tunnel_set_port(struct net_device *netdev, unsigned int table,
+				    unsigned int entry, struct udp_tunnel_info *ti)
 {
 	struct bnxt *bp = netdev_priv(netdev);
-	struct udp_tunnel_info ti;
 	unsigned int cmd;
 
-	udp_tunnel_nic_get_port(netdev, table, 0, &ti);
-	if (ti.type == UDP_TUNNEL_TYPE_VXLAN)
+	if (ti->type == UDP_TUNNEL_TYPE_VXLAN)
 		cmd = TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN;
 	else
 		cmd = TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_GENEVE;
 
-	if (ti.port)
-		return bnxt_hwrm_tunnel_dst_port_alloc(bp, ti.port, cmd);
+	return bnxt_hwrm_tunnel_dst_port_alloc(bp, ti->port, cmd);
+}
+
+static int bnxt_udp_tunnel_unset_port(struct net_device *netdev, unsigned int table,
+				      unsigned int entry, struct udp_tunnel_info *ti)
+{
+	struct bnxt *bp = netdev_priv(netdev);
+	unsigned int cmd;
+
+	if (ti->type == UDP_TUNNEL_TYPE_VXLAN)
+		cmd = TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN;
+	else
+		cmd = TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_GENEVE;
 
 	return bnxt_hwrm_tunnel_dst_port_free(bp, cmd);
 }
 
 static const struct udp_tunnel_nic_info bnxt_udp_tunnels = {
-	.sync_table	= bnxt_udp_tunnel_sync,
+	.set_port	= bnxt_udp_tunnel_set_port,
+	.unset_port	= bnxt_udp_tunnel_unset_port,
 	.flags		= UDP_TUNNEL_NIC_INFO_MAY_SLEEP |
 			  UDP_TUNNEL_NIC_INFO_OPEN_ONLY,
 	.tables		= {
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 -1
index b2d531e014c5..89f046ce1373 100644
@@ -3727,7 +3727,7 @@ static int bnxt_reset(struct net_device *dev, u32 *flags)
 		}
 	}
 
-	if (req & BNXT_FW_RESET_AP) {
+	if (!BNXT_CHIP_P4_PLUS(bp) && (req & BNXT_FW_RESET_AP)) {
 		/* This feature is not supported in older firmware versions */
 		if (bp->hwrm_spec_code >= 0x10803) {
 			if (!bnxt_firmware_reset_ap(dev)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c +1 -0
index 2132ce63193c..4faaa9a50f4b 100644
@@ -929,6 +929,7 @@ int bnxt_ptp_init(struct bnxt *bp, bool phc_cfg)
 	} else {
 		bnxt_ptp_timecounter_init(bp, true);
 	}
+	bnxt_hwrm_func_drv_rgtr(bp, NULL, 0, true);
 
 	ptp->ptp_info = bnxt_ptp_caps;
 	if ((bp->fw_cap & BNXT_FW_CAP_PTP_PPS)) {
drivers/net/ethernet/broadcom/genet/bcmgenet.c +8 -14
index 4da2becfa950..1ae082eb9e90 100644
@@ -1290,7 +1290,8 @@ static void bcmgenet_get_ethtool_stats(struct net_device *dev,
 	}
 }
 
-static void bcmgenet_eee_enable_set(struct net_device *dev, bool enable)
+void bcmgenet_eee_enable_set(struct net_device *dev, bool enable,
+			     bool tx_lpi_enabled)
 {
 	struct bcmgenet_priv *priv = netdev_priv(dev);
 	u32 off = priv->hw_params->tbuf_offset + TBUF_ENERGY_CTRL;
@@ -1310,7 +1311,7 @@ static void bcmgenet_eee_enable_set(struct net_device *dev, bool enable)
 
 	/* Enable EEE and switch to a 27Mhz clock automatically */
 	reg = bcmgenet_readl(priv->base + off);
-	if (enable)
+	if (tx_lpi_enabled)
 		reg |= TBUF_EEE_EN | TBUF_PM_EN;
 	else
 		reg &= ~(TBUF_EEE_EN | TBUF_PM_EN);
@@ -1331,6 +1332,7 @@ static void bcmgenet_eee_enable_set(struct net_device *dev, bool enable)
 
 	priv->eee.eee_enabled = enable;
 	priv->eee.eee_active = enable;
+	priv->eee.tx_lpi_enabled = tx_lpi_enabled;
 }
 
 static int bcmgenet_get_eee(struct net_device *dev, struct ethtool_eee *e)
@@ -1346,6 +1348,7 @@ static int bcmgenet_get_eee(struct net_device *dev, struct ethtool_eee *e)
 
 	e->eee_enabled = p->eee_enabled;
 	e->eee_active = p->eee_active;
+	e->tx_lpi_enabled = p->tx_lpi_enabled;
 	e->tx_lpi_timer = bcmgenet_umac_readl(priv, UMAC_EEE_LPI_TIMER);
 
 	return phy_ethtool_get_eee(dev->phydev, e);
@@ -1355,7 +1358,6 @@ static int bcmgenet_set_eee(struct net_device *dev, struct ethtool_eee *e)
 {
 	struct bcmgenet_priv *priv = netdev_priv(dev);
 	struct ethtool_eee *p = &priv->eee;
-	int ret = 0;
 
 	if (GENET_IS_V1(priv))
 		return -EOPNOTSUPP;
@@ -1366,16 +1368,11 @@ static int bcmgenet_set_eee(struct net_device *dev, struct ethtool_eee *e)
 	p->eee_enabled = e->eee_enabled;
 
 	if (!p->eee_enabled) {
-		bcmgenet_eee_enable_set(dev, false);
+		bcmgenet_eee_enable_set(dev, false, false);
 	} else {
-		ret = phy_init_eee(dev->phydev, false);
-		if (ret) {
-			netif_err(priv, hw, dev, "EEE initialization failed\n");
-			return ret;
-		}
-
+		p->eee_active = phy_init_eee(dev->phydev, false) >= 0;
 		bcmgenet_umac_writel(priv, e->tx_lpi_timer, UMAC_EEE_LPI_TIMER);
-		bcmgenet_eee_enable_set(dev, true);
+		bcmgenet_eee_enable_set(dev, p->eee_active, e->tx_lpi_enabled);
 	}
 
 	return phy_ethtool_set_eee(dev->phydev, e);
@@ -4274,9 +4271,6 @@ static int bcmgenet_resume(struct device *d)
 	if (!device_may_wakeup(d))
 		phy_resume(dev->phydev);
 
-	if (priv->eee.eee_enabled)
-		bcmgenet_eee_enable_set(dev, true);
-
 	bcmgenet_netif_start(dev);
 
 	netif_device_attach(dev);
drivers/net/ethernet/broadcom/genet/bcmgenet.h +3 -0
index 946f6e283c4e..1985c0ec4da2 100644
@@ -703,4 +703,7 @@ int bcmgenet_wol_power_down_cfg(struct bcmgenet_priv *priv,
 void bcmgenet_wol_power_up_cfg(struct bcmgenet_priv *priv,
 			       enum bcmgenet_power_mode mode);
 
+void bcmgenet_eee_enable_set(struct net_device *dev, bool enable,
+			     bool tx_lpi_enabled);
+
 #endif /* __BCMGENET_H__ */
drivers/net/ethernet/broadcom/genet/bcmmii.c +5 -0
index ded0e64a9f6a..bf9e246784b6 100644
@@ -88,6 +88,11 @@ static void bcmgenet_mac_config(struct net_device *dev)
 		reg |= CMD_TX_EN | CMD_RX_EN;
 	}
 	bcmgenet_umac_writel(priv, reg, UMAC_CMD);
+
+	priv->eee.eee_active = phy_init_eee(phydev, 0) >= 0;
+	bcmgenet_eee_enable_set(dev,
+				priv->eee.eee_enabled && priv->eee.eee_active,
+				priv->eee.tx_lpi_enabled);
 }
 
 /* setup netdev link state when PHY link status change and
drivers/net/ethernet/freescale/enetc/enetc.c +15 -1
index e96449eedfb5..25c303406e6b 100644
@@ -1209,7 +1209,13 @@ static int enetc_clean_rx_ring(struct enetc_bdr *rx_ring,
 		if (!skb)
 			break;
 
-		rx_byte_cnt += skb->len;
+		/* When set, the outer VLAN header is extracted and reported
+		 * in the receive buffer descriptor. So rx_byte_cnt should
+		 * add the length of the extracted VLAN header.
+		 */
+		if (bd_status & ENETC_RXBD_FLAG_VLAN)
+			rx_byte_cnt += VLAN_HLEN;
+		rx_byte_cnt += skb->len + ETH_HLEN;
 		rx_frm_cnt++;
 
 		napi_gro_receive(napi, skb);
@@ -1532,6 +1538,14 @@ static int enetc_clean_rx_ring_xdp(struct enetc_bdr *rx_ring,
 		enetc_build_xdp_buff(rx_ring, bd_status, &rxbd, &i,
 				     &cleaned_cnt, &xdp_buff);
 
+		/* When set, the outer VLAN header is extracted and reported
+		 * in the receive buffer descriptor. So rx_byte_cnt should
+		 * add the length of the extracted VLAN header.
+		 */
+		if (bd_status & ENETC_RXBD_FLAG_VLAN)
+			rx_byte_cnt += VLAN_HLEN;
+		rx_byte_cnt += xdp_get_buff_len(&xdp_buff);
+
 		xdp_act = bpf_prog_run_xdp(prog, &xdp_buff);
 
 		switch (xdp_act) {
drivers/net/ethernet/qlogic/qed/qed_l2.c +1 -1
index 2edd6bf64a3c..7776d3bdd459 100644
@@ -1903,7 +1903,7 @@ void qed_get_vport_stats(struct qed_dev *cdev, struct qed_eth_stats *stats)
 {
 	u32 i;
 
-	if (!cdev) {
+	if (!cdev || cdev->recov_in_prog) {
 		memset(stats, 0, sizeof(*stats));
 		return;
 	}
drivers/net/ethernet/qlogic/qede/qede.h +4 -0
index f90dcfe9ee68..8a63f99d499c 100644
@@ -271,6 +271,10 @@ struct qede_dev {
 #define QEDE_ERR_WARN			3
 
 	struct qede_dump_info		dump_info;
+	struct delayed_work		periodic_task;
+	unsigned long			stats_coal_ticks;
+	u32				stats_coal_usecs;
+	spinlock_t			stats_lock; /* lock for vport stats access */
 };
 
 enum QEDE_STATE {
drivers/net/ethernet/qlogic/qede/qede_ethtool.c +22 -2
index 8034d812d5a0..d0a3395b2bc1 100644
@@ -430,6 +430,8 @@ static void qede_get_ethtool_stats(struct net_device *dev,
 		}
 	}
 
+	spin_lock(&edev->stats_lock);
+
 	for (i = 0; i < QEDE_NUM_STATS; i++) {
 		if (qede_is_irrelevant_stat(edev, i))
 			continue;
@@ -439,6 +441,8 @@ static void qede_get_ethtool_stats(struct net_device *dev,
 		buf++;
 	}
 
+	spin_unlock(&edev->stats_lock);
+
 	__qede_unlock(edev);
 }
 
@@ -830,6 +834,7 @@ static int qede_get_coalesce(struct net_device *dev,
 
 	coal->rx_coalesce_usecs = rx_coal;
 	coal->tx_coalesce_usecs = tx_coal;
+	coal->stats_block_coalesce_usecs = edev->stats_coal_usecs;
 
 	return rc;
 }
@@ -843,6 +848,19 @@ int qede_set_coalesce(struct net_device *dev, struct ethtool_coalesce *coal,
 	int i, rc = 0;
 	u16 rxc, txc;
 
+	if (edev->stats_coal_usecs != coal->stats_block_coalesce_usecs) {
+		edev->stats_coal_usecs = coal->stats_block_coalesce_usecs;
+		if (edev->stats_coal_usecs) {
+			edev->stats_coal_ticks = usecs_to_jiffies(edev->stats_coal_usecs);
+			schedule_delayed_work(&edev->periodic_task, 0);
+
+			DP_INFO(edev, "Configured stats coal ticks=%lu jiffies\n",
+				edev->stats_coal_ticks);
+		} else {
+			cancel_delayed_work_sync(&edev->periodic_task);
+		}
+	}
+
 	if (!netif_running(dev)) {
 		DP_INFO(edev, "Interface is down\n");
 		return -EINVAL;
@@ -2253,7 +2271,8 @@ static int qede_get_per_coalesce(struct net_device *dev,
 }
 
 static const struct ethtool_ops qede_ethtool_ops = {
-	.supported_coalesce_params	= ETHTOOL_COALESCE_USECS,
+	.supported_coalesce_params	= ETHTOOL_COALESCE_USECS |
+					  ETHTOOL_COALESCE_STATS_BLOCK_USECS,
 	.get_link_ksettings		= qede_get_link_ksettings,
 	.set_link_ksettings		= qede_set_link_ksettings,
 	.get_drvinfo			= qede_get_drvinfo,
@@ -2304,7 +2323,8 @@ static const struct ethtool_ops qede_ethtool_ops = {
 };
 
 static const struct ethtool_ops qede_vf_ethtool_ops = {
-	.supported_coalesce_params	= ETHTOOL_COALESCE_USECS,
+	.supported_coalesce_params	= ETHTOOL_COALESCE_USECS |
+					  ETHTOOL_COALESCE_STATS_BLOCK_USECS,
 	.get_link_ksettings		= qede_get_link_ksettings,
 	.get_drvinfo			= qede_get_drvinfo,
 	.get_msglevel			= qede_get_msglevel,
drivers/net/ethernet/qlogic/qede/qede_main.c +33 -1
index 89d64a5a4951..e8d427c7d1cf 100644
@@ -308,6 +308,8 @@ void qede_fill_by_demand_stats(struct qede_dev *edev)
 
 	edev->ops->get_vport_stats(edev->cdev, &stats);
 
+	spin_lock(&edev->stats_lock);
+
 	p_common->no_buff_discards = stats.common.no_buff_discards;
 	p_common->packet_too_big_discard = stats.common.packet_too_big_discard;
 	p_common->ttl0_discard = stats.common.ttl0_discard;
@@ -405,6 +407,8 @@ void qede_fill_by_demand_stats(struct qede_dev *edev)
 		p_ah->tx_1519_to_max_byte_packets =
 		    stats.ah.tx_1519_to_max_byte_packets;
 	}
+
+	spin_unlock(&edev->stats_lock);
 }
 
 static void qede_get_stats64(struct net_device *dev,
@@ -413,9 +417,10 @@ static void qede_get_stats64(struct net_device *dev,
 	struct qede_dev *edev = netdev_priv(dev);
 	struct qede_stats_common *p_common;
 
-	qede_fill_by_demand_stats(edev);
 	p_common = &edev->stats.common;
 
+	spin_lock(&edev->stats_lock);
+
 	stats->rx_packets = p_common->rx_ucast_pkts + p_common->rx_mcast_pkts +
 			    p_common->rx_bcast_pkts;
 	stats->tx_packets = p_common->tx_ucast_pkts + p_common->tx_mcast_pkts +
@@ -435,6 +440,8 @@ static void qede_get_stats64(struct net_device *dev,
 		stats->collisions = edev->stats.bb.tx_total_collisions;
 	stats->rx_crc_errors = p_common->rx_crc_errors;
 	stats->rx_frame_errors = p_common->rx_align_errors;
+
+	spin_unlock(&edev->stats_lock);
 }
 
 #ifdef CONFIG_QED_SRIOV
@@ -1061,6 +1068,23 @@ static void qede_unlock(struct qede_dev *edev)
 	rtnl_unlock();
 }
 
+static void qede_periodic_task(struct work_struct *work)
+{
+	struct qede_dev *edev = container_of(work, struct qede_dev,
+					     periodic_task.work);
+
+	qede_fill_by_demand_stats(edev);
+	schedule_delayed_work(&edev->periodic_task, edev->stats_coal_ticks);
+}
+
+static void qede_init_periodic_task(struct qede_dev *edev)
+{
+	INIT_DELAYED_WORK(&edev->periodic_task, qede_periodic_task);
+	spin_lock_init(&edev->stats_lock);
+	edev->stats_coal_usecs = USEC_PER_SEC;
+	edev->stats_coal_ticks = usecs_to_jiffies(USEC_PER_SEC);
+}
+
 static void qede_sp_task(struct work_struct *work)
 {
 	struct qede_dev *edev = container_of(work, struct qede_dev,
@@ -1080,6 +1104,7 @@ static void qede_sp_task(struct work_struct *work)
 	 */
 
 	if (test_and_clear_bit(QEDE_SP_RECOVERY, &edev->sp_flags)) {
+		cancel_delayed_work_sync(&edev->periodic_task);
 #ifdef CONFIG_QED_SRIOV
 		/* SRIOV must be disabled outside the lock to avoid a deadlock.
 		 * The recovery of the active VFs is currently not supported.
@@ -1270,6 +1295,7 @@ static int __qede_probe(struct pci_dev *pdev, u32 dp_module, u8 dp_level,
 		 */
 		INIT_DELAYED_WORK(&edev->sp_task, qede_sp_task);
 		mutex_init(&edev->qede_lock);
+		qede_init_periodic_task(edev);
 
 		rc = register_netdev(edev->ndev);
 		if (rc) {
@@ -1294,6 +1320,11 @@ static int __qede_probe(struct pci_dev *pdev, u32 dp_module, u8 dp_level,
 	edev->rx_copybreak = QEDE_RX_HDR_SIZE;
 
 	qede_log_probe(edev);
+
+	/* retain user config (for example - after recovery) */
+	if (edev->stats_coal_usecs)
+		schedule_delayed_work(&edev->periodic_task, 0);
+
 	return 0;
 
 err4:
@@ -1362,6 +1393,7 @@ static void __qede_remove(struct pci_dev *pdev, enum qede_remove_mode mode)
 		unregister_netdev(ndev);
 
 		cancel_delayed_work_sync(&edev->sp_task);
+		cancel_delayed_work_sync(&edev->periodic_task);
 
 		edev->ops->common->set_power_state(cdev, PCI_D0);
 
drivers/net/phy/sfp.c +5 -0
index 766f86bdc4a0..9b1403291d92 100644
@@ -2199,6 +2199,11 @@ static void sfp_sm_module(struct sfp *sfp, unsigned int event)
 			break;
 		}
 
+		/* Force a poll to re-read the hardware signal state after
+		 * sfp_sm_mod_probe() changed state_hw_mask.
+		 */
+		mod_delayed_work(system_wq, &sfp->poll, 1);
+
 		err = sfp_hwmon_insert(sfp);
 		if (err)
 			dev_warn(sfp->dev, "hwmon probe failed: %pe\n",
drivers/net/virtio_net.c +8 -8
index 47788f093551..fae302c5b0a9 100644
@@ -200,6 +200,8 @@ struct control_buf {
 	__virtio16 vid;
 	__virtio64 offloads;
 	struct virtio_net_ctrl_rss rss;
+	struct virtio_net_ctrl_coal_tx coal_tx;
+	struct virtio_net_ctrl_coal_rx coal_rx;
 };
 
 struct virtnet_info {
@@ -2786,12 +2788,10 @@ static int virtnet_send_notf_coal_cmds(struct virtnet_info *vi,
 				       struct ethtool_coalesce *ec)
 {
 	struct scatterlist sgs_tx, sgs_rx;
-	struct virtio_net_ctrl_coal_tx coal_tx;
-	struct virtio_net_ctrl_coal_rx coal_rx;
 
-	coal_tx.tx_usecs = cpu_to_le32(ec->tx_coalesce_usecs);
-	coal_tx.tx_max_packets = cpu_to_le32(ec->tx_max_coalesced_frames);
-	sg_init_one(&sgs_tx, &coal_tx, sizeof(coal_tx));
+	vi->ctrl->coal_tx.tx_usecs = cpu_to_le32(ec->tx_coalesce_usecs);
+	vi->ctrl->coal_tx.tx_max_packets = cpu_to_le32(ec->tx_max_coalesced_frames);
+	sg_init_one(&sgs_tx, &vi->ctrl->coal_tx, sizeof(vi->ctrl->coal_tx));
 
 	if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_NOTF_COAL,
 				  VIRTIO_NET_CTRL_NOTF_COAL_TX_SET,
@@ -2802,9 +2802,9 @@ static int virtnet_send_notf_coal_cmds(struct virtnet_info *vi,
 	vi->tx_usecs = ec->tx_coalesce_usecs;
 	vi->tx_max_packets = ec->tx_max_coalesced_frames;
 
-	coal_rx.rx_usecs = cpu_to_le32(ec->rx_coalesce_usecs);
-	coal_rx.rx_max_packets = cpu_to_le32(ec->rx_max_coalesced_frames);
-	sg_init_one(&sgs_rx, &coal_rx, sizeof(coal_rx));
+	vi->ctrl->coal_rx.rx_usecs = cpu_to_le32(ec->rx_coalesce_usecs);
+	vi->ctrl->coal_rx.rx_max_packets = cpu_to_le32(ec->rx_max_coalesced_frames);
+	sg_init_one(&sgs_rx, &vi->ctrl->coal_rx, sizeof(vi->ctrl->coal_rx));
 
 	if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_NOTF_COAL,
 				  VIRTIO_NET_CTRL_NOTF_COAL_RX_SET,
drivers/net/wireless/intel/iwlwifi/mvm/d3.c +2 -6
index c876e81437fe..2748459d1227 100644
@@ -2724,17 +2724,13 @@ static bool iwl_mvm_wait_d3_notif(struct iwl_notif_wait_data *notif_wait,
 		if (wowlan_info_ver < 2) {
 			struct iwl_wowlan_info_notif_v1 *notif_v1 = (void *)pkt->data;
 
-			notif = kmemdup(notif_v1,
-					offsetofend(struct iwl_wowlan_info_notif,
-						    received_beacons),
-					GFP_ATOMIC);
-
+			notif = kmemdup(notif_v1, sizeof(*notif), GFP_ATOMIC);
 			if (!notif)
 				return false;
 
 			notif->tid_tear_down = notif_v1->tid_tear_down;
 			notif->station_id = notif_v1->station_id;
-
+			memset_after(notif, 0, station_id);
 		} else {
 			notif = (void *)pkt->data;
 		}
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +3 -0
index faed43b11ec9..40c80d09d108 100644
@@ -921,7 +921,10 @@ void mt7615_mac_sta_poll(struct mt7615_dev *dev)
 
 		msta = list_first_entry(&sta_poll_list, struct mt7615_sta,
 					poll_list);
+
+		spin_lock_bh(&dev->sta_poll_lock);
 		list_del_init(&msta->poll_list);
+		spin_unlock_bh(&dev->sta_poll_lock);
 
 		addr = mt7615_mac_wtbl_addr(dev, msta->wcid.idx) + 19 * 4;
 
drivers/net/wireless/realtek/rtw88/mac80211.c +5 -9
index 62fb28f14c94..fabca307867a 100644
@@ -88,15 +88,6 @@ static int rtw_ops_config(struct ieee80211_hw *hw, u32 changed)
 		}
 	}
 
-	if (changed & IEEE80211_CONF_CHANGE_PS) {
-		if (hw->conf.flags & IEEE80211_CONF_PS) {
-			rtwdev->ps_enabled = true;
-		} else {
-			rtwdev->ps_enabled = false;
-			rtw_leave_lps(rtwdev);
-		}
-	}
-
 	if (changed & IEEE80211_CONF_CHANGE_CHANNEL)
 		rtw_set_channel(rtwdev);
 
@@ -206,6 +197,7 @@ static int rtw_ops_add_interface(struct ieee80211_hw *hw,
 	rtwvif->bcn_ctrl = bcn_ctrl;
 	config |= PORT_SET_BCN_CTRL;
 	rtw_vif_port_config(rtwdev, rtwvif, config);
+	rtw_recalc_lps(rtwdev, vif);
 
 	mutex_unlock(&rtwdev->mutex);
 
@@ -236,6 +228,7 @@ static void rtw_ops_remove_interface(struct ieee80211_hw *hw,
 	rtwvif->bcn_ctrl = 0;
 	config |= PORT_SET_BCN_CTRL;
 	rtw_vif_port_config(rtwdev, rtwvif, config);
+	rtw_recalc_lps(rtwdev, NULL);
 
 	mutex_unlock(&rtwdev->mutex);
 }
@@ -428,6 +421,9 @@ static void rtw_ops_bss_info_changed(struct ieee80211_hw *hw,
 	if (changed & BSS_CHANGED_ERP_SLOT)
 		rtw_conf_tx(rtwdev, rtwvif);
 
+	if (changed & BSS_CHANGED_PS)
+		rtw_recalc_lps(rtwdev, NULL);
+
 	rtw_vif_port_config(rtwdev, rtwvif, config);
 
 	mutex_unlock(&rtwdev->mutex);
drivers/net/wireless/realtek/rtw88/main.c +2 -2
index 8080ace5ed51..4c8164db4a9e 100644
@@ -248,8 +248,8 @@ static void rtw_watch_dog_work(struct work_struct *work)
 	 * more than two stations associated to the AP, then we can not enter
 	 * lps, because fw does not handle the overlapped beacon interval
 	 *
-	 * mac80211 should iterate vifs and determine if driver can enter
-	 * ps by passing IEEE80211_CONF_PS to us, all we need to do is to
+	 * rtw_recalc_lps() iterate vifs and determine if driver can enter
+	 * ps by vif->type and vif->cfg.ps, all we need to do here is to
 	 * get that vif and check if device is having traffic more than the
 	 * threshold.
 	 */
drivers/net/wireless/realtek/rtw88/ps.c +43 -0

46 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/ps.h +2 -0
index c194386f6db5..5ae83d2526cf 100644
@@ -23,4 +23,6 @@ void rtw_enter_lps(struct rtw_dev *rtwdev, u8 port_id);
 void rtw_leave_lps(struct rtw_dev *rtwdev);
 void rtw_leave_lps_deep(struct rtw_dev *rtwdev);
 enum rtw_lps_deep_mode rtw_get_lps_deep_mode(struct rtw_dev *rtwdev);
+void rtw_recalc_lps(struct rtw_dev *rtwdev, struct ieee80211_vif *new_vif);
+
 #endif
drivers/net/wireless/realtek/rtw89/mac80211.c +7 -9
index a296bfa8188f..a8f478f0cde9 100644
@@ -78,15 +78,6 @@ static int rtw89_ops_config(struct ieee80211_hw *hw, u32 changed)
 	    !(hw->conf.flags & IEEE80211_CONF_IDLE))
 		rtw89_leave_ips(rtwdev);
 
-	if (changed & IEEE80211_CONF_CHANGE_PS) {
-		if (hw->conf.flags & IEEE80211_CONF_PS) {
-			rtwdev->lps_enabled = true;
-		} else {
-			rtw89_leave_lps(rtwdev);
-			rtwdev->lps_enabled = false;
-		}
-	}
-
 	if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
 		rtw89_config_entity_chandef(rtwdev, RTW89_SUB_ENTITY_0,
 					    &hw->conf.chandef);
@@ -142,6 +133,8 @@ static int rtw89_ops_add_interface(struct ieee80211_hw *hw,
 	rtw89_core_txq_init(rtwdev, vif->txq);
 
 	rtw89_btc_ntfy_role_info(rtwdev, rtwvif, NULL, BTC_ROLE_START);
+
+	rtw89_recalc_lps(rtwdev);
 out:
 	mutex_unlock(&rtwdev->mutex);
 
@@ -165,6 +158,8 @@ static void rtw89_ops_remove_interface(struct ieee80211_hw *hw,
 	rtw89_mac_remove_vif(rtwdev, rtwvif);
 	rtw89_core_release_bit_map(rtwdev->hw_port, rtwvif->port);
 	list_del_init(&rtwvif->list);
+	rtw89_recalc_lps(rtwdev);
+
 	mutex_unlock(&rtwdev->mutex);
 }
 
@@ -411,6 +406,9 @@ static void rtw89_ops_bss_info_changed(struct ieee80211_hw *hw,
 	if (changed & BSS_CHANGED_P2P_PS)
 		rtw89_process_p2p_ps(rtwdev, vif);
 
+	if (changed & BSS_CHANGED_PS)
+		rtw89_recalc_lps(rtwdev);
+
 	mutex_unlock(&rtwdev->mutex);
 }
 
drivers/net/wireless/realtek/rtw89/ps.c +26 -0
index bf41a1141679..7cf9f80c7a93 100644
@@ -244,3 +244,29 @@ void rtw89_process_p2p_ps(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif)
 	rtw89_p2p_disable_all_noa(rtwdev, vif);
 	rtw89_p2p_update_noa(rtwdev, vif);
 }
+
+void rtw89_recalc_lps(struct rtw89_dev *rtwdev)
+{
+	struct ieee80211_vif *vif, *found_vif = NULL;
+	struct rtw89_vif *rtwvif;
+	int count = 0;
+
+	rtw89_for_each_rtwvif(rtwdev, rtwvif) {
+		vif = rtwvif_to_vif(rtwvif);
+
+		if (vif->type != NL80211_IFTYPE_STATION) {
+			count = 0;
+			break;
+		}
+
+		count++;
+		found_vif = vif;
+	}
+
+	if (count == 1 && found_vif->cfg.ps) {
+		rtwdev->lps_enabled = true;
+	} else {
+		rtw89_leave_lps(rtwdev);
+		rtwdev->lps_enabled = false;
+	}
+}
drivers/net/wireless/realtek/rtw89/ps.h +1 -0
index 0feae3991623..49fb9d8b6546 100644
@@ -13,5 +13,6 @@ void rtw89_enter_ips(struct rtw89_dev *rtwdev);
 void rtw89_leave_ips(struct rtw89_dev *rtwdev);
 void rtw89_set_coex_ctrl_lps(struct rtw89_dev *rtwdev, bool btc_ctrl);
 void rtw89_process_p2p_ps(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif);
+void rtw89_recalc_lps(struct rtw89_dev *rtwdev);
 
 #endif
drivers/pinctrl/meson/pinctrl-meson-axg.c +1 -0
index 7bfecdfba177..d249a035c2b9 100644
@@ -400,6 +400,7 @@ static struct meson_pmx_group meson_axg_periphs_groups[] = {
 	GPIO_GROUP(GPIOA_15),
 	GPIO_GROUP(GPIOA_16),
 	GPIO_GROUP(GPIOA_17),
+	GPIO_GROUP(GPIOA_18),
 	GPIO_GROUP(GPIOA_19),
 	GPIO_GROUP(GPIOA_20),
 
drivers/platform/surface/aggregator/controller.c +1 -1
index c6537a1b3a2e..30cea324ff95 100644
@@ -825,7 +825,7 @@ static int ssam_cplt_init(struct ssam_cplt *cplt, struct device *dev)
 
 	cplt->dev = dev;
 
-	cplt->wq = create_workqueue(SSAM_CPLT_WQ_NAME);
+	cplt->wq = alloc_workqueue(SSAM_CPLT_WQ_NAME, WQ_UNBOUND | WQ_MEM_RECLAIM, 0);
 	if (!cplt->wq)
 		return -ENOMEM;
 
drivers/platform/surface/surface_aggregator_tabletsw.c +5 -0
index 27d95a6a7851..af8b547cffdc 100644
@@ -201,6 +201,7 @@ enum ssam_kip_cover_state {
 	SSAM_KIP_COVER_STATE_LAPTOP        = 0x03,
 	SSAM_KIP_COVER_STATE_FOLDED_CANVAS = 0x04,
 	SSAM_KIP_COVER_STATE_FOLDED_BACK   = 0x05,
+	SSAM_KIP_COVER_STATE_BOOK          = 0x06,
 };
 
 static const char *ssam_kip_cover_state_name(struct ssam_tablet_sw *sw, u32 state)
@@ -221,6 +222,9 @@ static const char *ssam_kip_cover_state_name(struct ssam_tablet_sw *sw, u32 stat
 	case SSAM_KIP_COVER_STATE_FOLDED_BACK:
 		return "folded-back";
 
+	case SSAM_KIP_COVER_STATE_BOOK:
+		return "book";
+
 	default:
 		dev_warn(&sw->sdev->dev, "unknown KIP cover state: %u\n", state);
 		return "<unknown>";
@@ -233,6 +237,7 @@ static bool ssam_kip_cover_state_is_tablet_mode(struct ssam_tablet_sw *sw, u32 s
 	case SSAM_KIP_COVER_STATE_DISCONNECTED:
 	case SSAM_KIP_COVER_STATE_FOLDED_CANVAS:
 	case SSAM_KIP_COVER_STATE_FOLDED_BACK:
+	case SSAM_KIP_COVER_STATE_BOOK:
 		return true;
 
 	case SSAM_KIP_COVER_STATE_CLOSED:
drivers/s390/block/dasd_ioctl.c +2 -2
index 9327dcdd6e5e..8fca725b3dae 100644
@@ -552,10 +552,10 @@ static int __dasd_ioctl_information(struct dasd_block *block,
 
 	memcpy(dasd_info->type, base->discipline->name, 4);
 
-	spin_lock_irqsave(&block->queue_lock, flags);
+	spin_lock_irqsave(get_ccwdev_lock(base->cdev), flags);
 	list_for_each(l, &base->ccw_queue)
 		dasd_info->chanq_len++;
-	spin_unlock_irqrestore(&block->queue_lock, flags);
+	spin_unlock_irqrestore(get_ccwdev_lock(base->cdev), flags);
 	return 0;
 }
 
drivers/scsi/megaraid/megaraid_sas_fusion.c +1 -1
index af22ffa8f6a2..1475f3e259c1 100644
@@ -3323,7 +3323,7 @@ static void megasas_prepare_secondRaid1_IO(struct megasas_instance *instance,
 	/* copy the io request frame as well as 8 SGEs data for r1 command*/
 	memcpy(r1_cmd->io_request, cmd->io_request,
 	       (sizeof(struct MPI2_RAID_SCSI_IO_REQUEST)));
-	memcpy(&r1_cmd->io_request->SGL, &cmd->io_request->SGL,
+	memcpy(r1_cmd->io_request->SGLs, cmd->io_request->SGLs,
 	       (fusion->max_sge_in_main_msg * sizeof(union MPI2_SGE_IO_UNION)));
 	/*sense buffer is different for r1 command*/
 	r1_cmd->io_request->SenseBufferLowAddress =
drivers/scsi/megaraid/megaraid_sas_fusion.h +4 -1
index 49e9a9048ee7..b677d80e5874 100644
@@ -526,7 +526,10 @@ struct MPI2_RAID_SCSI_IO_REQUEST {
 	__le32			Control;                        /* 0x3C */
 	union MPI2_SCSI_IO_CDB_UNION  CDB;			/* 0x40 */
 	union RAID_CONTEXT_UNION RaidContext;  /* 0x60 */
-	union MPI2_SGE_IO_UNION       SGL;			/* 0x80 */
+	union {
+		union MPI2_SGE_IO_UNION       SGL;		/* 0x80 */
+		DECLARE_FLEX_ARRAY(union MPI2_SGE_IO_UNION, SGLs);
+	};
 };
 
 /*
drivers/soc/qcom/icc-bwmon.c +2 -2
index d07be3700db6..7829549993c9 100644
@@ -603,12 +603,12 @@ static int bwmon_probe(struct platform_device *pdev)
 	bwmon->max_bw_kbps = UINT_MAX;
 	opp = dev_pm_opp_find_bw_floor(dev, &bwmon->max_bw_kbps, 0);
 	if (IS_ERR(opp))
-		return dev_err_probe(dev, ret, "failed to find max peak bandwidth\n");
+		return dev_err_probe(dev, PTR_ERR(opp), "failed to find max peak bandwidth\n");
 
 	bwmon->min_bw_kbps = 0;
 	opp = dev_pm_opp_find_bw_ceil(dev, &bwmon->min_bw_kbps, 0);
 	if (IS_ERR(opp))
-		return dev_err_probe(dev, ret, "failed to find min peak bandwidth\n");
+		return dev_err_probe(dev, PTR_ERR(opp), "failed to find min peak bandwidth\n");
 
 	bwmon->dev = dev;
 
drivers/soundwire/stream.c +3 -1
index bd502368339e..b10ea69a638e 100644
@@ -2019,8 +2019,10 @@ int sdw_stream_add_slave(struct sdw_slave *slave,
 
 skip_alloc_master_rt:
 	s_rt = sdw_slave_rt_find(slave, stream);
-	if (s_rt)
+	if (s_rt) {
+		alloc_slave_rt = false;
 		goto skip_alloc_slave_rt;
+	}
 
 	s_rt = sdw_slave_rt_alloc(slave, m_rt);
 	if (!s_rt) {
drivers/spi/spi-mt65xx.c +3 -0
index 9eab6c20dbc5..6e95efb50acb 100644
@@ -1275,6 +1275,9 @@ static int mtk_spi_remove(struct platform_device *pdev)
 	struct mtk_spi *mdata = spi_master_get_devdata(master);
 	int ret;
 
+	if (mdata->use_spimem && !completion_done(&mdata->spimem_done))
+		complete(&mdata->spimem_done);
+
 	ret = pm_runtime_resume_and_get(&pdev->dev);
 	if (ret < 0)
 		return ret;
drivers/spi/spi-qup.c +18 -19
index 205e54f157b4..fb6b7738b4f5 100644
@@ -1029,23 +1029,8 @@ static int spi_qup_probe(struct platform_device *pdev)
 		return -ENXIO;
 	}
 
-	ret = clk_prepare_enable(cclk);
-	if (ret) {
-		dev_err(dev, "cannot enable core clock\n");
-		return ret;
-	}
-
-	ret = clk_prepare_enable(iclk);
-	if (ret) {
-		clk_disable_unprepare(cclk);
-		dev_err(dev, "cannot enable iface clock\n");
-		return ret;
-	}
-
 	master = spi_alloc_master(dev, sizeof(struct spi_qup));
 	if (!master) {
-		clk_disable_unprepare(cclk);
-		clk_disable_unprepare(iclk);
 		dev_err(dev, "cannot allocate master\n");
 		return -ENOMEM;
 	}
@@ -1093,6 +1078,19 @@ static int spi_qup_probe(struct platform_device *pdev)
 	spin_lock_init(&controller->lock);
 	init_completion(&controller->done);
 
+	ret = clk_prepare_enable(cclk);
+	if (ret) {
+		dev_err(dev, "cannot enable core clock\n");
+		goto error_dma;
+	}
+
+	ret = clk_prepare_enable(iclk);
+	if (ret) {
+		clk_disable_unprepare(cclk);
+		dev_err(dev, "cannot enable iface clock\n");
+		goto error_dma;
+	}
+
 	iomode = readl_relaxed(base + QUP_IO_M_MODES);
 
 	size = QUP_IO_M_OUTPUT_BLOCK_SIZE(iomode);
@@ -1122,7 +1120,7 @@ static int spi_qup_probe(struct platform_device *pdev)
 	ret = spi_qup_set_state(controller, QUP_STATE_RESET);
 	if (ret) {
 		dev_err(dev, "cannot set RESET state\n");
-		goto error_dma;
+		goto error_clk;
 	}
 
 	writel_relaxed(0, base + QUP_OPERATIONAL);
@@ -1146,7 +1144,7 @@ static int spi_qup_probe(struct platform_device *pdev)
 	ret = devm_request_irq(dev, irq, spi_qup_qup_irq,
 			       IRQF_TRIGGER_HIGH, pdev->name, controller);
 	if (ret)
-		goto error_dma;
+		goto error_clk;
 
 	pm_runtime_set_autosuspend_delay(dev, MSEC_PER_SEC);
 	pm_runtime_use_autosuspend(dev);
@@ -1161,11 +1159,12 @@ static int spi_qup_probe(struct platform_device *pdev)
 
 disable_pm:
 	pm_runtime_disable(&pdev->dev);
+error_clk:
+	clk_disable_unprepare(cclk);
+	clk_disable_unprepare(iclk);
 error_dma:
 	spi_qup_release_dma(master);
 error:
-	clk_disable_unprepare(cclk);
-	clk_disable_unprepare(iclk);
 	spi_master_put(master);
 	return ret;
 }
drivers/staging/rtl8192e/rtl8192e/rtl_core.c +3 -3
index 7e11364d718b..c1e50084172d 100644
@@ -48,9 +48,9 @@ static const struct rtl819x_ops rtl819xp_ops = {
 };
 
 static struct pci_device_id rtl8192_pci_id_tbl[] = {
-	{PCI_DEVICE(0x10ec, 0x8192)},
-	{PCI_DEVICE(0x07aa, 0x0044)},
-	{PCI_DEVICE(0x07aa, 0x0047)},
+	{RTL_PCI_DEVICE(0x10ec, 0x8192, rtl819xp_ops)},
+	{RTL_PCI_DEVICE(0x07aa, 0x0044, rtl819xp_ops)},
+	{RTL_PCI_DEVICE(0x07aa, 0x0047, rtl819xp_ops)},
 	{}
 };
 
drivers/staging/rtl8192e/rtl8192e/rtl_core.h +5 -0
index 50f1ec78cc45..7021f9c435d9 100644
@@ -55,6 +55,11 @@
 #define IS_HARDWARE_TYPE_8192SE(_priv)		\
 	(((struct r8192_priv *)rtllib_priv(dev))->card_8192 == NIC_8192SE)
 
+#define RTL_PCI_DEVICE(vend, dev, cfg) \
+	.vendor = (vend), .device = (dev), \
+	.subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, \
+	.driver_data = (kernel_ulong_t)&(cfg)
+
 #define TOTAL_CAM_ENTRY		32
 #define CAM_CONTENT_COUNT	8
 
drivers/tee/amdtee/amdtee_if.h +6 -4
index ff48c3e47375..e2014e21530a 100644
@@ -118,16 +118,18 @@ struct tee_cmd_unmap_shared_mem {
 
 /**
  * struct tee_cmd_load_ta - load Trusted Application (TA) binary into TEE
- * @low_addr:    [in] bits [31:0] of the physical address of the TA binary
- * @hi_addr:     [in] bits [63:32] of the physical address of the TA binary
- * @size:        [in] size of TA binary in bytes
- * @ta_handle:   [out] return handle of the loaded TA
+ * @low_addr:       [in] bits [31:0] of the physical address of the TA binary
+ * @hi_addr:        [in] bits [63:32] of the physical address of the TA binary
+ * @size:           [in] size of TA binary in bytes
+ * @ta_handle:      [out] return handle of the loaded TA
+ * @return_origin:  [out] origin of return code after TEE processing
  */
 struct tee_cmd_load_ta {
 	u32 low_addr;
 	u32 hi_addr;
 	u32 size;
 	u32 ta_handle;
+	u32 return_origin;
 };
 
 /**
drivers/tee/amdtee/call.c +17 -13
index cec6e70f0ac9..8a02c5fe33a6 100644
@@ -423,19 +423,23 @@ int handle_load_ta(void *data, u32 size, struct tee_ioctl_open_session_arg *arg)
 	if (ret) {
 		arg->ret_origin = TEEC_ORIGIN_COMMS;
 		arg->ret = TEEC_ERROR_COMMUNICATION;
-	} else if (arg->ret == TEEC_SUCCESS) {
-		ret = get_ta_refcount(load_cmd.ta_handle);
-		if (!ret) {
-			arg->ret_origin = TEEC_ORIGIN_COMMS;
-			arg->ret = TEEC_ERROR_OUT_OF_MEMORY;
-
-			/* Unload the TA on error */
-			unload_cmd.ta_handle = load_cmd.ta_handle;
-			psp_tee_process_cmd(TEE_CMD_ID_UNLOAD_TA,
-					    (void *)&unload_cmd,
-					    sizeof(unload_cmd), &ret);
-		} else {
-			set_session_id(load_cmd.ta_handle, 0, &arg->session);
+	} else {
+		arg->ret_origin = load_cmd.return_origin;
+
+		if (arg->ret == TEEC_SUCCESS) {
+			ret = get_ta_refcount(load_cmd.ta_handle);
+			if (!ret) {
+				arg->ret_origin = TEEC_ORIGIN_COMMS;
+				arg->ret = TEEC_ERROR_OUT_OF_MEMORY;
+
+				/* Unload the TA on error */
+				unload_cmd.ta_handle = load_cmd.ta_handle;
+				psp_tee_process_cmd(TEE_CMD_ID_UNLOAD_TA,
+						    (void *)&unload_cmd,
+						    sizeof(unload_cmd), &ret);
+			} else {
+				set_session_id(load_cmd.ta_handle, 0, &arg->session);
+			}
 		}
 	}
 	mutex_unlock(&ta_refcount_mutex);
drivers/usb/core/buffer.c +41 -0

44 lines not on this page · raw message

drivers/usb/core/devio.c +14 -6
index 837f3e57f580..984de3f5e8eb 100644
@@ -186,6 +186,7 @@ static int connected(struct usb_dev_state *ps)
 static void dec_usb_memory_use_count(struct usb_memory *usbm, int *count)
 {
 	struct usb_dev_state *ps = usbm->ps;
+	struct usb_hcd *hcd = bus_to_hcd(ps->dev->bus);
 	unsigned long flags;
 
 	spin_lock_irqsave(&ps->lock, flags);
@@ -194,8 +195,8 @@ static void dec_usb_memory_use_count(struct usb_memory *usbm, int *count)
 		list_del(&usbm->memlist);
 		spin_unlock_irqrestore(&ps->lock, flags);
 
-		usb_free_coherent(ps->dev, usbm->size, usbm->mem,
-				usbm->dma_handle);
+		hcd_buffer_free_pages(hcd, usbm->size,
+				usbm->mem, usbm->dma_handle);
 		usbfs_decrease_memory_usage(
 			usbm->size + sizeof(struct usb_memory));
 		kfree(usbm);
@@ -234,7 +235,7 @@ static int usbdev_mmap(struct file *file, struct vm_area_struct *vma)
 	size_t size = vma->vm_end - vma->vm_start;
 	void *mem;
 	unsigned long flags;
-	dma_addr_t dma_handle;
+	dma_addr_t dma_handle = DMA_MAPPING_ERROR;
 	int ret;
 
 	ret = usbfs_increase_memory_usage(size + sizeof(struct usb_memory));
@@ -247,8 +248,8 @@ static int usbdev_mmap(struct file *file, struct vm_area_struct *vma)
 		goto error_decrease_mem;
 	}
 
-	mem = usb_alloc_coherent(ps->dev, size, GFP_USER | __GFP_NOWARN,
-			&dma_handle);
+	mem = hcd_buffer_alloc_pages(hcd,
+			size, GFP_USER | __GFP_NOWARN, &dma_handle);
 	if (!mem) {
 		ret = -ENOMEM;
 		goto error_free_usbm;
@@ -264,7 +265,14 @@ static int usbdev_mmap(struct file *file, struct vm_area_struct *vma)
 	usbm->vma_use_count = 1;
 	INIT_LIST_HEAD(&usbm->memlist);
 
-	if (hcd->localmem_pool || !hcd_uses_dma(hcd)) {
+	/*
+	 * In DMA-unavailable cases, hcd_buffer_alloc_pages allocates
+	 * normal pages and assigns DMA_MAPPING_ERROR to dma_handle. Check
+	 * whether we are in such cases, and then use remap_pfn_range (or
+	 * dma_mmap_coherent) to map normal (or DMA) pages into the user
+	 * space, respectively.
+	 */
+	if (dma_handle == DMA_MAPPING_ERROR) {
 		if (remap_pfn_range(vma, vma->vm_start,
 				    virt_to_phys(usbm->mem) >> PAGE_SHIFT,
 				    size, vma->vm_page_prot) < 0) {
drivers/vdpa/vdpa_user/vduse_dev.c +3 -0
index 31017ebc4d7c..72f924ec4658 100644
@@ -1443,6 +1443,9 @@ static bool vduse_validate_config(struct vduse_dev_config *config)
 	if (config->vq_num > 0xffff)
 		return false;
 
+	if (!config->name[0])
+		return false;
+
 	if (!device_is_allowed(config->device_id))
 		return false;
 
drivers/vhost/vdpa.c +17 -4
index 6f532da59e08..d591f77961aa 100644
@@ -549,7 +549,14 @@ static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, unsigned int cmd,
 		if (r)
 			return r;
 
-		vq->last_avail_idx = vq_state.split.avail_index;
+		if (vhost_has_feature(vq, VIRTIO_F_RING_PACKED)) {
+			vq->last_avail_idx = vq_state.packed.last_avail_idx |
+					     (vq_state.packed.last_avail_counter << 15);
+			vq->last_used_idx = vq_state.packed.last_used_idx |
+					    (vq_state.packed.last_used_counter << 15);
+		} else {
+			vq->last_avail_idx = vq_state.split.avail_index;
+		}
 		break;
 	}
 
@@ -567,9 +574,15 @@ static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, unsigned int cmd,
 		break;
 
 	case VHOST_SET_VRING_BASE:
-		vq_state.split.avail_index = vq->last_avail_idx;
-		if (ops->set_vq_state(vdpa, idx, &vq_state))
-			r = -EINVAL;
+		if (vhost_has_feature(vq, VIRTIO_F_RING_PACKED)) {
+			vq_state.packed.last_avail_idx = vq->last_avail_idx & 0x7fff;
+			vq_state.packed.last_avail_counter = !!(vq->last_avail_idx & 0x8000);
+			vq_state.packed.last_used_idx = vq->last_used_idx & 0x7fff;
+			vq_state.packed.last_used_counter = !!(vq->last_used_idx & 0x8000);
+		} else {
+			vq_state.split.avail_index = vq->last_avail_idx;
+		}
+		r = ops->set_vq_state(vdpa, idx, &vq_state);
 		break;
 
 	case VHOST_SET_VRING_CALL:
drivers/vhost/vhost.c +13 -5
index 43c9770b86e5..1a059b028c50 100644
@@ -1633,17 +1633,25 @@ long vhost_vring_ioctl(struct vhost_dev *d, unsigned int ioctl, void __user *arg
 			r = -EFAULT;
 			break;
 		}
-		if (s.num > 0xffff) {
-			r = -EINVAL;
-			break;
+		if (vhost_has_feature(vq, VIRTIO_F_RING_PACKED)) {
+			vq->last_avail_idx = s.num & 0xffff;
+			vq->last_used_idx = (s.num >> 16) & 0xffff;
+		} else {
+			if (s.num > 0xffff) {
+				r = -EINVAL;
+				break;
+			}
+			vq->last_avail_idx = s.num;
 		}
-		vq->last_avail_idx = s.num;
 		/* Forget the cached index value. */
 		vq->avail_idx = vq->last_avail_idx;
 		break;
 	case VHOST_GET_VRING_BASE:
 		s.index = idx;
-		s.num = vq->last_avail_idx;
+		if (vhost_has_feature(vq, VIRTIO_F_RING_PACKED))
+			s.num = (u32)vq->last_avail_idx | ((u32)vq->last_used_idx << 16);
+		else
+			s.num = vq->last_avail_idx;
 		if (copy_to_user(argp, &s, sizeof s))
 			r = -EFAULT;
 		break;
drivers/vhost/vhost.h +6 -2
index 790b296271f1..5e17c4aa7374 100644
@@ -85,13 +85,17 @@ struct vhost_virtqueue {
 	/* The routine to call when the Guest pings us, or timeout. */
 	vhost_work_fn_t handle_kick;
 
-	/* Last available index we saw. */
+	/* Last available index we saw.
+	 * Values are limited to 0x7fff, and the high bit is used as
+	 * a wrap counter when using VIRTIO_F_RING_PACKED. */
 	u16 last_avail_idx;
 
 	/* Caches available index value from user. */
 	u16 avail_idx;
 
-	/* Last index we used. */
+	/* Last index we used.
+	 * Values are limited to 0x7fff, and the high bit is used as
+	 * a wrap counter when using VIRTIO_F_RING_PACKED. */
 	u16 last_used_idx;
 
 	/* Used flags */
fs/afs/dir.c +3 -0
index f73b2f62afaa..07dc4ec73520 100644
@@ -1357,6 +1357,7 @@ static int afs_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
 	op->dentry	= dentry;
 	op->create.mode	= S_IFDIR | mode;
 	op->create.reason = afs_edit_dir_for_mkdir;
+	op->mtime	= current_time(dir);
 	op->ops		= &afs_mkdir_operation;
 	return afs_do_sync_operation(op);
 }
@@ -1660,6 +1661,7 @@ static int afs_create(struct user_namespace *mnt_userns, struct inode *dir,
 	op->dentry	= dentry;
 	op->create.mode	= S_IFREG | mode;
 	op->create.reason = afs_edit_dir_for_create;
+	op->mtime	= current_time(dir);
 	op->ops		= &afs_create_operation;
 	return afs_do_sync_operation(op);
 
@@ -1795,6 +1797,7 @@ static int afs_symlink(struct user_namespace *mnt_userns, struct inode *dir,
 	op->ops			= &afs_symlink_operation;
 	op->create.reason	= afs_edit_dir_for_symlink;
 	op->create.symlink	= content;
+	op->mtime		= current_time(dir);
 	return afs_do_sync_operation(op);
 
 error:
fs/ceph/caps.c +6 -0
index faf117802112..cdb26aadae12 100644
@@ -1626,6 +1626,7 @@ void ceph_flush_snaps(struct ceph_inode_info *ci,
 	struct inode *inode = &ci->netfs.inode;
 	struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc;
 	struct ceph_mds_session *session = NULL;
+	bool need_put = false;
 	int mds;
 
 	dout("ceph_flush_snaps %p\n", inode);
@@ -1670,8 +1671,13 @@ void ceph_flush_snaps(struct ceph_inode_info *ci,
 		ceph_put_mds_session(session);
 	/* we flushed them all; remove this inode from the queue */
 	spin_lock(&mdsc->snap_flush_lock);
+	if (!list_empty(&ci->i_snap_flush_item))
+		need_put = true;
 	list_del_init(&ci->i_snap_flush_item);
 	spin_unlock(&mdsc->snap_flush_lock);
+
+	if (need_put)
+		iput(inode);
 }
 
 /*
fs/ceph/snap.c +3 -1
index 0b236ebd989f..2e73ba62bd7a 100644
@@ -693,8 +693,10 @@ int __ceph_finish_cap_snap(struct ceph_inode_info *ci,
 	     capsnap->size);
 
 	spin_lock(&mdsc->snap_flush_lock);
-	if (list_empty(&ci->i_snap_flush_item))
+	if (list_empty(&ci->i_snap_flush_item)) {
+		ihold(inode);
 		list_add_tail(&ci->i_snap_flush_item, &mdsc->snap_flush_list);
+	}
 	spin_unlock(&mdsc->snap_flush_lock);
 	return 1;  /* caller may want to ceph_flush_snaps */
 }
fs/ext4/super.c +1 -5
index 5db1060b8684..760249d9152d 100644
@@ -6341,7 +6341,6 @@ static int __ext4_remount(struct fs_context *fc, struct super_block *sb)
 	struct ext4_mount_options old_opts;
 	ext4_group_t g;
 	int err = 0;
-	int enable_rw = 0;
 #ifdef CONFIG_QUOTA
 	int enable_quota = 0;
 	int i, j;
@@ -6528,7 +6527,7 @@ static int __ext4_remount(struct fs_context *fc, struct super_block *sb)
 			if (err)
 				goto restore_opts;
 
-			enable_rw = 1;
+			sb->s_flags &= ~SB_RDONLY;
 			if (ext4_has_feature_mmp(sb)) {
 				err = ext4_multi_mount_protect(sb,
 						le64_to_cpu(es->s_mmp_block));
@@ -6575,9 +6574,6 @@ static int __ext4_remount(struct fs_context *fc, struct super_block *sb)
 	if (!test_opt(sb, BLOCK_VALIDITY) && sbi->s_system_blks)
 		ext4_release_system_zone(sb);
 
-	if (enable_rw)
-		sb->s_flags &= ~SB_RDONLY;
-
 	/*
 	 * Reinitialize lazy itable initialization thread based on
 	 * current settings
fs/ext4/xattr.c +4 -2
index fddde5045d0c..51d642a95bd2 100644
@@ -2006,8 +2006,9 @@ ext4_xattr_block_set(handle_t *handle, struct inode *inode,
 			else {
 				u32 ref;
 
+#ifdef EXT4_XATTR_DEBUG
 				WARN_ON_ONCE(dquot_initialize_needed(inode));
-
+#endif
 				/* The old block is released after updating
 				   the inode. */
 				error = dquot_alloc_block(inode,
@@ -2070,8 +2071,9 @@ ext4_xattr_block_set(handle_t *handle, struct inode *inode,
 			/* We need to allocate a new block */
 			ext4_fsblk_t goal, block;
 
+#ifdef EXT4_XATTR_DEBUG
 			WARN_ON_ONCE(dquot_initialize_needed(inode));
-
+#endif
 			goal = ext4_group_first_block_no(sb,
 						EXT4_I(inode)->i_block_group);
 			block = ext4_new_meta_blocks(handle, inode, goal, 0,
fs/ksmbd/connection.c +12 -0
index b371754540f9..bf8531b80a18 100644
@@ -296,6 +296,9 @@ bool ksmbd_conn_alive(struct ksmbd_conn *conn)
 	return true;
 }
 
+#define SMB1_MIN_SUPPORTED_HEADER_SIZE (sizeof(struct smb_hdr))
+#define SMB2_MIN_SUPPORTED_HEADER_SIZE (sizeof(struct smb2_hdr) + 4)
+
 /**
  * ksmbd_conn_handler_loop() - session thread to listen on new smb requests
  * @p:		connection instance
@@ -352,6 +355,9 @@ int ksmbd_conn_handler_loop(void *p)
 		if (pdu_size > MAX_STREAM_PROT_LEN)
 			break;
 
+		if (pdu_size < SMB1_MIN_SUPPORTED_HEADER_SIZE)
+			break;
+
 		/* 4 for rfc1002 length field */
 		/* 1 for implied bcc[0] */
 		size = pdu_size + 4 + 1;
@@ -379,6 +385,12 @@ int ksmbd_conn_handler_loop(void *p)
 			continue;
 		}
 
+		if (((struct smb2_hdr *)smb2_get_msg(conn->request_buf))->ProtocolId ==
+		    SMB2_PROTO_NUMBER) {
+			if (pdu_size < SMB2_MIN_SUPPORTED_HEADER_SIZE)
+				break;
+		}
+
 		if (!default_conn_ops.process_fn) {
 			pr_err("No connection request callback\n");
 			break;
fs/ksmbd/oplock.c +24 -42

42 lines not on this page · raw message

fs/ksmbd/smb2pdu.c +6 -7
index 01887570efe8..56f661e5ef62 100644

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

include/linux/netdevice.h +6 -3
index eac51e22a52a..d5eb3ab8e38f 100644

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

include/linux/page-flags.h +6 -0
index 0b0ae5084e60..59314d228ec3 100644

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

include/linux/usb/hcd.h +5 -0
index 78cd566ee238..5a89928ea953 100644

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

include/net/bluetooth/hci.h +1 -0
index b350d92136c8..a674221d151d 100644

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

include/net/bluetooth/hci_core.h +1 -0
index 061fec6fd015..84c5ce57eab6 100644

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

include/net/neighbour.h +1 -1
index 2f2a6023fb0e..94a1599824d8 100644

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

include/net/netns/ipv6.h +1 -1
index b4af4837d80b..f6e6a3ab9148 100644

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

include/net/ping.h +1 -5
index 9233ad3de0ad..bc7779262e60 100644

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

include/net/pkt_sched.h +2 -0
index 38207873eda6..8ab75128512a 100644

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

include/net/rpl.h +0 -3
index 308ef0a05cae..30fe780d1e7c 100644

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

include/net/sch_generic.h +4 -2
index af4aa66aaa4e..989eb972fcae 100644

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

include/net/sock.h +13 -5
index f11b98bd0244..2f35b82a123f 100644

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

kernel/bpf/map_in_map.c +6 -2
index 135205d0d560..8e87f69aae60 100644

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

kernel/fork.c +1 -1
index ec913b13c5ed..6bb91fbbf73c 100644

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

kernel/trace/bpf_trace.c +11 -1
index 9d4163abadf4..1642548892a8 100644

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

lib/cpu_rmap.c +1 -1
index e77f12bb3c77..1833ad73de6f 100644

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

mm/Kconfig.debug +1 -0
index ce8dded36de9..32c2df12a5ec 100644

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

mm/page_table_check.c +6 -0
index 433dbce13fe1..4d0506537621 100644

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

net/batman-adv/distributed-arp-table.c +1 -1
index fefb51a5f606..a0233252032d 100644

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

net/bluetooth/hci_conn.c +2 -0
index c2c6dea01cc9..ab9f00252dc2 100644

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

net/bluetooth/hci_core.c +6 -4
index 334e308451f5..ca42129f8f91 100644

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

net/bluetooth/hci_sync.c +17 -6
index e8b78104a407..1805ddee0cd0 100644

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

net/bluetooth/l2cap_core.c +13 -0
index ee8f806534df..02fc9961464c 100644

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

net/can/j1939/main.c +13 -11
index 821d4ff303b3..ecff1c947d68 100644

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

net/can/j1939/socket.c +5 -0
index 4fb3a99b5f67..9c828067b448 100644

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

net/core/dev.c +5 -3
index 93d430693ca0..a2e3c6470ab3 100644

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

net/core/skmsg.c +2 -1
index 9e0f69451563..65fb6f5b21b2 100644

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

net/ipv4/sysctl_net_ipv4.c +4 -4
index 39dbeb607196..f68762ce4d8a 100644

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

net/ipv4/tcp_offload.c +9 -10
index 45dda7889387..4851211aa60d 100644

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

net/ipv6/exthdrs.c +11 -18
index a8d961d3a477..5fa0e37305d9 100644

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

net/mac80211/he.c +10 -5
index 729f261520c7..0322abae0825 100644

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

net/mac80211/mlme.c +7 -1
index 0125b3e6175b..dc9e7eb7dd85 100644

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

net/mac80211/rx.c +3 -1
index 44e407e1a14c..0f81492da0b4 100644

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

net/mptcp/pm.c +19 -4
index 70f0ced3ca86..10c288a0cb0c 100644

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

net/mptcp/pm_netlink.c +18 -0
index 1c69e476f4ad..01d34ee4525e 100644

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

net/mptcp/pm_userspace.c +47 -1

48 lines not on this page · raw message

net/mptcp/protocol.h +1 -0
index 55fc5e42082e..fc00dd587a29 100644

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

net/netfilter/ipset/ip_set_core.c +8 -0
index 46ebee9400da..9a6b64779e64 100644

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

net/netfilter/nf_conntrack_core.c +3 -0
index a0e9c7af0846..796026296609 100644

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

net/netfilter/nf_tables_api.c +1 -1
index 31775d54f4b4..437891cb8c41 100644

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

net/netfilter/nft_bitwise.c +1 -1
index e6e402b247d0..b84312df9aa1 100644

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

net/sched/act_police.c +5 -5
index 0adb26e366a7..94be21378e7c 100644

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

net/sched/cls_api.c +1 -2
index 7b2aa04a7cdf..abaf75300497 100644

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

net/sched/sch_api.c +16 -10
index f6a7b876d595..6fb345ec2264 100644

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

net/sched/sch_fq_pie.c +9 -1
index 6980796d435d..591d87d5e5c0 100644

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

net/sched/sch_generic.c +15 -15
index a9aadc4e6858..ee43e8ac039e 100644

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

net/sched/sch_mq.c +4 -4
index d0bc660d7401..c860119a8f09 100644

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

net/sched/sch_mqprio.c +4 -4
index 4c68abaa289b..9f26fb7d5823 100644

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

net/sched/sch_pie.c +4 -1
index 265c238047a4..b60b31ef71cc 100644

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

net/sched/sch_red.c +4 -1
index 98129324e157..16277b6a0238 100644

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

net/sched/sch_sfq.c +4 -1
index abd436307d6a..66dcb18638fe 100644

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

net/sched/sch_taprio.c +3 -3
index c322a61eaeea..a274a9332f33 100644

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

net/sched/sch_teql.c +1 -1
index 16f9238aa51d..7721239c185f 100644

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

net/smc/smc_llc.c +2 -2
index 3008dfdf7c55..760f8bbff822 100644

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

net/wireless/core.c +2 -2
index 5b0c4d5b80cf..b3ec9eaec36b 100644

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

net/wireless/nl80211.c +2 -0
index 7320d676ce3a..087c0c442e23 100644

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

sound/isa/gus/gus_pcm.c +1 -1
index 230f65a0e4b0..388db5fb65bd 100644

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

sound/pci/cmipci.c +3 -3
index 727db6d43391..6d25c12d9ef0 100644

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

sound/pci/hda/hda_codec.c +5 -1
index 9f79c0ac2bda..bd19f92aeeec 100644

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

sound/pci/hda/patch_realtek.c +9 -0
index 7b5f194513c7..48a0e87136f1 100644

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

sound/pci/ice1712/aureon.c +4 -3
index 40a0e0095030..4b59f94ec348 100644

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

sound/pci/ice1712/ice1712.c +9 -5
index a5241a287851..3b0c3e70987b 100644

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

sound/pci/ice1712/ice1724.c +10 -6
index 6fab2ad85bbe..1dc776acd637 100644

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

sound/pci/ymfpci/ymfpci_main.c +3 -3
index b492c32ce070..f629b3956a69 100644

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

sound/soc/codecs/wsa881x.c +0 -1
index 046843b57b03..264ec05a3c67 100644

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

sound/soc/codecs/wsa883x.c +0 -1
index 6e9a64c5948e..b152f4e5c4f2 100644

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

sound/soc/generic/simple-card-utils.c +1 -1
index be69bbc47f81..8811321717fb 100644

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

sound/soc/mediatek/mt8195/mt8195-afe-clk.c +0 -5
index 9ca2cb8c8a9c..f35318ae0739 100644

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

sound/soc/mediatek/mt8195/mt8195-afe-clk.h +0 -1
index 40663e31becd..a08c0ee6c860 100644

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

sound/soc/mediatek/mt8195/mt8195-afe-pcm.c +2 -7
index 72b2c6d629b9..03dabc056b91 100644

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

sound/soc/mediatek/mt8195/mt8195-audsys-clk.c +24 -23

47 lines not on this page · raw message

sound/soc/mediatek/mt8195/mt8195-audsys-clk.h +0 -1
index 239d31016ba7..69db2dd1c9e0 100644

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

tools/testing/selftests/bpf/prog_tests/sockopt_sk.c +28 -0
index 60d952719d27..05d0e07da394 100644

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

tools/testing/selftests/bpf/progs/sockopt_sk.c +12 -0
index c8d810010a94..fe1df4cd206e 100644

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

tools/testing/selftests/net/mptcp/mptcp_join.sh +10 -1
index c7da2bd7c328..6be19b103824 100755

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.