Linux 6.13.4
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.13.4 kernel.
All users of the 6.13 kernel series must upgrade.
The updated 6.13.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.13.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml | 2 Documentation/networking/iso15765-2.rst | 4 Makefile | 15 - arch/alpha/include/uapi/asm/ptrace.h | 2 arch/alpha/kernel/asm-offsets.c | 4 arch/alpha/kernel/entry.S | 24 - arch/alpha/kernel/traps.c | 2 arch/alpha/mm/fault.c | 4 arch/arm64/Makefile | 4 arch/arm64/kernel/cacheinfo.c | 12 arch/arm64/kernel/vdso/vdso.lds.S | 1 arch/arm64/kernel/vmlinux.lds.S | 1 arch/loongarch/kernel/genex.S | 28 + arch/loongarch/kernel/idle.c | 3 arch/loongarch/kernel/reset.c | 6 arch/loongarch/kvm/main.c | 4 arch/loongarch/lib/csum.c | 2 arch/powerpc/sysdev/fsl_msi.c | 2 arch/s390/pci/pci_bus.c | 20 + arch/s390/pci/pci_iov.c | 56 ++- arch/s390/pci/pci_iov.h | 7 arch/um/kernel/process.c | 10 arch/um/os-Linux/skas/process.c | 16 - arch/x86/Kconfig | 3 arch/x86/events/intel/core.c | 33 -- arch/x86/events/intel/ds.c | 10 arch/x86/include/asm/kvm-x86-ops.h | 1 arch/x86/include/asm/kvm_host.h | 1 arch/x86/include/asm/mmu.h | 2 arch/x86/include/asm/mmu_context.h | 1 arch/x86/include/asm/msr-index.h | 3 arch/x86/include/asm/perf_event.h | 28 + arch/x86/include/asm/tlbflush.h | 1 arch/x86/kernel/cpu/bugs.c | 21 - arch/x86/kvm/hyperv.c | 6 arch/x86/kvm/mmu/mmu.c | 2 arch/x86/kvm/svm/nested.c | 10 arch/x86/kvm/svm/svm.c | 13 arch/x86/kvm/vmx/main.c | 1 arch/x86/kvm/vmx/vmx.c | 10 arch/x86/kvm/vmx/x86_ops.h | 1 arch/x86/kvm/x86.c | 3 arch/x86/mm/tlb.c | 35 ++ arch/x86/um/os-Linux/registers.c | 21 + arch/x86/um/signal.c | 13 arch/x86/xen/mmu_pv.c | 75 ++++- block/partitions/mac.c | 18 + drivers/acpi/arm64/gtdt.c | 12 drivers/acpi/x86/utils.c | 13 drivers/base/regmap/regmap-irq.c | 2 drivers/bluetooth/btintel_pcie.c | 5 drivers/bus/moxtet.c | 2 drivers/cpufreq/amd-pstate.c | 105 ++----- drivers/firmware/efi/efi.c | 6 drivers/firmware/efi/libstub/randomalloc.c | 3 drivers/firmware/efi/libstub/relocate.c | 3 drivers/firmware/qcom/qcom_scm-smc.c | 3 drivers/gpio/gpio-bcm-kona.c | 71 +++- drivers/gpio/gpio-stmpe.c | 15 - drivers/gpio/gpiolib-acpi.c | 14 drivers/gpio/gpiolib.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 5 drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 2 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 3 drivers/gpu/drm/display/drm_dp_helper.c | 2 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c | 4 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h | 4 drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 3 drivers/gpu/drm/msm/msm_gem_submit.c | 3 drivers/gpu/drm/panthor/panthor_drv.c | 1 drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c | 2 drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi_regs.h | 1 drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c | 6 drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 7 drivers/gpu/drm/tidss/tidss_dispc.c | 26 + drivers/gpu/drm/tidss/tidss_irq.c | 2 drivers/gpu/drm/v3d/v3d_perfmon.c | 5 drivers/gpu/drm/xe/regs/xe_oa_regs.h | 9 drivers/gpu/drm/xe/xe_drm_client.c | 2 drivers/gpu/drm/xe/xe_oa.c | 92 ++++-- drivers/gpu/drm/xe/xe_oa_types.h | 5 drivers/gpu/drm/xe/xe_query.c | 4 drivers/gpu/drm/xe/xe_trace_bo.h | 12 drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c | 54 ++- drivers/gpu/drm/xlnx/zynqmp_dp.c | 2 drivers/gpu/host1x/dev.c | 2 drivers/gpu/host1x/intr.c | 2 drivers/hid/hid-corsair-void.c | 3 drivers/hid/hid-multitouch.c | 5 drivers/hid/hid-steam.c | 41 ++ drivers/hid/hid-thrustmaster.c | 2 drivers/hid/hid-winwing.c | 2 drivers/hv/channel_mgmt.c | 61 +++- drivers/hv/connection.c | 4 drivers/hv/hyperv_vmbus.h | 14 drivers/hv/vmbus_drv.c | 16 - drivers/i3c/master/Kconfig | 11 drivers/i3c/master/mipi-i3c-hci/Makefile | 1 drivers/i3c/master/mipi-i3c-hci/dma.c | 17 + drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c | 148 ++++++++++ drivers/infiniband/hw/efa/efa_main.c | 9 drivers/iommu/amd/amd_iommu_types.h | 1 drivers/iommu/amd/init.c | 4 drivers/iommu/intel/prq.c | 4 drivers/iommu/io-pgfault.c | 1 drivers/irqchip/irq-partition-percpu.c | 2 drivers/media/dvb-frontends/cxd2841er.c | 8 drivers/media/i2c/ds90ub913.c | 25 + drivers/media/i2c/ds90ub953.c | 46 ++- drivers/media/platform/broadcom/bcm2835-unicam.c | 8 drivers/media/test-drivers/vidtv/vidtv_bridge.c | 8 drivers/media/usb/uvc/uvc_driver.c | 18 + drivers/media/usb/uvc/uvc_video.c | 27 + drivers/media/usb/uvc/uvcvideo.h | 1 drivers/mmc/host/mtk-sd.c | 31 +- drivers/mmc/host/sdhci_am654.c | 30 -- drivers/net/can/c_can/c_can_platform.c | 5 drivers/net/can/ctucanfd/ctucanfd_base.c | 10 drivers/net/can/rockchip/rockchip_canfd-core.c | 2 drivers/net/can/usb/etas_es58x/es58x_devlink.c | 6 drivers/net/ethernet/intel/idpf/idpf_lib.c | 5 drivers/net/ethernet/intel/idpf/idpf_txrx.c | 5 drivers/net/ethernet/intel/igc/igc_main.c | 22 - drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c | 4 drivers/net/ethernet/ti/am65-cpsw-nuss.c | 50 ++- drivers/net/team/team_core.c | 4 drivers/net/vxlan/vxlan_core.c | 7 drivers/net/wireless/ath/ath12k/wmi.c | 61 +++- drivers/net/wireless/ath/ath12k/wmi.h | 1 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 4 drivers/parport/parport_serial.c | 12 drivers/pci/controller/pcie-mediatek-gen3.c | 59 ++- drivers/pci/endpoint/pci-epc-core.c | 11 drivers/pci/quirks.c | 15 - drivers/pci/switch/switchtec.c | 26 + drivers/pinctrl/pinconf-generic.c | 8 drivers/pinctrl/pinctrl-cy8c95x0.c | 42 +- drivers/ptp/ptp_vmclock.c | 8 drivers/regulator/core.c | 61 +--- drivers/soc/qcom/llcc-qcom.c | 57 +++ drivers/soc/qcom/smp2p.c | 2 drivers/soc/tegra/fuse/fuse-tegra30.c | 17 - drivers/spi/spi-sn-f-ospi.c | 3 drivers/tty/serial/8250/8250.h | 2 drivers/tty/serial/8250/8250_dma.c | 16 + drivers/tty/serial/8250/8250_pci.c | 76 ++--- drivers/tty/serial/8250/8250_pci1xxxx.c | 60 +++- drivers/tty/serial/8250/8250_port.c | 9 drivers/tty/serial/serial_port.c | 5 drivers/ufs/core/ufs_bsg.c | 1 drivers/ufs/core/ufshcd.c | 127 ++++---- drivers/usb/class/cdc-acm.c | 28 + drivers/usb/core/hub.c | 14 drivers/usb/core/quirks.c | 6 drivers/usb/dwc2/gadget.c | 1 drivers/usb/dwc3/gadget.c | 34 ++ drivers/usb/gadget/function/f_midi.c | 17 - drivers/usb/gadget/udc/core.c | 2 drivers/usb/gadget/udc/renesas_usb3.c | 2 drivers/usb/host/pci-quirks.c | 9 drivers/usb/host/xhci-pci.c | 7 drivers/usb/roles/class.c | 5 drivers/usb/serial/option.c | 49 +-- drivers/usb/typec/tcpm/tcpm.c | 3 drivers/vfio/pci/nvgrace-gpu/main.c | 95 ++++-- drivers/vfio/pci/vfio_pci_rdwr.c | 1 drivers/vfio/platform/vfio_platform_common.c | 10 drivers/video/fbdev/omap/lcd_dma.c | 4 drivers/xen/swiotlb-xen.c | 20 - fs/btrfs/extent_io.c | 29 + fs/btrfs/file.c | 4 fs/nfs/sysfs.c | 6 fs/nfsd/filecache.c | 11 fs/nfsd/nfs2acl.c | 2 fs/nfsd/nfs3acl.c | 2 fs/nfsd/nfs4callback.c | 7 fs/ntfs3/attrib.c | 15 - fs/ntfs3/dir.c | 2 fs/ntfs3/frecord.c | 71 ++-- fs/ntfs3/fsntfs.c | 6 fs/ntfs3/index.c | 6 fs/ntfs3/inode.c | 3 fs/ntfs3/ntfs_fs.h | 21 - fs/ntfs3/record.c | 79 ++--- fs/orangefs/orangefs-debugfs.c | 4 fs/smb/client/cifsglob.h | 1 fs/smb/client/file.c | 7 include/drm/display/drm_dp.h | 1 include/kunit/platform_device.h | 1 include/linux/blk-mq.h | 18 - include/linux/cgroup-defs.h | 6 include/linux/compiler.h | 26 - include/linux/efi.h | 1 include/linux/netdevice.h | 6 include/linux/pci_ids.h | 11 include/linux/sched/task.h | 1 include/net/dst.h | 9 include/net/ip.h | 13 include/net/l3mdev.h | 2 include/net/net_namespace.h | 2 include/net/route.h | 9 include/uapi/drm/xe_drm.h | 16 + include/uapi/linux/thermal.h | 2 include/ufs/ufshcd.h | 9 io_uring/kbuf.c | 15 - io_uring/uring_cmd.c | 32 -- io_uring/waitid.c | 4 kernel/cgroup/cgroup.c | 20 - kernel/cgroup/rstat.c | 1 kernel/sched/autogroup.c | 4 kernel/sched/core.c | 7 kernel/sched/ext.c | 71 ++-- kernel/sched/ext.h | 4 kernel/sched/sched.h | 2 kernel/time/clocksource.c | 9 kernel/trace/ring_buffer.c | 28 + kernel/trace/trace.c | 4 kernel/workqueue.c | 12 net/ax25/af_ax25.c | 11 net/batman-adv/bat_v.c | 2 net/batman-adv/bat_v_elp.c | 122 +++++--- net/batman-adv/bat_v_elp.h | 2 net/batman-adv/translation-table.c | 12 net/batman-adv/types.h | 3 net/can/j1939/socket.c | 4 net/can/j1939/transport.c | 5 net/core/fib_rules.c | 24 - net/core/flow_dissector.c | 21 - net/core/neighbour.c | 8 net/core/rtnetlink.c | 1 net/ipv4/arp.c | 4 net/ipv4/devinet.c | 3 net/ipv4/icmp.c | 31 +- net/ipv4/route.c | 30 +- net/ipv6/icmp.c | 42 +- net/ipv6/ioam6_iptunnel.c | 75 ++--- net/ipv6/mcast.c | 45 +-- net/ipv6/ndisc.c | 24 - net/ipv6/route.c | 7 net/ipv6/rpl_iptunnel.c | 59 ++- net/ipv6/seg6_iptunnel.c | 98 ++++-- net/openvswitch/datapath.c | 12 net/vmw_vsock/af_vsock.c | 12 rust/Makefile | 1 rust/kernel/rbtree.rs | 2 samples/hid/Makefile | 13 scripts/Makefile.defconf | 13 scripts/Makefile.extrawarn | 13 scripts/kconfig/Makefile | 4 sound/soc/intel/boards/bytcr_rt5640.c | 17 + sound/soc/renesas/Kconfig | 2 tools/objtool/check.c | 1 tools/sched_ext/include/scx/common.bpf.h | 12 tools/testing/selftests/gpio/gpio-sim.sh | 31 +- tools/tracing/rtla/src/timerlat_hist.c | 8 tools/tracing/rtla/src/timerlat_top.c | 8 256 files changed, 2792 insertions(+), 1331 deletions(-)
Aaro Koskinen (1):
fbdev: omap: use threaded IRQ for LCD DMA
Aditya Garg (1):
wifi: brcmfmac: use random seed flag for BCM4355 and BCM4364 firmware
Aditya Kumar Singh (1):
wifi: ath12k: fix handling of 6 GHz rules
Alan Stern (1):
USB: hub: Ignore non-compliant devices with too many configs or interfaces
Alexander Hölzl (1):
can: j1939: j1939_sk_send_loop(): fix unable to send messages with data length zero
Andrea Righi (1):
sched_ext: Fix lock imbalance in dispatch_to_local_dsq()
Andy Shevchenko (10):
pinctrl: cy8c95x0: Fix off-by-one in the regmap range settings
pinctrl: cy8c95x0: Avoid accessing reserved registers
pinctrl: cy8c95x0: Enable regmap locking for debug
pinctrl: cy8c95x0: Rename PWMSEL to SELPWM
pinctrl: cy8c95x0: Respect IRQ trigger settings from firmware
gpiolib: Fix crash on error in gpiochip_get_ngpios()
serial: 8250_pci: Resolve WCH vendor ID ambiguity
serial: 8250_pci: Share WCH IDs with parport_serial driver
serial: port: Assign ->iotype correctly when ->iobase is set
serial: port: Always update ->iotype in __uart_read_properties()
Andy Strohman (1):
batman-adv: fix panic during interface removal
Andy-ld Lu (1):
mmc: mtk-sd: Fix register settings for hs400(es) mode
Ankit Agrawal (2):
vfio/nvgrace-gpu: Read dvsec register to determine need for uncached resmem vfio/nvgrace-gpu: Expose the blackwell device PF BAR1 to the VM
Ard Biesheuvel (1):
efi: Avoid cold plugged memory for placing the kernel
Arnd Bergmann (1):
media: cxd2841er: fix 64-bit division on gcc-9
Artur Weber (3):
gpio: bcm-kona: Fix GPIO lock/unlock for banks above bank 0
gpio: bcm-kona: Make sure GPIO bits are unlocked when requesting IRQ
gpio: bcm-kona: Add missing newline to dev_err format string
Ashutosh Dixit (2):
drm/xe/oa/uapi: Expose an unblock after N reports OA property drm/xe/oa: Set stream->pollin in xe_oa_buffer_check_unlocked
Avri Altman (5):
scsi: ufs: core: Introduce ufshcd_has_pending_tasks()
scsi: ufs: core: Prepare to introduce a new clock_gating lock
scsi: ufs: core: Introduce a new clock_gating lock
scsi: ufs: Fix toggling of clk_gating.state when clock gating is not allowed
scsi: ufs: core: Ensure clk_gating.lock is used only after initialization
Benjamin Berg (4):
um: add back support for FXSAVE registers
um: avoid copying FP state from init_task
um: properly align signal stack on x86_64
um: fix execve stub execution on old host OSs
Bibo Mao (1):
LoongArch: KVM: Fix typo issue about GCFG feature detection
Bjorn Helgaas (1):
PCI: Avoid FLR for Mediatek MT7922 WiFi
Brian Norris (1):
kunit: platform: Resolve 'struct completion' warning
Caleb Sander Mateos (2):
io_uring/uring_cmd: don't assume io_uring_cmd_data layout io_uring/uring_cmd: switch sqe to async_data on EAGAIN
Charles Han (2):
HID: winwing: Add NULL check in winwing_init_led()
HID: multitouch: Add NULL check in mt_input_configured
Chester A. Unal (1):
USB: serial: option: add MeiG Smart SLM828
Chris Brandt (1):
drm: renesas: rz-du: Increase supported resolutions
Christian Gmeiner (1):
drm/v3d: Stop active perfmon if it is being destroyed
Chuyi Zhou (2):
sched_ext: Fix the incorrect bpf_list kfunc API in common.bpf.h.
sched_ext: Use SCX_CALL_OP_TASK in task_tick_scx
Claudiu Beznea (1):
pinctrl: pinconf-generic: Print unsigned value if a format is registered
Dai Ngo (1):
NFSD: fix hang in nfsd4_shutdown_callback
Dan Carpenter (1):
drm/msm/gem: prevent integer overflow in msm_ioctl_gem_submit()
David Sterba (1):
btrfs: rename __get_extent_map() and pass btrfs_inode
David Woodhouse (1):
ptp: vmclock: Add .owner to vmclock_miscdev_fops
Devarsh Thakkar (2):
drm/tidss: Fix race condition while handling interrupt registers drm/tidss: Clear the interrupt status for interrupts being disabled
Dhananjay Ugwekar (5):
cpufreq/amd-pstate: Refactor amd_pstate_epp_reenable() and amd_pstate_epp_offline() cpufreq/amd-pstate: Remove the cppc_state check in offline/online functions cpufreq/amd-pstate: Merge amd_pstate_epp_cpu_offline() and amd_pstate_epp_offline() cpufreq/amd-pstate: Fix cpufreq_policy ref counting cpufreq/amd-pstate: Remove the goto label in amd_pstate_update_limits
Dmitry Baryshkov (1):
drm/msm/dpu1: don't choke on disabling the writeback connector
Edward Adam Davis (1):
media: vidtv: Fix a null-ptr-deref in vidtv_mux_stop_thread
Elson Roy Serrao (1):
usb: roles: set switch registered flag early on
Eric Dumazet (23):
net: fib_rules: annotate data-races around rule->[io]ifindex
ndisc: ndisc_send_redirect() must use dev_get_by_index_rcu()
vrf: use RCU protection in l3mdev_l3_out()
vxlan: check vxlan_vnigroup_init() return value
team: better TEAM_OPTION_TYPE_STRING validation
ipv4: add RCU protection to ip4_dst_hoplimit()
ipv4: use RCU protection in ip_dst_mtu_maybe_forward()
net: add dev_net_rcu() helper
ipv4: use RCU protection in ipv4_default_advmss()
ipv4: use RCU protection in rt_is_expired()
ipv4: use RCU protection in inet_select_addr()
ipv4: use RCU protection in __ip_rt_update_pmtu()
ipv4: icmp: convert to dev_net_rcu()
flow_dissector: use RCU protection to fetch dev_net()
ipv6: use RCU protection in ip6_default_advmss()
ipv6: icmp: convert to dev_net_rcu()
ndisc: use RCU protection in ndisc_alloc_skb()
neighbour: use RCU protection in __neigh_notify()
arp: use RCU protection in arp_xmit()
openvswitch: use RCU protection in ovs_vport_cmd_fill_info()
ndisc: extend RCU protection in ndisc_send_skb()
ipv6: mcast: extend RCU protection in igmp6_send()
ipv6: mcast: add RCU protection to mld_newpack()
Fabio Porcedda (2):
USB: serial: option: add Telit Cinterion FN990B compositions
USB: serial: option: fix Telit Cinterion FN990A name
Fabrice Gasnier (1):
usb: dwc2: gadget: remove of_node reference upon udc_stop
Fedor Pchelkin (1):
can: ctucanfd: handle skb allocation failure
Filipe Manana (2):
btrfs: fix hole expansion when writing at an offset beyond EOF
btrfs: fix stale page cache after race between readahead and direct IO write
Geert Uytterhoeven (2):
ASoC: renesas: SND_SIU_MIGOR should depend on DMADEVICES
genirq: Remove leading space from irq_chip::irq_print_chip() callbacks
Greg Kroah-Hartman (2):
Revert "vfio/platform: check the bounds of read/write syscalls" Linux 6.13.4
Guixin Liu (1):
scsi: ufs: bsg: Set bsg_queue to NULL after removal
Guo Ren (1):
usb: gadget: udc: renesas_usb3: Fix compiler warning
Hans de Goede (2):
ACPI: x86: Add skip i2c clients quirk for Vexia EDU ATLA 10 tablet 5V
ASoC: Intel: bytcr_rt5640: Add DMI quirk for Vexia Edu Atla 10 tablet 5V
Huacai Chen (1):
USB: pci-quirks: Fix HCCPARAMS register error for LS7A EHCI
Imre Deak (1):
drm: Fix DSC BPP increment decoding
Isaac Scott (3):
media: uvcvideo: Implement dual stream quirk to fix loss of usb packets
media: uvcvideo: Add new quirk definition for the Sonix Technology Co. 292a camera
media: uvcvideo: Add Kurokesu C1 PRO camera
Ivan Kokshaysky (3):
alpha: make stack 16-byte aligned (most cases)
alpha: replace hardcoded stack offsets with autogenerated ones
alpha: align stack for page fault and user unaligned trap handlers
Jakub Kicinski (2):
net: ipv6: fix dst ref loops in rpl, seg6 and ioam6 lwtunnels
net: ipv6: fix dst refleaks in rpl, seg6 and ioam6 lwtunnels
Jann Horn (3):
usb: cdc-acm: Check control transfer buffer size before access
usb: cdc-acm: Fix handling of oversized fragments
partitions: mac: fix handling of bogus partition table
Jarkko Nikula (2):
i3c: mipi-i3c-hci: Add Intel specific quirk to ring resuming
i3c: mipi-i3c-hci: Add support for MIPI I3C HCI on PCI bus
Jeff Layton (1):
nfsd: validate the nfsd_serv pointer before calling svc_wake_up
Jens Axboe (4):
io_uring/uring_cmd: remove dead req_has_async_data() check
block: cleanup and fix batch completion adding conditions io_uring/uring_cmd: cleanup struct io_uring_cmd_data layout io_uring/uring_cmd: unconditionally copy SQEs at prep time
Jerome Brunet (1):
regulator: core: let dt properties override driver init_data
Jiang Liu (2):
drm/amdgpu: bail out when failed to load fw in psp_init_cap_microcode() drm/amdgpu: avoid buffer overflow attach in smu_sys_set_pp_table()
Jiasheng Jiang (1):
regmap-irq: Add missing kfree()
Jinghao Jia (2):
samples/hid: remove unnecessary -I flags from libbpf EXTRA_CFLAGS samples/hid: fix broken vmlinux path for VMLINUX_BTF
Johan Hovold (1):
USB: serial: option: drop MeiG Smart defines
John Keeping (2):
usb: gadget: f_midi: fix MIDI Streaming descriptor lengths
serial: 8250: Fix fifo underflow on flush
Jos Wang (1):
usb: typec: tcpm: PSSourceOffTimer timeout in PR_Swap enters ERROR_RECOVERY
Joshua Hay (1):
idpf: call set_real_num_queues in idpf_open
Josua Mayer (1):
Revert "mmc: sdhci_am654: Add sdhci_am654_start_signal_voltage_switch"
Juergen Gross (2):
xen/swiotlb: relax alignment requirements x86/xen: allow larger contiguous memory regions in PV guests
Justin Iurman (4):
include: net: add static inline dst_dev_overhead() to dst.h
net: ipv6: ioam6_iptunnel: mitigate 2-realloc issue
net: ipv6: seg6_iptunnel: mitigate 2-realloc issue
net: ipv6: rpl_iptunnel: mitigate 2-realloc issue
Justin M. Forbes (1):
rust: kbuild: add -fzero-init-padding-bits to bindgen_skip_cflags
Kan Liang (2):
perf/x86/intel: Clean up PEBS-via-PT on hybrid perf/x86/intel: Fix ARCH_PERFMON_NUM_COUNTER_LEAF
Karol Przybylski (1):
drm: zynqmp_dp: Fix integer overflow in zynqmp_dp_rate_get()
Kartik Rajput (1):
soc/tegra: fuse: Update Tegra234 nvmem keepout list
Kees Cook (2):
kbuild: Use -fzero-init-padding-bits=all compiler.h: Move C string helpers into C-only kernel section
Kiran K (1):
Bluetooth: btintel_pcie: Fix a potential race condition
Koichiro Den (1):
selftests: gpio: gpio-sim: Fix missing chip disablements
Konstantin Komarov (2):
fs/ntfs3: Mark inode as bad as soon as error detected in mi_enum_attr() fs/ntfs3: Unify inode corruption marking with _ntfs_bad_inode()
Krzysztof Karas (1):
drm/i915/selftests: avoid using uninitialized context
Krzysztof Kozlowski (2):
firmware: qcom: scm: smc: Handle missing SCM device
can: c_can: fix unbalanced runtime PM disable in error path
Kunihiko Hayashi (1):
spi: sn-f-ospi: Fix division by zero
Lai Jiangshan (1):
workqueue: Put the pwq after detaching the rescuer from the pool
Lei Huang (1):
USB: quirks: add USB_QUIRK_NO_LPM quirk for Teclast dist
Li Lingfeng (1):
nfsd: clear acl_access/acl_default after releasing them
Lorenzo Bianconi (1):
PCI: mediatek-gen3: Avoid PCIe resetting via PERST# for Airoha EN7581 SoC
Lu Baolu (2):
iommu/vt-d: Make intel_iommu_drain_pasid_prq() cover faults for RID
iommu: Fix potential memory leak in iopf_queue_remove_device()
Maksym Planeta (1):
Grab mm lock before grabbing pt lock
Marco Crivellari (1):
LoongArch: Fix idle VS timer enqueue
Marek Vasut (1):
USB: cdc-acm: Fill in Renesas R-Car D3 USB Download mode quirk
Mario Limonciello (2):
gpiolib: acpi: Add a quirk for Acer Nitro ANV14 cpufreq/amd-pstate: convert mutex use to guard()
Masahiro Yamada (2):
tools: fix annoying "mkdir -p ..." logs when building tools in parallel
kbuild: suppress stdout from merge_config for silent builds
Mathias Nyman (1):
USB: Add USB_QUIRK_NO_LPM quirk for sony xperia xz1 smartphone
Maxime Ripard (1):
drm/tests: hdmi: Fix WW_MUTEX_SLOWPATH failures
Michael Margolin (1):
RDMA/efa: Reset device on probe failure
Michal Luczaj (2):
vsock: Keep the binding until socket destruction
vsock: Orphan socket after transport release
Michal Pecio (1):
usb: xhci: Restore xhci_pci support for Renesas HCs
Miguel Ojeda (3):
arm64: rust: clean Rust 1.85.0 warning using softfloat target objtool/rust: add one more noreturn Rust function
rust: rbtree: fix overindented list item
Mike Marshall (1):
orangefs: fix a oob in orangefs_debug_write
Muhammad Adeel (1):
cgroup: Remove steal time from usage_usec
Murad Masimov (1):
ax25: Fix refcount leak caused by setting SO_BINDTODEVICE sockopt
Naman Jain (1):
Drivers: hv: vmbus: Wait for boot-time offers during boot and resume
Nathan Chancellor (2):
scripts/Makefile.extrawarn: Do not show clang's non-kprintf warnings at W=1
arm64: Handle .ARM.attributes section in linker scripts
Naushir Patuck (1):
media: bcm2835-unicam: Disable trigger mode operation
Nicolas Dichtel (1):
rtnetlink: fix netns leak with rtnl_setlink()
Niklas Cassel (1):
PCI: endpoint: Add size check for fixed size BARs in pci_epc_set_bar()
Niklas Schnelle (2):
s390/pci: Pull search for parent PF out of zpci_iov_setup_virtfn() s390/pci: Fix handling of isolated VFs
Nirmoy Das (1):
drm/xe: Carve out wopcm portion from the stolen memory
Oliver Upton (1):
ACPI: GTDT: Relax sanity checking on Platform Timers array count
Patrick Bellasi (1):
x86/cpu/kvm: SRSO: Fix possible missing IBPB on VM-Exit
Pavel Begunkov (2):
io_uring/waitid: don't abuse io_tw_state io_uring/kbuf: reallocate buf lists on upgrade
Radu Rendec (1):
arm64: cacheinfo: Avoid out-of-bounds write to cacheinfo array
Rakesh Babu Saladi (1):
PCI: switchtec: Add Microchip PCI100X device IDs
Ramesh Thomas (1):
vfio/pci: Enable iowrite64 and ioread64 for vfio pci
Remi Pommarel (1):
batman-adv: Fix incorrect offset in batadv_tt_tvlv_ogm_handler_v1()
Rengarajan S (1):
8250: microchip: pci1xxxx: Add workaround for RTS bit toggle
Reyders Morales (1):
Documentation/networking: fix basic node example document ISO 15765-2
Rik van Riel (1):
x86/mm/tlb: Only trim the mm_cpumask once a second
Robin van der Gracht (1):
can: rockchip: rkcanfd_handle_rx_fifo_overflow_int(): bail out if skb cannot be allocated
Roger Quadros (3):
net: ethernet: ti: am65-cpsw: fix memleak in certain XDP cases
net: ethernet: ti: am65-cpsw: fix RX & TX statistics for XDP_TX case
net: ethernet: ti: am65_cpsw: fix tx_cleanup for XDP case
Roy Luo (1):
usb: gadget: core: flush gadget workqueue after device removal
Rupinderjit Singh (1):
gpu: host1x: Fix a use of uninitialized mutex
Sai Teja Pottumuttu (1):
drm/xe/oa/uapi: Make OA buffer size configurable
Sean Christopherson (4):
KVM: x86: Reject Hyper-V's SEND_IPI hypercalls if local APIC isn't in-kernel
KVM: x86: Load DR6 with guest value only before entering .vcpu_run() loop
KVM: nSVM: Enter guest mode before initializing nested NPT MMU perf/x86/intel: Ensure LBRs are disabled when a CPU is starting
Selvarasu Ganesan (2):
usb: gadget: f_midi: Fixing wMaxPacketSize exceeded issue during MIDI bind retries
usb: dwc3: Fix timeout issue during controller enter/exit from halt state
Shakeel Butt (1):
cgroup: fix race between fork and cgroup.kill
Shyam Prasad N (1):
cifs: pick channels for individual subrequests
Song Yoong Siang (1):
igc: Set buffer type for empty frames in igc_init_empty_frame
Sridhar Samudrala (2):
idpf: fix handling rsc packet with a single segment
idpf: record rx queue in skb for RSC packets
Stefan Eichenberger (1):
usb: core: fix pipe creation for get_bMaxPacketSize0
Stephan Gerhold (1):
drm/msm/dpu: fix x1e80100 intf_6 underrun/vsync interrupt
Steven Rostedt (4):
ring-buffer: Unlock resize on mmap error
tracing: Do not allow mmap() of persistent ring buffer
ring-buffer: Validate the persistent meta data subbuf array
ring-buffer: Update pages_touched to reflect persistent buffer content
Stuart Hayhurst (2):
HID: corsair-void: Initialise memory for psy_cfg
HID: corsair-void: Add missing delayed work cancel for headset status
Su Hui (1):
drm/panthor: avoid garbage value in panthor_ioctl_dev_query()
Sven Eckelmann (2):
batman-adv: Ignore neighbor throughput metrics in error case
batman-adv: Drop unmanaged ELP metric worker
Takashi Iwai (1):
PCI/DPC: Quirk PIO log size for Intel Raptor Lake-P
Tejas Upadhyay (1):
drm/xe/client: bo->client does not need bos_lock
Tejun Heo (3):
sched_ext: Fix incorrect autogroup migration detection
sched_ext: Fix migration disabled handling in targeted dispatches
sched_ext: Fix incorrect assumption about migration disabled tasks in task_can_run_on_remote_rq()
Thomas Hellström (1):
drm/xe/tracing: Fix a potential TP_printk UAF
Thomas Weißschuh (3):
kbuild: userprogs: fix bitsize and target detection on clang
ptp: vmclock: Don't unregister misc device if it was not registered
ptp: vmclock: Set driver data before its usage
Tomas Glozar (2):
rtla/timerlat_hist: Abort event processing on second signal rtla/timerlat_top: Abort event processing on second signal
Tomi Valkeinen (4):
media: i2c: ds90ub913: Add error handling to ub913_hw_init()
media: i2c: ds90ub953: Add error handling for i2c reads/writes drm/tidss: Fix issue in irq handling causing irq-flood issue drm/rcar-du: dsi: Fix PHY lock bit check
Tulio Fernandes (1):
HID: hid-thrustmaster: fix stack-out-of-bounds read in usb_check_int_endpoints()
Varadarajan Narayanan (2):
soc: qcom: llcc: Update configuration data for IPQ5424
regulator: qcom_smd: Add l2, l5 sub-node to mp5496 regulator
Vasant Hegde (1):
iommu/amd: Expicitly enable CNTRL.EPHEn bit in resume path
Vicki Pfau (3):
HID: hid-steam: Don't use cancel_delayed_work_sync in IRQ context
HID: hid-steam: Make sure rumble work is canceled on removal
HID: hid-steam: Move hidraw input (un)registering to work
Vincent Mailhol (1):
can: etas_es58x: fix potential NULL pointer dereference on udev->serial
Waiman Long (2):
clocksource: Use pr_info() for "Checking clocksource synchronization" message
clocksource: Use migrate_disable() to avoid calling get_random_u32() in atomic context
Wentao Liang (2):
gpio: stmpe: Check return value of stmpe_reg_read in stmpe_gpio_irq_sync_unlock
mlxsw: Add return value check for mlxsw_sp_port_get_stats_raw()
Yuli Wang (1):
LoongArch: csum: Fix OoB access in IP checksum code for negative lengths
Zdenek Bouska (1):
igc: Fix HW RX timestamp when passed by ZC XDP
Zhang Rui (1):
thermal/netlink: Prevent userspace segmentation fault by adjusting UAPI header
Zhu Lingshan (1):
amdkfd: properly free gang_ctx_bo when failed to init user queue
Zichen Xie (1):
NFS: Fix potential buffer overflowin nfs_sysfs_link_rpc_client()
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml +1 -1
@@ -22,7 +22,7 @@ description: Each sub-node is identified using the node's name, with valid values listed for each of the pmics below. - For mp5496, s1, s2 + For mp5496, s1, s2, l2, l5 For pm2250, s1, s2, s3, s4, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22
Documentation/networking/iso15765-2.rst +2 -2
@@ -369,8 +369,8 @@ to their default. addr.can_family = AF_CAN; addr.can_ifindex = if_nametoindex("can0"); - addr.tp.tx_id = 0x18DA42F1 | CAN_EFF_FLAG; - addr.tp.rx_id = 0x18DAF142 | CAN_EFF_FLAG; + addr.can_addr.tp.tx_id = 0x18DA42F1 | CAN_EFF_FLAG; + addr.can_addr.tp.rx_id = 0x18DAF142 | CAN_EFF_FLAG; ret = bind(s, (struct sockaddr *)&addr, sizeof(addr)); if (ret < 0)
Makefile +5 -10
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 13 -SUBLEVEL = 3 +SUBLEVEL = 4 EXTRAVERSION = NAME = Baby Opossum Posse
@@ -1119,8 +1119,8 @@ LDFLAGS_vmlinux += --orphan-handling=$(CONFIG_LD_ORPHAN_WARN_LEVEL) endif # Align the bit size of userspace programs with the kernel -KBUILD_USERCFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS)) -KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS)) +KBUILD_USERCFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS)) +KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS)) # make the checker run with the right architecture CHECKFLAGS += --arch=$(ARCH)
@@ -1416,18 +1416,13 @@ ifneq ($(wildcard $(resolve_btfids_O)),) $(Q)$(MAKE) -sC $(srctree)/tools/bpf/resolve_btfids O=$(resolve_btfids_O) clean endif -# Clear a bunch of variables before executing the submake -ifeq ($(quiet),silent_) -tools_silent=s -endif - tools/: FORCE $(Q)mkdir -p $(objtree)/tools - $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ + $(Q)$(MAKE) LDFLAGS= O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ tools/%: FORCE $(Q)mkdir -p $(objtree)/tools - $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $* + $(Q)$(MAKE) LDFLAGS= O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $* # --------------------------------------------------------------------------- # Kernel selftest
arch/alpha/include/uapi/asm/ptrace.h +2 -0
@@ -42,6 +42,8 @@ struct pt_regs {unsigned long trap_a0;unsigned long trap_a1;unsigned long trap_a2; +/* This makes the stack 16-byte aligned as GCC expects */ +unsigned long __pad0;/* These are saved by PAL-code: */ unsigned long ps;unsigned long pc;
arch/alpha/kernel/asm-offsets.c +4 -0
@@ -19,9 +19,13 @@ static void __used foo(void)DEFINE (TI_STATUS , offsetof(struct thread_info , status));BLANK (); +DEFINE (SP_OFF , offsetof(struct pt_regs , ps));DEFINE (SIZEOF_PT_REGS ,sizeof (struct pt_regs ));BLANK (); +DEFINE (SWITCH_STACK_SIZE ,sizeof (struct switch_stack )); +BLANK (); +DEFINE (HAE_CACHE , offsetof(struct alpha_machine_vector , hae_cache));DEFINE (HAE_REG , offsetof(struct alpha_machine_vector , hae_register)); }
arch/alpha/kernel/entry.S +10 -14
@@ -15,10 +15,6 @@ .set noat .cfi_sections .debug_frame -/* Stack offsets. */ -#define SP_OFF 184 -#define SWITCH_STACK_SIZE 64 - .macro CFI_START_OSF_FRAME func .align 4 .globl \func
@@ -198,8 +194,8 @@ CFI_END_OSF_FRAME entArith CFI_START_OSF_FRAME entMM SAVE_ALL /* save $9 - $15 so the inline exception code can manipulate them. */ - subq $sp, 56, $sp - .cfi_adjust_cfa_offset 56 + subq $sp, 64, $sp + .cfi_adjust_cfa_offset 64 stq $9, 0($sp) stq $10, 8($sp) stq $11, 16($sp)
@@ -214,7 +210,7 @@ CFI_START_OSF_FRAME entMM .cfi_rel_offset $13, 32 .cfi_rel_offset $14, 40 .cfi_rel_offset $15, 48 - addq $sp, 56, $19 + addq $sp, 64, $19 /* handle the fault */ lda $8, 0x3fff bic $sp, $8, $8
@@ -227,7 +223,7 @@ CFI_START_OSF_FRAME entMM ldq $13, 32($sp) ldq $14, 40($sp) ldq $15, 48($sp) - addq $sp, 56, $sp + addq $sp, 64, $sp .cfi_restore $9 .cfi_restore $10 .cfi_restore $11
@@ -235,7 +231,7 @@ CFI_START_OSF_FRAME entMM .cfi_restore $13 .cfi_restore $14 .cfi_restore $15 - .cfi_adjust_cfa_offset -56 + .cfi_adjust_cfa_offset -64 /* finish up the syscall as normal. */ br ret_from_sys_call CFI_END_OSF_FRAME entMM
@@ -382,8 +378,8 @@ entUnaUser: .cfi_restore $0 .cfi_adjust_cfa_offset -256 SAVE_ALL /* setup normal kernel stack */ - lda $sp, -56($sp) - .cfi_adjust_cfa_offset 56 + lda $sp, -64($sp) + .cfi_adjust_cfa_offset 64 stq $9, 0($sp) stq $10, 8($sp) stq $11, 16($sp)
@@ -399,7 +395,7 @@ entUnaUser: .cfi_rel_offset $14, 40 .cfi_rel_offset $15, 48 lda $8, 0x3fff - addq $sp, 56, $19 + addq $sp, 64, $19 bic $sp, $8, $8 jsr $26, do_entUnaUser ldq $9, 0($sp)
@@ -409,7 +405,7 @@ entUnaUser: ldq $13, 32($sp) ldq $14, 40($sp) ldq $15, 48($sp) - lda $sp, 56($sp) + lda $sp, 64($sp) .cfi_restore $9 .cfi_restore $10 .cfi_restore $11
@@ -417,7 +413,7 @@ entUnaUser: .cfi_restore $13 .cfi_restore $14 .cfi_restore $15 - .cfi_adjust_cfa_offset -56 + .cfi_adjust_cfa_offset -64 br ret_from_sys_call CFI_END_OSF_FRAME entUna
arch/alpha/kernel/traps.c +1 -1
@@ -649,7 +649,7 @@ s_reg_to_mem (unsigned long s_reg)static int unauser_reg_offsets[32 ] = {R (r0),R (r1),R (r2),R (r3),R (r4),R (r5),R (r6),R (r7),R (r8),/* r9 ... r15 are stored in front of regs. */ --56 ,-48 ,-40 ,-32 ,-24 ,-16 ,-8 , +-64 ,-56 ,-48 ,-40 ,-32 ,-24 ,-16 ,/* padding at -8 */ R (r16),R (r17),R (r18),R (r19),R (r20),R (r21),R (r22),R (r23),R (r24),R (r25),R (r26),R (r27),R (r28),R (gp),
arch/alpha/mm/fault.c +2 -2
@@ -78,8 +78,8 @@ __load_new_mm_context(struct mm_struct *next_mm)/* Macro for exception fixup code to access integer registers. */ #define dpf_reg (r) \ - (((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 : \ - (r) <= 18 ? (r)+10 : (r)-10]) + (((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-17 : \ + (r) <= 18 ? (r)+11 : (r)-10]) asmlinkage void do_page_fault(unsigned long address, unsigned long mmcsr,
arch/arm64/Makefile +4 -0
@@ -48,7 +48,11 @@ KBUILD_CFLAGS += $(CC_FLAGS_NO_FPU) \ KBUILD_CFLAGS += $(call cc-disable-warning, psabi) KBUILD_AFLAGS += $(compat_vdso) +ifeq ($(call test-ge, $(CONFIG_RUSTC_VERSION), 108500),y) +KBUILD_RUSTFLAGS += --target=aarch64-unknown-none-softfloat +else KBUILD_RUSTFLAGS += --target=aarch64-unknown-none -Ctarget-feature="-neon" +endif KBUILD_CFLAGS += $(call cc-option,-mabi=lp64) KBUILD_AFLAGS += $(call cc-option,-mabi=lp64)
arch/arm64/kernel/cacheinfo.c +7 -5
@@ -101,16 +101,18 @@ int populate_cache_leaves(unsigned int cpu)unsigned int level, idx;enum cache_type type;struct cpu_cacheinfo *this_cpu_ci =get_cpu_cacheinfo (cpu); -struct cacheinfo *this_leaf = this_cpu_ci->info_list; +struct cacheinfo *infos = this_cpu_ci->info_list;for (idx =0 , level =1 ; level <= this_cpu_ci->num_levels && - idx < this_cpu_ci->num_leaves; idx++, level++) { + idx < this_cpu_ci->num_leaves; level++) { type =get_cache_type (level);if (type ==CACHE_TYPE_SEPARATE ) { -ci_leaf_init (this_leaf++,CACHE_TYPE_DATA , level); -ci_leaf_init (this_leaf++,CACHE_TYPE_INST , level); +if (idx +1 >= this_cpu_ci->num_leaves) +break ; +ci_leaf_init (&infos[idx++],CACHE_TYPE_DATA , level); +ci_leaf_init (&infos[idx++],CACHE_TYPE_INST , level); }else { -ci_leaf_init (this_leaf++, type, level); +ci_leaf_init (&infos[idx++], type, level); } }return 0 ;
arch/arm64/kernel/vdso/vdso.lds.S +1 -0
@@ -41,6 +41,7 @@ SECTIONS */ /DISCARD/ : { *(.note.GNU-stack .note.gnu.property) + *(.ARM.attributes) } .note : { *(.note.*) } :text :note
arch/arm64/kernel/vmlinux.lds.S +1 -0
@@ -162,6 +162,7 @@ SECTIONS /DISCARD/ : { *(.interp .dynamic) *(.dynsym .dynstr .hash .gnu.hash) + *(.ARM.attributes) } . = KIMAGE_VADDR;
arch/loongarch/kernel/genex.S +15 -13
@@ -18,16 +18,19 @@ .align 5 SYM_FUNC_START(__arch_cpu_idle) - /* start of rollback region */ - LONG_L t0, tp, TI_FLAGS - nop - andi t0, t0, _TIF_NEED_RESCHED - bnez t0, 1f - nop - nop - nop + /* start of idle interrupt region */ + ori t0, zero, CSR_CRMD_IE + /* idle instruction needs irq enabled */ + csrxchg t0, t0, LOONGARCH_CSR_CRMD + /* + * If an interrupt lands here; between enabling interrupts above and + * going idle on the next instruction, we must *NOT* go idle since the + * interrupt could have set TIF_NEED_RESCHED or caused an timer to need + * reprogramming. Fall through -- see handle_vint() below -- and have + * the idle loop take care of things. + */ idle 0 - /* end of rollback region */ + /* end of idle interrupt region */ 1: jr ra SYM_FUNC_END(__arch_cpu_idle)
@@ -35,11 +38,10 @@ SYM_CODE_START(handle_vint) UNWIND_HINT_UNDEFINED BACKUP_T0T1 SAVE_ALL - la_abs t1, __arch_cpu_idle + la_abs t1, 1b LONG_L t0, sp, PT_ERA - /* 32 byte rollback region */ - ori t0, t0, 0x1f - xori t0, t0, 0x1f + /* 3 instructions idle interrupt region */ + ori t0, t0, 0b1100 bne t0, t1, 1f LONG_S t0, sp, PT_ERA 1: move a0, sp
arch/loongarch/kernel/idle.c +1 -2
@@ -11,7 +11,6 @@ void __cpuidle arch_cpu_idle(void) { -raw_local_irq_enable (); -__arch_cpu_idle ();/* idle instruction needs irq enabled */ +__arch_cpu_idle ();raw_local_irq_disable (); }
arch/loongarch/kernel/reset.c +3 -3
@@ -33,7 +33,7 @@ void machine_halt(void)console_flush_on_panic (CONSOLE_FLUSH_PENDING );while (true) { -__arch_cpu_idle (); + __asm__ __volatile__("idle 0" : : :"memory" ); } }
@@ -53,7 +53,7 @@ void machine_power_off(void)#endif while (true) { -__arch_cpu_idle (); + __asm__ __volatile__("idle 0" : : :"memory" ); } }
@@ -74,6 +74,6 @@ void machine_restart(char *command)acpi_reboot ();while (true) { -__arch_cpu_idle (); + __asm__ __volatile__("idle 0" : : :"memory" ); } }
arch/loongarch/kvm/main.c +2 -2
@@ -285,9 +285,9 @@ int kvm_arch_enable_virtualization_cpu(void)* TOE=0: Trap on Exception. * TIT=0: Trap on Timer. */ -if (env &CSR_GCFG_GCIP_ALL ) +if (env &CSR_GCFG_GCIP_SECURE ) gcfg |=CSR_GCFG_GCI_SECURE ; -if (env &CSR_GCFG_MATC_ROOT ) +if (env &CSR_GCFG_MATP_ROOT ) gcfg |=CSR_GCFG_MATC_ROOT ;write_csr_gcfg (gcfg);
arch/loongarch/lib/csum.c +1 -1
@@ -25,7 +25,7 @@ unsigned int __no_sanitize_address do_csum(const unsigned char *buff, int len)const u64 *ptr;u64 data, sum64 =0 ; -if (unlikely (len ==0 )) +if (unlikely (len <=0 ))return 0 ; offset = (unsigned long )buff &7 ;
arch/powerpc/sysdev/fsl_msi.c +1 -1
@@ -75,7 +75,7 @@ static void fsl_msi_print_chip(struct irq_data *irqd, struct seq_file *p) srs = (hwirq >> msi_data->srs_shift) &MSI_SRS_MASK ; cascade_virq = msi_data->cascade_array[srs]->virq; -seq_printf (p," fsl-msi-%d" , cascade_virq); +seq_printf (p,"fsl-msi-%d" , cascade_virq); }
arch/s390/pci/pci_bus.c +20 -0
@@ -331,6 +331,17 @@ static int zpci_bus_add_device(struct zpci_bus *zbus, struct zpci_dev *zdev)return rc; } +static bool zpci_bus_is_isolated_vf (struct zpci_bus *zbus,struct zpci_dev *zdev) +{ +struct pci_dev *pdev; + + pdev =zpci_iov_find_parent_pf (zbus, zdev); +if (!pdev) +return true; +pci_dev_put (pdev); +return false; +} +int zpci_bus_device_register (struct zpci_dev *zdev,struct pci_ops *ops) {bool topo_is_tid = zdev->tid_avail;
@@ -345,6 +356,15 @@ int zpci_bus_device_register(struct zpci_dev *zdev, struct pci_ops *ops) topo = topo_is_tid ? zdev->tid : zdev->pchid; zbus =zpci_bus_get (topo, topo_is_tid); +/* +* An isolated VF gets its own domain/bus even if there exists +* a matching domain/bus already +*/ +if (zbus &&zpci_bus_is_isolated_vf (zbus, zdev)) { +zpci_bus_put (zbus); + zbus =NULL ; + } +if (!zbus) { zbus =zpci_bus_alloc (topo, topo_is_tid);if (!zbus)
arch/s390/pci/pci_iov.c +42 -14
75 lines not on this page · raw message
arch/s390/pci/pci_iov.h +7 -0
@@ -19,6 +19,8 @@ void zpci_iov_map_resources(struct pci_dev *pdev);int zpci_iov_setup_virtfn (struct zpci_bus *zbus,struct pci_dev *virtfn,int vfn); +struct pci_dev *zpci_iov_find_parent_pf (struct zpci_bus *zbus,struct zpci_dev *zdev); +#else /* CONFIG_PCI_IOV */ static inline void zpci_iov_remove_virtfn (struct pci_dev *pdev,int vfn) {}
@@ -28,5 +30,10 @@ static inline int zpci_iov_setup_virtfn(struct zpci_bus *zbus, struct pci_dev *v {return 0 ; } + +static inline struct pci_dev *zpci_iov_find_parent_pf (struct zpci_bus *zbus,struct zpci_dev *zdev) +{ +return NULL ; +}#endif /* CONFIG_PCI_IOV */ #endif /* __S390_PCI_IOV_h */
arch/um/kernel/process.c +9 -1
@@ -191,7 +191,15 @@ void initial_thread_cb(void (*proc)(void *), void *arg)int arch_dup_task_struct (struct task_struct *dst,struct task_struct *src) { -memcpy (dst, src, arch_task_struct_size); +/* init_task is not dynamically sized (missing FPU state) */ +if (unlikely (src == &init_task)) { +memcpy (dst, src,sizeof (init_task)); +memset ((void *)dst +sizeof (init_task),0 , + arch_task_struct_size -sizeof (init_task)); + }else { +memcpy (dst, src, arch_task_struct_size); + } +return 0 ; }
arch/um/os-Linux/skas/process.c +13 -3
@@ -181,6 +181,10 @@ extern char __syscall_stub_start[];static int stub_exe_fd; +#ifndef CLOSE_RANGE_CLOEXEC +#define CLOSE_RANGE_CLOEXEC (1U << 2) +#endif +static int userspace_tramp (void *stack) {char *const argv[] = {"uml-userspace" ,NULL };
@@ -202,8 +206,12 @@ static int userspace_tramp(void *stack) init_data.stub_data_fd =phys_mapping (uml_to_phys (stack), &offset); init_data.stub_data_offset =MMAP_OFFSET (offset); -/* Set CLOEXEC on all FDs and then unset on all memory related FDs */ -close_range (0 , ~0U ,CLOSE_RANGE_CLOEXEC ); +/* +* Avoid leaking unneeded FDs to the stub by setting CLOEXEC on all FDs +* and then unsetting it on all memory related FDs. +* This is not strictly necessary from a safety perspective. +*/ +syscall (__NR_close_range,0 , ~0U ,CLOSE_RANGE_CLOEXEC );fcntl (init_data.stub_data_fd,F_SETFD ,0 );for (iomem = iomem_regions; iomem; iomem = iomem->next)
@@ -224,7 +232,9 @@ static int userspace_tramp(void *stack)if (ret !=sizeof (init_data))exit (4 ); -execveat (stub_exe_fd,"" , argv,NULL ,AT_EMPTY_PATH ); +/* Raw execveat for compatibility with older libc versions */ +syscall (__NR_execveat, stub_exe_fd, (unsigned long )"" , + (unsigned long )argv,NULL ,AT_EMPTY_PATH );exit (5 ); }
arch/x86/Kconfig +2 -1
@@ -2593,7 +2593,8 @@ config MITIGATION_IBPB_ENTRY depends on CPU_SUP_AMD && X86_64 default y help - Compile the kernel with support for the retbleed=ibpb mitigation. + Compile the kernel with support for the retbleed=ibpb and + spec_rstack_overflow={ibpb,ibpb-vmexit} mitigations. config MITIGATION_IBRS_ENTRY bool "Enable IBRS on kernel entry"
arch/x86/events/intel/core.c +14 -19
@@ -4887,20 +4887,22 @@ static inline bool intel_pmu_broken_perf_cap(void)static void update_pmu_cap (struct x86_hybrid_pmu *pmu) { -unsigned int sub_bitmaps, eax, ebx, ecx, edx; +unsigned int cntr, fixed_cntr, ecx, edx; +union cpuid35_eax eax; +union cpuid35_ebx ebx; -cpuid (ARCH_PERFMON_EXT_LEAF , &sub_bitmaps, &ebx, &ecx, &edx); +cpuid (ARCH_PERFMON_EXT_LEAF , &eax.full, &ebx.full, &ecx, &edx); -if (ebx &ARCH_PERFMON_EXT_UMASK2 ) +if (ebx.split.umask2) pmu->config_mask |=ARCH_PERFMON_EVENTSEL_UMASK2 ; -if (ebx &ARCH_PERFMON_EXT_EQ ) +if (ebx.split.eq) pmu->config_mask |=ARCH_PERFMON_EVENTSEL_EQ ; -if (sub_bitmaps &ARCH_PERFMON_NUM_COUNTER_LEAF_BIT ) { +if (eax.split.cntr_subleaf) {cpuid_count (ARCH_PERFMON_EXT_LEAF ,ARCH_PERFMON_NUM_COUNTER_LEAF , - &eax, &ebx, &ecx, &edx); - pmu->cntr_mask64 = eax; - pmu->fixed_cntr_mask64 = ebx; + &cntr, &fixed_cntr, &ecx, &edx); + pmu->cntr_mask64 = cntr; + pmu->fixed_cntr_mask64 = fixed_cntr; }if (!intel_pmu_broken_perf_cap ()) {
@@ -4923,11 +4925,6 @@ static void intel_pmu_check_hybrid_pmus(struct x86_hybrid_pmu *pmu)else pmu->intel_ctrl &= ~(1ULL <<GLOBAL_CTRL_EN_PERF_METRICS ); -if (pmu->intel_cap.pebs_output_pt_available) - pmu->pmu.capabilities |=PERF_PMU_CAP_AUX_OUTPUT ; -else - pmu->pmu.capabilities &= ~PERF_PMU_CAP_AUX_OUTPUT ; - intel_pmu_check_event_constraints(pmu->event_constraints, pmu->cntr_mask64, pmu->fixed_cntr_mask64,
@@ -5005,9 +5002,6 @@ static bool init_hybrid_pmu(int cpu)pr_info ("%s PMU driver: " , pmu->name); -if (pmu->intel_cap.pebs_output_pt_available) -pr_cont ("PEBS-via-PT " ); -pr_cont ("\n" );x86_pmu_show_pmu_cap (&pmu->pmu);
@@ -5030,8 +5024,11 @@ static void intel_pmu_cpu_starting(int cpu)init_debug_store_on_cpu (cpu);/* -* Deal with CPUs that don't clear their LBRs on power-up. +* Deal with CPUs that don't clear their LBRs on power-up, and that may +* even boot with LBRs enabled. */ +if (!static_cpu_has (X86_FEATURE_ARCH_LBR ) && x86_pmu.lbr_nr) +msr_clear_bit (MSR_IA32_DEBUGCTLMSR ,DEBUGCTLMSR_LBR_BIT );intel_pmu_lbr_reset (); cpuc->lbr_sel =NULL ;
@@ -6362,11 +6359,9 @@ static __always_inline int intel_pmu_init_hybrid(enum hybrid_pmu_type pmus) pmu->intel_cap.capabilities = x86_pmu.intel_cap.capabilities;if (pmu->pmu_type & hybrid_small_tiny) { pmu->intel_cap.perf_metrics =0 ; - pmu->intel_cap.pebs_output_pt_available =1 ; pmu->mid_ack = true; }else if (pmu->pmu_type & hybrid_big) { pmu->intel_cap.perf_metrics =1 ; - pmu->intel_cap.pebs_output_pt_available =0 ; pmu->late_ack = true; } }
arch/x86/events/intel/ds.c +9 -1
@@ -2544,7 +2544,15 @@ void __init intel_ds_init(void) }pr_cont ("PEBS fmt4%c%s, " , pebs_type, pebs_qual); -if (!is_hybrid () && x86_pmu.intel_cap.pebs_output_pt_available) { +/* +* The PEBS-via-PT is not supported on hybrid platforms, +* because not all CPUs of a hybrid machine support it. +* The global x86_pmu.intel_cap, which only contains the +* common capabilities, is used to check the availability +* of the feature. The per-PMU pebs_output_pt_available +* in a hybrid machine should be ignored. +*/ +if (x86_pmu.intel_cap.pebs_output_pt_available) {pr_cont ("PEBS-via-PT, " );x86_get_pmu (smp_processor_id ())->capabilities |=PERF_PMU_CAP_AUX_OUTPUT ; }
arch/x86/include/asm/kvm-x86-ops.h +1 -0
@@ -48,6 +48,7 @@ KVM_X86_OP(set_idt) KVM_X86_OP(get_gdt) KVM_X86_OP(set_gdt) KVM_X86_OP(sync_dirty_debug_regs) +KVM_X86_OP(set_dr6) KVM_X86_OP(set_dr7) KVM_X86_OP(cache_reg) KVM_X86_OP(get_rflags)
arch/x86/include/asm/kvm_host.h +1 -0
@@ -1674,6 +1674,7 @@ struct kvm_x86_ops {void (*get_gdt)(struct kvm_vcpu *vcpu,struct desc_ptr *dt);void (*set_gdt)(struct kvm_vcpu *vcpu,struct desc_ptr *dt);void (*sync_dirty_debug_regs)(struct kvm_vcpu *vcpu); +void (*set_dr6)(struct kvm_vcpu *vcpu,unsigned long value);void (*set_dr7)(struct kvm_vcpu *vcpu,unsigned long value);void (*cache_reg)(struct kvm_vcpu *vcpu,enum kvm_reg reg);unsigned long (*get_rflags)(struct kvm_vcpu *vcpu);
arch/x86/include/asm/mmu.h +2 -0
@@ -37,6 +37,8 @@ typedef struct {*/ atomic64_t tlb_gen; +unsigned long next_trim_cpumask; +#ifdef CONFIG_MODIFY_LDT_SYSCALL struct rw_semaphore ldt_usr_sem;struct ldt_struct *ldt;
arch/x86/include/asm/mmu_context.h +1 -0
@@ -151,6 +151,7 @@ static inline int init_new_context(struct task_struct *tsk, mm->context.ctx_id =atomic64_inc_return (&last_mm_ctx_id);atomic64_set (&mm->context.tlb_gen,0 ); + mm->context.next_trim_cpumask = jiffies +HZ ;#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS if (cpu_feature_enabled (X86_FEATURE_OSPKE )) {
arch/x86/include/asm/msr-index.h +2 -1
@@ -395,7 +395,8 @@#define MSR_IA32_PASID_VALID BIT_ULL(31)/* DEBUGCTLMSR bits (others vary by model): */ -#define DEBUGCTLMSR_LBR (1UL << 0)/* last branch recording */ +#define DEBUGCTLMSR_LBR_BIT 0/* last branch recording */ +#define DEBUGCTLMSR_LBR (1UL << DEBUGCTLMSR_LBR_BIT)#define DEBUGCTLMSR_BTF_SHIFT 1#define DEBUGCTLMSR_BTF (1UL << 1)/* single-step on branches */ #define DEBUGCTLMSR_BUS_LOCK_DETECT (1UL << 2)
arch/x86/include/asm/perf_event.h +25 -3
@@ -187,11 +187,33 @@ union cpuid10_edx {* detection/enumeration details: */ #define ARCH_PERFMON_EXT_LEAF 0x00000023 -#define ARCH_PERFMON_EXT_UMASK2 0x1 -#define ARCH_PERFMON_EXT_EQ 0x2 -#define ARCH_PERFMON_NUM_COUNTER_LEAF_BIT 0x1#define ARCH_PERFMON_NUM_COUNTER_LEAF 0x1 +union cpuid35_eax { +struct { +unsigned int leaf0:1 ; +/* Counters Sub-Leaf */ +unsigned int cntr_subleaf:1 ; +/* Auto Counter Reload Sub-Leaf */ +unsigned int acr_subleaf:1 ; +/* Events Sub-Leaf */ +unsigned int events_subleaf:1 ; +unsigned int reserved:28 ; + } split; +unsigned int full; +}; + +union cpuid35_ebx { +struct { +/* UnitMask2 Supported */ +unsigned int umask2:1 ; +/* EQ-bit Supported */ +unsigned int eq:1 ; +unsigned int reserved:30 ; + } split; +unsigned int full; +}; +/* * Intel Architectural LBR CPUID detection/enumeration details: */
arch/x86/include/asm/tlbflush.h +1 -0
@@ -222,6 +222,7 @@ struct flush_tlb_info {unsigned int initiating_cpu;u8 stride_shift;u8 freed_tables; +u8 trim_cpumask; };void flush_tlb_local (void );
arch/x86/kernel/cpu/bugs.c +14 -7
@@ -1115,6 +1115,8 @@ static void __init retbleed_select_mitigation(void)case RETBLEED_MITIGATION_IBPB :setup_force_cpu_cap (X86_FEATURE_ENTRY_IBPB ); +setup_force_cpu_cap (X86_FEATURE_IBPB_ON_VMEXIT ); + mitigate_smt = true;/* * IBPB on entry already obviates the need for
@@ -1124,9 +1126,6 @@ static void __init retbleed_select_mitigation(void)setup_clear_cpu_cap (X86_FEATURE_UNRET );setup_clear_cpu_cap (X86_FEATURE_RETHUNK ); -setup_force_cpu_cap (X86_FEATURE_IBPB_ON_VMEXIT ); - mitigate_smt = true; -/* * There is no need for RSB filling: entry_ibpb() ensures * all predictions, including the RSB, are invalidated,
@@ -2643,6 +2642,7 @@ static void __init srso_select_mitigation(void)if (IS_ENABLED (CONFIG_MITIGATION_IBPB_ENTRY )) {if (has_microcode) {setup_force_cpu_cap (X86_FEATURE_ENTRY_IBPB ); +setup_force_cpu_cap (X86_FEATURE_IBPB_ON_VMEXIT ); srso_mitigation =SRSO_MITIGATION_IBPB ;/*
@@ -2652,6 +2652,13 @@ static void __init srso_select_mitigation(void)*/ setup_clear_cpu_cap (X86_FEATURE_UNRET );setup_clear_cpu_cap (X86_FEATURE_RETHUNK ); + +/* +* There is no need for RSB filling: entry_ibpb() ensures +* all predictions, including the RSB, are invalidated, +* regardless of IBPB implementation. +*/ +setup_clear_cpu_cap (X86_FEATURE_RSB_VMEXIT ); } }else {pr_err ("WARNING: kernel not compiled with MITIGATION_IBPB_ENTRY.\n" );
@@ -2659,8 +2666,8 @@ static void __init srso_select_mitigation(void)break ;case SRSO_CMD_IBPB_ON_VMEXIT : -if (IS_ENABLED (CONFIG_MITIGATION_SRSO )) { -if (!boot_cpu_has (X86_FEATURE_ENTRY_IBPB ) && has_microcode) { +if (IS_ENABLED (CONFIG_MITIGATION_IBPB_ENTRY )) { +if (has_microcode) {setup_force_cpu_cap (X86_FEATURE_IBPB_ON_VMEXIT ); srso_mitigation =SRSO_MITIGATION_IBPB_ON_VMEXIT ;
@@ -2672,8 +2679,8 @@ static void __init srso_select_mitigation(void)setup_clear_cpu_cap (X86_FEATURE_RSB_VMEXIT ); } }else { -pr_err ("WARNING: kernel not compiled with MITIGATION_SRSO.\n" ); - } +pr_err ("WARNING: kernel not compiled with MITIGATION_IBPB_ENTRY.\n" ); + }break ;default :break ;
arch/x86/kvm/hyperv.c +5 -1
@@ -2226,6 +2226,9 @@ static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc)u32 vector;bool all_cpus; +if (!lapic_in_kernel (vcpu)) +return HV_STATUS_INVALID_HYPERCALL_INPUT ; +if (hc->code ==HVCALL_SEND_IPI ) {if (!hc->fast) { if (unlikely(kvm_read_guest(kvm, hc->ingpa, &send_ipi,
@@ -2852,7 +2855,8 @@ int kvm_get_hv_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, ent->eax |=HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED ; ent->eax |=HV_X64_APIC_ACCESS_RECOMMENDED ; ent->eax |=HV_X64_RELAXED_TIMING_RECOMMENDED ; - ent->eax |=HV_X64_CLUSTER_IPI_RECOMMENDED ; +if (!vcpu ||lapic_in_kernel (vcpu)) + ent->eax |=HV_X64_CLUSTER_IPI_RECOMMENDED ; ent->eax |=HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED ;if (evmcs_ver) ent->eax |=HV_X64_ENLIGHTENED_VMCS_RECOMMENDED ;
arch/x86/kvm/mmu/mmu.c +1 -1
@@ -5524,7 +5524,7 @@ void kvm_init_shadow_npt_mmu(struct kvm_vcpu *vcpu, unsigned long cr0,union kvm_mmu_page_role root_role;/* NPT requires CR0.PG=1. */ -WARN_ON_ONCE (cpu_role.base.direct); +WARN_ON_ONCE (cpu_role.base.direct || !cpu_role.base.guest_mode); root_role = cpu_role.base; root_role.level =kvm_mmu_get_tdp_level (vcpu);
arch/x86/kvm/svm/nested.c +5 -5
@@ -646,6 +646,11 @@ static void nested_vmcb02_prepare_control(struct vcpu_svm *svm,u32 pause_count12;u32 pause_thresh12; +nested_svm_transition_tlb_flush (vcpu); + +/* Enter Guest-Mode */ +enter_guest_mode (vcpu); +/* * Filled at exit: exit_code, exit_code_hi, exit_info_1, exit_info_2, * exit_int_info, exit_int_info_err, next_rip, insn_len, insn_bytes.
@@ -762,11 +767,6 @@ static void nested_vmcb02_prepare_control(struct vcpu_svm *svm, } } -nested_svm_transition_tlb_flush (vcpu); - -/* Enter Guest-Mode */ -enter_guest_mode (vcpu); -/* * Merge guest and host intercepts - must be called with vcpu in * guest-mode to take effect.
arch/x86/kvm/svm/svm.c +6 -7
@@ -1995,11 +1995,11 @@ static void new_asid(struct vcpu_svm *svm, struct svm_cpu_data *sd) svm->asid = sd->next_asid++; } -static void svm_set_dr6 (struct vcpu_svm *svm,unsigned long value) +static void svm_set_dr6 (struct kvm_vcpu *vcpu,unsigned long value) { -struct vmcb *vmcb = svm->vmcb; +struct vmcb *vmcb =to_svm (vcpu)->vmcb; -if (svm->vcpu.arch.guest_state_protected) +if (vcpu->arch.guest_state_protected)return ;if (unlikely (value != vmcb->save.dr6)) {
@@ -4236,10 +4236,8 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu,* Run with all-zero DR6 unless needed, so that we can get the exact cause * of a #DB. */ -if (unlikely (vcpu->arch.switch_db_regs &KVM_DEBUGREG_WONT_EXIT )) -svm_set_dr6 (svm, vcpu->arch.dr6); -else -svm_set_dr6 (svm,DR6_ACTIVE_LOW ); +if (likely (!(vcpu->arch.switch_db_regs &KVM_DEBUGREG_WONT_EXIT ))) +svm_set_dr6 (vcpu,DR6_ACTIVE_LOW );clgi ();kvm_load_guest_xsave_state (vcpu);
@@ -5036,6 +5034,7 @@ static struct kvm_x86_ops svm_x86_ops __initdata = { .set_idt = svm_set_idt, .get_gdt = svm_get_gdt, .set_gdt = svm_set_gdt, + .set_dr6 = svm_set_dr6, .set_dr7 = svm_set_dr7, .sync_dirty_debug_regs = svm_sync_dirty_debug_regs, .cache_reg = svm_cache_reg,
arch/x86/kvm/vmx/main.c +1 -0
@@ -61,6 +61,7 @@ struct kvm_x86_ops vt_x86_ops __initdata = { .set_idt = vmx_set_idt, .get_gdt = vmx_get_gdt, .set_gdt = vmx_set_gdt, + .set_dr6 = vmx_set_dr6, .set_dr7 = vmx_set_dr7, .sync_dirty_debug_regs = vmx_sync_dirty_debug_regs, .cache_reg = vmx_cache_reg,
arch/x86/kvm/vmx/vmx.c +6 -4
@@ -5644,6 +5644,12 @@ void vmx_sync_dirty_debug_regs(struct kvm_vcpu *vcpu)set_debugreg (DR6_RESERVED ,6 ); } +void vmx_set_dr6 (struct kvm_vcpu *vcpu,unsigned long val) +{ +lockdep_assert_irqs_disabled (); +set_debugreg (vcpu->arch.dr6,6 ); +} +void vmx_set_dr7 (struct kvm_vcpu *vcpu,unsigned long val) {vmcs_writel (GUEST_DR7 , val);
@@ -7428,10 +7434,6 @@ fastpath_t vmx_vcpu_run(struct kvm_vcpu *vcpu, bool force_immediate_exit) vmx->loaded_vmcs->host_state.cr4 = cr4; } -/* When KVM_DEBUGREG_WONT_EXIT, dr6 is accessible in guest. */ -if (unlikely (vcpu->arch.switch_db_regs &KVM_DEBUGREG_WONT_EXIT )) -set_debugreg (vcpu->arch.dr6,6 ); -/* When single-stepping over STI and MOV SS, we must clear the * corresponding interruptibility bits in the guest state. Otherwise * vmentry fails as it then expects bit 14 (BS) in pending debug
arch/x86/kvm/vmx/x86_ops.h +1 -0
@@ -74,6 +74,7 @@ void vmx_get_idt(struct kvm_vcpu *vcpu, struct desc_ptr *dt);void vmx_set_idt (struct kvm_vcpu *vcpu,struct desc_ptr *dt);void vmx_get_gdt (struct kvm_vcpu *vcpu,struct desc_ptr *dt);void vmx_set_gdt (struct kvm_vcpu *vcpu,struct desc_ptr *dt); +void vmx_set_dr6 (struct kvm_vcpu *vcpu,unsigned long val);void vmx_set_dr7 (struct kvm_vcpu *vcpu,unsigned long val);void vmx_sync_dirty_debug_regs (struct kvm_vcpu *vcpu);void vmx_cache_reg (struct kvm_vcpu *vcpu,enum kvm_reg reg);
arch/x86/kvm/x86.c +3 -0
@@ -10953,6 +10953,9 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)set_debugreg (vcpu->arch.eff_db[1 ],1 );set_debugreg (vcpu->arch.eff_db[2 ],2 );set_debugreg (vcpu->arch.eff_db[3 ],3 ); +/* When KVM_DEBUGREG_WONT_EXIT, dr6 is accessible in guest. */ +if (unlikely (vcpu->arch.switch_db_regs &KVM_DEBUGREG_WONT_EXIT )) +kvm_x86_call (set_dr6)(vcpu, vcpu->arch.dr6); }else if (unlikely (hw_breakpoint_active ())) {set_debugreg (0 ,7 ); }
arch/x86/mm/tlb.c +32 -3
@@ -893,9 +893,36 @@ static void flush_tlb_func(void *info) nr_invalidate); } -static bool tlb_is_not_lazy (int cpu,void *data) +static bool should_flush_tlb (int cpu,void *data) { -return !per_cpu (cpu_tlbstate_shared.is_lazy, cpu); +struct flush_tlb_info *info = data; + +/* Lazy TLB will get flushed at the next context switch. */ +if (per_cpu (cpu_tlbstate_shared.is_lazy, cpu)) +return false; + +/* No mm means kernel memory flush. */ +if (!info->mm) +return true; + +/* The target mm is loaded, and the CPU is not lazy. */ +if (per_cpu (cpu_tlbstate.loaded_mm, cpu) == info->mm) +return true; + +/* In cpumask, but not the loaded mm? Periodically remove by flushing. */ +if (info->trim_cpumask) +return true; + +return false; +} + +static bool should_trim_cpumask (struct mm_struct *mm) +{ +if (time_after (jiffies,READ_ONCE (mm->context.next_trim_cpumask))) { +WRITE_ONCE (mm->context.next_trim_cpumask, jiffies +HZ ); +return true; + } +return false; } DEFINE_PER_CPU_SHARED_ALIGNED(struct tlb_state_shared, cpu_tlbstate_shared);
@@ -929,7 +956,7 @@ STATIC_NOPV void native_flush_tlb_multi(const struct cpumask *cpumask,if (info->freed_tables)on_each_cpu_mask (cpumask, flush_tlb_func, (void *)info, true);else -on_each_cpu_cond_mask (tlb_is_not_lazy, flush_tlb_func, +on_each_cpu_cond_mask (should_flush_tlb, flush_tlb_func, (void *)info,1 , cpumask); }
@@ -980,6 +1007,7 @@ static struct flush_tlb_info *get_flush_tlb_info(struct mm_struct *mm, info->freed_tables = freed_tables; info->new_tlb_gen = new_tlb_gen; info->initiating_cpu =smp_processor_id (); + info->trim_cpumask =0 ;return info; }
@@ -1022,6 +1050,7 @@ void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,* flush_tlb_func_local() directly in this case. */ if (cpumask_any_but (mm_cpumask (mm), cpu) < nr_cpu_ids) { + info->trim_cpumask =should_trim_cpumask (mm);flush_tlb_multi (mm_cpumask (mm), info); }else if (mm ==this_cpu_read (cpu_tlbstate.loaded_mm)) {lockdep_assert_irqs_enabled ();
arch/x86/um/os-Linux/registers.c +18 -3
@@ -18,6 +18,7 @@#include <registers.h> #include <sys/mman.h> +static unsigned long ptrace_regset;unsigned long host_fp_size;int get_fp_registers (int pid,unsigned long *regs)
@@ -27,7 +28,7 @@ int get_fp_registers(int pid, unsigned long *regs) .iov_len = host_fp_size, }; -if (ptrace (PTRACE_GETREGSET , pid,NT_X86_XSTATE , &iov) <0 ) +if (ptrace (PTRACE_GETREGSET , pid, ptrace_regset, &iov) <0 )return -errno;return 0 ; }
@@ -39,7 +40,7 @@ int put_fp_registers(int pid, unsigned long *regs) .iov_len = host_fp_size, }; -if (ptrace (PTRACE_SETREGSET , pid,NT_X86_XSTATE , &iov) <0 ) +if (ptrace (PTRACE_SETREGSET , pid, ptrace_regset, &iov) <0 )return -errno;return 0 ; }
@@ -58,9 +59,23 @@ int arch_init_registers(int pid)return -ENOMEM ;/* GDB has x86_xsave_length, which uses x86_cpuid_count */ - ret =ptrace (PTRACE_GETREGSET , pid,NT_X86_XSTATE , &iov); + ptrace_regset =NT_X86_XSTATE ; + ret =ptrace (PTRACE_GETREGSET , pid, ptrace_regset, &iov);if (ret) ret = -errno; + +if (ret == -ENODEV ) { +#ifdef CONFIG_X86_32 + ptrace_regset =NT_PRXFPREG ; +#else + ptrace_regset =NT_PRFPREG ; +#endif + iov.iov_len =2 *1024 *1024 ; + ret =ptrace (PTRACE_GETREGSET , pid, ptrace_regset, &iov); +if (ret) + ret = -errno; + } +munmap (iov.iov_base,2 *1024 *1024 ); host_fp_size = iov.iov_len;
arch/x86/um/signal.c +10 -3
@@ -187,7 +187,12 @@ static int copy_sc_to_user(struct sigcontext __user *to,* Put magic/size values for userspace. We do not bother to verify them * later on, however, userspace needs them should it try to read the * XSTATE data. And ptrace does not fill in these parts. +* +* Skip this if we do not have an XSTATE frame. */ +if (host_fp_size <=sizeof (to_fp64->fpstate)) +return 0 ; +BUILD_BUG_ON (sizeof (int ) !=FP_XSTATE_MAGIC2_SIZE );#ifdef CONFIG_X86_32 __put_user(offsetof(struct _fpstate_32, _fxsr_env) +
@@ -367,11 +372,13 @@ int setup_signal_stack_si(unsigned long stack_top, struct ksignal *ksig,int err =0 , sig = ksig->sig;unsigned long fp_to; - frame = (struct rt_sigframe __user *) -round_down (stack_top -sizeof (struct rt_sigframe ),16 ); + frame = (void __user *)stack_top -sizeof (struct rt_sigframe );/* Add required space for math frame */ - frame = (struct rt_sigframe __user *)((unsigned long )frame - math_size); + frame = (void __user *)((unsigned long )frame - math_size); + +/* ABI requires 16 byte boundary alignment */ + frame = (void __user *)round_down ((unsigned long )frame,16 );/* Subtract 128 for a red zone and 8 for proper alignment */ frame = (struct rt_sigframe __user *) ((unsigned long ) frame -128 -8 );
arch/x86/xen/mmu_pv.c +66 -9
148 lines not on this page · raw message
block/partitions/mac.c +15 -3
@@ -53,13 +53,25 @@ int mac_partition(struct parsed_partitions *state) } secsize =be16_to_cpu (md->block_size);put_dev_sector (sect); + +/* +* If the "block size" is not a power of 2, things get weird - we might +* end up with a partition straddling a sector boundary, so we wouldn't +* be able to read a partition entry with read_part_sector(). +* Real block sizes are probably (?) powers of two, so just require +* that. +*/ +if (!is_power_of_2 (secsize)) +return -1 ; datasize =round_down (secsize,512 ); data =read_part_sector (state, datasize /512 , §);if (!data)return -1 ; partoffset = secsize %512 ; -if (partoffset +sizeof (*part) > datasize) +if (partoffset +sizeof (*part) > datasize) { +put_dev_sector (sect);return -1 ; + } part = (struct mac_partition *) (data + partoffset);if (be16_to_cpu (part->signature) !=MAC_PARTITION_MAGIC ) {put_dev_sector (sect);
@@ -112,8 +124,8 @@ int mac_partition(struct parsed_partitions *state)int i, l; goodness++; - l =strlen (part->name); -if (strcmp (part->name,"/" ) ==0 ) + l =strnlen (part->name,sizeof (part->name)); +if (strncmp (part->name,"/" ,sizeof (part->name)) ==0 ) goodness++;for (i =0 ; i <= l -4 ; ++i) { if (strncasecmp(part->name + i, "root",
drivers/acpi/arm64/gtdt.c +8 -4
@@ -163,7 +163,7 @@ int __init acpi_gtdt_init(struct acpi_table_header *table, {void *platform_timer;struct acpi_table_gtdt *gtdt; -int cnt =0 ; +u32 cnt =0 ; gtdt = container_of(table, struct acpi_table_gtdt, header); acpi_gtdt_desc.gtdt = gtdt;
@@ -188,13 +188,17 @@ int __init acpi_gtdt_init(struct acpi_table_header *table, cnt++;if (cnt != gtdt->platform_timer_count) { + cnt =min (cnt, gtdt->platform_timer_count); +pr_err (FW_BUG "limiting Platform Timer count to %d\n" , cnt); + } + +if (!cnt) { acpi_gtdt_desc.platform_timer =NULL ; -pr_err (FW_BUG "invalid timer data.\n" ); -return -EINVAL ; +return 0 ; }if (platform_timer_count) - *platform_timer_count = gtdt->platform_timer_count; + *platform_timer_count = cnt;return 0 ; }
drivers/acpi/x86/utils.c +13 -0
@@ -407,6 +407,19 @@ static const struct dmi_system_id acpi_quirk_skip_dmi_ids[] = { .driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS | ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY), }, + { +/* Vexia Edu Atla 10 tablet 5V version */ + .matches = { +/* Having all 3 of these not set is somewhat unique */ +DMI_MATCH (DMI_SYS_VENDOR ,"To be filled by O.E.M." ), +DMI_MATCH (DMI_PRODUCT_NAME ,"To be filled by O.E.M." ), +DMI_MATCH (DMI_BOARD_NAME ,"To be filled by O.E.M." ), +/* Above strings are too generic, also match on BIOS date */ + DMI_MATCH(DMI_BIOS_DATE, "05/14/2015"), + }, + .driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS | + ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY), + }, {/* Vexia Edu Atla 10 tablet 9V version */ .matches = {
drivers/base/regmap/regmap-irq.c +2 -0
@@ -906,6 +906,7 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode,kfree (d->wake_buf);kfree (d->mask_buf_def);kfree (d->mask_buf); +kfree (d->main_status_buf);kfree (d->status_buf);kfree (d->status_reg_buf);if (d->config_buf) {
@@ -981,6 +982,7 @@ void regmap_del_irq_chip(int irq, struct regmap_irq_chip_data *d)kfree (d->wake_buf);kfree (d->mask_buf_def);kfree (d->mask_buf); +kfree (d->main_status_buf);kfree (d->status_reg_buf);kfree (d->status_buf);if (d->config_buf) {
drivers/bluetooth/btintel_pcie.c +4 -1
@@ -1320,6 +1320,10 @@ static int btintel_pcie_send_frame(struct hci_dev *hdev,if (opcode ==0xfc01 )btintel_pcie_inject_cmd_complete (hdev, opcode); } +/* Firmware raises alive interrupt on HCI_OP_RESET */ +if (opcode ==HCI_OP_RESET ) + data->gp0_received = false; + hdev->stat.cmd_tx++;break ;case HCI_ACLDATA_PKT :
@@ -1357,7 +1361,6 @@ static int btintel_pcie_send_frame(struct hci_dev *hdev, opcode,btintel_pcie_alivectxt_state2str (old_ctxt), btintel_pcie_alivectxt_state2str(data->alive_intr_ctxt));if (opcode ==HCI_OP_RESET ) { - data->gp0_received = false; ret =wait_event_timeout (data->gp0_wait_q, data->gp0_received,msecs_to_jiffies (BTINTEL_DEFAULT_INTR_TIMEOUT_MS ));
drivers/bus/moxtet.c +1 -1
@@ -657,7 +657,7 @@ static void moxtet_irq_print_chip(struct irq_data *d, struct seq_file *p) id = moxtet->modules[pos->idx]; -seq_printf (p," moxtet-%s.%i#%i" ,mox_module_name (id), pos->idx, +seq_printf (p,"moxtet-%s.%i#%i" ,mox_module_name (id), pos->idx, pos->bit); }
drivers/cpufreq/amd-pstate.c +31 -74
208 lines not on this page · raw message
drivers/firmware/efi/efi.c +4 -2
@@ -937,13 +937,15 @@ char * __init efi_md_typeattr_format(char *buf, size_t size,EFI_MEMORY_WB |EFI_MEMORY_UCE |EFI_MEMORY_RO |EFI_MEMORY_WP |EFI_MEMORY_RP |EFI_MEMORY_XP |EFI_MEMORY_NV |EFI_MEMORY_SP |EFI_MEMORY_CPU_CRYPTO | - EFI_MEMORY_RUNTIME | EFI_MEMORY_MORE_RELIABLE)) +EFI_MEMORY_MORE_RELIABLE |EFI_MEMORY_HOT_PLUGGABLE | + EFI_MEMORY_RUNTIME)) snprintf(pos, size, "|attr=0x%016llx]", (unsigned long long)attr); else snprintf(pos, size, -"|%3s|%2s|%2s|%2s|%2s|%2s|%2s|%2s|%2s|%3s|%2s|%2s|%2s|%2s]" , +"|%3s|%2s|%2s|%2s|%2s|%2s|%2s|%2s|%2s|%2s|%3s|%2s|%2s|%2s|%2s]" , attr &EFI_MEMORY_RUNTIME ?"RUN" :"" , + attr &EFI_MEMORY_HOT_PLUGGABLE ?"HP" :"" , attr &EFI_MEMORY_MORE_RELIABLE ?"MR" :"" , attr &EFI_MEMORY_CPU_CRYPTO ?"CC" :"" , attr & EFI_MEMORY_SP ? "SP" : "",
drivers/firmware/efi/libstub/randomalloc.c +3 -0
@@ -25,6 +25,9 @@ static unsigned long get_entry_num_slots(efi_memory_desc_t *md,if (md->type !=EFI_CONVENTIONAL_MEMORY )return 0 ; +if (md->attribute &EFI_MEMORY_HOT_PLUGGABLE ) +return 0 ; +if (efi_soft_reserve_enabled () && (md->attribute &EFI_MEMORY_SP ))return 0 ;
drivers/firmware/efi/libstub/relocate.c +3 -0
@@ -53,6 +53,9 @@ efi_status_t efi_low_alloc_above(unsigned long size, unsigned long align,if (desc->type !=EFI_CONVENTIONAL_MEMORY )continue ; +if (desc->attribute &EFI_MEMORY_HOT_PLUGGABLE ) +continue ; +if (efi_soft_reserve_enabled () && (desc->attribute &EFI_MEMORY_SP ))continue ;
drivers/firmware/qcom/qcom_scm-smc.c +3 -0
@@ -173,6 +173,9 @@ int __scm_smc_call(struct device *dev, const struct qcom_scm_desc *desc, smc.args[i +SCM_SMC_FIRST_REG_IDX ] = desc->args[i];if (unlikely (arglen >SCM_SMC_N_REG_ARGS )) { +if (!mempool) +return -EINVAL ; + args_virt =qcom_tzmem_alloc (mempool,SCM_SMC_N_EXT_ARGS *sizeof (u64), flag);
drivers/gpio/gpio-bcm-kona.c +58 -13
126 lines not on this page · raw message
drivers/gpio/gpio-stmpe.c +12 -3
@@ -191,7 +191,7 @@ static void stmpe_gpio_irq_sync_unlock(struct irq_data *d) [REG_IE][CSB] = STMPE_IDX_IEGPIOR_CSB, [REG_IE][MSB] = STMPE_IDX_IEGPIOR_MSB, }; -int i, j; +int ret, i, j;/* * STMPE1600: to be able to get IRQ from pins,
@@ -199,8 +199,16 @@ static void stmpe_gpio_irq_sync_unlock(struct irq_data *d)* GPSR or GPCR registers */ if (stmpe->partnum ==STMPE1600 ) { -stmpe_reg_read (stmpe, stmpe->regs[STMPE_IDX_GPMR_LSB ]); -stmpe_reg_read (stmpe, stmpe->regs[STMPE_IDX_GPMR_CSB ]); + ret =stmpe_reg_read (stmpe, stmpe->regs[STMPE_IDX_GPMR_LSB ]); +if (ret <0 ) { +dev_err (stmpe->dev,"Failed to read GPMR_LSB: %d\n" , ret); + goto err; + } + ret =stmpe_reg_read (stmpe, stmpe->regs[STMPE_IDX_GPMR_CSB ]); +if (ret <0 ) { +dev_err (stmpe->dev,"Failed to read GPMR_CSB: %d\n" , ret); + goto err; + } }for (i =0 ; i <CACHE_NR_REGS ; i++) {
@@ -222,6 +230,7 @@ static void stmpe_gpio_irq_sync_unlock(struct irq_data *d) } } +err:mutex_unlock (&stmpe_gpio->irq_lock); }
drivers/gpio/gpiolib-acpi.c +14 -0
@@ -1689,6 +1689,20 @@ static const struct dmi_system_id gpiolib_acpi_quirks[] __initconst = { .ignore_wake = "PNP0C50:00@8", }, }, + { + /* + * Spurious wakeups from GPIO 11 + * Found in BIOS 1.04 + * https://gitlab.freedesktop.org/drm/amd/-/issues/3954 + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_FAMILY, "Acer Nitro V 14"), + }, + .driver_data = &(struct acpi_gpiolib_dmi_quirk) { + .ignore_interrupt = "AMDI0030:00@11", + }, + }, {} /* Terminating entry */ };
drivers/gpio/gpiolib.c +3 -3
@@ -904,13 +904,13 @@ int gpiochip_get_ngpios(struct gpio_chip *gc, struct device *dev) }if (gc->ngpio ==0 ) { -chip_err (gc,"tried to insert a GPIO chip with zero lines\n" ); +dev_err (dev,"tried to insert a GPIO chip with zero lines\n" );return -EINVAL ; }if (gc->ngpio >FASTPATH_NGPIO ) -chip_warn (gc,"line cnt %u is greater than fast path cnt %u\n" , - gc->ngpio,FASTPATH_NGPIO ); +dev_warn (dev,"line cnt %u is greater than fast path cnt %u\n" , + gc->ngpio,FASTPATH_NGPIO );return 0 ; }
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +3 -2
@@ -3790,9 +3790,10 @@ int psp_init_cap_microcode(struct psp_context *psp, const char *chip_name)if (err == -ENODEV ) {dev_warn (adev->dev,"cap microcode does not exist, skip\n" ); err =0 ; - goto out; + }else { +dev_err (adev->dev,"fail to initialize cap microcode\n" ); } -dev_err (adev->dev,"fail to initialize cap microcode\n" ); + goto out; } info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CAP ];
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +1 -1
@@ -298,7 +298,7 @@ static int init_user_queue(struct process_queue_manager *pqm,return 0 ; free_gang_ctx_bo: -amdgpu_amdkfd_free_gtt_mem (dev->adev, (*q)->gang_ctx_bo); +amdgpu_amdkfd_free_gtt_mem (dev->adev, &(*q)->gang_ctx_bo); cleanup:uninit_queue (*q); *q =NULL ;
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c +2 -1
@@ -609,7 +609,8 @@ static int smu_sys_set_pp_table(void *handle,return -EIO ; } -if (!smu_table->hardcode_pptable) { +if (!smu_table->hardcode_pptable || smu_table->power_play_table_size < size) { +kfree (smu_table->hardcode_pptable); smu_table->hardcode_pptable =kzalloc (size,GFP_KERNEL );if (!smu_table->hardcode_pptable)return -ENOMEM ;
drivers/gpu/drm/display/drm_dp_helper.c +1 -1
@@ -2421,7 +2421,7 @@ u8 drm_dp_dsc_sink_bpp_incr(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]) {u8 bpp_increment_dpcd = dsc_dpcd[DP_DSC_BITS_PER_PIXEL_INC -DP_DSC_SUPPORT ]; -switch (bpp_increment_dpcd) { +switch (bpp_increment_dpcd &DP_DSC_BITS_PER_PIXEL_MASK ) {case DP_DSC_BITS_PER_PIXEL_1_16 :return 16 ;case DP_DSC_BITS_PER_PIXEL_1_8 :
drivers/gpu/drm/i915/selftests/i915_gem_gtt.c +2 -2
@@ -168,7 +168,7 @@ static int igt_ppgtt_alloc(void *arg)return PTR_ERR (ppgtt);if (!ppgtt->vm.allocate_va_range) - goto err_ppgtt_cleanup; + goto ppgtt_vm_put;/* * While we only allocate the page tables here and so we could
@@ -236,7 +236,7 @@ static int igt_ppgtt_alloc(void *arg) goto retry; }i915_gem_ww_ctx_fini (&ww); - +ppgtt_vm_put:i915_vm_put (&ppgtt->vm);return err; }
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h +2 -2
@@ -391,8 +391,8 @@ static const struct dpu_intf_cfg x1e80100_intf[] = { .type = INTF_DP, .controller_id = MSM_DP_CONTROLLER_2, .prog_fetch_lines_worst_case = 24, - .intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 17), - .intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 16), + .intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 16), + .intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 17), }, { .name = "intf_7", .id = INTF_7, .base = 0x3b000, .len = 0x280,
drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c +0 -3
@@ -42,9 +42,6 @@ static int dpu_wb_conn_atomic_check(struct drm_connector *connector,if (!conn_state || !conn_state->connector) {DPU_ERROR ("invalid connector state\n" );return -EINVAL ; - }else if (conn_state->connector->status != connector_status_connected) { -DPU_ERROR ("connector not connected %d\n" , conn_state->connector->status); -return -EINVAL ; } crtc = conn_state->crtc;
drivers/gpu/drm/msm/msm_gem_submit.c +1 -2
@@ -787,8 +787,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data, goto out;if (!submit->cmd[i].size || - ((submit->cmd[i].size + submit->cmd[i].offset) > - obj->size /4 )) { + (size_add (submit->cmd[i].size, submit->cmd[i].offset) > obj->size /4 )) {SUBMIT_ERROR (submit,"invalid cmdstream size: %u\n" , submit->cmd[i].size *4 ); ret = -EINVAL ; goto out;
drivers/gpu/drm/panthor/panthor_drv.c +1 -0
@@ -802,6 +802,7 @@ static void panthor_query_group_priorities_info(struct drm_file *file, {int prio; +memset (arg,0 ,sizeof (*arg));for (prio =PANTHOR_GROUP_PRIORITY_REALTIME ; prio >=0 ; prio--) {if (!group_priority_permit (file, prio)) arg->allowed_mask |=BIT (prio);
drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c +1 -1
@@ -587,7 +587,7 @@ static int rcar_mipi_dsi_startup(struct rcar_mipi_dsi *dsi,for (timeout =10 ; timeout >0 ; --timeout) {if ((rcar_mipi_dsi_read (dsi,PPICLSR ) &PPICLSR_STPST ) && (rcar_mipi_dsi_read (dsi,PPIDLSR ) &PPIDLSR_STPST ) && - (rcar_mipi_dsi_read (dsi,CLOCKSET1 ) &CLOCKSET1_LOCK )) + (rcar_mipi_dsi_read (dsi,CLOCKSET1 ) &CLOCKSET1_LOCK_PHY ))break ;usleep_range (1000 ,2000 );
drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi_regs.h +0 -1
@@ -142,7 +142,6 @@#define CLOCKSET1 0x101c#define CLOCKSET1_LOCK_PHY (1 << 17) -#define CLOCKSET1_LOCK (1 << 16)#define CLOCKSET1_CLKSEL (1 << 8)#define CLOCKSET1_CLKINSEL_EXTAL (0 << 2)#define CLOCKSET1_CLKINSEL_DIG (1 << 2)
drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c +3 -3
@@ -311,11 +311,11 @@ int rzg2l_du_modeset_init(struct rzg2l_du_device *rcdu) dev->mode_config.helper_private = &rzg2l_du_mode_config_helper;/* -* The RZ DU uses the VSP1 for memory access, and is limited -* to frame sizes of 1920x1080. +* The RZ DU was designed to support a frame size of 1920x1200 (landscape) +* or 1200x1920 (portrait). */ dev->mode_config.max_width =1920 ; - dev->mode_config.max_height =1080 ; + dev->mode_config.max_height =1920 ; rcdu->num_crtcs =hweight8 (rcdu->info->channels_mask);
drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +7 -0
@@ -70,10 +70,17 @@ static int light_up_connector(struct kunit *test, state =drm_kunit_helper_atomic_state_alloc (test, drm, ctx);KUNIT_ASSERT_NOT_ERR_OR_NULL (test, state); +retry: conn_state =drm_atomic_get_connector_state (state, connector);KUNIT_ASSERT_NOT_ERR_OR_NULL (test, conn_state); ret =drm_atomic_set_crtc_for_connector (conn_state, crtc); +if (ret == -EDEADLK ) { +drm_atomic_state_clear (state); + ret =drm_modeset_backoff (ctx); +if (!ret) + goto retry; + }KUNIT_EXPECT_EQ (test, ret,0 ); crtc_state =drm_atomic_get_crtc_state (state, crtc);
drivers/gpu/drm/tidss/tidss_dispc.c +16 -10
@@ -700,7 +700,7 @@ void dispc_k2g_set_irqenable(struct dispc_device *dispc, dispc_irq_t mask) {dispc_irq_t old_mask =dispc_k2g_read_irqenable (dispc); -/* clear the irqstatus for newly enabled irqs */ +/* clear the irqstatus for irqs that will be enabled */ dispc_k2g_clear_irqstatus (dispc, (mask ^ old_mask) & mask);dispc_k2g_vp_set_irqenable (dispc,0 , mask);
@@ -708,6 +708,9 @@ void dispc_k2g_set_irqenable(struct dispc_device *dispc, dispc_irq_t mask)dispc_write (dispc,DISPC_IRQENABLE_SET , (1 <<0 ) | (1 <<7 )); +/* clear the irqstatus for irqs that were disabled */ +dispc_k2g_clear_irqstatus (dispc, (mask ^ old_mask) & old_mask); +/* flush posted write */ dispc_k2g_read_irqenable (dispc); }
@@ -780,24 +783,20 @@ staticvoid dispc_k3_clear_irqstatus (struct dispc_device *dispc,dispc_irq_t clearmask) {unsigned int i; -u32 top_clear =0 ;for (i =0 ; i < dispc->feat->num_vps; ++i) { -if (clearmask &DSS_IRQ_VP_MASK (i)) { +if (clearmask &DSS_IRQ_VP_MASK (i))dispc_k3_vp_write_irqstatus (dispc, i, clearmask); - top_clear |=BIT (i); - } }for (i =0 ; i < dispc->feat->num_planes; ++i) { -if (clearmask &DSS_IRQ_PLANE_MASK (i)) { +if (clearmask &DSS_IRQ_PLANE_MASK (i))dispc_k3_vid_write_irqstatus (dispc, i, clearmask); - top_clear |=BIT (4 + i); - } }if (dispc->feat->subrev ==DISPC_K2G )return ; -dispc_write (dispc,DISPC_IRQSTATUS , top_clear); +/* always clear the top level irqstatus */ +dispc_write (dispc,DISPC_IRQSTATUS ,dispc_read (dispc,DISPC_IRQSTATUS ));/* Flush posted writes */ dispc_read (dispc,DISPC_IRQSTATUS );
@@ -843,7 +842,7 @@ static void dispc_k3_set_irqenable(struct dispc_device *dispc, old_mask =dispc_k3_read_irqenable (dispc); -/* clear the irqstatus for newly enabled irqs */ +/* clear the irqstatus for irqs that will be enabled */ dispc_k3_clear_irqstatus (dispc, (old_mask ^ mask) & mask);for (i =0 ; i < dispc->feat->num_vps; ++i) {
@@ -868,6 +867,9 @@ static void dispc_k3_set_irqenable(struct dispc_device *dispc,if (main_disable)dispc_write (dispc,DISPC_IRQENABLE_CLR , main_disable); +/* clear the irqstatus for irqs that were disabled */ +dispc_k3_clear_irqstatus (dispc, (old_mask ^ mask) & old_mask); +/* Flush posted writes */ dispc_read (dispc,DISPC_IRQENABLE_SET ); }
@@ -2767,8 +2769,12 @@ static void dispc_init_errata(struct dispc_device *dispc)*/ static void dispc_softreset_k2g (struct dispc_device *dispc) { +unsigned long flags; + +spin_lock_irqsave (&dispc->tidss->wait_lock, flags);dispc_set_irqenable (dispc,0 );dispc_read_and_clear_irqstatus (dispc); +spin_unlock_irqrestore (&dispc->tidss->wait_lock, flags);for (unsigned int vp_idx =0 ; vp_idx < dispc->feat->num_vps; ++vp_idx)VP_REG_FLD_MOD (dispc, vp_idx,DISPC_VP_CONTROL ,0 ,0 ,0 );
drivers/gpu/drm/tidss/tidss_irq.c +2 -0
@@ -60,7 +60,9 @@ static irqreturn_t tidss_irq_handler(int irq, void *arg)unsigned int id;dispc_irq_t irqstatus; +spin_lock (&tidss->wait_lock); irqstatus =dispc_read_and_clear_irqstatus (tidss->dispc); +spin_unlock (&tidss->wait_lock);for (id =0 ; id < tidss->num_crtcs; id++) {struct drm_crtc *crtc = tidss->crtcs[id];
drivers/gpu/drm/v3d/v3d_perfmon.c +5 -0
@@ -384,6 +384,7 @@ int v3d_perfmon_destroy_ioctl(struct drm_device *dev, void *data, {struct v3d_file_priv *v3d_priv = file_priv->driver_priv;struct drm_v3d_perfmon_destroy *req = data; +struct v3d_dev *v3d = v3d_priv->v3d;struct v3d_perfmon *perfmon;mutex_lock (&v3d_priv->perfmon.lock);
@@ -393,6 +394,10 @@ int v3d_perfmon_destroy_ioctl(struct drm_device *dev, void *data,if (!perfmon)return -EINVAL ; +/* If the active perfmon is being destroyed, stop it first */ +if (perfmon == v3d->active_perfmon) +v3d_perfmon_stop (v3d, perfmon, false); +v3d_perfmon_put (perfmon);return 0 ;
drivers/gpu/drm/xe/regs/xe_oa_regs.h +1 -8
@@ -41,14 +41,6 @@#define OAG_OABUFFER XE_REG(0xdb08)#define OABUFFER_SIZE_MASK REG_GENMASK(5, 3) -#define OABUFFER_SIZE_128K REG_FIELD_PREP(OABUFFER_SIZE_MASK, 0) -#define OABUFFER_SIZE_256K REG_FIELD_PREP(OABUFFER_SIZE_MASK, 1) -#define OABUFFER_SIZE_512K REG_FIELD_PREP(OABUFFER_SIZE_MASK, 2) -#define OABUFFER_SIZE_1M REG_FIELD_PREP(OABUFFER_SIZE_MASK, 3) -#define OABUFFER_SIZE_2M REG_FIELD_PREP(OABUFFER_SIZE_MASK, 4) -#define OABUFFER_SIZE_4M REG_FIELD_PREP(OABUFFER_SIZE_MASK, 5) -#define OABUFFER_SIZE_8M REG_FIELD_PREP(OABUFFER_SIZE_MASK, 6) -#define OABUFFER_SIZE_16M REG_FIELD_PREP(OABUFFER_SIZE_MASK, 7)#define OAG_OABUFFER_MEMORY_SELECT REG_BIT(0)/* 0: PPGTT, 1: GGTT */ #define OAG_OACONTROL XE_REG(0xdaf4)
@@ -67,6 +59,7 @@#define OAG_OA_DEBUG XE_REG(0xdaf8, XE_REG_OPTION_MASKED)#define OAG_OA_DEBUG_DISABLE_MMIO_TRG REG_BIT(14)#define OAG_OA_DEBUG_START_TRIGGER_SCOPE_CONTROL REG_BIT(13) +#define OAG_OA_DEBUG_BUF_SIZE_SELECT REG_BIT(12)#define OAG_OA_DEBUG_DISABLE_START_TRG_2_COUNT_QUAL REG_BIT(8)#define OAG_OA_DEBUG_DISABLE_START_TRG_1_COUNT_QUAL REG_BIT(7)#define OAG_OA_DEBUG_INCLUDE_CLK_RATIO REG_BIT(6)
drivers/gpu/drm/xe/xe_drm_client.c +1 -1
@@ -135,8 +135,8 @@ void xe_drm_client_add_bo(struct xe_drm_client *client,XE_WARN_ON (bo->client);XE_WARN_ON (!list_empty (&bo->client_link)); -spin_lock (&client->bos_lock); bo->client =xe_drm_client_get (client); +spin_lock (&client->bos_lock);list_add_tail (&bo->client_link, &client->bos_list);spin_unlock (&client->bos_lock); }
drivers/gpu/drm/xe/xe_oa.c +71 -21
208 lines not on this page · raw message
drivers/gpu/drm/xe/xe_oa_types.h +4 -1
@@ -15,7 +15,7 @@#include "regs/xe_reg_defs.h" #include "xe_hw_engine_types.h" -#define XE_OA_BUFFER_SIZE SZ_16M +#define DEFAULT_XE_OA_BUFFER_SIZE SZ_16Menum xe_oa_report_header {HDR_32_BIT =0 ,
@@ -218,6 +218,9 @@ struct xe_oa_stream {/** @pollin: Whether there is data available to read */ bool pollin; +/** @wait_num_reports: Number of reports to wait for before signalling pollin */ +int wait_num_reports; +/** @periodic: Whether periodic sampling is currently enabled */ bool periodic;
drivers/gpu/drm/xe/xe_query.c +3 -1
@@ -670,7 +670,9 @@ static int query_oa_units(struct xe_device *xe, du->oa_unit_id = u->oa_unit_id; du->oa_unit_type = u->type; du->oa_timestamp_freq =xe_oa_timestamp_frequency (gt); - du->capabilities =DRM_XE_OA_CAPS_BASE |DRM_XE_OA_CAPS_SYNCS ; + du->capabilities =DRM_XE_OA_CAPS_BASE |DRM_XE_OA_CAPS_SYNCS | +DRM_XE_OA_CAPS_OA_BUFFER_SIZE | +DRM_XE_OA_CAPS_WAIT_NUM_REPORTS ; j =0 ;for_each_hw_engine (hwe, gt, hwe_id) {
drivers/gpu/drm/xe/xe_trace_bo.h +6 -6
@@ -55,8 +55,8 @@ TRACE_EVENT(xe_bo_move,TP_STRUCT__entry (__field (struct xe_bo *,bo )__field (size_t, size) -__field (u32, new_placement) -__field (u32, old_placement) + __string(new_placement_name, xe_mem_type_to_name[new_placement]) + __string(old_placement_name, xe_mem_type_to_name[old_placement]) __string(device_id, __dev_name_bo(bo))__field (bool, move_lacks_source) ),
@@ -64,15 +64,15 @@ TRACE_EVENT(xe_bo_move,TP_fast_assign ( __entry->bo = bo; __entry->size = bo->size; - __entry->new_placement = new_placement; - __entry->old_placement = old_placement; +__assign_str (new_placement_name); +__assign_str (old_placement_name);__assign_str (device_id); __entry->move_lacks_source = move_lacks_source; ),TP_printk ("move_lacks_source:%s, migrate object %p [size %zu] from %s to %s device_id:%s" , __entry->move_lacks_source ?"yes" :"no" , __entry->bo, __entry->size, - xe_mem_type_to_name[__entry->old_placement], - xe_mem_type_to_name[__entry->new_placement],__get_str (device_id)) +__get_str (old_placement_name), +__get_str (new_placement_name),__get_str (device_id)) ); DECLARE_EVENT_CLASS(xe_vma,
drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c +30 -24
78 lines not on this page · raw message
drivers/gpu/drm/xlnx/zynqmp_dp.c +1 -1
@@ -2190,7 +2190,7 @@ static int zynqmp_dp_rate_get(void *data, u64 *val)struct zynqmp_dp *dp = data;mutex_lock (&dp->lock); - *val =drm_dp_bw_code_to_link_rate (dp->test.bw_code) *10000 ; + *val =drm_dp_bw_code_to_link_rate (dp->test.bw_code) *10000ULL ;mutex_unlock (&dp->lock);return 0 ; }
drivers/gpu/host1x/dev.c +2 -0
@@ -619,6 +619,8 @@ static int host1x_probe(struct platform_device *pdev) goto free_contexts; } +mutex_init (&host->intr_mutex); +pm_runtime_enable (&pdev->dev); err =devm_tegra_core_dev_init_opp_table_common (&pdev->dev);
drivers/gpu/host1x/intr.c +0 -2
@@ -104,8 +104,6 @@ int host1x_intr_init(struct host1x *host)unsigned int id;int i, err; -mutex_init (&host->intr_mutex); -for (id =0 ; id <host1x_syncpt_nb_pts (host); ++id) {struct host1x_syncpt *syncpt = &host->syncpt[id];
drivers/hid/hid-corsair-void.c +2 -1
@@ -553,7 +553,7 @@ static void corsair_void_battery_remove_work_handler(struct work_struct *work)static void corsair_void_battery_add_work_handler (struct work_struct *work) {struct corsair_void_drvdata *drvdata; -struct power_supply_config psy_cfg; +struct power_supply_config psy_cfg = {};struct power_supply *new_supply; drvdata = container_of(work, struct corsair_void_drvdata,
@@ -726,6 +726,7 @@ static void corsair_void_remove(struct hid_device *hid_dev)if (drvdata->battery)power_supply_unregister (drvdata->battery); +cancel_delayed_work_sync (&drvdata->delayed_status_work);cancel_delayed_work_sync (&drvdata->delayed_firmware_work);sysfs_remove_group (&hid_dev->dev.kobj, &corsair_void_attr_group); }
drivers/hid/hid-multitouch.c +4 -1
@@ -1679,9 +1679,12 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)break ; } -if (suffix) +if (suffix) { hi->input->name =devm_kasprintf (&hdev->dev,GFP_KERNEL ,"%s %s" , hdev->name, suffix); +if (!hi->input->name) +return -ENOMEM ; + }return 0 ; }
drivers/hid/hid-steam.c +33 -8
89 lines not on this page · raw message
drivers/hid/hid-thrustmaster.c +1 -1
@@ -171,7 +171,7 @@ static void thrustmaster_interrupts(struct hid_device *hdev) b_ep = ep->desc.bEndpointAddress;/* Are the expected endpoints present? */ -u8 ep_addr[1 ] = {b_ep}; +u8 ep_addr[2 ] = {b_ep,0 };if (!usb_check_int_endpoints (usbif, ep_addr)) {hid_err (hdev,"Unexpected non-int endpoint\n" );
drivers/hid/hid-winwing.c +2 -0
@@ -106,6 +106,8 @@ static int winwing_init_led(struct hid_device *hdev,"%s::%s" ,dev_name (&input->dev), info->led_name); +if (!led->cdev.name) +return -ENOMEM ; ret =devm_led_classdev_register (&hdev->dev, &led->cdev);if (ret)
drivers/hv/channel_mgmt.c +46 -15
102 lines not on this page · raw message
drivers/hv/connection.c +2 -2
@@ -34,8 +34,8 @@ struct vmbus_connection vmbus_connection = { .ready_for_suspend_event = COMPLETION_INITIALIZER( vmbus_connection.ready_for_suspend_event), - .ready_for_resume_event = COMPLETION_INITIALIZER( - vmbus_connection.ready_for_resume_event), + .all_offers_delivered_event = COMPLETION_INITIALIZER( + vmbus_connection.all_offers_delivered_event), };EXPORT_SYMBOL_GPL (vmbus_connection);
drivers/hv/hyperv_vmbus.h +3 -11
@@ -287,18 +287,10 @@ struct vmbus_connection {struct completion ready_for_suspend_event;/* -* The number of primary channels that should be "fixed up" -* upon resume: these channels are re-offered upon resume, and some -* fields of the channel offers (i.e. child_relid and connection_id) -* can change, so the old offermsg must be fixed up, before the resume -* callbacks of the VSC drivers start to further touch the channels. +* Completed once the host has offered all boot-time channels. +* Note that some channels may still be under process on a workqueue. */ -atomic_t nr_chan_fixup_on_resume; -/* -* vmbus_bus_resume() waits for "nr_chan_fixup_on_resume" to -* drop to zero. -*/ -struct completion ready_for_resume_event; +struct completion all_offers_delivered_event; };
drivers/hv/vmbus_drv.c +0 -16
@@ -2427,11 +2427,6 @@ static int vmbus_bus_suspend(struct device *dev)if (atomic_read (&vmbus_connection.nr_chan_close_on_suspend) >0 )wait_for_completion (&vmbus_connection.ready_for_suspend_event); -if (atomic_read (&vmbus_connection.nr_chan_fixup_on_resume) !=0 ) { -pr_err ("Can not suspend due to a previous failed resuming\n" ); -return -EBUSY ; - } -mutex_lock (&vmbus_connection.channel_mutex);list_for_each_entry (channel, &vmbus_connection.chn_list, listentry) {
@@ -2456,17 +2451,12 @@ static int vmbus_bus_suspend(struct device *dev)pr_err ("Sub-channel not deleted!\n" );WARN_ON_ONCE (1 ); } - -atomic_inc (&vmbus_connection.nr_chan_fixup_on_resume); }mutex_unlock (&vmbus_connection.channel_mutex);vmbus_initiate_unload (false); -/* Reset the event for the next resume. */ -reinit_completion (&vmbus_connection.ready_for_resume_event); -return 0 ; }
@@ -2502,14 +2492,8 @@ static int vmbus_bus_resume(struct device *dev)if (ret !=0 )return ret; -WARN_ON (atomic_read (&vmbus_connection.nr_chan_fixup_on_resume) ==0 ); -vmbus_request_offers (); -if (wait_for_completion_timeout ( - &vmbus_connection.ready_for_resume_event,secs_to_jiffies (10 )) ==0 ) -pr_err ("Some vmbus device is missing after suspending?\n" ); -/* Reset the event for the next suspend. */ reinit_completion (&vmbus_connection.ready_for_suspend_event);
drivers/i3c/master/Kconfig +11 -0
@@ -57,3 +57,14 @@ config MIPI_I3C_HCI This driver can also be built as a module. If so, the module will be called mipi-i3c-hci. + +config MIPI_I3C_HCI_PCI + tristate "MIPI I3C Host Controller Interface PCI support" + depends on MIPI_I3C_HCI + depends on PCI + help + Support for MIPI I3C Host Controller Interface compatible hardware + on the PCI bus. + + This driver can also be built as a module. If so, the module will be + called mipi-i3c-hci-pci.
drivers/i3c/master/mipi-i3c-hci/Makefile +1 -0
@@ -5,3 +5,4 @@ mipi-i3c-hci-y := core.o ext_caps.o pio.o dma.o \ cmd_v1.o cmd_v2.o \ dat_v1.o dct_v1.o \ hci_quirks.o +obj-$(CONFIG_MIPI_I3C_HCI_PCI) += mipi-i3c-hci-pci.o
drivers/i3c/master/mipi-i3c-hci/dma.c +17 -0
@@ -758,9 +758,26 @@ static bool hci_dma_irq_handler(struct i3c_hci *hci)complete (&rh->op_done);if (status &INTR_TRANSFER_ABORT ) { +u32 ring_status; +dev_notice_ratelimited (&hci->master.dev,"ring %d: Transfer Aborted\n" , i);mipi_i3c_hci_resume (hci); + ring_status =rh_reg_read (RING_STATUS ); +if (!(ring_status &RING_STATUS_RUNNING ) && + status &INTR_TRANSFER_COMPLETION && + status &INTR_TRANSFER_ERR ) { +/* +* Ring stop followed by run is an Intel +* specific required quirk after resuming the +* halted controller. Do it only when the ring +* is not in running state after a transfer +* error. +*/ +rh_reg_write (RING_CONTROL ,RING_CTRL_ENABLE ); +rh_reg_write (RING_CONTROL ,RING_CTRL_ENABLE | +RING_CTRL_RUN_STOP ); + } }if (status &INTR_WARN_INS_STOP_MODE ) dev_warn_ratelimited(&hci->master.dev,
drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c new file +148 -0
148 lines not on this page · raw message
drivers/infiniband/hw/efa/efa_main.c +5 -4
@@ -470,7 +470,6 @@ static void efa_ib_device_remove(struct efa_dev *dev)ibdev_info (&dev->ibdev,"Unregister ib device\n" );ib_unregister_device (&dev->ibdev);efa_destroy_eqs (dev); -efa_com_dev_reset (&dev->edev,EFA_REGS_RESET_NORMAL );efa_release_doorbell_bar (dev); }
@@ -643,12 +642,14 @@ static struct efa_dev *efa_probe_device(struct pci_dev *pdev)return ERR_PTR (err); } -static void efa_remove_device (struct pci_dev *pdev) +static void efa_remove_device (struct pci_dev *pdev, +enum efa_regs_reset_reason_types reset_reason) {struct efa_dev *dev =pci_get_drvdata (pdev);struct efa_com_dev *edev; edev = &dev->edev; +efa_com_dev_reset (edev, reset_reason);efa_com_admin_destroy (edev);efa_free_irq (dev, &dev->admin_irq);efa_disable_msix (dev);
@@ -676,7 +677,7 @@ static int efa_probe(struct pci_dev *pdev, const struct pci_device_id *ent)return 0 ; err_remove_device: -efa_remove_device (pdev); +efa_remove_device (pdev,EFA_REGS_RESET_INIT_ERR );return err; }
@@ -685,7 +686,7 @@ static void efa_remove(struct pci_dev *pdev)struct efa_dev *dev =pci_get_drvdata (pdev);efa_ib_device_remove (dev); -efa_remove_device (pdev); +efa_remove_device (pdev,EFA_REGS_RESET_NORMAL ); }static void efa_shutdown (struct pci_dev *pdev)
drivers/iommu/amd/amd_iommu_types.h +1 -0
@@ -175,6 +175,7 @@#define CONTROL_GAM_EN 25#define CONTROL_GALOG_EN 28#define CONTROL_GAINT_EN 29 +#define CONTROL_EPH_EN 45#define CONTROL_XT_EN 50#define CONTROL_INTCAPXT_EN 51#define CONTROL_IRTCACHEDIS 59
drivers/iommu/amd/init.c +4 -0
@@ -2635,6 +2635,10 @@ static void iommu_init_flags(struct amd_iommu *iommu)/* Set IOTLB invalidation timeout to 1s */ iommu_set_inv_tlb_timeout (iommu,CTRL_INV_TO_1S ); + +/* Enable Enhanced Peripheral Page Request Handling */ +if (check_feature (FEATURE_EPHSUP )) +iommu_feature_enable (iommu,CONTROL_EPH_EN ); }static void iommu_apply_resume_quirks (struct amd_iommu *iommu)
drivers/iommu/intel/prq.c +3 -1
@@ -87,7 +87,9 @@ void intel_iommu_drain_pasid_prq(struct device *dev, u32 pasid)struct page_req_dsc *req; req = &iommu->prq[head /sizeof (*req)]; -if (!req->pasid_present || req->pasid != pasid) { +if (req->rid != sid || + (req->pasid_present && pasid != req->pasid) || + (!req->pasid_present && pasid !=IOMMU_NO_PASID )) { head = (head +sizeof (*req)) &PRQ_RING_MASK ;continue ; }
drivers/iommu/io-pgfault.c +1 -0
@@ -478,6 +478,7 @@ void iopf_queue_remove_device(struct iopf_queue *queue, struct device *dev) ops->page_response (dev, iopf, &resp);list_del_init (&group->pending_node); +iopf_free_group (group); }mutex_unlock (&fault_param->lock);
drivers/irqchip/irq-partition-percpu.c +1 -1
@@ -98,7 +98,7 @@ static void partition_irq_print_chip(struct irq_data *d, struct seq_file *p)struct irq_chip *chip =irq_desc_get_chip (part->chained_desc);struct irq_data *data =irq_desc_get_irq_data (part->chained_desc); -seq_printf (p," %5s-%lu" , chip->name, data->hwirq); +seq_printf (p,"%5s-%lu" , chip->name, data->hwirq); }static struct irq_chip partition_irq_chip = {
drivers/media/dvb-frontends/cxd2841er.c +2 -6
@@ -311,12 +311,8 @@ static int cxd2841er_set_reg_bits(struct cxd2841er_priv *priv,static u32 cxd2841er_calc_iffreq_xtal (enum cxd2841er_xtal xtal,u32 ifhz) { -u64 tmp; - - tmp = (u64 ) ifhz *16777216 ; -do_div (tmp, ((xtal ==SONY_XTAL_24000 ) ?48000000 :41000000 )); - -return (u32 ) tmp; +return div_u64 (ifhz *16777216ull , + (xtal ==SONY_XTAL_24000 ) ?48000000 :41000000 ); }static u32 cxd2841er_calc_iffreq (u32 ifhz)
drivers/media/i2c/ds90ub913.c +21 -4
@@ -8,6 +8,7 @@* Copyright (c) 2023 Tomi Valkeinen <[email protected]> */ +#include <linux/bitfield.h> #include <linux/clk-provider.h> #include <linux/clk.h> #include <linux/delay.h>
@@ -146,6 +147,19 @@ static int ub913_write(const struct ub913_data *priv, u8 reg, u8 val)return ret; } +static int ub913_update_bits (const struct ub913_data *priv,u8 reg,u8 mask, +u8 val) +{ +int ret; + + ret =regmap_update_bits (priv->regmap, reg, mask, val); +if (ret <0 ) +dev_err (&priv->client->dev, +"Cannot update register 0x%02x %d!\n" , reg, ret); + +return ret; +} +/* * GPIO chip */
@@ -733,10 +747,13 @@ static int ub913_hw_init(struct ub913_data *priv)if (ret)return dev_err_probe (dev, ret,"i2c master init failed\n" ); -ub913_read (priv,UB913_REG_GENERAL_CFG , &v); - v &= ~UB913_REG_GENERAL_CFG_PCLK_RISING ; - v |= priv->pclk_polarity_rising ?UB913_REG_GENERAL_CFG_PCLK_RISING :0 ; -ub913_write (priv,UB913_REG_GENERAL_CFG , v); + ret =ub913_update_bits (priv,UB913_REG_GENERAL_CFG , +UB913_REG_GENERAL_CFG_PCLK_RISING , +FIELD_PREP (UB913_REG_GENERAL_CFG_PCLK_RISING , + priv->pclk_polarity_rising)); + +if (ret) +return ret;return 0 ; }
drivers/media/i2c/ds90ub953.c +32 -14
23 lines not on this page · raw message
drivers/media/platform/broadcom/bcm2835-unicam.c +1 -7
Lines of this file are not shown. View the raw message.
drivers/media/test-drivers/vidtv/vidtv_bridge.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/can/ctucanfd/ctucanfd_base.c +6 -4
Lines of this file are not shown. View the raw message.
drivers/net/can/rockchip/rockchip_canfd-core.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/can/usb/etas_es58x/es58x_devlink.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/idpf/idpf_lib.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/idpf/idpf_txrx.c +1 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_main.c +13 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/am65-cpsw-nuss.c +31 -19
50 lines not on this page · raw message
drivers/net/wireless/ath/ath12k/wmi.c +45 -16
61 lines not on this page · raw message
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pcie-mediatek-gen3.c +41 -18
59 lines not on this page · raw message
drivers/pinctrl/pinctrl-cy8c95x0.c +25 -17
42 lines not on this page · raw message
drivers/regulator/core.c +27 -34
61 lines not on this page · raw message
drivers/soc/qcom/llcc-qcom.c +55 -2
57 lines not on this page · raw message
drivers/tty/serial/8250/8250_pci.c +35 -41
76 lines not on this page · raw message
drivers/tty/serial/8250/8250_pci1xxxx.c +59 -1
60 lines not on this page · raw message
drivers/ufs/core/ufshcd.c +67 -60
127 lines not on this page · raw message
drivers/usb/serial/option.c +29 -20
49 lines not on this page · raw message
drivers/vfio/pci/nvgrace-gpu/main.c +73 -22
95 lines not on this page · raw message
drivers/vfio/platform/vfio_platform_common.c +0 -10
Lines of this file are not shown. View the raw message.
fs/ntfs3/frecord.c +38 -33
71 lines not on this page · raw message
fs/ntfs3/record.c +42 -37
79 lines not on this page · raw message
kernel/sched/ext.c +43 -28
71 lines not on this page · raw message
net/batman-adv/bat_v_elp.c +86 -36
122 lines not on this page · raw message
net/ipv6/icmp.c +23 -19
42 lines not on this page · raw message
net/ipv6/ioam6_iptunnel.c +40 -35
75 lines not on this page · raw message
net/ipv6/mcast.c +25 -20
45 lines not on this page · raw message
net/ipv6/rpl_iptunnel.c +34 -25
59 lines not on this page · raw message
net/ipv6/seg6_iptunnel.c +61 -37
98 lines not on this page · raw message
tools/sched_ext/include/scx/common.bpf.h +10 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/gpio/gpio-sim.sh +25 -6
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.