Skip to contentSkip to conversation

Linux 6.6.29

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Apr 27, 2024 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.6.29 kernel.

All users of the 6.6 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/admin-guide/kernel-parameters.txt                 |    3 
 MAINTAINERS                                                     |    2 
 Makefile                                                        |    2 
 arch/arm/mach-omap2/pdata-quirks.c                              |   10 
 arch/arm64/include/asm/tlbflush.h                               |   40 
 arch/arm64/kernel/head.S                                        |    5 
 arch/arm64/mm/pageattr.c                                        |    3 
 arch/powerpc/include/asm/ftrace.h                               |   10 
 arch/powerpc/include/asm/sections.h                             |    1 
 arch/powerpc/kernel/trace/ftrace.c                              |   12 
 arch/powerpc/kernel/trace/ftrace_64_pg.c                        |    5 
 arch/powerpc/kernel/vmlinux.lds.S                               |    2 
 arch/x86/include/asm/barrier.h                                  |    3 
 arch/x86/include/asm/kvm_host.h                                 |    1 
 arch/x86/kernel/cpu/bugs.c                                      |   11 
 arch/x86/kernel/cpu/cpuid-deps.c                                |    6 
 arch/x86/kvm/cpuid.c                                            |    1 
 arch/x86/kvm/cpuid.h                                            |   10 
 arch/x86/kvm/lapic.c                                            |    3 
 arch/x86/kvm/mmu/mmu.c                                          |    2 
 arch/x86/kvm/mmu/tdp_mmu.c                                      |   21 
 arch/x86/kvm/vmx/vmx.c                                          |   24 
 arch/x86/kvm/x86.c                                              |    2 
 drivers/accessibility/speakup/main.c                            |    2 
 drivers/android/binder.c                                        |    4 
 drivers/char/random.c                                           |   10 
 drivers/clk/clk.c                                               |  195 
 drivers/clk/mediatek/clk-mtk.c                                  |   15 
 drivers/comedi/drivers/vmk80xx.c                                |   35 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c                         |    4 
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c                          |   72 
 drivers/gpu/drm/amd/amdkfd/kfd_process.c                        |    4 
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_optc.c               |    3 
 drivers/gpu/drm/drm_panel_orientation_quirks.c                  |    6 
 drivers/gpu/drm/i915/display/intel_atomic.c                     |    1 
 drivers/gpu/drm/i915/display/intel_cdclk.c                      |   37 
 drivers/gpu/drm/i915/display/intel_crtc.c                       |   96 
 drivers/gpu/drm/i915/display/intel_crtc.h                       |    6 
 drivers/gpu/drm/i915/display/intel_display.c                    |   43 
 drivers/gpu/drm/i915/display/intel_display_device.h             |    1 
 drivers/gpu/drm/i915/display/intel_display_types.h              |    2 
 drivers/gpu/drm/i915/display/intel_dp.c                         |   13 
 drivers/gpu/drm/i915/display/intel_dp_mst.c                     |    2 
 drivers/gpu/drm/i915/i915_vma.c                                 |   42 
 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h          |    8 
 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h         |    8 
 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h          |    8 
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c                  |   95 
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h                  |    3 
 drivers/gpu/drm/nouveau/nouveau_bios.c                          |   13 
 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c              |    7 
 drivers/gpu/drm/panel/panel-visionox-rm69299.c                  |    2 
 drivers/gpu/drm/radeon/radeon_atombios.c                        |    8 
 drivers/gpu/drm/vmwgfx/vmwgfx_blit.c                            |   35 
 drivers/gpu/drm/vmwgfx/vmwgfx_bo.c                              |    7 
 drivers/gpu/drm/vmwgfx/vmwgfx_bo.h                              |    2 
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c                             |    1 
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h                             |    3 
 drivers/gpu/drm/vmwgfx/vmwgfx_gem.c                             |   32 
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c                             |   11 
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.h                             |    4 
 drivers/gpu/drm/vmwgfx/vmwgfx_prime.c                           |   15 
 drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c                      |   44 
 drivers/infiniband/core/cm.c                                    |   11 
 drivers/infiniband/hw/mlx5/mad.c                                |    3 
 drivers/infiniband/sw/rxe/rxe.c                                 |    2 
 drivers/interconnect/core.c                                     |    8 
 drivers/media/common/videobuf2/videobuf2-core.c                 |    9 
 drivers/misc/mei/pci-me.c                                       |    2 
 drivers/net/dsa/mt7530.c                                        |   38 
 drivers/net/dsa/mt7530.h                                        |    5 
 drivers/net/ethernet/intel/ice/ice_tc_lib.c                     |   15 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c            |    7 
 drivers/net/ethernet/mediatek/mtk_wed.c                         |    6 
 drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c               |   27 
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c               |    9 
 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c      |    4 
 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c               |    4 
 drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c        |   61 
 drivers/net/ethernet/stmicro/stmmac/common.h                    |    1 
 drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c               |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c            |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac100_core.c             |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c               |    7 
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c             |   18 
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c               |   29 
 drivers/net/ethernet/ti/am65-cpsw-nuss.c                        |   18 
 drivers/net/tun.c                                               |   18 
 drivers/net/usb/ax88179_178a.c                                  |    4 
 drivers/net/virtio_net.c                                        |   25 
 drivers/pci/bus.c                                               |   49 
 drivers/pci/pci.c                                               |   78 
 drivers/pci/pci.h                                               |    4 
 drivers/pci/pcie/aspm.c                                         |   21 
 drivers/pci/pcie/dpc.c                                          |    5 
 drivers/pci/quirks.c                                            |    8 
 drivers/platform/x86/amd/pmc/pmc-quirks.c                       |    9 
 drivers/s390/cio/device.c                                       |   13 
 drivers/s390/cio/qdio_main.c                                    |   28 
 drivers/s390/net/ism_drv.c                                      |   37 
 drivers/scsi/scsi_lib.c                                         |    7 
 drivers/thunderbolt/domain.c                                    |    5 
 drivers/thunderbolt/icm.c                                       |    2 
 drivers/thunderbolt/lc.c                                        |   45 
 drivers/thunderbolt/nhi.c                                       |   19 
 drivers/thunderbolt/path.c                                      |   13 
 drivers/thunderbolt/switch.c                                    |  178 
 drivers/thunderbolt/tb.c                                        |   38 
 drivers/thunderbolt/tb.h                                        |   10 
 drivers/thunderbolt/tb_regs.h                                   |    6 
 drivers/thunderbolt/usb4.c                                      |   52 
 drivers/tty/serial/mxs-auart.c                                  |    8 
 drivers/tty/serial/pmac_zilog.c                                 |   14 
 drivers/tty/serial/serial_base.h                                |    4 
 drivers/tty/serial/serial_core.c                                |   21 
 drivers/tty/serial/serial_port.c                                |   34 
 drivers/tty/serial/stm32-usart.c                                |   13 
 drivers/ufs/host/ufs-qcom.c                                     |    8 
 drivers/usb/class/cdc-wdm.c                                     |    6 
 drivers/usb/core/hub.c                                          |   15 
 drivers/usb/core/port.c                                         |    4 
 drivers/usb/core/quirks.c                                       |    7 
 drivers/usb/dwc2/hcd_ddma.c                                     |    4 
 drivers/usb/gadget/function/f_ncm.c                             |    4 
 drivers/usb/host/xhci-mem.c                                     |    2 
 drivers/usb/host/xhci-ring.c                                    |   11 
 drivers/usb/host/xhci.c                                         |   23 
 drivers/usb/host/xhci.h                                         |    9 
 drivers/usb/serial/option.c                                     |   40 
 fs/ceph/addr.c                                                  |   22 
 fs/ceph/cache.c                                                 |    2 
 fs/ceph/caps.c                                                  |   53 
 fs/ceph/crypto.c                                                |    2 
 fs/ceph/debugfs.c                                               |    4 
 fs/ceph/dir.c                                                   |   24 
 fs/ceph/export.c                                                |   10 
 fs/ceph/file.c                                                  |   26 
 fs/ceph/inode.c                                                 |   14 
 fs/ceph/ioctl.c                                                 |    8 
 fs/ceph/mds_client.c                                            |   41 
 fs/ceph/mds_client.h                                            |    3 
 fs/ceph/mdsmap.c                                                |    3 
 fs/ceph/snap.c                                                  |   18 
 fs/ceph/super.c                                                 |   22 
 fs/ceph/super.h                                                 |   13 
 fs/ceph/xattr.c                                                 |   12 
 fs/fuse/dir.c                                                   |    1 
 fs/nilfs2/dir.c                                                 |    2 
 fs/smb/client/cifs_debug.c                                      |    6 
 fs/smb/client/cifsglob.h                                        |    3 
 fs/smb/client/cifsproto.h                                       |   20 
 fs/smb/client/connect.c                                         |  131 
 fs/smb/client/dfs.c                                             |   51 
 fs/smb/client/dfs.h                                             |   33 
 fs/smb/client/dfs_cache.c                                       |   53 
 fs/smb/client/misc.c                                            |    7 
 fs/smb/common/smb2pdu.h                                         |    2 
 fs/smb/server/server.c                                          |   13 
 fs/smb/server/smb2pdu.c                                         |    4 
 fs/smb/server/vfs.c                                             |    5 
 fs/sysfs/file.c                                                 |    2 
 include/asm-generic/barrier.h                                   |    8 
 include/linux/bootconfig.h                                      |    7 
 include/linux/ceph/mdsmap.h                                     |    5 
 include/linux/gpio/property.h                                   |    1 
 include/linux/pci.h                                             |    5 
 include/linux/shmem_fs.h                                        |    9 
 include/linux/swapops.h                                         |   65 
 include/linux/udp.h                                             |    2 
 include/linux/usb/hcd.h                                         |    5 
 include/linux/usb/quirks.h                                      |    3 
 include/net/netfilter/nf_flow_table.h                           |   12 
 include/trace/events/rpcgss.h                                   |    4 
 include/uapi/linux/pci_regs.h                                   |    1 
 init/main.c                                                     |    2 
 io_uring/io_uring.c                                             |   26 
 kernel/sched/sched.h                                            |   20 
 lib/bootconfig.c                                                |   19 
 mm/hugetlb.c                                                    |   10 
 mm/memory-failure.c                                             |   18 
 mm/shmem.c                                                      |    6 
 net/bridge/br_input.c                                           |   15 
 net/bridge/br_netfilter_hooks.c                                 |    6 
 net/bridge/br_private.h                                         |    1 
 net/bridge/netfilter/nf_conntrack_bridge.c                      |   14 
 net/netfilter/nf_flow_table_inet.c                              |    3 
 net/netfilter/nf_flow_table_ip.c                                |   10 
 net/netfilter/nf_tables_api.c                                   |   16 
 net/netfilter/nft_set_pipapo.c                                  |   14 
 net/unix/af_unix.c                                              |   12 
 sound/core/seq/seq_ump_convert.c                                |    2 
 sound/pci/hda/patch_realtek.c                                   |    3 
 sound/pci/hda/tas2781_hda_i2c.c                                 |    4 
 sound/soc/ti/omap3pandora.c                                     |   63 
 sound/usb/Makefile                                              |    2 
 sound/usb/mixer_quirks.c                                        |    9 
 sound/usb/mixer_scarlett2.c                                     | 4391 ++++++++++
 sound/usb/mixer_scarlett2.h                                     |    7 
 sound/usb/mixer_scarlett_gen2.c                                 | 4274 ---------
 sound/usb/mixer_scarlett_gen2.h                                 |    7 
 tools/perf/util/bpf_skel/lock_contention.bpf.c                  |    5 
 tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc |    6 
 tools/testing/selftests/kselftest.h                             |   18 
 tools/testing/selftests/net/udpgso.c                            |    2 
 tools/testing/selftests/timers/posix_timers.c                   |  156 
 205 files changed, 6733 insertions(+), 5414 deletions(-)

Ai Chao (1):
ALSA: hda/realtek - Enable audio jacks of Haier Boyue G42 with ALC269VC

Alan Stern (1):
fs: sysfs: Fix reference leak in sysfs_break_active_protection()

Alex Deucher (1):
drm/radeon: make -fstrict-flex-arrays=3 happy

Alexander Usyskin (1):
mei: me: disable RPL-S on SPS and IGN firmwares

Alexey Izbyshev (1):
io_uring: Fix io_cqring_wait() not restoring sigmask on get_timespec64() failure

Andy Shevchenko (2):
gpiolib: swnode: Remove wrong header inclusion
serial: core: Clearing the circular buffer before NULLifying it

Ard Biesheuvel (1):
arm64/head: Disable MMU at EL2 before clearing HCR_EL2.E2H

Arınç ÜNAL (4):
net: dsa: mt7530: fix mirroring frames received on local port
net: dsa: mt7530: fix port mirroring for MT7988 SoC switch
net: dsa: mt7530: fix improper frames on all 25MHz and 40MHz XTAL MT7530
net: dsa: mt7530: fix enabling EEE on MT7531 switch on all boards

Asbjørn Sloth Tønnesen (2):
net: sparx5: flower: fix fragment flags handling
octeontx2-pf: fix FLOW_DIS_IS_FRAGMENT implementation

Bart Van Assche (1):
scsi: core: Fix handling of SCMD_FAIL_IF_RECOVERING

Bjorn Helgaas (1):
PCI/DPC: Use FIELD_GET()

Breno Leitao (1):
virtio_net: Do not send RSS key if it is not supported

Brenton Simpson (1):
drm: panel-orientation-quirks: Add quirk for Lenovo Legion Go

Carlos Llamas (1):
binder: check offset alignment in binder_get_object()

Carolina Jubran (1):
net/mlx5e: Prevent deadlock while disabling aRFS

Christian König (1):

      drm/amdgpu: remove invalid resource->start check v2

Chuanhong Guo (1):
USB: serial: option: add support for Fibocom FM650/FG650

Coia Prant (1):
USB: serial: option: add Lonsung U8300/U9300 product

Daniele Palmas (1):
USB: serial: option: add Telit FN920C04 rmnet compositions

Danny Lin (1):
fuse: fix leaked ENOSYS error on first statx call

Dave Airlie (1):
nouveau: fix instmem race condition around ptr stores

David Matlack (1):
KVM: x86/mmu: Write-protect L2 SPTEs in TDP MMU when clearing dirty status

Dillon Varone (1):
drm/amd/display: Do not recursively call manual trigger programming

Dmitry Baryshkov (2):
drm/msm/dpu: populate SSPP scaler block version drm/panel: visionox-rm69299: don't unregister DSI device

Emil Kronborg (1):
serial: mxs-auart: add spinlock around changing cts state

Eric Biggers (1):
x86/cpufeatures: Fix dependencies for GFNI, VAES, and VPCLMULQDQ

Felix Fietkau (1):
net: ethernet: mtk_eth_soc: fix WED + wifi reset

Felix Kuehling (1):
drm/amdkfd: Fix memory leak in create_process failure

Finn Thain (1):
serial/pmac_zilog: Remove flawed mitigation for rx irq flood

Florian Westphal (1):
netfilter: nft_set_pipapo: do not free live element

Gavin Shan (1):
arm64: tlb: Fix TLBI RANGE operand

Geoffrey D. Bennett (7):
ALSA: scarlett2: Move USB IDs out from device_info struct
ALSA: scarlett2: Add support for Clarett 8Pre USB
ALSA: scarlett2: Default mixer driver to enabled
ALSA: scarlett2: Add correct product series name to messages
ALSA: scarlett2: Add Focusrite Clarett+ 2Pre and 4Pre support
ALSA: scarlett2: Add Focusrite Clarett 2Pre and 4Pre USB support
ALSA: scarlett2: Rename scarlett_gen2 to scarlett2

Gerd Bayer (1):
s390/ism: Properly fix receive message buffer allocation

Gil Fine (2):
thunderbolt: Avoid notify PM core about runtime PM resume
thunderbolt: Fix wake configurations after device unplug

Greg Kroah-Hartman (2):
Revert "usb: cdc-wdm: close race between read and workqueue" Linux 6.6.29

Hans Verkuil (1):
media: videobuf2: request more buffers for vb2_read

Hardik Gajjar (2):
usb: xhci: Add timeout argument in address_device USB HCD callback
usb: new quirk to reduce the SET_ADDRESS request timeout

Ilpo Järvinen (1):
PCI: Simplify pcie_capability_clear_and_set_word() to ..._clear_word()

Janusz Krzysztofik (1):
drm/i915/vma: Fix UAF on destroy against retire race

Jason A. Donenfeld (1):
random: handle creditable entropy from atomic process context

Jeongjun Park (1):
nilfs2: fix OOB in nilfs_set_de_type

Jerry Meng (1):
USB: serial: option: support Quectel EM060K sub-models

Johan Hovold (1):
PCI/ASPM: Fix deadlock when enabling ASPM

John Stultz (1):
selftests: timers: Fix posix_timers ksft_print_msg() warning

Jose Ignacio Tornos Martinez (1):
net: usb: ax88179_178a: avoid writing the mac address before first reading

Josh Poimboeuf (1):
x86/bugs: Fix BHI retpoline check

Kai-Heng Feng (1):
usb: Disable USB3 LPM at shutdown

Kuniyuki Iwashima (2):
af_unix: Call manage_oob() for every skb in unix_stream_read_generic().
af_unix: Don't peek OOB data without MSG_OOB.

Lei Chen (1):
tun: limit printing rate when illegal packet received by tun dev

Linus Walleij (1):
ASoC: ti: Convert Pandora ASoC to GPIO descriptors

