Skip to contentSkip to conversation

Linux 6.6.87

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Apr 10, 2025 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.6.87 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/devicetree/bindings/vendor-prefixes.yaml         |    2 
 Makefile                                                       |    2 
 arch/arm64/kernel/compat_alignment.c                           |    2 
 arch/loongarch/Kconfig                                         |    4 
 arch/loongarch/include/asm/cache.h                             |    2 
 arch/loongarch/kernel/kgdb.c                                   |    5 
 arch/loongarch/net/bpf_jit.c                                   |   12 
 arch/loongarch/net/bpf_jit.h                                   |    5 
 arch/powerpc/configs/mpc885_ads_defconfig                      |    2 
 arch/powerpc/platforms/cell/spufs/gang.c                       |    1 
 arch/powerpc/platforms/cell/spufs/inode.c                      |   63 ++-
 arch/powerpc/platforms/cell/spufs/spufs.h                      |    2 
 arch/riscv/errata/Makefile                                     |    6 
 arch/riscv/include/asm/ftrace.h                                |    4 
 arch/riscv/kvm/vcpu_pmu.c                                      |    1 
 arch/riscv/mm/hugetlbpage.c                                    |   76 ++-
 arch/um/include/shared/os.h                                    |    1 
 arch/um/kernel/Makefile                                        |    2 
 arch/um/kernel/maccess.c                                       |   19 
 arch/um/os-Linux/process.c                                     |   51 --
 arch/x86/Kconfig                                               |    2 
 arch/x86/entry/calling.h                                       |    2 
 arch/x86/events/intel/core.c                                   |   43 +-
 arch/x86/events/intel/ds.c                                     |   13 
 arch/x86/events/perf_event.h                                   |    3 
 arch/x86/hyperv/hv_vtl.c                                       |    1 
 arch/x86/hyperv/ivm.c                                          |    5 
 arch/x86/include/asm/tlbflush.h                                |    2 
 arch/x86/kernel/cpu/microcode/amd.c                            |    2 
 arch/x86/kernel/cpu/sgx/driver.c                               |   10 
 arch/x86/kernel/dumpstack.c                                    |    5 
 arch/x86/kernel/fpu/core.c                                     |    6 
 arch/x86/kernel/process.c                                      |    7 
 arch/x86/kernel/traps.c                                        |   18 
 arch/x86/kernel/tsc.c                                          |    4 
 arch/x86/lib/copy_user_64.S                                    |   18 
 arch/x86/mm/mem_encrypt_identity.c                             |    4 
 arch/x86/mm/pat/cpa-test.c                                     |    2 
 arch/x86/mm/pat/memtype.c                                      |   52 +-
 drivers/acpi/nfit/core.c                                       |    2 
 drivers/acpi/processor_idle.c                                  |    4 
 drivers/acpi/resource.c                                        |    7 
 drivers/acpi/x86/utils.c                                       |    3 
 drivers/base/power/main.c                                      |   21 -
 drivers/base/power/runtime.c                                   |    2 
 drivers/clk/imx/clk-imx8mp-audiomix.c                          |    6 
 drivers/clk/meson/g12a.c                                       |   38 +
 drivers/clk/meson/gxbb.c                                       |   14 
 drivers/clk/qcom/gcc-msm8953.c                                 |    2 
 drivers/clk/qcom/mmcc-sdm660.c                                 |    2 
 drivers/clk/rockchip/clk-rk3328.c                              |    2 
 drivers/clk/samsung/clk.c                                      |    2 
 drivers/cpufreq/cpufreq_governor.c                             |   45 +-
 drivers/cpufreq/scpi-cpufreq.c                                 |    5 
 drivers/crypto/hisilicon/sec2/sec.h                            |    1 
 drivers/crypto/hisilicon/sec2/sec_crypto.c                     |  125 ++----
 drivers/crypto/nx/nx-common-pseries.c                          |   37 -
 drivers/dma/fsl-edma-main.c                                    |    2 
 drivers/edac/i10nm_base.c                                      |    2 
 drivers/edac/ie31200_edac.c                                    |   19 
 drivers/edac/skx_common.c                                      |   33 +
 drivers/edac/skx_common.h                                      |   11 
 drivers/firmware/cirrus/cs_dsp.c                               |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c                        |   11 
 drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c                         |    2 
 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c          |   15 
 drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c         |   16 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c              |    5 
 drivers/gpu/drm/amd/display/dc/core/dc_link_exports.c          |    3 
 drivers/gpu/drm/amd/display/dc/dce/dmub_hw_lock_mgr.c          |    4 
 drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c |   12 
 drivers/gpu/drm/bridge/ite-it6505.c                            |    7 
 drivers/gpu/drm/bridge/ti-sn65dsi86.c                          |    2 
 drivers/gpu/drm/display/drm_dp_mst_topology.c                  |    8 
 drivers/gpu/drm/mediatek/mtk_dp.c                              |    6 
 drivers/gpu/drm/mediatek/mtk_dsi.c                             |    6 
 drivers/gpu/drm/mediatek/mtk_hdmi.c                            |   33 +
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c                       |    4 
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c                    |    3 
 drivers/gpu/drm/msm/dsi/dsi_host.c                             |    8 
 drivers/gpu/drm/msm/dsi/dsi_manager.c                          |   32 +
 drivers/gpu/drm/msm/msm_dsc_helper.h                           |   11 
 drivers/gpu/drm/vkms/vkms_drv.c                                |   15 
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c                            |    2 
 drivers/hid/Makefile                                           |    1 
 drivers/hid/i2c-hid/i2c-hid-core.c                             |    2 
 drivers/hwmon/nct6775-core.c                                   |    4 
 drivers/hwtracing/coresight/coresight-catu.c                   |    2 
 drivers/hwtracing/coresight/coresight-core.c                   |   20 
 drivers/hwtracing/coresight/coresight-etm4x-core.c             |   48 ++
 drivers/i3c/master/svc-i3c-master.c                            |    2 
 drivers/iio/accel/mma8452.c                                    |   10 
 drivers/iio/accel/msa311.c                                     |   26 -
 drivers/iio/adc/ad4130.c                                       |   41 +-
 drivers/iio/adc/ad7124.c                                       |   35 +
 drivers/infiniband/core/device.c                               |    9 
 drivers/infiniband/core/mad.c                                  |   38 -
 drivers/infiniband/core/sysfs.c                                |    1 
 drivers/infiniband/hw/erdma/erdma_cm.c                         |    1 
 drivers/infiniband/hw/mana/main.c                              |    2 
 drivers/infiniband/hw/mlx5/cq.c                                |    2 
 drivers/infiniband/hw/mlx5/odp.c                               |   10 
 drivers/leds/led-core.c                                        |   22 -
 drivers/media/dvb-frontends/dib8000.c                          |    5 
 drivers/media/platform/allegro-dvt/allegro-core.c              |    1 
 drivers/media/platform/verisilicon/hantro_g2_hevc_dec.c        |    1 
 drivers/media/rc/streamzap.c                                   |    2 
 drivers/memory/omap-gpmc.c                                     |   20 
 drivers/mfd/sm501.c                                            |    6 
 drivers/mmc/host/omap.c                                        |   19 
 drivers/mmc/host/sdhci-omap.c                                  |    4 
 drivers/mmc/host/sdhci-pxav3.c                                 |    1 
 drivers/net/arcnet/com20020-pci.c                              |   17 
 drivers/net/dsa/mv88e6xxx/chip.c                               |   11 
 drivers/net/dsa/mv88e6xxx/phy.c                                |    3 
 drivers/net/ethernet/ibm/ibmveth.c                             |   39 +
 drivers/net/ethernet/intel/e1000e/defines.h                    |    3 
 drivers/net/ethernet/intel/e1000e/ich8lan.c                    |   80 +++
 drivers/net/ethernet/intel/e1000e/ich8lan.h                    |    4 
 drivers/net/ethernet/marvell/mvpp2/mvpp2.h                     |    3 
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c                |    3 
 drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c                 |  201 ++++++----
 drivers/net/ethernet/marvell/octeontx2/af/rvu.c                |    2 
 drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c        |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en/params.c            |    8 
 drivers/net/usb/rndis_host.c                                   |   16 
 drivers/net/usb/usbnet.c                                       |    6 
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c      |   20 
 drivers/net/wireless/intel/iwlwifi/fw/dbg.c                    |   86 ++--
 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c                  |    8 
 drivers/ntb/hw/intel/ntb_hw_gen3.c                             |    3 
 drivers/ntb/hw/mscc/ntb_hw_switchtec.c                         |    2 
 drivers/ntb/test/ntb_perf.c                                    |    4 
 drivers/nvme/host/pci.c                                        |   34 +
 drivers/nvme/host/tcp.c                                        |    5 
 drivers/pci/controller/cadence/pcie-cadence-ep.c               |    3 
 drivers/pci/controller/cadence/pcie-cadence.h                  |    2 
 drivers/pci/controller/dwc/pcie-histb.c                        |   12 
 drivers/pci/controller/pcie-brcmstb.c                          |    9 
 drivers/pci/controller/pcie-xilinx-cpm.c                       |   10 
 drivers/pci/hotplug/pciehp_hpc.c                               |    4 
 drivers/pci/pci.c                                              |    4 
 drivers/pci/pcie/aspm.c                                        |   17 
 drivers/pci/pcie/portdrv.c                                     |    8 
 drivers/pci/probe.c                                            |    5 
 drivers/pci/setup-bus.c                                        |    3 
 drivers/pinctrl/intel/pinctrl-intel.c                          |    1 
 drivers/pinctrl/renesas/pinctrl-rza2.c                         |    2 
 drivers/pinctrl/renesas/pinctrl-rzg2l.c                        |    2 
 drivers/pinctrl/renesas/pinctrl-rzv2m.c                        |    2 
 drivers/pinctrl/tegra/pinctrl-tegra.c                          |    3 
 drivers/platform/x86/dell/dell-wmi-ddv.c                       |    6 
 drivers/platform/x86/intel/hid.c                               |    7 
 drivers/platform/x86/intel/speed_select_if/isst_if_common.c    |    2 
 drivers/platform/x86/intel/vsec.c                              |    7 
 drivers/power/supply/max77693_charger.c                        |    2 
 drivers/remoteproc/qcom_q6v5_mss.c                             |   21 -
 drivers/remoteproc/qcom_q6v5_pas.c                             |   12 
 drivers/remoteproc/remoteproc_core.c                           |    1 
 drivers/scsi/qla2xxx/qla_os.c                                  |    2 
 drivers/soundwire/slave.c                                      |    1 
 drivers/staging/rtl8723bs/Kconfig                              |    1 
 drivers/thermal/intel/int340x_thermal/int3402_thermal.c        |    3 
 drivers/tty/n_tty.c                                            |   13 
 drivers/usb/host/xhci-mem.c                                    |    6 
 drivers/usb/typec/ucsi/ucsi_ccg.c                              |    5 
 drivers/vhost/scsi.c                                           |   25 -
 drivers/video/console/Kconfig                                  |    2 
 drivers/video/fbdev/au1100fb.c                                 |    4 
 drivers/video/fbdev/sm501fb.c                                  |    7 
 fs/affs/file.c                                                 |    9 
 fs/btrfs/extent-tree.c                                         |    5 
 fs/exec.c                                                      |   15 
 fs/exfat/fatent.c                                              |    2 
 fs/ext4/dir.c                                                  |    3 
 fs/ext4/super.c                                                |   27 -
 fs/fuse/dax.c                                                  |    1 
 fs/fuse/dir.c                                                  |    2 
 fs/fuse/file.c                                                 |    4 
 fs/hostfs/hostfs.h                                             |    2 
 fs/hostfs/hostfs_kern.c                                        |    7 
 fs/hostfs/hostfs_user.c                                        |   59 +-
 fs/isofs/dir.c                                                 |    3 
 fs/jfs/jfs_dtree.c                                             |    3 
 fs/jfs/xattr.c                                                 |   15 
 fs/nfs/delegation.c                                            |   33 -
 fs/nfs/sysfs.c                                                 |   22 +
 fs/nfsd/nfs4state.c                                            |   31 +
 fs/ntfs3/index.c                                               |    4 
 fs/ntfs3/ntfs.h                                                |    2 
 fs/ocfs2/alloc.c                                               |    8 
 fs/proc/base.c                                                 |    2 
 fs/smb/client/cifsacl.c                                        |    8 
 fs/smb/client/connect.c                                        |   16 
 fs/smb/server/auth.c                                           |    6 
 fs/smb/server/mgmt/user_session.c                              |   33 +
 fs/smb/server/mgmt/user_session.h                              |    2 
 fs/smb/server/oplock.c                                         |   12 
 fs/smb/server/smb2pdu.c                                        |   40 +
 fs/smb/server/smbacl.c                                         |    5 
 include/drm/display/drm_dp_mst_helper.h                        |    7 
 include/linux/context_tracking_irq.h                           |    8 
 include/linux/coresight.h                                      |    4 
 include/linux/fwnode.h                                         |    2 
 include/linux/interrupt.h                                      |    8 
 include/linux/pgtable.h                                        |   28 +
 include/linux/pm_runtime.h                                     |    2 
 include/linux/rcupdate.h                                       |    2 
 include/linux/sched/smt.h                                      |    2 
 include/linux/trace.h                                          |    4 
 include/linux/trace_events.h                                   |   14 
 include/rdma/ib_verbs.h                                        |    1 
 kernel/events/core.c                                           |   46 +-
 kernel/events/ring_buffer.c                                    |    2 
 kernel/events/uprobes.c                                        |   13 
 kernel/fork.c                                                  |    4 
 kernel/kexec_elf.c                                             |    2 
 kernel/locking/semaphore.c                                     |   13 
 kernel/sched/deadline.c                                        |    2 
 kernel/trace/bpf_trace.c                                       |    2 
 kernel/trace/ring_buffer.c                                     |    4 
 kernel/trace/trace.c                                           |   23 -
 kernel/trace/trace.h                                           |    1 
 kernel/trace/trace_boot.c                                      |    2 
 kernel/trace/trace_events.c                                    |   62 ++-
 kernel/trace/trace_events_hist.c                               |  133 +++++-
 kernel/trace/trace_events_synth.c                              |   36 +
 kernel/trace/trace_functions_graph.c                           |    1 
 kernel/trace/trace_irqsoff.c                                   |    2 
 kernel/trace/trace_osnoise.c                                   |    1 
 kernel/trace/trace_sched_wakeup.c                              |    2 
 kernel/watch_queue.c                                           |    9 
 lib/842/842_compress.c                                         |    2 
 lib/overflow_kunit.c                                           |    3 
 mm/memory.c                                                    |   13 
 net/can/af_can.c                                               |   12 
 net/can/af_can.h                                               |   12 
 net/can/proc.c                                                 |   46 +-
 net/core/dst.c                                                 |    8 
 net/core/rtnetlink.c                                           |    3 
 net/ipv4/ip_tunnel_core.c                                      |    4 
 net/ipv4/udp.c                                                 |   16 
 net/ipv6/addrconf.c                                            |   37 +
 net/ipv6/calipso.c                                             |   21 -
 net/ipv6/route.c                                               |   42 +-
 net/mac80211/sta_info.c                                        |   20 
 net/netfilter/nf_tables_api.c                                  |    4 
 net/netfilter/nft_set_hash.c                                   |    3 
 net/netfilter/nft_tunnel.c                                     |    6 
 net/openvswitch/actions.c                                      |    6 
 net/sched/act_tunnel_key.c                                     |    2 
 net/sched/cls_flower.c                                         |    2 
 net/sched/sch_skbprio.c                                        |    3 
 net/vmw_vsock/af_vsock.c                                       |    6 
 samples/ftrace/sample-trace-array.c                            |    2 
 scripts/selinux/install_policy.sh                              |   15 
 security/smack/smack.h                                         |    6 
 security/smack/smack_lsm.c                                     |   10 
 sound/pci/hda/patch_realtek.c                                  |   33 +
 sound/soc/codecs/cs35l41-spi.c                                 |    4 
 sound/soc/codecs/rt5665.c                                      |   24 -
 sound/soc/fsl/imx-card.c                                       |    4 
 sound/soc/ti/j721e-evm.c                                       |    2 
 tools/lib/bpf/linker.c                                         |    2 
 tools/objtool/check.c                                          |   35 -
 tools/perf/bench/syscall.c                                     |   22 -
 tools/perf/tests/shell/coresight/asm_pure_loop/asm_pure_loop.S |    2 
 tools/perf/util/arm-spe.c                                      |    8 
 tools/perf/util/evlist.c                                       |   13 
 tools/perf/util/pmu.c                                          |    7 
 tools/perf/util/pmu.h                                          |    5 
 tools/perf/util/pmus.c                                         |   20 
 tools/perf/util/python.c                                       |   17 
 tools/perf/util/stat-shadow.c                                  |    3 
 tools/perf/util/units.c                                        |    2 
 tools/testing/selftests/bpf/prog_tests/bloom_filter_map.c      |    5 
 tools/testing/selftests/bpf/progs/strncmp_bench.c              |    5 
 tools/testing/selftests/mm/cow.c                               |    2 
 278 files changed, 2329 insertions(+), 1175 deletions(-)

Acs, Jakub (1):
ext4: fix OOB read when checking dotdot dir

Al Viro (3):
spufs: fix a leak on spufs_new_file() failure
spufs: fix gang directory lifetimes
spufs: fix a leak in spufs_create_context()

Alex Deucher (1):
drm/amdgpu/gfx11: fix num_mec

Alex Hung (1):

      drm/amd/display: Check link_index before accessing dc->links[]

Alexandre Ghiti (1):
riscv: Fix hugetlb retrieval of number of ptes in case of !present pte

Alistair Popple (1):
fuse: fix dax truncate/punch_hole fault path

Andrii Nakryiko (1):
libbpf: Fix hypothetical STT_SECTION extern NULL deref case

Andy Shevchenko (1):
pinctrl: intel: Fix wrong bypass assignment in intel_pinctrl_probe_pwm()

AngeloGioacchino Del Regno (2):
drm/mediatek: mtk_hdmi: Unregister audio platform device on failure drm/mediatek: mtk_hdmi: Fix typo for aud_sampe_size member

Angelos Oikonomopoulos (1):
arm64: Don't call NULL in do_compat_alignment_fixup()

Anshuman Khandual (1):
arch/powerpc: drop GENERIC_PTDUMP from mpc885_ads_defconfig

Antheas Kapenekakis (1):
ALSA: hda/realtek: Fix Asus Z13 2025 audio

Antoine Tenart (1):
net: decrease cached dst counters in dst_release

Armin Wolf (1):
platform/x86: dell-ddv: Fix temperature calculation

Arnaldo Carvalho de Melo (5):
perf units: Fix insufficient array space
perf python: Fixup description of sample.id event member perf python: Decrement the refcount of just created event on failure perf python: Don't keep a raw_data pointer to consumed ring buffer space perf python: Check if there is space to copy all the event

Arnd Bergmann (2):
x86/platform: Only allow CONFIG_EISA for 32-bit
mdacon: rework dependency list

Artur Weber (1):
power: supply: max77693: Fix wrong conversion of charge input threshold value

Atish Patra (1):
RISC-V: KVM: Disable the kernel perf counter during configure

Barnabás Czémán (1):
clk: qcom: mmcc-sdm660: fix stuck video_subcore0 clock

Bart Van Assche (1):
fs/procfs: fix the comment above proc_pid_wchan()

Benjamin Berg (3):
x86/fpu: Avoid copying dynamic FP state from init_task in arch_dup_task_struct()
um: remove copy_from_kernel_nofault_allowed
um: hostfs: avoid issues on inode number reuse by host

Benjamin Gaignard (1):
media: verisilicon: HEVC: Initialize start_bit field

Boris Ostrovsky (1):
x86/microcode/AMD: Fix __apply_microcode_amd()'s return value

Chao Gao (1):
x86/fpu/xstate: Fix inconsistencies in guest FPU xfeatures

Cheng Xu (1):
RDMA/erdma: Prevent use-after-free in erdma_accept_newconn()

Chenyuan Yang (1):

      thermal: int340x: Add NULL check for adev

Chiara Meiohas (1):
RDMA/mlx5: Fix calculation of total invalidated pages

Christophe JAILLET (2):
PCI: histb: Fix an error handling path in histb_pcie_probe()
ASoC: codecs: rt5665: Fix some error handling paths in rt5665_probe()

Chuck Lever (1):
NFSD: Skip sending CB_RECALL_ANY when the backchannel isn't up

Cong Wang (1):
net_sched: skbprio: Remove overly strict queue assertions

Cyan Yang (1):
selftests/mm/cow: fix the incorrect error handling

Dan Carpenter (4):
PCI: Remove stray put_device() in pci_register_host_bridge() drm/mediatek: dsi: fix error codes in mtk_dsi_host_transfer() fs/ntfs3: Fix a couple integer overflows on 32bit systems fs/ntfs3: Prevent integer overflow in hdr_first_de()

Daniel Bárta (1):
ALSA: hda: Fix speakers on ASUS EXPERTBOOK P5405CSA 1.0

Daniel Stodden (1):
PCI/ASPM: Fix link state exit during switch upstream function removal

Danila Chernetsov (1):
fbdev: sm501fb: Add some geometry checks.

