Skip to contentSkip to conversation

Linux 6.6.79

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Feb 21, 2025 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.6.79 kernel.

All users of the 6.6 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/arch/arm64/elf_hwcaps.rst                                 |   36 
 Documentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml |    2 
 Makefile                                                                |   15 
 arch/alpha/include/uapi/asm/ptrace.h                                    |    2 
 arch/alpha/kernel/asm-offsets.c                                         |    2 
 arch/alpha/kernel/entry.S                                               |   24 
 arch/alpha/kernel/traps.c                                               |    2 
 arch/alpha/mm/fault.c                                                   |    4 
 arch/arm64/kernel/cacheinfo.c                                           |   12 
 arch/arm64/kernel/cpufeature.c                                          |   38 
 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/lib/csum.c                                               |    2 
 arch/x86/events/intel/core.c                                            |    5 
 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/tlbflush.h                                         |    1 
 arch/x86/kernel/i8253.c                                                 |   11 
 arch/x86/kernel/static_call.c                                           |    1 
 arch/x86/kvm/hyperv.c                                                   |    6 
 arch/x86/kvm/mmu/mmu.c                                                  |    2 
 arch/x86/kvm/svm/nested.c                                               |   10 
 arch/x86/mm/tlb.c                                                       |   35 
 arch/x86/xen/mmu_pv.c                                                   |   75 -
 block/partitions/mac.c                                                  |   18 
 drivers/acpi/x86/utils.c                                                |   13 
 drivers/base/regmap/regmap-irq.c                                        |    2 
 drivers/clocksource/i8253.c                                             |   13 
 drivers/firmware/efi/efi.c                                              |    6 
 drivers/firmware/efi/libstub/randomalloc.c                              |    3 
 drivers/firmware/efi/libstub/relocate.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/display/dc/dcn20/dcn20_resource.c                   |    3 
 drivers/gpu/drm/amd/display/dc/dcn201/dcn201_resource.c                 |    4 
 drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c                   |    3 
 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c                               |    3 
 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c                           |    4 
 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/tidss/tidss_dispc.c                                     |   22 
 drivers/gpu/drm/v3d/v3d_perfmon.c                                       |    5 
 drivers/hid/hid-multitouch.c                                            |    5 
 drivers/hid/hid-steam.c                                                 |  740 +++++++---
 drivers/hid/hid-thrustmaster.c                                          |    2 
 drivers/infiniband/hw/efa/efa_main.c                                    |    9 
 drivers/md/md-bitmap.c                                                  |   75 -
 drivers/md/md-bitmap.h                                                  |    6 
 drivers/md/md.c                                                         |   26 
 drivers/md/md.h                                                         |    5 
 drivers/md/raid1.c                                                      |   35 
 drivers/md/raid1.h                                                      |    1 
 drivers/md/raid10.c                                                     |   26 
 drivers/md/raid10.h                                                     |    1 
 drivers/md/raid5-cache.c                                                |    4 
 drivers/md/raid5.c                                                      |  174 +-
 drivers/md/raid5.h                                                      |    4 
 drivers/media/dvb-frontends/cxd2841er.c                                 |    8 
 drivers/media/i2c/ds90ub913.c                                           |   25 
 drivers/media/i2c/ds90ub953.c                                           |   46 
 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/net/can/c_can/c_can_platform.c                                  |    5 
 drivers/net/can/ctucanfd/ctucanfd_base.c                                |   10 
 drivers/net/can/usb/etas_es58x/es58x_devlink.c                          |    6 
 drivers/net/ethernet/intel/igc/igc_main.c                               |    1 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c                  |    4 
 drivers/net/netdevsim/ipsec.c                                           |   12 
 drivers/net/team/team.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/pci/quirks.c                                                    |   12 
 drivers/pci/switch/switchtec.c                                          |   26 
 drivers/pinctrl/pinctrl-cy8c95x0.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_port.c                                     |    9 
 drivers/tty/serial/serial_port.c                                        |    5 
 drivers/ufs/core/ufs_bsg.c                                              |    1 
 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/renesas_usb3.c                                   |    2 
 drivers/usb/host/pci-quirks.c                                           |    9 
 drivers/usb/roles/class.c                                               |    5 
 drivers/usb/serial/option.c                                             |   49 
 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/file.c                                                         |    4 
 fs/nfs/sysfs.c                                                          |    6 
 fs/nfsd/nfs2acl.c                                                       |    2 
 fs/nfsd/nfs3acl.c                                                       |    2 
 fs/nfsd/nfs4callback.c                                                  |    7 
 fs/orangefs/orangefs-debugfs.c                                          |    4 
 include/linux/blk-mq.h                                                  |   18 
 include/linux/cgroup-defs.h                                             |    6 
 include/linux/efi.h                                                     |    1 
 include/linux/i8253.h                                                   |    1 
 include/linux/netdevice.h                                               |    6 
 include/linux/sched/task.h                                              |    1 
 include/net/l3mdev.h                                                    |    2 
 include/net/net_namespace.h                                             |   15 
 include/net/route.h                                                     |    9 
 io_uring/kbuf.c                                                         |   15 
 kernel/cgroup/cgroup.c                                                  |   20 
 kernel/cgroup/rstat.c                                                   |    1 
 kernel/time/clocksource.c                                               |    9 
 mm/gup.c                                                                |   14 
 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/types.h                                                  |    3 
 net/can/j1939/socket.c                                                  |    4 
 net/can/j1939/transport.c                                               |    5 
 net/core/flow_dissector.c                                               |   21 
 net/core/neighbour.c                                                    |   11 
 net/ipv4/arp.c                                                          |    4 
 net/ipv4/devinet.c                                                      |    3 
 net/ipv4/icmp.c                                                         |   31 
 net/ipv4/route.c                                                        |   39 
 net/ipv6/icmp.c                                                         |   42 
 net/ipv6/mcast.c                                                        |   45 
 net/ipv6/ndisc.c                                                        |   24 
 net/ipv6/route.c                                                        |    7 
 net/openvswitch/datapath.c                                              |   12 
 net/vmw_vsock/af_vsock.c                                                |   12 
 sound/soc/intel/boards/bytcr_rt5640.c                                   |   17 
 tools/testing/selftests/gpio/gpio-sim.sh                                |   31 
 tools/testing/selftests/net/pmtu.sh                                     |  112 +
 tools/testing/selftests/net/rtnetlink.sh                                |    4 
 tools/tracing/rtla/src/timerlat_hist.c                                  |    8 
 tools/tracing/rtla/src/timerlat_top.c                                   |    8 
 151 files changed, 2106 insertions(+), 844 deletions(-)

Aaro Koskinen (1):
fbdev: omap: use threaded IRQ for LCD DMA

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

Alex Hung (1):
drm/amd/display: Pass non-null to dcn20_validate_apply_pipe_split_flags

Alexander Hölzl (1):
can: j1939: j1939_sk_send_loop(): fix unable to send messages with data length zero

Andrew Cooper (1):
x86/static-call: Remove early_boot_irqs_disabled check to fix Xen PVH dom0

