Skip to contentSkip to conversation

Linux 6.0.13

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Dec 14, 2022 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.0.13 kernel.

All users of the 6.0 kernel series must upgrade.

The updated 6.0.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.0.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

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

 .clang-format                                                 |    1 
 Makefile                                                      |    2 
 arch/arm/boot/dts/imx7s.dtsi                                  |    4 
 arch/arm/boot/dts/rk3036-evb.dts                              |    3 
 arch/arm/boot/dts/rk3066a-mk808.dts                           |    2 
 arch/arm/boot/dts/rk3188-radxarock.dts                        |    2 
 arch/arm/boot/dts/rk3188.dtsi                                 |    3 
 arch/arm/boot/dts/rk3288-evb-act8846.dts                      |    2 
 arch/arm/boot/dts/rk3288-evb.dtsi                             |    6 
 arch/arm/boot/dts/rk3288-firefly.dtsi                         |    3 
 arch/arm/boot/dts/rk3288-miqi.dts                             |    3 
 arch/arm/boot/dts/rk3288-rock2-square.dts                     |    3 
 arch/arm/boot/dts/rk3288-vmarc-som.dtsi                       |    1 
 arch/arm/boot/dts/rk3xxx.dtsi                                 |    7 
 arch/arm/include/asm/perf_event.h                             |    2 
 arch/arm/include/asm/pgtable-nommu.h                          |    6 
 arch/arm/include/asm/pgtable.h                                |   16 
 arch/arm/mach-at91/sama5.c                                    |    2 
 arch/arm/mm/fault.c                                           |   18 
 arch/arm/mm/fault.h                                           |    9 
 arch/arm/mm/nommu.c                                           |   19 
 arch/arm64/boot/dts/rockchip/px30-evb.dts                     |   10 
 arch/arm64/boot/dts/rockchip/rk3308-evb.dts                   |   12 
 arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts                |    2 
 arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts               |    2 
 arch/arm64/boot/dts/rockchip/rk3368-orion-r68-meta.dts        |    2 
 arch/arm64/boot/dts/rockchip/rk3368-r88.dts                   |    2 
 arch/arm64/boot/dts/rockchip/rk3399-khadas-edge.dtsi          |    2 
 arch/arm64/boot/dts/rockchip/rk3399-nanopc-t4.dts             |    2 
 arch/arm64/boot/dts/rockchip/rk3399-nanopi-m4b.dts            |    2 
 arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts              |    4 
 arch/arm64/boot/dts/rockchip/rk3399-roc-pc-plus.dts           |    2 
 arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi               |    2 
 arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi            |    1 
 arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator.dts    |    4 
 arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi         |    2 
 arch/arm64/boot/dts/rockchip/rk3566-pinenote.dtsi             |    2 
 arch/arm64/boot/dts/rockchip/rk3566-roc-pc.dts                |    8 
 arch/loongarch/Makefile                                       |    2 
 arch/loongarch/include/asm/pgtable.h                          |    8 
 arch/loongarch/kernel/acpi.c                                  |   31 -
 arch/loongarch/kernel/setup.c                                 |    1 
 arch/loongarch/kernel/unwind_prologue.c                       |    3 
 arch/s390/kvm/vsie.c                                          |    4 
 drivers/bluetooth/btusb.c                                     |    6 
 drivers/crypto/ccp/sev-dev.c                                  |   16 
 drivers/gpio/gpio-amd8111.c                                   |    4 
 drivers/gpio/gpio-rockchip.c                                  |    1 
 drivers/gpio/gpiolib.c                                        |   42 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_job.c                       |    6 
 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h                       |    7 
 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c                        |   24 -
 drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c                         |    4 
 drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dccg.c           |    7 
 drivers/gpu/drm/amd/display/dc/dcn314/dcn314_hwseq.c          |    3 
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dccg.c             |    4 
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c            |    1 
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource_helpers.c |    2 
 drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c          |    2 
 drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h         |    2 
 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c                     |    6 
 drivers/gpu/drm/bridge/ti-sn65dsi86.c                         |    4 
 drivers/gpu/drm/drm_gem_shmem_helper.c                        |   18 
 drivers/gpu/drm/i915/display/intel_display.c                  |   10 
 drivers/gpu/drm/vmwgfx/vmwgfx_msg.c                           |    6 
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c                          |    4 
 drivers/hid/hid-core.c                                        |    3 
 drivers/hid/hid-ids.h                                         |    4 
 drivers/hid/hid-ite.c                                         |    5 
 drivers/hid/hid-lg4ff.c                                       |    6 
 drivers/hid/hid-quirks.c                                      |    3 
 drivers/hid/hid-uclogic-core.c                                |    1 
 drivers/hid/hid-uclogic-rdesc.c                               |    2 
 drivers/hid/i2c-hid/Kconfig                                   |    4 
 drivers/media/common/videobuf2/videobuf2-core.c               |  102 +++-
 drivers/media/v4l2-core/v4l2-dv-timings.c                     |   20 
 drivers/net/bonding/bond_main.c                               |    2 
 drivers/net/can/can327.c                                      |   17 
 drivers/net/can/slcan/slcan-core.c                            |   10 
 drivers/net/can/usb/esd_usb.c                                 |    6 
 drivers/net/dsa/mv88e6xxx/chip.c                              |    7 
 drivers/net/dsa/sja1105/sja1105_devlink.c                     |    2 
 drivers/net/dsa/sja1105/sja1105_main.c                        |    2 
 drivers/net/ethernet/aeroflex/greth.c                         |    1 
 drivers/net/ethernet/broadcom/Kconfig                         |    3 
 drivers/net/ethernet/cavium/thunder/nicvf_main.c              |    4 
 drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c    |    4 
 drivers/net/ethernet/hisilicon/hisi_femac.c                   |    2 
 drivers/net/ethernet/hisilicon/hix5hd2_gmac.c                 |    2 
 drivers/net/ethernet/intel/e1000e/netdev.c                    |    4 
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c                |   12 
 drivers/net/ethernet/intel/i40e/i40e_main.c                   |   19 
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c            |    2 
 drivers/net/ethernet/intel/igb/igb_ethtool.c                  |    2 
 drivers/net/ethernet/marvell/mvneta.c                         |    2 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c          |    7 
 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c             |    3 
 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h             |   14 
 drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.c           |  100 ++--
 drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.h           |    1 
 drivers/net/ethernet/microchip/encx24j600-regmap.c            |    4 
 drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c           |    2 
 drivers/net/ethernet/microchip/sparx5/sparx5_main.c           |    3 
 drivers/net/ethernet/microchip/sparx5/sparx5_packet.c         |   41 +
 drivers/net/ethernet/microsoft/mana/gdma.h                    |    9 
 drivers/net/ethernet/microsoft/mana/mana_en.c                 |   16 
 drivers/net/ethernet/netronome/nfp/nfdk/dp.c                  |    6 
 drivers/net/ethernet/renesas/ravb_main.c                      |    2 
 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c         |    8 
 drivers/net/ethernet/ti/am65-cpsw-nuss.c                      |    2 
 drivers/net/ieee802154/ca8210.c                               |    2 
 drivers/net/ieee802154/cc2520.c                               |    2 
 drivers/net/macsec.c                                          |    1 
 drivers/net/mdio/fwnode_mdio.c                                |   25 -
 drivers/net/mdio/of_mdio.c                                    |    3 
 drivers/net/phy/mdio_device.c                                 |    2 
 drivers/net/phy/mxl-gpy.c                                     |   85 +++
 drivers/net/plip/plip.c                                       |    4 
 drivers/net/thunderbolt.c                                     |    1 
 drivers/net/usb/qmi_wwan.c                                    |    1 
 drivers/net/vmxnet3/vmxnet3_drv.c                             |   27 +
 drivers/net/wwan/iosm/iosm_ipc_mux.c                          |    1 
 drivers/net/xen-netback/common.h                              |    2 
 drivers/net/xen-netback/interface.c                           |    6 
 drivers/net/xen-netback/netback.c                             |  225 +++++-----
 drivers/net/xen-netback/rx.c                                  |    8 
 drivers/net/xen-netfront.c                                    |    6 
 drivers/nvme/host/core.c                                      |    8 
 drivers/platform/x86/asus-nb-wmi.c                            |   28 -
 drivers/platform/x86/asus-wmi.c                               |   86 +++
 drivers/platform/x86/asus-wmi.h                               |   10 
 drivers/regulator/slg51000-regulator.c                        |    2 
 drivers/regulator/twl6030-regulator.c                         |   15 
 drivers/s390/net/qeth_l2_main.c                               |    2 
 drivers/soundwire/dmi-quirks.c                                |   27 +
 drivers/soundwire/intel.c                                     |    1 
 drivers/spi/spi-mt65xx.c                                      |    8 
 drivers/usb/dwc3/gadget.c                                     |    3 
 drivers/video/fbdev/core/fbcon.c                              |    2 
 fs/btrfs/send.c                                               |   24 +
 fs/file.c                                                     |   11 
 fs/fscache/cookie.c                                           |    8 
 include/asm-generic/tlb.h                                     |    4 
 include/linux/cgroup.h                                        |    1 
 include/linux/mm.h                                            |   29 -
 include/linux/platform_data/x86/asus-wmi.h                    |    1 
 include/net/bluetooth/hci.h                                   |   12 
 include/net/ping.h                                            |    3 
 include/trace/events/fscache.h                                |    2 
 io_uring/io_uring.c                                           |    4 
 kernel/cgroup/cgroup-internal.h                               |    1 
 mm/gup.c                                                      |    2 
 mm/hugetlb.c                                                  |   25 -
 mm/khugepaged.c                                               |   63 ++
 mm/madvise.c                                                  |    6 
 mm/memcontrol.c                                               |   15 
 mm/memory.c                                                   |   25 -
 mm/mmu_gather.c                                               |    4 
 mm/shmem.c                                                    |   11 
 net/9p/trans_fd.c                                             |    6 
 net/9p/trans_xen.c                                            |    9 
 net/bluetooth/6lowpan.c                                       |    1 
 net/bluetooth/af_bluetooth.c                                  |    4 
 net/bluetooth/hci_codec.c                                     |   19 
 net/bluetooth/hci_core.c                                      |    8 
 net/bluetooth/hci_sync.c                                      |   19 
 net/bluetooth/iso.c                                           |    1 
 net/can/af_can.c                                              |    4 
 net/dsa/tag_hellcreek.c                                       |    3 
 net/dsa/tag_ksz.c                                             |    3 
 net/dsa/tag_sja1105.c                                         |    3 
 net/ipv4/fib_frontend.c                                       |    3 
 net/ipv4/fib_semantics.c                                      |    1 
 net/ipv4/ip_gre.c                                             |   48 +-
 net/ipv4/ping.c                                               |    7 
 net/ipv6/ip6_output.c                                         |    5 
 net/mac802154/iface.c                                         |    1 
 net/netfilter/nf_conntrack_core.c                             |    6 
 net/netfilter/nf_conntrack_netlink.c                          |   19 
 net/netfilter/nf_flow_table_offload.c                         |    6 
 net/netfilter/nft_set_pipapo.c                                |    5 
 net/nfc/nci/ntf.c                                             |    6 
 net/tipc/link.c                                               |    4 
 net/tipc/node.c                                               |   12 
 net/unix/diag.c                                               |   20 
 sound/core/seq/seq_memory.c                                   |   11 
 sound/pci/hda/patch_realtek.c                                 |   62 +-
 sound/soc/codecs/rt711-sdca-sdw.c                             |    2 
 sound/soc/codecs/wm8962.c                                     |    8 
 sound/soc/soc-pcm.c                                           |    2 
 tools/testing/selftests/net/config                            |    2 
 tools/testing/selftests/net/fcnal-test.sh                     |   11 
 tools/testing/selftests/net/fib_tests.sh                      |   37 +
 tools/testing/selftests/net/pmtu.sh                           |   10 
 tools/testing/selftests/net/rtnetlink.sh                      |    2 
 195 files changed, 1461 insertions(+), 627 deletions(-)

Akihiko Odaki (2):
e1000e: Fix TX dispatch condition
igb: Allocate MSI-X vector when testing

Alexandra Winter (1):
s390/qeth: fix use-after-free in hsci

Anastasia Belova (1):
HID: hid-lg4ff: Add check for empty lbuf

Andreas Kemnade (1):
regulator: twl6030: fix get status of twl6032 regulators

Ankit Patel (1):
HID: usbhid: Add ALWAYS_POLL quirk for some mice

Artem Chernyshev (3):
net: dsa: ksz: Check return value
net: dsa: hellcreek: Check return value
net: dsa: sja1105: Check return value

Aurabindo Pillai (1):
drm/amd/display: fix array index out of bound error in DCN32 DML

Benjamin Tissoires (1):
HID: fix I2C_HID not selected when I2C_HID_OF_ELAN is

Casper Andersson (1):
net: microchip: sparx5: correctly free skb in xmit

Chancel Liu (1):
ASoC: wm8962: Wait for updated value of WM8962_CLOCKING1 register

Chen Zhongjin (1):
Bluetooth: Fix not cleanup led when bt_init fails

Chethan T N (2):
Bluetooth: Remove codec id field in vendor codec definition
Bluetooth: Fix support for Read Local Supported Codecs V2

Dan Carpenter (2):
net: mvneta: Prevent out of bounds read in mvneta_config_rss()
net: mvneta: Fix an out of bounds check

Daniel Díaz (1):
selftests/net: Find nettest in current directory

Dave Wysochanski (1):
fscache: Fix oops due to race with cookie_lru and use_cookie

Davide Tronchin (1):

      net: usb: qmi_wwan: add u-blox 0x1342 composition

Dawei Li (1):
drm/vmwgfx: Fix race issue calling pin_user_pages

Dillon Varone (2):
drm/amd/display: Use viewport height for subvp mall allocation size drm/amd/display: Use new num clk levels struct for max mclk index

Dominique Martinet (1):
9p/xen: check logical size for buffer size

Eli Cohen (1):
net/mlx5: Lag, avoid lockdep warnings

Emeel Hakim (1):
macsec: add missing attribute validation for offload

Eric Dumazet (1):
ipv6: avoid use-after-free in ip6_fragment()

FUKAUMI Naoki (1):
arm64: dts: rockchip: keep I2S1 disabled for GPIO function on ROCK Pi 4 series

Filipe Manana (1):
btrfs: send: avoid unaligned encoded writes when attempting to clone range

Florian Westphal (1):
inet: ping: use hlist_nulls rcu iterator during lookup

Francesco Dolcini (1):
Revert "ARM: dts: imx7: Fix NAND controller size-cells"

Frank Jungclaus (1):
can: esd_usb: Allow REC and TEC to return to zero

Furkan Kardame (3):
arm64: dts: rockchip: Fix gmac failure of rgmii-id from rk3566-roc-pc
arm64: dts: rockchip: Fix i2c3 pinctrl on rk3566-roc-pc
arm64: dts: rockchip: remove i2c5 from rk3566-roc-pc

GUO Zihua (1):
9p/fd: Use P9_HDRSZ for header size

Giulio Benetti (1):
ARM: 9266/1: mm: fix no-MMU ZERO_PAGE() implementation

Greg Kroah-Hartman (1):

      Linux 6.0.13

Guillaume BRUN (1):
drm: bridge: dw_hdmi: fix preference of RGB modes over YUV420

Haiyang Zhang (1):
net: mana: Fix race on per-CQ variable napi work_done

Hangbin Liu (2):
ip_gre: do not report erspan version on GRE interface
bonding: get correct NA dest address

Hans Verkuil (2):
media: videobuf2-core: take mmap_lock in vb2_get_unmapped_area()
media: v4l2-dv-timings.c: fix too strict blanking sanity checks

Hans de Goede (1):
HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch V 10

Harshit Mogalapalli (1):
io_uring: Fix a null-ptr-deref in io_tctx_exit_cb()

Hauke Mehrtens (1):
ca8210: Fix crash by zero initializing data

Huacai Chen (2):
LoongArch: Combine acpi_boot_table_init() and acpi_boot_init()
LoongArch: Set _PAGE_DIRTY only if _PAGE_MODIFIED is set in {pmd,pte}_mkwrite()

Hugh Dickins (1):
tmpfs: fix data loss from failed fallocate

Ido Schimmel (2):
ipv4: Fix incorrect route flushing when source address is deleted
ipv4: Fix incorrect route flushing when table ID 0 is used

Ismael Ferreras Morezuelas (2):
Bluetooth: btusb: Fix CSR clones again by re-adding ERR_DATA_REPORTING quirk
Bluetooth: btusb: Add debug message for CSR controllers

Jann Horn (4):
fs: use acquire ordering in __fget_light() mm/khugepaged: take the right locks for page table retraction mm/khugepaged: fix GUP-fast interaction by sending IPI mm/khugepaged: invoke MMU notifiers in shmem/file collapse paths

Jarkko Sakkinen (1):
crypto: ccp - Add a quirk to firmware update

Jiri Slaby (SUSE) (1):
can: slcan: fix freed work crash

Jisheng Zhang (1):
net: stmmac: fix "snps,axi-config" node property parsing

Johan Jonker (6):
ARM: dts: rockchip: fix adc-keys sub node names
arm64: dts: rockchip: fix adc-keys sub node names
ARM: dts: rockchip: fix ir-receiver node names
arm64: dts: rockchip: fix ir-receiver node names
ARM: dts: rockchip: rk3188: fix lcdc1-rgb24 node name
ARM: dts: rockchip: disable arm_global_timer on rk3066 and rk3188

John Starks (1):
mm/gup: fix gup_pud_range() for dax