Dave Marquardt (1):
net: ibmveth: make veth_pool_store stop hanging

David E. Box (1):
platform/x86/intel/vsec: Add Diamond Rapids support

David Hildenbrand (2):
x86/mm/pat: Fix VM_PAT handling when fork() fails in copy_page_range() kernel/events/uprobes: handle device-exclusive entries correctly in __replace_page()

David Laight (1):
objtool: Fix verbose disassembly if CROSS_COMPILE isn't set

David Oberhollenzer (1):
net: dsa: mv88e6xxx: propperly shutdown PPU re-enable timer on destroy

Debin Zhu (1):
netlabel: Fix NULL pointer exception caused by CALIPSO on IPv4 sockets

Dmitry Baryshkov (1):
drm/msm/dpu: don't use active in atomic_check()

Dmitry Panchenko (1):
platform/x86: intel-hid: fix volume buttons on Microsoft Surface Go 4 tablet

Douglas Anderson (1):
drm/mediatek: dp: drm_err => dev_err in HPD path to avoid NULL ptr

Douglas Raillard (2):
tracing: Ensure module defining synth event cannot be unloaded while tracing
tracing: Fix synth event printk format for str fields

Emmanuel Grumbach (2):
wifi: iwlwifi: mvm: use the right version of the rate API
wifi: mac80211: flush the station before moving it to UN-AUTHORIZED state

Eric Sandeen (1):
watch_queue: fix pipe accounting mismatch

Fabrizio Castro (3):
pinctrl: renesas: rza2: Fix missing of_node_put() call
pinctrl: renesas: rzg2l: Fix missing of_node_put() call
pinctrl: renesas: rzv2m: Fix missing of_node_put() call

Feng Tang (1):
PCI/portdrv: Only disable pciehp interrupts early when needed

Feng Yang (1):
ring-buffer: Fix bytes_dropped calculation issue

Fernando Fernandez Mancera (1):
ipv6: fix omitted netlink attributes when using RTEXT_FILTER_SKIP_STATS

Florian Westphal (1):
netfilter: nf_tables: don't unregister hook when table is dormant

Geert Uytterhoeven (1):
drm/bridge: ti-sn65dsi86: Fix multiple instances

Geetha sowjanya (2):
octeontx2-af: Fix mbox INTR handler when num VFs > 64
octeontx2-af: Free NIX_AF_INT_VEC_GEN irq

Giovanni Gherdovich (1):
ACPI: processor: idle: Return an error if both P_LVL{2,3} idle states are invalid

Greg Kroah-Hartman (1):

      Linux 6.6.87

Guilherme G. Piccoli (1):
x86/tsc: Always save/restore TSC sched_clock() on suspend/resume

Guillaume Nault (1):
tunnels: Accept PACKET_HOST in skb_tunnel_check_pmtu().

Hans Zhang (1):
PCI: cadence-ep: Fix the driver to send MSG TLP for INTx without data payload

Hans de Goede (1):
ACPI: x86: Extend Lenovo Yoga Tab 3 quirk with skip GPIO event-handlers

Hengqi Chen (3):
LoongArch: BPF: Fix off-by-one error in build_prologue()
LoongArch: BPF: Don't override subprog's return value
LoongArch: BPF: Use move_addr() for BPF_PSEUDO_FUNC

Henry Martin (2):
ASoC: imx-card: Add NULL check in imx_card_probe()
arcnet: Add NULL check in com20020pci_probe()

Herbert Xu (1):
crypto: nx - Fix uninitialised hv_nxc on error

Hermes Wu (1):
drm/bridge: it6505: fix HDCP V match check is not performed correctly

Herton R. Krzesinski (1):
x86/uaccess: Improve performance by aligning writes to 8 bytes in copy_user_generic(), on non-FSRM/ERMS CPUs

Hou Tao (1):
bpf: Use preempt_count() directly in bpf_send_signal_common()

Huacai Chen (1):
LoongArch: Increase ARCH_DMA_MINALIGN up to 16

Ian Rogers (2):
perf stat: Fix find_stat for mixed legacy/non-legacy events perf evlist: Add success path to evlist__create_syswide_maps

Icenowy Zheng (2):
nvme-pci: clean up CMBMSC when registering CMB fails
nvme-pci: skip CMB blocks incompatible with PCI P2P DMA

Ido Schimmel (2):
ipv6: Start path selection from the first nexthop
ipv6: Do not consider link down nexthops in path selection

Ilkka Koskinen (1):
coresight: catu: Fix number of pages while using 64k pages

Ilpo Järvinen (1):
PCI: pciehp: Don't enable HPIE when resuming in poll mode

Ivan Orlov (1):
kunit/overflow: Fix UB in overflow_allocation_test

James Clark (1):
perf pmu: Don't double count common sysfs and json events

Jann Horn (3):
x86/entry: Fix ORC unwinder for PUSH_REGS with save_ret=1
x86/dumpstack: Fix inaccurate unwinding from exception stacks due to misplaced assignment x86/mm: Fix flush_tlb_range() when used for zapping normal PMDs

Jayesh Choudhary (1):
ASoC: ti: j721e-evm: Fix clock configuration for ti,j7200-cpb-audio compatible

Jerome Brunet (4):
clk: amlogic: gxbb: drop incorrect flag on 32k clock
clk: amlogic: g12b: fix cluster A parent data
clk: amlogic: gxbb: drop non existing 32k clock parent
clk: amlogic: g12a: fix mmc A peripheral clock

Jie Zhan (1):
cpufreq: governor: Fix negative 'idle_time' handling in dbs_update()

Jim Quinlan (3):
PCI: brcmstb: Use internal register to change link capability
PCI: brcmstb: Fix error path after a call to regulator_bulk_get()
PCI: brcmstb: Fix potential premature regulator disabling

Jiri Kosina (1):
HID: remove superfluous (and wrong) Makefile entry for CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER

Jiri Slaby (SUSE) (1):
tty: n_tty: use uint for space returned by tty_write_room()

Joe Hattori (2):
media: platform: allgro-dvt: unregister v4l2_device on the error path
soundwire: slave: fix an OF node reference leak in soundwire slave device

Johannes Berg (1):
wifi: iwlwifi: fw: allocate chained SG tables for dump

Jonathan Cameron (2):
iio: accel: mma8452: Ensure error return on failure to matching oversampling ratio
iio: accel: msa311: Fix failure to release runtime pm if direct mode claim fails.

Josef Bacik (1):
btrfs: handle errors from btrfs_dec_ref() properly

Josh Poimboeuf (6):
x86/traps: Make exc_double_fault() consistently noreturn objtool, media: dib8000: Prevent divide-by-zero in dib8000_set_dds()
objtool: Fix segfault in ignore_unreachable_insn() sched/smt: Always inline sched_smt_active()
context_tracking: Always inline ct_{nmi,irq}_{enter,exit}()
rcu-tasks: Always inline rcu_irq_work_resched()

José Expósito (1):
drm/vkms: Fix use after free and double free on init error

Juhan Jin (1):
riscv: ftrace: Add parentheses in macro definitions of make_call_t0 and make_call_ra

Kai-Heng Feng (1):
PCI: Use downstream bridges for distributing resources

Kan Liang (1):

      perf/x86/intel: Avoid disable PMU if !cpuc->enabled in sample read

Karel Balej (1):
mmc: sdhci-pxav3: set NEED_RSP_BUSY capability

Kees Bakker (1):
RDMA/mana_ib: Ensure variable err is initialized

Keith Busch (1):
nvme-pci: fix stuck reset on concurrent DPC and HP

Kevin Loughlin (1):
x86/sev: Add missing RIP_REL_REF() invocations during sme_enable()

Konstantin Andreev (1):
smack: dont compile ipv6 code unless ipv6 is configured

Kuniyuki Iwashima (1):
udp: Fix memory accounting leak.

Lama Kayal (1):
net/mlx5e: SHAMPO, Make reserved size independent of page size

Laurentiu Mihalcea (1):
clk: clk-imx8mp-audiomix: fix dsp/ocram_a clock parents

Leo Yan (1):
perf arm-spe: Fix load-store operation checking

Li Lingfeng (1):
nfsd: put dl_stid if fail to queue dl_recall

Lin Ma (2):
netfilter: nft_tunnel: fix geneve_opt type confusion addition
net: fix geneve_opt length integer overflow

Lubomir Rintel (1):
rndis_host: Flag RNDIS modems as WWAN devices

Luca Weiss (3):
remoteproc: qcom_q6v5_pas: Make single-PD handling more robust
remoteproc: qcom_q6v5_pas: Use resource with CX PD for MSM8226
remoteproc: qcom_q6v5_mss: Handle platforms with one power domain

Maher Sanalla (1):
IB/mad: Check available slots before posting receive WRs

Marcus Meissner (1):
perf tools: annotate asm_pure_loop.S

Marijn Suijten (2):
drm/msm/dsi: Use existing per-interface slice count in DSC timing drm/msm/dsi: Set PHY usescase (and mode) before registering DSI host

Mario Limonciello (2):
ucsi_ccg: Don't show failed to get FW build information error drm/amd: Keep display off while going into S4

Mark Zhang (1):
rtnetlink: Allocate vfinfo size for VF GUIDs when supported

Markus Elfring (2):
fbdev: au1100fb: Move a variable assignment behind a null pointer check
ntb_perf: Delete duplicate dmaengine_unmap_put() call in perf_copy_chunk()

Masami Hiramatsu (Google) (2):
tracing/hist: Add poll(POLLIN) support on hist file tracing/hist: Support POLLPRI event for poll on histogram

Matthias Proske (1):
wifi: brcmfmac: keep power during suspend if board requires it

Maud Spierings (1):
dt-bindings: vendor-prefixes: add GOcontroll

Miaoqian Lin (2):
ksmbd: use aead_request_free to match aead_request_alloc
mmc: omap: Fix memory leak in mmc_omap_new_slot

Michael Kelley (1):
x86/hyperv: Fix output argument to hypercall that changes page visibility

Mike Christie (1):
vhost-scsi: Fix handling of multiple calls to vhost_scsi_set_endpoint

Mike Rapoport (Microsoft) (1):
x86/mm/pat: cpa-test: fix length for CPA_ARRAY test

Murad Masimov (2):
acpi: nfit: fix narrowing conversion in acpi_nfit_ctl
media: streamzap: fix race between device disconnection and urb callback

Naman Jain (1):
x86/hyperv/vtl: Stop kernel from probing VTL0 low memory

Namjae Jeon (6):
ksmbd: fix multichannel connection failure
ksmbd: fix r_count dec/increment mismatch
cifs: fix incorrect validation for num_aces field of smb_acl
ksmbd: add bounds check for durable handle context
ksmbd: fix use-after-free in ksmbd_sessions_deregister()
ksmbd: fix session use-after-free in multichannel connection

Navon John Lukose (1):
ALSA: hda/realtek: Add mute LED quirk for HP Pavilion x360 14-dy1xxx

Nikita Shubin (1):
ntb: intel: Fix using link status DB's

Nikita Zhandarovich (1):
mfd: sm501: Switch to BIT() to mitigate integer overflows

Niklas Neronin (1):
usb: xhci: correct debug message page size calculation

Nishanth Aravamudan (1):
PCI: Avoid reset when disabled via sysfs

Norbert Szetei (2):
ksmbd: add bounds check for create lease context
ksmbd: validate zero num_subauth before sub_auth is accessed

Oleg Nesterov (1):

      exec: fix the racy usage of fs_struct->in_exec

Oliver Hartkopp (1):
can: statistics: use atomic access in hot path

Pablo Neira Ayuso (1):
netfilter: nft_set_hash: GC reaps elements with conncount for dynamic sets only

Palmer Dabbelt (1):
RISC-V: errata: Use medany for relocatable builds

Patrisious Haddad (1):
RDMA/mlx5: Fix mlx5_poll_one() cur_qp update flow

Paul Menzel (1):
ACPI: resource: Skip IRQ override on ASUS Vivobook 14 X1404VAP

Peng Fan (2):
remoteproc: core: Clear table_sz when rproc_shutdown
dmaengine: fsl-edma: cleanup chan after dma_async_device_unregister

Peter Geis (1):
clk: rockchip: rk3328: fix wrong clk_ref_usb3otg parent

Peter Zijlstra (2):
lockdep/mm: Fix might_fault() lockdep check of current->mm->mmap_lock perf/core: Fix perf_pmu_register() vs. perf_init_event()

Peter Zijlstra (Intel) (1):
perf/x86/intel: Apply static call for drain_pebs

Prathamesh Shete (1):
pinctrl: tegra: Set SFIO mode to Mux Register

Qasim Ijaz (2):
isofs: fix KMSAN uninit-value bug in do_isofs_readdir()
jfs: fix slab-out-of-bounds read in ea_get()

Qiuxu Zhuo (4):
EDAC/{skx_common,i10nm}: Fix some missing error reports on Emerald Rapids EDAC/ie31200: Fix the size of EDAC_MC_LAYER_CHIP_SELECT layer EDAC/ie31200: Fix the DIMM size mask for several SoCs EDAC/ie31200: Fix the error path order of ie31200_init()

Rafael J. Wysocki (2):
PM: sleep: Adjust check before setting power.must_resume
PM: sleep: Fix handling devices with direct_complete set on errors

Ran Xiaokai (1):
tracing/osnoise: Fix possible recursive locking for cpus_read_lock()

Remi Pommarel (1):
leds: Fix LED_OFF brightness race

Richard Fitzgerald (1):
firmware: cs_dsp: Ensure cs_dsp_load[_coeff]() returns 0 on success

Roger Quadros (1):
memory: omap-gpmc: drop no compatible check

Roman Gushchin (1):
RDMA/core: Don't expose hw_counters outside of init net namespace

Roman Smirnov (1):
jfs: add index corruption check to DT_GETPAGE()

Sagi Grimberg (1):
nvme-tcp: fix possible UAF in nvme_tcp_poll

Saket Kumar Bhaskar (1):
selftests/bpf: Select NUMA_NO_NODE to create map

Sebastian Andrzej Siewior (1):
lockdep: Don't disable interrupts on RT in disable_irq_nosync_lockdep.*()

Shrikanth Hegde (1):
sched/deadline: Use online cpus for validating runtime

Simon Tatham (2):
affs: generate OFS sequence numbers starting at 1
affs: don't write overlarge OFS data block size fields

Sourabh Jain (1):
kexec: initialize ELF lowest address to ULONG_MAX

Srinivas Pandruvada (1):
platform/x86: ISST: Correct command storage data length

Srinivasan Shanmugam (1):
drm/amdkfd: Fix Circular Locking Dependency in 'svm_range_cpu_invalidate_pagetables'

Stanislav Spassov (1):
x86/fpu: Fix guest FPU state buffer allocation size

Stanley Chu (1):
i3c: master: svc: Fix missing the IBI rules

Stefan Binding (2):
ALSA: hda/realtek: Add support for ASUS ROG Strix G614 Laptops using CS35L41 HDA
ALSA: hda/realtek: Add support for ASUS Zenbook UM3406KA Laptops using CS35L41 HDA

Stefano Garzarella (1):
vsock: avoid timeout during connect() if the socket is closing

Steven Rostedt (2):
tracing: Switch trace_events_hist.c code over to use guard()
tracing: Do not use PERF enums when perf is not defined

Steven Rostedt (Google) (1):
tracing: Allow creating instances with specified system events

Takashi Iwai (2):
ALSA: hda/realtek: Always honor no_shutup_pins
ALSA: hda/realtek: Fix built-in mic breakage on ASUS VivoBook X515JA

Tanya Agarwal (1):
lib: 842: Improve error handling in sw842_compress()

Tao Chen (1):
perf/ring_buffer: Allow the EPOLLRDNORM flag for poll

Tasos Sahanidis (1):

      hwmon: (nct6775-core) Fix out of bounds access for NCT679{8,9}

Tengda Wu (2):
tracing: Correct the refcount if the hist/hist_debug file fails to open
tracing: Fix use-after-free in print_graph_function_flags during tracer switching

Thadeu Lima de Souza Cascardo (1):
drm/amd/display: avoid NPD when ASIC does not support DMUB

Theodore Ts'o (1):
ext4: don't over-report free space or inodes in statvfs

Thippeswamy Havalige (1):
PCI: xilinx-cpm: Fix IRQ domain leak in error path of probe

Thomas Richter (1):
perf bench: Fix perf bench syscall loop count

Tianyu Lan (1):
x86/hyperv: Fix check of return value from snp_set_vmsa()

Tim Schumacher (1):
selinux: Chain up tool resolving errors in install_policy.sh

Tobias Waldekranz (1):
net: mvpp2: Prevent parser TCAM memory corruption

Tomi Valkeinen (1):
drm: xlnx: zynqmp: Fix max dma segment size

Trond Myklebust (2):
NFSv4: Don't trigger uneccessary scans for return-on-close delegations
NFS: Shut down the nfs_client only after all the superblocks

Ulf Hansson (1):
mmc: sdhci-omap: Disable MMC_CAP_AGGRESSIVE_PM for eMMC/SD

Uwe Kleine-König (2):
iio: adc: ad4130: Fix comparison of channel setups
iio: adc: ad7124: Fix comparison of channel configs

Vasiliy Kovalev (1):
ocfs2: validate l_tree_depth to avoid out-of-bounds access

Viktor Malik (1):
selftests/bpf: Fix string read in strncmp benchmark

Vitaliy Shevtsov (2):
ASoC: cs35l41: check the return value from spi_setup() drm/amd/display: fix type mismatch in CalculateDynamicMetadataParameters()

Vitaly Lifshits (1):
e1000e: change k1 configuration on MTP and later platforms

Vladimir Lypak (1):
clk: qcom: gcc-msm8953: fix stuck venus0_core0 clock

Vladis Dronov (1):
x86/sgx: Warn explicitly if X86_FEATURE_SGX_LC is not enabled

Waiman Long (1):
locking/semaphore: Use wake_q to wake up processes outside lock critical section

Wang Zhaolong (1):
smb: client: Fix netns refcount imbalance causing leaks and use-after-free

Wayne Lin (1):
drm/dp_mst: Fix drm RAD print

Wenkai Lin (3):
crypto: hisilicon/sec2 - fix for aead authsize alignment
crypto: hisilicon/sec2 - fix for sec spec check
crypto: hisilicon/sec2 - fix for aead auth key length

Wentao Guan (1):
HID: i2c-hid: improve i2c_hid_get_report error message

Will McVicker (1):
clk: samsung: Fix UBSAN panic in samsung_clk_init()

Yajun Deng (1):
ntb_hw_switchtec: Fix shift-out-of-bounds in switchtec_ntb_mw_set_trans

Yeoreum Yun (1):
perf/core: Fix child_total_time_enabled accounting bug at task exit

Ying Lu (1):
usbnet:fix NPE during rx_complete

Yuanfang Zhang (1):
coresight-etm4x: add isb() before reading the TRCSTATR

Yuezhang Mo (1):
exfat: fix the infinite loop in exfat_find_last_cluster()

Yuli Wang (1):
LoongArch: Rework the arch_kgdb_breakpoint() implementation

Zijun Hu (1):
of: property: Increase NR_FWNODE_REFERENCE_ARGS

zuoqian (1):
cpufreq: scpi: compare kHz instead of Hz

谢致邦 (XIE Zhibang) (2):
staging: rtl8723bs: select CONFIG_CRYPTO_LIB_AES
LoongArch: Fix help text of CMDLINE_EXTEND in Kconfig

author maintainer
#1 lore raw
Documentation/devicetree/bindings/vendor-prefixes.yaml +2 -0
index 12a16031d7b6..dc275ab60e53 100644
@@ -524,6 +524,8 @@ patternProperties:
     description: GlobalTop Technology, Inc.
   "^gmt,.*":
     description: Global Mixed-mode Technology, Inc.
+  "^gocontroll,.*":
+    description: GOcontroll Modular Embedded Electronics B.V.
   "^goldelico,.*":
     description: Golden Delicious Computers GmbH & Co. KG
   "^goodix,.*":
Makefile +1 -1
index 2b22872d3cea..45f6b7d3d51e 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 6
-SUBLEVEL = 86
+SUBLEVEL = 87
 EXTRAVERSION =
 NAME = Pinguïn Aangedreven
 
arch/arm64/kernel/compat_alignment.c +2 -0
index deff21bfa680..b68e1d328d4c 100644
@@ -368,6 +368,8 @@ int do_compat_alignment_fixup(unsigned long addr, struct pt_regs *regs)
 		return 1;
 	}
 
+	if (!handler)
+		return 1;
 	type = handler(addr, instr, regs);
 
 	if (type == TYPE_ERROR || type == TYPE_FAULT)
arch/loongarch/Kconfig +2 -2
index 9fd8644a9a4c..623cf80639de 100644
@@ -356,8 +356,8 @@ config CMDLINE_BOOTLOADER
 config CMDLINE_EXTEND
 	bool "Use built-in to extend bootloader kernel arguments"
 	help
-	  The command-line arguments provided during boot will be
-	  appended to the built-in command line. This is useful in
+	  The built-in command line will be appended to the command-
+	  line arguments provided during boot. This is useful in
 	  cases where the provided arguments are insufficient and
 	  you don't want to or cannot modify them.
 