Andy Shevchenko (4):
pinctrl: cy8c95x0: Respect IRQ trigger settings from firmware
gpiolib: Fix crash on error in gpiochip_get_ngpios()
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

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

Benjamin Marzinski (1):
md/raid5: recheck if reshape has finished with device_lock held

Charles Han (1):
HID: multitouch: Add NULL check in mt_input_configured

Chester A. Unal (1):
USB: serial: option: add MeiG Smart SLM828

Christian Gmeiner (1):
drm/v3d: Stop active perfmon if it is being destroyed

Dai Ngo (1):
NFSD: fix hang in nfsd4_shutdown_callback

Dan Carpenter (2):
HID: hid-steam: remove pointless error message
HID: hid-steam: Fix cleanup in probe()

David Woodhouse (1):
x86/i8253: Disable PIT timer 0 when not in use

Devarsh Thakkar (1):
drm/tidss: Clear the interrupt status for interrupts being disabled

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 (21):
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()
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 (1):
btrfs: fix hole expansion when writing at an offset beyond EOF

Greg Kroah-Hartman (2):
Revert "vfio/platform: check the bounds of read/write syscalls" Linux 6.6.79

Guixin Liu (1):
scsi: ufs: bsg: Set bsg_queue to NULL after removal

Guo Ren (1):
usb: gadget: udc: renesas_usb3: Fix compiler warning

Hangbin Liu (2):
netdevsim: print human readable IP address
selftests: rtnetlink: update netdevsim ipsec output format

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

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: align stack for page fault and user unaligned trap handlers
alpha: replace hardcoded stack offsets with autogenerated ones

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

Jens Axboe (1):
block: cleanup and fix batch completion adding conditions

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()

Jiri Pirko (1):
net: treat possible_net_t net pointer as an RCU one and add read_pnet_rcu()

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

Juergen Gross (2):
xen/swiotlb: relax alignment requirements x86/xen: allow larger contiguous memory regions in PV guests

Kartik Rajput (1):
soc/tegra: fuse: Update Tegra234 nvmem keepout list

Koichiro Den (1):
selftests: gpio: gpio-sim: Fix missing chip disablements

Krzysztof Karas (1):
drm/i915/selftests: avoid using uninitialized context

Krzysztof Kozlowski (1):
can: c_can: fix unbalanced runtime PM disable in error path

Kunihiko Hayashi (1):
spi: sn-f-ospi: Fix division by zero

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

Li Zetao (1):
neighbour: delete redundant judgment statements

Maksym Planeta (1):
Grab mm lock before grabbing pt lock

Marc Zyngier (1):
arm64: Filter out SVE hwcaps when FEAT_SVE isn't implemented

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 (1):
gpiolib: acpi: Add a quirk for Acer Nitro ANV14

Masahiro Yamada (1):
tools: fix annoying "mkdir -p ..." logs when building tools in parallel

Mathias Nyman (1):
USB: Add USB_QUIRK_NO_LPM quirk for sony xperia xz1 smartphone

Max Maisel (1):
HID: hid-steam: Add Deck IMU support

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

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

Nathan Chancellor (1):
arm64: Handle .ARM.attributes section in linker scripts

Pavel Begunkov (1):
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

Rik van Riel (1):
x86/mm/tlb: Only trim the mm_cpumask once a second

Sean Christopherson (3):
KVM: x86: Reject Hyper-V's SEND_IPI hypercalls if local APIC isn't in-kernel
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

Song Yoong Siang (1):
igc: Set buffer type for empty frames in igc_init_empty_frame

Srinivasan Shanmugam (1):
drm/amd/display: Add null check for head_pipe in dcn201_acquire_free_pipe_for_layer

Stefan Eichenberger (1):
usb: core: fix pipe creation for get_bMaxPacketSize0

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

Thomas Weißschuh (1):
kbuild: userprogs: fix bitsize and target detection on clang

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 (1):
regulator: qcom_smd: Add l2, l5 sub-node to mp5496 regulator

Vicki Pfau (8):
HID: hid-steam: Avoid overwriting smoothing parameter
HID: hid-steam: Disable watchdog instead of using a heartbeat
HID: hid-steam: Clean up locking
HID: hid-steam: Update list of identifiers from SDL
HID: hid-steam: Add gamepad-only mode switched to by holding options
HID: hid-steam: Make sure rumble work is canceled on removal
HID: hid-steam: Move hidraw input (un)registering to work
HID: hid-steam: Don't use cancel_delayed_work_sync in IRQ context

Vincent Mailhol (1):

      can: etas_es58x: fix potential NULL pointer dereference on udev->serial

Vladimir Vdovin (1):
net: ipv4: Cache pmtu for all packet paths if multipath enabled

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()

Yu Kuai (5):

      md/md-bitmap: factor behind write counters out from bitmap_{start/end}write()
      md/md-bitmap: remove the last parameter for bimtap_ops->endwrite()
      md: add a new callback pers->bitmap_sector()
      md/raid5: implement pers->bitmap_sector()
      md/md-bitmap: move bitmap_{start, end}write to md upper layer

Yuli Wang (1):
LoongArch: csum: Fix OoB access in IP checksum code for negative lengths

Zhaoyang Huang (1):
mm: gup: fix infinite loop within __get_longterm_locked

Zichen Xie (1):
NFS: Fix potential buffer overflowin nfs_sysfs_link_rpc_client()

author maintainer
#1 lore raw
Documentation/arch/arm64/elf_hwcaps.rst +24 -12
index 76ff9d7398fd..f88a24d621dd 100644
@@ -174,22 +174,28 @@ HWCAP2_DCPODP
     Functionality implied by ID_AA64ISAR1_EL1.DPB == 0b0010.
 
 HWCAP2_SVE2
-    Functionality implied by ID_AA64ZFR0_EL1.SVEVer == 0b0001.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.SVEver == 0b0001.
 
 HWCAP2_SVEAES
-    Functionality implied by ID_AA64ZFR0_EL1.AES == 0b0001.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.AES == 0b0001.
 
 HWCAP2_SVEPMULL
-    Functionality implied by ID_AA64ZFR0_EL1.AES == 0b0010.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.AES == 0b0010.
 
 HWCAP2_SVEBITPERM
-    Functionality implied by ID_AA64ZFR0_EL1.BitPerm == 0b0001.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.BitPerm == 0b0001.
 
 HWCAP2_SVESHA3
-    Functionality implied by ID_AA64ZFR0_EL1.SHA3 == 0b0001.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.SHA3 == 0b0001.
 
 HWCAP2_SVESM4
-    Functionality implied by ID_AA64ZFR0_EL1.SM4 == 0b0001.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.SM4 == 0b0001.
 
 HWCAP2_FLAGM2
     Functionality implied by ID_AA64ISAR0_EL1.TS == 0b0010.
@@ -198,16 +204,20 @@ HWCAP2_FRINT
     Functionality implied by ID_AA64ISAR1_EL1.FRINTTS == 0b0001.
 
 HWCAP2_SVEI8MM