José Expósito (2):
HID: uclogic: Fix frame templates for big endian architectures
HID: uclogic: Add HID_QUIRK_HIDINPUT_FORCE quirk

Juergen Gross (2):
xen/netback: don't call kfree_skb() with interrupts disabled xen/netback: fix build warning

KaiLong Wang (1):
LoongArch: Fix unsigned comparison with less than zero

Kees Cook (2):
ALSA: seq: Fix function prototype mismatch in snd_seq_expand_var_event
NFC: nci: Bounds check struct nfc_target arrays

Konrad Dybcio (1):
regulator: slg51000: Wait after asserting CS pin

Kuniyuki Iwashima (1):
af_unix: Get user_ns from in_skb in unix_diag_get_exact().

Lin Liu (1):
xen-netfront: Fix NULL sring after live migration

Liu Jian (2):
net: hisilicon: Fix potential use-after-free in hisi_femac_rx()
net: hisilicon: Fix potential use-after-free in hix5hd2_rx()

Luiz Augusto von Dentz (1):
Bluetooth: Fix crash when replugging CSR fake controllers

Luke D. Jones (2):
platform/x86: asus-wmi: Adjust tablet/lidflip handling to use enum platform/x86: asus-wmi: Add support for ROG X13 tablet mode

Max Staudt (1):
can: can327: flush TX_work on ldisc .close()

Michael Walle (1):
net: phy: mxl-gpy: add MDINT workaround

Michal Jaron (1):
i40e: Fix not setting default xps_cpus after reset

Mike Kravetz (2):
madvise: use zap_page_range_single for madvise dontneed
hugetlb: don't delete vma_lock in hugetlb MADV_DONTNEED processing

Oleksij Rempel (1):
net: mdiobus: fwnode_mdiobus_register_phy() rework error handling

Oliver Hartkopp (1):
can: af_can: fix NULL pointer dereference in can_rcv_filter

Pablo Neira Ayuso (1):
netfilter: ctnetlink: fix compilation warning after data race fixes in ct mark

Pankaj Raghav (1):
nvme initialize core quirks before calling nvme_init_subsystem

Peter Rosin (1):
ARM: at91: fix build for SAMA5D3 w/o L2 cache

Pierre-Louis Bossart (1):
soundwire: dmi-quirks: add remapping for HP Omen 16-k0005TX

Prike Liang (1):
drm/amdgpu/sdma_v4_0: turn off SDMA ring buffer in the s2idle suspend

Przemyslaw Patynowski (1):
i40e: Disallow ip4 and ip6 l4_4_bytes

Qiheng Lin (1):
net: microchip: sparx5: Fix missing destroy_workqueue of mact_queue

Qiqi Zhang (1):
drm/bridge: ti-sn65dsi86: Fix output polarity setting bug

Radu Nicolae Pirea (OSS) (1):
net: dsa: sja1105: avoid out of bounds access in sja1105_init_l2_policing()

Rob Clark (2):
drm/shmem-helper: Remove errant put in error path drm/shmem-helper: Avoid vm_open error paths

Ronak Doshi (2):
vmxnet3: correctly report encapsulated LRO packet
vmxnet3: use correct intrConf reference when using extended queues

Ross Lagerwall (1):
xen/netback: Ensure protocol headers don't fall in the non-linear area

Ruijing Dong (1):
drm/amdgpu/vcn: update vcn4 fw shared data structure

Sebastian Reichel (3):
arm64: dts: rockchip: fix node name for hym8563 rtc
arm: dts: rockchip: fix node name for hym8563 rtc
arm: dts: rockchip: remove clock-frequency from rtc

Shuming Fan (1):
ASoC: rt711-sdca: fix the latency time of clock stop prepare state machine transitions

Siddharth Vadapalli (1):
net: ethernet: ti: am65-cpsw: Fix RGMII configuration at SPEED_10

Sjoerd Simons (1):
soundwire: intel: Initialize clock stop timeout

Srinivasa Rao Mandadapu (1):
ASoC: soc-pcm: Add NULL check in BE reparenting

Stanley.Yang (1):
drm/amdgpu: fix use-after-free during gpu recovery

Stefano Brivio (1):
netfilter: nft_set_pipapo: Actually validate intervals in fields after the first one

Sylwester Dziedziuch (1):
i40e: Fix for VF MAC address 0

Taimur Hassan (1):
drm/amd/display: Avoid setting pixel rate divider to N/A

Takashi Iwai (1):
ALSA: hda/realtek: More robust component matching for CS35L41

Tejun Heo (1):
memcg: fix possible use-after-free in memcg_write_event_control()

Tetsuo Handa (1):
fbcon: Use kzalloc() in fbcon_prepare_logo()

Thinh Nguyen (1):
usb: dwc3: gadget: Disable GUSB2PHYCFG.SUSPHY for End Transfer

Thomas Huth (1):
KVM: s390: vsie: Fix the initialization of the epoch extension (epdx) field

Tianjia Zhang (1):
selftests/tls: Fix tls selftests dependency to correct algorithm

Tiezhu Yang (1):
LoongArch: Makefile: Use "grep -E" instead of "egrep"

Tomislav Novak (1):
ARM: 9251/1: perf: Fix stacktraces for tracepoint events in THUMB2 kernels

Valentina Goncharenko (2):
net: encx24j600: Add parentheses to fix precedence
net: encx24j600: Fix invalid logic in reading of MISTAT register

Ville Syrjälä (1):
drm/i915: Remove non-existent pipes from bigjoiner pipe mask

Vladimir Oltean (1):
net: dsa: mv88e6xxx: accept phy-mode = "internal" for internal PHY ports

Wang Kefeng (1):
ARM: 9278/1: kfence: only handle translation faults

Wang ShaoBo (2):
Bluetooth: 6LoWPAN: add missing hci_dev_put() in get_l2cap_conn()
Bluetooth: hci_conn: add missing hci_dev_put() in iso_listen_bis()

Wang Yufen (1):
gpio/rockchip: fix refcount leak in rockchip_gpiolib_register()

Wei Yongjun (1):

      mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add()

Xin Long (3):
netfilter: flowtable_offload: fix using __this_cpu_add in preemptible
netfilter: conntrack: fix using __this_cpu_add in preemptible
tipc: call tipc_lxc_xmit without holding node_read_lock

Xiongfeng Wang (1):
gpio: amd8111: Fix PCI device reference count leak

Yang Yingliang (2):
net: mdiobus: fix double put fwnode in the error path
net: plip: don't call kfree_skb/dev_kfree_skb() under spin_lock_irq()

Yinjun Zhang (1):
nfp: correct desc type when header dma len is 4096

Yongqiang Liu (1):
net: thunderx: Fix missing destroy_workqueue of nicvf_rx_mode_wq

Yuan Can (1):
dpaa2-switch: Fix memory leak in dpaa2_switch_acl_entry_add() and dpaa2_switch_acl_entry_remove()

YueHaibing (3):
net: broadcom: Add PTP_1588_CLOCK_OPTIONAL dependency for BCMGENET under ARCH_BCM2835
ravb: Fix potential use-after-free in ravb_rx_gbeth()
tipc: Fix potential OOB in tipc_link_proto_rcv()

Zack Rusin (1):
drm/vmwgfx: Don't use screen objects when SEV is active

Zeng Heng (2):
gpiolib: fix memory leak in gpiochip_setup_dev()
net: mdio: fix unbalanced fwnode reference count in mdio_device_release()

Zhang Changzhong (1):
ethernet: aeroflex: fix potential skb leak in greth_init_rings()

ZhangPeng (1):
HID: core: fix shift-out-of-bounds in hid_report_raw_event

Zhengchao Shao (4):
selftests: rtnetlink: correct xfrm policy rule in kci_test_ipsec_offload
net: wwan: iosm: fix memory leak in ipc_mux_init()
net: dsa: sja1105: fix memory leak in sja1105_setup_devlink_regions()
net: thunderbolt: fix memory leak in tbnet_open()

Zhichao Liu (1):
spi: mediatek: Fix DEVAPC Violation at KO Remove

Ziyang Xuan (2):
ieee802154: cc2520: Fix error return code in cc2520_hw_init()
octeontx2-pf: Fix potential memory leak in otx2_init_tc()

author maintainer
#1 lore raw
.clang-format +1 -0
index 1247d54f9e49..8d01225bfcb7 100644
@@ -535,6 +535,7 @@ ForEachMacros:
   - 'perf_hpp_list__for_each_sort_list_safe'
   - 'perf_pmu__for_each_hybrid_pmu'
   - 'ping_portaddr_for_each_entry'
+  - 'ping_portaddr_for_each_entry_rcu'
   - 'plist_for_each'
   - 'plist_for_each_continue'
   - 'plist_for_each_entry'
Makefile +1 -1
index 46c6eb57b354..bf00f3240b3a 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 0
-SUBLEVEL = 12
+SUBLEVEL = 13
 EXTRAVERSION =
 NAME = Hurr durr I'ma ninja sloth
 
arch/arm/boot/dts/imx7s.dtsi +2 -2
index 1dc3bfac30b6..29148285f9fc 100644
@@ -1270,10 +1270,10 @@ dma_apbh: dma-apbh@33000000 {
 			clocks = <&clks IMX7D_NAND_USDHC_BUS_RAWNAND_CLK>;
 		};
 