Manivannan Sadhasivam (1):
scsi: ufs: qcom: Add missing interconnect bandwidth values for Gear 5

Marcin Szycik (1):
ice: Fix checking for unsupported keys on non-tunnel device

Mario Limonciello (1):
platform/x86/amd/pmc: Extend Framework 13 quirk to more BIOSes

Marios Makassikis (1):
ksmbd: clear RENAME_NOREPLACE before calling vfs_rename

Mark Brown (1):
selftests: timers: Convert posix_timers test to generate KTAP output

Mark Zhang (1):
RDMA/cm: Print the old state when cm_destroy_id gets timeout

Mathieu Desnoyers (1):
sched: Add missing memory barrier in switch_mm_cid

Mauro Carvalho Chehab (1):
ALSA: hda/realtek: Add quirks for Huawei Matebook D14 NBLB-WAX9N

Miaohe Lin (1):
mm/memory-failure: fix deadlock when hugetlb_optimize_vmemmap is enabled

Michael Guralnik (1):
RDMA/mlx5: Fix port number for counter query in multi-port configuration

Michal Swiatkowski (2):
ice: tc: check src_vsi in case of traffic from VF
ice: tc: allow zero flags in parsing tc flower

Mika Westerberg (1):
thunderbolt: Reset only non-USB4 host routers in resume

Mike Tipton (1):
interconnect: Don't access req_list while it's being manipulated

Mikhail Kobuk (1):
drm: nv04: Fix out of bounds access

Minas Harutyunyan (1):
usb: dwc2: host: Fix dereference issue in DDMA completion flow.

Namhyung Kim (1):
perf lock contention: Add a missing NULL check

Namjae Jeon (3):
ksmbd: fix slab-out-of-bounds in smb2_allocate_rsp_buf
ksmbd: validate request buffer size in smb2_allocate_rsp_buf()
ksmbd: common: use struct_group_attr instead of struct_group for network_open_info

Naveen N Rao (1):
powerpc/ftrace: Ignore ftrace locations in exit text sections

NeilBrown (1):
ceph: redirty page before returning AOP_WRITEPAGE_ACTIVATE

Nikita Zhandarovich (1):

      comedi: vmk80xx: fix incomplete endpoint checking

Norihiko Hama (1):
usb: gadget: f_ncm: Fix UAF ncm object at re-bind after usb ep transport error

Oleg Nesterov (2):
selftests/timers/posix_timers: Reimplement check_timer_distribution()
selftests: kselftest: Fix build failure with NOLIBC

Oscar Salvador (1):
mm,swapops: update check in is_pfn_swap_entry for hwpoison entries

Pablo Neira Ayuso (3):
netfilter: br_netfilter: skip conntrack input hook for promisc packets
netfilter: flowtable: validate pppoe header
netfilter: flowtable: incorrect pppoe tuple

Paulo Alcantara (4):
smb: client: remove extra @chan_count check in __cifs_put_smb_ses()
smb: client: fix UAF in smb2_reconnect_server()
smb: client: guarantee refcounted children from parent session
smb: client: refresh referral without acquiring refpath_lock

Peter Oberparleiter (2):
s390/qdio: handle deferred cc1
s390/cio: fix race condition during online processing

Peter Xu (1):
mm/userfaultfd: allow hugetlb change protection upon poison entry

Pin-yen Lin (1):
clk: mediatek: Do a runtime PM get on controllers during probe

Qiang Zhang (1):
bootconfig: use memblock_free_late to free xbc memory to buddy

Ryan Roberts (1):
arm64/mm: Modify range-based tlbi to decrement scale

Samuel Thibault (1):
speakup: Avoid crash on very long word

Sanath S (4):
thunderbolt: Introduce tb_port_reset()
thunderbolt: Introduce tb_path_deactivate_hop()
thunderbolt: Make tb_switch_reset() support Thunderbolt 2, 3 and USB4 routers
thunderbolt: Reset topology created by the boot firmware

Sandipan Das (1):
KVM: x86/pmu: Do not mask LVTPC when handling a PMI on AMD platforms

Sean Christopherson (2):
KVM: x86: Snapshot if a vCPU's vendor model is AMD vs. Intel compatible
KVM: x86/pmu: Disable support for adaptive PEBS

Serge Semin (3):
net: stmmac: Apply half-duplex-less constraint for DW QoS Eth only
net: stmmac: Fix max-speed being ignored on queue re-init
net: stmmac: Fix IP-cores specific MAC capabilities

Shay Drory (2):
net/mlx5: Lag, restore buckets number to default after hash LAG deactivation net/mlx5: E-switch, store eswitch pointer before registering devlink_param

Shenghao Ding (2):
ALSA: hda/tas2781: correct the register for pow calibrated data
ALSA: hda/tas2781: Add new vendor_id and subsystem_id to support ThinkPad ICE-1

Siddharth Vadapalli (1):
net: ethernet: ti: am65-cpsw-nuss: cleanup DMA Channels before using them

Stephen Boyd (4):
clk: Remove prepare_lock hold assertion in __clk_release()
clk: Initialize struct clk_core kref earlier
clk: Get runtime PM before walking tree during disable_unused
clk: Get runtime PM before walking tree for clk_summary

Steve French (1):
smb3: show beginning time for per share stats

Steven Rostedt (Google) (1):
SUNRPC: Fix rpcgss_context trace event acceptor field

Sumanth Korikkar (1):
mm/shmem: inline shmem_is_huge() for disabled transparent hugepages

Takashi Iwai (1):
ALSA: seq: ump: Fix conversion from MIDI2 to MIDI1 UMP messages

Tony Lindgren (1):
serial: core: Fix missing shutdown and startup for serial base port

Uwe Kleine-König (2):
serial: stm32: Return IRQ_NONE in the ISR if no handling happend
serial: stm32: Reset .throttled state in .startup()

Vanillan Wang (1):
USB: serial: option: add Rolling RW101-GL and RW135-GL support

Ville Syrjälä (9):
drm/i915: Fix FEC pipe A vs. DDI A mixup
drm/i915/mst: Reject FEC+MST on ICL
drm/i915/cdclk: Fix voltage_level programming edge case drm/i915: Change intel_pipe_update_{start,end}() calling convention drm/i915: Extract intel_crtc_vblank_evade_scanlines() drm/i915: Enable VRR later during fastsets
drm/i915: Adjust seamless_m_n flag behaviour
drm/i915: Disable live M/N updates when using bigjoiner drm/i915/mst: Limit MST+DSC to TGL+

Vishal Badole (1):
clk: Show active consumers of clocks in debugfs

Xiubo Li (2):
ceph: pass the mdsc to several helpers
ceph: rename _to_client() to _to_fs_client()

Yanjun.Zhu (1):
RDMA/rxe: Fix the problem "mutex_destroy missing"

Yaxiong Tian (1):
arm64: hibernate: Fix level3 translation fault in swsusp_save()

Yuanhe Shu (1):
selftests/ftrace: Limit length in subsystem-enable tests

Yuntao Wang (1):
init/main.c: Fix potential static_command_line memory overflow

Yuri Benditovich (1):
net: change maximum number of UDP segments to 128

Zack Rusin (3):
drm/vmwgfx: Fix prime import/export
drm/vmwgfx: Sort primary plane formats by order of preference drm/vmwgfx: Fix crtc's atomic check conditional

Ziyang Xuan (2):
netfilter: nf_tables: Fix potential data-race in __nft_expr_type_get()
netfilter: nf_tables: Fix potential data-race in __nft_obj_type_get()

bolan wang (1):
USB: serial: option: add Fibocom FM135-GL variants

xinhui pan (1):
drm/amdgpu: validate the parameters of bo mapping operations more clearly

author maintainer
#1 lore raw
Documentation/admin-guide/kernel-parameters.txt +3 -0
index 4cd15aee16c2..66dfc348043d 100644
@@ -6853,6 +6853,9 @@
 					pause after every control message);
 				o = USB_QUIRK_HUB_SLOW_RESET (Hub needs extra
 					delay after resetting its port);
+				p = USB_QUIRK_SHORT_SET_ADDRESS_REQ_TIMEOUT
+					(Reduce timeout of the SET_ADDRESS
+					request from 5000 ms to 500 ms);
 			Example: quirks=0781:5580:bk,0a5c:5834:gij
 
 	usbhid.mousepoll=
MAINTAINERS +1 -1
index 40312bb550f0..72a2880afab7 100644
@@ -8142,7 +8142,7 @@ M:	Geoffrey D. Bennett <[email protected]>
 L:	[email protected] (moderated for non-subscribers)
 S:	Maintained
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
-F:	sound/usb/mixer_scarlett_gen2.c
+F:	sound/usb/mixer_scarlett2.c
 
 FORCEDETH GIGABIT ETHERNET DRIVER
 M:	Rain River <[email protected]>
Makefile +1 -1
index a3839877aafd..bb103505791e 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 6
-SUBLEVEL = 28
+SUBLEVEL = 29
 EXTRAVERSION =
 NAME = Hurr durr I'ma ninja sloth
 
arch/arm/mach-omap2/pdata-quirks.c +10 -0
index c1c0121f478d..b947bacf23a3 100644
@@ -275,9 +275,19 @@ static struct platform_device pandora_backlight = {
 	.id	= -1,
 };
 
+static struct gpiod_lookup_table pandora_soc_audio_gpios = {
+	.dev_id = "soc-audio",
+	.table = {
+		GPIO_LOOKUP("gpio-112-127", 6, "dac", GPIO_ACTIVE_HIGH),
+		GPIO_LOOKUP("gpio-0-15", 14, "amp", GPIO_ACTIVE_HIGH),
+		{ }
+	},
+};
+
 static void __init omap3_pandora_legacy_init(void)
 {
 	platform_device_register(&pandora_backlight);
+	gpiod_add_lookup_table(&pandora_soc_audio_gpios);
 }
 #endif /* CONFIG_ARCH_OMAP3 */
 
arch/arm64/include/asm/tlbflush.h +21 -19
index b149cf9f91bc..b73baaf8ae47 100644
@@ -152,12 +152,18 @@ static inline unsigned long get_trans_granule(void)
 #define MAX_TLBI_RANGE_PAGES		__TLBI_RANGE_PAGES(31, 3)
 
 /*
- * Generate 'num' values from -1 to 30 with -1 rejected by the
- * __flush_tlb_range() loop below.
+ * Generate 'num' values from -1 to 31 with -1 rejected by the
+ * __flush_tlb_range() loop below. Its return value is only
+ * significant for a maximum of MAX_TLBI_RANGE_PAGES pages. If
+ * 'pages' is more than that, you must iterate over the overall
+ * range.
  */
-#define TLBI_RANGE_MASK			GENMASK_ULL(4, 0)
-#define __TLBI_RANGE_NUM(pages, scale)	\
-	((((pages) >> (5 * (scale) + 1)) & TLBI_RANGE_MASK) - 1)
+#define __TLBI_RANGE_NUM(pages, scale)					\
+	({								\
+		int __pages = min((pages),				\
+				  __TLBI_RANGE_PAGES(31, (scale)));	\
+		(__pages >> (5 * (scale) + 1)) - 1;			\
+	})
 
 /*
  *	TLB Invalidation
@@ -351,29 +357,25 @@ static inline void arch_tlbbatch_flush(struct arch_tlbflush_unmap_batch *batch)
  * entries one by one at the granularity of 'stride'. If the TLB
  * range ops are supported, then:
  *
- * 1. If 'pages' is odd, flush the first page through non-range
- *    operations;
- *
- * 2. For remaining pages: the minimum range granularity is decided
- *    by 'scale', so multiple range TLBI operations may be required.
- *    Start from scale = 0, flush the corresponding number of pages
- *    ((num+1)*2^(5*scale+1) starting from 'addr'), then increase it
- *    until no pages left.
+ * 1. The minimum range granularity is decided by 'scale', so multiple range
+ *    TLBI operations may be required. Start from scale = 3, flush the largest
+ *    possible number of pages ((num+1)*2^(5*scale+1)) that fit into the
+ *    requested range, then decrement scale and continue until one or zero pages
+ *    are left.
  *
- * Note that certain ranges can be represented by either num = 31 and
- * scale or num = 0 and scale + 1. The loop below favours the latter
- * since num is limited to 30 by the __TLBI_RANGE_NUM() macro.
+ * 2. If there is 1 page remaining, flush it through non-range operations. Range
+ *    operations can only span an even number of pages.
  */
 #define __flush_tlb_range_op(op, start, pages, stride,			\
 				asid, tlb_level, tlbi_user)		\
 do {									\
 	int num = 0;							\
-	int scale = 0;							\
+	int scale = 3;							\
 	unsigned long addr;						\
 									\
 	while (pages > 0) {						\
 		if (!system_supports_tlb_range() ||			\
-		    pages % 2 == 1) {					\
+		    pages == 1) {					\
 			addr = __TLBI_VADDR(start, asid);		\
 			__tlbi_level(op, addr, tlb_level);		\
 			if (tlbi_user)					\
@@ -393,7 +395,7 @@ do {									\
 			start += __TLBI_RANGE_PAGES(num, scale) << PAGE_SHIFT; \
 			pages -= __TLBI_RANGE_PAGES(num, scale);	\
 		}							\
-		scale++;						\
+		scale--;						\
 	}								\
 } while (0)
 
arch/arm64/kernel/head.S +5 -0
index 7b236994f0e1..6517bf2644a0 100644
@@ -569,6 +569,11 @@ SYM_INNER_LABEL(init_el2, SYM_L_LOCAL)
 	adr_l	x1, __hyp_text_end
 	adr_l	x2, dcache_clean_poc
 	blr	x2
+
+	mov_q	x0, INIT_SCTLR_EL2_MMU_OFF
+	pre_disable_mmu_workaround
+	msr	sctlr_el2, x0
+	isb
 0:
 	mov_q	x0, HCR_HOST_NVHE_FLAGS
 	msr	hcr_el2, x0
arch/arm64/mm/pageattr.c +0 -3
index 924843f1f661..0a62f458c5cb 100644
@@ -219,9 +219,6 @@ bool kernel_page_present(struct page *page)
 	pte_t *ptep;
 	unsigned long addr = (unsigned long)page_address(page);
 
-	if (!can_set_direct_map())
-		return true;
-
 	pgdp = pgd_offset_k(addr);
 	if (pgd_none(READ_ONCE(*pgdp)))
 		return false;
arch/powerpc/include/asm/ftrace.h +2 -8
index 9e5a39b6a311..107fc5a48456 100644
@@ -20,14 +20,6 @@
 #ifndef __ASSEMBLY__
 extern void _mcount(void);
 
-static inline unsigned long ftrace_call_adjust(unsigned long addr)
-{
-	if (IS_ENABLED(CONFIG_ARCH_USING_PATCHABLE_FUNCTION_ENTRY))
-		addr += MCOUNT_INSN_SIZE;
-
-       return addr;
-}
-
 unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip,
 				    unsigned long sp);
 
@@ -142,8 +134,10 @@ static inline u8 this_cpu_get_ftrace_enabled(void) { return 1; }
 #ifdef CONFIG_FUNCTION_TRACER
 extern unsigned int ftrace_tramp_text[], ftrace_tramp_init[];
 void ftrace_free_init_tramp(void);
+unsigned long ftrace_call_adjust(unsigned long addr);
 #else
 static inline void ftrace_free_init_tramp(void) { }
+static inline unsigned long ftrace_call_adjust(unsigned long addr) { return addr; }
 #endif
 #endif /* !__ASSEMBLY__ */
 
arch/powerpc/include/asm/sections.h +1 -0
index ea26665f82cf..f43f3a6b0051 100644
@@ -14,6 +14,7 @@ typedef struct func_desc func_desc_t;
 
 extern char __head_end[];
 extern char __srwx_boundary[];
+extern char __exittext_begin[], __exittext_end[];
 
 /* Patch sites */
 extern s32 patch__call_flush_branch_caches1;
arch/powerpc/kernel/trace/ftrace.c +12 -0
index 82010629cf88..d8d6b4fd9a14 100644
@@ -27,10 +27,22 @@
 #include <asm/ftrace.h>
 #include <asm/syscall.h>
 #include <asm/inst.h>
+#include <asm/sections.h>
 
 #define	NUM_FTRACE_TRAMPS	2
 static unsigned long ftrace_tramps[NUM_FTRACE_TRAMPS];
 