arch/loongarch/include/asm/cache.h +2 -0
index 1b6d09617199..aa622c754414 100644
@@ -8,6 +8,8 @@
 #define L1_CACHE_SHIFT		CONFIG_L1_CACHE_SHIFT
 #define L1_CACHE_BYTES		(1 << L1_CACHE_SHIFT)
 
+#define ARCH_DMA_MINALIGN	(16)
+
 #define __read_mostly __section(".data..read_mostly")
 
 #endif /* _ASM_CACHE_H */
arch/loongarch/kernel/kgdb.c +3 -2
index 445c452d72a7..7be5b4c0c900 100644
@@ -8,6 +8,7 @@
 #include <linux/hw_breakpoint.h>
 #include <linux/kdebug.h>
 #include <linux/kgdb.h>
+#include <linux/objtool.h>
 #include <linux/processor.h>
 #include <linux/ptrace.h>
 #include <linux/sched.h>
@@ -224,13 +225,13 @@ void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc)
 	regs->csr_era = pc;
 }
 
-void arch_kgdb_breakpoint(void)
+noinline void arch_kgdb_breakpoint(void)
 {
 	__asm__ __volatile__ (			\
 		".globl kgdb_breakinst\n\t"	\
-		"nop\n"				\
 		"kgdb_breakinst:\tbreak 2\n\t"); /* BRK_KDB = 2 */
 }
+STACK_FRAME_NON_STANDARD(arch_kgdb_breakpoint);
 
 /*
  * Calls linux_debug_hook before the kernel dies. If KGDB is enabled,
arch/loongarch/net/bpf_jit.c +10 -2
index 6595e992fda8..dcb1428b458c 100644
@@ -142,6 +142,8 @@ static void build_prologue(struct jit_ctx *ctx)
 	 */
 	if (seen_tail_call(ctx) && seen_call(ctx))
 		move_reg(ctx, TCC_SAVED, REG_TCC);
+	else
+		emit_insn(ctx, nop);
 
 	ctx->stack_size = stack_adjust;
 }
@@ -842,7 +844,10 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, bool ext
 
 		move_addr(ctx, t1, func_addr);
 		emit_insn(ctx, jirl, LOONGARCH_GPR_RA, t1, 0);
-		move_reg(ctx, regmap[BPF_REG_0], LOONGARCH_GPR_A0);
+
+		if (insn->src_reg != BPF_PSEUDO_CALL)
+			move_reg(ctx, regmap[BPF_REG_0], LOONGARCH_GPR_A0);
+
 		break;
 
 	/* tail call */
@@ -867,7 +872,10 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, bool ext
 	{
 		const u64 imm64 = (u64)(insn + 1)->imm << 32 | (u32)insn->imm;
 
-		move_imm(ctx, dst, imm64, is32);
+		if (bpf_pseudo_func(insn))
+			move_addr(ctx, dst, imm64);
+		else
+			move_imm(ctx, dst, imm64, is32);
 		return 1;
 	}
 
arch/loongarch/net/bpf_jit.h +5 -0
index 68586338ecf8..f9c569f53949 100644
@@ -27,6 +27,11 @@ struct jit_data {
 	struct jit_ctx ctx;
 };
 