-    Functionality implied by ID_AA64ZFR0_EL1.I8MM == 0b0001.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.I8MM == 0b0001.
 
 HWCAP2_SVEF32MM
-    Functionality implied by ID_AA64ZFR0_EL1.F32MM == 0b0001.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.F32MM == 0b0001.
 
 HWCAP2_SVEF64MM
-    Functionality implied by ID_AA64ZFR0_EL1.F64MM == 0b0001.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.F64MM == 0b0001.
 
 HWCAP2_SVEBF16
-    Functionality implied by ID_AA64ZFR0_EL1.BF16 == 0b0001.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.BF16 == 0b0001.
 
 HWCAP2_I8MM
     Functionality implied by ID_AA64ISAR1_EL1.I8MM == 0b0001.
@@ -273,7 +283,8 @@ HWCAP2_EBF16
     Functionality implied by ID_AA64ISAR1_EL1.BF16 == 0b0010.
 
 HWCAP2_SVE_EBF16
-    Functionality implied by ID_AA64ZFR0_EL1.BF16 == 0b0010.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.BF16 == 0b0010.
 
 HWCAP2_CSSC
     Functionality implied by ID_AA64ISAR2_EL1.CSSC == 0b0001.
@@ -282,7 +293,8 @@ HWCAP2_RPRFM
     Functionality implied by ID_AA64ISAR2_EL1.RPRFM == 0b0001.
 
 HWCAP2_SVE2P1
-    Functionality implied by ID_AA64ZFR0_EL1.SVEver == 0b0010.
+    Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001 and
+    ID_AA64ZFR0_EL1.SVEver == 0b0010.
 
 HWCAP2_SME2
     Functionality implied by ID_AA64SMFR0_EL1.SMEver == 0b0001.
Documentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml +1 -1
index 9ea8ac0786ac..a72175a0910b 100644
@@ -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
Makefile +5 -10
index 1d777c3eb7fb..de16ab068614 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 6
-SUBLEVEL = 78
+SUBLEVEL = 79
 EXTRAVERSION =
 NAME = Pinguïn Aangedreven
 
@@ -1054,8 +1054,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)
@@ -1348,18 +1348,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
index 5ca45934fcbb..72ed913a910f 100644
@@ -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 +2 -0
index b121294bee26..11c35cf45b46 100644
@@ -34,7 +34,9 @@ void foo(void)
         DEFINE(CRED_EGID, offsetof(struct cred, egid));
         BLANK();
 
+	DEFINE(SP_OFF, offsetof(struct pt_regs, ps));
 	DEFINE(SIZEOF_PT_REGS, sizeof(struct pt_regs));
+	DEFINE(SWITCH_STACK_SIZE, sizeof(struct switch_stack));
 	DEFINE(PT_PTRACED, PT_PTRACED);
 	DEFINE(CLONE_VM, CLONE_VM);
 	DEFINE(CLONE_UNTRACED, CLONE_UNTRACED);
arch/alpha/kernel/entry.S +10 -14
index eb51f93a70c8..602f701a1c39 100644
@@ -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
index d9a67b370e04..de72bd837c5a 100644
@@ -707,7 +707,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
index 8c9850437e67..a9816bbc9f34 100644
@@ -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/kernel/cacheinfo.c +7 -5
index d9c9218fa1fd..309942b06c5b 100644
@@ -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/cpufeature.c +26 -12
index 7e9660455900..82778258855d 100644
@@ -2762,6 +2762,13 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
 		.matches = match,						\
 	}
 
+#define HWCAP_CAP_MATCH_ID(match, reg, field, min_value, cap_type, cap)		\
+	{									\
+		__HWCAP_CAP(#cap, cap_type, cap)				\
+		HWCAP_CPUID_MATCH(reg, field, min_value) 			\
+		.matches = match,						\
+	}
+
 #ifdef CONFIG_ARM64_PTR_AUTH
 static const struct arm64_cpu_capabilities ptr_auth_hwcap_addr_matches[] = {
 	{
@@ -2790,6 +2797,13 @@ static const struct arm64_cpu_capabilities ptr_auth_hwcap_gen_matches[] = {
 };
 #endif
 
+#ifdef CONFIG_ARM64_SVE
+static bool has_sve_feature(const struct arm64_cpu_capabilities *cap, int scope)
+{
+	return system_supports_sve() && has_user_cpuid_feature(cap, scope);
+}
+#endif
+
 static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = {
 	HWCAP_CAP(ID_AA64ISAR0_EL1, AES, PMULL, CAP_HWCAP, KERNEL_HWCAP_PMULL),
 	HWCAP_CAP(ID_AA64ISAR0_EL1, AES, AES, CAP_HWCAP, KERNEL_HWCAP_AES),
@@ -2827,18 +2841,18 @@ static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = {
 	HWCAP_CAP(ID_AA64MMFR2_EL1, AT, IMP, CAP_HWCAP, KERNEL_HWCAP_USCAT),
 #ifdef CONFIG_ARM64_SVE
 	HWCAP_CAP(ID_AA64PFR0_EL1, SVE, IMP, CAP_HWCAP, KERNEL_HWCAP_SVE),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, SVEver, SVE2p1, CAP_HWCAP, KERNEL_HWCAP_SVE2P1),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, SVEver, SVE2, CAP_HWCAP, KERNEL_HWCAP_SVE2),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, AES, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEAES),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, AES, PMULL128, CAP_HWCAP, KERNEL_HWCAP_SVEPMULL),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, BitPerm, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEBITPERM),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, BF16, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEBF16),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, BF16, EBF16, CAP_HWCAP, KERNEL_HWCAP_SVE_EBF16),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, SHA3, IMP, CAP_HWCAP, KERNEL_HWCAP_SVESHA3),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, SM4, IMP, CAP_HWCAP, KERNEL_HWCAP_SVESM4),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, I8MM, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEI8MM),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, F32MM, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEF32MM),
-	HWCAP_CAP(ID_AA64ZFR0_EL1, F64MM, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEF64MM),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SVEver, SVE2p1, CAP_HWCAP, KERNEL_HWCAP_SVE2P1),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SVEver, SVE2, CAP_HWCAP, KERNEL_HWCAP_SVE2),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, AES, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEAES),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, AES, PMULL128, CAP_HWCAP, KERNEL_HWCAP_SVEPMULL),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, BitPerm, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEBITPERM),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, BF16, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEBF16),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, BF16, EBF16, CAP_HWCAP, KERNEL_HWCAP_SVE_EBF16),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SHA3, IMP, CAP_HWCAP, KERNEL_HWCAP_SVESHA3),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, SM4, IMP, CAP_HWCAP, KERNEL_HWCAP_SVESM4),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, I8MM, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEI8MM),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, F32MM, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEF32MM),
+	HWCAP_CAP_MATCH_ID(has_sve_feature, ID_AA64ZFR0_EL1, F64MM, IMP, CAP_HWCAP, KERNEL_HWCAP_SVEF64MM),
 #endif
 	HWCAP_CAP(ID_AA64PFR1_EL1, SSBS, SSBS2, CAP_HWCAP, KERNEL_HWCAP_SSBS),
 #ifdef CONFIG_ARM64_BTI
