Linux 6.10.7
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.10.7 kernel.
All users of the 6.10 kernel series must upgrade.
The updated 6.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.10.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/ABI/testing/sysfs-devices-system-cpu | 3 Makefile | 4 arch/arm64/kernel/acpi_numa.c | 2 arch/arm64/kernel/setup.c | 3 arch/arm64/kernel/smp.c | 2 arch/arm64/kvm/sys_regs.c | 6 arch/arm64/kvm/vgic/vgic-debug.c | 2 arch/arm64/kvm/vgic/vgic.h | 7 arch/mips/kernel/cpu-probe.c | 4 arch/powerpc/include/asm/topology.h | 13 arch/riscv/kernel/traps.c | 4 arch/riscv/mm/init.c | 4 arch/s390/boot/startup.c | 55 +-- arch/s390/boot/vmem.c | 14 arch/s390/boot/vmlinux.lds.S | 7 arch/s390/include/asm/page.h | 3 arch/s390/include/asm/uv.h | 5 arch/s390/kernel/vmlinux.lds.S | 2 arch/s390/kvm/kvm-s390.h | 7 arch/s390/tools/relocs.c | 2 block/blk-mq-tag.c | 5 drivers/acpi/acpica/acevents.h | 6 drivers/acpi/acpica/evregion.c | 12 drivers/acpi/acpica/evxfregn.c | 64 --- drivers/acpi/ec.c | 14 drivers/acpi/internal.h | 1 drivers/acpi/scan.c | 2 drivers/acpi/video_detect.c | 22 + drivers/ata/pata_macio.c | 23 - drivers/atm/idt77252.c | 9 drivers/bluetooth/btintel.c | 10 drivers/bluetooth/btintel_pcie.c | 3 drivers/bluetooth/btmtksdio.c | 3 drivers/bluetooth/btrtl.c | 1 drivers/bluetooth/btusb.c | 4 drivers/bluetooth/hci_qca.c | 4 drivers/bluetooth/hci_vhci.c | 2 drivers/char/xillybus/xillyusb.c | 42 +- drivers/gpio/gpio-mlxbf3.c | 14 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 53 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | 1 drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c | 4 drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c | 63 +++ drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.h | 7 drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c | 1 drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 18 - drivers/gpu/drm/amd/amdgpu/soc15d.h | 6 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 32 + drivers/gpu/drm/amd/display/dc/hwss/dcn10/dcn10_hwseq.c | 4 drivers/gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c | 3 drivers/gpu/drm/i915/display/intel_dp_hdcp.c | 4 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 4 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 4 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 14 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 20 - drivers/gpu/drm/msm/dp/dp_ctrl.c | 2 drivers/gpu/drm/msm/dp/dp_panel.c | 19 - drivers/gpu/drm/msm/msm_mdss.c | 2 drivers/gpu/drm/nouveau/nvkm/core/firmware.c | 9 drivers/gpu/drm/nouveau/nvkm/falcon/fw.c | 6 drivers/gpu/drm/v3d/v3d_sched.c | 14 drivers/gpu/drm/xe/display/xe_display.c | 6 drivers/gpu/drm/xe/xe_device.c | 4 drivers/gpu/drm/xe/xe_exec_queue.c | 19 - drivers/gpu/drm/xe/xe_exec_queue_types.h | 10 drivers/gpu/drm/xe/xe_gt_pagefault.c | 18 - drivers/gpu/drm/xe/xe_guc_submit.c | 8 drivers/gpu/drm/xe/xe_hw_fence.c | 59 ++- drivers/gpu/drm/xe/xe_hw_fence.h | 7 drivers/gpu/drm/xe/xe_lrc.c | 48 ++ drivers/gpu/drm/xe/xe_lrc.h | 3 drivers/gpu/drm/xe/xe_mmio.c | 41 +- drivers/gpu/drm/xe/xe_mmio.h | 2 drivers/gpu/drm/xe/xe_ring_ops.c | 22 - drivers/gpu/drm/xe/xe_sched_job.c | 180 +++++----- drivers/gpu/drm/xe/xe_sched_job.h | 7 drivers/gpu/drm/xe/xe_sched_job_types.h | 20 + drivers/gpu/drm/xe/xe_trace.h | 11 drivers/hid/wacom_wac.c | 4 drivers/i2c/busses/i2c-qcom-geni.c | 4 drivers/i2c/busses/i2c-tegra.c | 4 drivers/input/input-mt.c | 3 drivers/input/serio/i8042-acpipnpio.h | 20 - drivers/input/serio/i8042.c | 10 drivers/iommu/io-pgfault.c | 1 drivers/iommu/iommufd/device.c | 2 drivers/md/dm-ioctl.c | 22 + drivers/md/dm.c | 4 drivers/md/persistent-data/dm-space-map-metadata.c | 4 drivers/md/raid1.c | 14 drivers/misc/fastrpc.c | 22 - drivers/mmc/core/mmc_test.c | 9 drivers/mmc/host/dw_mmc.c | 8 drivers/mmc/host/mtk-sd.c | 8 drivers/net/bonding/bond_main.c | 21 - drivers/net/bonding/bond_options.c | 2 drivers/net/dsa/microchip/ksz_ptp.c | 5 drivers/net/dsa/mv88e6xxx/global1_atu.c | 3 drivers/net/dsa/ocelot/felix.c | 11 drivers/net/dsa/vitesse-vsc73xx-core.c | 45 ++ drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 5 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c | 3 drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c | 7 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 3 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 28 + drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c | 3 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 4 drivers/net/ethernet/intel/ice/devlink/devlink_port.c | 4 drivers/net/ethernet/intel/ice/ice_base.c | 21 + drivers/net/ethernet/intel/ice/ice_txrx.c | 47 -- drivers/net/ethernet/intel/igb/igb_main.c | 1 drivers/net/ethernet/intel/igc/igc_defines.h | 6 drivers/net/ethernet/intel/igc/igc_main.c | 8 drivers/net/ethernet/intel/igc/igc_tsn.c | 76 +++- drivers/net/ethernet/intel/igc/igc_tsn.h | 1 drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c | 23 - drivers/net/ethernet/mediatek/mtk_wed.c | 6 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 13 drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c | 6 drivers/net/ethernet/mellanox/mlx5/core/lib/sd.c | 18 - drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h | 8 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c | 10 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h | 2 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c | 50 ++ drivers/net/ethernet/microsoft/mana/mana_en.c | 30 + drivers/net/ethernet/mscc/ocelot.c | 91 ++++- drivers/net/ethernet/mscc/ocelot_fdma.c | 3 drivers/net/ethernet/mscc/ocelot_vsc7514.c | 4 drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c | 8 drivers/net/ethernet/xilinx/xilinx_axienet.h | 17 drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 25 - drivers/net/gtp.c | 3 drivers/net/wireless/ath/ath12k/dp_tx.c | 72 ++++ drivers/net/wireless/ath/ath12k/hw.c | 6 drivers/net/wireless/ath/ath12k/hw.h | 4 drivers/net/wireless/ath/ath12k/mac.c | 1 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 13 drivers/nvme/host/core.c | 2 drivers/platform/surface/aggregator/controller.c | 3 drivers/platform/x86/dell/Kconfig | 1 drivers/platform/x86/dell/dell-uart-backlight.c | 8 drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c | 3 drivers/pmdomain/imx/imx93-pd.c | 5 drivers/pmdomain/imx/scu-pd.c | 5 drivers/s390/block/dasd.c | 36 +- drivers/s390/block/dasd_3990_erp.c | 10 drivers/s390/block/dasd_eckd.c | 55 +-- drivers/s390/block/dasd_genhd.c | 1 drivers/s390/block/dasd_int.h | 2 drivers/s390/crypto/ap_bus.c | 7 drivers/spi/spi-cadence-quadspi.c | 14 drivers/staging/media/atomisp/pci/ia_css_stream_public.h | 8 drivers/staging/media/atomisp/pci/sh_css_internal.h | 19 - drivers/thermal/gov_bang_bang.c | 87 +++- drivers/thermal/thermal_core.c | 3 drivers/thermal/thermal_debugfs.c | 6 drivers/thermal/thermal_of.c | 23 - drivers/thunderbolt/switch.c | 1 drivers/tty/serial/8250/8250_omap.c | 33 - drivers/tty/serial/atmel_serial.c | 2 drivers/tty/serial/fsl_lpuart.c | 1 drivers/tty/vt/conmakehash.c | 12 drivers/usb/host/xhci-mem.c | 2 drivers/usb/host/xhci.c | 8 drivers/usb/misc/usb-ljca.c | 1 drivers/usb/typec/tcpm/tcpm.c | 1 fs/btrfs/delayed-ref.c | 67 +++ fs/btrfs/delayed-ref.h | 2 fs/btrfs/extent-tree.c | 51 ++ fs/btrfs/extent_io.c | 14 fs/btrfs/extent_map.c | 22 - fs/btrfs/free-space-cache.c | 14 fs/btrfs/send.c | 52 ++ fs/btrfs/super.c | 18 - fs/btrfs/tree-checker.c | 74 ++++ fs/ceph/addr.c | 19 + fs/file.c | 30 - fs/fuse/dev.c | 6 fs/inode.c | 39 ++ fs/libfs.c | 35 + fs/locks.c | 2 fs/netfs/buffered_read.c | 8 fs/netfs/buffered_write.c | 2 fs/netfs/fscache_cookie.c | 4 fs/netfs/io.c | 144 ++++++++ fs/smb/client/cifsglob.h | 17 fs/smb/client/file.c | 55 ++- fs/smb/client/reparse.c | 11 fs/smb/client/smb1ops.c | 2 fs/smb/client/smb2ops.c | 42 ++ fs/smb/client/smb2pdu.c | 40 ++ fs/smb/client/trace.h | 55 +++ fs/smb/client/transport.c | 8 fs/smb/server/connection.c | 34 + fs/smb/server/connection.h | 3 fs/smb/server/mgmt/user_session.c | 8 fs/smb/server/smb2pdu.c | 5 include/acpi/acpixf.h | 5 include/acpi/video.h | 1 include/asm-generic/vmlinux.lds.h | 19 - include/linux/bitmap.h | 12 include/linux/bpf_verifier.h | 4 include/linux/dsa/ocelot.h | 47 ++ include/linux/fs.h | 5 include/linux/hugetlb.h | 33 + include/linux/io_uring_types.h | 2 include/linux/mm.h | 11 include/linux/panic.h | 1 include/linux/pgalloc_tag.h | 13 include/linux/thermal.h | 1 include/net/af_vsock.h | 4 include/net/bluetooth/hci.h | 17 include/net/bluetooth/hci_core.h | 2 include/net/kcm.h | 1 include/net/mana/mana.h | 1 include/scsi/scsi_cmnd.h | 2 include/soc/mscc/ocelot.h | 12 include/trace/events/netfs.h | 1 include/uapi/misc/fastrpc.h | 3 init/Kconfig | 25 - io_uring/io_uring.h | 2 io_uring/kbuf.c | 9 io_uring/napi.c | 50 +- io_uring/napi.h | 2 kernel/bpf/verifier.c | 5 kernel/cgroup/cpuset.c | 5 kernel/cpu.c | 12 kernel/events/core.c | 3 kernel/kallsyms.c | 60 --- kernel/kallsyms_internal.h | 6 kernel/kallsyms_selftest.c | 22 - kernel/panic.c | 8 kernel/printk/printk.c | 2 kernel/trace/trace.c | 2 kernel/vmcore_info.c | 4 kernel/workqueue.c | 47 +- mm/huge_memory.c | 29 - mm/memcontrol.c | 7 mm/memory-failure.c | 20 - mm/memory.c | 33 - mm/mm_init.c | 12 mm/mseal.c | 14 mm/page_alloc.c | 51 +- mm/vmalloc.c | 11 net/bluetooth/hci_core.c | 19 - net/bluetooth/hci_event.c | 2 net/bluetooth/mgmt.c | 4 net/bluetooth/smp.c | 144 ++++---- net/bridge/br_netfilter_hooks.c | 6 net/dsa/tag_ocelot.c | 37 -- net/ipv4/tcp_input.c | 28 - net/ipv4/tcp_ipv4.c | 14 net/ipv4/udp_offload.c | 3 net/ipv6/ip6_output.c | 10 net/ipv6/ip6_tunnel.c | 12 net/ipv6/netfilter/nf_conntrack_reasm.c | 4 net/iucv/iucv.c | 4 net/kcm/kcmsock.c | 4 net/mctp/test/route-test.c | 2 net/mptcp/diag.c | 2 net/mptcp/pm.c | 13 net/mptcp/pm_netlink.c | 142 +++++-- net/mptcp/protocol.h | 3 net/netfilter/nf_flow_table_inet.c | 3 net/netfilter/nf_flow_table_ip.c | 3 net/netfilter/nf_flow_table_offload.c | 2 net/netfilter/nf_tables_api.c | 147 +++++--- net/netfilter/nfnetlink.c | 5 net/netfilter/nfnetlink_queue.c | 35 + net/netfilter/nft_counter.c | 9 net/openvswitch/datapath.c | 2 net/sched/sch_netem.c | 47 +- net/vmw_vsock/af_vsock.c | 50 +- net/vmw_vsock/vsock_bpf.c | 4 scripts/kallsyms.c | 111 +----- scripts/link-vmlinux.sh | 106 +++-- scripts/rust_is_available.sh | 6 security/keys/trusted-keys/trusted_dcp.c | 35 + security/selinux/avc.c | 8 security/selinux/hooks.c | 12 sound/core/timer.c | 2 sound/pci/hda/patch_realtek.c | 1 sound/pci/hda/tas2781_hda_i2c.c | 14 sound/usb/quirks-table.h | 1 sound/usb/quirks.c | 2 tools/perf/tests/vmlinux-kallsyms.c | 1 tools/testing/selftests/bpf/progs/iters.c | 54 +++ tools/testing/selftests/core/close_range_test.c | 35 + tools/testing/selftests/drivers/net/mlxsw/ethtool_lanes.sh | 3 tools/testing/selftests/mm/Makefile | 2 tools/testing/selftests/mm/run_vmtests.sh | 3 tools/testing/selftests/net/af_unix/msg_oob.c | 2 tools/testing/selftests/net/lib.sh | 11 tools/testing/selftests/net/mptcp/mptcp_join.sh | 28 + tools/testing/selftests/net/udpgro.sh | 53 +- tools/testing/selftests/tc-testing/tdc.py | 1 tools/tracing/rtla/src/osnoise_top.c | 11 302 files changed, 3441 insertions(+), 1720 deletions(-)
Abhinav Jain (1):
selftest: af_unix: Fix kselftest compilation warnings
Abhinav Kumar (4):
drm/msm/dp: fix the max supported bpp logic
drm/msm/dpu: move dpu_encoder's connector assignment to atomic_enable() drm/msm/dp: reset the link phy params before link training drm/msm: fix the highest_bank_bit for sc7180
Al Viro (2):
fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE memcg_write_event_control(): fix a user-triggerable oops
Alex Deucher (3):
drm/amdgpu/jpeg2: properly set atomics vmid field drm/amdgpu/jpeg4: properly set atomics vmid field drm/amdgpu/sdma5.2: limit wptr workaround to sdma 5.2.1
Alexander Gordeev (2):
s390/boot: Avoid possible physmem_info segment corruption s390/boot: Fix KASLR base offset off by __START_KERNEL bytes
Alexander Stein (1):
pmdomain: imx: scu-pd: Remove duplicated clocks
Alexandra Winter (1):
s390/iucv: Fix vargs handling in iucv_alloc_device()
Alexandre Courbot (1):
Makefile: add $(srctree) to dependency of compile_commands.json target
Andi Shyti (1):
i2c: qcom-geni: Add missing geni_icc_disable in geni_i2c_runtime_resume
Asmaa Mnebhi (1):
gpio: mlxbf3: Support shutdown() function
Baochen Qiang (1):
wifi: ath12k: use 128 bytes aligned iova in transmit path for WCN7850
Baojun Xu (1):
ALSA: hda/tas2781: fix wrong calibrated data order
Barak Biber (1):
iommu: Restore lost return in iommu_report_device_fault()
Bas Nieuwenhuizen (1):
drm/amdgpu: Actually check flags for all context ops.
Ben Whitten (1):
mmc: dw_mmc: allow biu and ciu clocks to defer
Bharat Bhushan (1):
octeontx2-af: Fix CPT AF register offset calculation
Boyuan Zhang (2):
drm/amdgpu/vcn: identify unified queue in sw init drm/amdgpu/vcn: not pause dpg for unified queue
Breno Leitao (1):
i2c: tegra: Do not mark ACPI devices as irq safe
Candice Li (1):
drm/amdgpu: Validate TA binary size
Carolina Jubran (1):
net/mlx5e: XPS, Fix oversight of Multi-PF Netdev changes
Celeste Liu (1):
riscv: entry: always initialize regs->a0 to -ENOSYS
Chaotian Jing (1):
scsi: core: Fix the return value of scsi_logical_block_count()
Chen Ridong (1):
cgroup/cpuset: fix panic caused by partcmd_update
Christian Brauner (2):
pidfd: prevent creation of pidfds for kthreads Revert "pidfd: prevent creation of pidfds for kthreads"
Claudio Imbrenda (1):
s390/uv: Panic for set and remove shared access UVC errors
Cong Wang (1):
vsock: fix recursive ->recvmsg calls
Cosmin Ratiu (1):
net/mlx5e: Correctly report errors for ethtool rx flows
Dan Carpenter (4):
rtla/osnoise: Prevent NULL dereference in error handling
atm: idt77252: prevent use after free in dequeue_rx()
dpaa2-switch: Fix error checking in dpaa2_switch_seed_bp()
mmc: mmc_test: Fix NULL dereference on allocation failure
Dave Airlie (1):
nouveau/firmware: use dma non-coherent allocator
David (Ming Qiang) Wu (1):
drm/amd/amdgpu: command submission parser for JPEG
David Gstir (2):
KEYS: trusted: fix DCP blob payload length assignment
KEYS: trusted: dcp: fix leak of blob encryption key
David Hildenbrand (1):
mm/hugetlb: fix hugetlb vs. core-mm PT locking
David Howells (2):
netfs, ceph: Revert "netfs: Remove deprecated use of PG_private_2 as a second writeback flag"
cifs: Add a tracepoint to track credits involved in R/W requests
David Thompson (1):
mlxbf_gige: disable RX filters until RX path initialized
Dmitry Baryshkov (5):
drm/msm/dpu: don't play tricks with debug macros drm/msm/dpu: cleanup FB if dpu_format_populate_layout fails drm/msm/dpu: limit QCM2290 to RGB formats only drm/msm/dpu: relax YUV requirements
drm/msm/dpu: take plane rotation into account for wide planes
Donald Hunter (2):
netfilter: nfnetlink: Initialise extack before use in ACKs
netfilter: flowtable: initialise extack before use
Dragos Tatulea (1):
net/mlx5e: Take state lock during tx timeout reporter
Eli Billauer (3):
char: xillybus: Don't destroy workqueue from work item running on it
char: xillybus: Refine workqueue handling
char: xillybus: Check USB endpoints when probing device
Eric Dumazet (4):
gtp: pull network headers in gtp_dev_xmit()
ipv6: prevent UAF in ip6_send_skb()
ipv6: fix possible UAF in ip6_finish_output2()
ipv6: prevent possible UAF in ip6_xmit()
Eric Farman (1):
s390/dasd: Remove DMA alignment
Eugene Syromiatnikov (1):
mptcp: correct MPTCP_SUBFLOW_ATTR_SSN_OFFSET reserved size
Faizal Rahim (4):
igc: Fix packet still tx after gate close by reducing i226 MAC retry buffer
igc: Fix qbv_config_change_errors logics
igc: Fix reset adapter logics when tx mode change
igc: Fix qbv tx latency by setting gtxoffset
Felix Fietkau (1):
udp: fix receiving fraglist GSO packets
Filipe Manana (2):
btrfs: send: allow cloning non-aligned extent if it ends at i_size
btrfs: only run the extent map shrinker from kswapd tasks
Florian Westphal (2):
netfilter: nf_queue: drop packets with cloned unconfirmed conntracks
tcp: prevent concurrent execution of tcp_sk_exit_batch
Greg Kroah-Hartman (1):
Linux 6.10.7
Griffin Kroah-Hartman (3):
Revert "misc: fastrpc: Restrict untrusted app to attach to privileged PD" Revert "serial: 8250_omap: Set the console genpd always on if no console suspend"
Bluetooth: MGMT: Add error handling to pair_device()
Haibo Xu (1):
arm64: ACPI: NUMA: initialize all values of acpi_early_node_map to NUMA_NO_NODE
Hailong Liu (1):
mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0
Haiyang Zhang (1):
net: mana: Fix RX buf alloc_size alignment and atomic op panic
Hamza Mahfooz (1):
drm/amd/display: fix s2idle entry for DCN3.5+
Hangbin Liu (2):
selftests: udpgro: report error when receive failed
selftests: udpgro: no need to load xdp for gro
Hans de Goede (5):
usb: misc: ljca: Add Lunar Lake ljca GPIO HID to ljca_gpio_hids[]
media: atomisp: Fix streaming no longer working on BYT / ISP2400 devices
ACPI: video: Add Dell UART backlight controller detection
ACPI: video: Add backlight=native quirk for Dell OptiPlex 7760 AIO platform/x86: dell-uart-backlight: Use acpi_video_get_backlight_type()
Harald Freudenberger (1):
s390/ap: Refine AP bus bindings complete processing
Ido Schimmel (1):
selftests: mlxsw: ethtool_lanes: Source ethtool lib from correct path
Jann Horn (2):
fuse: Initialize beyond-EOF page contents before setting uptodate
kallsyms: get rid of code for absolute kallsyms
Janne Grunau (1):
wifi: brcmfmac: cfg80211: Handle SSID based pmksa deletion
Jason Gerecke (1):
HID: wacom: Defer calculation of resolution until resolution_code is known
Jens Axboe (1):
io_uring/kbuf: sanitize peek buffer setup
Jeremy Kerr (1):
net: mctp: test: Use correct skb for route input check
Jiaxun Yang (1):
MIPS: Loongson64: Set timer mode in cpu-probe
Jie Wang (2):
net: hns3: fix wrong use of semaphore up
net: hns3: fix a deadlock problem when config TC during resetting
Josef Bacik (1):
btrfs: check delayed refs when we're checking if a ref exists
Joseph Huang (1):
net: dsa: mv88e6xxx: Fix out-of-bound access
Juan José Arboleda (1):
ALSA: usb-audio: Support Yamaha P-125 quirk entry
Khazhismel Kumykov (1):
dm resume: don't return EINVAL when signalled
Kirill A. Shutemov (1):
mm: fix endless reclaim on machines with unaccepted memory
Krzysztof Kozlowski (3):
thermal: of: Fix OF node leak in thermal_of_trips_init() error path
thermal: of: Fix OF node leak in thermal_of_zone_register()
thermal: of: Fix OF node leak in of_thermal_zone_find() error paths
Kuniyuki Iwashima (1):
kcm: Serialise kcm_sendmsg() for the same socket.
Kyle Huey (1):
perf/bpf: Don't call bpf_overflow_handler() for tracing events
Leon Hwang (1):
bpf: Fix updating attached freplace prog in prog_array map
Li Lingfeng (1):
block: Fix lockdep warning in blk_mq_mark_tag_wait
Lianqin Hu (1):
ALSA: usb-audio: Add delay quirk for VIVO USB-C-XE710 HEADSET
Loan Chen (1):
drm/amd/display: Enable otg synchronization logic for DCN321
Long Li (1):
net: mana: Fix doorbell out of order violation and avoid unnecessary doorbell rings
Lucas De Marchi (1):
drm/xe: Fix opregion leak
Luiz Augusto von Dentz (3):
Bluetooth: HCI: Invert LE State quirk to be opt-out rather then opt-in
Bluetooth: hci_core: Fix LE quote calculation
Bluetooth: SMP: Fix assumption of Central always being Initiator
Maciej Fijalkowski (3):
ice: fix page reuse when PAGE_SIZE is over 8k
ice: fix ICE_LAST_OFFSET formula
ice: fix truesize operations for PAGE_SIZE >= 8192
Marc Zyngier (2):
usb: xhci: Check for xhci->interrupters being allocated in xhci_mem_clearup()
KVM: arm64: Make ICC_*SGI*_EL1 undef in the absence of a vGICv3
Mario Limonciello (1):
drm/amd/display: Don't register panel_power_savings on OLED panels
Martin Whitaker (1):
net: dsa: microchip: fix PTP config failure when using multiple ports
Masahiro Yamada (7):
tty: vt: conmakehash: remove non-portable code printing comment header
kbuild: refactor variables in scripts/link-vmlinux.sh
kbuild: remove PROVIDE() for kallsyms symbols
rust: suppress error messages from CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT
rust: fix the default format for CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT
kbuild: merge temporary vmlinux for BTF and kallsyms
kbuild: avoid scripts/kallsyms parsing /dev/null
Mathias Nyman (1):
xhci: Fix Panther point NULL pointer deref at full-speed re-enumeration
Mathieu Othacehe (1):
tty: atmel_serial: use the correct RTS flag.
Matthew Auld (3):
drm/xe/display: stop calling domains_driver_remove twice drm/xe/mmio: move mmio_fini over to devm drm/xe: reset mmio mappings with devm
Matthew Brost (4):
drm/xe: Fix tile fini sequence
drm/xe: Decouple job seqno and lrc seqno
drm/xe: Free job before xe_exec_queue_put drm/xe: Do not dereference NULL job->fence in trace points
Matthew Wilcox (Oracle) (1):
netfs: Fault in smaller chunks for non-large folio mappings
Matthieu Baerts (NGI0) (14):
selftests: net: lib: ignore possible errors
selftests: net: lib: kill PIDs before del netns
mptcp: pm: re-using ID of unused removed ADD_ADDR
mptcp: pm: re-using ID of unused removed subflows
mptcp: pm: re-using ID of unused flushed subflows
mptcp: pm: remove mptcp_pm_remove_subflow()
mptcp: pm: only mark 'subflow' endp as available
mptcp: pm: only decrement add_addr_accepted for MPJ req
mptcp: pm: check add_addr_accept_max before accepting new ADD_ADDR
mptcp: pm: only in-kernel cannot have entries with ID 0
mptcp: pm: fullmesh: select the right ID later
mptcp: pm: avoid possible UaF when selecting endp
selftests: mptcp: join: validate fullmesh endp on 1st sf
selftests: mptcp: join: check re-using ID of closed subflow
Max Kellermann (1):
fs/netfs/fscache_cookie: add missing "n_accesses" check
Maximilian Luz (1):
platform/surface: aggregator: Fix warning when controller is destroyed in probe
Maíra Canal (1):
drm/v3d: Fix out-of-bounds read in v3d_csd_job_run()
Melissa Wen (1):
drm/amd/display: fix cursor offset on rotation 180
Menglong Dong (1):
net: ovs: fix ovs_drop_reasons error
Mengqi Zhang (1):
mmc: mtk-sd: receive cmd8 data when hs400 tuning fail
Mengyuan Lou (1):
net: ngbe: Fix phy mode set to external phy
Michael Ellerman (1):
ata: pata_macio: Fix DMA table overflow
Michael Mueller (1):
KVM: s390: fix validity interception issue when gisa is switched off
Michal Swiatkowski (1):
ice: use internal pf id instead of function number
Miguel Ojeda (1):
rust: work around bindgen 0.69.0 issue
Mika Westerberg (1):
thunderbolt: Mark XDomain as unplugged when router is removed
Mikulas Patocka (2):
dm persistent data: fix memory allocation failure dm suspend: return -ERESTARTSYS instead of -EINTR
Ming Lei (1):
nvme: move stopping keep-alive into nvme_uninit_ctrl()
Muhammad Usama Anjum (1):
selftests: memfd_secret: don't build memfd_secret test on unsupported arches
Nam Cao (1):
riscv: change XIP's kernel_map.size to be size of the entire kernel
Namjae Jeon (2):
ksmbd: the buffer of smb2 query dir response has at least 1 byte
ksmbd: fix race condition between destroy_previous_session() and smb2 operations()
Naohiro Aota (2):
btrfs: zoned: properly take lock to read/update block group's zoned variables
btrfs: fix invalid mapping of extent xarray state
Nicolin Chen (1):
iommufd/device: Fix hwpt at err_unresv in iommufd_device_do_replace()
Nikolay Aleksandrov (4):
bonding: fix bond_ipsec_offload_ok return type
bonding: fix null pointer deref in bond_ipsec_offload_ok
bonding: fix xfrm real_dev null pointer dereference
bonding: fix xfrm state handling when clearing active slave
Nikolay Kuratov (1):
cxgb4: add forgotten u64 ivlan cast before shift
Nysal Jan K.A (2):
cpu/SMT: Enable SMT only if a core is online powerpc/topology: Check if a core is online
Olivier Langlois (1):
io_uring/napi: check napi_enabled in io_napi_add() before proceeding
Omar Sandoval (1):
filelock: fix name of file_lease slab cache
Pablo Neira Ayuso (1):
netfilter: flowtable: validate vlan header
Paolo Abeni (1):
igb: cope with large MAX_SKB_FRAGS
Parsa Poorshikhian (1):
ALSA: hda/realtek: Fix noise from speakers on Lenovo IdeaPad 3 15IAU7
Patrisious Haddad (1):
net/mlx5: Fix IPsec RoCE MPV trace call
Paul Moore (1):
selinux: revert our use of vma_is_initial_heap()
Paulo Alcantara (1):
smb: client: ignore unhandled reparse tags
Pavel Begunkov (1):
io_uring/napi: use ktime in busy polling
Pawel Dembicki (3):
net: dsa: vsc73xx: fix port MAC configuration in full duplex mode
net: dsa: vsc73xx: pass value in phy_write operation
net: dsa: vsc73xx: check busy flag in MDIO operations
Pedro Falcato (1):
mseal: fix is_madv_discard()
Peiyang Wang (1):
net: hns3: use the user's cfg after reset
Peng Fan (2):
tty: serial: fsl_lpuart: mark last busy before uart_add_one_port
pmdomain: imx: wait SSAR when i.MX93 power domain on
Phil Sutter (3):
netfilter: nf_tables: Audit log dump reset after the fact
netfilter: nf_tables: Introduce nf_tables_getobj_single
netfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests
Qu Wenruo (3):
btrfs: tree-checker: reject BTRFS_FT_UNKNOWN dir type
btrfs: tree-checker: add dev extent item checks
btrfs: only enable extent map shrinker for DEBUG builds
Radhey Shyam Pandey (1):
net: axienet: Fix register defines comment description
Rafael J. Wysocki (8):
Revert "ACPI: EC: Evaluate orphan _REG under EC device"
thermal: gov_bang_bang: Call __thermal_cdev_update() directly
ACPICA: Add a depth argument to acpi_execute_reg_methods()
ACPI: EC: Evaluate _REG outside the EC scope more carefully
thermal: gov_bang_bang: Drop unnecessary cooling device target state checks
thermal: gov_bang_bang: Split bang_bang_control()
thermal: gov_bang_bang: Add .manage() callback
thermal: gov_bang_bang: Use governor_data to reduce overhead
Rodrigo Siqueira (1):
drm/amd/display: Adjust cursor position
Rodrigo Vivi (1):
drm/xe: Relax runtime pm protection during execution
Ryo Takakura (1):
printk/panic: Allow cpu backtraces to be written into ringbuffer during panic
Samuel Holland (1):
arm64: Fix KASAN random tag seed initialization
Sean Anderson (2):
net: xilinx: axienet: Always disable promiscuous mode
net: xilinx: axienet: Fix dangling multicast addresses
Sebastian Andrzej Siewior (2):
netfilter: nft_counter: Disable BH in nft_counter_offload_stats().
netfilter: nft_counter: Synchronize nft_counter_reset() against reader.
Simon Horman (1):
tc-testing: don't access non-existent variable on exception
Somnath Kotur (1):
bnxt_en: Fix double DMA unmapping for XDP_REDIRECT
Song Liu (2):
kallsyms: Do not cleanup .llvm.<hash> suffix before sorting symbols
kallsyms: Match symbols exactly with CONFIG_LTO_CLANG
Srinivas Pandruvada (1):
platform/x86: ISST: Fix return value on last invalid resource
Stefan Haberland (1):
s390/dasd: fix error recovery leading to data corruption on ESE devices
Stephen Hemminger (1):
netem: fix return value if duplicate enqueue fails
Steve French (2):
smb3: fix lock breakage for cached writes
smb3: fix broken cached reads when posix locks
Steven Rostedt (1):
tracing: Return from tracing_buffers_read() if the file has been closed
Stuart Summers (1):
drm/xe: Fix missing workqueue destroy in xe_gt_pagefault
Su Hui (1):
smb/client: avoid possible NULL dereference in cifs_free_subrequest()
Subash Abhinov Kasiviswanathan (1):
tcp: Update window clamping condition
Suraj Kandpal (1):
drm/i915/hdcp: Use correct cp_irq_count
Suren Baghdasaryan (2):
alloc_tag: mark pages reserved during CMA activation as not tagged
alloc_tag: introduce clear_page_tag_ref() helper function
Takashi Iwai (2):
ALSA: timer: Relax start tick time check for slave timer elements
ALSA: hda/tas2781: Use correct endian conversion
Tariq Toukan (1):
net/mlx5: SD, Do not query MPIR register if no sd_group
Tejun Heo (1):
workqueue: Fix spruious data race in __flush_work()
Tetsuo Handa (1):
Input: MT - limit max slots
Thomas Bogendoerfer (1):
ip6_tunnel: Fix broken GRO
Thomas Hellström (2):
drm/xe: Split lrc seqno fence creation up drm/xe: Don't initialize fences at xe_sched_job_create()
Thorsten Blum (1):
io_uring/napi: Remove unnecessary s64 cast
Tom Hughes (1):
netfilter: allow ipv6 fragments to arrive on different devices
Vignesh Raghavendra (1):
spi: spi-cadence-quadspi: Fix OSPI NOR failures during system resume
Vladimir Oltean (3):
net: mscc: ocelot: use ocelot_xmit_get_vlan_info() also for FDMA and register injection
net: mscc: ocelot: fix QoS class for injected packets with "ocelot-8021q"
net: mscc: ocelot: serialize access to the injection/extraction groups
Waiman Long (2):
mm/memory-failure: use raw_spinlock_t in struct memory_failure_cpu cgroup/cpuset: Clear effective_xcpus on cpus_allowed clearing only if cpus.exclusive not set
Werner Sembach (2):
Input: i8042 - add forcenorestore quirk to leave controller untouched even on s3
Input: i8042 - use new forcenorestore quirk to replace old buggy quirk combination
Will Deacon (1):
workqueue: Fix UBSAN 'subtraction overflow' error in shift_and_mask()
Xu Yang (1):
Revert "usb: typec: tcpm: clear pd_event queue in PORT_RESET"
Yang Ruibin (1):
thermal/debugfs: Fix the NULL vs IS_ERR() confusion in debugfs_create_dir()
Yonghong Song (2):
bpf: Fix a kernel verifier crash in stacksafe() selftests/bpf: Add a test to verify previous stacksafe() fix
Yu Kuai (1):
md/raid1: Fix data corruption for degraded array with slow disk
Zenghui Yu (1):
KVM: arm64: vgic-debug: Don't put unmarked LPIs
Zhen Lei (2):
selinux: fix potential counting error in avc_add_xperms_decision()
selinux: add the processing of the failure of avc_add_xperms_decision()
Zheng Zhang (1):
net: ethernet: mtk_wed: fix use-after-free panic in mtk_wed_setup_tc_block_cb()
Zhihao Cheng (1):
vfs: Don't evict inode under the inode lru traversing context
Zi Yan (2):
mm/numa: no task_numa_fault() call if PMD is changed mm/numa: no task_numa_fault() call if PTE is changed
yangerkun (1):
libfs: fix infinite directory reads for offset dir
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-devices-system-cpu +2 -1
@@ -562,7 +562,8 @@ Description: Control Symmetric Multi Threading (SMT) ================ ========================================= If control status is "forceoff" or "notsupported" writes - are rejected. + are rejected. Note that enabling SMT on PowerPC skips + offline cores. What: /sys/devices/system/cpu/cpuX/power/energy_perf_bias Date: March 2019
Makefile +2 -2
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 10 -SUBLEVEL = 6 +SUBLEVEL = 7 EXTRAVERSION = NAME = Baby Opossum Posse
@@ -1986,7 +1986,7 @@ nsdeps: modules quiet_cmd_gen_compile_commands = GEN $@ cmd_gen_compile_commands = $(PYTHON3) $< -a $(AR) -o $@ $(filter-out $<, $(real-prereqs)) -$(extmod_prefix)compile_commands.json: scripts/clang-tools/gen_compile_commands.py \ +$(extmod_prefix)compile_commands.json: $(srctree)/scripts/clang-tools/gen_compile_commands.py \ $(if $(KBUILD_EXTMOD),, vmlinux.a $(KBUILD_VMLINUX_LIBS)) \ $(if $(CONFIG_MODULES), $(MODORDER)) FORCE $(call if_changed,gen_compile_commands)
arch/arm64/kernel/acpi_numa.c +1 -1
@@ -27,7 +27,7 @@#include <asm/numa.h> -static int acpi_early_node_map[NR_CPUS ]__initdata = {NUMA_NO_NODE }; +static int acpi_early_node_map[NR_CPUS ]__initdata = { [0 ...NR_CPUS -1 ] =NUMA_NO_NODE };int __init acpi_numa_get_nid (unsigned int cpu) {
arch/arm64/kernel/setup.c +0 -3
@@ -355,9 +355,6 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p)smp_init_cpus ();smp_build_mpidr_hash (); -/* Init percpu seeds for random tags after cpus are set up. */ -kasan_init_sw_tags (); -#ifdef CONFIG_ARM64_SW_TTBR0_PAN /* * Make sure init_thread_info.ttbr0 always generates translation
arch/arm64/kernel/smp.c +2 -0
@@ -469,6 +469,8 @@ void __init smp_prepare_boot_cpu(void)init_gic_priority_masking ();kasan_init_hw_tags (); +/* Init percpu seeds for random tags after cpus are set up. */ +kasan_init_sw_tags (); }/*
arch/arm64/kvm/sys_regs.c +6 -0
@@ -33,6 +33,7 @@#include <trace/events/kvm.h> #include "sys_regs.h" +#include "vgic/vgic.h" #include "trace.h"
@@ -428,6 +429,11 @@ static bool access_gic_sgi(struct kvm_vcpu *vcpu, {bool g1; +if (!kvm_has_gicv3 (vcpu->kvm)) { +kvm_inject_undefined (vcpu); +return false; + } +if (!p->is_write)return read_from_write_only (vcpu, p, r);
arch/arm64/kvm/vgic/vgic-debug.c +1 -1
@@ -84,7 +84,7 @@ static void iter_unmark_lpis(struct kvm *kvm)struct vgic_irq *irq;unsigned long intid; -xa_for_each (&dist->lpi_xa, intid, irq) { +xa_for_each_marked (&dist->lpi_xa, intid, irq,LPI_XA_MARK_DEBUG_ITER ) {xa_clear_mark (&dist->lpi_xa, intid,LPI_XA_MARK_DEBUG_ITER );vgic_put_irq (kvm, irq); }
arch/arm64/kvm/vgic/vgic.h +7 -0
@@ -346,4 +346,11 @@ void vgic_v4_configure_vsgis(struct kvm *kvm);void vgic_v4_get_vlpi_state (struct vgic_irq *irq,bool *val);int vgic_v4_request_vpe_irq (struct kvm_vcpu *vcpu,int irq); +static inline bool kvm_has_gicv3 (struct kvm *kvm) +{ +return (static_branch_unlikely (&kvm_vgic_global_state.gicv3_cpuif) && +irqchip_in_kernel (kvm) && + kvm->arch.vgic.vgic_model ==KVM_DEV_TYPE_ARM_VGIC_V3 ); +} +#endif
arch/mips/kernel/cpu-probe.c +4 -0
@@ -1724,12 +1724,16 @@ static inline void cpu_probe_loongson(struct cpuinfo_mips *c, unsigned int cpu) c->ases |= (MIPS_ASE_LOONGSON_MMI |MIPS_ASE_LOONGSON_CAM |MIPS_ASE_LOONGSON_EXT |MIPS_ASE_LOONGSON_EXT2 ); c->ases &= ~MIPS_ASE_VZ ;/* VZ of Loongson-3A2000/3000 is incomplete */ +change_c0_config6 (LOONGSON_CONF6_EXTIMER |LOONGSON_CONF6_INTIMER , +LOONGSON_CONF6_INTIMER );break ;case PRID_IMP_LOONGSON_64G : __cpu_name[cpu] ="ICT Loongson-3" ;set_elf_platform (cpu,"loongson3a" );set_isa (c,MIPS_CPU_ISA_M64R2 );decode_cpucfg (c); +change_c0_config6 (LOONGSON_CONF6_EXTIMER |LOONGSON_CONF6_INTIMER , +LOONGSON_CONF6_INTIMER );break ;default :panic ("Unknown Loongson Processor ID!" );
arch/powerpc/include/asm/topology.h +13 -0
@@ -145,6 +145,7 @@ static inline int cpu_to_coregroup_id(int cpu)#ifdef CONFIG_HOTPLUG_SMT #include <linux/cpu_smt.h> +#include <linux/cpumask.h> #include <asm/cputhreads.h> static inline bool topology_is_primary_thread (unsigned int cpu)
@@ -156,6 +157,18 @@ static inline bool topology_smt_thread_allowed(unsigned int cpu) {return cpu_thread_in_core (cpu) < cpu_smt_num_threads; } + +#define topology_is_core_online topology_is_core_online +static inline bool topology_is_core_online (unsigned int cpu) +{ +int i, first_cpu =cpu_first_thread_sibling (cpu); + +for (i = first_cpu; i < first_cpu + threads_per_core; ++i) { +if (cpu_online (i)) +return true; + } +return false; +}#endif #endif /* __KERNEL__ */
arch/riscv/kernel/traps.c +2 -2
@@ -319,6 +319,7 @@ void do_trap_ecall_u(struct pt_regs *regs) regs->epc +=4 ; regs->orig_a0 = regs->a0; + regs->a0 = -ENOSYS ;riscv_v_vstate_discard (regs);
@@ -328,8 +329,7 @@ void do_trap_ecall_u(struct pt_regs *regs)if (syscall >=0 && syscall < NR_syscalls)syscall_handler (regs, syscall); -else if (syscall !=-1 ) - regs->a0 = -ENOSYS ; +/* * Ultimately, this value will get limited by KSTACK_OFFSET_MAX(), * so the maximum stack offset is 1k bytes (10 bits).
arch/riscv/mm/init.c +2 -2
@@ -931,7 +931,7 @@ static void __init create_kernel_page_table(pgd_t *pgdir, PMD_SIZE, PAGE_KERNEL_EXEC);/* Map the data in RAM */ - end_va = kernel_map.virt_addr +XIP_OFFSET + kernel_map.size; + end_va = kernel_map.virt_addr + kernel_map.size;for (va = kernel_map.virt_addr +XIP_OFFSET ; va < end_va; va +=PMD_SIZE ) create_pgd_mapping(pgdir, va, kernel_map.phys_addr + (va - (kernel_map.virt_addr + XIP_OFFSET)),
@@ -1100,7 +1100,7 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) phys_ram_base =CONFIG_PHYS_RAM_BASE ; kernel_map.phys_addr = (uintptr_t )CONFIG_PHYS_RAM_BASE ; - kernel_map.size = (uintptr_t )(&_end) - (uintptr_t )(&_sdata); + kernel_map.size = (uintptr_t )(&_end) - (uintptr_t )(&_start); kernel_map.va_kernel_xip_pa_offset = kernel_map.virt_addr - kernel_map.xiprom;#else
arch/s390/boot/startup.c +30 -25
113 lines not on this page · raw message
arch/s390/boot/vmem.c +12 -2
@@ -89,7 +89,7 @@ static void kasan_populate_shadow(unsigned long kernel_start, unsigned long kern } memgap_start = end; } -kasan_populate (kernel_start, kernel_end,POPULATE_KASAN_MAP_SHADOW ); +kasan_populate (kernel_start +TEXT_OFFSET , kernel_end,POPULATE_KASAN_MAP_SHADOW );kasan_populate (0 , (unsigned long )__identity_va (0 ),POPULATE_KASAN_ZERO_SHADOW );kasan_populate (AMODE31_START ,AMODE31_END ,POPULATE_KASAN_ZERO_SHADOW );if (IS_ENABLED (CONFIG_KASAN_VMALLOC )) {
@@ -466,7 +466,17 @@ void setup_vmem(unsigned long kernel_start, unsigned long kernel_end, unsigned l (unsigned long )__identity_va (end), POPULATE_IDENTITY); } -pgtable_populate (kernel_start, kernel_end,POPULATE_KERNEL ); + +/* +* [kernel_start..kernel_start + TEXT_OFFSET] region is never +* accessed as per the linker script: +* +* . = TEXT_OFFSET; +* +* Therefore, skip mapping TEXT_OFFSET bytes to prevent access to +* [__kaslr_offset_phys..__kaslr_offset_phys + TEXT_OFFSET] region. +*/ +pgtable_populate (kernel_start +TEXT_OFFSET , kernel_end,POPULATE_KERNEL );pgtable_populate (AMODE31_START ,AMODE31_END ,POPULATE_DIRECT );pgtable_populate (__abs_lowcore, __abs_lowcore +sizeof (struct lowcore ),POPULATE_ABS_LOWCORE );
arch/s390/boot/vmlinux.lds.S +6 -1
@@ -109,7 +109,12 @@ SECTIONS #ifdef CONFIG_KERNEL_UNCOMPRESSED . = ALIGN(PAGE_SIZE); . += AMODE31_SIZE; /* .amode31 section */ - . = ALIGN(1 << 20); /* _SEGMENT_SIZE */ + + /* + * Make sure the location counter is not less than TEXT_OFFSET. + * _SEGMENT_SIZE is not available, use ALIGN(1 << 20) instead. + */ + . = MAX(TEXT_OFFSET, ALIGN(1 << 20)); #else . = ALIGN(8); #endif
arch/s390/include/asm/page.h +2 -1
@@ -276,8 +276,9 @@ static inline unsigned long virt_to_pfn(const void *kaddr)#define AMODE31_SIZE (3 * PAGE_SIZE)#define KERNEL_IMAGE_SIZE (512 * 1024 * 1024) -#define __START_KERNEL 0x100000#define __NO_KASLR_START_KERNEL CONFIG_KERNEL_IMAGE_BASE#define __NO_KASLR_END_KERNEL (__NO_KASLR_START_KERNEL + KERNEL_IMAGE_SIZE) +#define TEXT_OFFSET 0x100000 +#endif /* _S390_PAGE_H */
arch/s390/include/asm/uv.h +4 -1
@@ -442,7 +442,10 @@ static inline int share(unsigned long addr, u16 cmd)if (!uv_call (0 , (u64)&uvcb))return 0 ; -return -EINVAL ; +pr_err ("%s UVC failed (rc: 0x%x, rrc: 0x%x), possible hypervisor bug.\n" , + uvcb.header.cmd ==UVC_CMD_SET_SHARED_ACCESS ?"Share" :"Unshare" , + uvcb.header.rc, uvcb.header.rrc); +panic ("System security cannot be guaranteed unless the system panics now.\n" ); }/*
arch/s390/kernel/vmlinux.lds.S +1 -1
@@ -39,7 +39,7 @@ PHDRS { SECTIONS { - . = __START_KERNEL; + . = TEXT_OFFSET; .text : { _stext = .; /* Start of text section */ _text = .; /* Text and read-only data */
arch/s390/kvm/kvm-s390.h +6 -1
@@ -267,7 +267,12 @@ static inline unsigned long kvm_s390_get_gfn_end(struct kvm_memslots *slots)static inline u32 kvm_s390_get_gisa_desc (struct kvm *kvm) { -u32 gd =virt_to_phys (kvm->arch.gisa_int.origin); +u32 gd; + +if (!kvm->arch.gisa_int.origin) +return 0 ; + + gd =virt_to_phys (kvm->arch.gisa_int.origin);if (gd && sclp.has_gisaf) gd |=GISA_FORMAT1 ;
arch/s390/tools/relocs.c +1 -1
@@ -280,7 +280,7 @@ static int do_reloc(struct section *sec, Elf_Rel *rel)case R_390_GOTOFF64 :break ;case R_390_64 : -add_reloc (&relocs64, offset - ehdr.e_entry); +add_reloc (&relocs64, offset);break ;default :die ("Unsupported relocation type: %d\n" , r_type);
block/blk-mq-tag.c +3 -2
@@ -38,6 +38,7 @@ static void blk_mq_update_wake_batch(struct blk_mq_tags *tags,void __blk_mq_tag_busy (struct blk_mq_hw_ctx *hctx) {unsigned int users; +unsigned long flags;struct blk_mq_tags *tags = hctx->tags;/*
@@ -56,11 +57,11 @@ void __blk_mq_tag_busy(struct blk_mq_hw_ctx *hctx)return ; } -spin_lock_irq (&tags->lock); +spin_lock_irqsave (&tags->lock, flags); users = tags->active_queues +1 ;WRITE_ONCE (tags->active_queues, users);blk_mq_update_wake_batch (tags, users); -spin_unlock_irq (&tags->lock); +spin_unlock_irqrestore (&tags->lock, flags); }/*
drivers/acpi/acpica/acevents.h +1 -5
@@ -188,13 +188,9 @@ acpi_ev_detach_region(union acpi_operand_object *region_obj, u8 acpi_ns_is_locked);void -acpi_ev_execute_reg_methods (struct acpi_namespace_node *node, +acpi_ev_execute_reg_methods (struct acpi_namespace_node *node,u32 max_depth,acpi_adr_space_type space_id,u32 function); -void -acpi_ev_execute_orphan_reg_method (struct acpi_namespace_node *node, -acpi_adr_space_type space_id); -acpi_status acpi_ev_execute_reg_method (union acpi_operand_object *region_obj,u32 function);
drivers/acpi/acpica/evregion.c +9 -3
@@ -20,6 +20,10 @@ extern u8 acpi_gbl_default_address_spaces[];/* Local prototypes */ +static void +acpi_ev_execute_orphan_reg_method (struct acpi_namespace_node *device_node, +acpi_adr_space_type space_id); +static acpi_status acpi_ev_reg_run (acpi_handle obj_handle,u32 level,void *context,void **return_value);
@@ -61,6 +65,7 @@ acpi_status acpi_ev_initialize_op_regions(void) acpi_gbl_default_address_spaces [i])) {acpi_ev_execute_reg_methods (acpi_gbl_root_node, +ACPI_UINT32_MAX , acpi_gbl_default_address_spaces [i],ACPI_REG_CONNECT ); }
@@ -668,6 +673,7 @@ acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function)* FUNCTION: acpi_ev_execute_reg_methods * * PARAMETERS: node - Namespace node for the device +* max_depth - Depth to which search for _REG * space_id - The address space ID * function - Passed to _REG: On (1) or Off (0) *
@@ -679,7 +685,7 @@ acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function)******************************************************************************/ void -acpi_ev_execute_reg_methods (struct acpi_namespace_node *node, +acpi_ev_execute_reg_methods (struct acpi_namespace_node *node,u32 max_depth,acpi_adr_space_type space_id,u32 function) {struct acpi_reg_walk_info info;
@@ -713,7 +719,7 @@ acpi_ev_execute_reg_methods(struct acpi_namespace_node *node,* regions and _REG methods. (i.e. handlers must be installed for all * regions of this Space ID before we can run any _REG methods) */ - (void )acpi_ns_walk_namespace (ACPI_TYPE_ANY , node,ACPI_UINT32_MAX , + (void )acpi_ns_walk_namespace (ACPI_TYPE_ANY , node, max_depth,ACPI_NS_WALK_UNLOCK , acpi_ev_reg_run,NULL , &info,NULL );
@@ -814,7 +820,7 @@ acpi_ev_reg_run(acpi_handle obj_handle,* ******************************************************************************/ -void +static void acpi_ev_execute_orphan_reg_method (struct acpi_namespace_node *device_node,acpi_adr_space_type space_id) {
drivers/acpi/acpica/evxfregn.c +7 -57
91 lines not on this page · raw message
drivers/acpi/ec.c +9 -5
@@ -1487,12 +1487,13 @@ static bool install_gpio_irq_event_handler(struct acpi_ec *ec)static int ec_install_handlers (struct acpi_ec *ec,struct acpi_device *device,bool call_reg) { -acpi_handle scope_handle = ec == first_ec ?ACPI_ROOT_OBJECT : ec->handle;acpi_status status;acpi_ec_start (ec, false);if (!test_bit (EC_FLAGS_EC_HANDLER_INSTALLED , &ec->flags)) { +acpi_handle scope_handle = ec == first_ec ?ACPI_ROOT_OBJECT : ec->handle; +acpi_ec_enter_noirq (ec); status = acpi_install_address_space_handler_no_reg(scope_handle, ACPI_ADR_SPACE_EC,
@@ -1506,10 +1507,7 @@ static int ec_install_handlers(struct acpi_ec *ec, struct acpi_device *device, }if (call_reg && !test_bit (EC_FLAGS_EC_REG_CALLED , &ec->flags)) { -acpi_execute_reg_methods (scope_handle,ACPI_ADR_SPACE_EC ); -if (scope_handle != ec->handle) -acpi_execute_orphan_reg_method (ec->handle,ACPI_ADR_SPACE_EC ); - +acpi_execute_reg_methods (ec->handle,ACPI_UINT32_MAX ,ACPI_ADR_SPACE_EC );set_bit (EC_FLAGS_EC_REG_CALLED , &ec->flags); }
@@ -1724,6 +1722,12 @@ static void acpi_ec_remove(struct acpi_device *device) } } +void acpi_ec_register_opregions (struct acpi_device *adev) +{ +if (first_ec && first_ec->handle != adev->handle) +acpi_execute_reg_methods (adev->handle,1 ,ACPI_ADR_SPACE_EC ); +} +static acpi_status ec_parse_io_ports (struct acpi_resource *resource,void *context) {
drivers/acpi/internal.h +1 -0
@@ -223,6 +223,7 @@ int acpi_ec_add_query_handler(struct acpi_ec *ec, u8 query_bit, acpi_handle handle, acpi_ec_query_func func, void *data);void acpi_ec_remove_query_handler (struct acpi_ec *ec,u8 query_bit); +void acpi_ec_register_opregions (struct acpi_device *adev);#ifdef CONFIG_PM_SLEEP void acpi_ec_flush_work (void );
drivers/acpi/scan.c +2 -0
@@ -2264,6 +2264,8 @@ static int acpi_bus_attach(struct acpi_device *device, void *first_pass)if (device->handler) goto ok; +acpi_ec_register_opregions (device); +if (!device->flags.initialized) { device->flags.power_manageable = device->power.states[ACPI_STATE_D0 ].flags.valid;
drivers/acpi/video_detect.c +22 -0
@@ -54,6 +54,8 @@ static void acpi_video_parse_cmdline(void) acpi_backlight_cmdline = acpi_backlight_nvidia_wmi_ec;if (!strcmp ("apple_gmux" , acpi_video_backlight_string)) acpi_backlight_cmdline = acpi_backlight_apple_gmux; +if (!strcmp ("dell_uart" , acpi_video_backlight_string)) + acpi_backlight_cmdline = acpi_backlight_dell_uart;if (!strcmp ("none" , acpi_video_backlight_string)) acpi_backlight_cmdline = acpi_backlight_none; }
@@ -805,6 +807,21 @@ static const struct dmi_system_id video_detect_dmi_table[] = { }, }, +/* +* Dell AIO (All in Ones) which advertise an UART attached backlight +* controller board in their ACPI tables (and may even have one), but +* which need native backlight control nevertheless. +*/ + { + /* https://bugzilla.redhat.com/show_bug.cgi?id=2303936 */ + .callback = video_detect_force_native, + /* Dell OptiPlex 7760 AIO */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 7760 AIO"), + }, + }, + /* * Models which have nvidia-ec-wmi support, but should not use it. * Note this indicates a likely firmware bug on these models and should
@@ -902,6 +919,7 @@ enum acpi_backlight_type __acpi_video_get_backlight_type(bool native, bool *autostatic DEFINE_MUTEX (init_mutex);static bool nvidia_wmi_ec_present;static bool apple_gmux_present; +static bool dell_uart_present;static bool native_available;static bool init_done;static long video_caps;
@@ -916,6 +934,7 @@ enum acpi_backlight_type __acpi_video_get_backlight_type(bool native, bool *auto &video_caps, NULL); nvidia_wmi_ec_present =nvidia_wmi_ec_supported (); apple_gmux_present =apple_gmux_detect (NULL ,NULL ); + dell_uart_present =acpi_dev_present ("DELL0501" ,NULL ,-1 ); init_done = true; }if (native)
@@ -946,6 +965,9 @@ enum acpi_backlight_type __acpi_video_get_backlight_type(bool native, bool *autoif (apple_gmux_present)return acpi_backlight_apple_gmux; +if (dell_uart_present) +return acpi_backlight_dell_uart; +/* Use ACPI video if available, except when native should be preferred. */ if ((video_caps &ACPI_VIDEO_BACKLIGHT ) && !(native_available &&prefer_native_over_acpi_video ()))
drivers/ata/pata_macio.c +15 -8
@@ -208,6 +208,19 @@ static const char* macio_ata_names[] = {/* Don't let a DMA segment go all the way to 64K */ #define MAX_DBDMA_SEG 0xff00 +#ifdef CONFIG_PAGE_SIZE_64KB +/* +* The SCSI core requires the segment size to cover at least a page, so +* for 64K page size kernels it must be at least 64K. However the +* hardware can't handle 64K, so pata_macio_qc_prep() will split large +* requests. To handle the split requests the tablesize must be halved. +*/ +#define PATA_MACIO_MAX_SEGMENT_SIZE SZ_64K +#define PATA_MACIO_SG_TABLESIZE (MAX_DCMDS / 2) +#else +#define PATA_MACIO_MAX_SEGMENT_SIZE MAX_DBDMA_SEG +#define PATA_MACIO_SG_TABLESIZE MAX_DCMDS +#endif /* * Wait 1s for disk to answer on IDE bus after a hard reset
@@ -912,16 +925,10 @@ static int pata_macio_do_resume(struct pata_macio_priv *priv)static const struct scsi_host_template pata_macio_sht = {__ATA_BASE_SHT (DRV_NAME ), - .sg_tablesize =MAX_DCMDS , + .sg_tablesize =PATA_MACIO_SG_TABLESIZE ,/* We may not need that strict one */ .dma_boundary =ATA_DMA_BOUNDARY , -/* -* The SCSI core requires the segment size to cover at least a page, so -* for 64K page size kernels this must be at least 64K. However the -* hardware can't handle 64K, so pata_macio_qc_prep() will split large -* requests. -*/ - .max_segment_size =SZ_64K , + .max_segment_size =PATA_MACIO_MAX_SEGMENT_SIZE , .device_configure = pata_macio_device_configure, .sdev_groups = ata_common_sdev_groups, .can_queue =ATA_DEF_QUEUE ,
drivers/atm/idt77252.c +5 -4
@@ -1118,8 +1118,8 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe) rpp->len += skb->len;if (stat &SAR_RSQE_EPDU ) { +unsigned int len, truesize;unsigned char *l1l2; -unsigned int len; l1l2 = (unsigned char *) ((unsigned long ) skb->data + skb->len -6 );
@@ -1189,14 +1189,15 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)ATM_SKB (skb)->vcc = vcc;__net_timestamp (skb); + truesize = skb->truesize; vcc->push (vcc, skb);atomic_inc (&vcc->stats->rx); -if (skb->truesize >SAR_FB_SIZE_3 ) +if (truesize >SAR_FB_SIZE_3 )add_rx_skb (card,3 ,SAR_FB_SIZE_3 ,1 ); -else if (skb->truesize >SAR_FB_SIZE_2 ) +else if (truesize >SAR_FB_SIZE_2 )add_rx_skb (card,2 ,SAR_FB_SIZE_2 ,1 ); -else if (skb->truesize >SAR_FB_SIZE_1 ) +else if (truesize >SAR_FB_SIZE_1 )add_rx_skb (card,1 ,SAR_FB_SIZE_1 ,1 );else add_rx_skb (card,0 ,SAR_FB_SIZE_0 ,1 );
drivers/bluetooth/btintel.c +0 -10
@@ -2876,9 +2876,6 @@ static int btintel_setup_combined(struct hci_dev *hdev) INTEL_ROM_LEGACY_NO_WBS_SUPPORT)) set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks); -if (ver.hw_variant ==0x08 && ver.fw_variant ==0x22 ) -set_bit (HCI_QUIRK_VALID_LE_STATES , - &hdev->quirks); err =btintel_legacy_rom_setup (hdev, &ver);break ;
@@ -2887,7 +2884,6 @@ static int btintel_setup_combined(struct hci_dev *hdev)case 0x12 :/* ThP */ case 0x13 :/* HrP */ case 0x14 :/* CcP */ -set_bit (HCI_QUIRK_VALID_LE_STATES , &hdev->quirks); fallthrough;case 0x0c :/* WsP */ /* Apply the device specific HCI quirks
@@ -2979,9 +2975,6 @@ static int btintel_setup_combined(struct hci_dev *hdev)/* These variants don't seem to support LE Coded PHY */ set_bit (HCI_QUIRK_BROKEN_LE_CODED , &hdev->quirks); -/* Set Valid LE States quirk */ -set_bit (HCI_QUIRK_VALID_LE_STATES , &hdev->quirks); -/* Setup MSFT Extension support */ btintel_set_msft_opcode (hdev, ver.hw_variant);
@@ -3003,9 +2996,6 @@ static int btintel_setup_combined(struct hci_dev *hdev)*/ set_bit (HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED , &hdev->quirks); -/* Apply LE States quirk from solar onwards */ -set_bit (HCI_QUIRK_VALID_LE_STATES , &hdev->quirks); -/* Setup MSFT Extension support */ btintel_set_msft_opcode (hdev,INTEL_HW_VARIANT (ver_tlv.cnvi_bt));
drivers/bluetooth/btintel_pcie.c +0 -3
@@ -1182,9 +1182,6 @@ static int btintel_pcie_setup(struct hci_dev *hdev)*/ set_bit (HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED , &hdev->quirks); -/* Apply LE States quirk from solar onwards */ -set_bit (HCI_QUIRK_VALID_LE_STATES , &hdev->quirks); -/* Setup MSFT Extension support */ btintel_set_msft_opcode (hdev,INTEL_HW_VARIANT (ver_tlv.cnvi_bt));
drivers/bluetooth/btmtksdio.c +0 -3
@@ -1144,9 +1144,6 @@ static int btmtksdio_setup(struct hci_dev *hdev) } } -/* Valid LE States quirk for MediaTek 7921 */ -set_bit (HCI_QUIRK_VALID_LE_STATES , &hdev->quirks); -break ;case 0x7663 :case 0x7668 :
drivers/bluetooth/btrtl.c +0 -1
@@ -1287,7 +1287,6 @@ void btrtl_set_quirks(struct hci_dev *hdev, struct btrtl_device_info *btrtl_dev)case CHIP_ID_8852C :case CHIP_ID_8851B :case CHIP_ID_8852BT : -set_bit (HCI_QUIRK_VALID_LE_STATES , &hdev->quirks);set_bit (HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED , &hdev->quirks);/* RTL8852C needs to transmit mSBC data continuously without
drivers/bluetooth/btusb.c +2 -2
@@ -4545,8 +4545,8 @@ static int btusb_probe(struct usb_interface *intf,if (id->driver_info &BTUSB_WIDEBAND_SPEECH )set_bit (HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED , &hdev->quirks); -if (id->driver_info &BTUSB_VALID_LE_STATES ) -set_bit (HCI_QUIRK_VALID_LE_STATES , &hdev->quirks); +if (!(id->driver_info &BTUSB_VALID_LE_STATES )) +set_bit (HCI_QUIRK_BROKEN_LE_STATES , &hdev->quirks);if (id->driver_info &BTUSB_DIGIANSWER ) { data->cmdreq_type =USB_TYPE_VENDOR ;
drivers/bluetooth/hci_qca.c +2 -2
@@ -2408,8 +2408,8 @@ static int qca_serdev_probe(struct serdev_device *serdev)set_bit (HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED , &hdev->quirks); -if (data->capabilities &QCA_CAP_VALID_LE_STATES ) -set_bit (HCI_QUIRK_VALID_LE_STATES , &hdev->quirks); +if (!(data->capabilities &QCA_CAP_VALID_LE_STATES )) +set_bit (HCI_QUIRK_BROKEN_LE_STATES , &hdev->quirks); }return 0 ;
drivers/bluetooth/hci_vhci.c +0 -2
@@ -425,8 +425,6 @@ static int __vhci_create_device(struct vhci_data *data, __u8 opcode)if (opcode &0x80 )set_bit (HCI_QUIRK_RAW_DEVICE , &hdev->quirks); -set_bit (HCI_QUIRK_VALID_LE_STATES , &hdev->quirks); -if (hci_register_dev (hdev) <0 ) {BT_ERR ("Can't register HCI device" );hci_free_dev (hdev);
drivers/char/xillybus/xillyusb.c +34 -8
116 lines not on this page · raw message
drivers/gpio/gpio-mlxbf3.c +14 -0
@@ -39,6 +39,8 @@#define MLXBF_GPIO_CAUSE_OR_EVTEN0 0x14#define MLXBF_GPIO_CAUSE_OR_CLRCAUSE 0x18 +#define MLXBF_GPIO_CLR_ALL_INTS GENMASK(31, 0) +struct mlxbf3_gpio_context {struct gpio_chip gc;
@@ -82,6 +84,8 @@ static void mlxbf3_gpio_irq_disable(struct irq_data *irqd) val =readl (gs->gpio_cause_io +MLXBF_GPIO_CAUSE_OR_EVTEN0 ); val &= ~BIT (offset);writel (val, gs->gpio_cause_io +MLXBF_GPIO_CAUSE_OR_EVTEN0 ); + +writel (BIT (offset), gs->gpio_cause_io +MLXBF_GPIO_CAUSE_OR_CLRCAUSE );raw_spin_unlock_irqrestore (&gs->gc.bgpio_lock, flags);gpiochip_disable_irq (gc, offset);
@@ -253,6 +257,15 @@ static int mlxbf3_gpio_probe(struct platform_device *pdev)return 0 ; } +static void mlxbf3_gpio_shutdown (struct platform_device *pdev) +{ +struct mlxbf3_gpio_context *gs =platform_get_drvdata (pdev); + +/* Disable and clear all interrupts */ +writel (0 , gs->gpio_cause_io +MLXBF_GPIO_CAUSE_OR_EVTEN0 ); +writel (MLXBF_GPIO_CLR_ALL_INTS , gs->gpio_cause_io +MLXBF_GPIO_CAUSE_OR_CLRCAUSE ); +} +static const struct acpi_device_id mlxbf3_gpio_acpi_match[] = { {"MLNXBF33" ,0 }, {}
@@ -265,6 +278,7 @@ static struct platform_driver mlxbf3_gpio_driver = { .acpi_match_table = mlxbf3_gpio_acpi_match, }, .probe = mlxbf3_gpio_probe, + .shutdown = mlxbf3_gpio_shutdown, };module_platform_driver (mlxbf3_gpio_driver);
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +3 -0
@@ -1057,6 +1057,9 @@ static int amdgpu_cs_patch_ibs(struct amdgpu_cs_parser *p, r =amdgpu_ring_parse_cs (ring, p, job, ib);if (r)return r; + +if (ib->sa_bo) + ib->gpu_addr =amdgpu_sa_bo_gpu_addr (ib->sa_bo); }else { ib->ptr = (uint32_t *)kptr; r =amdgpu_ring_patch_cs_in_place (ring, p, job, ib);
drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +8 -0
@@ -685,16 +685,24 @@ int amdgpu_ctx_ioctl(struct drm_device *dev, void *data,switch (args->in.op) {case AMDGPU_CTX_OP_ALLOC_CTX : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_alloc (adev, fpriv, filp, priority, &id); args->out.alloc.ctx_id = id;break ;case AMDGPU_CTX_OP_FREE_CTX : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_free (fpriv, id);break ;case AMDGPU_CTX_OP_QUERY_STATE : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_query (adev, fpriv, id, &args->out);break ;case AMDGPU_CTX_OP_QUERY_STATE2 : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_query2 (adev, fpriv, id, &args->out);break ;case AMDGPU_CTX_OP_GET_STABLE_PSTATE :
drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c +3 -0
@@ -166,6 +166,9 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp, const char *buf, size_tif (ret)return -EFAULT ; +if (ta_bin_len >PSP_1_MEG ) +return -EINVAL ; + copy_pos +=sizeof (uint32_t ); ta_bin =kzalloc (ta_bin_len,GFP_KERNEL );
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +26 -27
156 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h +1 -0
@@ -329,6 +329,7 @@ struct amdgpu_vcn {uint16_t inst_mask;uint8_t num_inst_per_aid; +bool using_unified_queue; };struct amdgpu_fw_shared_rb_ptrs_struct {
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c +2 -2
@@ -543,11 +543,11 @@ void jpeg_v2_0_dec_ring_emit_ib(struct amdgpu_ring *ring,amdgpu_ring_write (ring,PACKETJ (mmUVD_LMI_JRBC_IB_VMID_INTERNAL_OFFSET,0 ,0 ,PACKETJ_TYPE0 )); -amdgpu_ring_write (ring, (vmid | (vmid <<4 ))); +amdgpu_ring_write (ring, (vmid | (vmid <<4 ) | (vmid <<8 )));amdgpu_ring_write (ring,PACKETJ (mmUVD_LMI_JPEG_VMID_INTERNAL_OFFSET,0 ,0 ,PACKETJ_TYPE0 )); -amdgpu_ring_write (ring, (vmid | (vmid <<4 ))); +amdgpu_ring_write (ring, (vmid | (vmid <<4 ) | (vmid <<8 )));amdgpu_ring_write (ring,PACKETJ (mmUVD_LMI_JRBC_IB_64BIT_BAR_LOW_INTERNAL_OFFSET,0 ,0 ,PACKETJ_TYPE0 ));
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c +61 -2
87 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.h +6 -1
@@ -46,6 +46,9 @@#define JRBC_DEC_EXTERNAL_REG_WRITE_ADDR 0x18000 +#define JPEG_REG_RANGE_START 0x4000 +#define JPEG_REG_RANGE_END 0x41c2 +extern const struct amdgpu_ip_block_version jpeg_v4_0_3_ip_block; void jpeg_v4_0_3_dec_ring_emit_ib(struct amdgpu_ring *ring,
@@ -62,5 +65,7 @@ void jpeg_v4_0_3_dec_ring_insert_end(struct amdgpu_ring *ring);void jpeg_v4_0_3_dec_ring_emit_wreg (struct amdgpu_ring *ring,uint32_t reg,uint32_t val);void jpeg_v4_0_3_dec_ring_emit_reg_wait (struct amdgpu_ring *ring,uint32_t reg,uint32_t val,uint32_t mask); - +int jpeg_v4_0_3_dec_ring_parse_cs (struct amdgpu_cs_parser *parser, +struct amdgpu_job *job, +struct amdgpu_ib *ib);#endif /* __JPEG_V4_0_3_H__ */
drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c +1 -0
@@ -523,6 +523,7 @@ static const struct amdgpu_ring_funcs jpeg_v5_0_0_dec_ring_vm_funcs = { .get_rptr = jpeg_v5_0_0_dec_ring_get_rptr, .get_wptr = jpeg_v5_0_0_dec_ring_get_wptr, .set_wptr = jpeg_v5_0_0_dec_ring_set_wptr, + .parse_cs = jpeg_v4_0_3_dec_ring_parse_cs, .emit_frame_size =SOC15_FLUSH_GPU_TLB_NUM_WREG *6 + SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 8 +
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c +10 -8
@@ -176,14 +176,16 @@ static void sdma_v5_2_ring_set_wptr(struct amdgpu_ring *ring)DRM_DEBUG ("calling WDOORBELL64(0x%08x, 0x%016llx)\n" , ring->doorbell_index, ring->wptr <<2 );WDOORBELL64 (ring->doorbell_index, ring->wptr <<2 ); -/* SDMA seems to miss doorbells sometimes when powergating kicks in. -* Updating the wptr directly will wake it. This is only safe because -* we disallow gfxoff in begin_use() and then allow it again in end_use(). -*/ -WREG32 (sdma_v5_2_get_reg_offset (adev, ring->me, mmSDMA0_GFX_RB_WPTR), -lower_32_bits (ring->wptr <<2 )); -WREG32 (sdma_v5_2_get_reg_offset (adev, ring->me, mmSDMA0_GFX_RB_WPTR_HI), -upper_32_bits (ring->wptr <<2 )); +if (amdgpu_ip_version (adev,SDMA0_HWIP ,0 ) ==IP_VERSION (5 ,2 ,1 )) { +/* SDMA seems to miss doorbells sometimes when powergating kicks in. +* Updating the wptr directly will wake it. This is only safe because +* we disallow gfxoff in begin_use() and then allow it again in end_use(). +*/ +WREG32 (sdma_v5_2_get_reg_offset (adev, ring->me, mmSDMA0_GFX_RB_WPTR), +lower_32_bits (ring->wptr <<2 )); +WREG32 (sdma_v5_2_get_reg_offset (adev, ring->me, mmSDMA0_GFX_RB_WPTR_HI), +upper_32_bits (ring->wptr <<2 )); + } }else {DRM_DEBUG ("Not using doorbell -- " "mmSDMA%i_GFX_RB_WPTR == 0x%08x "
drivers/gpu/drm/amd/amdgpu/soc15d.h +6 -0
@@ -76,6 +76,12 @@ ((cond & 0xF) << 24) | \ ((type & 0xF) << 28)) +#define CP_PACKETJ_NOP 0x60000000 +#define CP_PACKETJ_GET_REG (x) ((x) & 0x3FFFF) +#define CP_PACKETJ_GET_RES (x) (((x) >> 18) & 0x3F) +#define CP_PACKETJ_GET_COND (x) (((x) >> 24) & 0xF) +#define CP_PACKETJ_GET_TYPE (x) (((x) >> 28) & 0xF) +/* Packet 3 types */ #define PACKET3_NOP 0x10#define PACKET3_SET_BASE 0x11
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +28 -4
@@ -2724,6 +2724,9 @@ static int dm_suspend(void *handle)hpd_rx_irq_work_suspend (dm); +if (adev->dm.dc->caps.ips_support) +dc_allow_idle_optimizations (adev->dm.dc, true); +dc_set_power_state (dm->dc,DC_ACPI_CM_POWER_STATE_D3 );dc_dmub_srv_set_power_state (dm->dc->ctx->dmub_srv,DC_ACPI_CM_POWER_STATE_D3 );
@@ -6559,12 +6562,34 @@ static const struct attribute_group amdgpu_group = { .attrs = amdgpu_attrs }; +static bool +amdgpu_dm_should_create_sysfs (struct amdgpu_dm_connector *amdgpu_dm_connector) +{ +if (amdgpu_dm_abm_level >=0 ) +return false; + +if (amdgpu_dm_connector->base.connector_type != DRM_MODE_CONNECTOR_eDP) +return false; + +/* check for OLED panels */ +if (amdgpu_dm_connector->bl_idx >=0 ) { +struct drm_device *drm = amdgpu_dm_connector->base.dev; +struct amdgpu_display_manager *dm = &drm_to_adev (drm)->dm; +struct amdgpu_dm_backlight_caps *caps; + + caps = &dm->backlight_caps[amdgpu_dm_connector->bl_idx]; +if (caps->aux_support) +return false; + } + +return true; +} +static void amdgpu_dm_connector_unregister (struct drm_connector *connector) {struct amdgpu_dm_connector *amdgpu_dm_connector =to_amdgpu_dm_connector (connector); -if (connector->connector_type == DRM_MODE_CONNECTOR_eDP && - amdgpu_dm_abm_level <0 ) +if (amdgpu_dm_should_create_sysfs (amdgpu_dm_connector))sysfs_remove_group (&connector->kdev->kobj, &amdgpu_group);drm_dp_aux_unregister (&amdgpu_dm_connector->dm_dp_aux.aux);
@@ -6671,8 +6696,7 @@ amdgpu_dm_connector_late_register(struct drm_connector *connector)to_amdgpu_dm_connector (connector);int r; -if (connector->connector_type == DRM_MODE_CONNECTOR_eDP && - amdgpu_dm_abm_level <0 ) { +if (amdgpu_dm_should_create_sysfs (amdgpu_dm_connector)) { r =sysfs_create_group (&connector->kdev->kobj, &amdgpu_group);if (r)
drivers/gpu/drm/amd/display/dc/hwss/dcn10/dcn10_hwseq.c +2 -2
@@ -3605,7 +3605,7 @@ void dcn10_set_cursor_position(struct pipe_ctx *pipe_ctx) (int)hubp->curs_attr.width || pos_cpy.x <= (int)hubp->curs_attr.width + pipe_ctx->plane_state->src_rect.x) { - pos_cpy.x = temp_x + viewport_width; + pos_cpy.x =2 * viewport_width - temp_x; } } }else {
@@ -3698,7 +3698,7 @@ void dcn10_set_cursor_position(struct pipe_ctx *pipe_ctx) (int)hubp->curs_attr.width || pos_cpy.x <= (int)hubp->curs_attr.width + pipe_ctx->plane_state->src_rect.x) { - pos_cpy.x =2 * viewport_width - temp_x; + pos_cpy.x = temp_x + viewport_width; } } }else {
drivers/gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c +3 -0
@@ -1778,6 +1778,9 @@ static bool dcn321_resource_construct( dc->caps.color.mpc.ogam_rom_caps.hlg =0 ; dc->caps.color.mpc.ocsc =1 ; +/* Use pipe context based otg sync logic */ + dc->config.use_pipe_ctx_sync_logic = true; + dc->config.dc_mode_clk_limit_support = true; dc->config.enable_windowed_mpo_odm = true;/* read VBIOS LTTPR caps */
drivers/gpu/drm/i915/display/intel_dp_hdcp.c +3 -1
@@ -39,7 +39,9 @@ static u32 transcoder_to_stream_enc_status(enum transcoder cpu_transcoder)static void intel_dp_hdcp_wait_for_cp_irq (struct intel_connector *connector,int timeout) { -struct intel_hdcp *hdcp = &connector->hdcp; +struct intel_digital_port *dig_port =intel_attached_dig_port (connector); +struct intel_dp *dp = &dig_port->dp; +struct intel_hdcp *hdcp = &dp->attached_connector->hdcp;long ret;#define C (hdcp->cp_irq_count_cached != atomic_read(&hdcp->cp_irq_count))
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +2 -2
@@ -1179,8 +1179,6 @@ static void dpu_encoder_virt_atomic_mode_set(struct drm_encoder *drm_enc, cstate->num_mixers = num_lm; - dpu_enc->connector = conn_state->connector; -for (i =0 ; i < dpu_enc->num_phys_encs; i++) {struct dpu_encoder_phys *phys = dpu_enc->phys_encs[i];
@@ -1277,6 +1275,8 @@ static void dpu_encoder_virt_atomic_enable(struct drm_encoder *drm_enc, dpu_enc->commit_done_timedout = false; + dpu_enc->connector =drm_atomic_get_new_connector_for_encoder (state, drm_enc); + cur_mode = &dpu_enc->base.crtc->state->adjusted_mode; dpu_enc->wide_bus_en =dpu_encoder_is_widebus_enabled (drm_enc);
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +2 -2
@@ -308,8 +308,8 @@ static const u32 wb2_formats_rgb_yuv[] = { { \ .maxdwnscale = SSPP_UNITY_SCALE, \ .maxupscale = SSPP_UNITY_SCALE, \ - .format_list = plane_formats_yuv, \ - .num_formats = ARRAY_SIZE(plane_formats_yuv), \ + .format_list = plane_formats, \ + .num_formats = ARRAY_SIZE(plane_formats), \ .virt_format_list = plane_formats, \ .virt_num_formats = ARRAY_SIZE(plane_formats), \ }
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h +2 -12
@@ -31,24 +31,14 @@* @fmt: Pointer to format string */ #define DPU_DEBUG (fmt, ...) \ - do { \ - if (drm_debug_enabled(DRM_UT_KMS)) \ - DRM_DEBUG(fmt, ##__VA_ARGS__); \ - else \ - pr_debug(fmt, ##__VA_ARGS__); \ - } while (0) + DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)/** * DPU_DEBUG_DRIVER - macro for hardware driver logging * @fmt: Pointer to format string */ #define DPU_DEBUG_DRIVER (fmt, ...) \ - do { \ - if (drm_debug_enabled(DRM_UT_DRIVER)) \ - DRM_ERROR(fmt, ##__VA_ARGS__); \ - else \ - pr_debug(fmt, ##__VA_ARGS__); \ - } while (0) + DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)#define DPU_ERROR (fmt, ...) pr_err("[dpu error]" fmt, ##__VA_ARGS__)#define DPU_ERROR_RATELIMITED (fmt, ...) pr_err_ratelimited("[dpu error]" fmt, ##__VA_ARGS__)
drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c +17 -3
@@ -680,6 +680,9 @@ static int dpu_plane_prepare_fb(struct drm_plane *plane, new_state->fb, &layout);if (ret) {DPU_ERROR_PLANE (pdpu,"failed to get format layout, %d\n" , ret); +if (pstate->aspace) +msm_framebuffer_cleanup (new_state->fb, pstate->aspace, + pstate->needs_dirtyfb);return ret; }
@@ -743,10 +746,9 @@ static int dpu_plane_atomic_check_pipe(struct dpu_plane *pdpu, min_src_size =MSM_FORMAT_IS_YUV (fmt) ?2 :1 ;if (MSM_FORMAT_IS_YUV (fmt) && - (!pipe->sspp->cap->sblk->scaler_blk.len || - !pipe->sspp->cap->sblk->csc_blk.len)) { + !pipe->sspp->cap->sblk->csc_blk.len) {DPU_DEBUG_PLANE (pdpu, -"plane doesn't have scaler/csc for yuv\n" ); +"plane doesn't have csc for yuv\n" );return -EINVAL ; }
@@ -863,6 +865,10 @@ static int dpu_plane_atomic_check(struct drm_plane *plane, max_linewidth = pdpu->catalog->caps->max_linewidth; +drm_rect_rotate (&pipe_cfg->src_rect, + new_plane_state->fb->width, new_plane_state->fb->height, + new_plane_state->rotation); +if ((drm_rect_width (&pipe_cfg->src_rect) > max_linewidth) ||_dpu_plane_calc_clk (&crtc_state->adjusted_mode, pipe_cfg) > max_mdp_clk_rate) {/*
@@ -912,6 +918,14 @@ static int dpu_plane_atomic_check(struct drm_plane *plane, r_pipe_cfg->dst_rect.x1 = pipe_cfg->dst_rect.x2; } +drm_rect_rotate_inv (&pipe_cfg->src_rect, + new_plane_state->fb->width, new_plane_state->fb->height, + new_plane_state->rotation); +if (r_pipe->sspp) +drm_rect_rotate_inv (&r_pipe_cfg->src_rect, + new_plane_state->fb->width, new_plane_state->fb->height, + new_plane_state->rotation); + ret =dpu_plane_atomic_check_pipe (pdpu, pipe, pipe_cfg, fmt, &crtc_state->adjusted_mode);if (ret)return ret;
drivers/gpu/drm/msm/dp/dp_ctrl.c +2 -0
@@ -1286,6 +1286,8 @@ static int dp_ctrl_link_train(struct dp_ctrl_private *ctrl, link_info.rate = ctrl->link->link_params.rate; link_info.capabilities =DP_LINK_CAP_ENHANCED_FRAMING ; +dp_link_reset_phy_params_vx_px (ctrl->link); +dp_aux_link_configure (ctrl->aux, &link_info);if (drm_dp_max_downspread (dpcd))
drivers/gpu/drm/msm/dp/dp_panel.c +10 -9
@@ -90,22 +90,22 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel)static u32 dp_panel_get_supported_bpp (struct dp_panel *dp_panel,u32 mode_edid_bpp,u32 mode_pclk_khz) { -struct dp_link_info *link_info; +const struct dp_link_info *link_info;const u32 max_supported_bpp =30 , min_supported_bpp =18 ; -u32 bpp =0 , data_rate_khz =0 ; +u32 bpp, data_rate_khz; - bpp =min_t (u32, mode_edid_bpp, max_supported_bpp); + bpp =min (mode_edid_bpp, max_supported_bpp); link_info = &dp_panel->link_info; data_rate_khz = link_info->num_lanes * link_info->rate *8 ; -while (bpp > min_supported_bpp) { +do {if (mode_pclk_khz * bpp <= data_rate_khz) -break ; +return bpp; bpp -=6 ; - } + }while (bpp > min_supported_bpp); -return bpp; +return min_supported_bpp; } static int dp_panel_update_modes(struct drm_connector *connector,
@@ -442,8 +442,9 @@ int dp_panel_init_panel_info(struct dp_panel *dp_panel) drm_mode->clock);drm_dbg_dp (panel->drm_dev,"bpp = %d\n" , dp_panel->dp_mode.bpp); - dp_panel->dp_mode.bpp =max_t (u32,18 , -min_t (u32, dp_panel->dp_mode.bpp,30 )); + dp_panel->dp_mode.bpp =dp_panel_get_mode_bpp (dp_panel, dp_panel->dp_mode.bpp, + dp_panel->dp_mode.drm_mode.clock); +drm_dbg_dp (panel->drm_dev,"updated bpp = %d\n" , dp_panel->dp_mode.bpp);
drivers/gpu/drm/msm/msm_mdss.c +1 -1
@@ -577,7 +577,7 @@ static const struct msm_mdss_data sc7180_data = { .ubwc_enc_version = UBWC_2_0, .ubwc_dec_version = UBWC_2_0, .ubwc_static = 0x1e, - .highest_bank_bit = 0x3, + .highest_bank_bit = 0x1, .reg_bus_bw = 76800, };
drivers/gpu/drm/nouveau/nvkm/core/firmware.c +6 -3
@@ -205,7 +205,8 @@ nvkm_firmware_dtor(struct nvkm_firmware *fw)break ;case NVKM_FIRMWARE_IMG_DMA :nvkm_memory_unref (&memory); -dma_free_coherent (fw->device->dev,sg_dma_len (&fw->mem.sgl), fw->img, fw->phys); +dma_free_noncoherent (fw->device->dev,sg_dma_len (&fw->mem.sgl), + fw->img, fw->phys,DMA_TO_DEVICE );break ;case NVKM_FIRMWARE_IMG_SGT :nvkm_memory_unref (&memory);
@@ -236,10 +237,12 @@ nvkm_firmware_ctor(const struct nvkm_firmware_func *func, const char *name,break ;case NVKM_FIRMWARE_IMG_DMA : {dma_addr_t addr; - len =ALIGN (fw->len,PAGE_SIZE ); - fw->img =dma_alloc_coherent (fw->device->dev, len, &addr,GFP_KERNEL ); + fw->img =dma_alloc_noncoherent (fw->device->dev, + len, &addr, +DMA_TO_DEVICE , +GFP_KERNEL );if (fw->img) {memcpy (fw->img, src, fw->len); fw->phys = addr;
drivers/gpu/drm/nouveau/nvkm/falcon/fw.c +6 -0
@@ -89,6 +89,12 @@ nvkm_falcon_fw_boot(struct nvkm_falcon_fw *fw, struct nvkm_subdev *user,nvkm_falcon_fw_dtor_sigs (fw); } +/* after last write to the img, sync dma mappings */ +dma_sync_single_for_device (fw->fw.device->dev, + fw->fw.phys, +sg_dma_len (&fw->fw.mem.sgl), +DMA_TO_DEVICE ); +FLCNFW_DBG (fw,"resetting" ); fw->func->reset (fw);
drivers/gpu/drm/v3d/v3d_sched.c +11 -3
@@ -315,7 +315,7 @@ v3d_csd_job_run(struct drm_sched_job *sched_job)struct v3d_dev *v3d = job->base.v3d;struct drm_device *dev = &v3d->drm;struct dma_fence *fence; -int i, csd_cfg0_reg, csd_cfg_reg_count; +int i, csd_cfg0_reg; v3d->csd_job = job;
@@ -335,9 +335,17 @@ v3d_csd_job_run(struct drm_sched_job *sched_job)v3d_switch_perfmon (v3d, &job->base); csd_cfg0_reg =V3D_CSD_QUEUED_CFG0 (v3d->ver); - csd_cfg_reg_count = v3d->ver <71 ?6 :7 ; -for (i =1 ; i <= csd_cfg_reg_count; i++) +for (i =1 ; i <=6 ; i++)V3D_CORE_WRITE (0 , csd_cfg0_reg +4 * i, job->args.cfg[i]); + +/* Although V3D 7.1 has an eighth configuration register, we are not +* using it. Therefore, make sure it remains unused. +* +* XXX: Set the CFG7 register +*/ +if (v3d->ver >=71 ) +V3D_CORE_WRITE (0 ,V3D_V7_CSD_QUEUED_CFG7 ,0 ); +/* CFG0 write kicks off the job. */ V3D_CORE_WRITE (0 , csd_cfg0_reg, job->args.cfg[0 ]);
drivers/gpu/drm/xe/display/xe_display.c +4 -2
@@ -134,7 +134,7 @@ static void xe_display_fini_noirq(struct drm_device *dev, void *dummy)return ;intel_display_driver_remove_noirq (xe); -intel_power_domains_driver_remove (xe); +intel_opregion_cleanup (xe); }int xe_display_init_noirq (struct xe_device *xe)
@@ -160,8 +160,10 @@ int xe_display_init_noirq(struct xe_device *xe)intel_display_device_info_runtime_init (xe); err =intel_display_driver_probe_noirq (xe); -if (err) +if (err) { +intel_opregion_cleanup (xe);return err; + }return drmm_add_action_or_reset (&xe->drm, xe_display_fini_noirq,NULL ); }
drivers/gpu/drm/xe/xe_device.c +3 -1
@@ -551,7 +551,9 @@ int xe_device_probe(struct xe_device *xe)if (err)return err; -xe_mmio_probe_tiles (xe); + err =xe_mmio_probe_tiles (xe); +if (err) +return err;xe_ttm_sys_mgr_init (xe);
drivers/gpu/drm/xe/xe_exec_queue.c +0 -19
@@ -96,17 +96,11 @@ static struct xe_exec_queue *__xe_exec_queue_alloc(struct xe_device *xe, } } -if (xe_exec_queue_is_parallel (q)) { - q->parallel.composite_fence_ctx =dma_fence_context_alloc (1 ); - q->parallel.composite_fence_seqno =XE_FENCE_INITIAL_SEQNO ; - } -return q; }static int __xe_exec_queue_init (struct xe_exec_queue *q) { -struct xe_device *xe =gt_to_xe (q->gt);int i, err;for (i =0 ; i < q->width; ++i) {
@@ -119,17 +113,6 @@ static int __xe_exec_queue_init(struct xe_exec_queue *q)if (err) goto err_lrc; -/* -* Normally the user vm holds an rpm ref to keep the device -* awake, and the context holds a ref for the vm, however for -* some engines we use the kernels migrate vm underneath which offers no -* such rpm ref, or we lack a vm. Make sure we keep a ref here, so we -* can perform GuC CT actions when needed. Caller is expected to have -* already grabbed the rpm ref outside any sensitive locks. -*/ -if (!(q->flags &EXEC_QUEUE_FLAG_PERMANENT ) && (q->flags &EXEC_QUEUE_FLAG_VM || !q->vm)) -xe_pm_runtime_get_noresume (xe); -return 0 ; err_lrc:
@@ -216,8 +199,6 @@ void xe_exec_queue_fini(struct xe_exec_queue *q)for (i =0 ; i < q->width; ++i)xe_lrc_finish (q->lrc + i); -if (!(q->flags &EXEC_QUEUE_FLAG_PERMANENT ) && (q->flags &EXEC_QUEUE_FLAG_VM || !q->vm)) -xe_pm_runtime_put (gt_to_xe (q->gt));__xe_exec_queue_free (q); }
drivers/gpu/drm/xe/xe_exec_queue_types.h +0 -10
@@ -103,16 +103,6 @@ struct xe_exec_queue {struct xe_guc_exec_queue *guc; }; -/** -* @parallel: parallel submission state -*/ -struct { -/** @parallel.composite_fence_ctx: context composite fence */ -u64 composite_fence_ctx; -/** @parallel.composite_fence_seqno: seqno for composite fence */ -u32 composite_fence_seqno; - } parallel; -/** @sched_props: scheduling properties */ struct {/** @sched_props.timeslice_us: timeslice period in micro-seconds */
drivers/gpu/drm/xe/xe_gt_pagefault.c +16 -2
@@ -402,6 +402,18 @@ static void pf_queue_work_func(struct work_struct *w)static void acc_queue_work_func (struct work_struct *w); +static void pagefault_fini (void *arg) +{ +struct xe_gt *gt = arg; +struct xe_device *xe =gt_to_xe (gt); + +if (!xe->info.has_usm) +return ; + +destroy_workqueue (gt->usm.acc_wq); +destroy_workqueue (gt->usm.pf_wq); +} +int xe_gt_pagefault_init (struct xe_gt *gt) {struct xe_device *xe =gt_to_xe (gt);
@@ -429,10 +441,12 @@ int xe_gt_pagefault_init(struct xe_gt *gt) gt->usm.acc_wq =alloc_workqueue ("xe_gt_access_counter_work_queue" ,WQ_UNBOUND |WQ_HIGHPRI ,NUM_ACC_QUEUE ); -if (!gt->usm.acc_wq) +if (!gt->usm.acc_wq) { +destroy_workqueue (gt->usm.pf_wq);return -ENOMEM ; + } -return 0 ; +return devm_add_action_or_reset (xe->drm.dev, pagefault_fini, gt); }void xe_gt_pagefault_reset (struct xe_gt *gt)
drivers/gpu/drm/xe/xe_guc_submit.c +6 -2
@@ -35,6 +35,7 @@#include "xe_macros.h" #include "xe_map.h" #include "xe_mocs.h" +#include "xe_pm.h" #include "xe_ring_ops_types.h" #include "xe_sched_job.h" #include "xe_trace.h"
@@ -916,8 +917,9 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)return DRM_GPU_SCHED_STAT_NOMINAL ; } -drm_notice (&xe->drm,"Timedout job: seqno=%u, guc_id=%d, flags=0x%lx" , -xe_sched_job_seqno (job), q->guc->id, q->flags); +drm_notice (&xe->drm,"Timedout job: seqno=%u, lrc_seqno=%u, guc_id=%d, flags=0x%lx" , +xe_sched_job_seqno (job),xe_sched_job_lrc_seqno (job), + q->guc->id, q->flags);xe_gt_WARN (q->gt, q->flags &EXEC_QUEUE_FLAG_KERNEL ,"Kernel-submitted job timed out\n" ); xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
@@ -1011,6 +1013,7 @@ static void __guc_exec_queue_fini_async(struct work_struct *w)struct xe_exec_queue *q = ge->q;struct xe_guc *guc =exec_queue_to_guc (q); +xe_pm_runtime_get (guc_to_xe (guc));trace_xe_exec_queue_destroy (q);if (xe_exec_queue_is_lr (q))
@@ -1021,6 +1024,7 @@ static void __guc_exec_queue_fini_async(struct work_struct *w)kfree (ge);xe_exec_queue_fini (q); +xe_pm_runtime_put (guc_to_xe (guc)); }static void guc_exec_queue_fini_async (struct xe_exec_queue *q)
drivers/gpu/drm/xe/xe_hw_fence.c +47 -12
70 lines not on this page · raw message
drivers/gpu/drm/xe/xe_hw_fence.h +5 -2
@@ -24,7 +24,10 @@ void xe_hw_fence_ctx_init(struct xe_hw_fence_ctx *ctx, struct xe_gt *gt, struct xe_hw_fence_irq *irq, const char *name);void xe_hw_fence_ctx_finish (struct xe_hw_fence_ctx *ctx); -struct xe_hw_fence *xe_hw_fence_create (struct xe_hw_fence_ctx *ctx, -struct iosys_map seqno_map); +struct dma_fence *xe_hw_fence_alloc (void ); +void xe_hw_fence_free (struct dma_fence *fence); + +void xe_hw_fence_init (struct dma_fence *fence,struct xe_hw_fence_ctx *ctx, +struct iosys_map seqno_map);#endif
drivers/gpu/drm/xe/xe_lrc.c +46 -2
56 lines not on this page · raw message
drivers/gpu/drm/xe/xe_lrc.h +3 -0
@@ -38,6 +38,9 @@ void xe_lrc_write_ctx_reg(struct xe_lrc *lrc, int reg_nr, u32 val);u64 xe_lrc_descriptor (struct xe_lrc *lrc);u32 xe_lrc_seqno_ggtt_addr (struct xe_lrc *lrc); +struct dma_fence *xe_lrc_alloc_seqno_fence (void ); +void xe_lrc_free_seqno_fence (struct dma_fence *fence); +void xe_lrc_init_seqno_fence (struct xe_lrc *lrc,struct dma_fence *fence);struct dma_fence *xe_lrc_create_seqno_fence (struct xe_lrc *lrc);s32 xe_lrc_seqno (struct xe_lrc *lrc);
drivers/gpu/drm/xe/xe_mmio.c +35 -6
73 lines not on this page · raw message
drivers/gpu/drm/xe/xe_mmio.h +1 -1
@@ -21,7 +21,7 @@ struct xe_device;#define LMEM_BAR 2int xe_mmio_init (struct xe_device *xe); -void xe_mmio_probe_tiles (struct xe_device *xe); +int xe_mmio_probe_tiles (struct xe_device *xe);u8 xe_mmio_read8 (struct xe_gt *gt,struct xe_reg reg);u16 xe_mmio_read16 (struct xe_gt *gt,struct xe_reg reg);
drivers/gpu/drm/xe/xe_ring_ops.c +11 -11
@@ -380,7 +380,7 @@ static void emit_migration_job_gen12(struct xe_sched_job *job, dw[i++] =MI_ARB_ON_OFF |MI_ARB_DISABLE ;/* Enabled again below */ - i =emit_bb_start (job->batch_addr[0 ],BIT (8 ), dw, i); + i =emit_bb_start (job->ptrs[0 ].batch_addr,BIT (8 ), dw, i);if (!IS_SRIOV_VF (gt_to_xe (job->q->gt))) {/* XXX: Do we need this? Leaving for now. */
@@ -389,7 +389,7 @@ static void emit_migration_job_gen12(struct xe_sched_job *job, dw[i++] =preparser_disable (false); } - i =emit_bb_start (job->batch_addr[1 ],BIT (8 ), dw, i); + i =emit_bb_start (job->ptrs[1 ].batch_addr,BIT (8 ), dw, i); dw[i++] =MI_FLUSH_DW |MI_INVALIDATE_TLB | job->migrate_flush_flags |MI_FLUSH_DW_OP_STOREDW |MI_FLUSH_IMM_DW ;
@@ -411,8 +411,8 @@ static void emit_job_gen12_gsc(struct xe_sched_job *job)xe_gt_assert (gt, job->q->width <=1 );/* no parallel submission for GSCCS */ __emit_job_gen12_simple (job, job->q->lrc, - job->batch_addr[0 ], -xe_sched_job_seqno (job)); + job->ptrs[0 ].batch_addr, +xe_sched_job_lrc_seqno (job)); }static void emit_job_gen12_copy (struct xe_sched_job *job)
@@ -421,14 +421,14 @@ static void emit_job_gen12_copy(struct xe_sched_job *job)if (xe_sched_job_is_migration (job->q)) {emit_migration_job_gen12 (job, job->q->lrc, -xe_sched_job_seqno (job)); +xe_sched_job_lrc_seqno (job));return ; }for (i =0 ; i < job->q->width; ++i)__emit_job_gen12_simple (job, job->q->lrc + i, - job->batch_addr[i], -xe_sched_job_seqno (job)); + job->ptrs[i].batch_addr, +xe_sched_job_lrc_seqno (job)); }static void emit_job_gen12_video (struct xe_sched_job *job)
@@ -438,8 +438,8 @@ static void emit_job_gen12_video(struct xe_sched_job *job)/* FIXME: Not doing parallel handshake for now */ for (i =0 ; i < job->q->width; ++i)__emit_job_gen12_video (job, job->q->lrc + i, - job->batch_addr[i], -xe_sched_job_seqno (job)); + job->ptrs[i].batch_addr, +xe_sched_job_lrc_seqno (job)); }static void emit_job_gen12_render_compute (struct xe_sched_job *job)
@@ -448,8 +448,8 @@ static void emit_job_gen12_render_compute(struct xe_sched_job *job)for (i =0 ; i < job->q->width; ++i)__emit_job_gen12_render_compute (job, job->q->lrc + i, - job->batch_addr[i], -xe_sched_job_seqno (job)); + job->ptrs[i].batch_addr, +xe_sched_job_lrc_seqno (job)); }static const struct xe_ring_ops ring_ops_gen12_gsc = {
drivers/gpu/drm/xe/xe_sched_job.c +100 -80
286 lines not on this page · raw message
drivers/gpu/drm/xe/xe_sched_job.h +6 -1
@@ -70,7 +70,12 @@ to_xe_sched_job(struct drm_sched_job *drm)static inline u32 xe_sched_job_seqno (struct xe_sched_job *job) { -return job->fence->seqno; +return job->fence ? job->fence->seqno :0 ; +} + +static inline u32 xe_sched_job_lrc_seqno (struct xe_sched_job *job) +{ +return job->lrc_seqno; } static inline void
drivers/gpu/drm/xe/xe_sched_job_types.h +18 -2
@@ -11,6 +11,20 @@#include <drm/gpu_scheduler.h> struct xe_exec_queue ; +struct dma_fence ; +struct dma_fence_chain ; + +/** +* struct xe_job_ptrs - Per hw engine instance data +*/ +struct xe_job_ptrs { +/** @lrc_fence: Pre-allocated uinitialized lrc fence.*/ +struct dma_fence *lrc_fence; +/** @chain_fence: Pre-allocated ninitialized fence chain node. */ +struct dma_fence_chain *chain_fence; +/** @batch_addr: Batch buffer address. */ +u64 batch_addr; +};/** * struct xe_sched_job - XE schedule job (batch buffer tracking)
@@ -37,12 +51,14 @@ struct xe_sched_job {/** @user_fence.value: write back value */ u64 value; } user_fence; +/** @lrc_seqno: LRC seqno */ +u32 lrc_seqno;/** @migrate_flush_flags: Additional flush flags for migration jobs */ u32 migrate_flush_flags;/** @ring_ops_flush_tlb: The ring ops need to flush TLB before payload. */ bool ring_ops_flush_tlb; -/** @batch_addr: batch buffer address of job */ -u64 batch_addr[]; +/** @ptrs: per instance pointers. */ +struct xe_job_ptrs ptrs[]; };struct xe_sched_job_snapshot {
drivers/gpu/drm/xe/xe_trace.h +7 -4
@@ -254,6 +254,7 @@ DECLARE_EVENT_CLASS(xe_sched_job,TP_STRUCT__entry (__field (u32 ,seqno ) +__field (u32, lrc_seqno)__field (u16, guc_id)__field (u32, guc_state) __field(u32, flags)
@@ -264,17 +265,19 @@ DECLARE_EVENT_CLASS(xe_sched_job,TP_fast_assign ( __entry->seqno = xe_sched_job_seqno(job); + __entry->lrc_seqno =xe_sched_job_lrc_seqno (job); __entry->guc_id = job->q->guc->id; __entry->guc_state =atomic_read (&job->q->guc->state); __entry->flags = job->q->flags; - __entry->error = job->fence->error; + __entry->error = job->fence ? job->fence->error :0 ; __entry->fence = job->fence; - __entry->batch_addr = (u64 )job->batch_addr[0 ]; + __entry->batch_addr = (u64 )job->ptrs[0 ].batch_addr; ), -TP_printk ("fence=%p, seqno=%u, guc_id=%d, batch_addr=0x%012llx, guc_state=0x%x, flags=0x%x, error=%d" , - __entry->fence, __entry->seqno, __entry->guc_id, +TP_printk ("fence=%p, seqno=%u, lrc_seqno=%u, guc_id=%d, batch_addr=0x%012llx, guc_state=0x%x, flags=0x%x, error=%d" , + __entry->fence, __entry->seqno, + __entry->lrc_seqno, __entry->guc_id, __entry->batch_addr, __entry->guc_state, __entry->flags, __entry->error) );
drivers/hid/wacom_wac.c +3 -1
@@ -1924,12 +1924,14 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,int fmax = field->logical_maximum;unsigned int equivalent_usage =wacom_equivalent_usage (usage->hid);int resolution_code = code; -int resolution =hidinput_calc_abs_res (field, resolution_code); +int resolution;if (equivalent_usage ==HID_DG_TWIST ) { resolution_code =ABS_RZ ; } + resolution =hidinput_calc_abs_res (field, resolution_code); +if (equivalent_usage ==HID_GD_X ) { fmin += features->offset_left; fmax -= features->offset_right;
drivers/i2c/busses/i2c-qcom-geni.c +3 -1
@@ -986,8 +986,10 @@ static int __maybe_unused geni_i2c_runtime_resume(struct device *dev)return ret; ret =clk_prepare_enable (gi2c->core_clk); -if (ret) +if (ret) { +geni_icc_disable (&gi2c->se);return ret; + } ret =geni_se_resources_on (&gi2c->se);if (ret) {
drivers/i2c/busses/i2c-tegra.c +2 -2
@@ -1802,9 +1802,9 @@ static int tegra_i2c_probe(struct platform_device *pdev)* domain. * * VI I2C device shouldn't be marked as IRQ-safe because VI I2C won't -* be used for atomic transfers. +* be used for atomic transfers. ACPI device is not IRQ safe also. */ -if (!IS_VI (i2c_dev)) +if (!IS_VI (i2c_dev) && !has_acpi_companion (i2c_dev->dev))pm_runtime_irq_safe (i2c_dev->dev);pm_runtime_enable (i2c_dev->dev);
drivers/input/input-mt.c +3 -0
@@ -46,6 +46,9 @@ int input_mt_init_slots(struct input_dev *dev, unsigned int num_slots,return 0 ;if (mt)return mt->num_slots != num_slots ? -EINVAL :0 ; +/* Arbitrary limit for avoiding too large memory allocation. */ +if (num_slots >1024 ) +return -EINVAL ; mt =kzalloc (struct_size (mt, slots, num_slots),GFP_KERNEL );if (!mt)
drivers/input/serio/i8042-acpipnpio.h +8 -12
@@ -83,6 +83,7 @@ static inline void i8042_write_command(int val)#define SERIO_QUIRK_KBDRESET BIT(12)#define SERIO_QUIRK_DRITEK BIT(13)#define SERIO_QUIRK_NOPNP BIT(14) +#define SERIO_QUIRK_FORCENORESTORE BIT(15)/* Quirk table for different mainboards. Options similar or identical to i8042 * module parameters.
@@ -1149,18 +1150,10 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = { SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) }, { -/* -* Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS makes -* the keyboard very laggy for ~5 seconds after boot and -* sometimes also after resume. -* However both are required for the keyboard to not fail -* completely sometimes after boot or resume. -*/ .matches = { DMI_MATCH(DMI_BOARD_NAME, "N150CU"), }, - .driver_data = (void *)(SERIO_QUIRK_NOMUX |SERIO_QUIRK_RESET_ALWAYS | -SERIO_QUIRK_NOLOOP |SERIO_QUIRK_NOPNP ) + .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE ) }, { .matches = {
@@ -1685,6 +1678,8 @@ static void __init i8042_check_quirks(void)if (quirks &SERIO_QUIRK_NOPNP ) i8042_nopnp = true;#endif +if (quirks &SERIO_QUIRK_FORCENORESTORE ) + i8042_forcenorestore = true; }#else static inline void i8042_check_quirks (void ) {}
@@ -1718,7 +1713,7 @@ static int __init i8042_platform_init(void)i8042_check_quirks (); - pr_debug("Active quirks (empty means none):%s%s%s%s%s%s%s%s%s%s%s%s%s\n", + pr_debug("Active quirks (empty means none):%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n", i8042_nokbd ? " nokbd" : "", i8042_noaux ? " noaux" : "", i8042_nomux ? " nomux" : "",
@@ -1738,10 +1733,11 @@ static int __init i8042_platform_init(void) "",#endif #ifdef CONFIG_PNP - i8042_nopnp ? " nopnp" : ""); + i8042_nopnp ?" nopnp" :"" , #else - ""); +"" , #endif + i8042_forcenorestore ? " forcenorestore" : ""); retval =i8042_pnp_init ();if (retval)
drivers/input/serio/i8042.c +7 -3
@@ -115,6 +115,10 @@ module_param_named(nopnp, i8042_nopnp, bool, 0);MODULE_PARM_DESC (nopnp,"Do not use PNP to detect controller settings" );#endif +static bool i8042_forcenorestore; +module_param_named (forcenorestore, i8042_forcenorestore, bool,0 ); +MODULE_PARM_DESC (forcenorestore,"Force no restore on s3 resume, copying s2idle behaviour" ); +#define DEBUG #ifdef DEBUG static bool i8042_debug;
@@ -1232,7 +1236,7 @@ static int i8042_pm_suspend(struct device *dev) {int i; -if (pm_suspend_via_firmware ()) +if (!i8042_forcenorestore &&pm_suspend_via_firmware ())i8042_controller_reset (true);/* Set up serio interrupts for system wakeup. */
@@ -1248,7 +1252,7 @@ static int i8042_pm_suspend(struct device *dev)static int i8042_pm_resume_noirq (struct device *dev) { -if (!pm_resume_via_firmware ()) +if (i8042_forcenorestore || !pm_resume_via_firmware ())i8042_interrupt (0 ,NULL );return 0 ;
@@ -1271,7 +1275,7 @@ static int i8042_pm_resume(struct device *dev)* not restore the controller state to whatever it had been at boot * time, so we do not need to do anything. */ -if (!pm_suspend_via_firmware ()) +if (i8042_forcenorestore || !pm_suspend_via_firmware ())return 0 ;/*
drivers/iommu/io-pgfault.c +1 -0
@@ -192,6 +192,7 @@ void iommu_report_device_fault(struct device *dev, struct iopf_fault *evt)report_partial_fault (iopf_param, fault);iopf_put_dev_fault_param (iopf_param);/* A request that is not the last does not need to be ack'd */ +return ; }/*
drivers/iommu/iommufd/device.c +1 -1
@@ -525,7 +525,7 @@ iommufd_device_do_replace(struct iommufd_device *idev, err_unresv:if (hwpt_is_paging (hwpt))iommufd_group_remove_reserved_iova (igroup, -to_hwpt_paging (old_hwpt)); +to_hwpt_paging (hwpt)); err_unlock:mutex_unlock (&idev->igroup->lock);return ERR_PTR (rc);
drivers/md/dm-ioctl.c +20 -2
@@ -1181,8 +1181,26 @@ static int do_resume(struct dm_ioctl *param) suspend_flags &= ~DM_SUSPEND_LOCKFS_FLAG ;if (param->flags &DM_NOFLUSH_FLAG ) suspend_flags |=DM_SUSPEND_NOFLUSH_FLAG ; -if (!dm_suspended_md (md)) -dm_suspend (md, suspend_flags); +if (!dm_suspended_md (md)) { + r =dm_suspend (md, suspend_flags); +if (r) { +down_write (&_hash_lock); + hc =dm_get_mdptr (md); +if (hc && !hc->new_map) { + hc->new_map = new_map; + new_map =NULL ; + }else { + r = -ENXIO ; + } +up_write (&_hash_lock); +if (new_map) { +dm_sync_table (md); +dm_table_destroy (new_map); + } +dm_put (md); +return r; + } + } old_size =dm_get_size (md); old_map =dm_swap_table (md, new_map);
drivers/md/dm.c +2 -2
@@ -2594,7 +2594,7 @@ static int dm_wait_for_bios_completion(struct mapped_device *md, unsigned int tabreak ;if (signal_pending_state (task_state, current)) { - r = -EINTR ; + r = -ERESTARTSYS ;break ; }
@@ -2619,7 +2619,7 @@ static int dm_wait_for_completion(struct mapped_device *md, unsigned int task_stbreak ;if (signal_pending_state (task_state, current)) { - r = -EINTR ; + r = -ERESTARTSYS ;break ; }
drivers/md/persistent-data/dm-space-map-metadata.c +2 -2
@@ -277,7 +277,7 @@ static void sm_metadata_destroy(struct dm_space_map *sm) { struct sm_metadata *smm = container_of(sm, struct sm_metadata, sm); -kfree (smm); +kvfree (smm); }static int sm_metadata_get_nr_blocks (struct dm_space_map *sm,dm_block_t *count)
@@ -772,7 +772,7 @@ struct dm_space_map *dm_sm_metadata_init(void) {struct sm_metadata *smm; - smm =kmalloc (sizeof (*smm),GFP_KERNEL ); + smm =kvmalloc (sizeof (*smm),GFP_KERNEL );if (!smm)return ERR_PTR (-ENOMEM );
drivers/md/raid1.c +10 -4
@@ -617,6 +617,12 @@ static int choose_first_rdev(struct r1conf *conf, struct r1bio *r1_bio,return -1 ; } +static bool rdev_in_recovery (struct md_rdev *rdev,struct r1bio *r1_bio) +{ +return !test_bit (In_sync, &rdev->flags) && + rdev->recovery_offset < r1_bio->sector + r1_bio->sectors; +} +static int choose_bb_rdev (struct r1conf *conf,struct r1bio *r1_bio,int *max_sectors) {
@@ -635,6 +641,7 @@ static int choose_bb_rdev(struct r1conf *conf, struct r1bio *r1_bio, rdev = conf->mirrors[disk].rdev;if (!rdev ||test_bit (Faulty, &rdev->flags) || +rdev_in_recovery (rdev, r1_bio) ||test_bit (WriteMostly, &rdev->flags))continue ;
@@ -673,7 +680,8 @@ static int choose_slow_rdev(struct r1conf *conf, struct r1bio *r1_bio, rdev = conf->mirrors[disk].rdev;if (!rdev ||test_bit (Faulty, &rdev->flags) || - !test_bit (WriteMostly, &rdev->flags)) + !test_bit (WriteMostly, &rdev->flags) || +rdev_in_recovery (rdev, r1_bio))continue ;/* there are no bad blocks, we can use this disk */
@@ -733,9 +741,7 @@ static bool rdev_readable(struct md_rdev *rdev, struct r1bio *r1_bio)if (!rdev ||test_bit (Faulty, &rdev->flags))return false; -/* still in recovery */ -if (!test_bit (In_sync, &rdev->flags) && - rdev->recovery_offset < r1_bio->sector + r1_bio->sectors) +if (rdev_in_recovery (rdev, r1_bio))return false;/* don't read from slow disk unless have to */
drivers/misc/fastrpc.c +3 -19
@@ -2087,16 +2087,6 @@ static int fastrpc_req_mem_map(struct fastrpc_user *fl, char __user *argp)return err; } -static int is_attach_rejected (struct fastrpc_user *fl) -{ -/* Check if the device node is non-secure */ -if (!fl->is_secure_dev) { -dev_dbg (&fl->cctx->rpdev->dev,"untrusted app trying to attach to privileged DSP PD\n" ); -return -EACCES ; - } -return 0 ; -} -static long fastrpc_device_ioctl (struct file *file,unsigned int cmd,unsigned long arg) {
@@ -2109,19 +2099,13 @@ static long fastrpc_device_ioctl(struct file *file, unsigned int cmd, err =fastrpc_invoke (fl, argp);break ;case FASTRPC_IOCTL_INIT_ATTACH : - err =is_attach_rejected (fl); -if (!err) - err =fastrpc_init_attach (fl,ROOT_PD ); + err =fastrpc_init_attach (fl,ROOT_PD );break ;case FASTRPC_IOCTL_INIT_ATTACH_SNS : - err =is_attach_rejected (fl); -if (!err) - err =fastrpc_init_attach (fl,SENSORS_PD ); + err =fastrpc_init_attach (fl,SENSORS_PD );break ;case FASTRPC_IOCTL_INIT_CREATE_STATIC : - err =is_attach_rejected (fl); -if (!err) - err =fastrpc_init_create_static_process (fl, argp); + err =fastrpc_init_create_static_process (fl, argp);break ;case FASTRPC_IOCTL_INIT_CREATE : err =fastrpc_init_create_process (fl, argp);
drivers/mmc/core/mmc_test.c +5 -4
@@ -3125,13 +3125,13 @@ static ssize_t mtf_test_write(struct file *file, const char __user *buf, test->buffer =kzalloc (BUFFER_SIZE ,GFP_KERNEL );#ifdef CONFIG_HIGHMEM test->highmem =alloc_pages (GFP_KERNEL | __GFP_HIGHMEM,BUFFER_ORDER ); +if (!test->highmem) { + count = -ENOMEM ; + goto free_test_buffer; + }#endif -#ifdef CONFIG_HIGHMEM -if (test->buffer && test->highmem) { -#else if (test->buffer) { -#endif mutex_lock (&mmc_test_lock);mmc_test_run (test, testcase);mutex_unlock (&mmc_test_lock);
@@ -3139,6 +3139,7 @@ static ssize_t mtf_test_write(struct file *file, const char __user *buf,#ifdef CONFIG_HIGHMEM __free_pages (test->highmem,BUFFER_ORDER ); +free_test_buffer:#endif kfree (test->buffer);kfree (test);
drivers/mmc/host/dw_mmc.c +8 -0
@@ -3293,6 +3293,10 @@ int dw_mci_probe(struct dw_mci *host) host->biu_clk =devm_clk_get (host->dev,"biu" );if (IS_ERR (host->biu_clk)) {dev_dbg (host->dev,"biu clock not available\n" ); + ret =PTR_ERR (host->biu_clk); +if (ret == -EPROBE_DEFER ) +return ret; + }else { ret =clk_prepare_enable (host->biu_clk);if (ret) {
@@ -3304,6 +3308,10 @@ int dw_mci_probe(struct dw_mci *host) host->ciu_clk =devm_clk_get (host->dev,"ciu" );if (IS_ERR (host->ciu_clk)) {dev_dbg (host->dev,"ciu clock not available\n" ); + ret =PTR_ERR (host->ciu_clk); +if (ret == -EPROBE_DEFER ) + goto err_clk_biu; + host->bus_hz = host->pdata->bus_hz; }else { ret =clk_prepare_enable (host->ciu_clk);
drivers/mmc/host/mtk-sd.c +4 -4
@@ -1230,7 +1230,7 @@ static bool msdc_cmd_done(struct msdc_host *host, int events, }if (!sbc_error && !(events &MSDC_INT_CMDRDY )) { -if (events &MSDC_INT_CMDTMO || +if ((events &MSDC_INT_CMDTMO && !host->hs400_tuning) || (!mmc_op_tuning (cmd->opcode) && !host->hs400_tuning))/* * should not clear fifo/interrupt as the tune data
@@ -1323,9 +1323,9 @@ static void msdc_start_command(struct msdc_host *host,static void msdc_cmd_next (struct msdc_host *host,struct mmc_request *mrq,struct mmc_command *cmd) { -if ((cmd->error && - !(cmd->error == -EILSEQ && - (mmc_op_tuning (cmd->opcode) || host->hs400_tuning))) || +if ((cmd->error && !host->hs400_tuning && + !(cmd->error == -EILSEQ && +mmc_op_tuning (cmd->opcode))) || (mrq->sbc && mrq->sbc->error))msdc_request_done (host, mrq);else if (cmd == mrq->sbc)
drivers/net/bonding/bond_main.c +8 -13
@@ -582,7 +582,6 @@ static void bond_ipsec_del_sa_all(struct bonding *bond) }else { slave->dev->xfrmdev_ops->xdo_dev_state_delete (ipsec->xs); } - ipsec->xs->xso.real_dev =NULL ; }spin_unlock_bh (&bond->ipsec_lock);rcu_read_unlock ();
@@ -599,34 +598,30 @@ static bool bond_ipsec_offload_ok(struct sk_buff *skb, struct xfrm_state *xs)struct net_device *real_dev;struct slave *curr_active;struct bonding *bond; -int err; +bool ok = false; bond =netdev_priv (bond_dev);rcu_read_lock (); curr_active =rcu_dereference (bond->curr_active_slave); +if (!curr_active) + goto out; real_dev = curr_active->dev; -if (BOND_MODE (bond) !=BOND_MODE_ACTIVEBACKUP ) { - err = false; +if (BOND_MODE (bond) !=BOND_MODE_ACTIVEBACKUP ) goto out; - } -if (!xs->xso.real_dev) { - err = false; +if (!xs->xso.real_dev) goto out; - }if (!real_dev->xfrmdev_ops || !real_dev->xfrmdev_ops->xdo_dev_offload_ok || -netif_is_bond_master (real_dev)) { - err = false; +netif_is_bond_master (real_dev)) goto out; - } - err = real_dev->xfrmdev_ops->xdo_dev_offload_ok (skb, xs); + ok = real_dev->xfrmdev_ops->xdo_dev_offload_ok (skb, xs); out:rcu_read_unlock (); -return err; +return ok; }static const struct xfrmdev_ops bond_xfrmdev_ops = {
drivers/net/bonding/bond_options.c +1 -1
@@ -936,7 +936,7 @@ static int bond_option_active_slave_set(struct bonding *bond,/* check to see if we are clearing active */ if (!slave_dev) {netdev_dbg (bond->dev,"Clearing current active slave\n" ); -RCU_INIT_POINTER (bond->curr_active_slave,NULL ); +bond_change_active_slave (bond,NULL );bond_select_active_slave (bond); }else {struct slave *old_active =rtnl_dereference (bond->curr_active_slave);
drivers/net/dsa/microchip/ksz_ptp.c +1 -4
@@ -266,7 +266,6 @@ static int ksz_ptp_enable_mode(struct ksz_device *dev)struct ksz_port *prt;struct dsa_port *dp;bool tag_en = false; -int ret;dsa_switch_for_each_user_port (dp, dev->ds) { prt = &dev->ports[dp->index];
@@ -277,9 +276,7 @@ static int ksz_ptp_enable_mode(struct ksz_device *dev) }if (tag_en) { - ret =ptp_schedule_worker (ptp_data->clock,0 ); -if (ret) -return ret; +ptp_schedule_worker (ptp_data->clock,0 ); }else {ptp_cancel_worker_sync (ptp_data->clock); }
drivers/net/dsa/mv88e6xxx/global1_atu.c +2 -1
@@ -457,7 +457,8 @@ static irqreturn_t mv88e6xxx_g1_atu_prob_irq_thread_fn(int irq, void *dev_id)trace_mv88e6xxx_atu_full_violation (chip->dev, spid, entry.portvec, entry.mac, fid); - chip->ports[spid].atu_full_violation++; +if (spid <ARRAY_SIZE (chip->ports)) + chip->ports[spid].atu_full_violation++; }return IRQ_HANDLED ;
drivers/net/dsa/ocelot/felix.c +11 -0
@@ -528,7 +528,9 @@ static int felix_tag_8021q_setup(struct dsa_switch *ds)* so we need to be careful that there are no extra frames to be * dequeued over MMIO, since we would never know to discard them. */ +ocelot_lock_xtr_grp_bh (ocelot,0 );ocelot_drain_cpu_queue (ocelot,0 ); +ocelot_unlock_xtr_grp_bh (ocelot,0 );return 0 ; }
@@ -1504,6 +1506,8 @@ static void felix_port_deferred_xmit(struct kthread_work *work)int port = xmit_work->dp->index;int retries =10 ; +ocelot_lock_inj_grp (ocelot,0 ); + do { if (ocelot_can_inject(ocelot, 0)) break;
@@ -1512,6 +1516,7 @@ static void felix_port_deferred_xmit(struct kthread_work *work) }while (--retries);if (!retries) { +ocelot_unlock_inj_grp (ocelot,0 );dev_err (ocelot->dev,"port %d failed to inject skb\n" , port);ocelot_port_purge_txtstamp_skb (ocelot, port, skb);
@@ -1521,6 +1526,8 @@ static void felix_port_deferred_xmit(struct kthread_work *work)ocelot_port_inject_frame (ocelot, port,0 , rew_op, skb); +ocelot_unlock_inj_grp (ocelot,0 ); +consume_skb (skb);kfree (xmit_work); }
@@ -1671,6 +1678,8 @@ static bool felix_check_xtr_pkt(struct ocelot *ocelot)if (!felix->info->quirk_no_xtr_irq)return false; +ocelot_lock_xtr_grp (ocelot, grp); +while (ocelot_read (ocelot,QS_XTR_DATA_PRESENT ) &BIT (grp)) {struct sk_buff *skb;unsigned int type;
@@ -1707,6 +1716,8 @@ static bool felix_check_xtr_pkt(struct ocelot *ocelot)ocelot_drain_cpu_queue (ocelot,0 ); } +ocelot_unlock_xtr_grp (ocelot, grp); +return true; }
drivers/net/dsa/vitesse-vsc73xx-core.c +42 -3
99 lines not on this page · raw message
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +0 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +20 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/devlink/devlink_port.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_base.c +20 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_txrx.c +4 -43
47 lines not on this page · raw message
drivers/net/ethernet/intel/igb/igb_main.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_defines.h +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_main.c +6 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_tsn.c +62 -14
76 lines not on this page · raw message
drivers/net/ethernet/intel/igc/igc_tsn.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c +11 -12
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_wed.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +8 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lib/sd.c +9 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h +8 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c +44 -6
50 lines not on this page · raw message
drivers/net/ethernet/microsoft/mana/mana_en.c +20 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mscc/ocelot.c +84 -7
91 lines not on this page · raw message
drivers/net/ethernet/mscc/ocelot_fdma.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mscc/ocelot_vsc7514.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c +6 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/xilinx/xilinx_axienet.h +9 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +13 -12
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath12k/dp_tx.c +72 -0
72 lines not on this page · raw message
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +10 -3
Lines of this file are not shown. View the raw message.
drivers/platform/surface/aggregator/controller.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/platform/x86/dell/dell-uart-backlight.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/s390/block/dasd_eckd.c +24 -31
55 lines not on this page · raw message
drivers/staging/media/atomisp/pci/ia_css_stream_public.h +6 -2
Lines of this file are not shown. View the raw message.
drivers/staging/media/atomisp/pci/sh_css_internal.h +16 -3
Lines of this file are not shown. View the raw message.
drivers/thermal/gov_bang_bang.c +64 -23
87 lines not on this page · raw message
fs/btrfs/delayed-ref.c +67 -0
67 lines not on this page · raw message
fs/btrfs/extent-tree.c +45 -6
51 lines not on this page · raw message
fs/btrfs/send.c +39 -13
52 lines not on this page · raw message
fs/btrfs/tree-checker.c +72 -2
74 lines not on this page · raw message
fs/netfs/io.c +144 -0
144 lines not on this page · raw message
fs/smb/client/file.c +46 -9
55 lines not on this page · raw message
fs/smb/client/smb2ops.c +37 -5
42 lines not on this page · raw message
fs/smb/client/trace.h +54 -1
55 lines not on this page · raw message
include/linux/dsa/ocelot.h +47 -0
47 lines not on this page · raw message
io_uring/napi.c +28 -22
50 lines not on this page · raw message
kernel/kallsyms.c +7 -53
60 lines not on this page · raw message
kernel/workqueue.c +26 -21
47 lines not on this page · raw message
mm/page_alloc.c +21 -30
51 lines not on this page · raw message
net/bluetooth/smp.c +72 -72
144 lines not on this page · raw message
net/ipv6/netfilter/nf_conntrack_reasm.c +4 -0
Lines of this file are not shown. View the raw message.
net/mptcp/pm_netlink.c +94 -48
142 lines not on this page · raw message
net/netfilter/nf_tables_api.c +102 -45
147 lines not on this page · raw message
net/sched/sch_netem.c +29 -18
47 lines not on this page · raw message
net/vmw_vsock/af_vsock.c +29 -21
50 lines not on this page · raw message
scripts/kallsyms.c +32 -79
111 lines not on this page · raw message
scripts/link-vmlinux.sh +57 -49
106 lines not on this page · raw message
security/keys/trusted-keys/trusted_dcp.c +22 -13
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/iters.c +54 -0
54 lines not on this page · raw message
tools/testing/selftests/core/close_range_test.c +35 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/mlxsw/ethtool_lanes.sh +2 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/run_vmtests.sh +3 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/af_unix/msg_oob.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/mptcp_join.sh +23 -5
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/udpgro.sh +28 -25
53 lines not on this page · raw message
tools/testing/selftests/tc-testing/tdc.py +0 -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.