Linux 6.6.87
Greg Kroah-Hartman
maintainerI'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
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/vendor-prefixes.yaml +2 -0
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 extmove_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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 *firmwarecs_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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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,
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/defines.h +3 -0
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
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/mvpp2/mvpp2.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +2 -1
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
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/params.c +5 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +13 -7
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
Lines of this file are not shown. View the raw message.
drivers/pci/controller/cadence/pcie-cadence-ep.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/pci/controller/cadence/pcie-cadence.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/pci/controller/dwc/pcie-histb.c +8 -4
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pcie-xilinx-cpm.c +6 -4
Lines of this file are not shown. View the raw message.
drivers/pinctrl/renesas/pinctrl-rzg2l.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/pinctrl/renesas/pinctrl-rzv2m.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/platform/x86/dell/dell-wmi-ddv.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/platform/x86/intel/speed_select_if/isst_if_common.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/power/supply/max77693_charger.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/thermal/intel/int340x_thermal/int3402_thermal.c +3 -0
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
include/drm/display/drm_dp_mst_helper.h +7 -0
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/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
net/can/proc.c +27 -19
46 lines not on this page · raw message
net/ipv6/route.c +38 -4
42 lines not on this page · raw message
tools/perf/tests/shell/coresight/asm_pure_loop/asm_pure_loop.S +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/bloom_filter_map.c +5 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/strncmp_bench.c +4 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.