arch/arm64/kernel/vdso/vdso.lds.S +1 -0
index 45354f2ddf70..2e126ab79ecd 100644
@@ -38,6 +38,7 @@ SECTIONS
 	 */
 	/DISCARD/	: {
 		*(.note.GNU-stack .note.gnu.property)
+		*(.ARM.attributes)
 	}
 	.note		: { *(.note.*) }		:text	:note
 
arch/arm64/kernel/vmlinux.lds.S +1 -0
index a553dae9a0d4..d4353741f331 100644
@@ -162,6 +162,7 @@ SECTIONS
 	/DISCARD/ : {
 		*(.interp .dynamic)
 		*(.dynsym .dynstr .hash .gnu.hash)
+		*(.ARM.attributes)
 	}
 
 	. = KIMAGE_VADDR;
arch/loongarch/kernel/genex.S +15 -13
index 2bb3aa2dcfcb..e75c2dbd5f2c 100644
@@ -18,27 +18,29 @@
 
 	.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)
 
 SYM_CODE_START(handle_vint)
 	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
index 0b5dd2faeb90..54b247d8cdb6 100644
@@ -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
index 1ef8c6383535..de8fa5a8a825 100644
@@ -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/lib/csum.c +1 -1
index a5e84b403c3b..df309ae4045d 100644
@@ -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/x86/events/intel/core.c +4 -1
index 37c8badd2701..df286789c94f 100644
@@ -4715,8 +4715,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;
arch/x86/include/asm/mmu.h +2 -0
index 0da5c227f490..53763cf19277 100644
@@ -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
index 8dac45a2c7fc..f5afd956d5e5 100644
@@ -145,6 +145,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
index 24b7bd255e98..623bb48774d4 100644
@@ -358,7 +358,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/tlbflush.h +1 -0
index 25726893c6f4..5d61adc6e892 100644
@@ -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/i8253.c +9 -2
index 2b7999a1a50a..80e262bb627f 100644
@@ -8,6 +8,7 @@
 #include <linux/timex.h>
 #include <linux/i8253.h>
 
+#include <asm/hypervisor.h>
 #include <asm/apic.h>
 #include <asm/hpet.h>
 #include <asm/time.h>
@@ -39,9 +40,15 @@ static bool __init use_pit(void)
 
 bool __init pit_timer_init(void)
 {
-	if (!use_pit())
+	if (!use_pit()) {
+		/*
+		 * Don't just ignore the PIT. Ensure it's stopped, because
+		 * VMMs otherwise steal CPU time just to pointlessly waggle
+		 * the (masked) IRQ.
+		 */
+		clockevent_i8253_disable();
 		return false;
-
+	}
 	clockevent_i8253_init(true);
 	global_clock_event = &i8253_clockevent;
 	return true;
arch/x86/kernel/static_call.c +0 -1
index e332d835d658..07961b362e2a 100644
@@ -175,7 +175,6 @@ EXPORT_SYMBOL_GPL(arch_static_call_transform);
 noinstr void __static_call_update_early(void *tramp, void *func)
 {
 	BUG_ON(system_state != SYSTEM_BOOTING);
-	BUG_ON(!early_boot_irqs_disabled);
 	BUG_ON(static_call_initialized);
 	__text_gen_insn(tramp, JMP32_INSN_OPCODE, tramp, func, JMP32_INSN_SIZE);
 	sync_core();
arch/x86/kvm/hyperv.c +5 -1
index 238afd7335e4..bd3fbd5be5da 100644
@@ -2175,6 +2175,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,
@@ -2801,7 +2804,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
index ff85526a9d48..04b9b919235e 100644
@@ -5289,7 +5289,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
index acf22bd99efc..e3f3e30fc89c 100644
@@ -644,6 +644,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.
@@ -760,11 +765,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/mm/tlb.c +32 -3
index 64f594826a28..df1794a5e38a 100644
@@ -898,9 +898,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);
@@ -934,7 +961,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);
 }
 
@@ -985,6 +1012,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;
 }
@@ -1027,6 +1055,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/xen/mmu_pv.c +66 -9

148 lines not on this page · raw message

block/partitions/mac.c +15 -3
index 7b521df00a39..6415213cd184 100644
@@ -51,13 +51,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, &sect);
 	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);
@@ -110,8 +122,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/x86/utils.c +13 -0
index fdfc88e09986..e894fdf6d553 100644
@@ -400,6 +400,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
index dceab5d013de..d99c9fb666c2 100644
@@ -894,6 +894,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) {
@@ -969,6 +970,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/clocksource/i8253.c +9 -4
index d4350bb10b83..cb215e6f2e83 100644
@@ -108,11 +108,8 @@ int __init clocksource_i8253_init(void)
 #endif
 
 #ifdef CONFIG_CLKEVT_I8253
-static int pit_shutdown(struct clock_event_device *evt)
+void clockevent_i8253_disable(void)
 {
-	if (!clockevent_state_oneshot(evt) && !clockevent_state_periodic(evt))
-		return 0;
-
 	raw_spin_lock(&i8253_lock);
 
 	outb_p(0x30, PIT_MODE);
@@ -123,6 +120,14 @@ static int pit_shutdown(struct clock_event_device *evt)
 	}
 
 	raw_spin_unlock(&i8253_lock);
+}
+
+static int pit_shutdown(struct clock_event_device *evt)
+{
+	if (!clockevent_state_oneshot(evt) && !clockevent_state_periodic(evt))
+		return 0;
+
+	clockevent_i8253_disable();
 	return 0;
 }
 
drivers/firmware/efi/efi.c +4 -2
index 2c1095dcc2f2..1ab161e00c86 100644
@@ -908,13 +908,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
index c41e7b2091cd..8ad3efb9b1ff 100644
@@ -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
index bf6fbd5d22a1..713ee2de02cf 100644
@@ -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/gpio/gpio-bcm-kona.c +58 -13

126 lines not on this page · raw message