+static inline void emit_nop(union loongarch_instruction *insn)
+{
+	insn->word = INSN_NOP;
+}
+
 #define emit_insn(ctx, func, ...)						\
 do {										\
 	if (ctx->image != NULL) {						\
arch/powerpc/configs/mpc885_ads_defconfig +1 -1
index 56b876e418e9..6b998cb57255 100644
@@ -78,4 +78,4 @@ CONFIG_DEBUG_VM_PGTABLE=y
 CONFIG_DETECT_HUNG_TASK=y
 CONFIG_BDI_SWITCH=y
 CONFIG_PPC_EARLY_DEBUG=y
-CONFIG_GENERIC_PTDUMP=y
+CONFIG_PTDUMP_DEBUGFS=y
arch/powerpc/platforms/cell/spufs/gang.c +1 -0
index 827d338deaf4..2c2999de6bfa 100644
@@ -25,6 +25,7 @@ struct spu_gang *alloc_spu_gang(void)
 	mutex_init(&gang->aff_mutex);
 	INIT_LIST_HEAD(&gang->list);
 	INIT_LIST_HEAD(&gang->aff_list_head);
+	gang->alive = 1;
 
 out:
 	return gang;
arch/powerpc/platforms/cell/spufs/inode.c +53 -10

133 lines not on this page · raw message

arch/powerpc/platforms/cell/spufs/spufs.h +2 -0
index 84958487f696..d33787c57c39 100644
@@ -151,6 +151,8 @@ struct spu_gang {
 	int aff_flags;
 	struct spu *aff_ref_spu;
 	atomic_t aff_sched_count;
+
+	int alive;
 };
 
 /* Flag bits for spu_gang aff_flags */
arch/riscv/errata/Makefile +5 -1
index 8a2739485123..f96ace8ea1df 100644
@@ -1,5 +1,9 @@
 ifdef CONFIG_RELOCATABLE
-KBUILD_CFLAGS += -fno-pie
+# We can't use PIC/PIE when handling early-boot errata parsing, as the kernel
+# doesn't have a GOT setup at that point.  So instead just use medany: it's
+# usually position-independent, so it should be good enough for the errata
+# handling.
+KBUILD_CFLAGS += -fno-pie -mcmodel=medany
 endif
 
 obj-$(CONFIG_ERRATA_ANDES) += andes/
arch/riscv/include/asm/ftrace.h +2 -2
index 42777f91a9c5..9004dfec8c85 100644
@@ -103,7 +103,7 @@ struct dyn_arch_ftrace {
 #define make_call_t0(caller, callee, call)				\
 do {									\
 	unsigned int offset =						\
-		(unsigned long) callee - (unsigned long) caller;	\
+		(unsigned long) (callee) - (unsigned long) (caller);	\
 	call[0] = to_auipc_t0(offset);					\
 	call[1] = to_jalr_t0(offset);					\
 } while (0)
@@ -119,7 +119,7 @@ do {									\
 #define make_call_ra(caller, callee, call)				\
 do {									\
 	unsigned int offset =						\
-		(unsigned long) callee - (unsigned long) caller;	\
+		(unsigned long) (callee) - (unsigned long) (caller);	\
 	call[0] = to_auipc_ra(offset);					\
 	call[1] = to_jalr_ra(offset);					\
 } while (0)
arch/riscv/kvm/vcpu_pmu.c +1 -0
index cee1b9ca4ec4..e2e2a115afb5 100644
@@ -468,6 +468,7 @@ int kvm_riscv_vcpu_pmu_ctr_cfg_match(struct kvm_vcpu *vcpu, unsigned long ctr_ba
 		.type = etype,
 		.size = sizeof(struct perf_event_attr),
 		.pinned = true,
+		.disabled = true,
 		/*
 		 * It should never reach here if the platform doesn't support the sscofpmf
 		 * extension as mode filtering won't work without it.
arch/riscv/mm/hugetlbpage.c +45 -31

122 lines not on this page · raw message

arch/um/include/shared/os.h +0 -1
index 0df646c6651e..3b382da2996f 100644
@@ -211,7 +211,6 @@ extern int os_protect_memory(void *addr, unsigned long len,
 extern int os_unmap_memory(void *addr, int len);
 extern int os_drop_memory(void *addr, int length);
 extern int can_drop_memory(void);
-extern int os_mincore(void *addr, unsigned long len);
 
 /* execvp.c */
 extern int execvp_noalloc(char *buf, const char *file, char *const argv[]);
arch/um/kernel/Makefile +1 -1
index 811188be954c..321250f3f570 100644
@@ -17,7 +17,7 @@ extra-y := vmlinux.lds
 obj-y = config.o exec.o exitcode.o irq.o ksyms.o mem.o \
 	physmem.o process.o ptrace.o reboot.o sigio.o \
 	signal.o sysrq.o time.o tlb.o trap.o \
-	um_arch.o umid.o maccess.o kmsg_dump.o capflags.o skas/
+	um_arch.o umid.o kmsg_dump.o capflags.o skas/
 obj-y += load_file.o
 
 obj-$(CONFIG_BLK_DEV_INITRD) += initrd.o
arch/um/kernel/maccess.c deleted +0 -19
deleted file mode 100644
index 8ccd56813f68..000000000000
@@ -1,19 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2013 Richard Weinberger <[email protected]>
- */
-
-#include <linux/uaccess.h>
-#include <linux/kernel.h>
-#include <os.h>
-
-bool copy_from_kernel_nofault_allowed(const void *src, size_t size)
-{
-	void *psrc = (void *)rounddown((unsigned long)src, PAGE_SIZE);
-
-	if ((unsigned long)src < PAGE_SIZE || size <= 0)
-		return false;
-	if (os_mincore(psrc, size + src - psrc) <= 0)
-		return false;
-	return true;
-}
arch/um/os-Linux/process.c +0 -51

57 lines not on this page · raw message

arch/x86/Kconfig +1 -1
index a06fab5016fd..a0af6e8d584b 100644
@@ -215,7 +215,7 @@ config X86
 	select HAVE_SAMPLE_FTRACE_DIRECT_MULTI	if X86_64
 	select HAVE_EBPF_JIT
 	select HAVE_EFFICIENT_UNALIGNED_ACCESS
-	select HAVE_EISA
+	select HAVE_EISA			if X86_32
 	select HAVE_EXIT_THREAD
 	select HAVE_FAST_GUP
 	select HAVE_FENTRY			if X86_64 || DYNAMIC_FTRACE
arch/x86/entry/calling.h +2 -0
index f6907627172b..01e9593e2bd9 100644
@@ -70,6 +70,8 @@ For 32-bit we have the following conventions - kernel is built with
 	pushq	%rsi		/* pt_regs->si */
 	movq	8(%rsp), %rsi	/* temporarily store the return address in %rsi */
 	movq	%rdi, 8(%rsp)	/* pt_regs->di (overwriting original return address) */
+	/* We just clobbered the return address - use the IRET frame for unwinding: */
+	UNWIND_HINT_IRET_REGS offset=3*8
 	.else
 	pushq   %rdi		/* pt_regs->di */
 	pushq   %rsi		/* pt_regs->si */
arch/x86/events/intel/core.c +24 -19

59 lines not on this page · raw message

arch/x86/events/intel/ds.c +2 -11
index d9a51b638931..dcb1e9b8d866 100644
@@ -843,11 +843,11 @@ int intel_pmu_drain_bts_buffer(void)
 	return 1;
 }
 
-static inline void intel_pmu_drain_pebs_buffer(void)
+void intel_pmu_drain_pebs_buffer(void)
 {
 	struct perf_sample_data data;
 
-	x86_pmu.drain_pebs(NULL, &data);
+	static_call(x86_pmu_drain_pebs)(NULL, &data);
 }
 
 /*
@@ -1965,15 +1965,6 @@ get_next_pebs_record_by_bit(void *base, void *top, int bit)
 	return NULL;
 }
 
-void intel_pmu_auto_reload_read(struct perf_event *event)
-{
-	WARN_ON(!(event->hw.flags & PERF_X86_EVENT_AUTO_RELOAD));
-
-	perf_pmu_disable(event->pmu);
-	intel_pmu_drain_pebs_buffer();
-	perf_pmu_enable(event->pmu);
-}
-
 /*
  * Special variant of intel_pmu_save_and_restart() for auto-reload.
  */
arch/x86/events/perf_event.h +2 -1
index c8ba2be7585d..4564521296ac 100644
@@ -1052,6 +1052,7 @@ extern struct x86_pmu x86_pmu __read_mostly;
 
 DECLARE_STATIC_CALL(x86_pmu_set_period, *x86_pmu.set_period);
 DECLARE_STATIC_CALL(x86_pmu_update,     *x86_pmu.update);
+DECLARE_STATIC_CALL(x86_pmu_drain_pebs,	*x86_pmu.drain_pebs);
 
 static __always_inline struct x86_perf_task_context_opt *task_context_opt(void *ctx)
 {
@@ -1539,7 +1540,7 @@ void intel_pmu_pebs_disable_all(void);
 
 void intel_pmu_pebs_sched_task(struct perf_event_pmu_context *pmu_ctx, bool sched_in);
 
-void intel_pmu_auto_reload_read(struct perf_event *event);
+void intel_pmu_drain_pebs_buffer(void);
 
 void intel_pmu_store_pebs_lbrs(struct lbr_entry *lbr);
 
arch/x86/hyperv/hv_vtl.c +1 -0
index c2f78fabc865..b12bef0ff7bb 100644
@@ -30,6 +30,7 @@ void __init hv_vtl_init_platform(void)
 	x86_platform.realmode_init = x86_init_noop;
 	x86_init.irqs.pre_vector_init = x86_init_noop;
 	x86_init.timers.timer_init = x86_init_noop;
+	x86_init.resources.probe_roms = x86_init_noop;
 
 	/* Avoid searching for BIOS MP tables */
 	x86_init.mpparse.find_smp_config = x86_init_noop;
arch/x86/hyperv/ivm.c +2 -3
index 8c6bf07f7d2b..87eabfcc1d1c 100644
@@ -338,7 +338,7 @@ int hv_snp_boot_ap(int cpu, unsigned long start_ip)
 	vmsa->sev_features = sev_status >> 2;
 
 	ret = snp_set_vmsa(vmsa, true);
-	if (!ret) {
+	if (ret) {
 		pr_err("RMPADJUST(%llx) failed: %llx\n", (u64)vmsa, ret);
 		free_page((u64)vmsa);
 		return ret;
@@ -464,7 +464,6 @@ static int hv_mark_gpa_visibility(u16 count, const u64 pfn[],
 			   enum hv_mem_host_visibility visibility)
 {
 	struct hv_gpa_range_for_visibility *input;
-	u16 pages_processed;
 	u64 hv_status;
 	unsigned long flags;
 
@@ -493,7 +492,7 @@ static int hv_mark_gpa_visibility(u16 count, const u64 pfn[],
 	memcpy((void *)input->gpa_page_list, pfn, count * sizeof(*pfn));
 	hv_status = hv_do_rep_hypercall(
 			HVCALL_MODIFY_SPARSE_GPA_PAGE_HOST_VISIBILITY, count,
-			0, input, &pages_processed);
+			0, input, NULL);
 	local_irq_restore(flags);
 
 	if (hv_result_success(hv_status))
arch/x86/include/asm/tlbflush.h +1 -1
index 5d61adc6e892..a496d9dc75d9 100644
@@ -242,7 +242,7 @@ void flush_tlb_multi(const struct cpumask *cpumask,
 	flush_tlb_mm_range((vma)->vm_mm, start, end,			\
 			   ((vma)->vm_flags & VM_HUGETLB)		\
 				? huge_page_shift(hstate_vma(vma))	\
-				: PAGE_SHIFT, false)
+				: PAGE_SHIFT, true)
 
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,
arch/x86/kernel/cpu/microcode/amd.c +1 -1
index c683e8dedfee..0ee172ce2d21 100644
@@ -603,7 +603,7 @@ static bool __apply_microcode_amd(struct microcode_amd *mc, u32 *cur_rev,
 	unsigned long p_addr = (unsigned long)&mc->hdr.data_code;
 
 	if (!verify_sha256_digest(mc->hdr.patch_id, *cur_rev, (const u8 *)p_addr, psize))
-		return -1;
+		return false;
 
 	native_wrmsrl(MSR_AMD64_PATCH_LOADER, p_addr);
 
arch/x86/kernel/cpu/sgx/driver.c +7 -3
index 262f5fb18d74..c453953d5a33 100644
@@ -150,13 +150,15 @@ int __init sgx_drv_init(void)
 	u64 xfrm_mask;
 	int ret;
 
-	if (!cpu_feature_enabled(X86_FEATURE_SGX_LC))
+	if (!cpu_feature_enabled(X86_FEATURE_SGX_LC)) {
+		pr_info("SGX disabled: SGX launch control CPU feature is not available, /dev/sgx_enclave disabled.\n");
 		return -ENODEV;
+	}
 
 	cpuid_count(SGX_CPUID, 0, &eax, &ebx, &ecx, &edx);
 
 	if (!(eax & 1))  {
-		pr_err("SGX disabled: SGX1 instruction support not available.\n");
+		pr_info("SGX disabled: SGX1 instruction support not available, /dev/sgx_enclave disabled.\n");
 		return -ENODEV;
 	}
 
@@ -173,8 +175,10 @@ int __init sgx_drv_init(void)
 	}
 
 	ret = misc_register(&sgx_dev_enclave);
-	if (ret)
+	if (ret) {
+		pr_info("SGX disabled: Unable to register the /dev/sgx_enclave driver (%d).\n", ret);
 		return ret;
+	}
 
 	return 0;
 }
arch/x86/kernel/dumpstack.c +2 -3
index f18ca44c904b..52dc5839d1e8 100644
@@ -195,6 +195,7 @@ static void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
 	printk("%sCall Trace:\n", log_lvl);
 
 	unwind_start(&state, task, regs, stack);
+	stack = stack ?: get_stack_pointer(task, regs);
 	regs = unwind_get_entry_regs(&state, &partial);
 
 	/*
@@ -213,9 +214,7 @@ static void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
 	 * - hardirq stack
 	 * - entry stack
 	 */
-	for (stack = stack ?: get_stack_pointer(task, regs);
-	     stack;
-	     stack = stack_info.next_sp) {
+	for (; stack; stack = stack_info.next_sp) {
 		const char *stack_name;
 
 		stack = PTR_ALIGN(stack, sizeof(long));
arch/x86/kernel/fpu/core.c +3 -3
index 4b414b0ab069..aaed20f46be4 100644
@@ -220,7 +220,7 @@ bool fpu_alloc_guest_fpstate(struct fpu_guest *gfpu)
 	struct fpstate *fpstate;
 	unsigned int size;
 
-	size = fpu_user_cfg.default_size + ALIGN(offsetof(struct fpstate, regs), 64);
+	size = fpu_kernel_cfg.default_size + ALIGN(offsetof(struct fpstate, regs), 64);
 	fpstate = vzalloc(size);
 	if (!fpstate)
 		return false;
@@ -232,8 +232,8 @@ bool fpu_alloc_guest_fpstate(struct fpu_guest *gfpu)
 	fpstate->is_guest	= true;
 
 	gfpu->fpstate		= fpstate;
-	gfpu->xfeatures		= fpu_user_cfg.default_features;
-	gfpu->perm		= fpu_user_cfg.default_features;
+	gfpu->xfeatures		= fpu_kernel_cfg.default_features;
+	gfpu->perm		= fpu_kernel_cfg.default_features;
 
 	/*
 	 * KVM sets the FP+SSE bits in the XSAVE header when copying FPU state
arch/x86/kernel/process.c +6 -1
index 5351f293f770..bbe11363550b 100644
@@ -92,7 +92,12 @@ EXPORT_PER_CPU_SYMBOL_GPL(__tss_limit_invalid);
  */
 int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
 {
-	memcpy(dst, src, arch_task_struct_size);
+	/* init_task is not dynamically sized (incomplete FPU state) */
+	if (unlikely(src == &init_task))
+		memcpy_and_pad(dst, arch_task_struct_size, src, sizeof(init_task), 0);
+	else
+		memcpy(dst, src, arch_task_struct_size);
+
 #ifdef CONFIG_VM86
 	dst->thread.vm86 = NULL;
 #endif
arch/x86/kernel/traps.c +17 -1
index 37b8e20c03a9..d8d9bc5a9b32 100644
@@ -377,6 +377,21 @@ __visible void __noreturn handle_stack_overflow(struct pt_regs *regs,
 }
 #endif
 
+/*
+ * Prevent the compiler and/or objtool from marking the !CONFIG_X86_ESPFIX64
+ * version of exc_double_fault() as noreturn.  Otherwise the noreturn mismatch
+ * between configs triggers objtool warnings.
+ *
+ * This is a temporary hack until we have compiler or plugin support for
+ * annotating noreturns.
+ */
+#ifdef CONFIG_X86_ESPFIX64
+#define always_true() true
+#else
+bool always_true(void);
+bool __weak always_true(void) { return true; }
+#endif
+
 /*
  * Runs on an IST stack for x86_64 and on a special task stack for x86_32.
  *
@@ -512,7 +527,8 @@ DEFINE_IDTENTRY_DF(exc_double_fault)
 
 	pr_emerg("PANIC: double fault, error_code: 0x%lx\n", error_code);
 	die("double fault", regs, error_code);
-	panic("Machine halted.");
+	if (always_true())
+		panic("Machine halted.");
 	instrumentation_end();
 }
 
arch/x86/kernel/tsc.c +2 -2
index 15f97c0abc9d..81e9b436c3b6 100644
@@ -955,7 +955,7 @@ static unsigned long long cyc2ns_suspend;
 
 void tsc_save_sched_clock_state(void)
 {
-	if (!sched_clock_stable())
+	if (!static_branch_likely(&__use_tsc) && !sched_clock_stable())
 		return;
 
 	cyc2ns_suspend = sched_clock();
@@ -975,7 +975,7 @@ void tsc_restore_sched_clock_state(void)
 	unsigned long flags;
 	int cpu;
 
-	if (!sched_clock_stable())
+	if (!static_branch_likely(&__use_tsc) && !sched_clock_stable())
 		return;
 
 	local_irq_save(flags);
arch/x86/lib/copy_user_64.S +18 -0
index 0a81aafed7f8..0544a24baedb 100644
@@ -74,6 +74,24 @@ SYM_FUNC_START(rep_movs_alternative)
 	_ASM_EXTABLE_UA( 0b, 1b)
 
 .Llarge_movsq:
+	/* Do the first possibly unaligned word */
+0:	movq (%rsi),%rax
+1:	movq %rax,(%rdi)
+
+	_ASM_EXTABLE_UA( 0b, .Lcopy_user_tail)
+	_ASM_EXTABLE_UA( 1b, .Lcopy_user_tail)
+
+	/* What would be the offset to the aligned destination? */
+	leaq 8(%rdi),%rax
+	andq $-8,%rax
+	subq %rdi,%rax
+
+	/* .. and update pointers and count to match */
+	addq %rax,%rdi
+	addq %rax,%rsi
+	subq %rax,%rcx
+
+	/* make %rcx contain the number of words, %rax the remainder */
 	movq %rcx,%rax
 	shrq $3,%rcx
 	andl $7,%eax
arch/x86/mm/mem_encrypt_identity.c +2 -2
index cc47a818a640..075899e3fc8a 100644
@@ -562,7 +562,7 @@ void __head sme_enable(struct boot_params *bp)
 	}
 
 	RIP_REL_REF(sme_me_mask) = me_mask;
-	physical_mask &= ~me_mask;
-	cc_vendor = CC_VENDOR_AMD;
+	RIP_REL_REF(physical_mask) &= ~me_mask;
+	RIP_REL_REF(cc_vendor) = CC_VENDOR_AMD;
 	cc_set_mask(me_mask);
 }
arch/x86/mm/pat/cpa-test.c +1 -1
index 3d2f7f0a6ed1..ad3c1feec990 100644
@@ -183,7 +183,7 @@ static int pageattr_test(void)
 			break;
 
 		case 1:
-			err = change_page_attr_set(addrs, len[1], PAGE_CPA_TEST, 1);
+			err = change_page_attr_set(addrs, len[i], PAGE_CPA_TEST, 1);
 			break;
 
 		case 2:
arch/x86/mm/pat/memtype.c +28 -24

72 lines not on this page · raw message

drivers/acpi/nfit/core.c +1 -1
index 7918923e3b74..a466ad6e5d93 100644
@@ -485,7 +485,7 @@ int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,
 		cmd_mask = nd_desc->cmd_mask;
 		if (cmd == ND_CMD_CALL && call_pkg->nd_family) {
 			family = call_pkg->nd_family;
-			if (family > NVDIMM_BUS_FAMILY_MAX ||
+			if (call_pkg->nd_family > NVDIMM_BUS_FAMILY_MAX ||
 			    !test_bit(family, &nd_desc->bus_family_mask))
 				return -EINVAL;
 			family = array_index_nospec(family,
drivers/acpi/processor_idle.c +4 -0
index 831fa4a12159..0888e4d618d5 100644
@@ -268,6 +268,10 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)
 			 ACPI_CX_DESC_LEN, "ACPI P_LVL3 IOPORT 0x%x",
 			 pr->power.states[ACPI_STATE_C3].address);
 
+	if (!pr->power.states[ACPI_STATE_C2].address &&
+	    !pr->power.states[ACPI_STATE_C3].address)
+		return -ENODEV;
+
 	return 0;
 }
 
drivers/acpi/resource.c +7 -0
index 96a987506e71..531684a69c64 100644
@@ -439,6 +439,13 @@ static const struct dmi_system_id asus_laptop[] = {
 			DMI_MATCH(DMI_BOARD_NAME, "S5602ZA"),
 		},
 	},
+	{
+		/* Asus Vivobook X1404VAP */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_BOARD_NAME, "X1404VAP"),
+		},
+	},
 	{
 		/* Asus Vivobook X1504VAP */
 		.matches = {
drivers/acpi/x86/utils.c +2 -1
index e894fdf6d553..aac052e2820c 100644
@@ -367,7 +367,8 @@ static const struct dmi_system_id acpi_quirk_skip_dmi_ids[] = {
 			DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"),
 		},
 		.driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS |
-					ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY),
+					ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY |
+					ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS),
 	},
 	{
 		/* Medion Lifetab S10346 */
drivers/base/power/main.c +10 -11
index 9c5a5f4dba5a..343d3c966e7a 100644
@@ -894,6 +894,9 @@ static void __device_resume(struct device *dev, pm_message_t state, bool async)
 	if (dev->power.syscore)
 		goto Complete;
 
+	if (!dev->power.is_suspended)
+		goto Complete;
+
 	if (dev->power.direct_complete) {
 		/* Match the pm_runtime_disable() in __device_suspend(). */
 		pm_runtime_enable(dev);
@@ -912,9 +915,6 @@ static void __device_resume(struct device *dev, pm_message_t state, bool async)
 	 */
 	dev->power.is_prepared = false;
 
-	if (!dev->power.is_suspended)
-		goto Unlock;
-
 	if (dev->pm_domain) {
 		info = "power domain ";
 		callback = pm_op(&dev->pm_domain->ops, state);
@@ -954,7 +954,6 @@ static void __device_resume(struct device *dev, pm_message_t state, bool async)
 	error = dpm_run_callback(callback, dev, state, info);
 	dev->power.is_suspended = false;
 
- Unlock:
 	device_unlock(dev);
 	dpm_watchdog_clear(&wd);
 
@@ -1236,14 +1235,13 @@ static int __device_suspend_noirq(struct device *dev, pm_message_t state, bool a
 	dev->power.is_noirq_suspended = true;
 
 	/*
-	 * Skipping the resume of devices that were in use right before the
-	 * system suspend (as indicated by their PM-runtime usage counters)
-	 * would be suboptimal.  Also resume them if doing that is not allowed
-	 * to be skipped.
+	 * Devices must be resumed unless they are explicitly allowed to be left
+	 * in suspend, but even in that case skipping the resume of devices that
+	 * were in use right before the system suspend (as indicated by their
+	 * runtime PM usage counters and child counters) would be suboptimal.
 	 */
-	if (atomic_read(&dev->power.usage_count) > 1 ||
-	    !(dev_pm_test_driver_flags(dev, DPM_FLAG_MAY_SKIP_RESUME) &&
-	      dev->power.may_skip_resume))
+	if (!(dev_pm_test_driver_flags(dev, DPM_FLAG_MAY_SKIP_RESUME) &&
+	      dev->power.may_skip_resume) || !pm_runtime_need_not_resume(dev))
 		dev->power.must_resume = true;
 
 	if (dev->power.must_resume)
@@ -1639,6 +1637,7 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
 			pm_runtime_disable(dev);
 			if (pm_runtime_status_suspended(dev)) {
 				pm_dev_dbg(dev, state, "direct-complete ");
+				dev->power.is_suspended = true;
 				goto Complete;
 			}
 
drivers/base/power/runtime.c +1 -1
index 4545669cb973..0af26cf8c005 100644
@@ -1841,7 +1841,7 @@ void pm_runtime_drop_link(struct device_link *link)
 	pm_request_idle(link->supplier);
 }
 
-static bool pm_runtime_need_not_resume(struct device *dev)
+bool pm_runtime_need_not_resume(struct device *dev)
 {
 	return atomic_read(&dev->power.usage_count) <= 1 &&
 		(atomic_read(&dev->power.child_count) == 0 ||
drivers/clk/imx/clk-imx8mp-audiomix.c +3 -3
index ab2a028b3027..f802e54d7b70 100644
@@ -170,14 +170,14 @@ static struct clk_imx8mp_audiomix_sel sels[] = {
 	CLK_GATE("asrc", ASRC_IPG),
 	CLK_GATE("pdm", PDM_IPG),
 	CLK_GATE("earc", EARC_IPG),
-	CLK_GATE("ocrama", OCRAMA_IPG),
+	CLK_GATE_PARENT("ocrama", OCRAMA_IPG, "axi"),
 	CLK_GATE("aud2htx", AUD2HTX_IPG),
 	CLK_GATE_PARENT("earc_phy", EARC_PHY, "sai_pll_out_div2"),
 	CLK_GATE("sdma2", SDMA2_ROOT),
 	CLK_GATE("sdma3", SDMA3_ROOT),
 	CLK_GATE("spba2", SPBA2_ROOT),
-	CLK_GATE("dsp", DSP_ROOT),
-	CLK_GATE("dspdbg", DSPDBG_ROOT),
+	CLK_GATE_PARENT("dsp", DSP_ROOT, "axi"),
+	CLK_GATE_PARENT("dspdbg", DSPDBG_ROOT, "axi"),
 	CLK_GATE("edma", EDMA_ROOT),
 	CLK_GATE_PARENT("audpll", AUDPLL_ROOT, "osc_24m"),
 	CLK_GATE("mu2", MU2_ROOT),
drivers/clk/meson/g12a.c +25 -13
index f373a8d48b1d..233ce4a4c1c2 100644
@@ -1138,8 +1138,18 @@ static struct clk_regmap g12a_cpu_clk_div16_en = {
 	.hw.init = &(struct clk_init_data) {
 		.name = "cpu_clk_div16_en",
 		.ops = &clk_regmap_gate_ro_ops,
-		.parent_hws = (const struct clk_hw *[]) {
-			&g12a_cpu_clk.hw
+		.parent_data = &(const struct clk_parent_data) {
+			/*
+			 * Note:
+			 * G12A and G12B have different cpu clocks (with
+			 * different struct clk_hw). We fallback to the global
+			 * naming string mechanism so this clock picks
+			 * up the appropriate one. Same goes for the other
+			 * clock using cpu cluster A clock output and present
+			 * on both G12 variant.
+			 */
+			.name = "cpu_clk",
+			.index = -1,
 		},
 		.num_parents = 1,
 		/*
@@ -1204,7 +1214,10 @@ static struct clk_regmap g12a_cpu_clk_apb_div = {
 	.hw.init = &(struct clk_init_data){
 		.name = "cpu_clk_apb_div",
 		.ops = &clk_regmap_divider_ro_ops,
-		.parent_hws = (const struct clk_hw *[]) { &g12a_cpu_clk.hw },
+		.parent_data = &(const struct clk_parent_data) {
+			.name = "cpu_clk",
+			.index = -1,
+		},
 		.num_parents = 1,
 	},
 };
@@ -1238,7 +1251,10 @@ static struct clk_regmap g12a_cpu_clk_atb_div = {
 	.hw.init = &(struct clk_init_data){
 		.name = "cpu_clk_atb_div",
 		.ops = &clk_regmap_divider_ro_ops,
-		.parent_hws = (const struct clk_hw *[]) { &g12a_cpu_clk.hw },
+		.parent_data = &(const struct clk_parent_data) {
+			.name = "cpu_clk",
+			.index = -1,
+		},
 		.num_parents = 1,
 	},
 };
@@ -1272,7 +1288,10 @@ static struct clk_regmap g12a_cpu_clk_axi_div = {
 	.hw.init = &(struct clk_init_data){
 		.name = "cpu_clk_axi_div",
 		.ops = &clk_regmap_divider_ro_ops,
-		.parent_hws = (const struct clk_hw *[]) { &g12a_cpu_clk.hw },
+		.parent_data = &(const struct clk_parent_data) {
+			.name = "cpu_clk",
+			.index = -1,
+		},
 		.num_parents = 1,
 	},
 };
@@ -1307,13 +1326,6 @@ static struct clk_regmap g12a_cpu_clk_trace_div = {
 		.name = "cpu_clk_trace_div",
 		.ops = &clk_regmap_divider_ro_ops,
 		.parent_data = &(const struct clk_parent_data) {
-			/*
-			 * Note:
-			 * G12A and G12B have different cpu_clks (with
-			 * different struct clk_hw). We fallback to the global
-			 * naming string mechanism so cpu_clk_trace_div picks
-			 * up the appropriate one.
-			 */
 			.name = "cpu_clk",
 			.index = -1,
 		},
@@ -4189,7 +4201,7 @@ static MESON_GATE(g12a_spicc_1,			HHI_GCLK_MPEG0,	14);
 static MESON_GATE(g12a_hiu_reg,			HHI_GCLK_MPEG0,	19);
 static MESON_GATE(g12a_mipi_dsi_phy,		HHI_GCLK_MPEG0,	20);
 static MESON_GATE(g12a_assist_misc,		HHI_GCLK_MPEG0,	23);
-static MESON_GATE(g12a_emmc_a,			HHI_GCLK_MPEG0,	4);
+static MESON_GATE(g12a_emmc_a,			HHI_GCLK_MPEG0,	24);
 static MESON_GATE(g12a_emmc_b,			HHI_GCLK_MPEG0,	25);
 static MESON_GATE(g12a_emmc_c,			HHI_GCLK_MPEG0,	26);
 static MESON_GATE(g12a_audio_codec,		HHI_GCLK_MPEG0,	28);
drivers/clk/meson/gxbb.c +7 -7
index 1b1279d94781..a133013356b6 100644
@@ -1272,14 +1272,13 @@ static struct clk_regmap gxbb_cts_i958 = {
 	},
 };
 
+/*
+ * This table skips a clock named 'cts_slow_oscin' in the documentation
+ * This clock does not exist yet in this controller or the AO one
+ */
+static u32 gxbb_32k_clk_parents_val_table[] = { 0, 2, 3 };
 static const struct clk_parent_data gxbb_32k_clk_parent_data[] = {
 	{ .fw_name = "xtal", },
-	/*
-	 * FIXME: This clock is provided by the ao clock controller but the
-	 * clock is not yet part of the binding of this controller, so string
-	 * name must be use to set this parent.
-	 */
-	{ .name = "cts_slow_oscin", .index = -1 },
 	{ .hw = &gxbb_fclk_div3.hw },
 	{ .hw = &gxbb_fclk_div5.hw },
 };
@@ -1289,6 +1288,7 @@ static struct clk_regmap gxbb_32k_clk_sel = {
 		.offset = HHI_32K_CLK_CNTL,
 		.mask = 0x3,
 		.shift = 16,
+		.table = gxbb_32k_clk_parents_val_table,
 		},
 	.hw.init = &(struct clk_init_data){
 		.name = "32k_clk_sel",
@@ -1312,7 +1312,7 @@ static struct clk_regmap gxbb_32k_clk_div = {
 			&gxbb_32k_clk_sel.hw
 		},
 		.num_parents = 1,
-		.flags = CLK_SET_RATE_PARENT | CLK_DIVIDER_ROUND_CLOSEST,
+		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
drivers/clk/qcom/gcc-msm8953.c +1 -1
index 3e5a8cb14d4d..e6e2ab1380f2 100644
@@ -3770,7 +3770,7 @@ static struct clk_branch gcc_venus0_axi_clk = {
 
 static struct clk_branch gcc_venus0_core0_vcodec0_clk = {
 	.halt_reg = 0x4c02c,
-	.halt_check = BRANCH_HALT,
+	.halt_check = BRANCH_HALT_SKIP,
 	.clkr = {
 		.enable_reg = 0x4c02c,
 		.enable_mask = BIT(0),
drivers/clk/qcom/mmcc-sdm660.c +1 -1
index bc19a23e13f8..4d187d6aba73 100644
@@ -2544,7 +2544,7 @@ static struct clk_branch video_core_clk = {
 
 static struct clk_branch video_subcore0_clk = {
 	.halt_reg = 0x1048,
-	.halt_check = BRANCH_HALT,
+	.halt_check = BRANCH_HALT_SKIP,
 	.clkr = {
 		.enable_reg = 0x1048,
 		.enable_mask = BIT(0),
drivers/clk/rockchip/clk-rk3328.c +1 -1
index 267ab54937d3..a3587c500de2 100644
@@ -201,7 +201,7 @@ PNAME(mux_aclk_peri_pre_p)	= { "cpll_peri",
 				    "gpll_peri",
 				    "hdmiphy_peri" };
 PNAME(mux_ref_usb3otg_src_p)	= { "xin24m",
-				    "clk_usb3otg_ref" };
+				    "clk_ref_usb3otg_src" };
 PNAME(mux_xin24m_32k_p)		= { "xin24m",
 				    "clk_rtc32k" };
 PNAME(mux_mac2io_src_p)		= { "clk_mac2io_src",
drivers/clk/samsung/clk.c +1 -1
index b6701905f254..fa5bdf6b3a92 100644
@@ -74,12 +74,12 @@ struct samsung_clk_provider * __init samsung_clk_init(struct device *dev,
 	if (!ctx)
 		panic("could not allocate clock provider context.\n");
 
+	ctx->clk_data.num = nr_clks;
 	for (i = 0; i < nr_clks; ++i)
 		ctx->clk_data.hws[i] = ERR_PTR(-ENOENT);
 
 	ctx->dev = dev;
 	ctx->reg_base = base;
-	ctx->clk_data.num = nr_clks;
 	spin_lock_init(&ctx->lock);
 
 	return ctx;
drivers/cpufreq/cpufreq_governor.c +23 -22

67 lines not on this page · raw message

drivers/cpufreq/scpi-cpufreq.c +3 -2
index d33be56983ed..bfc2e65e1e50 100644
@@ -39,8 +39,9 @@ static unsigned int scpi_cpufreq_get_rate(unsigned int cpu)
 static int
 scpi_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index)
 {
-	u64 rate = policy->freq_table[index].frequency * 1000;
+	unsigned long freq_khz = policy->freq_table[index].frequency;
 	struct scpi_data *priv = policy->driver_data;
+	unsigned long rate = freq_khz * 1000;
 	int ret;
 
 	ret = clk_set_rate(priv->clk, rate);
@@ -48,7 +49,7 @@ scpi_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index)
 	if (ret)
 		return ret;
 
-	if (clk_get_rate(priv->clk) != rate)
+	if (clk_get_rate(priv->clk) / 1000 != freq_khz)
 		return -EIO;
 
 	return 0;
drivers/crypto/hisilicon/sec2/sec.h +0 -1
index 30c2b1a64695..2fc04e210bc4 100644
@@ -37,7 +37,6 @@ struct sec_aead_req {
 	u8 *a_ivin;
 	dma_addr_t a_ivin_dma;
 	struct aead_request *aead_req;
-	bool fallback;
 };
 
 /* SEC request of Crypto */
drivers/crypto/hisilicon/sec2/sec_crypto.c +47 -78

293 lines not on this page · raw message

drivers/crypto/nx/nx-common-pseries.c +17 -20
index 35f2d0d8507e..7e98f174f69b 100644
@@ -1144,6 +1144,7 @@ static void __init nxcop_get_capabilities(void)
 {
 	struct hv_vas_all_caps *hv_caps;
 	struct hv_nx_cop_caps *hv_nxc;
+	u64 feat;
 	int rc;
 
 	hv_caps = kmalloc(sizeof(*hv_caps), GFP_KERNEL);
@@ -1154,27 +1155,26 @@ static void __init nxcop_get_capabilities(void)
 	 */
 	rc = h_query_vas_capabilities(H_QUERY_NX_CAPABILITIES, 0,
 					  (u64)virt_to_phys(hv_caps));
+	if (!rc)
+		feat = be64_to_cpu(hv_caps->feat_type);
+	kfree(hv_caps);
 	if (rc)
-		goto out;
+		return;
+	if (!(feat & VAS_NX_GZIP_FEAT_BIT))
+		return;
 
-	caps_feat = be64_to_cpu(hv_caps->feat_type);
 	/*
 	 * NX-GZIP feature available
 	 */
-	if (caps_feat & VAS_NX_GZIP_FEAT_BIT) {
-		hv_nxc = kmalloc(sizeof(*hv_nxc), GFP_KERNEL);
-		if (!hv_nxc)
-			goto out;
-		/*
-		 * Get capabilities for NX-GZIP feature
-		 */
-		rc = h_query_vas_capabilities(H_QUERY_NX_CAPABILITIES,
-						  VAS_NX_GZIP_FEAT,
-						  (u64)virt_to_phys(hv_nxc));
-	} else {
-		pr_err("NX-GZIP feature is not available\n");
-		rc = -EINVAL;
-	}
+	hv_nxc = kmalloc(sizeof(*hv_nxc), GFP_KERNEL);
+	if (!hv_nxc)
+		return;
+	/*
+	 * Get capabilities for NX-GZIP feature
+	 */
+	rc = h_query_vas_capabilities(H_QUERY_NX_CAPABILITIES,
+					  VAS_NX_GZIP_FEAT,
+					  (u64)virt_to_phys(hv_nxc));
 
 	if (!rc) {
 		nx_cop_caps.descriptor = be64_to_cpu(hv_nxc->descriptor);
@@ -1184,13 +1184,10 @@ static void __init nxcop_get_capabilities(void)
 				be64_to_cpu(hv_nxc->min_compress_len);
 		nx_cop_caps.min_decompress_len =
 				be64_to_cpu(hv_nxc->min_decompress_len);
-	} else {
-		caps_feat = 0;
+		caps_feat = feat;
 	}
 
 	kfree(hv_nxc);
-out:
-	kfree(hv_caps);
 }
 
 static const struct vio_device_id nx842_vio_driver_ids[] = {
drivers/dma/fsl-edma-main.c +1 -1
index cd394eae47d1..cc9923ab686d 100644
@@ -675,9 +675,9 @@ static int fsl_edma_remove(struct platform_device *pdev)
 	struct fsl_edma_engine *fsl_edma = platform_get_drvdata(pdev);
 
 	fsl_edma_irq_exit(pdev, fsl_edma);
-	fsl_edma_cleanup_vchan(&fsl_edma->dma_dev);
 	of_dma_controller_free(np);
 	dma_async_device_unregister(&fsl_edma->dma_dev);
+	fsl_edma_cleanup_vchan(&fsl_edma->dma_dev);
 	fsl_disable_clocks(fsl_edma, fsl_edma->drvdata->dmamuxs);
 
 	return 0;
drivers/edac/i10nm_base.c +2 -0
index 535f058b48ee..67a46abe07da 100644
@@ -755,6 +755,8 @@ static int i10nm_get_ddr_munits(void)
 				continue;
 			} else {
 				d->imc[lmc].mdev = mdev;
+				if (res_cfg->type == SPR)
+					skx_set_mc_mapping(d, i, lmc);
 				lmc++;
 			}
 		}
drivers/edac/ie31200_edac.c +10 -9
index 9ef13570f2e5..56be8ef40f37 100644
@@ -91,8 +91,6 @@
 	 (((did) & PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_MASK) ==                 \
 	  PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_MASK))
 
-#define IE31200_DIMMS			4
-#define IE31200_RANKS			8
 #define IE31200_RANKS_PER_CHANNEL	4
 #define IE31200_DIMMS_PER_CHANNEL	2
 #define IE31200_CHANNELS		2
@@ -164,6 +162,7 @@
 #define IE31200_MAD_DIMM_0_OFFSET		0x5004
 #define IE31200_MAD_DIMM_0_OFFSET_SKL		0x500C
 #define IE31200_MAD_DIMM_SIZE			GENMASK_ULL(7, 0)
+#define IE31200_MAD_DIMM_SIZE_SKL		GENMASK_ULL(5, 0)
 #define IE31200_MAD_DIMM_A_RANK			BIT(17)
 #define IE31200_MAD_DIMM_A_RANK_SHIFT		17
 #define IE31200_MAD_DIMM_A_RANK_SKL		BIT(10)
@@ -377,7 +376,7 @@ static void __iomem *ie31200_map_mchbar(struct pci_dev *pdev)
 static void __skl_populate_dimm_info(struct dimm_data *dd, u32 addr_decode,
 				     int chan)
 {
-	dd->size = (addr_decode >> (chan << 4)) & IE31200_MAD_DIMM_SIZE;
+	dd->size = (addr_decode >> (chan << 4)) & IE31200_MAD_DIMM_SIZE_SKL;
 	dd->dual_rank = (addr_decode & (IE31200_MAD_DIMM_A_RANK_SKL << (chan << 4))) ? 1 : 0;
 	dd->x16_width = ((addr_decode & (IE31200_MAD_DIMM_A_WIDTH_SKL << (chan << 4))) >>
 				(IE31200_MAD_DIMM_A_WIDTH_SKL_SHIFT + (chan << 4)));
@@ -426,7 +425,7 @@ static int ie31200_probe1(struct pci_dev *pdev, int dev_idx)
 
 	nr_channels = how_many_channels(pdev);
 	layers[0].type = EDAC_MC_LAYER_CHIP_SELECT;
-	layers[0].size = IE31200_DIMMS;
+	layers[0].size = IE31200_RANKS_PER_CHANNEL;
 	layers[0].is_virt_csrow = true;
 	layers[1].type = EDAC_MC_LAYER_CHANNEL;
 	layers[1].size = nr_channels;
@@ -618,7 +617,7 @@ static int __init ie31200_init(void)
 
 	pci_rc = pci_register_driver(&ie31200_driver);
 	if (pci_rc < 0)
-		goto fail0;
+		return pci_rc;
 
 	if (!mci_pdev) {
 		ie31200_registered = 0;
@@ -629,11 +628,13 @@ static int __init ie31200_init(void)
 			if (mci_pdev)
 				break;
 		}
+
 		if (!mci_pdev) {
 			edac_dbg(0, "ie31200 pci_get_device fail\n");
 			pci_rc = -ENODEV;
-			goto fail1;
+			goto fail0;
 		}
+
 		pci_rc = ie31200_init_one(mci_pdev, &ie31200_pci_tbl[i]);
 		if (pci_rc < 0) {
 			edac_dbg(0, "ie31200 init fail\n");
@@ -641,12 +642,12 @@ static int __init ie31200_init(void)
 			goto fail1;
 		}
 	}
-	return 0;
 
+	return 0;
 fail1:
-	pci_unregister_driver(&ie31200_driver);
-fail0:
 	pci_dev_put(mci_pdev);
+fail0:
+	pci_unregister_driver(&ie31200_driver);
 
 	return pci_rc;
 }
drivers/edac/skx_common.c +33 -0
index 0b8aaf5f77d9..d47f0055217e 100644
@@ -120,6 +120,35 @@ void skx_adxl_put(void)
 }
 EXPORT_SYMBOL_GPL(skx_adxl_put);
 
+static void skx_init_mc_mapping(struct skx_dev *d)
+{
+	/*
+	 * By default, the BIOS presents all memory controllers within each
+	 * socket to the EDAC driver. The physical indices are the same as
+	 * the logical indices of the memory controllers enumerated by the
+	 * EDAC driver.
+	 */
+	for (int i = 0; i < NUM_IMC; i++)
+		d->mc_mapping[i] = i;
+}
+
+void skx_set_mc_mapping(struct skx_dev *d, u8 pmc, u8 lmc)
+{
+	edac_dbg(0, "Set the mapping of mc phy idx to logical idx: %02d -> %02d\n",
+		 pmc, lmc);
+
+	d->mc_mapping[pmc] = lmc;
+}
+EXPORT_SYMBOL_GPL(skx_set_mc_mapping);
+
+static u8 skx_get_mc_mapping(struct skx_dev *d, u8 pmc)
+{
+	edac_dbg(0, "Get the mapping of mc phy idx to logical idx: %02d -> %02d\n",
+		 pmc, d->mc_mapping[pmc]);
+
+	return d->mc_mapping[pmc];
+}
+
 static bool skx_adxl_decode(struct decoded_addr *res, enum error_source err_src)
 {
 	struct skx_dev *d;
@@ -187,6 +216,8 @@ static bool skx_adxl_decode(struct decoded_addr *res, enum error_source err_src)
 		return false;
 	}
 
+	res->imc = skx_get_mc_mapping(d, res->imc);
+
 	for (i = 0; i < adxl_component_count; i++) {
 		if (adxl_values[i] == ~0x0ull)
 			continue;
@@ -307,6 +338,8 @@ int skx_get_all_bus_mappings(struct res_config *cfg, struct list_head **list)
 			 d->bus[0], d->bus[1], d->bus[2], d->bus[3]);
 		list_add_tail(&d->list, &dev_edac_list);
 		prev = pdev;
+
+		skx_init_mc_mapping(d);
 	}
 
 	if (list)
drivers/edac/skx_common.h +11 -0
index e7f18ada1668..5acfef8fd3d3 100644
@@ -94,6 +94,16 @@ struct skx_dev {
 	struct pci_dev *uracu; /* for i10nm CPU */
 	struct pci_dev *pcu_cr3; /* for HBM memory detection */
 	u32 mcroute;
+	/*
+	 * Some server BIOS may hide certain memory controllers, and the
+	 * EDAC driver skips those hidden memory controllers. However, the
+	 * ADXL still decodes memory error address using physical memory
+	 * controller indices. The mapping table is used to convert the
+	 * physical indices (reported by ADXL) to the logical indices
+	 * (used the EDAC driver) of present memory controllers during the
+	 * error handling process.
+	 */
+	u8 mc_mapping[NUM_IMC];
 	struct skx_imc {
 		struct mem_ctl_info *mci;
 		struct pci_dev *mdev; /* for i10nm CPU */
@@ -243,6 +253,7 @@ void skx_adxl_put(void);
 void skx_set_decode(skx_decode_f decode, skx_show_retry_log_f show_retry_log);
 void skx_set_mem_cfg(bool mem_cfg_2lm);
 void skx_set_res_cfg(struct res_config *cfg);
+void skx_set_mc_mapping(struct skx_dev *d, u8 pmc, u8 lmc);
 
 int skx_get_src_id(struct skx_dev *d, int off, u8 *id);
 int skx_get_node_id(struct skx_dev *d, u8 *id);
drivers/firmware/cirrus/cs_dsp.c +2 -0
index 4ce5681be18f..c015d2b4c5cf 100644
@@ -1584,6 +1584,7 @@ static int cs_dsp_load(struct cs_dsp *dsp, const struct firmware *firmware,
 
 	cs_dsp_debugfs_save_wmfwname(dsp, file);
 
+	ret = 0;
 out_fw:
 	cs_dsp_buf_free(&buf_list);
 	kfree(text);
@@ -2299,6 +2300,7 @@ static int cs_dsp_load_coeff(struct cs_dsp *dsp, const struct firmware *firmware
 
 	cs_dsp_debugfs_save_binname(dsp, file);
 
+	ret = 0;
 out_fw:
 	cs_dsp_buf_free(&buf_list);
 	kfree(text);
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +9 -2
index f9bc38d20ce3..a51ceebb8054 100644
@@ -2461,7 +2461,6 @@ static int amdgpu_pmops_freeze(struct device *dev)
 
 	adev->in_s4 = true;
 	r = amdgpu_device_suspend(drm_dev, true);
-	adev->in_s4 = false;
 	if (r)
 		return r;
 
@@ -2473,8 +2472,13 @@ static int amdgpu_pmops_freeze(struct device *dev)
 static int amdgpu_pmops_thaw(struct device *dev)
 {
 	struct drm_device *drm_dev = dev_get_drvdata(dev);
+	struct amdgpu_device *adev = drm_to_adev(drm_dev);
+	int r;
 
-	return amdgpu_device_resume(drm_dev, true);
+	r = amdgpu_device_resume(drm_dev, true);
+	adev->in_s4 = false;
+
+	return r;
 }
 
 static int amdgpu_pmops_poweroff(struct device *dev)
@@ -2487,6 +2491,9 @@ static int amdgpu_pmops_poweroff(struct device *dev)
 static int amdgpu_pmops_restore(struct device *dev)
 {
 	struct drm_device *drm_dev = dev_get_drvdata(dev);
+	struct amdgpu_device *adev = drm_to_adev(drm_dev);
+
+	adev->in_s4 = false;
 
 	return amdgpu_device_resume(drm_dev, true);
 }
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +1 -1
index 54ec9b32562c..480d718d09cb 100644
@@ -1318,7 +1318,7 @@ static int gfx_v11_0_sw_init(void *handle)
 		adev->gfx.me.num_me = 1;
 		adev->gfx.me.num_pipe_per_me = 1;
 		adev->gfx.me.num_queue_per_pipe = 1;
-		adev->gfx.mec.num_mec = 2;
+		adev->gfx.mec.num_mec = 1;
 		adev->gfx.mec.num_pipe_per_mec = 4;
 		adev->gfx.mec.num_queue_per_pipe = 4;
 		break;
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +0 -15
index 43fa260ddbce..4d9a406925e1 100644
@@ -197,21 +197,6 @@ static int add_queue_mes(struct device_queue_manager *dqm, struct queue *q,
 	if (dqm->is_hws_hang)
 		return -EIO;
 
-	if (!pdd->proc_ctx_cpu_ptr) {
-		r = amdgpu_amdkfd_alloc_gtt_mem(adev,
-				AMDGPU_MES_PROC_CTX_SIZE,
-				&pdd->proc_ctx_bo,
-				&pdd->proc_ctx_gpu_addr,
-				&pdd->proc_ctx_cpu_ptr,
-				false);
-		if (r) {
-			dev_err(adev->dev,
-				"failed to allocate process context bo\n");
-			return r;
-		}
-		memset(pdd->proc_ctx_cpu_ptr, 0, AMDGPU_MES_PROC_CTX_SIZE);
-	}
-
 	memset(&queue_input, 0x0, sizeof(struct mes_add_queue_input));
 	queue_input.process_id = qpd->pqm->process->pasid;
 	queue_input.page_table_base_addr =  qpd->page_table_base;
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +16 -0
index a02777694d99..e057c2bc7be4 100644
@@ -329,10 +329,26 @@ int pqm_create_queue(struct process_queue_manager *pqm,
 	if (retval != 0)
 		return retval;
 
+	/* Register process if this is the first queue */
 	if (list_empty(&pdd->qpd.queues_list) &&
 	    list_empty(&pdd->qpd.priv_queue_list))
 		dev->dqm->ops.register_process(dev->dqm, &pdd->qpd);
 
+	/* Allocate proc_ctx_bo only if MES is enabled and this is the first queue */
+	if (!pdd->proc_ctx_cpu_ptr && dev->kfd->shared_resources.enable_mes) {
+		retval = amdgpu_amdkfd_alloc_gtt_mem(dev->adev,
+						     AMDGPU_MES_PROC_CTX_SIZE,
+						     &pdd->proc_ctx_bo,
+						     &pdd->proc_ctx_gpu_addr,
+						     &pdd->proc_ctx_cpu_ptr,
+						     false);
+		if (retval) {
+			dev_err(dev->adev->dev, "failed to allocate process context bo\n");
+			return retval;
+		}
+		memset(pdd->proc_ctx_cpu_ptr, 0, AMDGPU_MES_PROC_CTX_SIZE);
+	}
+
 	pqn = kzalloc(sizeof(*pqn), GFP_KERNEL);
 	if (!pqn) {
 		retval = -ENOMEM;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +5 -0
index 2b7f98a2e36f..3696b9112c74 100644
@@ -2890,6 +2890,11 @@ static int dm_resume(void *handle)
 
 		return 0;
 	}
+
+	/* leave display off for S4 sequence */
+	if (adev->in_s4)
+		return 0;
+
 	/* Recreate dc_state - DC invalidates it when setting power state to S3. */
 	dc_release_state(dm_state->context);
 	dm_state->context = dc_create_state(dm->dc);
drivers/gpu/drm/amd/display/dc/core/dc_link_exports.c +3 -0
index f365773d5714..e9b3c1c7a931 100644
@@ -37,6 +37,9 @@
 #include "dce/dce_i2c.h"
 struct dc_link *dc_get_link_at_index(struct dc *dc, uint32_t link_index)
 {
+	if (link_index >= (MAX_PIPES * 2))
+		return NULL;
+
 	return dc->links[link_index];
 }
 
drivers/gpu/drm/amd/display/dc/dce/dmub_hw_lock_mgr.c +4 -0
index 5c7530287730..4dc9856e8730 100644
@@ -63,6 +63,10 @@ void dmub_hw_lock_mgr_inbox0_cmd(struct dc_dmub_srv *dmub_srv,
 
 bool should_use_dmub_lock(struct dc_link *link)
 {
+	/* ASIC doesn't support DMUB */
+	if (!link->ctx->dmub_srv)
+		return false;
+
 	if (link->psr_settings.psr_version == DC_PSR_VERSION_SU_1)
 		return true;
 
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c +6 -6
index ad741a723c0e..72ffa1abebaa 100644
@@ -281,10 +281,10 @@ static void CalculateDynamicMetadataParameters(
 		double DISPCLK,
 		double DCFClkDeepSleep,
 		double PixelClock,
-		long HTotal,
-		long VBlank,
-		long DynamicMetadataTransmittedBytes,
-		long DynamicMetadataLinesBeforeActiveRequired,
+		unsigned int HTotal,
+		unsigned int VBlank,
+		unsigned int DynamicMetadataTransmittedBytes,
+		int DynamicMetadataLinesBeforeActiveRequired,
 		int InterlaceEnable,
 		bool ProgressiveToInterlaceUnitInOPP,
 		double *Tsetup,
@@ -3277,8 +3277,8 @@ static double CalculateWriteBackDelay(
 
 
 static void CalculateDynamicMetadataParameters(int MaxInterDCNTileRepeaters, double DPPCLK, double DISPCLK,
-		double DCFClkDeepSleep, double PixelClock, long HTotal, long VBlank, long DynamicMetadataTransmittedBytes,
-		long DynamicMetadataLinesBeforeActiveRequired, int InterlaceEnable, bool ProgressiveToInterlaceUnitInOPP,
+		double DCFClkDeepSleep, double PixelClock, unsigned int HTotal, unsigned int VBlank, unsigned int DynamicMetadataTransmittedBytes,
+		int DynamicMetadataLinesBeforeActiveRequired, int InterlaceEnable, bool ProgressiveToInterlaceUnitInOPP,
 		double *Tsetup, double *Tdmbf, double *Tdmec, double *Tdmsks)
 {
 	double TotalRepeaterDelayTime = 0;
drivers/gpu/drm/bridge/ite-it6505.c +4 -3
index fe33b988d752..e094165e584a 100644
@@ -2039,12 +2039,13 @@ static bool it6505_hdcp_part2_ksvlist_check(struct it6505 *it6505)
 			continue;
 		}
 
-		for (i = 0; i < 5; i++) {
+		for (i = 0; i < 5; i++)
 			if (bv[i][3] != av[i][0] || bv[i][2] != av[i][1] ||
-			    av[i][1] != av[i][2] || bv[i][0] != av[i][3])
+			    bv[i][1] != av[i][2] || bv[i][0] != av[i][3])
 				break;
 
-			DRM_DEV_DEBUG_DRIVER(dev, "V' all match!! %d, %d", retry, i);
+		if (i == 5) {
+			DRM_DEV_DEBUG_DRIVER(dev, "V' all match!! %d", retry);
 			return true;
 		}
 	}
drivers/gpu/drm/bridge/ti-sn65dsi86.c +2 -0
index 3309c01fa715..bfbd3fee1256 100644
@@ -480,6 +480,7 @@ static int ti_sn65dsi86_add_aux_device(struct ti_sn65dsi86 *pdata,
 				       const char *name)
 {
 	struct device *dev = pdata->dev;
+	const struct i2c_client *client = to_i2c_client(dev);
 	struct auxiliary_device *aux;
 	int ret;
 
@@ -488,6 +489,7 @@ static int ti_sn65dsi86_add_aux_device(struct ti_sn65dsi86 *pdata,
 		return -ENOMEM;
 
 	aux->name = name;
+	aux->id = (client->adapter->nr << 10) | client->addr;
 	aux->dev.parent = dev;
 	aux->dev.release = ti_sn65dsi86_aux_device_release;
 	device_set_of_node_from_dev(&aux->dev, dev);
drivers/gpu/drm/display/drm_dp_mst_topology.c +4 -4
index 71a30387ca12..21ff7ef7ce92 100644
@@ -178,13 +178,13 @@ static int
 drm_dp_mst_rad_to_str(const u8 rad[8], u8 lct, char *out, size_t len)
 {
 	int i;
-	u8 unpacked_rad[16];
+	u8 unpacked_rad[16] = {};
 
-	for (i = 0; i < lct; i++) {
+	for (i = 1; i < lct; i++) {
 		if (i % 2)
-			unpacked_rad[i] = rad[i / 2] >> 4;
+			unpacked_rad[i] = rad[(i - 1) / 2] >> 4;
 		else
-			unpacked_rad[i] = rad[i / 2] & BIT_MASK(4);
+			unpacked_rad[i] = rad[(i - 1) / 2] & 0xF;
 	}
 
 	/* TODO: Eventually add something to printk so we can format the rad
drivers/gpu/drm/mediatek/mtk_dp.c +3 -3
index be4de26c77f9..199527643093 100644
@@ -1648,7 +1648,7 @@ static int mtk_dp_parse_capabilities(struct mtk_dp *mtk_dp)
 
 	ret = drm_dp_dpcd_readb(&mtk_dp->aux, DP_MSTM_CAP, &val);
 	if (ret < 1) {
-		drm_err(mtk_dp->drm_dev, "Read mstm cap failed\n");
+		dev_err(mtk_dp->dev, "Read mstm cap failed: %zd\n", ret);
 		return ret == 0 ? -EIO : ret;
 	}
 
@@ -1658,7 +1658,7 @@ static int mtk_dp_parse_capabilities(struct mtk_dp *mtk_dp)
 					DP_DEVICE_SERVICE_IRQ_VECTOR_ESI0,
 					&val);
 		if (ret < 1) {
-			drm_err(mtk_dp->drm_dev, "Read irq vector failed\n");
+			dev_err(mtk_dp->dev, "Read irq vector failed: %zd\n", ret);
 			return ret == 0 ? -EIO : ret;
 		}
 
@@ -1941,7 +1941,7 @@ static int mtk_dp_wait_hpd_asserted(struct drm_dp_aux *mtk_aux, unsigned long wa
 
 	ret = mtk_dp_parse_capabilities(mtk_dp);
 	if (ret) {
-		drm_err(mtk_dp->drm_dev, "Can't parse capabilities\n");
+		dev_err(mtk_dp->dev, "Can't parse capabilities: %d\n", ret);
 		return ret;
 	}
 
drivers/gpu/drm/mediatek/mtk_dsi.c +3 -3
index 0d96264ec5c6..f154b3a7c2c2 100644
@@ -1016,12 +1016,12 @@ static ssize_t mtk_dsi_host_transfer(struct mipi_dsi_host *host,
 				     const struct mipi_dsi_msg *msg)
 {
 	struct mtk_dsi *dsi = host_to_dsi(host);
-	u32 recv_cnt, i;
+	ssize_t recv_cnt;
 	u8 read_data[16];
 	void *src_addr;
 	u8 irq_flag = CMD_DONE_INT_FLAG;
 	u32 dsi_mode;
-	int ret;
+	int ret, i;
 
 	dsi_mode = readl(dsi->regs + DSI_MODE_CTRL);
 	if (dsi_mode & MODE) {
@@ -1070,7 +1070,7 @@ static ssize_t mtk_dsi_host_transfer(struct mipi_dsi_host *host,
 	if (recv_cnt)
 		memcpy(msg->rx_buf, src_addr, recv_cnt);
 
-	DRM_INFO("dsi get %d byte data from the panel address(0x%x)\n",
+	DRM_INFO("dsi get %zd byte data from the panel address(0x%x)\n",
 		 recv_cnt, *((u8 *)(msg->tx_buf)));
 
 restore_dsi_mode:
drivers/gpu/drm/mediatek/mtk_hdmi.c +23 -10
index 86133bf16326..68d0b65ef783 100644
@@ -137,7 +137,7 @@ enum hdmi_aud_channel_swap_type {
 
 struct hdmi_audio_param {
 	enum hdmi_audio_coding_type aud_codec;
-	enum hdmi_audio_sample_size aud_sampe_size;
+	enum hdmi_audio_sample_size aud_sample_size;
 	enum hdmi_aud_input_type aud_input_type;
 	enum hdmi_aud_i2s_fmt aud_i2s_fmt;
 	enum hdmi_aud_mclk aud_mclk;
@@ -173,6 +173,7 @@ struct mtk_hdmi {
 	unsigned int sys_offset;
 	void __iomem *regs;
 	enum hdmi_colorspace csp;
+	struct platform_device *audio_pdev;
 	struct hdmi_audio_param aud_param;
 	bool audio_enable;
 	bool powered;
@@ -1074,7 +1075,7 @@ static int mtk_hdmi_output_init(struct mtk_hdmi *hdmi)
 
 	hdmi->csp = HDMI_COLORSPACE_RGB;
 	aud_param->aud_codec = HDMI_AUDIO_CODING_TYPE_PCM;
-	aud_param->aud_sampe_size = HDMI_AUDIO_SAMPLE_SIZE_16;
+	aud_param->aud_sample_size = HDMI_AUDIO_SAMPLE_SIZE_16;
 	aud_param->aud_input_type = HDMI_AUD_INPUT_I2S;
 	aud_param->aud_i2s_fmt = HDMI_I2S_MODE_I2S_24BIT;
 	aud_param->aud_mclk = HDMI_AUD_MCLK_128FS;
@@ -1575,14 +1576,14 @@ static int mtk_hdmi_audio_hw_params(struct device *dev, void *data,
 	switch (daifmt->fmt) {
 	case HDMI_I2S:
 		hdmi_params.aud_codec = HDMI_AUDIO_CODING_TYPE_PCM;
-		hdmi_params.aud_sampe_size = HDMI_AUDIO_SAMPLE_SIZE_16;
+		hdmi_params.aud_sample_size = HDMI_AUDIO_SAMPLE_SIZE_16;
 		hdmi_params.aud_input_type = HDMI_AUD_INPUT_I2S;
 		hdmi_params.aud_i2s_fmt = HDMI_I2S_MODE_I2S_24BIT;
 		hdmi_params.aud_mclk = HDMI_AUD_MCLK_128FS;
 		break;
 	case HDMI_SPDIF:
 		hdmi_params.aud_codec = HDMI_AUDIO_CODING_TYPE_PCM;
-		hdmi_params.aud_sampe_size = HDMI_AUDIO_SAMPLE_SIZE_16;
+		hdmi_params.aud_sample_size = HDMI_AUDIO_SAMPLE_SIZE_16;
 		hdmi_params.aud_input_type = HDMI_AUD_INPUT_SPDIF;
 		break;
 	default:
@@ -1666,6 +1667,11 @@ static const struct hdmi_codec_ops mtk_hdmi_audio_codec_ops = {
 	.no_capture_mute = 1,
 };
 
+static void mtk_hdmi_unregister_audio_driver(void *data)
+{
+	platform_device_unregister(data);
+}
+
 static int mtk_hdmi_register_audio_driver(struct device *dev)
 {
 	struct mtk_hdmi *hdmi = dev_get_drvdata(dev);
@@ -1675,13 +1681,20 @@ static int mtk_hdmi_register_audio_driver(struct device *dev)
 		.i2s = 1,
 		.data = hdmi,
 	};
-	struct platform_device *pdev;
+	int ret;
 
-	pdev = platform_device_register_data(dev, HDMI_CODEC_DRV_NAME,
-					     PLATFORM_DEVID_AUTO, &codec_data,
-					     sizeof(codec_data));
-	if (IS_ERR(pdev))
-		return PTR_ERR(pdev);
+	hdmi->audio_pdev = platform_device_register_data(dev,
+							 HDMI_CODEC_DRV_NAME,
+							 PLATFORM_DEVID_AUTO,
+							 &codec_data,
+							 sizeof(codec_data));
+	if (IS_ERR(hdmi->audio_pdev))
+		return PTR_ERR(hdmi->audio_pdev);
+
+	ret = devm_add_action_or_reset(dev, mtk_hdmi_unregister_audio_driver,
+				       hdmi->audio_pdev);
+	if (ret)
+		return ret;
 
 	DRM_INFO("%s driver bound to HDMI\n", HDMI_CODEC_DRV_NAME);
 	return 0;
drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +0 -4
index ad57368dc13f..2df1e6293062 100644
@@ -1210,10 +1210,6 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc,
 
 	DRM_DEBUG_ATOMIC("%s: check\n", dpu_crtc->name);
 
-	/* force a full mode set if active state changed */
-	if (crtc_state->active_changed)
-		crtc_state->mode_changed = true;
-
 	if (cstate->num_mixers) {
 		rc = _dpu_crtc_check_and_setup_lm_bounds(crtc, crtc_state);
 		if (rc)
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +1 -2
index 35cf9080168b..99cccde5d221 100644
@@ -669,12 +669,11 @@ static int dpu_encoder_virt_atomic_check(
 
 	/*
 	 * Release and Allocate resources on every modeset
-	 * Dont allocate when active is false.
 	 */
 	if (drm_atomic_crtc_needs_modeset(crtc_state)) {
 		dpu_rm_release(global_state, drm_enc);
 
-		if (!crtc_state->active_changed || crtc_state->enable)
+		if (crtc_state->enable)
 			ret = dpu_rm_reserve(&dpu_kms->rm, global_state,
 					drm_enc, crtc_state, topology);
 	}
drivers/gpu/drm/msm/dsi/dsi_host.c +4 -4
index f920329fe2e0..f90ccdfbb2fc 100644
@@ -825,7 +825,7 @@ static void dsi_ctrl_enable(struct msm_dsi_host *msm_host,
 		dsi_write(msm_host, REG_DSI_CPHY_MODE_CTRL, BIT(0));
 }
 
-static void dsi_update_dsc_timing(struct msm_dsi_host *msm_host, bool is_cmd_mode, u32 hdisplay)
+static void dsi_update_dsc_timing(struct msm_dsi_host *msm_host, bool is_cmd_mode)
 {
 	struct drm_dsc_config *dsc = msm_host->dsc;
 	u32 reg, reg_ctrl, reg_ctrl2;
@@ -837,7 +837,7 @@ static void dsi_update_dsc_timing(struct msm_dsi_host *msm_host, bool is_cmd_mod
 	/* first calculate dsc parameters and then program
 	 * compress mode registers
 	 */
-	slice_per_intf = msm_dsc_get_slices_per_intf(dsc, hdisplay);
+	slice_per_intf = dsc->slice_count;
 
 	total_bytes_per_intf = dsc->slice_chunk_size * slice_per_intf;
 	bytes_per_pkt = dsc->slice_chunk_size; /* * slice_per_pkt; */
@@ -948,7 +948,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi)
 
 	if (msm_host->mode_flags & MIPI_DSI_MODE_VIDEO) {
 		if (msm_host->dsc)
-			dsi_update_dsc_timing(msm_host, false, mode->hdisplay);
+			dsi_update_dsc_timing(msm_host, false);
 
 		dsi_write(msm_host, REG_DSI_ACTIVE_H,
 			DSI_ACTIVE_H_START(ha_start) |
@@ -969,7 +969,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi)
 			DSI_ACTIVE_VSYNC_VPOS_END(vs_end));
 	} else {		/* command mode */
 		if (msm_host->dsc)
-			dsi_update_dsc_timing(msm_host, true, mode->hdisplay);
+			dsi_update_dsc_timing(msm_host, true);
 
 		/* image data and 1 byte write_memory_start cmd */
 		if (!msm_host->dsc)
drivers/gpu/drm/msm/dsi/dsi_manager.c +21 -11
index 28b8012a21f2..1a75f9c18c24 100644
@@ -74,17 +74,35 @@ static int dsi_mgr_setup_components(int id)
 	int ret;
 
 	if (!IS_BONDED_DSI()) {
+		/*
+		 * Set the usecase before calling msm_dsi_host_register(), which would
+		 * already program the PLL source mux based on a default usecase.
+		 */
+		msm_dsi_phy_set_usecase(msm_dsi->phy, MSM_DSI_PHY_STANDALONE);
+		msm_dsi_host_set_phy_mode(msm_dsi->host, msm_dsi->phy);
+
 		ret = msm_dsi_host_register(msm_dsi->host);
 		if (ret)
 			return ret;
-
-		msm_dsi_phy_set_usecase(msm_dsi->phy, MSM_DSI_PHY_STANDALONE);
-		msm_dsi_host_set_phy_mode(msm_dsi->host, msm_dsi->phy);
 	} else if (other_dsi) {
 		struct msm_dsi *master_link_dsi = IS_MASTER_DSI_LINK(id) ?
 							msm_dsi : other_dsi;
 		struct msm_dsi *slave_link_dsi = IS_MASTER_DSI_LINK(id) ?
 							other_dsi : msm_dsi;
+
+		/*
+		 * PLL0 is to drive both DSI link clocks in bonded DSI mode.
+		 *
+		 * Set the usecase before calling msm_dsi_host_register(), which would
+		 * already program the PLL source mux based on a default usecase.
+		 */
+		msm_dsi_phy_set_usecase(clk_master_dsi->phy,
+					MSM_DSI_PHY_MASTER);
+		msm_dsi_phy_set_usecase(clk_slave_dsi->phy,
+					MSM_DSI_PHY_SLAVE);
+		msm_dsi_host_set_phy_mode(msm_dsi->host, msm_dsi->phy);
+		msm_dsi_host_set_phy_mode(other_dsi->host, other_dsi->phy);
+
 		/* Register slave host first, so that slave DSI device
 		 * has a chance to probe, and do not block the master
 		 * DSI device's probe.
@@ -98,14 +116,6 @@ static int dsi_mgr_setup_components(int id)
 		ret = msm_dsi_host_register(master_link_dsi->host);
 		if (ret)
 			return ret;
-
-		/* PLL0 is to drive both 2 DSI link clocks in bonded DSI mode. */
-		msm_dsi_phy_set_usecase(clk_master_dsi->phy,
-					MSM_DSI_PHY_MASTER);
-		msm_dsi_phy_set_usecase(clk_slave_dsi->phy,
-					MSM_DSI_PHY_SLAVE);
-		msm_dsi_host_set_phy_mode(msm_dsi->host, msm_dsi->phy);
-		msm_dsi_host_set_phy_mode(other_dsi->host, other_dsi->phy);
 	}
 
 	return 0;
drivers/gpu/drm/msm/msm_dsc_helper.h +0 -11
index b9049fe1e279..63f95523b2cb 100644
@@ -12,17 +12,6 @@
 #include <linux/math.h>
 #include <drm/display/drm_dsc_helper.h>
 
-/**
- * msm_dsc_get_slices_per_intf() - calculate number of slices per interface
- * @dsc: Pointer to drm dsc config struct
- * @intf_width: interface width in pixels
- * Returns: Integer representing the number of slices for the given interface
- */
-static inline u32 msm_dsc_get_slices_per_intf(const struct drm_dsc_config *dsc, u32 intf_width)
-{
-	return DIV_ROUND_UP(intf_width, dsc->slice_width);
-}
-
 /**
  * msm_dsc_get_bytes_per_line() - calculate bytes per line
  * @dsc: Pointer to drm dsc config struct
drivers/gpu/drm/vkms/vkms_drv.c +9 -6
index dd0af086e7fa..25db36ec06d4 100644
@@ -243,17 +243,19 @@ static int __init vkms_init(void)
 	if (!config)
 		return -ENOMEM;
 
-	default_config = config;
-
 	config->cursor = enable_cursor;
 	config->writeback = enable_writeback;
 	config->overlay = enable_overlay;
 
 	ret = vkms_create(config);
-	if (ret)
+	if (ret) {
 		kfree(config);
+		return ret;
+	}
 
-	return ret;
+	default_config = config;
+
+	return 0;
 }
 
 static void vkms_destroy(struct vkms_config *config)
@@ -277,9 +279,10 @@ static void vkms_destroy(struct vkms_config *config)
 
 static void __exit vkms_exit(void)
 {
-	if (default_config->dev)
-		vkms_destroy(default_config);
+	if (!default_config)
+		return;
 
+	vkms_destroy(default_config);
 	kfree(default_config);
 }
 
drivers/gpu/drm/xlnx/zynqmp_dpsub.c +2 -0
index f5781939de9c..a25b22238e3d 100644
@@ -231,6 +231,8 @@ static int zynqmp_dpsub_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
+	dma_set_max_seg_size(&pdev->dev, DMA_BIT_MASK(32));
+
 	/* Try the reserved memory. Proceed if there's none. */
 	of_reserved_mem_device_init(&pdev->dev);
 
drivers/hid/Makefile +0 -1
index 082a728eac60..f5a06b62b385 100644
@@ -165,7 +165,6 @@ obj-$(CONFIG_USB_KBD)		+= usbhid/
 obj-$(CONFIG_I2C_HID_CORE)	+= i2c-hid/
 
 obj-$(CONFIG_INTEL_ISH_HID)	+= intel-ish-hid/
-obj-$(INTEL_ISH_FIRMWARE_DOWNLOADER)	+= intel-ish-hid/
 
 obj-$(CONFIG_AMD_SFH_HID)       += amd-sfh-hid/
 
drivers/hid/i2c-hid/i2c-hid-core.c +1 -1
index 045db6f0fb4c..3dcdd3368b46 100644
@@ -258,7 +258,7 @@ static int i2c_hid_get_report(struct i2c_hid *ihid,
 			     ihid->rawbuf, recv_len + sizeof(__le16));
 	if (error) {
 		dev_err(&ihid->client->dev,
-			"failed to set a report to device: %d\n", error);
+			"failed to get a report from device: %d\n", error);
 		return error;
 	}
 
drivers/hwmon/nct6775-core.c +2 -2
index 16f6b7ba2a5d..da4c3425d2d1 100644
@@ -273,8 +273,8 @@ static const s8 NCT6776_BEEP_BITS[NUM_BEEP_BITS] = {
 static const u16 NCT6776_REG_TOLERANCE_H[] = {
 	0x10c, 0x20c, 0x30c, 0x80c, 0x90c, 0xa0c, 0xb0c };
 
-static const u8 NCT6776_REG_PWM_MODE[] = { 0x04, 0, 0, 0, 0, 0 };
-static const u8 NCT6776_PWM_MODE_MASK[] = { 0x01, 0, 0, 0, 0, 0 };
+static const u8 NCT6776_REG_PWM_MODE[] = { 0x04, 0, 0, 0, 0, 0, 0 };
+static const u8 NCT6776_PWM_MODE_MASK[] = { 0x01, 0, 0, 0, 0, 0, 0 };
 
 static const u16 NCT6776_REG_FAN_MIN[] = {
 	0x63a, 0x63c, 0x63e, 0x640, 0x642, 0x64a, 0x64c };
drivers/hwtracing/coresight/coresight-catu.c +1 -1
index 3949ded0d4fa..c062bcc09466 100644
@@ -267,7 +267,7 @@ catu_init_sg_table(struct device *catu_dev, int node,
 	 * Each table can address upto 1MB and we can have
 	 * CATU_PAGES_PER_SYSPAGE tables in a system page.
 	 */
-	nr_tpages = DIV_ROUND_UP(size, SZ_1M) / CATU_PAGES_PER_SYSPAGE;
+	nr_tpages = DIV_ROUND_UP(size, CATU_PAGES_PER_SYSPAGE * SZ_1M);
 	catu_table = tmc_alloc_sg_table(catu_dev, node, nr_tpages,
 					size >> PAGE_SHIFT, pages);
 	if (IS_ERR(catu_table))
drivers/hwtracing/coresight/coresight-core.c +15 -5
index 4b80026db1ab..783e259c3761 100644
@@ -1465,18 +1465,20 @@ static void coresight_remove_conns(struct coresight_device *csdev)
 }
 
 /**
- * coresight_timeout - loop until a bit has changed to a specific register
- *			state.
+ * coresight_timeout_action - loop until a bit has changed to a specific register
+ *                  state, with a callback after every trial.
  * @csa: coresight device access for the device
  * @offset: Offset of the register from the base of the device.
  * @position: the position of the bit of interest.
  * @value: the value the bit should have.
+ * @cb: Call back after each trial.
  *
  * Return: 0 as soon as the bit has taken the desired state or -EAGAIN if
  * TIMEOUT_US has elapsed, which ever happens first.
  */
-int coresight_timeout(struct csdev_access *csa, u32 offset,
-		      int position, int value)
+int coresight_timeout_action(struct csdev_access *csa, u32 offset,
+		      int position, int value,
+			  coresight_timeout_cb_t cb)
 {
 	int i;
 	u32 val;
@@ -1492,7 +1494,8 @@ int coresight_timeout(struct csdev_access *csa, u32 offset,
 			if (!(val & BIT(position)))
 				return 0;
 		}
-
+		if (cb)
+			cb(csa, offset, position, value);
 		/*
 		 * Delay is arbitrary - the specification doesn't say how long
 		 * we are expected to wait.  Extra check required to make sure
@@ -1504,6 +1507,13 @@ int coresight_timeout(struct csdev_access *csa, u32 offset,
 
 	return -EAGAIN;
 }
+EXPORT_SYMBOL_GPL(coresight_timeout_action);
+
+int coresight_timeout(struct csdev_access *csa, u32 offset,
+		      int position, int value)
+{
+	return coresight_timeout_action(csa, offset, position, value, NULL);
+}
 EXPORT_SYMBOL_GPL(coresight_timeout);
 
 u32 coresight_relaxed_read32(struct coresight_device *csdev, u32 offset)
drivers/hwtracing/coresight/coresight-etm4x-core.c +43 -5

87 lines not on this page · raw message

drivers/i3c/master/svc-i3c-master.c +1 -1
index c5ab39f1e755..652a666909a5 100644
@@ -951,7 +951,7 @@ static int svc_i3c_update_ibirules(struct svc_i3c_master *master)
 
 	/* Create the IBIRULES register for both cases */
 	i3c_bus_for_each_i3cdev(&master->base.bus, dev) {
-		if (I3C_BCR_DEVICE_ROLE(dev->info.bcr) == I3C_BCR_I3C_MASTER)
+		if (!(dev->info.bcr & I3C_BCR_IBI_REQ_CAP))
 			continue;
 
 		if (dev->info.bcr & I3C_BCR_IBI_PAYLOAD) {
drivers/iio/accel/mma8452.c +7 -3
index f42a88711486..16a0de6002be 100644
@@ -711,7 +711,7 @@ static int mma8452_write_raw(struct iio_dev *indio_dev,
 			     int val, int val2, long mask)
 {
 	struct mma8452_data *data = iio_priv(indio_dev);
-	int i, ret;
+	int i, j, ret;
 
 	ret = iio_device_claim_direct_mode(indio_dev);
 	if (ret)
@@ -771,14 +771,18 @@ static int mma8452_write_raw(struct iio_dev *indio_dev,
 		break;
 
 	case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
-		ret = mma8452_get_odr_index(data);
+		j = mma8452_get_odr_index(data);
 
 		for (i = 0; i < ARRAY_SIZE(mma8452_os_ratio); i++) {
-			if (mma8452_os_ratio[i][ret] == val) {
+			if (mma8452_os_ratio[i][j] == val) {
 				ret = mma8452_set_power_mode(data, i);
 				break;
 			}
 		}
+		if (i == ARRAY_SIZE(mma8452_os_ratio)) {
+			ret = -EINVAL;
+			break;
+		}
 		break;
 	default:
 		ret = -EINVAL;
drivers/iio/accel/msa311.c +15 -11
index 6ddcc3c2f840..5927df633e1f 100644
@@ -593,23 +593,25 @@ static int msa311_read_raw_data(struct iio_dev *indio_dev,
 	__le16 axis;
 	int err;
 
-	err = pm_runtime_resume_and_get(dev);
+	err = iio_device_claim_direct_mode(indio_dev);
 	if (err)
 		return err;
 
-	err = iio_device_claim_direct_mode(indio_dev);
-	if (err)
+	err = pm_runtime_resume_and_get(dev);
+	if (err) {
+		iio_device_release_direct_mode(indio_dev);
 		return err;
+	}
 
 	mutex_lock(&msa311->lock);
 	err = msa311_get_axis(msa311, chan, &axis);
 	mutex_unlock(&msa311->lock);
 
-	iio_device_release_direct_mode(indio_dev);
-
 	pm_runtime_mark_last_busy(dev);
 	pm_runtime_put_autosuspend(dev);
 
+	iio_device_release_direct_mode(indio_dev);
+
 	if (err) {
 		dev_err(dev, "can't get axis %s (%pe)\n",
 			chan->datasheet_name, ERR_PTR(err));
@@ -755,10 +757,6 @@ static int msa311_write_samp_freq(struct iio_dev *indio_dev, int val, int val2)
 	unsigned int odr;
 	int err;
 
-	err = pm_runtime_resume_and_get(dev);
-	if (err)
-		return err;
-
 	/*
 	 * Sampling frequency changing is prohibited when buffer mode is
 	 * enabled, because sometimes MSA311 chip returns outliers during
@@ -768,6 +766,12 @@ static int msa311_write_samp_freq(struct iio_dev *indio_dev, int val, int val2)
 	if (err)
 		return err;
 
+	err = pm_runtime_resume_and_get(dev);
+	if (err) {
+		iio_device_release_direct_mode(indio_dev);
+		return err;
+	}
+
 	err = -EINVAL;
 	for (odr = 0; odr < ARRAY_SIZE(msa311_odr_table); odr++)
 		if (val == msa311_odr_table[odr].integral &&
@@ -778,11 +782,11 @@ static int msa311_write_samp_freq(struct iio_dev *indio_dev, int val, int val2)
 			break;
 		}
 
-	iio_device_release_direct_mode(indio_dev);
-
 	pm_runtime_mark_last_busy(dev);
 	pm_runtime_put_autosuspend(dev);
 
+	iio_device_release_direct_mode(indio_dev);
+
 	if (err)
 		dev_err(dev, "can't update frequency (%pe)\n", ERR_PTR(err));
 
drivers/iio/adc/ad4130.c +39 -2

59 lines not on this page · raw message

drivers/iio/adc/ad7124.c +31 -4
index d2060d394c8d..0e6baf017bfd 100644
@@ -147,7 +147,11 @@ struct ad7124_chip_info {
 struct ad7124_channel_config {
 	bool live;
 	unsigned int cfg_slot;
-	/* Following fields are used to compare equality. */
+	/*
+	 * Following fields are used to compare for equality. If you
+	 * make adaptations in it, you most likely also have to adapt
+	 * ad7124_find_similar_live_cfg(), too.
+	 */
 	struct_group(config_props,
 		enum ad7124_ref_sel refsel;
 		bool bipolar;
@@ -334,15 +338,38 @@ static struct ad7124_channel_config *ad7124_find_similar_live_cfg(struct ad7124_
 								  struct ad7124_channel_config *cfg)
 {
 	struct ad7124_channel_config *cfg_aux;
-	ptrdiff_t cmp_size;
 	int i;
 
-	cmp_size = sizeof_field(struct ad7124_channel_config, config_props);
+	/*
+	 * This is just to make sure that the comparison is adapted after
+	 * struct ad7124_channel_config was changed.
+	 */
+	static_assert(sizeof_field(struct ad7124_channel_config, config_props) ==
+		      sizeof(struct {
+				     enum ad7124_ref_sel refsel;
+				     bool bipolar;
+				     bool buf_positive;
+				     bool buf_negative;
+				     unsigned int vref_mv;
+				     unsigned int pga_bits;
+				     unsigned int odr;
+				     unsigned int odr_sel_bits;
+				     unsigned int filter_type;
+			     }));
+
 	for (i = 0; i < st->num_channels; i++) {
 		cfg_aux = &st->channels[i].cfg;
 
 		if (cfg_aux->live &&
-		    !memcmp(&cfg->config_props, &cfg_aux->config_props, cmp_size))
+		    cfg->refsel == cfg_aux->refsel &&
+		    cfg->bipolar == cfg_aux->bipolar &&
+		    cfg->buf_positive == cfg_aux->buf_positive &&
+		    cfg->buf_negative == cfg_aux->buf_negative &&
+		    cfg->vref_mv == cfg_aux->vref_mv &&
+		    cfg->pga_bits == cfg_aux->pga_bits &&
+		    cfg->odr == cfg_aux->odr &&
+		    cfg->odr_sel_bits == cfg_aux->odr_sel_bits &&
+		    cfg->filter_type == cfg_aux->filter_type)
 			return cfg_aux;
 	}
 
drivers/infiniband/core/device.c +9 -0
index 56dd030045a2..6769c42e46d4 100644
@@ -543,6 +543,8 @@ static struct class ib_class = {
 static void rdma_init_coredev(struct ib_core_device *coredev,
 			      struct ib_device *dev, struct net *net)
 {
+	bool is_full_dev = &dev->coredev == coredev;
+
 	/* This BUILD_BUG_ON is intended to catch layout change
 	 * of union of ib_core_device and device.
 	 * dev must be the first element as ib_core and providers
@@ -554,6 +556,13 @@ static void rdma_init_coredev(struct ib_core_device *coredev,
 
 	coredev->dev.class = &ib_class;
 	coredev->dev.groups = dev->groups;
+
+	/*
+	 * Don't expose hw counters outside of the init namespace.
+	 */
+	if (!is_full_dev && dev->hw_stats_attr_index)
+		coredev->dev.groups[dev->hw_stats_attr_index] = NULL;
+
 	device_initialize(&coredev->dev);
 	coredev->owner = dev;
 	INIT_LIST_HEAD(&coredev->port_list);
drivers/infiniband/core/mad.c +20 -18
index 58befbaaf0ad..242434c09e8d 100644
@@ -2671,11 +2671,11 @@ static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info,
 				    struct ib_mad_private *mad)
 {
 	unsigned long flags;
-	int post, ret;
 	struct ib_mad_private *mad_priv;
 	struct ib_sge sg_list;
 	struct ib_recv_wr recv_wr;
 	struct ib_mad_queue *recv_queue = &qp_info->recv_queue;
+	int ret = 0;
 
 	/* Initialize common scatter list fields */
 	sg_list.lkey = qp_info->port_priv->pd->local_dma_lkey;
@@ -2685,7 +2685,7 @@ static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info,
 	recv_wr.sg_list = &sg_list;
 	recv_wr.num_sge = 1;
 
-	do {
+	while (true) {
 		/* Allocate and map receive buffer */
 		if (mad) {
 			mad_priv = mad;
@@ -2693,10 +2693,8 @@ static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info,
 		} else {
 			mad_priv = alloc_mad_private(port_mad_size(qp_info->port_priv),
 						     GFP_ATOMIC);
-			if (!mad_priv) {
-				ret = -ENOMEM;
-				break;
-			}
+			if (!mad_priv)
+				return -ENOMEM;
 		}
 		sg_list.length = mad_priv_dma_size(mad_priv);
 		sg_list.addr = ib_dma_map_single(qp_info->port_priv->device,
@@ -2705,37 +2703,41 @@ static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info,
 						 DMA_FROM_DEVICE);
 		if (unlikely(ib_dma_mapping_error(qp_info->port_priv->device,
 						  sg_list.addr))) {
-			kfree(mad_priv);
 			ret = -ENOMEM;
-			break;
+			goto free_mad_priv;
 		}
 		mad_priv->header.mapping = sg_list.addr;
 		mad_priv->header.mad_list.mad_queue = recv_queue;
 		mad_priv->header.mad_list.cqe.done = ib_mad_recv_done;
 		recv_wr.wr_cqe = &mad_priv->header.mad_list.cqe;
-
-		/* Post receive WR */
 		spin_lock_irqsave(&recv_queue->lock, flags);
-		post = (++recv_queue->count < recv_queue->max_active);
-		list_add_tail(&mad_priv->header.mad_list.list, &recv_queue->list);
+		if (recv_queue->count >= recv_queue->max_active) {
+			/* Fully populated the receive queue */
+			spin_unlock_irqrestore(&recv_queue->lock, flags);
+			break;
+		}
+		recv_queue->count++;
+		list_add_tail(&mad_priv->header.mad_list.list,
+			      &recv_queue->list);
 		spin_unlock_irqrestore(&recv_queue->lock, flags);
+
 		ret = ib_post_recv(qp_info->qp, &recv_wr, NULL);
 		if (ret) {
 			spin_lock_irqsave(&recv_queue->lock, flags);
 			list_del(&mad_priv->header.mad_list.list);
 			recv_queue->count--;
 			spin_unlock_irqrestore(&recv_queue->lock, flags);
-			ib_dma_unmap_single(qp_info->port_priv->device,
-					    mad_priv->header.mapping,
-					    mad_priv_dma_size(mad_priv),
-					    DMA_FROM_DEVICE);
-			kfree(mad_priv);
 			dev_err(&qp_info->port_priv->device->dev,
 				"ib_post_recv failed: %d\n", ret);
 			break;
 		}
-	} while (post);
+	}
 
+	ib_dma_unmap_single(qp_info->port_priv->device,
+			    mad_priv->header.mapping,
+			    mad_priv_dma_size(mad_priv), DMA_FROM_DEVICE);
+free_mad_priv:
+	kfree(mad_priv);
 	return ret;
 }
 
drivers/infiniband/core/sysfs.c +1 -0
index 9f97bef02149..210092b9bf17 100644
@@ -988,6 +988,7 @@ int ib_setup_device_attrs(struct ib_device *ibdev)
 	for (i = 0; i != ARRAY_SIZE(ibdev->groups); i++)
 		if (!ibdev->groups[i]) {
 			ibdev->groups[i] = &data->group;
+			ibdev->hw_stats_attr_index = i;
 			return 0;
 		}
 	WARN(true, "struct ib_device->groups is too small");
drivers/infiniband/hw/erdma/erdma_cm.c +0 -1
index 771059a8eb7d..e349e8d2fb50 100644
@@ -705,7 +705,6 @@ static void erdma_accept_newconn(struct erdma_cep *cep)
 		erdma_cancel_mpatimer(new_cep);
 
 		erdma_cep_put(new_cep);
-		new_cep->sock = NULL;
 	}
 
 	if (new_s) {
drivers/infiniband/hw/mana/main.c +1 -1
index 6fa9b1253299..c4c49a3f11b0 100644
@@ -327,7 +327,7 @@ int mana_ib_gd_create_dma_region(struct mana_ib_dev *dev, struct ib_umem *umem,
 	unsigned int tail = 0;
 	u64 *page_addr_list;
 	void *request_buf;
-	int err;
+	int err = 0;
 
 	mdev = dev->gdma_dev;
 	gc = mdev->gdma_context;
drivers/infiniband/hw/mlx5/cq.c +1 -1
index 9773d2a3d97f..ee9acd58c512 100644
@@ -487,7 +487,7 @@ static int mlx5_poll_one(struct mlx5_ib_cq *cq,
 	}
 
 	qpn = ntohl(cqe64->sop_drop_qpn) & 0xffffff;
-	if (!*cur_qp || (qpn != (*cur_qp)->ibqp.qp_num)) {
+	if (!*cur_qp || (qpn != (*cur_qp)->trans_qp.base.mqp.qpn)) {
 		/* We do not have to take the QP table lock here,
 		 * because CQs will be locked while QPs are removed
 		 * from the table.
drivers/infiniband/hw/mlx5/odp.c +6 -4
index f1a0a324223c..7ad5db46ffce 100644
@@ -274,9 +274,6 @@ static bool mlx5_ib_invalidate_range(struct mmu_interval_notifier *mni,
 				blk_start_idx = idx;
 				in_block = 1;
 			}
-
-			/* Count page invalidations */
-			invalidations += idx - blk_start_idx + 1;
 		} else {
 			u64 umr_offset = idx & umr_block_mask;
 
@@ -286,14 +283,19 @@ static bool mlx5_ib_invalidate_range(struct mmu_interval_notifier *mni,
 						     MLX5_IB_UPD_XLT_ZAP |
 						     MLX5_IB_UPD_XLT_ATOMIC);
 				in_block = 0;
+				/* Count page invalidations */
+				invalidations += idx - blk_start_idx + 1;
 			}
 		}
 	}
-	if (in_block)
+	if (in_block) {
 		mlx5r_umr_update_xlt(mr, blk_start_idx,
 				     idx - blk_start_idx + 1, 0,
 				     MLX5_IB_UPD_XLT_ZAP |
 				     MLX5_IB_UPD_XLT_ATOMIC);
+		/* Count page invalidations */
+		invalidations += idx - blk_start_idx + 1;
+	}
 
 	mlx5_update_odp_stats(mr, invalidations, invalidations);
 
drivers/leds/led-core.c +18 -4
index 214ed81eb0e9..136cb7f7469b 100644
@@ -147,8 +147,19 @@ static void set_brightness_delayed(struct work_struct *ws)
 	 * before this work item runs once. To make sure this works properly
 	 * handle LED_SET_BRIGHTNESS_OFF first.
 	 */
-	if (test_and_clear_bit(LED_SET_BRIGHTNESS_OFF, &led_cdev->work_flags))
+	if (test_and_clear_bit(LED_SET_BRIGHTNESS_OFF, &led_cdev->work_flags)) {
 		set_brightness_delayed_set_brightness(led_cdev, LED_OFF);
+		/*
+		 * The consecutives led_set_brightness(LED_OFF),
+		 * led_set_brightness(LED_FULL) could have been executed out of
+		 * order (LED_FULL first), if the work_flags has been set
+		 * between LED_SET_BRIGHTNESS_OFF and LED_SET_BRIGHTNESS of this
+		 * work. To avoid ending with the LED turned off, turn the LED
+		 * on again.
+		 */
+		if (led_cdev->delayed_set_value != LED_OFF)
+			set_bit(LED_SET_BRIGHTNESS, &led_cdev->work_flags);
+	}
 
 	if (test_and_clear_bit(LED_SET_BRIGHTNESS, &led_cdev->work_flags))
 		set_brightness_delayed_set_brightness(led_cdev, led_cdev->delayed_set_value);
@@ -319,10 +330,13 @@ void led_set_brightness_nopm(struct led_classdev *led_cdev, unsigned int value)
 	 * change is done immediately afterwards (before the work runs),
 	 * it uses a separate work_flag.
 	 */
-	if (value) {
-		led_cdev->delayed_set_value = value;
+	led_cdev->delayed_set_value = value;
+	/* Ensure delayed_set_value is seen before work_flags modification */
+	smp_mb__before_atomic();
+
+	if (value)
 		set_bit(LED_SET_BRIGHTNESS, &led_cdev->work_flags);
-	} else {
+	else {
 		clear_bit(LED_SET_BRIGHTNESS, &led_cdev->work_flags);
 		clear_bit(LED_SET_BLINK, &led_cdev->work_flags);
 		set_bit(LED_SET_BRIGHTNESS_OFF, &led_cdev->work_flags);
drivers/media/dvb-frontends/dib8000.c +4 -1
index 2f5165918163..cfe59c3255f7 100644
@@ -2701,8 +2701,11 @@ static void dib8000_set_dds(struct dib8000_state *state, s32 offset_khz)
 	u8 ratio;
 
 	if (state->revision == 0x8090) {
+		u32 internal = dib8000_read32(state, 23) / 1000;
+
 		ratio = 4;
-		unit_khz_dds_val = (1<<26) / (dib8000_read32(state, 23) / 1000);
+
+		unit_khz_dds_val = (1<<26) / (internal ?: 1);
 		if (offset_khz < 0)
 			dds = (1 << 26) - (abs_offset_khz * unit_khz_dds_val);
 		else
drivers/media/platform/allegro-dvt/allegro-core.c +1 -0
index 7dffea2ad88a..4994a2e65fed 100644
@@ -3914,6 +3914,7 @@ static int allegro_probe(struct platform_device *pdev)
 	if (ret < 0) {
 		v4l2_err(&dev->v4l2_dev,
 			 "failed to request firmware: %d\n", ret);
+		v4l2_device_unregister(&dev->v4l2_dev);
 		return ret;
 	}
 
drivers/media/platform/verisilicon/hantro_g2_hevc_dec.c +1 -0
index a9d4ac84a8d8..d1971af5f7fa 100644
@@ -517,6 +517,7 @@ static void set_buffers(struct hantro_ctx *ctx)
 	hantro_reg_write(vpu, &g2_stream_len, src_len);
 	hantro_reg_write(vpu, &g2_strm_buffer_len, src_buf_len);
 	hantro_reg_write(vpu, &g2_strm_start_offset, 0);
+	hantro_reg_write(vpu, &g2_start_bit, 0);
 	hantro_reg_write(vpu, &g2_write_mvs_e, 1);
 
 	hantro_write_addr(vpu, G2_TILE_SIZES_ADDR, ctx->hevc_dec.tile_sizes.dma);
drivers/media/rc/streamzap.c +1 -1
index 9b209e687f25..2ce62fe5d60f 100644
@@ -385,8 +385,8 @@ static void streamzap_disconnect(struct usb_interface *interface)
 	if (!sz)
 		return;
 
-	rc_unregister_device(sz->rdev);
 	usb_kill_urb(sz->urb_in);
+	rc_unregister_device(sz->rdev);
 	usb_free_urb(sz->urb_in);
 	usb_free_coherent(usbdev, sz->buf_in_len, sz->buf_in, sz->dma_in);
 
drivers/memory/omap-gpmc.c +0 -20
index d78f73db37c8..ab0985bb5789 100644
@@ -2247,26 +2247,6 @@ static int gpmc_probe_generic_child(struct platform_device *pdev,
 		goto err;
 	}
 
-	if (of_node_name_eq(child, "nand")) {
-		/* Warn about older DT blobs with no compatible property */
-		if (!of_property_read_bool(child, "compatible")) {
-			dev_warn(&pdev->dev,
-				 "Incompatible NAND node: missing compatible");
-			ret = -EINVAL;
-			goto err;
-		}
-	}
-
-	if (of_node_name_eq(child, "onenand")) {
-		/* Warn about older DT blobs with no compatible property */
-		if (!of_property_read_bool(child, "compatible")) {
-			dev_warn(&pdev->dev,
-				 "Incompatible OneNAND node: missing compatible");
-			ret = -EINVAL;
-			goto err;
-		}
-	}
-
 	if (of_match_node(omap_nand_ids, child)) {
 		/* NAND specific setup */
 		val = 8;
drivers/mfd/sm501.c +3 -3
index 28027982cf69..509dcb226cbf 100644
@@ -920,7 +920,7 @@ static void sm501_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
 {
 	struct sm501_gpio_chip *smchip = gpiochip_get_data(chip);
 	struct sm501_gpio *smgpio = smchip->ourgpio;
-	unsigned long bit = 1 << offset;
+	unsigned long bit = BIT(offset);
 	void __iomem *regs = smchip->regbase;
 	unsigned long save;
 	unsigned long val;
@@ -946,7 +946,7 @@ static int sm501_gpio_input(struct gpio_chip *chip, unsigned offset)
 	struct sm501_gpio_chip *smchip = gpiochip_get_data(chip);
 	struct sm501_gpio *smgpio = smchip->ourgpio;
 	void __iomem *regs = smchip->regbase;
-	unsigned long bit = 1 << offset;
+	unsigned long bit = BIT(offset);
 	unsigned long save;
 	unsigned long ddr;
 
@@ -971,7 +971,7 @@ static int sm501_gpio_output(struct gpio_chip *chip,
 {
 	struct sm501_gpio_chip *smchip = gpiochip_get_data(chip);
 	struct sm501_gpio *smgpio = smchip->ourgpio;
-	unsigned long bit = 1 << offset;
+	unsigned long bit = BIT(offset);
 	void __iomem *regs = smchip->regbase;
 	unsigned long save;
 	unsigned long val;
drivers/mmc/host/omap.c +13 -6
index 13fa8588e38c..0293a4dbe7e0 100644
@@ -1276,19 +1276,25 @@ static int mmc_omap_new_slot(struct mmc_omap_host *host, int id)
 	/* Check for some optional GPIO controls */
 	slot->vsd = devm_gpiod_get_index_optional(host->dev, "vsd",
 						  id, GPIOD_OUT_LOW);
-	if (IS_ERR(slot->vsd))
-		return dev_err_probe(host->dev, PTR_ERR(slot->vsd),
+	if (IS_ERR(slot->vsd)) {
+		r = dev_err_probe(host->dev, PTR_ERR(slot->vsd),
 				     "error looking up VSD GPIO\n");
+		goto err_free_host;
+	}
 	slot->vio = devm_gpiod_get_index_optional(host->dev, "vio",
 						  id, GPIOD_OUT_LOW);
-	if (IS_ERR(slot->vio))
-		return dev_err_probe(host->dev, PTR_ERR(slot->vio),
+	if (IS_ERR(slot->vio)) {
+		r = dev_err_probe(host->dev, PTR_ERR(slot->vio),
 				     "error looking up VIO GPIO\n");
+		goto err_free_host;
+	}
 	slot->cover = devm_gpiod_get_index_optional(host->dev, "cover",
 						    id, GPIOD_IN);
-	if (IS_ERR(slot->cover))
-		return dev_err_probe(host->dev, PTR_ERR(slot->cover),
+	if (IS_ERR(slot->cover)) {
+		r = dev_err_probe(host->dev, PTR_ERR(slot->cover),
 				     "error looking up cover switch GPIO\n");
+		goto err_free_host;
+	}
 
 	host->slots[id] = slot;
 
@@ -1348,6 +1354,7 @@ static int mmc_omap_new_slot(struct mmc_omap_host *host, int id)
 		device_remove_file(&mmc->class_dev, &dev_attr_slot_name);
 err_remove_host:
 	mmc_remove_host(mmc);
+err_free_host:
 	mmc_free_host(mmc);
 	return r;
 }
drivers/mmc/host/sdhci-omap.c +2 -2
index 0a26831b3b67..713ac3032766 100644
@@ -1339,8 +1339,8 @@ static int sdhci_omap_probe(struct platform_device *pdev)
 	/* R1B responses is required to properly manage HW busy detection. */
 	mmc->caps |= MMC_CAP_NEED_RSP_BUSY;
 
-	/* Allow card power off and runtime PM for eMMC/SD card devices */
-	mmc->caps |= MMC_CAP_POWER_OFF_CARD | MMC_CAP_AGGRESSIVE_PM;
+	/*  Enable SDIO card power off. */
+	mmc->caps |= MMC_CAP_POWER_OFF_CARD;
 
 	ret = sdhci_setup_host(host);
 	if (ret)
drivers/mmc/host/sdhci-pxav3.c +1 -0
index 3af43ac05825..376fd927ae73 100644
@@ -399,6 +399,7 @@ static int sdhci_pxav3_probe(struct platform_device *pdev)
 	if (!IS_ERR(pxa->clk_core))
 		clk_prepare_enable(pxa->clk_core);
 
+	host->mmc->caps |= MMC_CAP_NEED_RSP_BUSY;
 	/* enable 1/8V DDR capable */
 	host->mmc->caps |= MMC_CAP_1_8V_DDR;
 
drivers/net/arcnet/com20020-pci.c +16 -1
index 7b5c8bb02f11..e7db6a4e4dc9 100644
@@ -250,18 +250,33 @@ static int com20020pci_probe(struct pci_dev *pdev,
 			card->tx_led.default_trigger = devm_kasprintf(&pdev->dev,
 							GFP_KERNEL, "arc%d-%d-tx",
 							dev->dev_id, i);
+			if (!card->tx_led.default_trigger) {
+				ret = -ENOMEM;
+				goto err_free_arcdev;
+			}
 			card->tx_led.name = devm_kasprintf(&pdev->dev, GFP_KERNEL,
 							"pci:green:tx:%d-%d",
 							dev->dev_id, i);
-
+			if (!card->tx_led.name) {
+				ret = -ENOMEM;
+				goto err_free_arcdev;
+			}
 			card->tx_led.dev = &dev->dev;
 			card->recon_led.brightness_set = led_recon_set;
 			card->recon_led.default_trigger = devm_kasprintf(&pdev->dev,
[… more lines in the raw message]

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

drivers/net/dsa/mv88e6xxx/chip.c +7 -4
index a39b33353ca6..8b01ee3e684a 100644

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

drivers/net/dsa/mv88e6xxx/phy.c +3 -0
index 8bb88b3d900d..ee9e5d7e5277 100644

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

drivers/net/ethernet/ibm/ibmveth.c +27 -12
index a8d79ee350f8..a332a0e3154a 100644

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

drivers/net/ethernet/intel/e1000e/defines.h +3 -0
index 63c3c79380a1..0a35d36c2c85 100644

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

drivers/net/ethernet/intel/e1000e/ich8lan.c +75 -5

80 lines not on this page · raw message

drivers/net/ethernet/intel/e1000e/ich8lan.h +4 -0
index 2504b11c3169..5feb589a9b5f 100644

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

drivers/net/ethernet/marvell/mvpp2/mvpp2.h +3 -0
index 9e02e4367bec..9bd3d76b5fe2 100644

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

drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +2 -1
index 34051c9abd97..fce57faf345c 100644

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

drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c +135 -66

201 lines not on this page · raw message

drivers/net/ethernet/marvell/octeontx2/af/rvu.c +1 -1
index 524173722223..67e6d755b30e 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c +1 -1
index bffe04e6d025..774d8b034725 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/params.c +5 -3
index 30507b7c2fb1..775010e94cb7 100644

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

drivers/net/usb/rndis_host.c +14 -2
index 7b3739b29c8f..bb0bf1415872 100644

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

drivers/net/usb/usbnet.c +3 -3
index 08cbc8e4b361..ac0458b96738 100644

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

drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +13 -7
index 7710367c319e..14f3c4900f56 100644

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

drivers/net/wireless/intel/iwlwifi/fw/dbg.c +58 -28

86 lines not on this page · raw message

drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c +4 -4
index 8cff24d5f5f4..e4efd3349bc1 100644

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

drivers/ntb/hw/intel/ntb_hw_gen3.c +3 -0
index ffcfc3e02c35..a5aa96a31f4a 100644

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

drivers/ntb/hw/mscc/ntb_hw_switchtec.c +1 -1
index 0a94c634ddc2..b5f93f07e22a 100644

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

drivers/ntb/test/ntb_perf.c +1 -3
index 72bc1d017a46..dfd175f79e8f 100644

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

drivers/nvme/host/pci.c +25 -9
index a36ec6df6624..a763df0200ab 100644

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

drivers/nvme/host/tcp.c +3 -2
index 2a8bd812b1a6..84db7f4f861c 100644

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

drivers/pci/controller/cadence/pcie-cadence-ep.c +1 -2
index b8b655d4047e..a87dab9abba2 100644

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

drivers/pci/controller/cadence/pcie-cadence.h +1 -1
index d55dfd173f22..9efb71cbe699 100644

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

drivers/pci/controller/dwc/pcie-histb.c +8 -4
index fd484cc7c481..335b26635ee9 100644

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

drivers/pci/controller/pcie-brcmstb.c +5 -4
index e47a77f943b1..44d385f5c27c 100644

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

drivers/pci/controller/pcie-xilinx-cpm.c +6 -4
index 4a787a941674..51379d791005 100644

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

drivers/pci/hotplug/pciehp_hpc.c +3 -1
index fd713abdfb9f..b0bccc4d0da2 100644

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

drivers/pci/pci.c +4 -0
index 095fa1910d36..bcce569a8339 100644

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

drivers/pci/pcie/aspm.c +9 -8
index 0aef6dc055b9..4e995ca4de01 100644

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

drivers/pci/pcie/portdrv.c +5 -3
index 46fad0d813b2..d6e5fef54c3b 100644

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

drivers/pci/probe.c +2 -3
index 03b519a22840..bcd1ba829e1f 100644

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

drivers/pci/setup-bus.c +1 -2
index 5a143ad5fca2..fba402f4f633 100644

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

drivers/pinctrl/intel/pinctrl-intel.c +0 -1
index 3be04ab760d3..9775f6be1c1e 100644

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

drivers/pinctrl/renesas/pinctrl-rza2.c +2 -0
index 990b96d45967..c5d733216508 100644

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

drivers/pinctrl/renesas/pinctrl-rzg2l.c +2 -0
index 2ea6ef99cc70..ac629c72d592 100644

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

drivers/pinctrl/renesas/pinctrl-rzv2m.c +2 -0
index 52aeafaba4b6..b89ae65e71b0 100644

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

drivers/pinctrl/tegra/pinctrl-tegra.c +3 -0
index 734c71ef005b..7c12a3470642 100644

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

drivers/platform/x86/dell/dell-wmi-ddv.c +4 -2
index db1e9240dd02..8fb434b6ab4b 100644

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

drivers/platform/x86/intel/hid.c +7 -0
index 7457ca2b27a6..36209997ba98 100644

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

drivers/platform/x86/intel/speed_select_if/isst_if_common.c +1 -1
index 9040a3d39924..7760ecab3e83 100644

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

drivers/platform/x86/intel/vsec.c +7 -0
index 343ab6a82c01..666ed3698afe 100644

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

drivers/power/supply/max77693_charger.c +1 -1
index 794c8c054450..0e7b3277d481 100644

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

drivers/remoteproc/qcom_q6v5_mss.c +17 -4
index 2d717f2ed396..8f93489aa0d4 100644

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

drivers/remoteproc/qcom_q6v5_pas.c +6 -6
index fd6bf9e77afc..f6336bf4a38b 100644

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

drivers/remoteproc/remoteproc_core.c +1 -0
index e230af51a99b..0c363ca566ff 100644

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

drivers/scsi/qla2xxx/qla_os.c +1 -1
index 91d12198cc6c..0a3a5af67f0a 100644

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

drivers/soundwire/slave.c +1 -0
index 060c2982e26b..0aadfc201028 100644

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

drivers/staging/rtl8723bs/Kconfig +1 -0
index f23e29b679fb..14afcbbd6104 100644

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

drivers/thermal/intel/int340x_thermal/int3402_thermal.c +3 -0
index 43fa351e2b9e..b7fdf25bfd23 100644

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

drivers/tty/n_tty.c +7 -6
index e05341b85c59..788035f0c1ab 100644

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

drivers/usb/host/xhci-mem.c +3 -3
index b0137eac7ab3..fbc486546b85 100644

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

drivers/usb/typec/ucsi/ucsi_ccg.c +2 -3
index cf3c8e552def..7c7f388aac96 100644

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

drivers/vhost/scsi.c +13 -12
index 99813232c25e..8d8a22504d71 100644

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

drivers/video/console/Kconfig +1 -1
index 30577b1d3de5..cdbcb86ff394 100644

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

drivers/video/fbdev/au1100fb.c +3 -1
index 648d6cac86e8..682258968079 100644

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

drivers/video/fbdev/sm501fb.c +7 -0
index 65c799ac5604..b9d72f368c6c 100644

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

fs/affs/file.c +5 -4
index 04c018e19602..93b319917c9a 100644

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

fs/btrfs/extent-tree.c +4 -1
index 021cf468274b..af03a1c6ba76 100644

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

fs/exec.c +9 -6
index 4a6255aa4ea7..ee71a315cc51 100644

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

fs/exfat/fatent.c +1 -1
index 74590041fb2c..24e1e05f9f34 100644

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

fs/ext4/dir.c +3 -0
index 7ea33c3fe94e..6682b8ab11f1 100644

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

fs/ext4/super.c +17 -10
index f019ce64eba4..a4d7af7495b7 100644

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

fs/fuse/dax.c +0 -1
index 12ef91d170bb..7faf1af59d5d 100644

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

fs/fuse/dir.c +1 -1
index 89bffaed421f..e4d6cc0d2332 100644

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

fs/fuse/file.c +2 -2
index ceb9f7d23038..3e4c3fcb588b 100644

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

fs/hostfs/hostfs.h +1 -1
index 8b39c15c408c..15b2f094d36e 100644

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

fs/hostfs/hostfs_kern.c +6 -1
index ff201753fd18..44fe76174e12 100644

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

fs/hostfs/hostfs_user.c +34 -25

59 lines not on this page · raw message

fs/isofs/dir.c +2 -1
index eb2f8273e6f1..09df40b612fb 100644

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

fs/jfs/jfs_dtree.c +2 -1
index 8f85177f284b..93db6eec4465 100644

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

fs/jfs/xattr.c +10 -5
index 7252941bf165..b3b08c5ae701 100644

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

fs/nfs/delegation.c +18 -15
index 4bf2526a3a18..55cfa1c4e0a6 100644

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

fs/nfs/sysfs.c +21 -1
index 7b59a40d40c0..784f7c1d003b 100644

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

fs/nfsd/nfs4state.c +23 -8
index a25cb2ff1b0b..140784446ad2 100644

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

fs/ntfs3/index.c +2 -2
index 9089c58a005c..28aae6ea1e61 100644

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

fs/ntfs3/ntfs.h +1 -1
index 964e27c7b901..c1d1c4a7cf4d 100644

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

fs/ocfs2/alloc.c +8 -0
index f0937902f7b4..e6191249169e 100644

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

fs/proc/base.c +1 -1
index 91fe20b7657c..d444155581ca 100644

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

fs/smb/client/cifsacl.c +6 -2
index 1fc1683b15bd..db9076da2182 100644

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

fs/smb/client/connect.c +8 -8
index 198681d14153..2d2e41ac9e9d 100644

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

fs/smb/server/auth.c +3 -3
index 58380a986af5..5345d2417c7f 100644

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

fs/smb/server/mgmt/user_session.c +27 -6
index 9a134181df61..82dcc86a32c5 100644

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

fs/smb/server/mgmt/user_session.h +2 -0
index c1c4b20bd5c6..f21348381d59 100644

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

fs/smb/server/oplock.c +10 -2
index 11e82a14a40a..371a5ead8663 100644

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

fs/smb/server/smb2pdu.c +29 -11
index 58e5cc2b1f3e..8877f9e900b2 100644

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

fs/smb/server/smbacl.c +5 -0
index 109036e2227c..b90f893762f4 100644

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

include/drm/display/drm_dp_mst_helper.h +7 -0
index 46705dacdd08..7751be9452c1 100644

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

include/linux/context_tracking_irq.h +4 -4
index c50b5670c4a5..197916ee91a4 100644

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

include/linux/coresight.h +4 -0
index a269fffaf991..dccfadde84f4 100644

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

include/linux/fwnode.h +1 -1
index 525cc031596b..7efb4493e51c 100644

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

include/linux/interrupt.h +4 -4
index 4a1dc88ddbff..2610a7d156da 100644

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

include/linux/pgtable.h +22 -6
index 8b7daccd11be..3c3a7dede0ef 100644

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

include/linux/pm_runtime.h +2 -0
index 7c9b35448563..406855d73901 100644

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

include/linux/rcupdate.h +1 -1
index 7602d1f8a9ec..72da69cc5764 100644

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

include/linux/sched/smt.h +1 -1
index 59d3736c454c..737b50f40137 100644

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

include/linux/trace.h +2 -2
index 2a70a447184c..fdcd76b7be83 100644

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

include/linux/trace_events.h +14 -0
index aa1bc4172662..fe95d13c5e4d 100644

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

include/rdma/ib_verbs.h +1 -0
index bc459d061629..c7e9ec9e9a80 100644

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

kernel/events/core.c +35 -11

46 lines not on this page · raw message

kernel/events/ring_buffer.c +1 -1
index b0930b418552..52de76ef8723 100644

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

kernel/events/uprobes.c +12 -1
index f5dfc2f22d79..a554f43d3ceb 100644

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

kernel/fork.c +4 -0
index 23efaa2c42e4..97f433fb4b5e 100644

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

kernel/kexec_elf.c +1 -1
index d3689632e8b9..3a5c25b2adc9 100644

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

kernel/locking/semaphore.c +9 -4
index 34bfae72f295..de9117c0e671 100644

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

kernel/sched/deadline.c +1 -1
index b9e99bc3b1cf..6c639e48e49a 100644

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

kernel/trace/bpf_trace.c +1 -1
index 9d8f60e0cb55..545393601be8 100644

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

kernel/trace/ring_buffer.c +2 -2
index 61caff3d4091..62d93db72b0a 100644

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

kernel/trace/trace.c +19 -4
index 9d9af60b238e..a41c99350a5b 100644

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

kernel/trace/trace.h +1 -0
index e45756f1ac2b..db0d2641125e 100644

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

kernel/trace/trace_boot.c +1 -1
index 7ccc7a8e155b..dbe29b4c6a7a 100644

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

kernel/trace/trace_events.c +59 -3

62 lines not on this page · raw message

kernel/trace/trace_events_hist.c +110 -23

133 lines not on this page · raw message

kernel/trace/trace_events_synth.c +34 -2
index 624e0867316d..ccd6703ac50b 100644

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

kernel/trace/trace_functions_graph.c +1 -0
index c35fbaab2a47..4d4808186a0f 100644

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

kernel/trace/trace_irqsoff.c +0 -2
index ba37f768e2f2..6c9db857fe0e 100644

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

kernel/trace/trace_osnoise.c +0 -1
index cc155590018f..5bd781359d38 100644

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

kernel/trace/trace_sched_wakeup.c +0 -2
index 0469a04a355f..330aee1c1a49 100644

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

kernel/watch_queue.c +9 -0
index 778b4056700f..17254597accd 100644

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

lib/842/842_compress.c +2 -0
index c02baa4168e1..055356508d97 100644

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

lib/overflow_kunit.c +1 -2
index 34db0b3aa502..9493a1b28b9e 100644

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

mm/memory.c +4 -9
index 65f1865cb461..d04faa09eaf6 100644

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

net/can/af_can.c +6 -6
index c469fc187f0c..cdad0be43e8f 100644

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

net/can/af_can.h +6 -6
index 7c2d9161e224..22f3352c77fe 100644

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

net/can/proc.c +27 -19

46 lines not on this page · raw message

net/core/dst.c +8 -0
index 137b8d1c7220..aad197e761cb 100644

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

net/core/rtnetlink.c +3 -0
index 4acde7067519..26c520d1af6e 100644

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

net/ipv4/ip_tunnel_core.c +2 -2
index 80ccd6661aa3..deb08cab4464 100644

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

net/ipv4/udp.c +7 -9
index b84d18fcd9e2..dc91699ce032 100644

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

net/ipv6/addrconf.c +25 -12
index 8360939acf85..bb9add46e382 100644

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

net/ipv6/calipso.c +18 -3
index 1578ed9e97d8..c07e3da08d2a 100644

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

net/ipv6/route.c +38 -4

42 lines not on this page · raw message

net/mac80211/sta_info.c +17 -3
index 5d71e8d084c4..64cf5589989b 100644

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

net/netfilter/nf_tables_api.c +2 -2
index 9e9544f81942..18ae39cf4188 100644

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

net/netfilter/nft_set_hash.c +2 -1
index 0370f69dce86..2f1012bde1f3 100644

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

net/netfilter/nft_tunnel.c +3 -3
index f735d79d8be5..d499eb3f4f29 100644

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

net/openvswitch/actions.c +0 -6
index 9445ca97163b..6c5afb4ad67b 100644

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

net/sched/act_tunnel_key.c +1 -1
index 0c8aa7e686ea..99fb869aee91 100644

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

net/sched/cls_flower.c +1 -1
index bcf1b8012b2c..b00e491e8130 100644

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

net/sched/sch_skbprio.c +0 -3
index 5df2dacb7b1a..05aa363a7fee 100644

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

net/vmw_vsock/af_vsock.c +5 -1
index 622875a6f787..f8f1a49689da 100644

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

samples/ftrace/sample-trace-array.c +1 -1
index 6aba02a31c96..d0ee9001c7b3 100644

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

scripts/selinux/install_policy.sh +6 -9
index 24086793b0d8..db40237e60ce 100755

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

security/smack/smack.h +6 -0
index 041688e5a77a..5e4a3c3144dd 100644

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

security/smack/smack_lsm.c +9 -1
index 4625674f0e95..d272cf8160d5 100644

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

sound/pci/hda/patch_realtek.c +31 -2
index b3cd6090f46a..5179061f57b5 100644

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

sound/soc/codecs/cs35l41-spi.c +3 -1
index 5c8bb24909eb..bd73944758c6 100644

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

sound/soc/codecs/rt5665.c +4 -20
index a39de4a7df00..532d1d6958af 100644

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

sound/soc/fsl/imx-card.c +4 -0
index f8144bf4c90d..7128bcf3a743 100644

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

sound/soc/ti/j721e-evm.c +2 -0
index 6a969874c927..5e0bdbd34a83 100644

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

tools/lib/bpf/linker.c +1 -1
index 736ebceea233..a3a190d13db8 100644

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

tools/objtool/check.c +4 -31
index 6e59e7f578ff..9102ad5985cc 100644

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

tools/perf/bench/syscall.c +13 -9
index ea4dfc07cbd6..e7dc216f717f 100644

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

tools/perf/tests/shell/coresight/asm_pure_loop/asm_pure_loop.S +2 -0
index 75cf084a927d..577760046772 100644

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

tools/perf/util/arm-spe.c +7 -1
index afbd5869f6bf..9848310cee5f 100644

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

tools/perf/util/evlist.c +6 -7
index 1eadb4f7c1b9..f86a1eb4ea36 100644

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

tools/perf/util/pmu.c +4 -3
index 27393e432792..2587c4b463fa 100644

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

tools/perf/util/pmu.h +5 -0
index aca4238f06a6..5a03c361cb04 100644

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

tools/perf/util/pmus.c +17 -3
index f0577aa7eca8..dda5ba9c73fd 100644

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

tools/perf/util/python.c +12 -5
index b01b0e551056..06a1e09d7349 100644

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

tools/perf/util/stat-shadow.c +2 -1
index 2affa4d45aa2..56b186d30745 100644

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

tools/perf/util/units.c +1 -1
index 32c39cfe209b..4c6a86e1cb54 100644

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

tools/testing/selftests/bpf/prog_tests/bloom_filter_map.c +5 -0
index f79815b7e951..fff16cdc93f2 100644

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

tools/testing/selftests/bpf/progs/strncmp_bench.c +4 -1
index 18373a7df76e..f47bf88f8d2a 100644

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

tools/testing/selftests/mm/cow.c +1 -1
index 6f2f83990441..76d37904172d 100644

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

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

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