-		gpmi: nand-controller@33002000 {
+		gpmi: nand-controller@33002000{
 			compatible = "fsl,imx7d-gpmi-nand";
 			#address-cells = <1>;
-			#size-cells = <0>;
+			#size-cells = <1>;
 			reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
 			reg-names = "gpmi-nand", "bch";
 			interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
arch/arm/boot/dts/rk3036-evb.dts +1 -2
index 2a7e6624efb9..94216f870b57 100644
@@ -31,11 +31,10 @@ phy0: ethernet-phy@0 {
 &i2c1 {
 	status = "okay";
 
-	hym8563: hym8563@51 {
+	hym8563: rtc@51 {
 		compatible = "haoyu,hym8563";
 		reg = <0x51>;
 		#clock-cells = <0>;
-		clock-frequency = <32768>;
 		clock-output-names = "xin32k";
 	};
 };
arch/arm/boot/dts/rk3066a-mk808.dts +1 -1
index cfa318a506eb..2db5ba706208 100644
@@ -32,7 +32,7 @@ adc-keys {
 		keyup-threshold-microvolt = <2500000>;
 		poll-interval = <100>;
 
-		recovery {
+		button-recovery {
 			label = "recovery";
 			linux,code = <KEY_VENDOR>;
 			press-threshold-microvolt = <0>;
arch/arm/boot/dts/rk3188-radxarock.dts +1 -1
index a9ed3cd2c2da..239d2ec37fdc 100644
@@ -71,7 +71,7 @@ spdif_out: spdif-out {
 		#sound-dai-cells = <0>;
 	};
 
-	ir_recv: gpio-ir-receiver {
+	ir_recv: ir-receiver {
 		compatible = "gpio-ir-receiver";
 		gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
 		pinctrl-names = "default";
arch/arm/boot/dts/rk3188.dtsi +1 -2
index cdd4a0bd5133..44b54af0bbf9 100644
@@ -379,7 +379,7 @@ lcdc1_vsync: lcdc1-vsync {
 				rockchip,pins = <2 RK_PD3 1 &pcfg_pull_none>;
 			};
 
-			lcdc1_rgb24: ldcd1-rgb24 {
+			lcdc1_rgb24: lcdc1-rgb24 {
 				rockchip,pins = <2 RK_PA0 1 &pcfg_pull_none>,
 						<2 RK_PA1 1 &pcfg_pull_none>,
 						<2 RK_PA2 1 &pcfg_pull_none>,
@@ -607,7 +607,6 @@ &emac {
 
 &global_timer {
 	interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
-	status = "disabled";
 };
 
 &local_timer {
arch/arm/boot/dts/rk3288-evb-act8846.dts +1 -1
index be695b8c1f67..8a635c243127 100644
@@ -54,7 +54,7 @@ vdd_gpu: syr828@41 {
 		vin-supply = <&vcc_sys>;
 	};
 
-	hym8563@51 {
+	rtc@51 {
 		compatible = "haoyu,hym8563";
 		reg = <0x51>;
 
arch/arm/boot/dts/rk3288-evb.dtsi +3 -3
index 399d6b9c5fd4..382d2839cf47 100644
@@ -28,19 +28,19 @@ button-down {
 			press-threshold-microvolt = <300000>;
 		};
 
-		menu {
+		button-menu {
 			label = "Menu";
 			linux,code = <KEY_MENU>;
 			press-threshold-microvolt = <640000>;
 		};
 
-		esc {
+		button-esc {
 			label = "Esc";
 			linux,code = <KEY_ESC>;
 			press-threshold-microvolt = <1000000>;
 		};
 
-		home  {
+		button-home  {
 			label = "Home";
 			linux,code = <KEY_HOME>;
 			press-threshold-microvolt = <1300000>;
arch/arm/boot/dts/rk3288-firefly.dtsi +1 -2
index 052afe5543e2..3836c61cfb76 100644
@@ -233,11 +233,10 @@ vdd_gpu: syr828@41 {
 		vin-supply = <&vcc_sys>;
 	};
 
-	hym8563: hym8563@51 {
+	hym8563: rtc@51 {
 		compatible = "haoyu,hym8563";
 		reg = <0x51>;
 		#clock-cells = <0>;
-		clock-frequency = <32768>;
 		clock-output-names = "xin32k";
 		interrupt-parent = <&gpio7>;
 		interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
arch/arm/boot/dts/rk3288-miqi.dts +1 -2
index 713f55e143c6..db1eb648e0e1 100644
@@ -162,11 +162,10 @@ vdd_gpu: syr828@41 {
 		vin-supply = <&vcc_sys>;
 	};
 
-	hym8563: hym8563@51 {
+	hym8563: rtc@51 {
 		compatible = "haoyu,hym8563";
 		reg = <0x51>;
 		#clock-cells = <0>;
-		clock-frequency = <32768>;
 		clock-output-names = "xin32k";
 	};
 
arch/arm/boot/dts/rk3288-rock2-square.dts +1 -2
index 80e0f07c8e87..13cfdaa95cc7 100644
@@ -165,11 +165,10 @@ &hdmi {
 };
 
 &i2c0 {
-	hym8563: hym8563@51 {
+	hym8563: rtc@51 {
 		compatible = "haoyu,hym8563";
 		reg = <0x51>;
 		#clock-cells = <0>;
-		clock-frequency = <32768>;
 		clock-output-names = "xin32k";
 		interrupt-parent = <&gpio0>;
 		interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
arch/arm/boot/dts/rk3288-vmarc-som.dtsi +0 -1
index 0ae2bd150e37..793951655b73 100644
@@ -241,7 +241,6 @@ hym8563: rtc@51 {
 		interrupt-parent = <&gpio5>;
 		interrupts = <RK_PC3 IRQ_TYPE_LEVEL_LOW>;
 		#clock-cells = <0>;
-		clock-frequency = <32768>;
 		clock-output-names = "hym8563";
 		pinctrl-names = "default";
 		pinctrl-0 = <&hym8563_int>;
arch/arm/boot/dts/rk3xxx.dtsi +7 -0
index 616a828e0c6e..17e89d30de78 100644
@@ -76,6 +76,13 @@ global_timer: global-timer@1013c200 {
 		reg = <0x1013c200 0x20>;
 		interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
 		clocks = <&cru CORE_PERI>;
+		status = "disabled";
+		/* The clock source and the sched_clock provided by the arm_global_timer
+		 * on Rockchip rk3066a/rk3188 are quite unstable because their rates
+		 * depend on the CPU frequency.
+		 * Keep the arm_global_timer disabled in order to have the
+		 * DW_APB_TIMER (rk3066a) or ROCKCHIP_TIMER (rk3188) selected by default.
+		 */
 	};
 
 	local_timer: local-timer@1013c600 {
arch/arm/include/asm/perf_event.h +1 -1
index fe87397c3d8c..bdbc1e590891 100644
@@ -17,7 +17,7 @@ extern unsigned long perf_misc_flags(struct pt_regs *regs);
 
 #define perf_arch_fetch_caller_regs(regs, __ip) { \
 	(regs)->ARM_pc = (__ip); \
-	(regs)->ARM_fp = (unsigned long) __builtin_frame_address(0); \
+	frame_pointer((regs)) = (unsigned long) __builtin_frame_address(0); \
 	(regs)->ARM_sp = current_stack_pointer; \
 	(regs)->ARM_cpsr = SVC_MODE; \
 }
arch/arm/include/asm/pgtable-nommu.h +0 -6
index d16aba48fa0a..090011394477 100644
@@ -44,12 +44,6 @@
 
 typedef pte_t *pte_addr_t;
 
-/*
- * ZERO_PAGE is a global shared page that is always zero: used
- * for zero-mapped memory areas etc..
- */
-#define ZERO_PAGE(vaddr)	(virt_to_page(0))
-
 /*
  * Mark the prot value as uncacheable and unbufferable.
  */
arch/arm/include/asm/pgtable.h +9 -7
index 78a532068fec..ef48a55e9af8 100644
@@ -10,6 +10,15 @@
 #include <linux/const.h>
 #include <asm/proc-fns.h>
 
+#ifndef __ASSEMBLY__
+/*
+ * ZERO_PAGE is a global shared page that is always zero: used
+ * for zero-mapped memory areas etc..
+ */
+extern struct page *empty_zero_page;
+#define ZERO_PAGE(vaddr)	(empty_zero_page)
+#endif
+
 #ifndef CONFIG_MMU
 
 #include <asm-generic/pgtable-nopud.h>
@@ -139,13 +148,6 @@ extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
  */
 
 #ifndef __ASSEMBLY__
-/*
- * ZERO_PAGE is a global shared page that is always zero: used
- * for zero-mapped memory areas etc..
- */
-extern struct page *empty_zero_page;
-#define ZERO_PAGE(vaddr)	(empty_zero_page)
-
 
 extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
 
arch/arm/mach-at91/sama5.c +1 -1
index 67ed68fbe3a5..bf2b5c6a18c6 100644
@@ -26,7 +26,7 @@ static void sama5_l2c310_write_sec(unsigned long val, unsigned reg)
 static void __init sama5_secure_cache_init(void)
 {
 	sam_secure_init();
-	if (sam_linux_is_optee_available())
+	if (IS_ENABLED(CONFIG_OUTER_CACHE) && sam_linux_is_optee_available())
 		outer_cache.write_sec = sama5_l2c310_write_sec;
 }
 
arch/arm/mm/fault.c +16 -2
index 46cccd6bf705..de988cba9a4b 100644
@@ -105,6 +105,19 @@ static inline bool is_write_fault(unsigned int fsr)
 	return (fsr & FSR_WRITE) && !(fsr & FSR_CM);
 }
 
+static inline bool is_translation_fault(unsigned int fsr)
+{
+	int fs = fsr_fs(fsr);
+#ifdef CONFIG_ARM_LPAE
+	if ((fs & FS_MMU_NOLL_MASK) == FS_TRANS_NOLL)
+		return true;
+#else
+	if (fs == FS_L1_TRANS || fs == FS_L2_TRANS)
+		return true;
+#endif
+	return false;
+}
+
 static void die_kernel_fault(const char *msg, struct mm_struct *mm,
 			     unsigned long addr, unsigned int fsr,
 			     struct pt_regs *regs)
@@ -140,7 +153,8 @@ __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
 	if (addr < PAGE_SIZE) {
 		msg = "NULL pointer dereference";
 	} else {
-		if (kfence_handle_page_fault(addr, is_write_fault(fsr), regs))
+		if (is_translation_fault(fsr) &&
+		    kfence_handle_page_fault(addr, is_write_fault(fsr), regs))
 			return;
 
 		msg = "paging request";
@@ -208,7 +222,7 @@ static inline bool is_permission_fault(unsigned int fsr)
 {
 	int fs = fsr_fs(fsr);
 #ifdef CONFIG_ARM_LPAE
-	if ((fs & FS_PERM_NOLL_MASK) == FS_PERM_NOLL)
+	if ((fs & FS_MMU_NOLL_MASK) == FS_PERM_NOLL)
 		return true;
 #else
 	if (fs == FS_L1_PERM || fs == FS_L2_PERM)
arch/arm/mm/fault.h +6 -3
index 83b5ab32d7a4..54927ba1fa6e 100644
@@ -14,8 +14,9 @@
 
 #ifdef CONFIG_ARM_LPAE
 #define FSR_FS_AEA		17
+#define FS_TRANS_NOLL		0x4
 #define FS_PERM_NOLL		0xC
-#define FS_PERM_NOLL_MASK	0x3C
+#define FS_MMU_NOLL_MASK	0x3C
 
 static inline int fsr_fs(unsigned int fsr)
 {
@@ -23,8 +24,10 @@ static inline int fsr_fs(unsigned int fsr)
 }
 #else
 #define FSR_FS_AEA		22
-#define FS_L1_PERM             0xD
-#define FS_L2_PERM             0xF
+#define FS_L1_TRANS		0x5
+#define FS_L2_TRANS		0x7
+#define FS_L1_PERM		0xD
+#define FS_L2_PERM		0xF
 
 static inline int fsr_fs(unsigned int fsr)
 {
arch/arm/mm/nommu.c +19 -0
index c42debaded95..c1494a4dee25 100644
@@ -26,6 +26,13 @@
 
 unsigned long vectors_base;
 
+/*
+ * empty_zero_page is a special page that is used for
+ * zero-initialized data and COW.
+ */
+struct page *empty_zero_page;
+EXPORT_SYMBOL(empty_zero_page);
+
 #ifdef CONFIG_ARM_MPU
 struct mpu_rgn_info mpu_rgn_info;
 #endif
@@ -148,9 +155,21 @@ void __init adjust_lowmem_bounds(void)
  */
 void __init paging_init(const struct machine_desc *mdesc)
 {
+	void *zero_page;
+
 	early_trap_init((void *)vectors_base);
 	mpu_setup();
+
+	/* allocate the zero page. */
+	zero_page = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
+	if (!zero_page)
+		panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
+		      __func__, PAGE_SIZE, PAGE_SIZE);
+
 	bootmem_init();
+
+	empty_zero_page = virt_to_page(zero_page);
+	flush_dcache_page(empty_zero_page);
 }
 
 /*
arch/arm64/boot/dts/rockchip/px30-evb.dts +5 -5
index 848bc39cf86a..4249b42843da 100644
@@ -30,31 +30,31 @@ adc-keys {
 		keyup-threshold-microvolt = <1800000>;
 		poll-interval = <100>;
 
-		esc-key {
+		button-esc {
 			label = "esc";
 			linux,code = <KEY_ESC>;
 			press-threshold-microvolt = <1310000>;
 		};
 
-		home-key {
+		button-home {
 			label = "home";
 			linux,code = <KEY_HOME>;
 			press-threshold-microvolt = <624000>;
 		};
 
-		menu-key {
+		button-menu {
 			label = "menu";
 			linux,code = <KEY_MENU>;
 			press-threshold-microvolt = <987000>;
 		};
 
-		vol-down-key {
+		button-down {
 			label = "volume down";
 			linux,code = <KEY_VOLUMEDOWN>;
 			press-threshold-microvolt = <300000>;
 		};
 
-		vol-up-key {
+		button-up {
 			label = "volume up";
 			linux,code = <KEY_VOLUMEUP>;
 			press-threshold-microvolt = <17000>;
arch/arm64/boot/dts/rockchip/rk3308-evb.dts +6 -6
index 9fe9b0d11003..184b84fdde07 100644
@@ -23,7 +23,7 @@ adc-keys0 {
 		poll-interval = <100>;
 		keyup-threshold-microvolt = <1800000>;
 
-		func-key {
+		button-func {
 			linux,code = <KEY_FN>;
 			label = "function";
 			press-threshold-microvolt = <18000>;
@@ -37,31 +37,31 @@ adc-keys1 {
 		poll-interval = <100>;
 		keyup-threshold-microvolt = <1800000>;
 
-		esc-key {
+		button-esc {
 			linux,code = <KEY_MICMUTE>;
 			label = "micmute";
 			press-threshold-microvolt = <1130000>;
 		};
 
-		home-key {
+		button-home {
 			linux,code = <KEY_MODE>;
 			label = "mode";
 			press-threshold-microvolt = <901000>;
 		};
 
-		menu-key {
+		button-menu {
 			linux,code = <KEY_PLAY>;
 			label = "play";
 			press-threshold-microvolt = <624000>;
 		};
 
-		vol-down-key {
+		button-down {
 			linux,code = <KEY_VOLUMEDOWN>;
 			label = "volume down";
 			press-threshold-microvolt = <300000>;
 		};
 
-		vol-up-key {
+		button-up {
 			linux,code = <KEY_VOLUMEUP>;
 			label = "volume up";
 			press-threshold-microvolt = <18000>;
arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts +1 -1
index ea6820902ede..7ea48167747c 100644
@@ -19,7 +19,7 @@ chosen {
 		stdout-path = "serial2:1500000n8";
 	};
 
-	ir_rx {
+	ir-receiver {
 		compatible = "gpio-ir-receiver";
 		gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;
 		pinctrl-names = "default";
arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts +1 -1
index 43c928ac98f0..1deef53a4c94 100644
@@ -25,7 +25,7 @@ adc-keys {
 		keyup-threshold-microvolt = <1800000>;
 		poll-interval = <100>;
 
-		recovery {
+		button-recovery {
 			label = "recovery";
 			linux,code = <KEY_VENDOR>;
 			press-threshold-microvolt = <17000>;
arch/arm64/boot/dts/rockchip/rk3368-orion-r68-meta.dts +1 -1
index 7f5bba0c6001..0e88e9592c1c 100644
@@ -208,7 +208,7 @@ vdd_cpu: syr827@40 {
 		vin-supply = <&vcc_sys>;
 	};
 
-	hym8563: hym8563@51 {
+	hym8563: rtc@51 {
 		compatible = "haoyu,hym8563";
 		reg = <0x51>;
 		#clock-cells = <0>;
arch/arm64/boot/dts/rockchip/rk3368-r88.dts +1 -1
index 38d757c00548..e147d6f8b43e 100644
@@ -192,7 +192,7 @@ vdd_cpu: syr827@40 {
 		vin-supply = <&vcc_sys>;
 	};
 
-	hym8563: hym8563@51 {
+	hym8563: rtc@51 {
 		compatible = "haoyu,hym8563";
 		reg = <0x51>;
 		#clock-cells = <0>;
arch/arm64/boot/dts/rockchip/rk3399-khadas-edge.dtsi +1 -1
index 2a332763c35c..9d9297bc5f04 100644
@@ -123,7 +123,7 @@ adc-keys {
 		keyup-threshold-microvolt = <1800000>;
 		poll-interval = <100>;
 
-		recovery {
+		button-recovery {
 			label = "Recovery";
 			linux,code = <KEY_VENDOR>;
 			press-threshold-microvolt = <18000>;
arch/arm64/boot/dts/rockchip/rk3399-nanopc-t4.dts +1 -1
index 452728b82e42..3bf8f959e42c 100644
@@ -39,7 +39,7 @@ adc-keys {
 		keyup-threshold-microvolt = <1800000>;
 		poll-interval = <100>;
 
-		recovery {
+		button-recovery {
 			label = "Recovery";
 			linux,code = <KEY_VENDOR>;
 			press-threshold-microvolt = <18000>;
arch/arm64/boot/dts/rockchip/rk3399-nanopi-m4b.dts +1 -1
index 72182c58cc46..65cb21837b0c 100644
@@ -19,7 +19,7 @@ adc-keys {
 		keyup-threshold-microvolt = <1500000>;
 		poll-interval = <100>;
 
-		recovery {
+		button-recovery {
 			label = "Recovery";
 			linux,code = <KEY_VENDOR>;
 			press-threshold-microvolt = <18000>;
arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts +2 -2
index 9e2e246e0bab..dba4d03bfc2b 100644
@@ -52,13 +52,13 @@ button-down {
 			press-threshold-microvolt = <300000>;
 		};
 
-		back {
+		button-back {
 			label = "Back";
 			linux,code = <KEY_BACK>;
 			press-threshold-microvolt = <985000>;
 		};
 
-		menu {
+		button-menu {
 			label = "Menu";
 			linux,code = <KEY_MENU>;
 			press-threshold-microvolt = <1314000>;
arch/arm64/boot/dts/rockchip/rk3399-roc-pc-plus.dts +1 -1
index 5a2661ae0131..18b5050c6cd3 100644
@@ -98,7 +98,7 @@ &fusb0 {
 };
 
 &i2c0 {
-	hym8563: hym8563@51 {
+	hym8563: rtc@51 {
 		compatible = "haoyu,hym8563";
 		reg = <0x51>;
 		interrupt-parent = <&gpio0>;
arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi +1 -1
index acb174d3a8c5..4f3dd107e83e 100644
@@ -41,7 +41,7 @@ adc-keys {
 		keyup-threshold-microvolt = <1500000>;
 		poll-interval = <100>;
 
-		recovery {
+		button-recovery {
 			label = "Recovery";
 			linux,code = <KEY_VENDOR>;
 			press-threshold-microvolt = <18000>;
arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi +0 -1
index 401e1ae9d944..b045f74071e4 100644
@@ -491,7 +491,6 @@ i2s0_p0_0: endpoint {
 &i2s1 {
 	rockchip,playback-channels = <2>;
 	rockchip,capture-channels = <2>;
-	status = "okay";
 };
 
 &i2s2 {
arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator.dts +2 -2
index 13927e7d0724..dbec2b7173a0 100644
@@ -33,13 +33,13 @@ button-down {
 			press-threshold-microvolt = <300000>;
 		};
 
-		back {
+		button-back {
 			label = "Back";
 			linux,code = <KEY_BACK>;
 			press-threshold-microvolt = <985000>;
 		};
 
-		menu {
+		button-menu {
 			label = "Menu";
 			linux,code = <KEY_MENU>;
 			press-threshold-microvolt = <1314000>;
arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi +1 -1
index 935b8c68a71d..6c168566321b 100644
@@ -297,7 +297,7 @@ &i2c2 {
 	clock-frequency = <400000>;
 	status = "okay";
 
-	hym8563: hym8563@51 {
+	hym8563: rtc@51 {
 		compatible = "haoyu,hym8563";
 		reg = <0x51>;
 		#clock-cells = <0>;
arch/arm64/boot/dts/rockchip/rk3566-pinenote.dtsi +1 -1
index 0d45868132b9..8d61f824c12d 100644
@@ -23,7 +23,7 @@ adc-keys {
 		io-channel-names = "buttons";
 		keyup-threshold-microvolt = <1750000>;
 
-		recovery {
+		button-recovery {
 			label = "recovery";
 			linux,code = <KEY_VENDOR>;
 			press-threshold-microvolt = <0>;
arch/arm64/boot/dts/rockchip/rk3566-roc-pc.dts +2 -6
index 57759b66d44d..ab1abf0bb749 100644
@@ -130,7 +130,7 @@ &gmac1 {
 	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>;
 	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>, <&gmac1_clkin>;
 	clock_in_out = "input";
-	phy-mode = "rgmii-id";
+	phy-mode = "rgmii";
 	phy-supply = <&vcc_3v3>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&gmac1m0_miim
@@ -397,11 +397,7 @@ &i2c2 {
 
 &i2c3 {
 	pinctrl-names = "default";
-	pinctrl-0 = <&i2c3m1_xfer>;
-	status = "okay";
-};
-
-&i2c5 {
+	pinctrl-0 = <&i2c3m0_xfer>;
 	status = "okay";
 };
 
arch/loongarch/Makefile +1 -1
index ec3de6191276..9123feb69854 100644
@@ -68,7 +68,7 @@ KBUILD_LDFLAGS	+= -m $(ld-emul)
 
 ifdef CONFIG_LOONGARCH
 CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \
-	egrep -vw '__GNUC_(MINOR_|PATCHLEVEL_)?_' | \
+	grep -E -vw '__GNUC_(MINOR_|PATCHLEVEL_)?_' | \
 	sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g')
 endif
 
arch/loongarch/include/asm/pgtable.h +6 -2
index cc0674d1b8f0..645e24ebec68 100644
@@ -357,7 +357,9 @@ static inline pte_t pte_mkdirty(pte_t pte)
 
 static inline pte_t pte_mkwrite(pte_t pte)
 {
-	pte_val(pte) |= (_PAGE_WRITE | _PAGE_DIRTY);
+	pte_val(pte) |= _PAGE_WRITE;
+	if (pte_val(pte) & _PAGE_MODIFIED)
+		pte_val(pte) |= _PAGE_DIRTY;
 	return pte;
 }
 
@@ -454,7 +456,9 @@ static inline int pmd_write(pmd_t pmd)
 
 static inline pmd_t pmd_mkwrite(pmd_t pmd)
 {
-	pmd_val(pmd) |= (_PAGE_WRITE | _PAGE_DIRTY);
+	pmd_val(pmd) |= _PAGE_WRITE;
+	if (pmd_val(pmd) & _PAGE_MODIFIED)
+		pmd_val(pmd) |= _PAGE_DIRTY;
 	return pmd;
 }
 
arch/loongarch/kernel/acpi.c +10 -21
index 335398482038..8319cc409009 100644
@@ -56,23 +56,6 @@ void __iomem *acpi_os_ioremap(acpi_physical_address phys, acpi_size size)
 		return ioremap_cache(phys, size);
 }
 
-void __init acpi_boot_table_init(void)
-{
-	/*
-	 * If acpi_disabled, bail out
-	 */
-	if (acpi_disabled)
-		return;
-
-	/*
-	 * Initialize the ACPI boot-time table parser.
-	 */
-	if (acpi_table_init()) {
-		disable_acpi();
-		return;
-	}
-}
-
 #ifdef CONFIG_SMP
 static int set_processor_mask(u32 id, u32 flags)
 {
@@ -156,13 +139,21 @@ static void __init acpi_process_madt(void)
 	loongson_sysconf.nr_cpus = num_processors;
 }
 
-int __init acpi_boot_init(void)
+void __init acpi_boot_table_init(void)
 {
 	/*
 	 * If acpi_disabled, bail out
 	 */
 	if (acpi_disabled)
-		return -1;
+		return;
+
+	/*
+	 * Initialize the ACPI boot-time table parser.
+	 */
+	if (acpi_table_init()) {
+		disable_acpi();
+		return;
+	}
 
 	loongson_sysconf.boot_cpu_id = read_csr_cpuid();
 
@@ -173,8 +164,6 @@ int __init acpi_boot_init(void)
 
 	/* Do not enable ACPI SPCR console by default */
 	acpi_parse_spcr(earlycon_acpi_spcr_enable, false);
-
-	return 0;
 }
 
 #ifdef CONFIG_ACPI_NUMA
arch/loongarch/kernel/setup.c +0 -1
index 8f5c2f9a1a83..574647e3483d 100644
@@ -203,7 +203,6 @@ void __init platform_init(void)
 #ifdef CONFIG_ACPI
 	acpi_gbl_use_default_register_widths = false;
 	acpi_boot_table_init();
-	acpi_boot_init();
 #endif
 
 #ifdef CONFIG_NUMA
arch/loongarch/kernel/unwind_prologue.c +2 -1
index b206d9159205..4571c3c87cd4 100644
@@ -43,7 +43,8 @@ static bool unwind_by_prologue(struct unwind_state *state)
 {
 	struct stack_info *info = &state->stack_info;
 	union loongarch_instruction *ip, *ip_end;
-	unsigned long frame_size = 0, frame_ra = -1;
+	long frame_ra = -1;
+	unsigned long frame_size = 0;
 	unsigned long size, offset, pc = state->pc;
 
 	if (state->sp >= info->end || state->sp < info->begin)
arch/s390/kvm/vsie.c +3 -1
index 94138f8f0c1c..ace2541ababd 100644
@@ -546,8 +546,10 @@ static int shadow_scb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
 	if (test_kvm_cpu_feat(vcpu->kvm, KVM_S390_VM_CPU_FEAT_CEI))
 		scb_s->eca |= scb_o->eca & ECA_CEI;
 	/* Epoch Extension */
-	if (test_kvm_facility(vcpu->kvm, 139))
+	if (test_kvm_facility(vcpu->kvm, 139)) {
 		scb_s->ecd |= scb_o->ecd & ECD_MEF;
+		scb_s->epdx = scb_o->epdx;
+	}
 
 	/* etoken */
 	if (test_kvm_facility(vcpu->kvm, 156))
drivers/bluetooth/btusb.c +6 -0
index 1bb46cbff0fa..882b5893f910 100644
@@ -2042,6 +2042,11 @@ static int btusb_setup_csr(struct hci_dev *hdev)
 
 	rp = (struct hci_rp_read_local_version *)skb->data;
 
+	bt_dev_info(hdev, "CSR: Setting up dongle with HCI ver=%u rev=%04x; LMP ver=%u subver=%04x; manufacturer=%u",
+		le16_to_cpu(rp->hci_ver), le16_to_cpu(rp->hci_rev),
+		le16_to_cpu(rp->lmp_ver), le16_to_cpu(rp->lmp_subver),
+		le16_to_cpu(rp->manufacturer));
+
 	/* Detect a wide host of Chinese controllers that aren't CSR.
 	 *
 	 * Known fake bcdDevices: 0x0100, 0x0134, 0x1915, 0x2520, 0x7558, 0x8891
@@ -2104,6 +2109,7 @@ static int btusb_setup_csr(struct hci_dev *hdev)
 		 * without these the controller will lock up.
 		 */
 		set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
+		set_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks);
 		set_bit(HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL, &hdev->quirks);
 		set_bit(HCI_QUIRK_NO_SUSPEND_NOTIFIER, &hdev->quirks);
 
drivers/crypto/ccp/sev-dev.c +14 -2
index 6c49e6d06114..034a74196a82 100644
@@ -748,6 +748,11 @@ static int sev_update_firmware(struct device *dev)
 	struct page *p;
 	u64 data_size;
 
+	if (!sev_version_greater_or_equal(0, 15)) {
+		dev_dbg(dev, "DOWNLOAD_FIRMWARE not supported\n");
+		return -1;
+	}
+
 	if (sev_get_firmware(dev, &firmware) == -ENOENT) {
 		dev_dbg(dev, "No SEV firmware file present\n");
 		return -1;
@@ -780,6 +785,14 @@ static int sev_update_firmware(struct device *dev)
 	data->len = firmware->size;
 
 	ret = sev_do_cmd(SEV_CMD_DOWNLOAD_FIRMWARE, data, &error);
+
+	/*
+	 * A quirk for fixing the committed TCB version, when upgrading from
+	 * earlier firmware version than 1.50.
+	 */
+	if (!ret && !sev_version_greater_or_equal(1, 50))
+		ret = sev_do_cmd(SEV_CMD_DOWNLOAD_FIRMWARE, data, &error);
+
 	if (ret)
 		dev_dbg(dev, "Failed to update SEV firmware: %#x\n", error);
 	else
@@ -1289,8 +1302,7 @@ void sev_pci_init(void)
 	if (sev_get_api_version())
 		goto err;
 
-	if (sev_version_greater_or_equal(0, 15) &&
-	    sev_update_firmware(sev->dev) == 0)
+	if (sev_update_firmware(sev->dev) == 0)
 		sev_get_api_version();
 
 	/* If an init_ex_path is provided rely on INIT_EX for PSP initialization
drivers/gpio/gpio-amd8111.c +4 -0
index 14e6b3e64add..6f3ded619c8b 100644
@@ -226,7 +226,10 @@ static int __init amd_gpio_init(void)
 		ioport_unmap(gp.pm);
 		goto out;
 	}
+	return 0;
+
 out:
+	pci_dev_put(pdev);
 	return err;
 }
 
@@ -234,6 +237,7 @@ static void __exit amd_gpio_exit(void)
 {
 	gpiochip_remove(&gp.chip);
 	ioport_unmap(gp.pm);
+	pci_dev_put(gp.pdev);
 }
 
 module_init(amd_gpio_init);
drivers/gpio/gpio-rockchip.c +1 -0
index 9c976ad7208e..09cfb49ed998 100644
@@ -621,6 +621,7 @@ static int rockchip_gpiolib_register(struct rockchip_pin_bank *bank)
 			return -ENODATA;
 
 		pctldev = of_pinctrl_get(pctlnp);
+		of_node_put(pctlnp);
 		if (!pctldev)
 			return -ENODEV;
 
drivers/gpio/gpiolib.c +26 -16

115 lines not on this page · raw message

drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +5 -1
index 3b025aace283..eb4c0523e42d 100644
@@ -167,7 +167,11 @@ static void amdgpu_job_free_cb(struct drm_sched_job *s_job)
 	amdgpu_sync_free(&job->sync);
 	amdgpu_sync_free(&job->sched_sync);
 
-	dma_fence_put(&job->hw_fence);
+	/* only put the hw fence if has embedded fence */
+	if (!job->hw_fence.ops)
+		kfree(job);
+	else
+		dma_fence_put(&job->hw_fence);
 }
 
 void amdgpu_job_free(struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h +7 -0
index 60c608144480..ecb8db731081 100644
@@ -161,6 +161,7 @@
 #define AMDGPU_VCN_SW_RING_FLAG		(1 << 9)
 #define AMDGPU_VCN_FW_LOGGING_FLAG	(1 << 10)
 #define AMDGPU_VCN_SMU_VERSION_INFO_FLAG (1 << 11)
+#define AMDGPU_VCN_SMU_DPM_INTERFACE_FLAG (1 << 11)
 
 #define AMDGPU_VCN_IB_FLAG_DECODE_BUFFER	0x00000001
 #define AMDGPU_VCN_CMD_FLAG_MSG_BUFFER		0x00000001
@@ -170,6 +171,9 @@
 #define VCN_CODEC_DISABLE_MASK_HEVC (1 << 2)
 #define VCN_CODEC_DISABLE_MASK_H264 (1 << 3)
 
+#define AMDGPU_VCN_SMU_DPM_INTERFACE_DGPU (0)
+#define AMDGPU_VCN_SMU_DPM_INTERFACE_APU (1)
+
 enum fw_queue_mode {
 	FW_QUEUE_RING_RESET = 1,
 	FW_QUEUE_DPG_HOLD_OFF = 2,
@@ -323,6 +327,9 @@ struct amdgpu_vcn4_fw_shared {
 	struct amdgpu_fw_shared_unified_queue_struct sq;
 	uint8_t pad1[8];
 	struct amdgpu_fw_shared_fw_logging fw_log;
+	uint8_t pad2[20];
+	uint32_t pad3[13];
+	struct amdgpu_fw_shared_smu_interface_info smu_dpm_interface;
 };
 
 struct amdgpu_vcn_fwlog {
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +15 -9
index 65181efba50e..408b0f399cfc 100644
@@ -980,13 +980,13 @@ static void sdma_v4_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se
 
 
 /**
- * sdma_v4_0_gfx_stop - stop the gfx async dma engines
+ * sdma_v4_0_gfx_enable - enable the gfx async dma engines
  *
  * @adev: amdgpu_device pointer
- *
- * Stop the gfx async dma ring buffers (VEGA10).
+ * @enable: enable SDMA RB/IB
+ * control the gfx async dma ring buffers (VEGA10).
  */
-static void sdma_v4_0_gfx_stop(struct amdgpu_device *adev)
+static void sdma_v4_0_gfx_enable(struct amdgpu_device *adev, bool enable)
 {
 	struct amdgpu_ring *sdma[AMDGPU_MAX_SDMA_INSTANCES];
 	u32 rb_cntl, ib_cntl;
@@ -1001,10 +1001,10 @@ static void sdma_v4_0_gfx_stop(struct amdgpu_device *adev)
 		}
 
 		rb_cntl = RREG32_SDMA(i, mmSDMA0_GFX_RB_CNTL);
-		rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_GFX_RB_CNTL, RB_ENABLE, 0);
+		rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_GFX_RB_CNTL, RB_ENABLE, enable ? 1 : 0);
 		WREG32_SDMA(i, mmSDMA0_GFX_RB_CNTL, rb_cntl);
 		ib_cntl = RREG32_SDMA(i, mmSDMA0_GFX_IB_CNTL);
-		ib_cntl = REG_SET_FIELD(ib_cntl, SDMA0_GFX_IB_CNTL, IB_ENABLE, 0);
+		ib_cntl = REG_SET_FIELD(ib_cntl, SDMA0_GFX_IB_CNTL, IB_ENABLE, enable ? 1 : 0);
 		WREG32_SDMA(i, mmSDMA0_GFX_IB_CNTL, ib_cntl);
 	}
 }
@@ -1131,7 +1131,7 @@ static void sdma_v4_0_enable(struct amdgpu_device *adev, bool enable)
 	int i;
 
 	if (!enable) {
-		sdma_v4_0_gfx_stop(adev);
+		sdma_v4_0_gfx_enable(adev, enable);
 		sdma_v4_0_rlc_stop(adev);
 		if (adev->sdma.has_page_queue)
 			sdma_v4_0_page_stop(adev);
@@ -2043,8 +2043,10 @@ static int sdma_v4_0_suspend(void *handle)
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
 	/* SMU saves SDMA state for us */
-	if (adev->in_s0ix)
+	if (adev->in_s0ix) {
+		sdma_v4_0_gfx_enable(adev, false);
 		return 0;
+	}
 
 	return sdma_v4_0_hw_fini(adev);
 }
@@ -2054,8 +2056,12 @@ static int sdma_v4_0_resume(void *handle)
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
 	/* SMU restores SDMA state for us */
-	if (adev->in_s0ix)
+	if (adev->in_s0ix) {
+		sdma_v4_0_enable(adev, true);
+		sdma_v4_0_gfx_enable(adev, true);
+		amdgpu_ttm_set_buffer_funcs_status(adev, true);
 		return 0;
+	}
 
 	return sdma_v4_0_hw_init(adev);
 }
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c +4 -0
index fb2d74f30448..c5afb5bc9eb6 100644
@@ -132,6 +132,10 @@ static int vcn_v4_0_sw_init(void *handle)
 		fw_shared->present_flag_0 = cpu_to_le32(AMDGPU_FW_SHARED_FLAG_0_UNIFIED_QUEUE);
 		fw_shared->sq.is_enabled = 1;
 
+		fw_shared->present_flag_0 |= cpu_to_le32(AMDGPU_VCN_SMU_DPM_INTERFACE_FLAG);
+		fw_shared->smu_dpm_interface.smu_interface_type = (adev->flags & AMD_IS_APU) ?
+			AMDGPU_VCN_SMU_DPM_INTERFACE_APU : AMDGPU_VCN_SMU_DPM_INTERFACE_DGPU;
+
 		if (amdgpu_vcnfw_log)
 			amdgpu_vcn_fwlog_init(&adev->vcn.inst[i]);
 	}
drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dccg.c +7 -0
index fb729674953b..de9fa534b77a 100644
@@ -96,6 +96,13 @@ static void dccg314_set_pixel_rate_div(
 	struct dcn_dccg *dccg_dcn = TO_DCN_DCCG(dccg);
 	enum pixel_rate_div cur_k1 = PIXEL_RATE_DIV_NA, cur_k2 = PIXEL_RATE_DIV_NA;
 
+	// Don't program 0xF into the register field. Not valid since
+	// K1 / K2 field is only 1 / 2 bits wide
+	if (k1 == PIXEL_RATE_DIV_NA || k2 == PIXEL_RATE_DIV_NA) {
+		BREAK_TO_DEBUGGER();
+		return;
+	}
+
 	dccg314_get_pixel_rate_div(dccg, otg_inst, &cur_k1, &cur_k2);
 	if (k1 == PIXEL_RATE_DIV_NA || k2 == PIXEL_RATE_DIV_NA || (k1 == cur_k1 && k2 == cur_k2))
 		return;
drivers/gpu/drm/amd/display/dc/dcn314/dcn314_hwseq.c +2 -1
index f4d1b83979fe..a0741794db62 100644
@@ -349,6 +349,7 @@ unsigned int dcn314_calculate_dccg_k1_k2_values(struct pipe_ctx *pipe_ctx, unsig
 	odm_combine_factor = get_odm_config(pipe_ctx, NULL);
 
 	if (is_dp_128b_132b_signal(pipe_ctx)) {
+		*k1_div = PIXEL_RATE_DIV_BY_1;
 		*k2_div = PIXEL_RATE_DIV_BY_1;
 	} else if (dc_is_hdmi_tmds_signal(pipe_ctx->stream->signal) || dc_is_dvi_signal(pipe_ctx->stream->signal)) {
 		*k1_div = PIXEL_RATE_DIV_BY_1;
@@ -356,7 +357,7 @@ unsigned int dcn314_calculate_dccg_k1_k2_values(struct pipe_ctx *pipe_ctx, unsig
 			*k2_div = PIXEL_RATE_DIV_BY_2;
 		else
 			*k2_div = PIXEL_RATE_DIV_BY_4;
-	} else if (dc_is_dp_signal(pipe_ctx->stream->signal)) {
+	} else if (dc_is_dp_signal(pipe_ctx->stream->signal) || dc_is_virtual_signal(pipe_ctx->stream->signal)) {
 		if (two_pix_per_container) {
 			*k1_div = PIXEL_RATE_DIV_BY_1;
 			*k2_div = PIXEL_RATE_DIV_BY_2;
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dccg.c +3 -1
index 6640d0ac4304..6dd8dadd68a5 100644
@@ -96,8 +96,10 @@ static void dccg32_set_pixel_rate_div(
 
 	// Don't program 0xF into the register field. Not valid since
 	// K1 / K2 field is only 1 / 2 bits wide
-	if (k1 == PIXEL_RATE_DIV_NA || k2 == PIXEL_RATE_DIV_NA)
+	if (k1 == PIXEL_RATE_DIV_NA || k2 == PIXEL_RATE_DIV_NA) {
+		BREAK_TO_DEBUGGER();
 		return;
+	}
 
 	dccg32_get_pixel_rate_div(dccg, otg_inst, &cur_k1, &cur_k2);
 	if (k1 == cur_k1 && k2 == cur_k2)
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c +1 -0
index bbc0bfbec6c4..3128c111c619 100644
@@ -1171,6 +1171,7 @@ unsigned int dcn32_calculate_dccg_k1_k2_values(struct pipe_ctx *pipe_ctx, unsign
 	odm_combine_factor = get_odm_config(pipe_ctx, NULL);
 
 	if (is_dp_128b_132b_signal(pipe_ctx)) {
+		*k1_div = PIXEL_RATE_DIV_BY_1;
 		*k2_div = PIXEL_RATE_DIV_BY_1;
 	} else if (dc_is_hdmi_tmds_signal(pipe_ctx->stream->signal) || dc_is_dvi_signal(pipe_ctx->stream->signal)) {
 		*k1_div = PIXEL_RATE_DIV_BY_1;
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource_helpers.c +1 -1
index 7c37575d69c7..0ef11fb338e9 100644
@@ -103,7 +103,7 @@ uint32_t dcn32_helper_calculate_num_ways_for_subvp(struct dc *dc, struct dc_stat
 			mall_alloc_width_blk_aligned = full_vp_width_blk_aligned;
 
 			/* mall_alloc_height_blk_aligned_l/c = CEILING(sub_vp_height_l/c - 1, blk_height_l/c) + blk_height_l/c */
-			mall_alloc_height_blk_aligned = (pipe->stream->timing.v_addressable - 1 + mblk_height - 1) /
+			mall_alloc_height_blk_aligned = (pipe->plane_res.scl_data.viewport.height - 1 + mblk_height - 1) /
 					mblk_height * mblk_height + mblk_height;
 
 			/* full_mblk_width_ub_l/c = mall_alloc_width_blk_aligned_l/c;
drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c +1 -1
index 2f996fdaa70d..07c56e231b04 100644
@@ -1803,7 +1803,7 @@ void dcn32_calculate_wm_and_dlg_fpu(struct dc *dc, struct dc_state *context,
 
 		if (context->bw_ctx.dml.vba.DRAMClockChangeSupport[vlevel][maxMpcComb] ==
 			dm_dram_clock_change_unsupported) {
-			int min_dram_speed_mts_offset = dc->clk_mgr->bw_params->clk_table.num_entries - 1;
+			int min_dram_speed_mts_offset = dc->clk_mgr->bw_params->clk_table.num_entries_per_clk.num_memclk_levels - 1;
 
 			min_dram_speed_mts =
 				dc->clk_mgr->bw_params->clk_table.entries[min_dram_speed_mts_offset].memclk_mhz * 16;
drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h +1 -1
index 2051ddaa641a..6ec0947ace9c 100644
@@ -1152,7 +1152,7 @@ struct vba_vars_st {
 	double UrgBurstFactorLumaPre[DC__NUM_DPP__MAX];
 	double UrgBurstFactorChromaPre[DC__NUM_DPP__MAX];
 	bool NotUrgentLatencyHidingPre[DC__NUM_DPP__MAX];
-	bool LinkCapacitySupport[DC__NUM_DPP__MAX];
+	bool LinkCapacitySupport[DC__VOLTAGE_STATES];
 	bool VREADY_AT_OR_AFTER_VSYNC[DC__NUM_DPP__MAX];
 	unsigned int MIN_DST_Y_NEXT_START[DC__NUM_DPP__MAX];
 	unsigned int VFrontPorch[DC__NUM_DPP__MAX];
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +3 -3
index 40d8ca37f5bc..aa51c61a78c7 100644
@@ -2720,6 +2720,9 @@ static u32 *dw_hdmi_bridge_atomic_get_output_bus_fmts(struct drm_bridge *bridge,
 	 * if supported. In any case the default RGB888 format is added
 	 */
 
+	/* Default 8bit RGB fallback */
+	output_fmts[i++] = MEDIA_BUS_FMT_RGB888_1X24;
+
 	if (max_bpc >= 16 && info->bpc == 16) {
 		if (info->color_formats & DRM_COLOR_FORMAT_YCBCR444)
 			output_fmts[i++] = MEDIA_BUS_FMT_YUV16_1X48;
@@ -2753,9 +2756,6 @@ static u32 *dw_hdmi_bridge_atomic_get_output_bus_fmts(struct drm_bridge *bridge,
 	if (info->color_formats & DRM_COLOR_FORMAT_YCBCR444)
 		output_fmts[i++] = MEDIA_BUS_FMT_YUV8_1X24;
 
-	/* Default 8bit RGB fallback */
-	output_fmts[i++] = MEDIA_BUS_FMT_RGB888_1X24;
-
 	*num_output_fmts = i;
 
 	return output_fmts;
drivers/gpu/drm/bridge/ti-sn65dsi86.c +2 -2
index d6dd4d99a229..d72bd1392c84 100644
@@ -906,9 +906,9 @@ static void ti_sn_bridge_set_video_timings(struct ti_sn65dsi86 *pdata)
 		&pdata->bridge.encoder->crtc->state->adjusted_mode;
 	u8 hsync_polarity = 0, vsync_polarity = 0;
 
-	if (mode->flags & DRM_MODE_FLAG_PHSYNC)
+	if (mode->flags & DRM_MODE_FLAG_NHSYNC)
 		hsync_polarity = CHA_HSYNC_POLARITY;
-	if (mode->flags & DRM_MODE_FLAG_PVSYNC)
+	if (mode->flags & DRM_MODE_FLAG_NVSYNC)
 		vsync_polarity = CHA_VSYNC_POLARITY;
 
 	ti_sn65dsi86_write_u16(pdata, SN_CHA_ACTIVE_LINE_LENGTH_LOW_REG,
drivers/gpu/drm/drm_gem_shmem_helper.c +12 -6
index 904fc893c905..eb9e722a865b 100644
@@ -571,12 +571,20 @@ static void drm_gem_shmem_vm_open(struct vm_area_struct *vma)
 {
 	struct drm_gem_object *obj = vma->vm_private_data;
 	struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj);
-	int ret;
 
 	WARN_ON(shmem->base.import_attach);
 
-	ret = drm_gem_shmem_get_pages(shmem);
-	WARN_ON_ONCE(ret != 0);
+	mutex_lock(&shmem->pages_lock);
+
+	/*
+	 * We should have already pinned the pages when the buffer was first
+	 * mmap'd, vm_open() just grabs an additional reference for the new
+	 * mm the vma is getting copied into (ie. on fork()).
+	 */
+	if (!WARN_ON_ONCE(!shmem->pages_use_count))
+		shmem->pages_use_count++;
+
+	mutex_unlock(&shmem->pages_lock);
 
 	drm_gem_vm_open(vma);
 }
@@ -622,10 +630,8 @@ int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct vm_area_struct
 	}
 
 	ret = drm_gem_shmem_get_pages(shmem);
-	if (ret) {
-		drm_gem_vm_close(vma);
+	if (ret)
 		return ret;
-	}
 
 	vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
 	vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
drivers/gpu/drm/i915/display/intel_display.c +7 -3
index fc5d94862ef3..d0f20bd0e51a 100644
@@ -3717,12 +3717,16 @@ static bool ilk_get_pipe_config(struct intel_crtc *crtc,
 
 static u8 bigjoiner_pipes(struct drm_i915_private *i915)
 {
+	u8 pipes;
+
 	if (DISPLAY_VER(i915) >= 12)
-		return BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C) | BIT(PIPE_D);
+		pipes = BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C) | BIT(PIPE_D);
 	else if (DISPLAY_VER(i915) >= 11)
-		return BIT(PIPE_B) | BIT(PIPE_C);
+		pipes = BIT(PIPE_B) | BIT(PIPE_C);
 	else
-		return 0;
+		pipes = 0;
+
+	return pipes & INTEL_INFO(i915)->display.pipe_mask;
 }
 
 static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv,
drivers/gpu/drm/vmwgfx/vmwgfx_msg.c +3 -3
index 089046fa21be..50fa3df0bc0c 100644
@@ -1085,21 +1085,21 @@ int vmw_mksstat_add_ioctl(struct drm_device *dev, void *data,
 	reset_ppn_array(pdesc->strsPPNs, ARRAY_SIZE(pdesc->strsPPNs));
 
 	/* Pin mksGuestStat user pages and store those in the instance descriptor */
-	nr_pinned_stat = pin_user_pages(arg->stat, num_pages_stat, FOLL_LONGTERM, pages_stat, NULL);
+	nr_pinned_stat = pin_user_pages_fast(arg->stat, num_pages_stat, FOLL_LONGTERM, pages_stat);
 	if (num_pages_stat != nr_pinned_stat)
 		goto err_pin_stat;
 
 	for (i = 0; i < num_pages_stat; ++i)
 		pdesc->statPPNs[i] = page_to_pfn(pages_stat[i]);
 
-	nr_pinned_info = pin_user_pages(arg->info, num_pages_info, FOLL_LONGTERM, pages_info, NULL);
+	nr_pinned_info = pin_user_pages_fast(arg->info, num_pages_info, FOLL_LONGTERM, pages_info);
 	if (num_pages_info != nr_pinned_info)
 		goto err_pin_info;
 
 	for (i = 0; i < num_pages_info; ++i)
 		pdesc->infoPPNs[i] = page_to_pfn(pages_info[i]);
 
-	nr_pinned_strs = pin_user_pages(arg->strs, num_pages_strs, FOLL_LONGTERM, pages_strs, NULL);
+	nr_pinned_strs = pin_user_pages_fast(arg->strs, num_pages_strs, FOLL_LONGTERM, pages_strs);
 	if (num_pages_strs != nr_pinned_strs)
 		goto err_pin_strs;
 
drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c +4 -0
index c89ad3a2d141..753d421a27ad 100644
@@ -950,6 +950,10 @@ int vmw_kms_sou_init_display(struct vmw_private *dev_priv)
 	struct drm_device *dev = &dev_priv->drm;
 	int i, ret;
 
+	/* Screen objects won't work if GMR's aren't available */
+	if (!dev_priv->has_gmr)
+		return -ENOSYS;
+
 	if (!(dev_priv->capabilities & SVGA_CAP_SCREEN_OBJECT_2)) {
 		return -ENOSYS;
 	}
drivers/hid/hid-core.c +3 -0
index b7f5566e338d..e4974c27ca3d 100644
@@ -1315,6 +1315,9 @@ static s32 snto32(__u32 value, unsigned n)
 	if (!value || !n)
 		return 0;
 
+	if (n > 32)
+		n = 32;
+
 	switch (n) {
 	case 8:  return ((__s8)value);
 	case 16: return ((__s16)value);
drivers/hid/hid-ids.h +4 -0
index 256795ed6247..86e754b9400f 100644
@@ -274,6 +274,7 @@
 #define USB_DEVICE_ID_CH_AXIS_295	0x001c
 
 #define USB_VENDOR_ID_CHERRY		0x046a
+#define USB_DEVICE_ID_CHERRY_MOUSE_000C	0x000c
 #define USB_DEVICE_ID_CHERRY_CYMOTION	0x0023
 #define USB_DEVICE_ID_CHERRY_CYMOTION_SOLAR	0x0027
 
@@ -917,6 +918,7 @@
 #define USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER	0x02fd
 #define USB_DEVICE_ID_MS_PIXART_MOUSE    0x00cb
 #define USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS      0x02e0
+#define USB_DEVICE_ID_MS_MOUSE_0783      0x0783
 
 #define USB_VENDOR_ID_MOJO		0x8282
 #define USB_DEVICE_ID_RETRO_ADAPTER	0x3201
@@ -1215,6 +1217,7 @@
 #define USB_DEVICE_ID_SYNAPTICS_DELL_K15A	0x6e21
 #define USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1002	0x73f4
 #define USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003	0x73f5
+#define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_017	0x73f6
 #define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5	0x81a7
 
 #define USB_VENDOR_ID_TEXAS_INSTRUMENTS	0x2047
@@ -1379,6 +1382,7 @@
 
 #define USB_VENDOR_ID_PRIMAX	0x0461
 #define USB_DEVICE_ID_PRIMAX_MOUSE_4D22	0x4d22
+#define USB_DEVICE_ID_PRIMAX_MOUSE_4E2A	0x4e2a
 #define USB_DEVICE_ID_PRIMAX_KEYBOARD	0x4e05
 #define USB_DEVICE_ID_PRIMAX_REZEL	0x4e72
 #define USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D0F	0x4d0f
drivers/hid/hid-ite.c +5 -0
index 430fa4f52ed3..75ebfcf31889 100644
@@ -121,6 +121,11 @@ static const struct hid_device_id ite_devices[] = {
 		     USB_VENDOR_ID_SYNAPTICS,
 		     USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003),
 	  .driver_data = QUIRK_TOUCHPAD_ON_OFF_REPORT },
+	/* ITE8910 USB kbd ctlr, with Synaptics touchpad connected to it. */
+	{ HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
+		     USB_VENDOR_ID_SYNAPTICS,
+		     USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_017),
+	  .driver_data = QUIRK_TOUCHPAD_ON_OFF_REPORT },
 	{ }
 };
 MODULE_DEVICE_TABLE(hid, ite_devices);
drivers/hid/hid-lg4ff.c +6 -0
index 5e6a0cef2a06..e3fcf1353fb3 100644
@@ -872,6 +872,12 @@ static ssize_t lg4ff_alternate_modes_store(struct device *dev, struct device_att
 		return -ENOMEM;
 
 	i = strlen(lbuf);
+
+	if (i == 0) {
+		kfree(lbuf);
+		return -EINVAL;
+	}
+
 	if (lbuf[i-1] == '\n') {
 		if (i == 1) {
 			kfree(lbuf);
drivers/hid/hid-quirks.c +3 -0
index 50e1c717fc0a..0e9702c7f7d6 100644
@@ -54,6 +54,7 @@ static const struct hid_device_id hid_quirks[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE), HID_QUIRK_NOGET },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_PEDALS), HID_QUIRK_NOGET },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_THROTTLE), HID_QUIRK_NOGET },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_MOUSE_000C), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB), HID_QUIRK_NO_INIT_REPORTS },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB_RAPIDFIRE), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70RGB), HID_QUIRK_NO_INIT_REPORTS },
@@ -122,6 +123,7 @@ static const struct hid_device_id hid_quirks[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C05A), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C06A), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_MCS, USB_DEVICE_ID_MCS_GAMEPADBLOCK), HID_QUIRK_MULTI_INPUT },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_MOUSE_0783), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PIXART_MOUSE), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER), HID_QUIRK_NO_INIT_REPORTS },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE3_COVER), HID_QUIRK_NO_INIT_REPORTS },
@@ -146,6 +148,7 @@ static const struct hid_device_id hid_quirks[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN), HID_QUIRK_NO_INIT_REPORTS },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_MOUSE_4D22), HID_QUIRK_ALWAYS_POLL },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_MOUSE_4E2A), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D0F), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D65), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4E22), HID_QUIRK_ALWAYS_POLL },
drivers/hid/hid-uclogic-core.c +1 -0
index ff46604ef1d8..683350596ea6 100644
@@ -192,6 +192,7 @@ static int uclogic_probe(struct hid_device *hdev,
 	 * than the pen, so use QUIRK_MULTI_INPUT for all tablets.
 	 */
 	hdev->quirks |= HID_QUIRK_MULTI_INPUT;
+	hdev->quirks |= HID_QUIRK_HIDINPUT_FORCE;
 
 	/* Allocate and assign driver data */
 	drvdata = devm_kzalloc(&hdev->dev, sizeof(*drvdata), GFP_KERNEL);
drivers/hid/hid-uclogic-rdesc.c +1 -1
index 81ca22398ed5..ce6cf6b18ae6 100644
@@ -1119,7 +1119,7 @@ __u8 *uclogic_rdesc_template_apply(const __u8 *template_ptr,
 			   p[sizeof(btn_head)] < param_num) {
 			v = param_list[p[sizeof(btn_head)]];
 			put_unaligned((__u8)0x2A, p); /* Usage Maximum */
-			put_unaligned_le16((__force u16)cpu_to_le16(v), p + 1);
+			put_unaligned((__force u16)cpu_to_le16(v), (s16 *)(p + 1));
 			p += sizeof(btn_head) + 1;
 		} else {
 			p++;
drivers/hid/i2c-hid/Kconfig +2 -2
index 5273ee2bb134..d65abe65ce73 100644
@@ -66,6 +66,6 @@ endmenu
 
 config I2C_HID_CORE
 	tristate
-	default y if I2C_HID_ACPI=y || I2C_HID_OF=y || I2C_HID_OF_GOODIX=y
-	default m if I2C_HID_ACPI=m || I2C_HID_OF=m || I2C_HID_OF_GOODIX=m
+	default y if I2C_HID_ACPI=y || I2C_HID_OF=y || I2C_HID_OF_ELAN=y || I2C_HID_OF_GOODIX=y
+	default m if I2C_HID_ACPI=m || I2C_HID_OF=m || I2C_HID_OF_ELAN=m || I2C_HID_OF_GOODIX=m
 	select HID
drivers/media/common/videobuf2/videobuf2-core.c +73 -29

214 lines not on this page · raw message

drivers/media/v4l2-core/v4l2-dv-timings.c +14 -6
index 003c32fed3f7..942d0005c55e 100644
@@ -145,6 +145,8 @@ bool v4l2_valid_dv_timings(const struct v4l2_dv_timings *t,
 	const struct v4l2_bt_timings *bt = &t->bt;
 	const struct v4l2_bt_timings_cap *cap = &dvcap->bt;
 	u32 caps = cap->capabilities;
+	const u32 max_vert = 10240;
+	u32 max_hor = 3 * bt->width;
 
 	if (t->type != V4L2_DV_BT_656_1120)
 		return false;
@@ -166,14 +168,20 @@ bool v4l2_valid_dv_timings(const struct v4l2_dv_timings *t,
 	if (!bt->interlaced &&
 	    (bt->il_vbackporch || bt->il_vsync || bt->il_vfrontporch))
 		return false;
-	if (bt->hfrontporch > 2 * bt->width ||
-	    bt->hsync > 1024 || bt->hbackporch > 1024)
+	/*
+	 * Some video receivers cannot properly separate the frontporch,
+	 * backporch and sync values, and instead they only have the total
+	 * blanking. That can be assigned to any of these three fields.
+	 * So just check that none of these are way out of range.
+	 */
+	if (bt->hfrontporch > max_hor ||
+	    bt->hsync > max_hor || bt->hbackporch > max_hor)
 		return false;
-	if (bt->vfrontporch > 4096 ||
-	    bt->vsync > 128 || bt->vbackporch > 4096)
+	if (bt->vfrontporch > max_vert ||
+	    bt->vsync > max_vert || bt->vbackporch > max_vert)
 		return false;
-	if (bt->interlaced && (bt->il_vfrontporch > 4096 ||
-	    bt->il_vsync > 128 || bt->il_vbackporch > 4096))
+	if (bt->interlaced && (bt->il_vfrontporch > max_vert ||
+	    bt->il_vsync > max_vert || bt->il_vbackporch > max_vert))
 		return false;
 	return fnc == NULL || fnc(t, fnc_handle);
 }
drivers/net/bonding/bond_main.c +1 -1
index 76dd5ff1d99d..c2939621b683 100644
@@ -3247,7 +3247,7 @@ static int bond_na_rcv(const struct sk_buff *skb, struct bonding *bond,
 		goto out;
 
 	saddr = &combined->ip6.saddr;
-	daddr = &combined->ip6.saddr;
+	daddr = &combined->ip6.daddr;
 
 	slave_dbg(bond->dev, slave->dev, "%s: %s/%d av %d sv %d sip %pI6c tip %pI6c\n",
 		  __func__, slave->dev->name, bond_slave_state(slave),
drivers/net/can/can327.c +10 -7
index ed3d0b8989a0..dc7192ecb001 100644
@@ -796,9 +796,9 @@ static int can327_netdev_close(struct net_device *dev)
 
 	netif_stop_queue(dev);
 
-	/* Give UART one final chance to flush. */
-	clear_bit(TTY_DO_WRITE_WAKEUP, &elm->tty->flags);
-	flush_work(&elm->tx_work);
+	/* We don't flush the UART TX queue here, as we want final stop
+	 * commands (like the above dummy char) to be flushed out.
+	 */
 
 	can_rx_offload_disable(&elm->offload);
 	elm->can.state = CAN_STATE_STOPPED;
@@ -1069,12 +1069,15 @@ static void can327_ldisc_close(struct tty_struct *tty)
 {
 	struct can327 *elm = (struct can327 *)tty->disc_data;
 
-	/* unregister_netdev() calls .ndo_stop() so we don't have to.
-	 * Our .ndo_stop() also flushes the TTY write wakeup handler,
-	 * so we can safely set elm->tty = NULL after this.
-	 */
+	/* unregister_netdev() calls .ndo_stop() so we don't have to. */
 	unregister_candev(elm->dev);
 
+	/* Give UART one final chance to flush.
+	 * No need to clear TTY_DO_WRITE_WAKEUP since .write_wakeup() is
+	 * serialised against .close() and will not be called once we return.
+	 */
+	flush_work(&elm->tx_work);
+
 	/* Mark channel as dead */
 	spin_lock_bh(&elm->lock);
 	tty->disc_data = NULL;
drivers/net/can/slcan/slcan-core.c +6 -4
index fbb34139daa1..f4db77007c13 100644
@@ -864,12 +864,14 @@ static void slcan_close(struct tty_struct *tty)
 {
 	struct slcan *sl = (struct slcan *)tty->disc_data;
 
-	/* unregister_netdev() calls .ndo_stop() so we don't have to.
-	 * Our .ndo_stop() also flushes the TTY write wakeup handler,
-	 * so we can safely set sl->tty = NULL after this.
-	 */
 	unregister_candev(sl->dev);
 
+	/*
+	 * The netdev needn't be UP (so .ndo_stop() is not called). Hence make
+	 * sure this is not running before freeing it up.
+	 */
+	flush_work(&sl->tx_work);
+
 	/* Mark channel as dead */
 	spin_lock_bh(&sl->lock);
 	tty->disc_data = NULL;
drivers/net/can/usb/esd_usb.c +6 -0
index 81b88e9e5bdc..42323f5e6f3a 100644
@@ -234,6 +234,10 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
 		u8 rxerr = msg->msg.rx.data[2];
 		u8 txerr = msg->msg.rx.data[3];
 
+		netdev_dbg(priv->netdev,
+			   "CAN_ERR_EV_EXT: dlc=%#02x state=%02x ecc=%02x rec=%02x tec=%02x\n",
+			   msg->msg.rx.dlc, state, ecc, rxerr, txerr);
+
 		skb = alloc_can_err_skb(priv->netdev, &cf);
 		if (skb == NULL) {
 			stats->rx_dropped++;
@@ -260,6 +264,8 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
 				break;
 			default:
 				priv->can.state = CAN_STATE_ERROR_ACTIVE;
+				txerr = 0;
+				rxerr = 0;
 				break;
 			}
 		} else {
drivers/net/dsa/mv88e6xxx/chip.c +5 -2
index 07e9a4da924c..546d90dae933 100644
@@ -825,10 +825,13 @@ static void mv88e6xxx_get_caps(struct dsa_switch *ds, int port,
 
 	chip->info->ops->phylink_get_caps(chip, port, config);
 
-	/* Internal ports need GMII for PHYLIB */
-	if (mv88e6xxx_phy_is_internal(ds, port))
+	if (mv88e6xxx_phy_is_internal(ds, port)) {
+		__set_bit(PHY_INTERFACE_MODE_INTERNAL,
+			  config->supported_interfaces);
+		/* Internal ports with no phy-mode need GMII for PHYLIB */
 		__set_bit(PHY_INTERFACE_MODE_GMII,
 			  config->supported_interfaces);
+	}
 }
 
 static void mv88e6xxx_mac_config(struct dsa_switch *ds, int port,
drivers/net/dsa/sja1105/sja1105_devlink.c +2 -0
index 10c6fea1227f..bdbbff2a7909 100644
@@ -95,6 +95,8 @@ static int sja1105_setup_devlink_regions(struct dsa_switch *ds)
 		if (IS_ERR(region)) {
 			while (--i >= 0)
 				dsa_devlink_region_destroy(priv->regions[i]);
+
+			kfree(priv->regions);
 			return PTR_ERR(region);
 		}
 
drivers/net/dsa/sja1105/sja1105_main.c +1 -1
index b03d0d0c3dbf..2cb8fa2494cb 100644
@@ -1038,7 +1038,7 @@ static int sja1105_init_l2_policing(struct sja1105_private *priv)
 
 		policing[bcast].sharindx = port;
 		/* Only SJA1110 has multicast policers */
-		if (mcast <= table->ops->max_entry_count)
+		if (mcast < table->ops->max_entry_count)
 			policing[mcast].sharindx = port;
 	}
 
drivers/net/ethernet/aeroflex/greth.c +1 -0
index 447dc64a17e5..4ce8367bb81c 100644
@@ -258,6 +258,7 @@ static int greth_init_rings(struct greth_private *greth)
 			if (dma_mapping_error(greth->dev, dma_addr)) {
 				if (netif_msg_ifup(greth))
 					dev_err(greth->dev, "Could not create initial DMA mapping\n");
+				dev_kfree_skb(skb);
 				goto cleanup;
 			}
 			greth->rx_skbuff[i] = skb;
drivers/net/ethernet/broadcom/Kconfig +2 -1
index 1cd3c289f49b..cd1706909044 100644
@@ -71,13 +71,14 @@ config BCM63XX_ENET
 config BCMGENET
 	tristate "Broadcom GENET internal MAC support"
 	depends on HAS_IOMEM
+	depends on PTP_1588_CLOCK_OPTIONAL || !ARCH_BCM2835
 	select MII
 	select PHYLIB
 	select FIXED_PHY
 	select BCM7XXX_PHY
 	select MDIO_BCM_UNIMAC
 	select DIMLIB
-	select BROADCOM_PHY if (ARCH_BCM2835 && PTP_1588_CLOCK_OPTIONAL)
+	select BROADCOM_PHY if ARCH_BCM2835
 	help
 	  This driver supports the built-in Ethernet MACs found in the
 	  Broadcom BCM7xxx Set Top Box family chipset.
drivers/net/ethernet/cavium/thunder/nicvf_main.c +3 -1
index 768ea426d49f..745bd2dfb742 100644
@@ -2240,7 +2240,7 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	err = register_netdev(netdev);
 	if (err) {
 		dev_err(dev, "Failed to register netdevice\n");
-		goto err_unregister_interrupts;
+		goto err_destroy_workqueue;
 	}
 
 	nic->msg_enable = debug;
@@ -2249,6 +2249,8 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	return 0;
 
+err_destroy_workqueue:
+	destroy_workqueue(nic->nicvf_rx_mode_wq);
 err_unregister_interrupts:
 	nicvf_unregister_interrupts(nic);
 err_free_netdev:
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c +4 -0
index cacd454ac696..c39b866e2582 100644
@@ -132,6 +132,7 @@ int dpaa2_switch_acl_entry_add(struct dpaa2_switch_filter_block *filter_block,
 						 DMA_TO_DEVICE);
 	if (unlikely(dma_mapping_error(dev, acl_entry_cfg->key_iova))) {
 		dev_err(dev, "DMA mapping failed\n");
+		kfree(cmd_buff);
 		return -EFAULT;
 	}
 
@@ -142,6 +143,7 @@ int dpaa2_switch_acl_entry_add(struct dpaa2_switch_filter_block *filter_block,
 			 DMA_TO_DEVICE);
 	if (err) {
 		dev_err(dev, "dpsw_acl_add_entry() failed %d\n", err);
+		kfree(cmd_buff);
 		return err;
 	}
 
@@ -172,6 +174,7 @@ dpaa2_switch_acl_entry_remove(struct dpaa2_switch_filter_block *block,
 						 DMA_TO_DEVICE);
 	if (unlikely(dma_mapping_error(dev, acl_entry_cfg->key_iova))) {
 		dev_err(dev, "DMA mapping failed\n");
+		kfree(cmd_buff);
 		return -EFAULT;
 	}
 
@@ -182,6 +185,7 @@ dpaa2_switch_acl_entry_remove(struct dpaa2_switch_filter_block *block,
 			 DMA_TO_DEVICE);
 	if (err) {
 		dev_err(dev, "dpsw_acl_remove_entry() failed %d\n", err);
+		kfree(cmd_buff);
 		return err;
 	}
 
drivers/net/ethernet/hisilicon/hisi_femac.c +1 -1
index 93846bace028..ce2571c16e43 100644
@@ -283,7 +283,7 @@ static int hisi_femac_rx(struct net_device *dev, int limit)
 		skb->protocol = eth_type_trans(skb, dev);
 		napi_gro_receive(&priv->napi, skb);
 		dev->stats.rx_packets++;
-		dev->stats.rx_bytes += skb->len;
+		dev->stats.rx_bytes += len;
 next:
 		pos = (pos + 1) % rxq->num;
 		if (rx_pkts_num >= limit)
drivers/net/ethernet/hisilicon/hix5hd2_gmac.c +1 -1
index d7e62eca050f..b981b6cbe6ff 100644
@@ -550,7 +550,7 @@ static int hix5hd2_rx(struct net_device *dev, int limit)
 		skb->protocol = eth_type_trans(skb, dev);
 		napi_gro_receive(&priv->napi, skb);
 		dev->stats.rx_packets++;
-		dev->stats.rx_bytes += skb->len;
+		dev->stats.rx_bytes += len;
 next:
 		pos = dma_ring_incr(pos, RX_DESC_NUM);
 	}
drivers/net/ethernet/intel/e1000e/netdev.c +2 -2
index 321f2a95ae3a..da113f5011e9 100644
@@ -5936,9 +5936,9 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
 		e1000_tx_queue(tx_ring, tx_flags, count);
 		/* Make sure there is space in the ring for the next send. */
 		e1000_maybe_stop_tx(tx_ring,
-				    (MAX_SKB_FRAGS *
+				    ((MAX_SKB_FRAGS + 1) *
 				     DIV_ROUND_UP(PAGE_SIZE,
-						  adapter->tx_fifo_limit) + 2));
+						  adapter->tx_fifo_limit) + 4));
 
 		if (!netdev_xmit_more() ||
 		    netif_xmit_stopped(netdev_get_tx_queue(netdev, 0))) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +2 -10
index 6f0d4160ff82..d9368f7669aa 100644
@@ -4464,11 +4464,7 @@ static int i40e_check_fdir_input_set(struct i40e_vsi *vsi,
 			return -EOPNOTSUPP;
 
 		/* First 4 bytes of L4 header */
-		if (usr_ip4_spec->l4_4_bytes == htonl(0xFFFFFFFF))
-			new_mask |= I40E_L4_SRC_MASK | I40E_L4_DST_MASK;
-		else if (!usr_ip4_spec->l4_4_bytes)
-			new_mask &= ~(I40E_L4_SRC_MASK | I40E_L4_DST_MASK);
-		else
+		if (usr_ip4_spec->l4_4_bytes)
 			return -EOPNOTSUPP;
 
 		/* Filtering on Type of Service is not supported. */
@@ -4507,11 +4503,7 @@ static int i40e_check_fdir_input_set(struct i40e_vsi *vsi,
 		else
 			return -EOPNOTSUPP;
 
-		if (usr_ip6_spec->l4_4_bytes == htonl(0xFFFFFFFF))
-			new_mask |= I40E_L4_SRC_MASK | I40E_L4_DST_MASK;
-		else if (!usr_ip6_spec->l4_4_bytes)
-			new_mask &= ~(I40E_L4_SRC_MASK | I40E_L4_DST_MASK);
-		else
+		if (usr_ip6_spec->l4_4_bytes)
 			return -EOPNOTSUPP;
 
 		/* Filtering on Traffic class is not supported. */
drivers/net/ethernet/intel/i40e/i40e_main.c +18 -1
index 023685cca2c1..e53ea7ed0b1d 100644
@@ -10661,6 +10661,21 @@ static int i40e_rebuild_channels(struct i40e_vsi *vsi)
 	return 0;
 }
 
+/**
+ * i40e_clean_xps_state - clean xps state for every tx_ring
+ * @vsi: ptr to the VSI
+ **/
+static void i40e_clean_xps_state(struct i40e_vsi *vsi)
+{
+	int i;
+
+	if (vsi->tx_rings)
+		for (i = 0; i < vsi->num_queue_pairs; i++)
+			if (vsi->tx_rings[i])
+				clear_bit(__I40E_TX_XPS_INIT_DONE,
+					  vsi->tx_rings[i]->state);
+}
+
 /**
  * i40e_prep_for_reset - prep for the core to reset
  * @pf: board private structure
@@ -10685,8 +10700,10 @@ static void i40e_prep_for_reset(struct i40e_pf *pf)
 	i40e_pf_quiesce_all_vsi(pf);
 
 	for (v = 0; v < pf->num_alloc_vsi; v++) {
-		if (pf->vsi[v])
+		if (pf->vsi[v]) {
+			i40e_clean_xps_state(pf->vsi[v]);
 			pf->vsi[v]->seid = 0;
+		}
 	}
 
 	i40e_shutdown_adminq(&pf->hw);
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +2 -0
index 72ddcefc45b1..635f93d60318 100644
@@ -1578,6 +1578,7 @@ bool i40e_reset_vf(struct i40e_vf *vf, bool flr)
 	i40e_cleanup_reset_vf(vf);
 
 	i40e_flush(hw);
+	usleep_range(20000, 40000);
 	clear_bit(I40E_VF_STATE_RESETTING, &vf->vf_states);
 
 	return true;
@@ -1701,6 +1702,7 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr)
 	}
 
 	i40e_flush(hw);
+	usleep_range(20000, 40000);
 	clear_bit(__I40E_VF_DISABLE, pf->state);
 
 	return true;
drivers/net/ethernet/intel/igb/igb_ethtool.c +2 -0
index c14fc871dd41..677893f891ed 100644
@@ -1413,6 +1413,8 @@ static int igb_intr_test(struct igb_adapter *adapter, u64 *data)
 			*data = 1;
 			return -1;
 		}
+		wr32(E1000_IVAR_MISC, E1000_IVAR_VALID << 8);
+		wr32(E1000_EIMS, BIT(0));
 	} else if (adapter->flags & IGB_FLAG_HAS_MSI) {
 		shared_int = false;
 		if (request_irq(irq,
drivers/net/ethernet/marvell/mvneta.c +1 -1
index 0caa2df87c04..85c93ba6a82b 100644
@@ -4271,7 +4271,7 @@ static void mvneta_percpu_elect(struct mvneta_port *pp)
 	/* Use the cpu associated to the rxq when it is online, in all
 	 * the other cases, use the cpu 0 which can't be offline.
 	 */
-	if (cpu_online(pp->rxq_def))
+	if (pp->rxq_def < nr_cpu_ids && cpu_online(pp->rxq_def))
 		elected_cpu = pp->rxq_def;
 
 	max_cpu = num_present_cpus();
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c +6 -1
index e64318c110fd..6a01ab1a6e6f 100644
@@ -1134,7 +1134,12 @@ int otx2_init_tc(struct otx2_nic *nic)
 		return err;
 
 	tc->flow_ht_params = tc_flow_ht_params;
-	return rhashtable_init(&tc->flow_table, &tc->flow_ht_params);
+	err = rhashtable_init(&tc->flow_table, &tc->flow_ht_params);
+	if (err) {
+		kfree(tc->tc_entries_bitmap);
+		tc->tc_entries_bitmap = NULL;
+	}
+	return err;
 }
 EXPORT_SYMBOL(otx2_init_tc);
 
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +1 -2
index 48f86e12f5c0..bbe810f3b373 100644
@@ -201,9 +201,8 @@ static void mlx5_ldev_free(struct kref *ref)
 	if (ldev->nb.notifier_call)
 		unregister_netdevice_notifier_net(&init_net, &ldev->nb);
 	mlx5_lag_mp_cleanup(ldev);
-	mlx5_lag_mpesw_cleanup(ldev);
-	cancel_work_sync(&ldev->mpesw_work);
 	destroy_workqueue(ldev->wq);
+	mlx5_lag_mpesw_cleanup(ldev);
 	mutex_destroy(&ldev->lock);
 	kfree(ldev);
 }
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h +13 -1
index ce2ce8ccbd70..f30ac2de639f 100644
@@ -50,6 +50,19 @@ struct lag_tracker {
 	enum netdev_lag_hash hash_type;
 };
 
+enum mpesw_op {
+	MLX5_MPESW_OP_ENABLE,
+	MLX5_MPESW_OP_DISABLE,
+};
+
+struct mlx5_mpesw_work_st {
+	struct work_struct work;
+	struct mlx5_lag    *lag;
+	enum mpesw_op	   op;
+	struct completion  comp;
+	int result;
+};
+
 /* LAG data of a ConnectX card.
  * It serves both its phys functions.
  */
@@ -66,7 +79,6 @@ struct mlx5_lag {
 	struct lag_tracker        tracker;
 	struct workqueue_struct   *wq;
 	struct delayed_work       bond_work;
-	struct work_struct	  mpesw_work;
 	struct notifier_block     nb;
 	struct lag_mp             lag_mp;
 	struct mlx5_lag_port_sel  port_sel;
drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.c +64 -36

150 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.h +0 -1
index be4abcb8fcd5..88e8daffcf92 100644
@@ -12,7 +12,6 @@ struct lag_mpesw {
 	atomic_t mpesw_rule_count;
 };
 
-void mlx5_mpesw_work(struct work_struct *work);
 int mlx5_lag_do_mirred(struct mlx5_core_dev *mdev, struct net_device *out_dev);
 bool mlx5_lag_mpesw_is_activated(struct mlx5_core_dev *dev);
 #if IS_ENABLED(CONFIG_MLX5_ESWITCH)
drivers/net/ethernet/microchip/encx24j600-regmap.c +2 -2
index 81a8ccca7e5e..5693784eec5b 100644
@@ -359,7 +359,7 @@ static int regmap_encx24j600_phy_reg_read(void *context, unsigned int reg,
 		goto err_out;
 
 	usleep_range(26, 100);
-	while ((ret = regmap_read(ctx->regmap, MISTAT, &mistat) != 0) &&
+	while (((ret = regmap_read(ctx->regmap, MISTAT, &mistat)) == 0) &&
 	       (mistat & BUSY))
 		cpu_relax();
 
@@ -397,7 +397,7 @@ static int regmap_encx24j600_phy_reg_write(void *context, unsigned int reg,
 		goto err_out;
 
 	usleep_range(26, 100);
-	while ((ret = regmap_read(ctx->regmap, MISTAT, &mistat) != 0) &&
+	while (((ret = regmap_read(ctx->regmap, MISTAT, &mistat)) == 0) &&
 	       (mistat & BUSY))
 		cpu_relax();
 
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c +1 -1
index 66360c8c5a38..141897dfe388 100644
@@ -317,7 +317,7 @@ int sparx5_fdma_xmit(struct sparx5 *sparx5, u32 *ifh, struct sk_buff *skb)
 	next_dcb_hw = sparx5_fdma_next_dcb(tx, tx->curr_entry);
 	db_hw = &next_dcb_hw->db[0];
 	if (!(db_hw->status & FDMA_DCB_STATUS_DONE))
-		tx->dropped++;
+		return -EINVAL;
 	db = list_first_entry(&tx->db_list, struct sparx5_db, list);
 	list_move_tail(&db->list, &tx->db_list);
 	next_dcb_hw->nextptr = FDMA_DCB_INVALID_DATA;
drivers/net/ethernet/microchip/sparx5/sparx5_main.c +3 -0
index 30815c0e3f76..e58de119186a 100644
@@ -876,6 +876,8 @@ static int mchp_sparx5_probe(struct platform_device *pdev)
 
 cleanup_ports:
 	sparx5_cleanup_ports(sparx5);
+	if (sparx5->mact_queue)
+		destroy_workqueue(sparx5->mact_queue);
 cleanup_config:
 	kfree(configs);
 cleanup_pnode:
@@ -900,6 +902,7 @@ static int mchp_sparx5_remove(struct platform_device *pdev)
 	sparx5_cleanup_ports(sparx5);
 	/* Unregister netdevs */
 	sparx5_unregister_notifier_blocks(sparx5);
+	destroy_workqueue(sparx5->mact_queue);
 
 	return 0;
 }
drivers/net/ethernet/microchip/sparx5/sparx5_packet.c +24 -17

56 lines not on this page · raw message

drivers/net/ethernet/microsoft/mana/gdma.h +8 -1
index 4a6efe6ada08..65c24ee49efd 100644
@@ -498,7 +498,14 @@ enum {
 
 #define GDMA_DRV_CAP_FLAG_1_EQ_SHARING_MULTI_VPORT BIT(0)
 
-#define GDMA_DRV_CAP_FLAGS1 GDMA_DRV_CAP_FLAG_1_EQ_SHARING_MULTI_VPORT
+/* Advertise to the NIC firmware: the NAPI work_done variable race is fixed,
+ * so the driver is able to reliably support features like busy_poll.
+ */
+#define GDMA_DRV_CAP_FLAG_1_NAPI_WKDONE_FIX BIT(2)
+
+#define GDMA_DRV_CAP_FLAGS1 \
+	(GDMA_DRV_CAP_FLAG_1_EQ_SHARING_MULTI_VPORT | \
+	 GDMA_DRV_CAP_FLAG_1_NAPI_WKDONE_FIX)
 
 #define GDMA_DRV_CAP_FLAGS2 0
 
drivers/net/ethernet/microsoft/mana/mana_en.c +11 -5
index 9259a74eca40..27a0f3af8aab 100644
@@ -1303,10 +1303,11 @@ static void mana_poll_rx_cq(struct mana_cq *cq)
 		xdp_do_flush();
 }
 
-static void mana_cq_handler(void *context, struct gdma_queue *gdma_queue)
+static int mana_cq_handler(void *context, struct gdma_queue *gdma_queue)
 {
 	struct mana_cq *cq = context;
 	u8 arm_bit;
+	int w;
 
 	WARN_ON_ONCE(cq->gdma_cq != gdma_queue);
 
@@ -1315,26 +1316,31 @@ static void mana_cq_handler(void *context, struct gdma_queue *gdma_queue)
 	else
 		mana_poll_tx_cq(cq);
 
-	if (cq->work_done < cq->budget &&
-	    napi_complete_done(&cq->napi, cq->work_done)) {
+	w = cq->work_done;
+
+	if (w < cq->budget &&
+	    napi_complete_done(&cq->napi, w)) {
 		arm_bit = SET_ARM_BIT;
 	} else {
 		arm_bit = 0;
 	}
 
 	mana_gd_ring_cq(gdma_queue, arm_bit);
+
+	return w;
 }
 
 static int mana_poll(struct napi_struct *napi, int budget)
 {
 	struct mana_cq *cq = container_of(napi, struct mana_cq, napi);
+	int w;
 
 	cq->work_done = 0;
 	cq->budget = budget;
 
-	mana_cq_handler(cq, cq->gdma_cq);
+	w = mana_cq_handler(cq, cq->gdma_cq);
 
-	return min(cq->work_done, budget);
+	return min(w, budget);
 }
 
 static void mana_schedule_napi(void *context, struct gdma_queue *gdma_queue)
drivers/net/ethernet/netronome/nfp/nfdk/dp.c +3 -3
index 2b427d8ccb2f..ccacb6ab6c39 100644
@@ -282,7 +282,7 @@ netdev_tx_t nfp_nfdk_tx(struct sk_buff *skb, struct net_device *netdev)
 	dma_len = skb_headlen(skb);
 	if (skb_is_gso(skb))
 		type = NFDK_DESC_TX_TYPE_TSO;
-	else if (!nr_frags && dma_len < NFDK_TX_MAX_DATA_PER_HEAD)
+	else if (!nr_frags && dma_len <= NFDK_TX_MAX_DATA_PER_HEAD)
 		type = NFDK_DESC_TX_TYPE_SIMPLE;
 	else
 		type = NFDK_DESC_TX_TYPE_GATHER;
@@ -927,7 +927,7 @@ nfp_nfdk_tx_xdp_buf(struct nfp_net_dp *dp, struct nfp_net_rx_ring *rx_ring,
 	dma_len = pkt_len;
 	dma_addr = rxbuf->dma_addr + dma_off;
 
-	if (dma_len < NFDK_TX_MAX_DATA_PER_HEAD)
+	if (dma_len <= NFDK_TX_MAX_DATA_PER_HEAD)
 		type = NFDK_DESC_TX_TYPE_SIMPLE;
 	else
 		type = NFDK_DESC_TX_TYPE_GATHER;
@@ -1325,7 +1325,7 @@ nfp_nfdk_ctrl_tx_one(struct nfp_net *nn, struct nfp_net_r_vector *r_vec,
 	txbuf = &tx_ring->ktxbufs[wr_idx];
 
 	dma_len = skb_headlen(skb);
-	if (dma_len < NFDK_TX_MAX_DATA_PER_HEAD)
+	if (dma_len <= NFDK_TX_MAX_DATA_PER_HEAD)
 		type = NFDK_DESC_TX_TYPE_SIMPLE;
 	else
 		type = NFDK_DESC_TX_TYPE_GATHER;
drivers/net/ethernet/renesas/ravb_main.c +1 -1
index 44f9b31f8b99..77d4f3eab971 100644
@@ -835,7 +835,7 @@ static bool ravb_rx_gbeth(struct net_device *ndev, int *quota, int q)
 				napi_gro_receive(&priv->napi[q],
 						 priv->rx_1st_skb);
 				stats->rx_packets++;
-				stats->rx_bytes += priv->rx_1st_skb->len;
+				stats->rx_bytes += pkt_len;
 				break;
 			}
 		}
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +4 -4
index 9f5cac4000da..5c234a8158c7 100644
@@ -108,10 +108,10 @@ static struct stmmac_axi *stmmac_axi_setup(struct platform_device *pdev)
 
 	axi->axi_lpi_en = of_property_read_bool(np, "snps,lpi_en");
 	axi->axi_xit_frm = of_property_read_bool(np, "snps,xit_frm");
-	axi->axi_kbbe = of_property_read_bool(np, "snps,axi_kbbe");
-	axi->axi_fb = of_property_read_bool(np, "snps,axi_fb");
-	axi->axi_mb = of_property_read_bool(np, "snps,axi_mb");
-	axi->axi_rb =  of_property_read_bool(np, "snps,axi_rb");
+	axi->axi_kbbe = of_property_read_bool(np, "snps,kbbe");
+	axi->axi_fb = of_property_read_bool(np, "snps,fb");
+	axi->axi_mb = of_property_read_bool(np, "snps,mb");
+	axi->axi_rb =  of_property_read_bool(np, "snps,rb");
 
 	if (of_property_read_u32(np, "snps,wr_osr_lmt", &axi->axi_wr_osr_lmt))
 		axi->axi_wr_osr_lmt = 1;
drivers/net/ethernet/ti/am65-cpsw-nuss.c +1 -1
index 95baacd6c761..47da11b9ac28 100644
@@ -1450,7 +1450,7 @@ static void am65_cpsw_nuss_mac_link_up(struct phylink_config *config, struct phy
 
 	if (speed == SPEED_1000)
 		mac_control |= CPSW_SL_CTL_GIG;
-	if (speed == SPEED_10 && interface == PHY_INTERFACE_MODE_RGMII)
+	if (speed == SPEED_10 && phy_interface_mode_is_rgmii(interface))
 		/* Can be used with in band mode only */
 		mac_control |= CPSW_SL_CTL_EXT_EN;
 	if (speed == SPEED_100 && interface == PHY_INTERFACE_MODE_RMII)
drivers/net/ieee802154/ca8210.c +1 -1
index 450b16ad40a4..e1a569b99e4a 100644
@@ -885,7 +885,7 @@ static int ca8210_spi_transfer(
 
 	dev_dbg(&spi->dev, "%s called\n", __func__);
 
-	cas_ctl = kmalloc(sizeof(*cas_ctl), GFP_ATOMIC);
+	cas_ctl = kzalloc(sizeof(*cas_ctl), GFP_ATOMIC);
 	if (!cas_ctl)
 		return -ENOMEM;
 
drivers/net/ieee802154/cc2520.c +1 -1
index c69b87d3837d..edc769daad07 100644
@@ -970,7 +970,7 @@ static int cc2520_hw_init(struct cc2520_private *priv)
 
 		if (timeout-- <= 0) {
 			dev_err(&priv->spi->dev, "oscillator start failed!\n");
-			return ret;
+			return -ETIMEDOUT;
 		}
 		udelay(1);
 	} while (!(status & CC2520_STATUS_XOSC32M_STABLE));
drivers/net/macsec.c +1 -0
index 104fc564a766..8dafc814282c 100644
@@ -3720,6 +3720,7 @@ static const struct nla_policy macsec_rtnl_policy[IFLA_MACSEC_MAX + 1] = {
 	[IFLA_MACSEC_SCB] = { .type = NLA_U8 },
 	[IFLA_MACSEC_REPLAY_PROTECT] = { .type = NLA_U8 },
 	[IFLA_MACSEC_VALIDATION] = { .type = NLA_U8 },
+	[IFLA_MACSEC_OFFLOAD] = { .type = NLA_U8 },
 };
 
 static void macsec_free_netdev(struct net_device *dev)
drivers/net/mdio/fwnode_mdio.c +15 -10
index 40e745a1d185..2c47efdae73b 100644
@@ -77,6 +77,7 @@ int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,
 	 */
 	rc = phy_device_register(phy);
 	if (rc) {
+		device_set_node(&phy->mdio.dev, NULL);
 		fwnode_handle_put(child);
 		return rc;
 	}
@@ -110,8 +111,8 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,
 	else
 		phy = phy_device_create(bus, addr, phy_id, 0, NULL);
 	if (IS_ERR(phy)) {
-		unregister_mii_timestamper(mii_ts);
-		return PTR_ERR(phy);
+		rc = PTR_ERR(phy);
+		goto clean_mii_ts;
 	}
 
 	if (is_acpi_node(child)) {
@@ -125,17 +126,14 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,
 		/* All data is now stored in the phy struct, so register it */
 		rc = phy_device_register(phy);
 		if (rc) {
-			phy_device_free(phy);
-			fwnode_handle_put(phy->mdio.dev.fwnode);
-			return rc;
+			phy->mdio.dev.fwnode = NULL;
+			fwnode_handle_put(child);
+			goto clean_phy;
 		}
 	} else if (is_of_node(child)) {
 		rc = fwnode_mdiobus_phy_device_register(bus, phy, child, addr);
-		if (rc) {
-			unregister_mii_timestamper(mii_ts);
-			phy_device_free(phy);
-			return rc;
-		}
+		if (rc)
+			goto clean_phy;
 	}
 
 	/* phy->mii_ts may already be defined by the PHY driver. A
@@ -145,5 +143,12 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,
 	if (mii_ts)
 		phy->mii_ts = mii_ts;
 	return 0;
+
+clean_phy:
+	phy_device_free(phy);
+clean_mii_ts:
+	unregister_mii_timestamper(mii_ts);
+
+	return rc;
 }
 EXPORT_SYMBOL(fwnode_mdiobus_register_phy);
drivers/net/mdio/of_mdio.c +2 -1
index 796e9c7857d0..510822d6d0d9 100644
@@ -68,8 +68,9 @@ static int of_mdiobus_register_device(struct mii_bus *mdio,
 	/* All data is now stored in the mdiodev struct; register it. */
 	rc = mdio_device_register(mdiodev);
 	if (rc) {
+		device_set_node(&mdiodev->dev, NULL);
+		fwnode_handle_put(fwnode);
 		mdio_device_free(mdiodev);
-		of_node_put(child);
 		return rc;
 	}
 
drivers/net/phy/mdio_device.c +2 -0
index 250742ffdfd9..044828d081d2 100644
@@ -21,6 +21,7 @@
 #include <linux/slab.h>
 #include <linux/string.h>
 #include <linux/unistd.h>
+#include <linux/property.h>
 
 void mdio_device_free(struct mdio_device *mdiodev)
 {
@@ -30,6 +31,7 @@ EXPORT_SYMBOL(mdio_device_free);
 
 static void mdio_device_release(struct device *dev)
 {
+	fwnode_handle_put(dev->fwnode);
 	kfree(to_mdio_device(dev));
 }
 
drivers/net/phy/mxl-gpy.c +85 -0

128 lines not on this page · raw message

drivers/net/plip/plip.c +2 -2
index c8791e9b451d..40ce8abe6999 100644
@@ -450,12 +450,12 @@ plip_bh_timeout_error(struct net_device *dev, struct net_local *nl,
 	}
 	rcv->state = PLIP_PK_DONE;
 	if (rcv->skb) {
-		kfree_skb(rcv->skb);
+		dev_kfree_skb_irq(rcv->skb);
 		rcv->skb = NULL;
 	}
 	snd->state = PLIP_PK_DONE;
 	if (snd->skb) {
-		dev_kfree_skb(snd->skb);
+		dev_consume_skb_irq(snd->skb);
 		snd->skb = NULL;
 	}
 	spin_unlock_irq(&nl->lock);
drivers/net/thunderbolt.c +1 -0
index 8391f8303499..1f4dcadc284c 100644
@@ -902,6 +902,7 @@ static int tbnet_open(struct net_device *dev)
 				tbnet_start_poll, net);
 	if (!ring) {
 		netdev_err(dev, "failed to allocate Rx ring\n");
+		tb_xdomain_release_out_hopid(xd, hopid);
 		tb_ring_free(net->tx_ring.ring);
 		net->tx_ring.ring = NULL;
 		return -ENOMEM;
drivers/net/usb/qmi_wwan.c +1 -0
index afd6faa4c2ec..554d4e2a84a4 100644
@@ -1423,6 +1423,7 @@ static const struct usb_device_id products[] = {
 	{QMI_FIXED_INTF(0x0489, 0xe0b4, 0)},	/* Foxconn T77W968 LTE */
 	{QMI_FIXED_INTF(0x0489, 0xe0b5, 0)},	/* Foxconn T77W968 LTE with eSIM support*/
 	{QMI_FIXED_INTF(0x2692, 0x9025, 4)},    /* Cellient MPL200 (rebranded Qualcomm 05c6:9025) */
+	{QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)},	/* u-blox LARA-L6 */
 
 	/* 4. Gobi 1000 devices */
 	{QMI_GOBI1K_DEVICE(0x05c6, 0x9212)},	/* Acer Gobi Modem Device */
drivers/net/vmxnet3/vmxnet3_drv.c +23 -4
index 53b3b241e027..c28c4a654615 100644
@@ -75,8 +75,14 @@ vmxnet3_enable_all_intrs(struct vmxnet3_adapter *adapter)
 
 	for (i = 0; i < adapter->intr.num_intrs; i++)
 		vmxnet3_enable_intr(adapter, i);
-	adapter->shared->devRead.intrConf.intrCtrl &=
+	if (!VMXNET3_VERSION_GE_6(adapter) ||
+	    !adapter->queuesExtEnabled) {
+		adapter->shared->devRead.intrConf.intrCtrl &=
+					cpu_to_le32(~VMXNET3_IC_DISABLE_ALL);
+	} else {
+		adapter->shared->devReadExt.intrConfExt.intrCtrl &=
 					cpu_to_le32(~VMXNET3_IC_DISABLE_ALL);
+	}
 }
 
 
@@ -85,8 +91,14 @@ vmxnet3_disable_all_intrs(struct vmxnet3_adapter *adapter)
 {
 	int i;
 
-	adapter->shared->devRead.intrConf.intrCtrl |=
+	if (!VMXNET3_VERSION_GE_6(adapter) ||
+	    !adapter->queuesExtEnabled) {
+		adapter->shared->devRead.intrConf.intrCtrl |=
+					cpu_to_le32(VMXNET3_IC_DISABLE_ALL);
+	} else {
+		adapter->shared->devReadExt.intrConfExt.intrCtrl |=
 					cpu_to_le32(VMXNET3_IC_DISABLE_ALL);
+	}
 	for (i = 0; i < adapter->intr.num_intrs; i++)
 		vmxnet3_disable_intr(adapter, i);
 }
@@ -1396,6 +1408,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,
 	};
 	u32 num_pkts = 0;
 	bool skip_page_frags = false;
+	bool encap_lro = false;
 	struct Vmxnet3_RxCompDesc *rcd;
 	struct vmxnet3_rx_ctx *ctx = &rq->rx_ctx;
 	u16 segCnt = 0, mss = 0;
@@ -1556,13 +1569,18 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,
 			if (VMXNET3_VERSION_GE_2(adapter) &&
 			    rcd->type == VMXNET3_CDTYPE_RXCOMP_LRO) {
 				struct Vmxnet3_RxCompDescExt *rcdlro;
+				union Vmxnet3_GenericDesc *gdesc;
+
 				rcdlro = (struct Vmxnet3_RxCompDescExt *)rcd;
+				gdesc = (union Vmxnet3_GenericDesc *)rcd;
 
 				segCnt = rcdlro->segCnt;
 				WARN_ON_ONCE(segCnt == 0);
 				mss = rcdlro->mss;
 				if (unlikely(segCnt <= 1))
 					segCnt = 0;
+				encap_lro = (le32_to_cpu(gdesc->dword[0]) &
+					(1UL << VMXNET3_RCD_HDR_INNER_SHIFT));
 			} else {
 				segCnt = 0;
 			}
@@ -1630,7 +1648,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,
 			vmxnet3_rx_csum(adapter, skb,
 					(union Vmxnet3_GenericDesc *)rcd);
 			skb->protocol = eth_type_trans(skb, adapter->netdev);
-			if (!rcd->tcp ||
+			if ((!rcd->tcp && !encap_lro) ||
 			    !(adapter->netdev->features & NETIF_F_LRO))
 				goto not_lro;
 
@@ -1639,7 +1657,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,
 					SKB_GSO_TCPV4 : SKB_GSO_TCPV6;
 				skb_shinfo(skb)->gso_size = mss;
 				skb_shinfo(skb)->gso_segs = segCnt;
-			} else if (segCnt != 0 || skb->len > mtu) {
+			} else if ((segCnt != 0 || skb->len > mtu) && !encap_lro) {
 				u32 hlen;
 
 				hlen = vmxnet3_get_hdr_len(adapter, skb,
@@ -1668,6 +1686,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,
 				napi_gro_receive(&rq->napi, skb);
 
 			ctx->skb = NULL;
+			encap_lro = false;
 			num_pkts++;
 		}
 
drivers/net/wwan/iosm/iosm_ipc_mux.c +1 -0
index 9c7a9a2a1f25..fc928b298a98 100644
@@ -332,6 +332,7 @@ struct iosm_mux *ipc_mux_init(struct ipc_mux_config *mux_cfg,
 			if (!ipc_mux->ul_adb.pp_qlt[i]) {
 				for (j = i - 1; j >= 0; j--)
 					kfree(ipc_mux->ul_adb.pp_qlt[j]);
+				kfree(ipc_mux);
 				return NULL;
 			}
 		}
drivers/net/xen-netback/common.h +1 -1
index 8174d7b2966c..adfd21aa5b6a 100644
@@ -386,7 +386,7 @@ int xenvif_dealloc_kthread(void *data);
 irqreturn_t xenvif_ctrl_irq_fn(int irq, void *data);
 
 bool xenvif_have_rx_work(struct xenvif_queue *queue, bool test_kthread);
-void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb);
+bool xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb);
 
 void xenvif_carrier_on(struct xenvif *vif);
 
drivers/net/xen-netback/interface.c +4 -2
index fb32ae82d9b0..d048a5cc918b 100644
@@ -254,14 +254,16 @@ xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	if (vif->hash.alg == XEN_NETIF_CTRL_HASH_ALGORITHM_NONE)
 		skb_clear_hash(skb);
 
-	xenvif_rx_queue_tail(queue, skb);
+	if (!xenvif_rx_queue_tail(queue, skb))
+		goto drop;
+
 	xenvif_kick_thread(queue);
 
 	return NETDEV_TX_OK;
 
  drop:
 	vif->dev->stats.tx_dropped++;
-	dev_kfree_skb(skb);
+	dev_kfree_skb_any(skb);
 	return NETDEV_TX_OK;
 }
 
drivers/net/xen-netback/netback.c +124 -101

337 lines not on this page · raw message

drivers/net/xen-netback/rx.c +5 -3
index 932762177110..0ba754ebc5ba 100644
@@ -82,9 +82,10 @@ static bool xenvif_rx_ring_slots_available(struct xenvif_queue *queue)
 	return false;
 }
 
-void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb)
+bool xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb)
 {
 	unsigned long flags;
+	bool ret = true;
 
 	spin_lock_irqsave(&queue->rx_queue.lock, flags);
 
@@ -92,8 +93,7 @@ void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb)
 		struct net_device *dev = queue->vif->dev;
 
 		netif_tx_stop_queue(netdev_get_tx_queue(dev, queue->id));
-		kfree_skb(skb);
-		queue->vif->dev->stats.rx_dropped++;
+		ret = false;
 	} else {
 		if (skb_queue_empty(&queue->rx_queue))
 			xenvif_update_needed_slots(queue, skb);
@@ -104,6 +104,8 @@ void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb)
 	}
 
 	spin_unlock_irqrestore(&queue->rx_queue.lock, flags);
+
+	return ret;
 }
 
 static struct sk_buff *xenvif_rx_dequeue(struct xenvif_queue *queue)
drivers/net/xen-netfront.c +6 -0
index 27a11cc08c61..479e215159fc 100644
@@ -1862,6 +1862,12 @@ static int netfront_resume(struct xenbus_device *dev)
 	netif_tx_unlock_bh(info->netdev);
 
 	xennet_disconnect_backend(info);
+
+	rtnl_lock();
+	if (info->queues)
+		xennet_destroy_queues(info);
+	rtnl_unlock();
+
 	return 0;
 }
 
drivers/nvme/host/core.c +4 -4
index f612a0ba64d0..aca50bb93750 100644
@@ -3089,10 +3089,6 @@ static int nvme_init_identify(struct nvme_ctrl *ctrl)
 	if (!ctrl->identified) {
 		unsigned int i;
 
-		ret = nvme_init_subsystem(ctrl, id);
-		if (ret)
-			goto out_free;
-
 		/*
 		 * Check for quirks.  Quirk can depend on firmware version,
 		 * so, in principle, the set of quirks present can change
@@ -3105,6 +3101,10 @@ static int nvme_init_identify(struct nvme_ctrl *ctrl)
 			if (quirk_matches(id, &core_quirks[i]))
 				ctrl->quirks |= core_quirks[i].quirks;
 		}
+
+		ret = nvme_init_subsystem(ctrl, id);
+		if (ret)
+			goto out_free;
 	}
 	memcpy(ctrl->subsys->firmware_rev, id->fr,
 	       sizeof(ctrl->subsys->firmware_rev));
drivers/platform/x86/asus-nb-wmi.c +20 -8
index 478dd300b9c9..d9e7cf6e4a0e 100644
@@ -115,12 +115,17 @@ static struct quirk_entry quirk_asus_forceals = {
 };
 
 static struct quirk_entry quirk_asus_use_kbd_dock_devid = {
-	.use_kbd_dock_devid = true,
+	.tablet_switch_mode = asus_wmi_kbd_dock_devid,
 };
 
 static struct quirk_entry quirk_asus_use_lid_flip_devid = {
 	.wmi_backlight_set_devstate = true,
-	.use_lid_flip_devid = true,
+	.tablet_switch_mode = asus_wmi_lid_flip_devid,
+};
+
+static struct quirk_entry quirk_asus_tablet_mode = {
+	.wmi_backlight_set_devstate = true,
+	.tablet_switch_mode = asus_wmi_lid_flip_rog_devid,
 };
 
 static int dmi_matched(const struct dmi_system_id *dmi)
@@ -471,6 +476,15 @@ static const struct dmi_system_id asus_quirks[] = {
 		},
 		.driver_data = &quirk_asus_use_lid_flip_devid,
 	},
+	{
+		.callback = dmi_matched,
+		.ident = "ASUS ROG FLOW X13",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "GV301Q"),
+		},
+		.driver_data = &quirk_asus_tablet_mode,
+	},
 	{},
 };
 
@@ -492,16 +506,13 @@ static void asus_nb_wmi_quirks(struct asus_wmi_driver *driver)
 
 	switch (tablet_mode_sw) {
 	case 0:
-		quirks->use_kbd_dock_devid = false;
-		quirks->use_lid_flip_devid = false;
+		quirks->tablet_switch_mode = asus_wmi_no_tablet_switch;
 		break;
 	case 1:
-		quirks->use_kbd_dock_devid = true;
-		quirks->use_lid_flip_devid = false;
+		quirks->tablet_switch_mode = asus_wmi_kbd_dock_devid;
 		break;
 	case 2:
-		quirks->use_kbd_dock_devid = false;
-		quirks->use_lid_flip_devid = true;
+		quirks->tablet_switch_mode = asus_wmi_lid_flip_devid;
 		break;
 	}
 
@@ -581,6 +592,7 @@ static const struct key_entry asus_nb_wmi_keymap[] = {
 	{ KE_KEY, 0xC5, { KEY_KBDILLUMDOWN } },
 	{ KE_IGNORE, 0xC6, },  /* Ambient Light Sensor notification */
 	{ KE_KEY, 0xFA, { KEY_PROG2 } },           /* Lid flip action */
+	{ KE_KEY, 0xBD, { KEY_PROG2 } },           /* Lid flip action on ROG xflow laptops */
 	{ KE_END, 0},
 };
 
drivers/platform/x86/asus-wmi.c +72 -14

1 line not on this page · raw message

drivers/platform/x86/asus-wmi.h +8 -2
index b302415bf1d9..0187f13d2414 100644

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

drivers/regulator/slg51000-regulator.c +2 -0
index 75a941fb3c2b..1b2eee95ad3f 100644

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

drivers/regulator/twl6030-regulator.c +11 -4
index 7c7e3648ea4b..f3856750944f 100644

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

drivers/s390/net/qeth_l2_main.c +1 -1
index 2d4436cbcb47..b38024a79376 100644

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

drivers/soundwire/dmi-quirks.c +27 -0
index 747983743a14..f81cdd83ec26 100644

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

drivers/soundwire/intel.c +1 -0
index af6c1a93372d..002bc26b525e 100644

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

drivers/spi/spi-mt65xx.c +7 -1
index cd9dc358d396..a7cc96aeb590 100644

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

drivers/usb/dwc3/gadget.c +2 -1
index 6f61a288073b..c2075b90f3df 100644

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

drivers/video/fbdev/core/fbcon.c +1 -1
index 098b62f7b701..c0143d38df83 100644

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

fs/btrfs/send.c +23 -1
index e7671afcee4f..8cc038460bed 100644

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

fs/file.c +10 -1
index 3bcc1ecc314a..57af5f8375fd 100644

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

fs/fscache/cookie.c +8 -0
index 451d8a077e12..bce2492186d0 100644

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

include/asm-generic/tlb.h +4 -0
index 492dce43236e..cab7cfebf40b 100644

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

include/linux/cgroup.h +1 -0
index ac5d0515680e..a3535a485497 100644

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

include/linux/mm.h +21 -8
index 21f8b27bd9fd..4ff52127a6b8 100644

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

include/linux/platform_data/x86/asus-wmi.h +1 -0
index 98f2b2f20f3e..7c96db7f3060 100644

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

include/net/bluetooth/hci.h +11 -1
index cf29511b25a8..4518c63e9d17 100644

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

include/net/ping.h +0 -3
index e4ff3911cbf5..9233ad3de0ad 100644

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

include/trace/events/fscache.h +2 -0
index c078c48a8e6d..a6190aa1b406 100644

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

io_uring/io_uring.c +3 -1
index adf73d162521..1b6c25dc3f0c 100644

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

kernel/cgroup/cgroup-internal.h +0 -1
index 36b740cb3d59..b231081be177 100644

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

mm/gup.c +1 -1
index 251cb6a10bc0..d7f9116fc645 100644

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

mm/hugetlb.c +14 -11
index dbb558e71e9e..022a3bfafec4 100644

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

mm/khugepaged.c +59 -4

63 lines not on this page · raw message

mm/madvise.c +3 -3
index 98ed17a4471a..b2831b57aef8 100644

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

mm/memcontrol.c +13 -2
index 6a95ea7c5ee7..f2fc11ba2426 100644

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

mm/memory.c +12 -13
index de0dbe09b013..a0fdaa74091f 100644

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

mm/mmu_gather.c +1 -3
index a71924bd38c0..ba7d26a291dd 100644

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

mm/shmem.c +11 -0
index 42e5888bf84d..112ebf601bb4 100644

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

net/9p/trans_fd.c +3 -3
index 3e056fb043bb..080b5de3e1ed 100644

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

net/9p/trans_xen.c +9 -0
index 227f89cc7237..0f862d5a5960 100644

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

net/bluetooth/6lowpan.c +1 -0
index 215af9b3b589..c57d643afb10 100644

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

net/bluetooth/af_bluetooth.c +3 -1
index dc65974f5adb..1c3c7ff5c3c6 100644

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

net/bluetooth/hci_codec.c +10 -9
index 38201532f58e..3cc135bb1d30 100644

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

net/bluetooth/hci_core.c +6 -2
index 6ae5aa5c0927..c8ea03edd081 100644

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

net/bluetooth/hci_sync.c +13 -6
index f70798589bf5..a5e89e1b5452 100644

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

net/bluetooth/iso.c +1 -0
index f825857db6d0..26db929b97c4 100644

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

net/can/af_can.c +2 -2
index e48ccf7cf200..461fa7c04464 100644

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

net/dsa/tag_hellcreek.c +2 -1
index 846588c0070a..53a206d11685 100644

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

net/dsa/tag_ksz.c +2 -1
index 38fa19c1e2d5..429250298ac4 100644

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

net/dsa/tag_sja1105.c +2 -1
index 83e4136516b0..1a85125bda6d 100644

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

net/ipv4/fib_frontend.c +3 -0
index 943edf4ad4db..3528e8befa58 100644

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

net/ipv4/fib_semantics.c +1 -0
index cb24260692e1..7885b2f15315 100644

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

net/ipv4/ip_gre.c +29 -19

48 lines not on this page · raw message

net/ipv4/ping.c +6 -1
index b83c2bd9d722..3b2420829c23 100644

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

net/ipv6/ip6_output.c +5 -0
index f152e51242cb..4fb5dd35af18 100644

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

net/mac802154/iface.c +1 -0
index 500ed1b81250..7e2065e72915 100644

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

net/netfilter/nf_conntrack_core.c +3 -3
index 60289c074eef..df46e9a35e47 100644

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

net/netfilter/nf_conntrack_netlink.c +10 -9
index d71150a40fb0..1286ae7d4609 100644

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

net/netfilter/nf_flow_table_offload.c +3 -3
index 00b522890d77..0fdcdb2c9ae4 100644

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

net/netfilter/nft_set_pipapo.c +3 -2
index 4f9299b9dcdd..06d46d182634 100644

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

net/nfc/nci/ntf.c +6 -0
index 282c51051dcc..994a0a1efb58 100644

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

net/tipc/link.c +3 -1
index e260c0d557f5..b3ce24823f50 100644

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

net/tipc/node.c +9 -3
index b48d97cbbe29..49ddc484c4fe 100644

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

net/unix/diag.c +12 -8
index 105f522a89fe..616b55c5b890 100644

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

sound/core/seq/seq_memory.c +7 -4
index b7aee23fc387..47ef6bc30c0e 100644

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

sound/pci/hda/patch_realtek.c +37 -25

62 lines not on this page · raw message

sound/soc/codecs/rt711-sdca-sdw.c +1 -1
index a085b2f530aa..31e77d462ef3 100644

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

sound/soc/codecs/wm8962.c +8 -0
index 6df06fba4377..ee1cad5af535 100644

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

sound/soc/soc-pcm.c +2 -0
index f6a996f0f9c7..f000a7168afc 100644

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

tools/testing/selftests/net/config +1 -1
index ead7963b9bf0..bd89198cd817 100644

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

tools/testing/selftests/net/fcnal-test.sh +7 -4
index 31c3b6ebd388..21ca91473c09 100755

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

tools/testing/selftests/net/fib_tests.sh +37 -0
index 2271a8727f62..5637b5dadabd 100755

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

tools/testing/selftests/net/pmtu.sh +6 -4
index 736e358dc549..dfe3d287f01d 100755

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

tools/testing/selftests/net/rtnetlink.sh +1 -1
index 0900c5438fbb..275491be3da2 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.