+unsigned long ftrace_call_adjust(unsigned long addr)
+{
+	if (addr >= (unsigned long)__exittext_begin && addr < (unsigned long)__exittext_end)
+		return 0;
+
+	if (IS_ENABLED(CONFIG_ARCH_USING_PATCHABLE_FUNCTION_ENTRY))
+		addr += MCOUNT_INSN_SIZE;
+
+	return addr;
+}
+
 static ppc_inst_t ftrace_create_branch_inst(unsigned long ip, unsigned long addr, int link)
 {
 	ppc_inst_t op;
arch/powerpc/kernel/trace/ftrace_64_pg.c +5 -0
index 7b85c3b460a3..12fab1803bcf 100644
@@ -37,6 +37,11 @@
 #define	NUM_FTRACE_TRAMPS	8
 static unsigned long ftrace_tramps[NUM_FTRACE_TRAMPS];
 
+unsigned long ftrace_call_adjust(unsigned long addr)
+{
+	return addr;
+}
+
 static ppc_inst_t
 ftrace_call_replace(unsigned long ip, unsigned long addr, int link)
 {
arch/powerpc/kernel/vmlinux.lds.S +2 -0
index 1c5970df3233..f420df7888a7 100644
@@ -281,7 +281,9 @@ SECTIONS
 	 * to deal with references from __bug_table
 	 */
 	.exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) {
+		__exittext_begin = .;
 		EXIT_TEXT
+		__exittext_end = .;
 	}
 
 	. = ALIGN(PAGE_SIZE);
arch/x86/include/asm/barrier.h +3 -0
index 0216f63a366b..d0795b5fab46 100644
@@ -79,6 +79,9 @@ do {									\
 #define __smp_mb__before_atomic()	do { } while (0)
 #define __smp_mb__after_atomic()	do { } while (0)
 
+/* Writing to CR3 provides a full memory barrier in switch_mm(). */
+#define smp_mb__after_switch_mm()	do { } while (0)
+
 #include <asm-generic/barrier.h>
 
 #endif /* _ASM_X86_BARRIER_H */
arch/x86/include/asm/kvm_host.h +1 -0
index fb9f5fa96cc9..ccba66da7a5d 100644
@@ -828,6 +828,7 @@ struct kvm_vcpu_arch {
 	int cpuid_nent;
 	struct kvm_cpuid_entry2 *cpuid_entries;
 	struct kvm_hypervisor_cpuid kvm_cpuid;
+	bool is_amd_compatible;
 
 	/*
 	 * FIXME: Drop this macro and use KVM_NR_GOVERNED_FEATURES directly
arch/x86/kernel/cpu/bugs.c +7 -4
index 5ff69b1d39b2..c2dc9b7426ac 100644
@@ -1651,7 +1651,8 @@ static void __init bhi_select_mitigation(void)
 		return;
 
 	/* Retpoline mitigates against BHI unless the CPU has RRSBA behavior */
-	if (cpu_feature_enabled(X86_FEATURE_RETPOLINE)) {
+	if (boot_cpu_has(X86_FEATURE_RETPOLINE) &&
+	    !boot_cpu_has(X86_FEATURE_RETPOLINE_LFENCE)) {
 		spec_ctrl_disable_kernel_rrsba();
 		if (rrsba_disabled)
 			return;
@@ -2803,11 +2804,13 @@ static const char *spectre_bhi_state(void)
 {
 	if (!boot_cpu_has_bug(X86_BUG_BHI))
 		return "; BHI: Not affected";
-	else if  (boot_cpu_has(X86_FEATURE_CLEAR_BHB_HW))
+	else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_HW))
 		return "; BHI: BHI_DIS_S";
-	else if  (boot_cpu_has(X86_FEATURE_CLEAR_BHB_LOOP))
+	else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_LOOP))
 		return "; BHI: SW loop, KVM: SW loop";
-	else if (boot_cpu_has(X86_FEATURE_RETPOLINE) && rrsba_disabled)
+	else if (boot_cpu_has(X86_FEATURE_RETPOLINE) &&
+		 !boot_cpu_has(X86_FEATURE_RETPOLINE_LFENCE) &&
+		 rrsba_disabled)
 		return "; BHI: Retpoline";
 	else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_LOOP_ON_VMEXIT))
 		return "; BHI: Vulnerable, KVM: SW loop";
arch/x86/kernel/cpu/cpuid-deps.c +3 -3
index e462c1d3800a..6fb6d8a57cec 100644
@@ -44,7 +44,10 @@ static const struct cpuid_dep cpuid_deps[] = {
 	{ X86_FEATURE_F16C,			X86_FEATURE_XMM2,     },
 	{ X86_FEATURE_AES,			X86_FEATURE_XMM2      },
 	{ X86_FEATURE_SHA_NI,			X86_FEATURE_XMM2      },
+	{ X86_FEATURE_GFNI,			X86_FEATURE_XMM2      },
 	{ X86_FEATURE_FMA,			X86_FEATURE_AVX       },
+	{ X86_FEATURE_VAES,			X86_FEATURE_AVX       },
+	{ X86_FEATURE_VPCLMULQDQ,		X86_FEATURE_AVX       },
 	{ X86_FEATURE_AVX2,			X86_FEATURE_AVX,      },
 	{ X86_FEATURE_AVX512F,			X86_FEATURE_AVX,      },
 	{ X86_FEATURE_AVX512IFMA,		X86_FEATURE_AVX512F   },
@@ -56,9 +59,6 @@ static const struct cpuid_dep cpuid_deps[] = {
 	{ X86_FEATURE_AVX512VL,			X86_FEATURE_AVX512F   },
 	{ X86_FEATURE_AVX512VBMI,		X86_FEATURE_AVX512F   },
 	{ X86_FEATURE_AVX512_VBMI2,		X86_FEATURE_AVX512VL  },
-	{ X86_FEATURE_GFNI,			X86_FEATURE_AVX512VL  },
-	{ X86_FEATURE_VAES,			X86_FEATURE_AVX512VL  },
-	{ X86_FEATURE_VPCLMULQDQ,		X86_FEATURE_AVX512VL  },
 	{ X86_FEATURE_AVX512_VNNI,		X86_FEATURE_AVX512VL  },
 	{ X86_FEATURE_AVX512_BITALG,		X86_FEATURE_AVX512VL  },
 	{ X86_FEATURE_AVX512_4VNNIW,		X86_FEATURE_AVX512F   },
arch/x86/kvm/cpuid.c +1 -0
index d65f91d0a8bc..77458137cab1 100644
@@ -362,6 +362,7 @@ static void kvm_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu)
 
 	kvm_update_pv_runtime(vcpu);
 
+	vcpu->arch.is_amd_compatible = guest_cpuid_is_amd_or_hygon(vcpu);
 	vcpu->arch.maxphyaddr = cpuid_query_maxphyaddr(vcpu);
 	vcpu->arch.reserved_gpa_bits = kvm_vcpu_reserved_gpa_bits_raw(vcpu);
 
arch/x86/kvm/cpuid.h +10 -0
index 284fa4704553..57ee789ada14 100644
@@ -125,6 +125,16 @@ static inline bool guest_cpuid_is_intel(struct kvm_vcpu *vcpu)
 	return best && is_guest_vendor_intel(best->ebx, best->ecx, best->edx);
 }
 
+static inline bool guest_cpuid_is_amd_compatible(struct kvm_vcpu *vcpu)
+{
+	return vcpu->arch.is_amd_compatible;
+}
+
+static inline bool guest_cpuid_is_intel_compatible(struct kvm_vcpu *vcpu)
+{
+	return !guest_cpuid_is_amd_compatible(vcpu);
+}
+
 static inline int guest_cpuid_family(struct kvm_vcpu *vcpu)
 {
 	struct kvm_cpuid_entry2 *best;
arch/x86/kvm/lapic.c +2 -1
index 23fab75993a5..66a2c4c0ae10 100644
@@ -2772,7 +2772,8 @@ int kvm_apic_local_deliver(struct kvm_lapic *apic, int lvt_type)
 		trig_mode = reg & APIC_LVT_LEVEL_TRIGGER;
 
 		r = __apic_accept_irq(apic, mode, vector, 1, trig_mode, NULL);
-		if (r && lvt_type == APIC_LVTPC)
+		if (r && lvt_type == APIC_LVTPC &&
+		    guest_cpuid_is_intel_compatible(apic->vcpu))
 			kvm_lapic_set_reg(apic, APIC_LVTPC, reg | APIC_LVT_MASKED);
 		return r;
 	}
arch/x86/kvm/mmu/mmu.c +1 -1
index 11c484d72eab..294775b7383b 100644
@@ -4788,7 +4788,7 @@ static void reset_guest_rsvds_bits_mask(struct kvm_vcpu *vcpu,
 				context->cpu_role.base.level, is_efer_nx(context),
 				guest_can_use(vcpu, X86_FEATURE_GBPAGES),
 				is_cr4_pse(context),
-				guest_cpuid_is_amd_or_hygon(vcpu));
+				guest_cpuid_is_amd_compatible(vcpu));
 }
 
 static void __reset_rsvds_bits_mask_ept(struct rsvd_bits_validate *rsvd_check,
arch/x86/kvm/mmu/tdp_mmu.c +16 -5
index 6cd4dd631a2f..8eef3ed5fe04 100644
@@ -1506,6 +1506,16 @@ void kvm_tdp_mmu_try_split_huge_pages(struct kvm *kvm,
 	}
 }
 
+static bool tdp_mmu_need_write_protect(struct kvm_mmu_page *sp)
+{
+	/*
+	 * All TDP MMU shadow pages share the same role as their root, aside
+	 * from level, so it is valid to key off any shadow page to determine if
+	 * write protection is needed for an entire tree.
+	 */
+	return kvm_mmu_page_ad_need_write_protect(sp) || !kvm_ad_enabled();
+}
+
 /*
  * Clear the dirty status of all the SPTEs mapping GFNs in the memslot. If
  * AD bits are enabled, this will involve clearing the dirty bit on each SPTE.
@@ -1516,7 +1526,8 @@ void kvm_tdp_mmu_try_split_huge_pages(struct kvm *kvm,
 static bool clear_dirty_gfn_range(struct kvm *kvm, struct kvm_mmu_page *root,
 			   gfn_t start, gfn_t end)
 {
-	u64 dbit = kvm_ad_enabled() ? shadow_dirty_mask : PT_WRITABLE_MASK;
+	const u64 dbit = tdp_mmu_need_write_protect(root) ? PT_WRITABLE_MASK :
+							    shadow_dirty_mask;
 	struct tdp_iter iter;
 	bool spte_set = false;
 
@@ -1530,7 +1541,7 @@ static bool clear_dirty_gfn_range(struct kvm *kvm, struct kvm_mmu_page *root,
 		if (!is_shadow_present_pte(iter.old_spte))
 			continue;
 
-		KVM_MMU_WARN_ON(kvm_ad_enabled() &&
+		KVM_MMU_WARN_ON(dbit == shadow_dirty_mask &&
 				spte_ad_need_write_protect(iter.old_spte));
 
 		if (!(iter.old_spte & dbit))
@@ -1578,8 +1589,8 @@ bool kvm_tdp_mmu_clear_dirty_slot(struct kvm *kvm,
 static void clear_dirty_pt_masked(struct kvm *kvm, struct kvm_mmu_page *root,
 				  gfn_t gfn, unsigned long mask, bool wrprot)
 {
-	u64 dbit = (wrprot || !kvm_ad_enabled()) ? PT_WRITABLE_MASK :
-						   shadow_dirty_mask;
+	const u64 dbit = (wrprot || tdp_mmu_need_write_protect(root)) ? PT_WRITABLE_MASK :
+									shadow_dirty_mask;
 	struct tdp_iter iter;
 
 	lockdep_assert_held_write(&kvm->mmu_lock);
@@ -1591,7 +1602,7 @@ static void clear_dirty_pt_masked(struct kvm *kvm, struct kvm_mmu_page *root,
 		if (!mask)
 			break;
 
-		KVM_MMU_WARN_ON(kvm_ad_enabled() &&
+		KVM_MMU_WARN_ON(dbit == shadow_dirty_mask &&
 				spte_ad_need_write_protect(iter.old_spte));
 
 		if (iter.level > PG_LEVEL_4K ||
arch/x86/kvm/vmx/vmx.c +22 -2
index b2ed051611b0..dae499e2da84 100644
@@ -7858,8 +7858,28 @@ static u64 vmx_get_perf_capabilities(void)
 
 	if (vmx_pebs_supported()) {
 		perf_cap |= host_perf_cap & PERF_CAP_PEBS_MASK;
-		if ((perf_cap & PERF_CAP_PEBS_FORMAT) < 4)
-			perf_cap &= ~PERF_CAP_PEBS_BASELINE;
+
+		/*
+		 * Disallow adaptive PEBS as it is functionally broken, can be
+		 * used by the guest to read *host* LBRs, and can be used to
+		 * bypass userspace event filters.  To correctly and safely
+		 * support adaptive PEBS, KVM needs to:
+		 *
+		 * 1. Account for the ADAPTIVE flag when (re)programming fixed
+		 *    counters.
+		 *
+		 * 2. Gain support from perf (or take direct control of counter
+		 *    programming) to support events without adaptive PEBS
+		 *    enabled for the hardware counter.
+		 *
+		 * 3. Ensure LBR MSRs cannot hold host data on VM-Entry with
+		 *    adaptive PEBS enabled and MSR_PEBS_DATA_CFG.LBRS=1.
+		 *
+		 * 4. Document which PMU events are effectively exposed to the
+		 *    guest via adaptive PEBS, and make adaptive PEBS mutually
+		 *    exclusive with KVM_SET_PMU_EVENT_FILTER if necessary.
+		 */
+		perf_cap &= ~PERF_CAP_PEBS_BASELINE;
 	}
 
 	return perf_cap;
arch/x86/kvm/x86.c +1 -1
index 4ed8a7dc0536..cab7680f0d68 100644
@@ -3317,7 +3317,7 @@ static bool is_mci_status_msr(u32 msr)
 static bool can_set_mci_status(struct kvm_vcpu *vcpu)
 {
 	/* McStatusWrEn enabled? */
-	if (guest_cpuid_is_amd_or_hygon(vcpu))
+	if (guest_cpuid_is_amd_compatible(vcpu))
 		return !!(vcpu->arch.msr_hwcr & BIT_ULL(18));
 
 	return false;
drivers/accessibility/speakup/main.c +1 -1
index 1fbc9b921c4f..736c2eb8c0f3 100644
@@ -574,7 +574,7 @@ static u_long get_word(struct vc_data *vc)
 	}
 	attr_ch = get_char(vc, (u_short *)tmp_pos, &spk_attr);
 	buf[cnt++] = attr_ch;