drivers/gpio/gpio-stmpe.c +12 -3
index 27cc4da53565..2731e97f2812 100644
@@ -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
index b366b4ca4c40..8ddd5e8341a0 100644
@@ -1706,6 +1706,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
index 5c0016c77d2a..efb592b6f6aa 100644
@@ -723,13 +723,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
index a4f9015345cc..6a24e8ceb944 100644
@@ -3450,9 +3450,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/display/dc/dcn20/dcn20_resource.c +2 -1
index d587f807dfd7..294609557b73 100644
@@ -2026,6 +2026,7 @@ bool dcn20_fast_validate_bw(
 {
 	bool out = false;
 	int split[MAX_PIPES] = { 0 };
+	bool merge[MAX_PIPES] = { false };
 	int pipe_cnt, i, pipe_idx, vlevel;
 
 	ASSERT(pipes);
@@ -2050,7 +2051,7 @@ bool dcn20_fast_validate_bw(
 	if (vlevel > context->bw_ctx.dml.soc.num_states)
 		goto validate_fail;
 
-	vlevel = dcn20_validate_apply_pipe_split_flags(dc, context, vlevel, split, NULL);
+	vlevel = dcn20_validate_apply_pipe_split_flags(dc, context, vlevel, split, merge);
 
 	/*initialize pipe_just_split_from to invalid idx*/
 	for (i = 0; i < MAX_PIPES; i++)
drivers/gpu/drm/amd/display/dc/dcn201/dcn201_resource.c +3 -1
index 2dc4d2c1410b..8efe3f32a0e7 100644
@@ -1002,8 +1002,10 @@ static struct pipe_ctx *dcn201_acquire_free_pipe_for_layer(
 	struct pipe_ctx *head_pipe = resource_get_otg_master_for_stream(res_ctx, opp_head_pipe->stream);
 	struct pipe_ctx *idle_pipe = resource_find_free_secondary_pipe_legacy(res_ctx, pool, head_pipe);
 
-	if (!head_pipe)
+	if (!head_pipe) {
 		ASSERT(0);
+		return NULL;
+	}
 
 	if (!idle_pipe)
 		return NULL;
drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c +2 -1
index 8dffa5b6426e..24105a5b9f2a 100644
@@ -800,6 +800,7 @@ bool dcn21_fast_validate_bw(struct dc *dc,
 {
 	bool out = false;
 	int split[MAX_PIPES] = { 0 };
+	bool merge[MAX_PIPES] = { false };
 	int pipe_cnt, i, pipe_idx, vlevel;
 
 	ASSERT(pipes);
@@ -842,7 +843,7 @@ bool dcn21_fast_validate_bw(struct dc *dc,
 			goto validate_fail;
 	}
 
-	vlevel = dcn20_validate_apply_pipe_split_flags(dc, context, vlevel, split, NULL);
+	vlevel = dcn20_validate_apply_pipe_split_flags(dc, context, vlevel, split, merge);
 
 	for (i = 0, pipe_idx = 0; i < dc->res_pool->pipe_count; i++) {
 		struct pipe_ctx *pipe = &context->res_ctx.pipe_ctx[i];
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c +2 -1
index 4d17b6958397..2997aeed6340 100644
@@ -517,7 +517,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/i915/selftests/i915_gem_gtt.c +2 -2
index 5c397a2df70e..5d27e1c733c5 100644
@@ -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/renesas/rcar-du/rcar_mipi_dsi.c +1 -1
index 2dba7c5ffd2c..92f4261305bd 100644
@@ -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
index f8114d11f2d1..a6b276f1d6ee 100644
@@ -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/tidss/tidss_dispc.c +12 -10
index 98efbaf3b0c2..ee3531bbccd7 100644
@@ -646,7 +646,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);
@@ -654,6 +654,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);
 }
@@ -726,24 +729,20 @@ static
 void 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);
@@ -789,7 +788,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) {
@@ -814,6 +813,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);
 }
drivers/gpu/drm/v3d/v3d_perfmon.c +5 -0
index 141b8abf0862..e56b5935f2f1 100644
@@ -179,6 +179,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);
@@ -188,6 +189,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/hid/hid-multitouch.c +4 -1
index 5ad871a7d1a4..6386043aab0b 100644
@@ -1668,9 +1668,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 +569 -171

1,021 lines not on this page · raw message

drivers/hid/hid-thrustmaster.c +1 -1
index 6c3e758bbb09..3b81468a1df2 100644
@@ -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/infiniband/hw/efa/efa_main.c +5 -4
index 15ee92081118..924940ca9de0 100644
@@ -452,7 +452,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);
 }
 
@@ -623,12 +622,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);
@@ -656,7 +657,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;
 }
 
@@ -665,7 +666,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 struct pci_driver efa_pci_driver = {
drivers/md/md-bitmap.c +45 -30

115 lines not on this page · raw message

drivers/md/md-bitmap.h +4 -2
index bb9eb418780a..8b89e260a93b 100644
@@ -253,9 +253,11 @@ void md_bitmap_dirty_bits(struct bitmap *bitmap, unsigned long s, unsigned long
 
 /* these are exported */
 int md_bitmap_startwrite(struct bitmap *bitmap, sector_t offset,
-			 unsigned long sectors, int behind);
+			 unsigned long sectors);
 void md_bitmap_endwrite(struct bitmap *bitmap, sector_t offset,
-			unsigned long sectors, int success, int behind);
+			unsigned long sectors);
+void md_bitmap_start_behind_write(struct mddev *mddev);
+void md_bitmap_end_behind_write(struct mddev *mddev);
 int md_bitmap_start_sync(struct bitmap *bitmap, sector_t offset, sector_t *blocks, int degraded);
 void md_bitmap_end_sync(struct bitmap *bitmap, sector_t offset, sector_t *blocks, int aborted);
 void md_bitmap_close_sync(struct bitmap *bitmap);
drivers/md/md.c +26 -0
index d1f6770c5cc0..9bc19a5a4119 100644
@@ -8713,12 +8713,32 @@ void md_submit_discard_bio(struct mddev *mddev, struct md_rdev *rdev,
 }
 EXPORT_SYMBOL_GPL(md_submit_discard_bio);
 
+static void md_bitmap_start(struct mddev *mddev,
+			    struct md_io_clone *md_io_clone)
+{
+	if (mddev->pers->bitmap_sector)
+		mddev->pers->bitmap_sector(mddev, &md_io_clone->offset,
+					   &md_io_clone->sectors);
+
+	md_bitmap_startwrite(mddev->bitmap, md_io_clone->offset,
+			     md_io_clone->sectors);
+}
+
+static void md_bitmap_end(struct mddev *mddev, struct md_io_clone *md_io_clone)
+{
+	md_bitmap_endwrite(mddev->bitmap, md_io_clone->offset,
+			   md_io_clone->sectors);
+}
+
 static void md_end_clone_io(struct bio *bio)
 {
 	struct md_io_clone *md_io_clone = bio->bi_private;
 	struct bio *orig_bio = md_io_clone->orig_bio;
 	struct mddev *mddev = md_io_clone->mddev;
 
+	if (bio_data_dir(orig_bio) == WRITE && mddev->bitmap)
+		md_bitmap_end(mddev, md_io_clone);
+
 	if (bio->bi_status && !orig_bio->bi_status)
 		orig_bio->bi_status = bio->bi_status;
 
@@ -8743,6 +8763,12 @@ static void md_clone_bio(struct mddev *mddev, struct bio **bio)
 	if (blk_queue_io_stat(bdev->bd_disk->queue))
 		md_io_clone->start_time = bio_start_io_acct(*bio);
 
+	if (bio_data_dir(*bio) == WRITE && mddev->bitmap) {
+		md_io_clone->offset = (*bio)->bi_iter.bi_sector;
+		md_io_clone->sectors = bio_sectors(*bio);
+		md_bitmap_start(mddev, md_io_clone);
+	}
+
 	clone->bi_end_io = md_end_clone_io;
 	clone->bi_private = md_io_clone;
 	*bio = clone;
drivers/md/md.h +5 -0
index 7c9c13abd7ca..f29fa8650cd0 100644
@@ -661,6 +661,9 @@ struct md_personality
 	void *(*takeover) (struct mddev *mddev);
 	/* Changes the consistency policy of an active array. */
 	int (*change_consistency_policy)(struct mddev *mddev, const char *buf);
+	/* convert io ranges from array to bitmap */
+	void (*bitmap_sector)(struct mddev *mddev, sector_t *offset,
+			      unsigned long *sectors);
 };
 
 struct md_sysfs_entry {
@@ -743,6 +746,8 @@ struct md_io_clone {
 	struct mddev	*mddev;
 	struct bio	*orig_bio;
 	unsigned long	start_time;
+	sector_t	offset;
+	unsigned long	sectors;
 	struct bio	bio_clone;
 };
 
drivers/md/raid1.c +6 -29
index cc02e7ec72c0..65309da1dca3 100644
@@ -419,11 +419,8 @@ static void close_write(struct r1bio *r1_bio)
 		bio_put(r1_bio->behind_master_bio);
 		r1_bio->behind_master_bio = NULL;
 	}
-	/* clear the bitmap if all writes complete successfully */
-	md_bitmap_endwrite(r1_bio->mddev->bitmap, r1_bio->sector,
-			   r1_bio->sectors,
-			   !test_bit(R1BIO_Degraded, &r1_bio->state),
-			   test_bit(R1BIO_BehindIO, &r1_bio->state));
+	if (test_bit(R1BIO_BehindIO, &r1_bio->state))
+		md_bitmap_end_behind_write(r1_bio->mddev);
 	md_write_end(r1_bio->mddev);
 }
 
@@ -480,8 +477,6 @@ static void raid1_end_write_request(struct bio *bio)
 		if (!test_bit(Faulty, &rdev->flags))
 			set_bit(R1BIO_WriteError, &r1_bio->state);
 		else {
-			/* Fail the request */
-			set_bit(R1BIO_Degraded, &r1_bio->state);
 			/* Finished with this branch */
 			r1_bio->bios[mirror] = NULL;
 			to_put = bio;
@@ -1414,11 +1409,8 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
 			break;
 		}
 		r1_bio->bios[i] = NULL;
-		if (!rdev || test_bit(Faulty, &rdev->flags)) {
-			if (i < conf->raid_disks)
-				set_bit(R1BIO_Degraded, &r1_bio->state);
+		if (!rdev || test_bit(Faulty, &rdev->flags))
 			continue;
-		}
 
 		atomic_inc(&rdev->nr_pending);
 		if (test_bit(WriteErrorSeen, &rdev->flags)) {
@@ -1444,16 +1436,6 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
 					 */
 					max_sectors = bad_sectors;
 				rdev_dec_pending(rdev, mddev);
-				/* We don't set R1BIO_Degraded as that
-				 * only applies if the disk is
-				 * missing, so it might be re-added,
-				 * and we want to know to recover this
-				 * chunk.
-				 * In this case the device is here,
-				 * and the fact that this chunk is not
-				 * in-sync is recorded in the bad
-				 * block log
-				 */
 				continue;
 			}
 			if (is_bad) {
@@ -1530,8 +1512,8 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
 				alloc_behind_master_bio(r1_bio, bio);
 			}
 
-			md_bitmap_startwrite(bitmap, r1_bio->sector, r1_bio->sectors,
-					     test_bit(R1BIO_BehindIO, &r1_bio->state));
+			if (test_bit(R1BIO_BehindIO, &r1_bio->state))
+				md_bitmap_start_behind_write(mddev);
 			first_clone = 0;
 		}
 
@@ -2476,12 +2458,9 @@ static void handle_write_finished(struct r1conf *conf, struct r1bio *r1_bio)
 			 * errors.
 			 */
 			fail = true;
-			if (!narrow_write_error(r1_bio, m)) {
+			if (!narrow_write_error(r1_bio, m))
 				md_error(conf->mddev,
 					 conf->mirrors[m].rdev);
-				/* an I/O failed, we can't clear the bitmap */
-				set_bit(R1BIO_Degraded, &r1_bio->state);
-			}
 			rdev_dec_pending(conf->mirrors[m].rdev,
 					 conf->mddev);
 		}
@@ -2573,8 +2552,6 @@ static void raid1d(struct md_thread *thread)
 			list_del(&r1_bio->retry_list);
 			idx = sector_to_idx(r1_bio->sector);
 			atomic_dec(&conf->nr_queued[idx]);
-			if (mddev->degraded)
-				set_bit(R1BIO_Degraded, &r1_bio->state);
 			if (test_bit(R1BIO_WriteError, &r1_bio->state))
 				close_write(r1_bio);
 			raid_end_bio_io(r1_bio);