-	while (tmpx < vc->vc_cols - 1) {
+	while (tmpx < vc->vc_cols - 1 && cnt < sizeof(buf) - 1) {
 		tmp_pos += 2;
 		tmpx++;
 		ch = get_char(vc, (u_short *)tmp_pos, &temp);
drivers/android/binder.c +3 -1
index 8460458ebe3d..64f4573656c6 100644
@@ -1708,8 +1708,10 @@ static size_t binder_get_object(struct binder_proc *proc,
 	size_t object_size = 0;
 
 	read_size = min_t(size_t, sizeof(*object), buffer->data_size - offset);
-	if (offset > buffer->data_size || read_size < sizeof(*hdr))
+	if (offset > buffer->data_size || read_size < sizeof(*hdr) ||
+	    !IS_ALIGNED(offset, sizeof(u32)))
 		return 0;
+
 	if (u) {
 		if (copy_from_user(object, u + offset, read_size))
 			return 0;
drivers/char/random.c +5 -5
index 3cb37760dfec..7b5d4822fa3a 100644
@@ -702,7 +702,7 @@ static void extract_entropy(void *buf, size_t len)
 
 static void __cold _credit_init_bits(size_t bits)
 {
-	static struct execute_work set_ready;
+	static DECLARE_WORK(set_ready, crng_set_ready);
 	unsigned int new, orig, add;
 	unsigned long flags;
 
@@ -718,8 +718,8 @@ static void __cold _credit_init_bits(size_t bits)
 
 	if (orig < POOL_READY_BITS && new >= POOL_READY_BITS) {
 		crng_reseed(NULL); /* Sets crng_init to CRNG_READY under base_crng.lock. */
-		if (static_key_initialized)
-			execute_in_process_context(crng_set_ready, &set_ready);
+		if (static_key_initialized && system_unbound_wq)
+			queue_work(system_unbound_wq, &set_ready);
 		atomic_notifier_call_chain(&random_ready_notifier, 0, NULL);
 		wake_up_interruptible(&crng_init_wait);
 		kill_fasync(&fasync, SIGIO, POLL_IN);
@@ -890,8 +890,8 @@ void __init random_init(void)
 
 	/*
 	 * If we were initialized by the cpu or bootloader before jump labels
-	 * are initialized, then we should enable the static branch here, where
-	 * it's guaranteed that jump labels have been initialized.
+	 * or workqueues are initialized, then we should enable the static
+	 * branch here, where it's guaranteed that these have been initialized.
 	 */
 	if (!static_branch_likely(&crng_is_ready) && crng_init >= CRNG_READY)
 		crng_set_ready(NULL);
drivers/clk/clk.c +154 -41

350 lines not on this page · raw message

drivers/clk/mediatek/clk-mtk.c +15 -0
index 2e55368dc4d8..bd37ab4d1a9b 100644
@@ -13,6 +13,7 @@
 #include <linux/of.h>
 #include <linux/of_address.h>
 #include <linux/platform_device.h>
+#include <linux/pm_runtime.h>
 #include <linux/slab.h>
 
 #include "clk-mtk.h"
@@ -494,6 +495,16 @@ static int __mtk_clk_simple_probe(struct platform_device *pdev,
 			return IS_ERR(base) ? PTR_ERR(base) : -ENOMEM;
 	}
 
+
+	devm_pm_runtime_enable(&pdev->dev);
+	/*
+	 * Do a pm_runtime_resume_and_get() to workaround a possible
+	 * deadlock between clk_register() and the genpd framework.
+	 */
+	r = pm_runtime_resume_and_get(&pdev->dev);
+	if (r)
+		return r;
+
 	/* Calculate how many clk_hw_onecell_data entries to allocate */
 	num_clks = mcd->num_clks + mcd->num_composite_clks;
 	num_clks += mcd->num_fixed_clks + mcd->num_factor_clks;
@@ -574,6 +585,8 @@ static int __mtk_clk_simple_probe(struct platform_device *pdev,
 			goto unregister_clks;
 	}
 
+	pm_runtime_put(&pdev->dev);
+
 	return r;
 
 unregister_clks:
@@ -604,6 +617,8 @@ static int __mtk_clk_simple_probe(struct platform_device *pdev,
 free_base:
 	if (mcd->shared_io && base)
 		iounmap(base);
+
+	pm_runtime_put(&pdev->dev);
 	return r;
 }
 
drivers/comedi/drivers/vmk80xx.c +12 -23
index 4536ed43f65b..84dce5184a77 100644
@@ -641,33 +641,22 @@ static int vmk80xx_find_usb_endpoints(struct comedi_device *dev)
 	struct vmk80xx_private *devpriv = dev->private;
 	struct usb_interface *intf = comedi_to_usb_interface(dev);
 	struct usb_host_interface *iface_desc = intf->cur_altsetting;
-	struct usb_endpoint_descriptor *ep_desc;
-	int i;
-
-	if (iface_desc->desc.bNumEndpoints != 2)
-		return -ENODEV;
-
-	for (i = 0; i < iface_desc->desc.bNumEndpoints; i++) {
-		ep_desc = &iface_desc->endpoint[i].desc;
-
-		if (usb_endpoint_is_int_in(ep_desc) ||
-		    usb_endpoint_is_bulk_in(ep_desc)) {
-			if (!devpriv->ep_rx)
-				devpriv->ep_rx = ep_desc;
-			continue;
-		}
+	struct usb_endpoint_descriptor *ep_rx_desc, *ep_tx_desc;
+	int ret;
 
-		if (usb_endpoint_is_int_out(ep_desc) ||
-		    usb_endpoint_is_bulk_out(ep_desc)) {
-			if (!devpriv->ep_tx)
-				devpriv->ep_tx = ep_desc;
-			continue;
-		}
-	}
+	if (devpriv->model == VMK8061_MODEL)
+		ret = usb_find_common_endpoints(iface_desc, &ep_rx_desc,
+						&ep_tx_desc, NULL, NULL);
+	else
+		ret = usb_find_common_endpoints(iface_desc, NULL, NULL,
+						&ep_rx_desc, &ep_tx_desc);
 
-	if (!devpriv->ep_rx || !devpriv->ep_tx)
+	if (ret)
 		return -ENODEV;
 
+	devpriv->ep_rx = ep_rx_desc;
+	devpriv->ep_tx = ep_tx_desc;
+
 	if (!usb_endpoint_maxp(devpriv->ep_rx) || !usb_endpoint_maxp(devpriv->ep_tx))
 		return -EINVAL;
 
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +0 -4
index 928107d0bfea..1124e2d4f853 100644
@@ -562,7 +562,6 @@ static int amdgpu_ttm_io_mem_reserve(struct ttm_device *bdev,
 				     struct ttm_resource *mem)
 {
 	struct amdgpu_device *adev = amdgpu_ttm_adev(bdev);
-	size_t bus_size = (size_t)mem->size;
 
 	switch (mem->mem_type) {
 	case TTM_PL_SYSTEM:
@@ -573,9 +572,6 @@ static int amdgpu_ttm_io_mem_reserve(struct ttm_device *bdev,
 		break;
 	case TTM_PL_VRAM:
 		mem->bus.offset = mem->start << PAGE_SHIFT;
-		/* check if it's visible */
-		if ((mem->bus.offset + bus_size) > adev->gmc.visible_vram_size)
-			return -EINVAL;
 
 		if (adev->mman.aper_base_kaddr &&
 		    mem->placement & TTM_PL_FLAG_CONTIGUOUS)
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +46 -26

107 lines not on this page · raw message

drivers/gpu/drm/amd/amdkfd/kfd_process.c +2 -2
index fbf053001af9..7a1a574106fa 100644
@@ -818,9 +818,9 @@ struct kfd_process *kfd_create_process(struct task_struct *thread)
 	mutex_lock(&kfd_processes_mutex);
 
 	if (kfd_is_locked()) {
-		mutex_unlock(&kfd_processes_mutex);
 		pr_debug("KFD is locked! Cannot create process");
-		return ERR_PTR(-EINVAL);
+		process = ERR_PTR(-EINVAL);
+		goto out;
 	}
 
 	/* A prior open of /dev/kfd could have already created the process. */
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_optc.c +0 -3
index e817fa4efeee..058dee76054e 100644
@@ -236,9 +236,6 @@ static void optc32_setup_manual_trigger(struct timing_generator *optc)
 				OTG_V_TOTAL_MAX_SEL, 1,
 				OTG_FORCE_LOCK_ON_EVENT, 0,
 				OTG_SET_V_TOTAL_MIN_MASK, (1 << 1)); /* TRIGA */
-
-		// Setup manual flow control for EOF via TRIG_A
-		optc->funcs->setup_manual_trigger(optc);
 	}
 }
 
drivers/gpu/drm/drm_panel_orientation_quirks.c +6 -0
index 3fe5e6439c40..aa93129c3397 100644
@@ -348,6 +348,12 @@ static const struct dmi_system_id orientation_data[] = {
 		  DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Duet 3 10IGL5"),
 		},
 		.driver_data = (void *)&lcd1200x1920_rightside_up,
+	}, {	/* Lenovo Legion Go 8APU1 */
+		.matches = {
+		  DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+		  DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Legion Go 8APU1"),
+		},
+		.driver_data = (void *)&lcd1600x2560_leftside_up,
 	}, {	/* Lenovo Yoga Book X90F / X90L */
 		.matches = {
 		  DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
drivers/gpu/drm/i915/display/intel_atomic.c +1 -0
index 7cf51dd8c056..aaddd8c0cfa0 100644
@@ -259,6 +259,7 @@ intel_crtc_duplicate_state(struct drm_crtc *crtc)
 		drm_property_blob_get(crtc_state->post_csc_lut);
 
 	crtc_state->update_pipe = false;
+	crtc_state->update_m_n = false;
 	crtc_state->disable_lp_wm = false;
 	crtc_state->disable_cxsr = false;
 	crtc_state->update_wm_pre = false;
drivers/gpu/drm/i915/display/intel_cdclk.c +27 -10
index 5aa6b998a1cb..fc3a6eb1de74 100644
@@ -2453,7 +2453,8 @@ intel_set_cdclk_pre_plane_update(struct intel_atomic_state *state)
 		intel_atomic_get_old_cdclk_state(state);
 	const struct intel_cdclk_state *new_cdclk_state =
 		intel_atomic_get_new_cdclk_state(state);
-	enum pipe pipe = new_cdclk_state->pipe;
+	struct intel_cdclk_config cdclk_config;
+	enum pipe pipe;
 
 	if (!intel_cdclk_changed(&old_cdclk_state->actual,
 				 &new_cdclk_state->actual))
@@ -2462,12 +2463,25 @@ intel_set_cdclk_pre_plane_update(struct intel_atomic_state *state)
 	if (IS_DG2(i915))
 		intel_cdclk_pcode_pre_notify(state);
 
-	if (new_cdclk_state->disable_pipes ||
-	    old_cdclk_state->actual.cdclk <= new_cdclk_state->actual.cdclk) {
-		drm_WARN_ON(&i915->drm, !new_cdclk_state->base.changed);
+	if (new_cdclk_state->disable_pipes) {
+		cdclk_config = new_cdclk_state->actual;
+		pipe = INVALID_PIPE;
+	} else {
+		if (new_cdclk_state->actual.cdclk >= old_cdclk_state->actual.cdclk) {
+			cdclk_config = new_cdclk_state->actual;
+			pipe = new_cdclk_state->pipe;
+		} else {
+			cdclk_config = old_cdclk_state->actual;
+			pipe = INVALID_PIPE;
+		}
 
-		intel_set_cdclk(i915, &new_cdclk_state->actual, pipe);
+		cdclk_config.voltage_level = max(new_cdclk_state->actual.voltage_level,
+						 old_cdclk_state->actual.voltage_level);
 	}
+
+	drm_WARN_ON(&i915->drm, !new_cdclk_state->base.changed);
+
+	intel_set_cdclk(i915, &cdclk_config, pipe);
 }
 
 /**
@@ -2485,7 +2499,7 @@ intel_set_cdclk_post_plane_update(struct intel_atomic_state *state)
 		intel_atomic_get_old_cdclk_state(state);
 	const struct intel_cdclk_state *new_cdclk_state =
 		intel_atomic_get_new_cdclk_state(state);
-	enum pipe pipe = new_cdclk_state->pipe;
+	enum pipe pipe;
 
 	if (!intel_cdclk_changed(&old_cdclk_state->actual,
 				 &new_cdclk_state->actual))
@@ -2495,11 +2509,14 @@ intel_set_cdclk_post_plane_update(struct intel_atomic_state *state)
 		intel_cdclk_pcode_post_notify(state);
 
 	if (!new_cdclk_state->disable_pipes &&
-	    old_cdclk_state->actual.cdclk > new_cdclk_state->actual.cdclk) {
-		drm_WARN_ON(&i915->drm, !new_cdclk_state->base.changed);
+	    new_cdclk_state->actual.cdclk < old_cdclk_state->actual.cdclk)
+		pipe = new_cdclk_state->pipe;
+	else
+		pipe = INVALID_PIPE;
 
-		intel_set_cdclk(i915, &new_cdclk_state->actual, pipe);
-	}
+	drm_WARN_ON(&i915->drm, !new_cdclk_state->base.changed);
+
+	intel_set_cdclk(i915, &new_cdclk_state->actual, pipe);
 }
 
 static int intel_pixel_rate_to_cdclk(const struct intel_crtc_state *crtc_state)
drivers/gpu/drm/i915/display/intel_crtc.c +59 -37

136 lines not on this page · raw message

drivers/gpu/drm/i915/display/intel_crtc.h +4 -2
index 51a4c8df9e65..22d7993d1f0b 100644
@@ -36,8 +36,10 @@ void intel_crtc_state_reset(struct intel_crtc_state *crtc_state,
 u32 intel_crtc_get_vblank_counter(struct intel_crtc *crtc);
 void intel_crtc_vblank_on(const struct intel_crtc_state *crtc_state);
 void intel_crtc_vblank_off(const struct intel_crtc_state *crtc_state);
-void intel_pipe_update_start(struct intel_crtc_state *new_crtc_state);
-void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state);
+void intel_pipe_update_start(struct intel_atomic_state *state,
+			     struct intel_crtc *crtc);
+void intel_pipe_update_end(struct intel_atomic_state *state,
+			   struct intel_crtc *crtc);
 void intel_wait_for_vblank_workers(struct intel_atomic_state *state);
 struct intel_crtc *intel_first_crtc(struct drm_i915_private *i915);
 struct intel_crtc *intel_crtc_for_pipe(struct drm_i915_private *i915,
drivers/gpu/drm/i915/display/intel_display.c +28 -15

124 lines not on this page · raw message

drivers/gpu/drm/i915/display/intel_display_device.h +1 -0
index 215e682bd8b7..5fd07c181776 100644
@@ -46,6 +46,7 @@ struct drm_printer;
 #define HAS_DPT(i915)			(DISPLAY_VER(i915) >= 13)
 #define HAS_DSB(i915)			(DISPLAY_INFO(i915)->has_dsb)
 #define HAS_DSC(__i915)			(DISPLAY_RUNTIME_INFO(__i915)->has_dsc)
+#define HAS_DSC_MST(__i915)		(DISPLAY_VER(__i915) >= 12 && HAS_DSC(__i915))
 #define HAS_FBC(i915)			(DISPLAY_RUNTIME_INFO(i915)->fbc_mask != 0)
 #define HAS_FPGA_DBG_UNCLAIMED(i915)	(DISPLAY_INFO(i915)->has_fpga_dbg)
 #define HAS_FW_BLC(i915)		(DISPLAY_VER(i915) > 2)
drivers/gpu/drm/i915/display/intel_display_types.h +1 -1
index 8b0dc2b75da4..1c23b186aff2 100644
@@ -1084,6 +1084,7 @@ struct intel_crtc_state {
 
 	unsigned fb_bits; /* framebuffers to flip */
 	bool update_pipe; /* can a fast modeset be performed? */
+	bool update_m_n; /* update M/N seamlessly during fastset? */
 	bool disable_cxsr;
 	bool update_wm_pre, update_wm_post; /* watermarks are updated */
 	bool fifo_changed; /* FIFO split is changed */
@@ -1196,7 +1197,6 @@ struct intel_crtc_state {
 	/* m2_n2 for eDP downclock */
 	struct intel_link_m_n dp_m2_n2;
 	bool has_drrs;
-	bool seamless_m_n;
 
 	/* PSR is supported but might not be enabled due the lack of enabled planes */
 	bool has_psr;
drivers/gpu/drm/i915/display/intel_dp.c +9 -4
index 18ee4f2a87f9..ccc47cf4d15d 100644
@@ -1310,13 +1310,14 @@ bool intel_dp_has_hdmi_sink(struct intel_dp *intel_dp)
 static bool intel_dp_source_supports_fec(struct intel_dp *intel_dp,
 					 const struct intel_crtc_state *pipe_config)
 {
+	struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
 	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
 
-	/* On TGL, FEC is supported on all Pipes */
 	if (DISPLAY_VER(dev_priv) >= 12)
 		return true;
 
-	if (DISPLAY_VER(dev_priv) == 11 && pipe_config->cpu_transcoder != TRANSCODER_A)
+	if (DISPLAY_VER(dev_priv) == 11 && encoder->port != PORT_A &&
+	    !intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST))
 		return true;
 
 	return false;
@@ -2147,8 +2148,12 @@ intel_dp_drrs_compute_config(struct intel_connector *connector,
 		intel_panel_downclock_mode(connector, &pipe_config->hw.adjusted_mode);
 	int pixel_clock;
 
-	if (has_seamless_m_n(connector))
-		pipe_config->seamless_m_n = true;
+	/*
+	 * FIXME all joined pipes share the same transcoder.
+	 * Need to account for that when updating M/N live.
+	 */
+	if (has_seamless_m_n(connector) && !pipe_config->bigjoiner_pipes)
+		pipe_config->update_m_n = true;
 
 	if (!can_enable_drrs(connector, pipe_config, downclock_mode)) {
 		if (intel_cpu_transcoder_has_m2_n2(i915, pipe_config->cpu_transcoder))
drivers/gpu/drm/i915/display/intel_dp_mst.c +1 -1
index f104bd7f8c2a..d2f8f20722d9 100644
@@ -964,7 +964,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
 		return 0;
 	}
 
-	if (DISPLAY_VER(dev_priv) >= 10 &&
+	if (HAS_DSC_MST(dev_priv) &&
 	    drm_dp_sink_supports_dsc(intel_dp->dsc_dpcd)) {
 		/*
 		 * TBD pass the connector BPC,
drivers/gpu/drm/i915/i915_vma.c +35 -7

76 lines not on this page · raw message

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h +4 -4
index 99acaf917e43..f0c3804f4258 100644
@@ -77,7 +77,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
 		.name = "sspp_0", .id = SSPP_VIG0,
 		.base = 0x4000, .len = 0x1f0,
 		.features = VIG_SDM845_MASK,
-		.sblk = &sdm845_vig_sblk_0,
+		.sblk = &sm8150_vig_sblk_0,
 		.xin_id = 0,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG0,
@@ -85,7 +85,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
 		.name = "sspp_1", .id = SSPP_VIG1,
 		.base = 0x6000, .len = 0x1f0,
 		.features = VIG_SDM845_MASK,
-		.sblk = &sdm845_vig_sblk_1,
+		.sblk = &sm8150_vig_sblk_1,
 		.xin_id = 4,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG1,
@@ -93,7 +93,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
 		.name = "sspp_2", .id = SSPP_VIG2,
 		.base = 0x8000, .len = 0x1f0,
 		.features = VIG_SDM845_MASK,
-		.sblk = &sdm845_vig_sblk_2,
+		.sblk = &sm8150_vig_sblk_2,
 		.xin_id = 8,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG2,
@@ -101,7 +101,7 @@ static const struct dpu_sspp_cfg sm8150_sspp[] = {
 		.name = "sspp_3", .id = SSPP_VIG3,
 		.base = 0xa000, .len = 0x1f0,
 		.features = VIG_SDM845_MASK,
-		.sblk = &sdm845_vig_sblk_3,
+		.sblk = &sm8150_vig_sblk_3,
 		.xin_id = 12,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG3,
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h +4 -4
index c92fbf24fbac..47de71e71e31 100644
@@ -76,7 +76,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
 		.name = "sspp_0", .id = SSPP_VIG0,
 		.base = 0x4000, .len = 0x1f0,
 		.features = VIG_SDM845_MASK,
-		.sblk = &sdm845_vig_sblk_0,
+		.sblk = &sm8150_vig_sblk_0,
 		.xin_id = 0,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG0,
@@ -84,7 +84,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
 		.name = "sspp_1", .id = SSPP_VIG1,
 		.base = 0x6000, .len = 0x1f0,
 		.features = VIG_SDM845_MASK,
-		.sblk = &sdm845_vig_sblk_1,
+		.sblk = &sm8150_vig_sblk_1,
 		.xin_id = 4,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG1,
@@ -92,7 +92,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
 		.name = "sspp_2", .id = SSPP_VIG2,
 		.base = 0x8000, .len = 0x1f0,
 		.features = VIG_SDM845_MASK,
-		.sblk = &sdm845_vig_sblk_2,
+		.sblk = &sm8150_vig_sblk_2,
 		.xin_id = 8,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG2,
@@ -100,7 +100,7 @@ static const struct dpu_sspp_cfg sc8180x_sspp[] = {
 		.name = "sspp_3", .id = SSPP_VIG3,
 		.base = 0xa000, .len = 0x1f0,
 		.features = VIG_SDM845_MASK,
-		.sblk = &sdm845_vig_sblk_3,
+		.sblk = &sm8150_vig_sblk_3,
 		.xin_id = 12,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG3,
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h +4 -4
index 8a19cfa274de..72a1726371ca 100644
@@ -77,7 +77,7 @@ static const struct dpu_sspp_cfg sm8450_sspp[] = {
 		.name = "sspp_0", .id = SSPP_VIG0,
 		.base = 0x4000, .len = 0x32c,
 		.features = VIG_SC7180_MASK,
-		.sblk = &sm8250_vig_sblk_0,
+		.sblk = &sm8450_vig_sblk_0,
 		.xin_id = 0,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG0,
@@ -85,7 +85,7 @@ static const struct dpu_sspp_cfg sm8450_sspp[] = {
 		.name = "sspp_1", .id = SSPP_VIG1,
 		.base = 0x6000, .len = 0x32c,
 		.features = VIG_SC7180_MASK,
-		.sblk = &sm8250_vig_sblk_1,
+		.sblk = &sm8450_vig_sblk_1,
 		.xin_id = 4,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG1,
@@ -93,7 +93,7 @@ static const struct dpu_sspp_cfg sm8450_sspp[] = {
 		.name = "sspp_2", .id = SSPP_VIG2,
 		.base = 0x8000, .len = 0x32c,
 		.features = VIG_SC7180_MASK,
-		.sblk = &sm8250_vig_sblk_2,
+		.sblk = &sm8450_vig_sblk_2,
 		.xin_id = 8,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG2,
@@ -101,7 +101,7 @@ static const struct dpu_sspp_cfg sm8450_sspp[] = {
 		.name = "sspp_3", .id = SSPP_VIG3,
 		.base = 0xa000, .len = 0x32c,
 		.features = VIG_SC7180_MASK,
-		.sblk = &sm8250_vig_sblk_3,
+		.sblk = &sm8450_vig_sblk_3,
 		.xin_id = 12,
 		.type = SSPP_TYPE_VIG,
 		.clk_ctrl = DPU_CLK_CTRL_VIG3,
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +73 -22

160 lines not on this page · raw message

drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h +2 -1
index 6c9634209e9f..3f82d84bd1c9 100644
@@ -269,7 +269,8 @@ enum {
 /**
  * struct dpu_scaler_blk: Scaler information
  * @info:   HW register and features supported by this sub-blk
- * @version: qseed block revision
+ * @version: qseed block revision, on QSEED3+ platforms this is the value of
+ *           scaler_blk.base + QSEED3_HW_VERSION registers.
  */
 struct dpu_scaler_blk {
 	DPU_HW_SUBBLK_INFO;
drivers/gpu/drm/nouveau/nouveau_bios.c +7 -6
index 189903b65edc..48cf593383b3 100644
@@ -23,6 +23,7 @@
  */
 
 #include "nouveau_drv.h"
+#include "nouveau_bios.h"
 #include "nouveau_reg.h"
 #include "dispnv04/hw.h"
 #include "nouveau_encoder.h"
@@ -1675,7 +1676,7 @@ apply_dcb_encoder_quirks(struct drm_device *dev, int idx, u32 *conn, u32 *conf)
 	 */
 	if (nv_match_device(dev, 0x0201, 0x1462, 0x8851)) {
 		if (*conn == 0xf2005014 && *conf == 0xffffffff) {
-			fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, 1, 1, 1);
+			fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, 1, 1, DCB_OUTPUT_B);
 			return false;
 		}
 	}
@@ -1761,26 +1762,26 @@ fabricate_dcb_encoder_table(struct drm_device *dev, struct nvbios *bios)
 #ifdef __powerpc__
 	/* Apple iMac G4 NV17 */
 	if (of_machine_is_compatible("PowerMac4,5")) {
-		fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, 0, all_heads, 1);
-		fabricate_dcb_output(dcb, DCB_OUTPUT_ANALOG, 1, all_heads, 2);
+		fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, 0, all_heads, DCB_OUTPUT_B);
+		fabricate_dcb_output(dcb, DCB_OUTPUT_ANALOG, 1, all_heads, DCB_OUTPUT_C);
 		return;
 	}
 #endif
 
 	/* Make up some sane defaults */
 	fabricate_dcb_output(dcb, DCB_OUTPUT_ANALOG,
-			     bios->legacy.i2c_indices.crt, 1, 1);
+			     bios->legacy.i2c_indices.crt, 1, DCB_OUTPUT_B);
 
 	if (nv04_tv_identify(dev, bios->legacy.i2c_indices.tv) >= 0)
 		fabricate_dcb_output(dcb, DCB_OUTPUT_TV,
 				     bios->legacy.i2c_indices.tv,
-				     all_heads, 0);
+				     all_heads, DCB_OUTPUT_A);
 
 	else if (bios->tmds.output0_script_ptr ||
 		 bios->tmds.output1_script_ptr)
 		fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS,
 				     bios->legacy.i2c_indices.panel,
-				     all_heads, 1);
+				     all_heads, DCB_OUTPUT_B);
 }
 
 static int
drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c +6 -1
index 4b2d7465d22f..f4989f0526ec 100644
@@ -221,8 +221,11 @@ nv50_instobj_acquire(struct nvkm_memory *memory)
 	void __iomem *map = NULL;
 
 	/* Already mapped? */
-	if (refcount_inc_not_zero(&iobj->maps))
+	if (refcount_inc_not_zero(&iobj->maps)) {
+		/* read barrier match the wmb on refcount set */
+		smp_rmb();
 		return iobj->map;
+	}
 
 	/* Take the lock, and re-check that another thread hasn't
 	 * already mapped the object in the meantime.
@@ -249,6 +252,8 @@ nv50_instobj_acquire(struct nvkm_memory *memory)
 			iobj->base.memory.ptrs = &nv50_instobj_fast;
 		else
 			iobj->base.memory.ptrs = &nv50_instobj_slow;
+		/* barrier to ensure the ptrs are written before refcount is set */
+		smp_wmb();
 		refcount_set(&iobj->maps, 1);
 	}
 
drivers/gpu/drm/panel/panel-visionox-rm69299.c +0 -2
index c2806e4fd553..6e946e5a036e 100644
@@ -261,8 +261,6 @@ static void visionox_rm69299_remove(struct mipi_dsi_device *dsi)
 	struct visionox_rm69299 *ctx = mipi_dsi_get_drvdata(dsi);
 
 	mipi_dsi_detach(ctx->dsi);
-	mipi_dsi_device_unregister(ctx->dsi);
-
 	drm_panel_remove(&ctx->panel);
 }
 
drivers/gpu/drm/radeon/radeon_atombios.c +6 -2
index 85c4bb186203..061396e7fa0f 100644
@@ -922,8 +922,12 @@ bool radeon_get_atom_connector_info_from_supported_devices_table(struct
 		max_device = ATOM_MAX_SUPPORTED_DEVICE_INFO;
 
 	for (i = 0; i < max_device; i++) {
-		ATOM_CONNECTOR_INFO_I2C ci =
-		    supported_devices->info.asConnInfo[i];
+		ATOM_CONNECTOR_INFO_I2C ci;
+
+		if (frev > 1)
+			ci = supported_devices->info_2d1.asConnInfo[i];
+		else
+			ci = supported_devices->info.asConnInfo[i];
 
 		bios_connectors[i].valid = false;
 
drivers/gpu/drm/vmwgfx/vmwgfx_blit.c +32 -3
index c52c7bf1485b..717d624e9a05 100644
@@ -456,8 +456,10 @@ int vmw_bo_cpu_blit(struct ttm_buffer_object *dst,
 		.no_wait_gpu = false
 	};
 	u32 j, initial_line = dst_offset / dst_stride;
-	struct vmw_bo_blit_line_data d;
+	struct vmw_bo_blit_line_data d = {0};
 	int ret = 0;
+	struct page **dst_pages = NULL;
+	struct page **src_pages = NULL;
 
 	/* Buffer objects need to be either pinned or reserved: */
 	if (!(dst->pin_count))
@@ -477,12 +479,35 @@ int vmw_bo_cpu_blit(struct ttm_buffer_object *dst,
 			return ret;
 	}
 
+	if (!src->ttm->pages && src->ttm->sg) {
+		src_pages = kvmalloc_array(src->ttm->num_pages,
+					   sizeof(struct page *), GFP_KERNEL);
+		if (!src_pages)
+			return -ENOMEM;
+		ret = drm_prime_sg_to_page_array(src->ttm->sg, src_pages,
+						 src->ttm->num_pages);
+		if (ret)
+			goto out;
+	}
+	if (!dst->ttm->pages && dst->ttm->sg) {
+		dst_pages = kvmalloc_array(dst->ttm->num_pages,
+					   sizeof(struct page *), GFP_KERNEL);
+		if (!dst_pages) {
+			ret = -ENOMEM;
+			goto out;
+		}
+		ret = drm_prime_sg_to_page_array(dst->ttm->sg, dst_pages,
+						 dst->ttm->num_pages);
+		if (ret)
+			goto out;
+	}
+
 	d.mapped_dst = 0;
 	d.mapped_src = 0;
 	d.dst_addr = NULL;
 	d.src_addr = NULL;
-	d.dst_pages = dst->ttm->pages;
-	d.src_pages = src->ttm->pages;
+	d.dst_pages = dst->ttm->pages ? dst->ttm->pages : dst_pages;
+	d.src_pages = src->ttm->pages ? src->ttm->pages : src_pages;
 	d.dst_num_pages = PFN_UP(dst->resource->size);
 	d.src_num_pages = PFN_UP(src->resource->size);
 	d.dst_prot = ttm_io_prot(dst, dst->resource, PAGE_KERNEL);
@@ -504,6 +529,10 @@ int vmw_bo_cpu_blit(struct ttm_buffer_object *dst,
 		kunmap_atomic(d.src_addr);
 	if (d.dst_addr)
 		kunmap_atomic(d.dst_addr);
+	if (src_pages)
+		kvfree(src_pages);
+	if (dst_pages)
+		kvfree(dst_pages);
 
 	return ret;
 }
drivers/gpu/drm/vmwgfx/vmwgfx_bo.c +4 -3
index 2bfac3aad7b7..4aac88cc5f91 100644
@@ -377,7 +377,8 @@ static int vmw_bo_init(struct vmw_private *dev_priv,
 {
 	struct ttm_operation_ctx ctx = {
 		.interruptible = params->bo_type != ttm_bo_type_kernel,
-		.no_wait_gpu = false
+		.no_wait_gpu = false,
+		.resv = params->resv,
 	};
 	struct ttm_device *bdev = &dev_priv->bdev;
 	struct drm_device *vdev = &dev_priv->drm;
@@ -394,8 +395,8 @@ static int vmw_bo_init(struct vmw_private *dev_priv,
 
 	vmw_bo_placement_set(vmw_bo, params->domain, params->busy_domain);
 	ret = ttm_bo_init_reserved(bdev, &vmw_bo->tbo, params->bo_type,
-				   &vmw_bo->placement, 0, &ctx, NULL,
-				   NULL, destroy);
+				   &vmw_bo->placement, 0, &ctx,
+				   params->sg, params->resv, destroy);
 	if (unlikely(ret))
 		return ret;
 
drivers/gpu/drm/vmwgfx/vmwgfx_bo.h +2 -0
index 0d496dc9c6af..f349642e6190 100644
@@ -55,6 +55,8 @@ struct vmw_bo_params {
 	enum ttm_bo_type bo_type;
 	size_t size;
 	bool pin;
+	struct dma_resv *resv;
+	struct sg_table *sg;
 };
 
 /**
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +1 -0
index 0a304706e013..58fb40c93100 100644
@@ -1628,6 +1628,7 @@ static const struct drm_driver driver = {
 
 	.prime_fd_to_handle = vmw_prime_fd_to_handle,
 	.prime_handle_to_fd = vmw_prime_handle_to_fd,
+	.gem_prime_import_sg_table = vmw_prime_import_sg_table,
 
 	.fops = &vmwgfx_driver_fops,
 	.name = VMWGFX_DRIVER_NAME,
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +3 -0
index 3cd5090dedfc..6acc7ad0e9eb 100644
@@ -1131,6 +1131,9 @@ extern int vmw_prime_handle_to_fd(struct drm_device *dev,
 				  struct drm_file *file_priv,
 				  uint32_t handle, uint32_t flags,
 				  int *prime_fd);
+struct drm_gem_object *vmw_prime_import_sg_table(struct drm_device *dev,
+						 struct dma_buf_attachment *attach,
+						 struct sg_table *table);
 
 /*
  * MemoryOBject management -  vmwgfx_mob.c
drivers/gpu/drm/vmwgfx/vmwgfx_gem.c +32 -0
index 12787bb9c111..d6bcaf078b1f 100644
@@ -149,6 +149,38 @@ int vmw_gem_object_create_with_handle(struct vmw_private *dev_priv,
 	return ret;
 }
 
+struct drm_gem_object *vmw_prime_import_sg_table(struct drm_device *dev,
+						 struct dma_buf_attachment *attach,
+						 struct sg_table *table)
+{
+	int ret;
+	struct vmw_private *dev_priv = vmw_priv(dev);
+	struct drm_gem_object *gem = NULL;
+	struct vmw_bo *vbo;
+	struct vmw_bo_params params = {
+		.domain = (dev_priv->has_mob) ? VMW_BO_DOMAIN_SYS : VMW_BO_DOMAIN_VRAM,
+		.busy_domain = VMW_BO_DOMAIN_SYS,
+		.bo_type = ttm_bo_type_sg,
+		.size = attach->dmabuf->size,
+		.pin = false,
+		.resv = attach->dmabuf->resv,
+		.sg = table,
+
+	};
+
+	dma_resv_lock(params.resv, NULL);
+
+	ret = vmw_bo_create(dev_priv, &params, &vbo);
+	if (ret != 0)
+		goto out_no_bo;
+
+	vbo->tbo.base.funcs = &vmw_gem_object_funcs;
+
+	gem = &vbo->tbo.base;
+out_no_bo:
+	dma_resv_unlock(params.resv);
+	return gem;
+}
 
 int vmw_gem_object_create_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *filp)
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +8 -3
index 5681a1b42aa2..a88407285132 100644
@@ -926,6 +926,7 @@ int vmw_du_cursor_plane_atomic_check(struct drm_plane *plane,
 int vmw_du_crtc_atomic_check(struct drm_crtc *crtc,
 			     struct drm_atomic_state *state)
 {
+	struct vmw_private *vmw = vmw_priv(crtc->dev);
 	struct drm_crtc_state *new_state = drm_atomic_get_new_crtc_state(state,
 									 crtc);
 	struct vmw_display_unit *du = vmw_crtc_to_du(new_state->crtc);
@@ -933,9 +934,13 @@ int vmw_du_crtc_atomic_check(struct drm_crtc *crtc,
 	bool has_primary = new_state->plane_mask &
 			   drm_plane_mask(crtc->primary);
 
-	/* We always want to have an active plane with an active CRTC */
-	if (has_primary != new_state->enable)
-		return -EINVAL;
+	/*
+	 * This is fine in general, but broken userspace might expect
+	 * some actual rendering so give a clue as why it's blank.
+	 */
+	if (new_state->enable && !has_primary)
+		drm_dbg_driver(&vmw->drm,
+			       "CRTC without a primary plane will be blank.\n");
 
 
 	if (new_state->connector_mask != connector_mask &&
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h +2 -2
index db81e635dc06..9fda4f4ec7a9 100644
@@ -243,10 +243,10 @@ struct vmw_framebuffer_bo {
 
 
 static const uint32_t __maybe_unused vmw_primary_plane_formats[] = {
-	DRM_FORMAT_XRGB1555,
-	DRM_FORMAT_RGB565,
 	DRM_FORMAT_XRGB8888,
 	DRM_FORMAT_ARGB8888,
+	DRM_FORMAT_RGB565,
+	DRM_FORMAT_XRGB1555,
 };
 
 static const uint32_t __maybe_unused vmw_cursor_plane_formats[] = {
drivers/gpu/drm/vmwgfx/vmwgfx_prime.c +13 -2
index 2d72a5ee7c0c..c99cad444991 100644
@@ -75,8 +75,12 @@ int vmw_prime_fd_to_handle(struct drm_device *dev,
 			   int fd, u32 *handle)
 {
 	struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile;
+	int ret = ttm_prime_fd_to_handle(tfile, fd, handle);
 
-	return ttm_prime_fd_to_handle(tfile, fd, handle);
+	if (ret)
+		ret = drm_gem_prime_fd_to_handle(dev, file_priv, fd, handle);
+
+	return ret;
 }
 
 int vmw_prime_handle_to_fd(struct drm_device *dev,
@@ -85,5 +89,12 @@ int vmw_prime_handle_to_fd(struct drm_device *dev,
 			   int *prime_fd)
 {
 	struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile;
-	return ttm_prime_handle_to_fd(tfile, handle, flags, prime_fd);
+	int ret;
+
+	if (handle > VMWGFX_NUM_MOB)
+		ret = ttm_prime_handle_to_fd(tfile, handle, flags, prime_fd);
+	else
+		ret = drm_gem_prime_handle_to_fd(dev, file_priv, handle, flags, prime_fd);
+
+	return ret;
 }
drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c +30 -14

85 lines not on this page · raw message

drivers/infiniband/core/cm.c +7 -4
index bf0df6ee4f78..07fb8d3c037f 100644
@@ -1026,23 +1026,26 @@ static void cm_reset_to_idle(struct cm_id_private *cm_id_priv)
 	}
 }
 
-static noinline void cm_destroy_id_wait_timeout(struct ib_cm_id *cm_id)
+static noinline void cm_destroy_id_wait_timeout(struct ib_cm_id *cm_id,
+						enum ib_cm_state old_state)
 {
 	struct cm_id_private *cm_id_priv;
 
 	cm_id_priv = container_of(cm_id, struct cm_id_private, id);
-	pr_err("%s: cm_id=%p timed out. state=%d refcnt=%d\n", __func__,
-	       cm_id, cm_id->state, refcount_read(&cm_id_priv->refcount));
+	pr_err("%s: cm_id=%p timed out. state %d -> %d, refcnt=%d\n", __func__,
+	       cm_id, old_state, cm_id->state, refcount_read(&cm_id_priv->refcount));
 }
 
 static void cm_destroy_id(struct ib_cm_id *cm_id, int err)
 {
 	struct cm_id_private *cm_id_priv;
+	enum ib_cm_state old_state;
 	struct cm_work *work;
 	int ret;
 
 	cm_id_priv = container_of(cm_id, struct cm_id_private, id);
 	spin_lock_irq(&cm_id_priv->lock);
+	old_state = cm_id->state;
 retest:
 	switch (cm_id->state) {
 	case IB_CM_LISTEN:
@@ -1151,7 +1154,7 @@ static void cm_destroy_id(struct ib_cm_id *cm_id, int err)
 						  msecs_to_jiffies(
 						  CM_DESTROY_ID_WAIT_TIMEOUT));
 		if (!ret) /* timeout happened */
-			cm_destroy_id_wait_timeout(cm_id);
+			cm_destroy_id_wait_timeout(cm_id, old_state);
 	} while (!ret);
 
 	while ((work = cm_dequeue_work(cm_id_priv)) != NULL)
drivers/infiniband/hw/mlx5/mad.c +2 -1
index 8102ef113b7e..64dae68c43e6 100644
@@ -188,7 +188,8 @@ static int process_pma_cmd(struct mlx5_ib_dev *dev, u32 port_num,
 		mdev = dev->mdev;
 		mdev_port_num = 1;
 	}
-	if (MLX5_CAP_GEN(dev->mdev, num_ports) == 1) {
+	if (MLX5_CAP_GEN(dev->mdev, num_ports) == 1 &&
+	    !mlx5_core_mp_enabled(mdev)) {
 		/* set local port to one for Function-Per-Port HCA. */
 		mdev = dev->mdev;
 		mdev_port_num = 1;
drivers/infiniband/sw/rxe/rxe.c +2 -0
index 54c723a6edda..6f9ec8db014c 100644
@@ -33,6 +33,8 @@ void rxe_dealloc(struct ib_device *ib_dev)
 
 	if (rxe->tfm)
 		crypto_free_shash(rxe->tfm);
+
+	mutex_destroy(&rxe->usdev_lock);
 }
 
 /* initialize rxe device parameters */
drivers/interconnect/core.c +8 -0
index 50bac2d79d9b..68edb07d4443 100644
@@ -176,6 +176,8 @@ static struct icc_path *path_init(struct device *dev, struct icc_node *dst,
 
 	path->num_nodes = num_nodes;
 
+	mutex_lock(&icc_bw_lock);
+
 	for (i = num_nodes - 1; i >= 0; i--) {
 		node->provider->users++;
 		hlist_add_head(&path->reqs[i].req_node, &node->req_list);
@@ -186,6 +188,8 @@ static struct icc_path *path_init(struct device *dev, struct icc_node *dst,
 		node = node->reverse;
 	}
 
+	mutex_unlock(&icc_bw_lock);
+
 	return path;
 }
 
@@ -792,12 +796,16 @@ void icc_put(struct icc_path *path)
 		pr_err("%s: error (%d)\n", __func__, ret);
 
 	mutex_lock(&icc_lock);
+	mutex_lock(&icc_bw_lock);
+
 	for (i = 0; i < path->num_nodes; i++) {
 		node = path->reqs[i].node;
 		hlist_del(&path->reqs[i].req_node);
 		if (!WARN_ON(!node->provider->users))
 			node->provider->users--;
 	}
+
+	mutex_unlock(&icc_bw_lock);
 	mutex_unlock(&icc_lock);
 
 	kfree_const(path->name);
drivers/media/common/videobuf2/videobuf2-core.c +7 -2
index cf6727d9c81f..468191438849 100644
@@ -2648,9 +2648,14 @@ static int __vb2_init_fileio(struct vb2_queue *q, int read)
 		return -EBUSY;
 
 	/*
-	 * Start with count 1, driver can increase it in queue_setup()
+	 * Start with q->min_buffers_needed + 1, driver can increase it in
+	 * queue_setup()
+	 *
+	 * 'min_buffers_needed' buffers need to be queued up before you
+	 * can start streaming, plus 1 for userspace (or in this case,
+	 * kernelspace) processing.
 	 */
-	count = 1;
+	count = max(2, q->min_buffers_needed + 1);
 
 	dprintk(q, 3, "setting up file io: mode %s, count %d, read_once %d, write_immediately %d\n",
 		(read) ? "read" : "write", count, q->fileio_read_once,
drivers/misc/mei/pci-me.c +1 -1
index 8cf636c54032..bd4e3df44865 100644
@@ -116,7 +116,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
 	{MEI_PCI_DEVICE(MEI_DEV_ID_ADP_P, MEI_ME_PCH15_CFG)},
 	{MEI_PCI_DEVICE(MEI_DEV_ID_ADP_N, MEI_ME_PCH15_CFG)},
 
-	{MEI_PCI_DEVICE(MEI_DEV_ID_RPL_S, MEI_ME_PCH15_CFG)},
+	{MEI_PCI_DEVICE(MEI_DEV_ID_RPL_S, MEI_ME_PCH15_SPS_CFG)},
 
 	{MEI_PCI_DEVICE(MEI_DEV_ID_MTL_M, MEI_ME_PCH15_CFG)},
 	{MEI_PCI_DEVICE(MEI_DEV_ID_ARL_S, MEI_ME_PCH15_CFG)},
drivers/net/dsa/mt7530.c +27 -11
index 88f081672f6f..53ead0989777 100644
@@ -1948,14 +1948,16 @@ mt7530_port_vlan_del(struct dsa_switch *ds, int port,
 
 static int mt753x_mirror_port_get(unsigned int id, u32 val)
 {
-	return (id == ID_MT7531) ? MT7531_MIRROR_PORT_GET(val) :
-				   MIRROR_PORT(val);
+	return (id == ID_MT7531 || id == ID_MT7988) ?
+		       MT7531_MIRROR_PORT_GET(val) :
+		       MIRROR_PORT(val);
 }
 
 static int mt753x_mirror_port_set(unsigned int id, u32 val)
 {
-	return (id == ID_MT7531) ? MT7531_MIRROR_PORT_SET(val) :
-				   MIRROR_PORT(val);
+	return (id == ID_MT7531 || id == ID_MT7988) ?
+		       MT7531_MIRROR_PORT_SET(val) :
+		       MIRROR_PORT(val);
 }
 
 static int mt753x_port_mirror_add(struct dsa_switch *ds, int port,
@@ -2470,8 +2472,6 @@ mt7530_setup(struct dsa_switch *ds)
 		     SYS_CTRL_PHY_RST | SYS_CTRL_SW_RST |
 		     SYS_CTRL_REG_RST);
 
-	mt7530_pll_setup(priv);
-
 	/* Lower Tx driving for TRGMII path */
 	for (i = 0; i < NUM_TRGMII_CTRL; i++)
 		mt7530_write(priv, MT7530_TRGMII_TD_ODT(i),
@@ -2489,6 +2489,9 @@ mt7530_setup(struct dsa_switch *ds)
 
 	priv->p6_interface = PHY_INTERFACE_MODE_NA;
 
+	if ((val & HWTRAP_XTAL_MASK) == HWTRAP_XTAL_40MHZ)
+		mt7530_pll_setup(priv);
+
 	mt753x_trap_frames(priv);
 
 	/* Enable and reset MIB counters */
@@ -2518,6 +2521,9 @@ mt7530_setup(struct dsa_switch *ds)
 			   PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
 	}
 
+	/* Allow mirroring frames received on the local port (monitor port). */
+	mt7530_set(priv, MT753X_AGC, LOCAL_EN);
+
 	/* Setup VLAN ID 0 for VLAN-unaware bridges */
 	ret = mt7530_setup_vlan0(priv);
 	if (ret)
@@ -2626,6 +2632,9 @@ mt7531_setup_common(struct dsa_switch *ds)
 			   PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
 	}
 
+	/* Allow mirroring frames received on the local port (monitor port). */
+	mt7530_set(priv, MT753X_AGC, LOCAL_EN);
+
 	/* Flush the FDB table */
 	ret = mt7530_fdb_cmd(priv, MT7530_FDB_FLUSH, NULL);
 	if (ret < 0)
@@ -2704,18 +2713,25 @@ mt7531_setup(struct dsa_switch *ds)
 	priv->p5_interface = PHY_INTERFACE_MODE_NA;
 	priv->p6_interface = PHY_INTERFACE_MODE_NA;
 
-	/* Enable PHY core PLL, since phy_device has not yet been created
-	 * provided for phy_[read,write]_mmd_indirect is called, we provide
-	 * our own mt7531_ind_mmd_phy_[read,write] to complete this
-	 * function.
+	/* Enable Energy-Efficient Ethernet (EEE) and PHY core PLL, since
+	 * phy_device has not yet been created provided for
+	 * phy_[read,write]_mmd_indirect is called, we provide our own
+	 * mt7531_ind_mmd_phy_[read,write] to complete this function.
 	 */
 	val = mt7531_ind_c45_phy_read(priv, MT753X_CTRL_PHY_ADDR,
 				      MDIO_MMD_VEND2, CORE_PLL_GROUP4);
-	val |= MT7531_PHY_PLL_BYPASS_MODE;
+	val |= MT7531_RG_SYSPLL_DMY2 | MT7531_PHY_PLL_BYPASS_MODE;
 	val &= ~MT7531_PHY_PLL_OFF;
 	mt7531_ind_c45_phy_write(priv, MT753X_CTRL_PHY_ADDR, MDIO_MMD_VEND2,
 				 CORE_PLL_GROUP4, val);
 
+	/* Disable EEE advertisement on the switch PHYs. */
+	for (i = MT753X_CTRL_PHY_ADDR;
+	     i < MT753X_CTRL_PHY_ADDR + MT7530_NUM_PHYS; i++) {
+		mt7531_ind_c45_phy_write(priv, i, MDIO_MMD_AN, MDIO_AN_EEE_ADV,
+					 0);
+	}
+
 	mt7531_setup_common(ds);
 
 	/* Setup VLAN ID 0 for VLAN-unaware bridges */
drivers/net/dsa/mt7530.h +5 -0
index ddefeb69afda..0ad52d3cbfeb 100644
@@ -32,6 +32,10 @@ enum mt753x_id {
 #define SYSC_REG_RSTCTRL		0x34
 #define  RESET_MCM			BIT(2)
 
+/* Register for ARL global control */
+#define MT753X_AGC			0xc
+#define  LOCAL_EN			BIT(7)
+
 /* Registers to mac forward control for unknown frames */
 #define MT7530_MFC			0x10
 #define  BC_FFP(x)			(((x) & 0xff) << 24)
@@ -630,6 +634,7 @@ enum mt7531_clk_skew {
 #define  RG_SYSPLL_DDSFBK_EN		BIT(12)
 #define  RG_SYSPLL_BIAS_EN		BIT(11)
 #define  RG_SYSPLL_BIAS_LPF_EN		BIT(10)
+#define  MT7531_RG_SYSPLL_DMY2		BIT(6)
 #define  MT7531_PHY_PLL_OFF		BIT(5)
 #define  MT7531_PHY_PLL_BYPASS_MODE	BIT(4)
 
drivers/net/ethernet/intel/ice/ice_tc_lib.c +13 -2
index dd03cb69ad26..76ad5930c010 100644
@@ -28,6 +28,8 @@ ice_tc_count_lkups(u32 flags, struct ice_tc_flower_lyr_2_4_hdrs *headers,
 	 * - ICE_TC_FLWR_FIELD_VLAN_TPID (present if specified)
 	 * - Tunnel flag (present if tunnel)
 	 */
+	if (fltr->direction == ICE_ESWITCH_FLTR_EGRESS)
+		lkups_cnt++;
 
 	if (flags & ICE_TC_FLWR_FIELD_TENANT_ID)
 		lkups_cnt++;
@@ -363,6 +365,11 @@ ice_tc_fill_rules(struct ice_hw *hw, u32 flags,
 	/* Always add direction metadata */
 	ice_rule_add_direction_metadata(&list[ICE_TC_METADATA_LKUP_IDX]);
 
+	if (tc_fltr->direction == ICE_ESWITCH_FLTR_EGRESS) {
+		ice_rule_add_src_vsi_metadata(&list[i]);
+		i++;
+	}
+
 	rule_info->tun_type = ice_sw_type_from_tunnel(tc_fltr->tunnel_type);
 	if (tc_fltr->tunnel_type != TNL_LAST) {
 		i = ice_tc_fill_tunnel_outer(flags, tc_fltr, list, i);
@@ -731,7 +738,7 @@ ice_eswitch_add_tc_fltr(struct ice_vsi *vsi, struct ice_tc_flower_fltr *fltr)
 	int ret;
 	int i;
 
-	if (!flags || (flags & ICE_TC_FLWR_FIELD_ENC_SRC_L4_PORT)) {
+	if (flags & ICE_TC_FLWR_FIELD_ENC_SRC_L4_PORT) {
 		NL_SET_ERR_MSG_MOD(fltr->extack, "Unsupported encap field(s)");
 		return -EOPNOTSUPP;
 	}
@@ -779,6 +786,7 @@ ice_eswitch_add_tc_fltr(struct ice_vsi *vsi, struct ice_tc_flower_fltr *fltr)
 
 	/* specify the cookie as filter_rule_id */
 	rule_info.fltr_rule_id = fltr->cookie;
+	rule_info.src_vsi = vsi->idx;
 
 	ret = ice_add_adv_rule(hw, list, lkups_cnt, &rule_info, &rule_added);
 	if (ret == -EEXIST) {
@@ -1440,7 +1448,10 @@ ice_parse_cls_flower(struct net_device *filter_dev, struct ice_vsi *vsi,
 		  (BIT_ULL(FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS) |
 		   BIT_ULL(FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS) |
 		   BIT_ULL(FLOW_DISSECTOR_KEY_ENC_KEYID) |
-		   BIT_ULL(FLOW_DISSECTOR_KEY_ENC_PORTS))) {
+		   BIT_ULL(FLOW_DISSECTOR_KEY_ENC_PORTS) |
+		   BIT_ULL(FLOW_DISSECTOR_KEY_ENC_IP) |
+		   BIT_ULL(FLOW_DISSECTOR_KEY_ENC_OPTS) |
+		   BIT_ULL(FLOW_DISSECTOR_KEY_ENC_CONTROL))) {
 		NL_SET_ERR_MSG_MOD(fltr->extack, "Tunnel key used, but device isn't a tunnel");
 		return -EOPNOTSUPP;
 	} else {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c +5 -2
index 423ce54eaea6..46bdbee9d38a 100644
@@ -588,6 +588,7 @@ static int otx2_tc_prepare_flow(struct otx2_nic *nic, struct otx2_tc_flow *node,
 
 	if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
 		struct flow_match_control match;
+		u32 val;
 
 		flow_rule_match_control(rule, &match);
 		if (match.mask->flags & FLOW_DIS_FIRST_FRAG) {
@@ -596,12 +597,14 @@ static int otx2_tc_prepare_flow(struct otx2_nic *nic, struct otx2_tc_flow *node,
 		}
 
 		if (match.mask->flags & FLOW_DIS_IS_FRAGMENT) {
+			val = match.key->flags & FLOW_DIS_IS_FRAGMENT;
 			if (ntohs(flow_spec->etype) == ETH_P_IP) {
-				flow_spec->ip_flag = IPV4_FLAG_MORE;
+				flow_spec->ip_flag = val ? IPV4_FLAG_MORE : 0;
 				flow_mask->ip_flag = IPV4_FLAG_MORE;
 				req->features |= BIT_ULL(NPC_IPFRAG_IPV4);
 			} else if (ntohs(flow_spec->etype) == ETH_P_IPV6) {
-				flow_spec->next_header = IPPROTO_FRAGMENT;
+				flow_spec->next_header = val ?
+							 IPPROTO_FRAGMENT : 0;
 				flow_mask->next_header = 0xff;
 				req->features |= BIT_ULL(NPC_IPFRAG_IPV6);
 			} else {
drivers/net/ethernet/mediatek/mtk_wed.c +1 -5
index 94376aa2b34c..c7196055c8c9 100644
@@ -598,13 +598,13 @@ mtk_wed_dma_disable(struct mtk_wed_device *dev)
 static void
 mtk_wed_stop(struct mtk_wed_device *dev)
 {
+	mtk_wed_dma_disable(dev);
 	mtk_wed_set_ext_int(dev, false);
 
 	wed_w32(dev, MTK_WED_WPDMA_INT_TRIGGER, 0);
 	wed_w32(dev, MTK_WED_WDMA_INT_TRIGGER, 0);
 	wdma_w32(dev, MTK_WDMA_INT_MASK, 0);
 	wdma_w32(dev, MTK_WDMA_INT_GRP2, 0);
-	wed_w32(dev, MTK_WED_WPDMA_INT_MASK, 0);
 
 	if (dev->hw->version == 1)
 		return;
@@ -617,7 +617,6 @@ static void
 mtk_wed_deinit(struct mtk_wed_device *dev)
 {
 	mtk_wed_stop(dev);
-	mtk_wed_dma_disable(dev);
 
 	wed_clr(dev, MTK_WED_CTRL,
 		MTK_WED_CTRL_WDMA_INT_AGENT_EN |
@@ -1703,9 +1702,6 @@ mtk_wed_irq_get(struct mtk_wed_device *dev, u32 mask)
 static void
 mtk_wed_irq_set_mask(struct mtk_wed_device *dev, u32 mask)
 {
-	if (!dev->running)
-		return;
-
 	mtk_wed_set_ext_int(dev, !!mask);
 	wed_w32(dev, MTK_WED_INT_MASK, mask);
 }
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c +16 -11
index e66f486faafe..415fec7763bd 100644
@@ -45,6 +45,10 @@ struct arfs_table {
 	struct hlist_head	 rules_hash[ARFS_HASH_SIZE];
 };
 
+enum {
+	MLX5E_ARFS_STATE_ENABLED,
+};
+
 enum arfs_type {
 	ARFS_IPV4_TCP,
 	ARFS_IPV6_TCP,
@@ -59,6 +63,7 @@ struct mlx5e_arfs_tables {
 	spinlock_t                     arfs_lock;
 	int                            last_filter_id;
 	struct workqueue_struct        *wq;
+	unsigned long                  state;
 };
 
 struct arfs_tuple {
@@ -169,6 +174,8 @@ int mlx5e_arfs_enable(struct mlx5e_flow_steering *fs)
 			return err;
 		}
 	}
+	set_bit(MLX5E_ARFS_STATE_ENABLED, &arfs->state);
+
 	return 0;
 }
 
@@ -454,6 +461,8 @@ static void arfs_del_rules(struct mlx5e_flow_steering *fs)
 	int i;
 	int j;
 
+	clear_bit(MLX5E_ARFS_STATE_ENABLED, &arfs->state);
+
 	spin_lock_bh(&arfs->arfs_lock);
 	mlx5e_for_each_arfs_rule(rule, htmp, arfs->arfs_tables, i, j) {
 		hlist_del_init(&rule->hlist);
@@ -626,17 +635,8 @@ static void arfs_handle_work(struct work_struct *work)
 	struct mlx5_flow_handle *rule;
 
 	arfs = mlx5e_fs_get_arfs(priv->fs);
-	mutex_lock(&priv->state_lock);
-	if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) {
-		spin_lock_bh(&arfs->arfs_lock);
-		hlist_del(&arfs_rule->hlist);
-		spin_unlock_bh(&arfs->arfs_lock);
-
-		mutex_unlock(&priv->state_lock);
-		kfree(arfs_rule);
-		goto out;
-	}
-	mutex_unlock(&priv->state_lock);
+	if (!test_bit(MLX5E_ARFS_STATE_ENABLED, &arfs->state))
+		return;
 
 	if (!arfs_rule->rule) {
 		rule = arfs_add_rule(priv, arfs_rule);
@@ -752,6 +752,11 @@ int mlx5e_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb,
 		return -EPROTONOSUPPORT;
 
 	spin_lock_bh(&arfs->arfs_lock);
+	if (!test_bit(MLX5E_ARFS_STATE_ENABLED, &arfs->state)) {
+		spin_unlock_bh(&arfs->arfs_lock);
+		return -EPERM;
+	}
+
 	arfs_rule = arfs_find_rule(arfs_t, &fk);
 	if (arfs_rule) {
 		if (arfs_rule->rxq == rxq_index || work_busy(&arfs_rule->arfs_work)) {
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +3 -6
index 3047d7015c52..1789800faaeb 100644
@@ -1868,6 +1868,7 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev)
 	if (err)
 		goto abort;
 
+	dev->priv.eswitch = esw;
 	err = esw_offloads_init(esw);
 	if (err)
 		goto reps_err;
@@ -1892,11 +1893,6 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev)
 		esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_BASIC;
 	else
 		esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_NONE;
-	if (MLX5_ESWITCH_MANAGER(dev) &&
-	    mlx5_esw_vport_match_metadata_supported(esw))
-		esw->flags |= MLX5_ESWITCH_VPORT_MATCH_METADATA;
-
-	dev->priv.eswitch = esw;
 	BLOCKING_INIT_NOTIFIER_HEAD(&esw->n_head);
 
 	esw_info(dev,
@@ -1908,6 +1904,7 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev)
 
 reps_err:
 	mlx5_esw_vports_cleanup(esw);
+	dev->priv.eswitch = NULL;
 abort:
 	if (esw->work_queue)
 		destroy_workqueue(esw->work_queue);
@@ -1926,7 +1923,6 @@ void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw)
 
 	esw_info(esw->dev, "cleanup\n");
 
-	esw->dev->priv.eswitch = NULL;
 	destroy_workqueue(esw->work_queue);
 	WARN_ON(refcount_read(&esw->qos.refcnt));
 	mutex_destroy(&esw->state_lock);
@@ -1937,6 +1933,7 @@ void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw)
 	mutex_destroy(&esw->offloads.encap_tbl_lock);
 	mutex_destroy(&esw->offloads.decap_tbl_lock);
 	esw_offloads_cleanup(esw);
+	esw->dev->priv.eswitch = NULL;
 	mlx5_esw_vports_cleanup(esw);
 	debugfs_remove_recursive(esw->debugfs_root);
 	devl_params_unregister(priv_to_devlink(esw->dev), mlx5_eswitch_params,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +4 -0
index baaae628b0a0..e3cce110e52f 100644
@@ -2476,6 +2476,10 @@ int esw_offloads_init(struct mlx5_eswitch *esw)
 	if (err)
 		return err;
 
+	if (MLX5_ESWITCH_MANAGER(esw->dev) &&
+	    mlx5_esw_vport_match_metadata_supported(esw))
+		esw->flags |= MLX5_ESWITCH_VPORT_MATCH_METADATA;
+
 	err = devl_params_register(priv_to_devlink(esw->dev),
 				   esw_devlink_params,
 				   ARRAY_SIZE(esw_devlink_params));
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +3 -1
index af3fac090b82..e51cac1e1811 100644
@@ -703,8 +703,10 @@ int mlx5_deactivate_lag(struct mlx5_lag *ldev)
 		return err;
 	}
 
-	if (test_bit(MLX5_LAG_MODE_FLAG_HASH_BASED, &flags))
+	if (test_bit(MLX5_LAG_MODE_FLAG_HASH_BASED, &flags)) {
 		mlx5_lag_port_sel_destroy(ldev);
+		ldev->buckets = 1;
+	}
 	if (mlx5_lag_has_drop_rule(ldev))
 		mlx5_lag_drop_rule_cleanup(ldev);
 
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c +40 -21

75 lines not on this page · raw message

drivers/net/ethernet/stmicro/stmmac/common.h +1 -0
index b0dd8adce356..4dbc076f72d6 100644
@@ -550,6 +550,7 @@ extern const struct stmmac_hwtimestamp stmmac_ptp;
 extern const struct stmmac_mode_ops dwmac4_ring_mode_ops;
 
 struct mac_link {
+	u32 caps;
 	u32 speed_mask;
 	u32 speed10;
 	u32 speed100;
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +2 -0
index 51f121f86745..63998d65fef8 100644
@@ -1096,6 +1096,8 @@ static struct mac_device_info *sun8i_dwmac_setup(void *ppriv)
 
 	priv->dev->priv_flags |= IFF_UNICAST_FLT;
 
+	mac->link.caps = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
+			 MAC_10 | MAC_100 | MAC_1000;
 	/* The loopback bit seems to be re-set when link change
 	 * Simply mask it each time
 	 * Speed 10/100/1000 are set in BIT(2)/BIT(3)
drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c +2 -0
index 3927609abc44..8555299443f4 100644
@@ -539,6 +539,8 @@ int dwmac1000_setup(struct stmmac_priv *priv)
 	if (mac->multicast_filter_bins)
 		mac->mcast_bits_log2 = ilog2(mac->multicast_filter_bins);
 
+	mac->link.caps = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
+			 MAC_10 | MAC_100 | MAC_1000;
 	mac->link.duplex = GMAC_CONTROL_DM;
 	mac->link.speed10 = GMAC_CONTROL_PS;
 	mac->link.speed100 = GMAC_CONTROL_PS | GMAC_CONTROL_FES;
drivers/net/ethernet/stmicro/stmmac/dwmac100_core.c +2 -0
index a6e8d7bd9588..7667d103cd0e 100644
@@ -175,6 +175,8 @@ int dwmac100_setup(struct stmmac_priv *priv)
 	dev_info(priv->device, "\tDWMAC100\n");
 
 	mac->pcsr = priv->ioaddr;
+	mac->link.caps = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
+			 MAC_10 | MAC_100;
 	mac->link.duplex = MAC_CONTROL_F;
 	mac->link.speed10 = 0;
 	mac->link.speed100 = 0;
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +6 -1
index 683c34e60963..4ead0ddf43a7 100644
@@ -70,7 +70,10 @@ static void dwmac4_core_init(struct mac_device_info *hw,
 
 static void dwmac4_phylink_get_caps(struct stmmac_priv *priv)
 {
-	priv->phylink_config.mac_capabilities |= MAC_2500FD;
+	if (priv->plat->tx_queues_to_use > 1)
+		priv->hw->link.caps &= ~(MAC_10HD | MAC_100HD | MAC_1000HD);
+	else
+		priv->hw->link.caps |= (MAC_10HD | MAC_100HD | MAC_1000HD);
 }
 
 static void dwmac4_rx_queue_enable(struct mac_device_info *hw,
@@ -1347,6 +1350,8 @@ int dwmac4_setup(struct stmmac_priv *priv)
 	if (mac->multicast_filter_bins)
 		mac->mcast_bits_log2 = ilog2(mac->multicast_filter_bins);
 
+	mac->link.caps = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
+			 MAC_10 | MAC_100 | MAC_1000 | MAC_2500FD;
 	mac->link.duplex = GMAC_CONFIG_DM;
 	mac->link.speed10 = GMAC_CONFIG_PS;
 	mac->link.speed100 = GMAC_CONFIG_FES | GMAC_CONFIG_PS;
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +8 -10
index 24c53b7255a2..8bc317d2f7a6 100644
@@ -47,14 +47,6 @@ static void dwxgmac2_core_init(struct mac_device_info *hw,
 	writel(XGMAC_INT_DEFAULT_EN, ioaddr + XGMAC_INT_EN);
 }
 
-static void xgmac_phylink_get_caps(struct stmmac_priv *priv)
-{
-	priv->phylink_config.mac_capabilities |= MAC_2500FD | MAC_5000FD |
-						 MAC_10000FD | MAC_25000FD |
-						 MAC_40000FD | MAC_50000FD |
-						 MAC_100000FD;
-}
-
 static void dwxgmac2_set_mac(void __iomem *ioaddr, bool enable)
 {
 	u32 tx = readl(ioaddr + XGMAC_TX_CONFIG);
@@ -1591,7 +1583,6 @@ static void dwxgmac3_fpe_configure(void __iomem *ioaddr, struct stmmac_fpe_cfg *
 
 const struct stmmac_ops dwxgmac210_ops = {
 	.core_init = dwxgmac2_core_init,
-	.phylink_get_caps = xgmac_phylink_get_caps,
 	.set_mac = dwxgmac2_set_mac,
 	.rx_ipc = dwxgmac2_rx_ipc,
 	.rx_queue_enable = dwxgmac2_rx_queue_enable,
@@ -1653,7 +1644,6 @@ static void dwxlgmac2_rx_queue_enable(struct mac_device_info *hw, u8 mode,
 
 const struct stmmac_ops dwxlgmac2_ops = {
 	.core_init = dwxgmac2_core_init,
-	.phylink_get_caps = xgmac_phylink_get_caps,
 	.set_mac = dwxgmac2_set_mac,
 	.rx_ipc = dwxgmac2_rx_ipc,
 	.rx_queue_enable = dwxlgmac2_rx_queue_enable,
@@ -1714,6 +1704,9 @@ int dwxgmac2_setup(struct stmmac_priv *priv)
 	if (mac->multicast_filter_bins)
 		mac->mcast_bits_log2 = ilog2(mac->multicast_filter_bins);
 
+	mac->link.caps = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
+			 MAC_1000FD | MAC_2500FD | MAC_5000FD |
+			 MAC_10000FD;
 	mac->link.duplex = 0;
 	mac->link.speed10 = XGMAC_CONFIG_SS_10_MII;
 	mac->link.speed100 = XGMAC_CONFIG_SS_100_MII;
@@ -1751,6 +1744,11 @@ int dwxlgmac2_setup(struct stmmac_priv *priv)
 	if (mac->multicast_filter_bins)
 		mac->mcast_bits_log2 = ilog2(mac->multicast_filter_bins);
 
+	mac->link.caps = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
+			 MAC_1000FD | MAC_2500FD | MAC_5000FD |
+			 MAC_10000FD | MAC_25000FD |
+			 MAC_40000FD | MAC_50000FD |
+			 MAC_100000FD;
 	mac->link.duplex = 0;
 	mac->link.speed1000 = XLGMAC_CONFIG_SS_1000;
 	mac->link.speed2500 = XLGMAC_CONFIG_SS_2500;
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +11 -18
index d1adb102a1d4..19c58ad8df34 100644
@@ -1198,17 +1198,6 @@ static int stmmac_init_phy(struct net_device *dev)
 	return ret;
 }
 
-static void stmmac_set_half_duplex(struct stmmac_priv *priv)
-{
-	/* Half-Duplex can only work with single tx queue */
-	if (priv->plat->tx_queues_to_use > 1)
-		priv->phylink_config.mac_capabilities &=
-			~(MAC_10HD | MAC_100HD | MAC_1000HD);
-	else
-		priv->phylink_config.mac_capabilities |=
-			(MAC_10HD | MAC_100HD | MAC_1000HD);
-}
-
 static int stmmac_phy_setup(struct stmmac_priv *priv)
 {
 	struct stmmac_mdio_bus_data *mdio_bus_data;
@@ -1236,15 +1225,11 @@ static int stmmac_phy_setup(struct stmmac_priv *priv)
 		xpcs_get_interfaces(priv->hw->xpcs,
 				    priv->phylink_config.supported_interfaces);
 
-	priv->phylink_config.mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
-						MAC_10FD | MAC_100FD |
-						MAC_1000FD;
-
-	stmmac_set_half_duplex(priv);
-
 	/* Get the MAC specific capabilities */
 	stmmac_mac_phylink_get_caps(priv);
 
+	priv->phylink_config.mac_capabilities = priv->hw->link.caps;
+
 	max_speed = priv->plat->max_speed;
 	if (max_speed)
 		phylink_limit_mac_speed(&priv->phylink_config, max_speed);
@@ -7184,6 +7169,7 @@ int stmmac_reinit_queues(struct net_device *dev, u32 rx_cnt, u32 tx_cnt)
 {
 	struct stmmac_priv *priv = netdev_priv(dev);
 	int ret = 0, i;
+	int max_speed;
 
 	if (netif_running(dev))
 		stmmac_release(dev);
@@ -7197,7 +7183,14 @@ int stmmac_reinit_queues(struct net_device *dev, u32 rx_cnt, u32 tx_cnt)
 			priv->rss.table[i] = ethtool_rxfh_indir_default(i,
 									rx_cnt);
 
-	stmmac_set_half_duplex(priv);
+	stmmac_mac_phylink_get_caps(priv);
+
+	priv->phylink_config.mac_capabilities = priv->hw->link.caps;
+
+	max_speed = priv->plat->max_speed;
+	if (max_speed)
+		phylink_limit_mac_speed(&priv->phylink_config, max_speed);
+
 	stmmac_napi_add(dev);
 
 	if (netif_running(dev))
drivers/net/ethernet/ti/am65-cpsw-nuss.c +18 -0
index c62b0f99f2bc..d556e705ec00 100644
@@ -2716,6 +2716,8 @@ static void am65_cpsw_unregister_devlink(struct am65_cpsw_common *common)
 
 static int am65_cpsw_nuss_register_ndevs(struct am65_cpsw_common *common)
 {
+	struct am65_cpsw_rx_chn *rx_chan = &common->rx_chns;
+	struct am65_cpsw_tx_chn *tx_chan = common->tx_chns;
 	struct device *dev = common->dev;
 	struct am65_cpsw_port *port;
 	int ret = 0, i;
@@ -2728,6 +2730,22 @@ static int am65_cpsw_nuss_register_ndevs(struct am65_cpsw_common *common)
 	if (ret)
 		return ret;
 
+	/* The DMA Channels are not guaranteed to be in a clean state.
+	 * Reset and disable them to ensure that they are back to the
+	 * clean state and ready to be used.
+	 */
+	for (i = 0; i < common->tx_ch_num; i++) {
+		k3_udma_glue_reset_tx_chn(tx_chan[i].tx_chn, &tx_chan[i],
+					  am65_cpsw_nuss_tx_cleanup);
+		k3_udma_glue_disable_tx_chn(tx_chan[i].tx_chn);
+	}
+
+	for (i = 0; i < AM65_CPSW_MAX_RX_FLOWS; i++)
+		k3_udma_glue_reset_rx_chn(rx_chan->rx_chn, i, rx_chan,
+					  am65_cpsw_nuss_rx_cleanup, !!i);
+
+	k3_udma_glue_disable_rx_chn(rx_chan->rx_chn);
+
 	ret = am65_cpsw_nuss_register_devlink(common);
 	if (ret)
 		return ret;
drivers/net/tun.c +10 -8
index 8f95a562b8d0..86515f0c2b6c 100644
@@ -2132,14 +2132,16 @@ static ssize_t tun_put_user(struct tun_struct *tun,
 					    tun_is_little_endian(tun), true,
 					    vlan_hlen)) {
 			struct skb_shared_info *sinfo = skb_shinfo(skb);
-			pr_err("unexpected GSO type: "
-			       "0x%x, gso_size %d, hdr_len %d\n",
-			       sinfo->gso_type, tun16_to_cpu(tun, gso.gso_size),
-			       tun16_to_cpu(tun, gso.hdr_len));
-			print_hex_dump(KERN_ERR, "tun: ",
-				       DUMP_PREFIX_NONE,
-				       16, 1, skb->head,
-				       min((int)tun16_to_cpu(tun, gso.hdr_len), 64), true);
+
+			if (net_ratelimit()) {
+				netdev_err(tun->dev, "unexpected GSO type: 0x%x, gso_size %d, hdr_len %d\n",
+					   sinfo->gso_type, tun16_to_cpu(tun, gso.gso_size),
+					   tun16_to_cpu(tun, gso.hdr_len));
+				print_hex_dump(KERN_ERR, "tun: ",
+					       DUMP_PREFIX_NONE,
+					       16, 1, skb->head,
+					       min((int)tun16_to_cpu(tun, gso.hdr_len), 64), true);
+			}
 			WARN_ON_ONCE(1);
 			return -EINVAL;
 		}
drivers/net/usb/ax88179_178a.c +2 -2
index e0e9b4c53cb0..3078511f7608 100644
@@ -1317,6 +1317,8 @@ static int ax88179_bind(struct usbnet *dev, struct usb_interface *intf)
 
 	netif_set_tso_max_size(dev->net, 16384);
 
+	ax88179_reset(dev);
+
 	return 0;
 }
 
@@ -1695,7 +1697,6 @@ static const struct driver_info ax88179_info = {
 	.unbind = ax88179_unbind,
 	.status = ax88179_status,
 	.link_reset = ax88179_link_reset,
-	.reset = ax88179_reset,
 	.stop = ax88179_stop,
 	.flags = FLAG_ETHER | FLAG_FRAMING_AX,
 	.rx_fixup = ax88179_rx_fixup,
@@ -1708,7 +1709,6 @@ static const struct driver_info ax88178a_info = {
 	.unbind = ax88179_unbind,
 	.status = ax88179_status,
 	.link_reset = ax88179_link_reset,
-	.reset = ax88179_reset,
 	.stop = ax88179_stop,
 	.flags = FLAG_ETHER | FLAG_FRAMING_AX,
 	.rx_fixup = ax88179_rx_fixup,
drivers/net/virtio_net.c +21 -4
index 7cb0548d17a3..56cbe00126bb 100644
@@ -3570,19 +3570,34 @@ static int virtnet_get_rxfh(struct net_device *dev, u32 *indir, u8 *key, u8 *hfu
 static int virtnet_set_rxfh(struct net_device *dev, const u32 *indir, const u8 *key, const u8 hfunc)
 {
 	struct virtnet_info *vi = netdev_priv(dev);
+	bool update = false;
 	int i;
 
 	if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_TOP)
 		return -EOPNOTSUPP;
 
 	if (indir) {
+		if (!vi->has_rss)
+			return -EOPNOTSUPP;
+
 		for (i = 0; i < vi->rss_indir_table_size; ++i)
 			vi->ctrl->rss.indirection_table[i] = indir[i];
+		update = true;
 	}
-	if (key)
+	if (key) {
+		/* If either _F_HASH_REPORT or _F_RSS are negotiated, the
+		 * device provides hash calculation capabilities, that is,
+		 * hash_key is configured.
+		 */
+		if (!vi->has_rss && !vi->has_rss_hash_report)
+			return -EOPNOTSUPP;
+
 		memcpy(vi->ctrl->rss.key, key, vi->rss_key_size);
+		update = true;
+	}
 
-	virtnet_commit_rss_command(vi);
+	if (update)
+		virtnet_commit_rss_command(vi);
 
 	return 0;
 }
@@ -4491,13 +4506,15 @@ static int virtnet_probe(struct virtio_device *vdev)
 	if (virtio_has_feature(vdev, VIRTIO_NET_F_HASH_REPORT))
 		vi->has_rss_hash_report = true;
 
-	if (virtio_has_feature(vdev, VIRTIO_NET_F_RSS))
+	if (virtio_has_feature(vdev, VIRTIO_NET_F_RSS)) {
 		vi->has_rss = true;
 
-	if (vi->has_rss || vi->has_rss_hash_report) {
 		vi->rss_indir_table_size =
 			virtio_cread16(vdev, offsetof(struct virtio_net_config,
 				rss_max_indirection_table_length));
+	}
+
+	if (vi->has_rss || vi->has_rss_hash_report) {
 		vi->rss_key_size =
 			virtio_cread8(vdev, offsetof(struct virtio_net_config, rss_max_key_size));
 
drivers/pci/bus.c +32 -17

62 lines not on this page · raw message

drivers/pci/pci.c +52 -26

78 lines not on this page · raw message

drivers/pci/pci.h +2 -2
index 1b4f94182972..2cc032e8cbb9 100644

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

drivers/pci/pcie/aspm.c +13 -8
index 7e3b342215e5..0aef6dc055b9 100644

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

drivers/pci/pcie/dpc.c +3 -2
index b4818007788f..a5cec2a4e057 100644

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

drivers/pci/quirks.c +4 -4
index b3976dcb71f1..ec4277d7835b 100644

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

drivers/platform/x86/amd/pmc/pmc-quirks.c +9 -0
index b456370166b6..b4f49720c87f 100644

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

drivers/s390/cio/device.c +8 -5
index 4ca5adce9107..57e0050dbaa5 100644

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

drivers/s390/cio/qdio_main.c +23 -5
index 9cde55730b65..ebcb53580988 100644

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

drivers/s390/net/ism_drv.c +28 -9
index 81aabbfbbe2c..622a61f8a3b8 100644

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

drivers/scsi/scsi_lib.c +3 -4
index 552809bca350..97def2619ecf 100644

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

drivers/thunderbolt/domain.c +3 -2
index ec7b5f65804e..31f3da4e6a08 100644

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

drivers/thunderbolt/icm.c +1 -1
index d8b9c734abd3..623aa81a8833 100644

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

drivers/thunderbolt/lc.c +45 -0

45 lines not on this page · raw message

drivers/thunderbolt/nhi.c +13 -6
index 4b7bec74e89f..1ec6f9c82aef 100644

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

drivers/thunderbolt/path.c +13 -0
index ee03fd75a472..17f7647e6a72 100644

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

drivers/thunderbolt/switch.c +155 -23

178 lines not on this page · raw message

drivers/thunderbolt/tb.c +27 -11
index ecfb5714e822..c5e10c1d4c38 100644

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

drivers/thunderbolt/tb.h +7 -3
index 4893d2c7ac96..8a75aabb9ce8 100644

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

drivers/thunderbolt/tb_regs.h +6 -0
index 580277dc9115..736e28beac11 100644

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

drivers/thunderbolt/usb4.c +46 -6

52 lines not on this page · raw message

drivers/tty/serial/mxs-auart.c +6 -2
index 380a8b0590e3..777dc8a0aa83 100644

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

drivers/tty/serial/pmac_zilog.c +0 -14
index 13668ffdb1e7..29bc80d39e8b 100644

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

drivers/tty/serial/serial_base.h +4 -0
index c74c548f0db6..b6c38d2edfd4 100644

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

drivers/tty/serial/serial_core.c +18 -3
index 4c81210ad9b3..2eceef54e0b3 100644

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

drivers/tty/serial/serial_port.c +34 -0
index 0b3cef3c323b..d622a9297f65 100644

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

drivers/tty/serial/stm32-usart.c +11 -2
index e5f933beb6c0..9ef90bb30a47 100644

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

drivers/ufs/host/ufs-qcom.c +7 -1
index 0cbe14aca877..797219db026b 100644

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

drivers/usb/class/cdc-wdm.c +1 -5
index c8262e2f2917..c553decb5461 100644

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

drivers/usb/core/hub.c +13 -2
index 9a3da5d7fe1b..7417972202b8 100644

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

drivers/usb/core/port.c +3 -1
index 10f2b1e499b8..76e00bfedc25 100644

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

drivers/usb/core/quirks.c +7 -0
index 15e9bd180a1d..b4783574b8e6 100644

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

drivers/usb/dwc2/hcd_ddma.c +3 -1
index 79582b102c7e..994a78ad084b 100644

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

drivers/usb/gadget/function/f_ncm.c +2 -2
index f3456b8bf415..f5731d465cd7 100644

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

drivers/usb/host/xhci-mem.c +2 -0
index 0a37f0d511cf..b1e3fa54c639 100644

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

drivers/usb/host/xhci-ring.c +6 -5
index 3ec1a2617ed7..c959d9144baa 100644

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

drivers/usb/host/xhci.c +16 -7
index c4c733d724bd..573b5784d1c3 100644

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

drivers/usb/host/xhci.h +7 -2
index 31088602c070..be480d6ac858 100644

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

drivers/usb/serial/option.c +40 -0
index 55a65d941ccb..8a5846d4adf6 100644

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

fs/ceph/addr.c +12 -10
index f4863078f7fe..da64bb7325db 100644

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

fs/ceph/cache.c +1 -1
index de1dee46d3df..930fbd54d2c8 100644

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

fs/ceph/caps.c +28 -25

53 lines not on this page · raw message

fs/ceph/crypto.c +1 -1
index 5b5112c78462..08c385610731 100644

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

fs/ceph/debugfs.c +2 -2
index 3904333fa6c3..2f1e7498cd74 100644

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

fs/ceph/dir.c +12 -12
index 854cbdd66661..1395b71df5cc 100644

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

fs/ceph/export.c +5 -5
index 8559990a59a5..52c4daf2447d 100644

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

fs/ceph/file.c +13 -13
index bdd0a3b894b7..1e0497295662 100644

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

fs/ceph/inode.c +7 -7
index b79100f720b3..db6977c15c28 100644

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

fs/ceph/ioctl.c +4 -4
index 91a84917d203..3f617146e4ad 100644

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

fs/ceph/mds_client.c +23 -18

41 lines not on this page · raw message

fs/ceph/mds_client.h +2 -1
index 5a3714bdd64a..d930eb79dc38 100644

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

fs/ceph/mdsmap.c +2 -1
index 3bb3b610d403..66afb18df76b 100644

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

fs/ceph/snap.c +11 -7
index 813f21add992..d0d3612f28f0 100644

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

fs/ceph/super.c +11 -11
index 2d7f5a8d4a92..52af90beab00 100644

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

fs/ceph/super.h +7 -6
index 51c7f2b14f6f..8efd4ba60774 100644

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

fs/ceph/xattr.c +6 -6
index 0deae4a0f5f1..558f64554b59 100644

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

fs/fuse/dir.c +1 -0
index a8a7fc0e1754..c1703d2c4bf9 100644

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

fs/nilfs2/dir.c +1 -1
index bce734b68f08..929edc0b101a 100644

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

fs/smb/client/cifs_debug.c +4 -2
index 6c85edb8635d..c53d516459fc 100644

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

fs/smb/client/cifsglob.h +1 -2
index a878b1e5aa31..68fd61a56408 100644

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

fs/smb/client/cifsproto.h +10 -10
index ed257612bf0b..1bdad33580b5 100644

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

fs/smb/client/connect.c +63 -68

131 lines not on this page · raw message

fs/smb/client/dfs.c +24 -27

51 lines not on this page · raw message

fs/smb/client/dfs.h +21 -12
index 875ab7ae57fc..e5c4dcf83750 100644

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

fs/smb/client/dfs_cache.c +24 -29

53 lines not on this page · raw message

fs/smb/client/misc.c +1 -6
index ef573e3f8e52..74627d647818 100644

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

fs/smb/common/smb2pdu.h +1 -1
index 63f969a8e44d..22c94dea5211 100644

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

fs/smb/server/server.c +5 -8
index 3079e607c5fe..2bbc3c3316f0 100644

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

fs/smb/server/smb2pdu.c +4 -0
index 924f08326eef..fb9eea631069 100644

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

fs/smb/server/vfs.c +5 -0
index a8936aba7710..626406b0cf4a 100644

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

fs/sysfs/file.c +2 -0
index a12ac0356c69..f21e73d10724 100644

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

include/asm-generic/barrier.h +8 -0
index 961f4d88f9ef..1985c22d90ca 100644

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

include/linux/bootconfig.h +6 -1
index ca73940e26df..4195444ec45d 100644

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

include/linux/ceph/mdsmap.h +4 -1
index fcc95bff72a5..1f2171dd01bf 100644

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

include/linux/gpio/property.h +0 -1
index 6c75c8bd44a0..1a14e239221f 100644

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

include/linux/pci.h +5 -0
index b548d5646a86..ee89a69817aa 100644

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

include/linux/shmem_fs.h +9 -0
index fa99e68e5e77..134c686c8676 100644

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

include/linux/swapops.h +33 -32

65 lines not on this page · raw message

include/linux/udp.h +1 -1
index 94e63b269540..00790bb5cbde 100644

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

include/linux/usb/hcd.h +3 -2
index 61d4f0b793dc..d0e19ac3ba6c 100644

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

include/linux/usb/quirks.h +3 -0
index eeb7c2157c72..59409c1fc3de 100644

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

include/net/netfilter/nf_flow_table.h +11 -1
index 4a767b3d20b9..df7775afb92b 100644

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

include/trace/events/rpcgss.h +2 -2
index ba2d96a1bc2f..f50fcafc69de 100644

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

include/uapi/linux/pci_regs.h +1 -0
index e5f558d96493..ade8dabf6210 100644

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

init/main.c +2 -0
index 9e6ab6d593bd..b25c779e93ac 100644

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

io_uring/io_uring.c +13 -13
index 62ff7cee5db5..a5628d29b9b1 100644

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

kernel/sched/sched.h +14 -6
index 04846272409c..35c38daa2d3e 100644

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

lib/bootconfig.c +11 -8
index c59d26068a64..8841554432d5 100644

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

mm/hugetlb.c +7 -3
index 5e6c4d367d33..a17950160395 100644

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

mm/memory-failure.c +15 -3
index 455093f73a70..5378edad9df8 100644

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

mm/shmem.c +0 -6
index 80c2666114b3..f2023cb7f6f6 100644

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

net/bridge/br_input.c +11 -4
index c729528b5e85..e09000e38d07 100644

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

net/bridge/br_netfilter_hooks.c +6 -0
index 6ef67030b4db..d848c84ed030 100644

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

net/bridge/br_private.h +1 -0
index 82e63908dce8..e4f1a08322da 100644

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

net/bridge/netfilter/nf_conntrack_bridge.c +10 -4
index d32fce70d797..6ef04f9fe481 100644

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

net/netfilter/nf_flow_table_inet.c +2 -1
index 9505f9d188ff..6eef15648b7b 100644

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

net/netfilter/nf_flow_table_ip.c +6 -4
index e45fade76409..5383bed3d3e0 100644

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

net/netfilter/nf_tables_api.c +12 -4
index 2a4649df8f08..387eee416b0b 100644

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

net/netfilter/nft_set_pipapo.c +9 -5
index a890aa0abad5..69b02a3f1ff0 100644

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

net/unix/af_unix.c +6 -6
index 918724844231..6eab35a5e2f3 100644

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

sound/core/seq/seq_ump_convert.c +1 -1
index b141024830ec..ee6ac649df83 100644

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

sound/pci/hda/patch_realtek.c +3 -0
index 6841de9d423e..057c207237cc 100644

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

sound/pci/hda/tas2781_hda_i2c.c +2 -2
index 618830822358..a3dec624132d 100644

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

sound/soc/ti/omap3pandora.c +23 -40

63 lines not on this page · raw message

sound/usb/Makefile +1 -1
index db5ff76d0e61..8c657c2753c8 100644

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

sound/usb/mixer_quirks.c +7 -2
index 1f32e3ae3aa3..c8d48566e175 100644

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

sound/usb/mixer_scarlett2.c new file +4391 -0

4,391 lines not on this page · raw message

sound/usb/mixer_scarlett2.h new file +7 -0
new file mode 100644
index 000000000000..d209362cf41a

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

sound/usb/mixer_scarlett_gen2.c deleted +0 -4274

4,274 lines not on this page · raw message

sound/usb/mixer_scarlett_gen2.h deleted +0 -7
deleted file mode 100644
index 668c6b0cb50a..000000000000

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

tools/perf/util/bpf_skel/lock_contention.bpf.c +4 -1
index 8d3cfbb3cc65..473106c72c69 100644

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

tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc +3 -3
index b1ede6249866..b7c8f29c09a9 100644

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

tools/testing/selftests/kselftest.h +18 -0
index 529d29a35900..e8eecbc83a60 100644

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

tools/testing/selftests/net/udpgso.c +1 -1
index 7badaf215de2..b02080d09fbc 100644

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

tools/testing/selftests/timers/posix_timers.c +74 -82

156 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.