drivers/md/raid1.h +0 -1
index 14d4211a123a..44f2390a8866 100644
@@ -187,7 +187,6 @@ struct r1bio {
 enum r1bio_state {
 	R1BIO_Uptodate,
 	R1BIO_IsSync,
-	R1BIO_Degraded,
 	R1BIO_BehindIO,
 /* Set ReadError on bios that experience a readerror so that
  * raid1d knows what to do with them.
drivers/md/raid10.c +2 -24
index 023413120851..c300fd609ef0 100644
@@ -427,11 +427,6 @@ static void raid10_end_read_request(struct bio *bio)
 
 static void close_write(struct r10bio *r10_bio)
 {
-	/* clear the bitmap if all writes complete successfully */
-	md_bitmap_endwrite(r10_bio->mddev->bitmap, r10_bio->sector,
-			   r10_bio->sectors,
-			   !test_bit(R10BIO_Degraded, &r10_bio->state),
-			   0);
 	md_write_end(r10_bio->mddev);
 }
 
@@ -501,7 +496,6 @@ static void raid10_end_write_request(struct bio *bio)
 				set_bit(R10BIO_WriteError, &r10_bio->state);
 			else {
 				/* Fail the request */
-				set_bit(R10BIO_Degraded, &r10_bio->state);
 				r10_bio->devs[slot].bio = NULL;
 				to_put = bio;
 				dec_rdev = 1;
@@ -1490,10 +1484,8 @@ static void raid10_write_request(struct mddev *mddev, struct bio *bio,
 		r10_bio->devs[i].bio = NULL;
 		r10_bio->devs[i].repl_bio = NULL;
 
-		if (!rdev && !rrdev) {
-			set_bit(R10BIO_Degraded, &r10_bio->state);
+		if (!rdev && !rrdev)
 			continue;
-		}
 		if (rdev && test_bit(WriteErrorSeen, &rdev->flags)) {
 			sector_t first_bad;
 			sector_t dev_sector = r10_bio->devs[i].addr;
@@ -1510,14 +1502,6 @@ static void raid10_write_request(struct mddev *mddev, struct bio *bio,
 					 * to other devices yet
 					 */
 					max_sectors = bad_sectors;
-				/* We don't set R10BIO_Degraded as that
-				 * only applies if the disk is missing,
-				 * so it might be re-added, and we want to
-				 * know to recover this chunk.
-				 * In this case the device is here, and the
-				 * fact that this chunk is not in-sync is
-				 * recorded in the bad block log.
-				 */
 				continue;
 			}
 			if (is_bad) {
@@ -1554,7 +1538,6 @@ static void raid10_write_request(struct mddev *mddev, struct bio *bio,
 	md_account_bio(mddev, &bio);
 	r10_bio->master_bio = bio;
 	atomic_set(&r10_bio->remaining, 1);
-	md_bitmap_startwrite(mddev->bitmap, r10_bio->sector, r10_bio->sectors, 0);
 
 	for (i = 0; i < conf->copies; i++) {
 		if (r10_bio->devs[i].bio)
@@ -3063,11 +3046,8 @@ static void handle_write_completed(struct r10conf *conf, struct r10bio *r10_bio)
 				rdev_dec_pending(rdev, conf->mddev);
 			} else if (bio != NULL && bio->bi_status) {
 				fail = true;
-				if (!narrow_write_error(r10_bio, m)) {
+				if (!narrow_write_error(r10_bio, m))
 					md_error(conf->mddev, rdev);
-					set_bit(R10BIO_Degraded,
-						&r10_bio->state);
-				}
 				rdev_dec_pending(rdev, conf->mddev);
 			}
 			bio = r10_bio->devs[m].repl_bio;
@@ -3126,8 +3106,6 @@ static void raid10d(struct md_thread *thread)
 			r10_bio = list_first_entry(&tmp, struct r10bio,
 						   retry_list);
 			list_del(&r10_bio->retry_list);
-			if (mddev->degraded)
-				set_bit(R10BIO_Degraded, &r10_bio->state);
 
 			if (test_bit(R10BIO_WriteError,
 				     &r10_bio->state))
drivers/md/raid10.h +0 -1
index 2e75e88d0802..3f16ad6904a9 100644
@@ -161,7 +161,6 @@ enum r10bio_state {
 	R10BIO_IsSync,
 	R10BIO_IsRecover,
 	R10BIO_IsReshape,
-	R10BIO_Degraded,
 /* Set ReadError on bios that experience a read error
  * so that raid10d knows what to do with them.
  */
drivers/md/raid5-cache.c +0 -4
index 889bba60d6ff..53f3718c01eb 100644
@@ -313,10 +313,6 @@ void r5c_handle_cached_data_endio(struct r5conf *conf,
 		if (sh->dev[i].written) {
 			set_bit(R5_UPTODATE, &sh->dev[i].flags);
 			r5c_return_dev_pending_writes(conf, &sh->dev[i]);
-			md_bitmap_endwrite(conf->mddev->bitmap, sh->sector,
-					   RAID5_STRIPE_SECTORS(conf),
-					   !test_bit(STRIPE_DEGRADED, &sh->state),
-					   0);
 		}
 	}
 }
drivers/md/raid5.c +97 -77

301 lines not on this page · raw message

drivers/md/raid5.h +0 -4
index 97a795979a35..fd6171553880 100644
@@ -358,7 +358,6 @@ enum {
 	STRIPE_REPLACED,
 	STRIPE_PREREAD_ACTIVE,
 	STRIPE_DELAYED,
-	STRIPE_DEGRADED,
 	STRIPE_BIT_DELAY,
 	STRIPE_EXPANDING,
 	STRIPE_EXPAND_SOURCE,
@@ -372,9 +371,6 @@ enum {
 	STRIPE_ON_RELEASE_LIST,
 	STRIPE_BATCH_READY,
 	STRIPE_BATCH_ERR,
-	STRIPE_BITMAP_PENDING,	/* Being added to bitmap, don't add
-				 * to batch yet.
-				 */
 	STRIPE_LOG_TRAPPED,	/* trapped into log (see raid5-cache.c)
 				 * this bit is used in two scenarios:
 				 *
drivers/media/dvb-frontends/cxd2841er.c +2 -6
index d925ca24183b..415f1f91cc30 100644
@@ -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;
[… more lines in the raw message]

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

drivers/media/i2c/ds90ub913.c +21 -4
index 5a650facae41..ae33d1ecf835 100644

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

drivers/media/i2c/ds90ub953.c +32 -14

46 lines not on this page · raw message

drivers/media/test-drivers/vidtv/vidtv_bridge.c +7 -1
index 8b04e12af286..6e030584d598 100644

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

drivers/media/usb/uvc/uvc_driver.c +18 -0
index 95c5b90f3e7c..ae2e8bd2b3f7 100644

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

drivers/media/usb/uvc/uvc_video.c +26 -1
index a2504e1e991b..9572fdfe74f2 100644

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

drivers/media/usb/uvc/uvcvideo.h +1 -0
index 997f4b5b5e22..30fd056b2aec 100644

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

drivers/mmc/host/mtk-sd.c +20 -11
index 4f4b7607eaa9..02f3748e46c1 100644

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

drivers/net/can/c_can/c_can_platform.c +3 -2
index f44ba2600415..7f405bcf11c2 100644

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

drivers/net/can/ctucanfd/ctucanfd_base.c +6 -4
index 64c349fd4600..f65c1a1e05cc 100644

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

drivers/net/can/usb/etas_es58x/es58x_devlink.c +5 -1
index 635edeb8f68c..e763a9904bed 100644

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

drivers/net/ethernet/intel/igc/igc_main.c +1 -0
index 91a4722460f6..ae93b45cf55e 100644

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

drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c +3 -1
index 472830d07ac1..13b5281d676b 100644

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

drivers/net/netdevsim/ipsec.c +8 -4
index 3612b0633bd1..88187dd4eb2d 100644

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

drivers/net/team/team.c +3 -1
index 46a7c9fb6300..1ce3bccd4ebd 100644

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

drivers/net/vxlan/vxlan_core.c +5 -2
index ee02a92338da..64db3e98a1b6 100644

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

drivers/net/wireless/ath/ath12k/wmi.c +45 -16

61 lines not on this page · raw message

drivers/net/wireless/ath/ath12k/wmi.h +0 -1
index a19a2c29f226..4cfcc83f5226 100644

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

drivers/pci/quirks.c +12 -0
index fd35ad0648a0..70f484b811de 100644

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

drivers/pci/switch/switchtec.c +26 -0
index 5a4adf6c04cf..455fa5035a24 100644

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

drivers/pinctrl/pinctrl-cy8c95x0.c +1 -1
index f2b9db66fdb6..d2488d80912c 100644

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

drivers/soc/tegra/fuse/fuse-tegra30.c +11 -6
index e94d46372a63..402cf939c032 100644

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

drivers/spi/spi-sn-f-ospi.c +3 -0
index a7c3b3923b4a..fd8c8eb37d01 100644

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

drivers/tty/serial/8250/8250.h +2 -0
index 1aa3e55c8b47..f76c9ecc51bc 100644

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

drivers/tty/serial/8250/8250_dma.c +16 -0
index 7fa66501792d..7f23037813bc 100644

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

drivers/tty/serial/8250/8250_port.c +9 -0
index 2b1b2928ef7b..c2778300e151 100644

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

drivers/tty/serial/serial_port.c +3 -2
index 469ad26cde48..a21c28707703 100644

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

drivers/ufs/core/ufs_bsg.c +1 -0
index f21423a7a6d7..8fbd46cd8c2b 100644

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

drivers/usb/class/cdc-acm.c +21 -7
index 605fea461102..c1d7d87b32cc 100644

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

drivers/usb/core/hub.c +12 -2
index 0944cfae8b55..38f3f5a766df 100644

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

drivers/usb/core/quirks.c +6 -0
index 13171454f959..027479179f09 100644

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

drivers/usb/dwc2/gadget.c +1 -0
index b26de09f6b6d..ce20c06a9025 100644

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

drivers/usb/dwc3/gadget.c +34 -0
index 9b8099cba414..f6d9a9c67db4 100644

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

drivers/usb/gadget/function/f_midi.c +13 -4
index 2d02f25f9597..49946af11a90 100644

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

drivers/usb/gadget/udc/renesas_usb3.c +1 -1
index 3b01734ce1b7..a93ad93390ba 100644

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

drivers/usb/host/pci-quirks.c +9 -0
index 2665832f9add..b96d9062a083 100644

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

drivers/usb/roles/class.c +3 -2
index 70165dd86b5d..8664449ca2ff 100644

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

drivers/usb/serial/option.c +29 -20

49 lines not on this page · raw message

drivers/vfio/pci/vfio_pci_rdwr.c +1 -0
index e27de61ac9fe..8191c8fcfb25 100644

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

drivers/vfio/platform/vfio_platform_common.c +0 -10
index d63c2d266d07..3bf1043cd795 100644

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

drivers/video/fbdev/omap/lcd_dma.c +2 -2
index f85817635a8c..0da23c57e475 100644

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

drivers/xen/swiotlb-xen.c +12 -8
index 6d0d1c8a508b..b6e54ab3b6f3 100644

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

fs/btrfs/file.c +1 -3
index c2d0c62b087c..68092b64e29e 100644

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

fs/nfs/sysfs.c +3 -3
index bf378ecd5d9f..7b59a40d40c0 100644

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

fs/nfsd/nfs2acl.c +2 -0
index 12b2b9bc07bf..f1f32ad4f42c 100644

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

fs/nfsd/nfs3acl.c +2 -0
index 73adca47d373..d7af28f44504 100644

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

fs/nfsd/nfs4callback.c +5 -2
index 875ea311ca3c..d47173d98eef 100644

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

fs/orangefs/orangefs-debugfs.c +2 -2
index 1b508f543384..fa41db088488 100644

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

include/linux/blk-mq.h +14 -4
index 958ed7e89b30..1d482c2aabbd 100644

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

include/linux/cgroup-defs.h +3 -3
index 6eefe5153a6f..c0c2b26725d0 100644

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

include/linux/efi.h +1 -0
index 80b21d1c6eaf..7db1c0759c09 100644

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

include/linux/i8253.h +1 -0
index 8336b2f6f834..bf169cfef7f1 100644

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

include/linux/netdevice.h +6 -0
index 8b5121eb8757..95ee88dfe0b9 100644

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

include/linux/sched/task.h +1 -0
index a23af225c898..8dbecab4c400 100644

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

include/net/l3mdev.h +2 -0
index 031c661aa14d..bdfa9d414360 100644

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

include/net/net_namespace.h +12 -3
index 1befad79a673..ce3f84c6eb8e 100644

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

include/net/route.h +7 -2
index 51a45b1887b5..0171e9e1bbea 100644

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

io_uring/kbuf.c +11 -4
index 702c08c26cd4..b6fbae874f27 100644

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

kernel/cgroup/cgroup.c +12 -8
index 36097e8c904f..3ccf80dfa587 100644

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

kernel/cgroup/rstat.c +0 -1
index d80d7a608141..c32439b855f5 100644

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

kernel/time/clocksource.c +6 -3
index aa864999dc21..3130f24daf59 100644

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

mm/gup.c +4 -10
index fdd75384160d..69d259f7bf37 100644

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

net/ax25/af_ax25.c +11 -0
index 0f66dd8715bd..4a16142ac58a 100644

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

net/batman-adv/bat_v.c +0 -2
index ac11f1f08db0..d35479c465e2 100644

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

net/batman-adv/bat_v_elp.c +86 -36

122 lines not on this page · raw message

net/batman-adv/bat_v_elp.h +0 -2
index 9e2740195fa2..c9cb0a307100 100644

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

net/batman-adv/types.h +0 -3
index 17d5ea1d8e84..d6854c109cd2 100644

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

net/can/j1939/socket.c +2 -2
index 1f49d6164ea1..cf9a12d8da6f 100644

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

net/can/j1939/transport.c +3 -2
index 95f7a7e65a73..9b72d118d756 100644

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

net/core/flow_dissector.c +11 -10
index b22d20cc417b..00a5c41c1831 100644

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

net/core/neighbour.c +7 -4
index cb0c233e8396..e44feb39d459 100644

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

net/ipv4/arp.c +3 -1
index 0d0d725b46ad..02776453bf97 100644

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

net/ipv4/devinet.c +2 -1
index 4822f68edbf0..c33b1ecc591e 100644

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

net/ipv4/icmp.c +17 -14
index a6adf6a2ec4b..a21d32b3ae6c 100644

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

net/ipv4/route.c +32 -7
index 61fc2166a870..97dc30a03dbf 100644

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

net/ipv6/icmp.c +23 -19

42 lines not on this page · raw message

net/ipv6/mcast.c +25 -20

45 lines not on this page · raw message

net/ipv6/ndisc.c +13 -11
index 2ad0ef47b07c..8d853971f2f6 100644

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

net/ipv6/route.c +6 -1
index c5cee40a658b..5715d54f3d0b 100644

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

net/openvswitch/datapath.c +9 -3
index b7232142c13f..cb52fac7caa3 100644

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

net/vmw_vsock/af_vsock.c +11 -1
index f4dbf5f87962..618b18e80cea 100644

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

sound/soc/intel/boards/bytcr_rt5640.c +16 -1
index ddf68be0af14..ce80adc30fe9 100644

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

tools/testing/selftests/gpio/gpio-sim.sh +25 -6
index 6fb66a687f17..bbc29ed9c60a 100755

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

tools/testing/selftests/net/pmtu.sh +95 -17

112 lines not on this page · raw message

tools/testing/selftests/net/rtnetlink.sh +2 -2
index 488f4964365e..855505c40ed8 100755

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

tools/tracing/rtla/src/timerlat_hist.c +8 -0
index 1525e88c6cf9..a985e5795482 100644

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

tools/tracing/rtla/src/timerlat_top.c +8 -0
index 5a33789a375e..1fed4c8d8520 100644

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

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

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