Skip to contentSkip to conversation

Linux 6.6.59

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Nov 1, 2024 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.6.59 kernel.

All users of the 6.6 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml       |   18 
 Makefile                                                               |    2 
 arch/arm/boot/dts/broadcom/bcm2837-rpi-cm3-io3.dts                     |    2 
 arch/arm64/Makefile                                                    |    2 
 arch/arm64/kvm/arm.c                                                   |    3 
 arch/arm64/kvm/sys_regs.c                                              |    2 
 arch/arm64/kvm/vgic/vgic-init.c                                        |    6 
 arch/loongarch/include/asm/bootinfo.h                                  |    4 
 arch/loongarch/include/asm/kasan.h                                     |    2 
 arch/loongarch/kernel/process.c                                        |   16 
 arch/loongarch/kernel/setup.c                                          |    3 
 arch/loongarch/kernel/traps.c                                          |    5 
 arch/riscv/net/bpf_jit_comp64.c                                        |    4 
 arch/s390/include/asm/perf_event.h                                     |    1 
 arch/s390/pci/pci_event.c                                              |   17 
 arch/x86/Kconfig                                                       |    1 
 arch/x86/kernel/cpu/resctrl/ctrlmondata.c                              |   23 
 arch/x86/kvm/svm/nested.c                                              |    6 
 drivers/accel/qaic/qaic_control.c                                      |    2 
 drivers/accel/qaic/qaic_data.c                                         |    6 
 drivers/acpi/button.c                                                  |   11 
 drivers/acpi/cppc_acpi.c                                               |  116 ++++
 drivers/acpi/prmt.c                                                    |   29 -
 drivers/acpi/resource.c                                                |    7 
 drivers/ata/libata-eh.c                                                |    1 
 drivers/cdrom/cdrom.c                                                  |    2 
 drivers/cpufreq/amd-pstate.c                                           |   10 
 drivers/cpufreq/cppc_cpufreq.c                                         |  139 -----
 drivers/firmware/arm_scmi/driver.c                                     |    4 
 drivers/firmware/arm_scmi/mailbox.c                                    |   32 -
 drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c                               |   15 
 drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c                                |    5 
 drivers/gpu/drm/amd/display/modules/power/power_helpers.c              |    2 
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c                               |   17 
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c                            |    9 
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c                   |    2 
 drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c                      |   19 
 drivers/gpu/drm/msm/dsi/dsi_host.c                                     |    4 
 drivers/gpu/drm/vboxvideo/hgsmi_base.c                                 |   10 
 drivers/gpu/drm/vboxvideo/vboxvideo.h                                  |    4 
 drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c                                   |    4 
 drivers/iio/accel/bma400_core.c                                        |    3 
 drivers/iio/adc/Kconfig                                                |    2 
 drivers/iio/frequency/Kconfig                                          |   33 -
 drivers/infiniband/core/addr.c                                         |    2 
 drivers/infiniband/hw/bnxt_re/hw_counters.c                            |    6 
 drivers/infiniband/hw/bnxt_re/ib_verbs.c                               |   48 +
 drivers/infiniband/hw/bnxt_re/main.c                                   |   42 -
 drivers/infiniband/hw/bnxt_re/qplib_fp.c                               |    4 
 drivers/infiniband/hw/bnxt_re/qplib_fp.h                               |    2 
 drivers/infiniband/hw/bnxt_re/qplib_rcfw.c                             |    4 
 drivers/infiniband/hw/bnxt_re/qplib_res.c                              |   23 
 drivers/infiniband/hw/bnxt_re/qplib_res.h                              |   20 
 drivers/infiniband/hw/bnxt_re/qplib_sp.c                               |   22 
 drivers/infiniband/hw/bnxt_re/qplib_sp.h                               |    1 
 drivers/infiniband/hw/cxgb4/cm.c                                       |    9 
 drivers/infiniband/hw/irdma/cm.c                                       |    2 
 drivers/infiniband/ulp/srpt/ib_srpt.c                                  |   80 ++-
 drivers/irqchip/irq-renesas-rzg2l.c                                    |   94 +++
 drivers/net/dsa/mv88e6xxx/chip.c                                       |    2 
 drivers/net/dsa/mv88e6xxx/chip.h                                       |    6 
 drivers/net/dsa/mv88e6xxx/port.c                                       |    1 
 drivers/net/dsa/mv88e6xxx/ptp.c                                        |  108 ++--
 drivers/net/ethernet/aeroflex/greth.c                                  |    3 
 drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c                       |    1 
 drivers/net/ethernet/broadcom/bcmsysport.c                             |    1 
 drivers/net/ethernet/emulex/benet/be_main.c                            |   10 
 drivers/net/ethernet/freescale/fman/mac.c                              |   68 +-
 drivers/net/ethernet/freescale/fman/mac.h                              |    6 
 drivers/net/ethernet/i825xx/sun3_82586.c                               |    1 
 drivers/net/ethernet/marvell/octeon_ep/octep_rx.c                      |   82 ++-
 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c                    |    4 
 drivers/net/ethernet/mellanox/mlx5/core/cmd.c                          |    8 
 drivers/net/ethernet/mellanox/mlx5/core/eq.c                           |    6 
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c                      |    5 
 drivers/net/ethernet/realtek/r8169_main.c                              |    4 
 drivers/net/ethernet/renesas/ravb_main.c                               |   25 
 drivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c                      |   14 
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c                      |    2 
 drivers/net/hyperv/netvsc_drv.c                                        |   30 +
 drivers/net/macsec.c                                                   |   18 
 drivers/net/netdevsim/dev.c                                            |   15 
 drivers/net/phy/dp83822.c                                              |    4 
 drivers/net/plip/plip.c                                                |    2 
 drivers/net/usb/usbnet.c                                               |    4 
 drivers/net/vmxnet3/vmxnet3_xdp.c                                      |    2 
 drivers/net/wwan/wwan_core.c                                           |    2 
 drivers/nvme/host/pci.c                                                |   21 
 drivers/platform/x86/dell/dell-wmi-base.c                              |    9 
 drivers/platform/x86/dell/dell-wmi-sysman/sysman.c                     |    1 
 drivers/powercap/dtpm_devfreq.c                                        |    2 
 drivers/target/target_core_device.c                                    |    2 
 drivers/target/target_core_user.c                                      |    2 
 drivers/usb/dwc3/core.c                                                |   19 
 drivers/usb/dwc3/core.h                                                |    3 
 drivers/usb/gadget/function/f_uac2.c                                   |   13 
 drivers/usb/host/xhci-caps.h                                           |   85 +++
 drivers/usb/host/xhci-dbgcap.h                                         |    2 
 drivers/usb/host/xhci-dbgtty.c                                         |   73 ++
 drivers/usb/host/xhci-port.h                                           |  176 ++++++
 drivers/usb/host/xhci.h                                                |  262 ----------
 drivers/usb/typec/class.c                                              |    3 
 fs/btrfs/block-group.c                                                 |    2 
 fs/btrfs/dir-item.c                                                    |    4 
 fs/btrfs/inode.c                                                       |    7 
 fs/exec.c                                                              |   21 
 fs/jfs/jfs_dmap.c                                                      |    2 
 fs/nfsd/nfs4state.c                                                    |    2 
 fs/nilfs2/page.c                                                       |    6 
 fs/open.c                                                              |    2 
 fs/smb/client/fs_context.c                                             |    7 
 fs/smb/client/reparse.c                                                |   23 
 fs/smb/client/smb2ops.c                                                |    3 
 fs/smb/client/smb2pdu.c                                                |    9 
 fs/udf/balloc.c                                                        |   38 -
 fs/udf/directory.c                                                     |   23 
 fs/udf/inode.c                                                         |  202 +++++--
 fs/udf/partition.c                                                     |    6 
 fs/udf/super.c                                                         |    3 
 fs/udf/truncate.c                                                      |   43 +
 fs/udf/udfdecl.h                                                       |   15 
 include/acpi/cppc_acpi.h                                               |    2 
 include/linux/bpf.h                                                    |   14 
 include/linux/memcontrol.h                                             |   14 
 include/linux/netdevice.h                                              |   12 
 include/linux/task_work.h                                              |    6 
 include/linux/trace_events.h                                           |    6 
 include/net/bluetooth/bluetooth.h                                      |    1 
 include/net/genetlink.h                                                |    3 
 include/net/sock.h                                                     |    5 
 include/net/xfrm.h                                                     |   28 -
 include/trace/events/huge_memory.h                                     |   10 
 include/uapi/linux/bpf.h                                               |   20 
 kernel/bpf/btf.c                                                       |    1 
 kernel/bpf/devmap.c                                                    |   11 
 kernel/bpf/helpers.c                                                   |   10 
 kernel/bpf/ringbuf.c                                                   |    2 
 kernel/bpf/syscall.c                                                   |   47 +
 kernel/bpf/task_iter.c                                                 |    2 
 kernel/bpf/verifier.c                                                  |   99 +--
 kernel/sched/core.c                                                    |    4 
 kernel/task_work.c                                                     |   43 +
 kernel/time/posix-clock.c                                              |    6 
 kernel/trace/bpf_trace.c                                               |   11 
 kernel/trace/trace.c                                                   |    1 
 kernel/trace/trace_eprobe.c                                            |   15 
 kernel/trace/trace_fprobe.c                                            |   65 +-
 kernel/trace/trace_kprobe.c                                            |   78 ++
 kernel/trace/trace_probe.c                                             |  189 ++++++-
 kernel/trace/trace_probe.h                                             |   30 +
 kernel/trace/trace_probe_tmpl.h                                        |   10 
 kernel/trace/trace_uprobe.c                                            |  114 ++--
 lib/Kconfig.debug                                                      |    2 
 mm/khugepaged.c                                                        |  127 ++--
 net/bluetooth/af_bluetooth.c                                           |   22 
 net/bluetooth/bnep/core.c                                              |    3 
 net/bluetooth/iso.c                                                    |   18 
 net/bluetooth/sco.c                                                    |   18 
 net/core/filter.c                                                      |   50 -
 net/core/sock_map.c                                                    |    8 
 net/ipv4/devinet.c                                                     |   35 -
 net/ipv4/inet_connection_sock.c                                        |   21 
 net/ipv4/xfrm4_policy.c                                                |   40 -
 net/ipv6/xfrm6_policy.c                                                |   31 -
 net/l2tp/l2tp_netlink.c                                                |    4 
 net/netfilter/nf_bpf_link.c                                            |    7 
 net/netfilter/xt_NFLOG.c                                               |    2 
 net/netfilter/xt_TRACE.c                                               |    1 
 net/netfilter/xt_mark.c                                                |    2 
 net/netlink/genetlink.c                                                |   28 -
 net/sched/act_api.c                                                    |   23 
 net/sched/sch_generic.c                                                |   17 
 net/sched/sch_taprio.c                                                 |   21 
 net/smc/smc_pnet.c                                                     |    2 
 net/smc/smc_wr.c                                                       |    6 
 net/vmw_vsock/virtio_transport_common.c                                |   14 
 net/vmw_vsock/vsock_bpf.c                                              |    8 
 net/wireless/nl80211.c                                                 |    8 
 net/xfrm/xfrm_device.c                                                 |   11 
 net/xfrm/xfrm_policy.c                                                 |   50 +
 net/xfrm/xfrm_user.c                                                   |   10 
 security/selinux/selinuxfs.c                                           |   30 -
 sound/firewire/amdtp-stream.c                                          |    3 
 sound/pci/hda/Kconfig                                                  |    2 
 sound/pci/hda/patch_cs8409.c                                           |    5 
 sound/pci/hda/patch_realtek.c                                          |   48 +
 sound/soc/amd/yc/acp6x-mach.c                                          |    7 
 sound/soc/codecs/lpass-rx-macro.c                                      |    2 
 sound/soc/codecs/max98388.c                                            |    1 
 sound/soc/fsl/fsl_micfil.c                                             |   43 +
 sound/soc/fsl/fsl_sai.c                                                |    5 
 sound/soc/fsl/fsl_sai.h                                                |    1 
 sound/soc/loongson/loongson_card.c                                     |    1 
 sound/soc/qcom/lpass-cpu.c                                             |    2 
 sound/soc/qcom/sm8250.c                                                |    1 
 sound/soc/sh/rcar/core.c                                               |    7 
 tools/include/uapi/linux/bpf.h                                         |    7 
 tools/testing/selftests/bpf/Makefile                                   |    2 
 tools/testing/selftests/bpf/prog_tests/fill_link_info.c                |   69 +-
 tools/testing/selftests/bpf/progs/verifier_helper_value_access.c       |    8 
 tools/testing/selftests/bpf/progs/verifier_raw_stack.c                 |    2 
 tools/testing/selftests/ftrace/test.d/dynevent/fprobe_syntax_errors.tc |    4 
 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc   |    2 
 203 files changed, 2729 insertions(+), 1460 deletions(-)

Abhishek Mohapatra (1):
RDMA/bnxt_re: Fix the max CQ WQEs for older adapters

Aleksa Sarai (1):
openat2: explicitly return -E2BIG for (usize > PAGE_SIZE)

Aleksandr Mishin (4):
octeon_ep: Implement helper for iterating packets in Rx queue
octeon_ep: Add SKB allocation failures handling in __octep_oq_process_rx() fsl/fman: Save device references taken in mac_probe() fsl/fman: Fix refcount handling of fman-related devices

Alexander Zubkov (1):
RDMA/irdma: Fix misspelling of "accept*"

Alexey Klimov (2):
ASoC: codecs: lpass-rx-macro: add missing CDC_RX_BCL_VBAT_RF_PROC2 to default regs values
ASoC: qcom: sm8250: add qrb4210-rb2-sndcard compatible string

Andrea Parri (1):
riscv, bpf: Make BPF_CMPXCHG fully ordered

Andrei Matei (1):
bpf: Simplify checking size of helper accesses

Andrey Shumilin (1):
ALSA: firewire-lib: Avoid division by zero in apply_constraint_to_size()

Andrii Nakryiko (3):
uprobes: encapsulate preparation of uprobe args buffer
uprobes: prepare uprobe args buffer lazily
uprobes: prevent mutex_lock() under rcu_read_lock()

Anumula Murali Mohan Reddy (2):
RDMA/core: Fix ENODEV error for iWARP test over vlan RDMA/cxgb4: Fix RDMA_CM_EVENT_UNREACHABLE error for iWARP

Armin Wolf (1):
platform/x86: dell-wmi: Ignore suspend notifications

Bart Van Assche (1):
RDMA/srpt: Make slab cache names unique

Bhargava Chenna Marreddy (1):
RDMA/bnxt_re: Fix a bug while setting up Level-2 PBL pages

Binbin Zhou (1):
ASoC: loongson: Fix component check failed on FDT systems

Chancel Liu (1):
ASoC: fsl_micfil: Add a flag to distinguish with different volume control types

Christian Heusel (1):

      ACPI: resource: Add LG 16T90SP to irq1_level_low_skip_override[]

Claudiu Beznea (3):
irqchip/renesas-rzg2l: Align struct member names to tabs irqchip/renesas-rzg2l: Document structure members irqchip/renesas-rzg2l: Add support for suspend to RAM

Colin Ian King (2):
octeontx2-af: Fix potential integer overflows on integer shifts
ASoC: max98388: Fix missing increment of variable slot_found

Cosmin Ratiu (1):
net/mlx5: Unregister notifier on eswitch init failure

Crag Wang (1):
platform/x86: dell-sysman: add support for alienware products

Dan Carpenter (1):
ACPI: PRM: Clean up guid type in struct prm_handler_info

Daniel Borkmann (4):
vmxnet3: Fix packet corruption in vmxnet3_xdp_xmit_frame
bpf: Add MEM_WRITE attribute
bpf: Fix overloading of MEM_UNINIT's meaning
bpf: Remove MEM_UNINIT from skb/xdp MTU helpers

Dave Kleikamp (1):
jfs: Fix sanity check in dbMount

David Lawrence Glanzman (1):
ASoC: amd: yc: Add quirk for HP Dragonfly pro one

Dhananjay Ugwekar (1):
cpufreq/amd-pstate: Fix amd_pstate mode switch on shared memory systems

Dimitar Kanaliev (1):
bpf: Fix truncation bug in coerce_reg_to_size_sx()

Dmitry Antipov (2):
net: sched: fix use-after-free in taprio_change()
net: sched: use RCU read-side critical section in taprio_dump()

Dmitry Baryshkov (2):
drm/msm/dpu: make sure phys resources are properly initialized drm/msm/dpu: check for overflow in _dpu_crtc_setup_lm_bounds()

Douglas Anderson (2):
drm/msm: Avoid NULL dereference in msm_disp_state_print_regs() drm/msm: Allocate memory for disp snapshot with kvzalloc()

Eric Biggers (1):
ALSA: hda/tas2781: select CRC32 instead of CRC32_SARWATE

Eric Dumazet (3):
netdevsim: use cond_resched() in nsim_dev_trap_report_work()
genetlink: hold RCU in genlmsg_mcast()
net: fix races in netdev_tx_sent_queue()/dev_watchdog()

Eyal Birger (2):
xfrm: extract dst lookup parameters into a struct
xfrm: respect ip protocols rules criteria when performing dst lookups

Fabrizio Castro (1):
irqchip/renesas-rzg2l: Fix missing put_device

Florian Kauer (1):
bpf: devmap: provide rxq after redirect

Florian Klink (1):
ARM: dts: bcm2837-rpi-cm3-io3: Fix HDMI hpd-gpio pin

Florian Westphal (1):
netfilter: bpf: must hold reference on net namespace

Frank Li (1):
XHCI: Separate PORT and CAPs macros into dedicated file

Gal Pressman (1):
ravb: Remove setting of RX software timestamp

Gianfranco Trad (1):
udf: fix uninit-value use in udf_get_fileshortad

Greg Kroah-Hartman (1):

      Linux 6.6.59

Haiyang Zhang (1):
hv_netvsc: Fix VF namespace also in synthetic NIC NETDEV_REGISTER event

Hans de Goede (1):
drm/vboxvideo: Replace fake VLA at end of vbva_mouse_pointer_shape with real VLA

Heiko Carstens (1):
s390: Initialize psw mask in perf_arch_fetch_caller_regs()

Heiner Kallweit (1):
r8169: avoid unsolicited interrupts

Henrique Carvalho (1):
smb: client: Handle kstrdup failures for passwords

Huacai Chen (3):
LoongArch: Get correct cores_per_package for SMT systems
LoongArch: Enable IRQ if do_ale() triggered in irq-enabled context
LoongArch: Make KASAN usable for variable cpu_vabits

Ian Forbes (1):
drm/vmwgfx: Handle possible ENOMEM in vmw_stdu_connector_atomic_check

Ilkka Koskinen (1):
KVM: arm64: Fix shift-out-of-bounds bug

Jakub Boehm (1):
net: plip: fix break; causing plip to never transmit

Javier Carrasco (3):
iio: frequency: {admv4420,adrf6780}: format Kconfig entries
iio: frequency: admv4420: fix missing select REMAP_SPI in Kconfig
iio: adc: ti-lmp92064: add missing select IIO_(TRIGGERED_)BUFFER in Kconfig

Jessica Zhang (1):
drm/msm/dpu: don't always program merge_3d block

Jinjie Ruan (1):
posix-clock: posix-clock: Fix unbalanced locking in pc_clock_settime()

Jiri Olsa (6):
bpf: Fix memory leak in bpf_core_apply
bpf: Add missed value to kprobe perf link info
bpf: Add cookie to perf_event bpf_link_info records selftests/bpf: Use bpf_link__destroy in fill_link_info tests selftests/bpf: Add cookies check for perf_event fill_link_info test bpf,perf: Fix perf_event_detach_bpf_prog error handling

Jiri Slaby (SUSE) (2):
xhci: dbgtty: remove kfifo_out() wrapper
xhci: dbgtty: use kfifo from tty_port struct

John Keeping (1):
usb: gadget: f_uac2: fix non-newline-terminated function name

Jonathan Marek (2):
drm/msm/dsi: improve/fix dsc pclk calculation
drm/msm/dsi: fix 32-bit signed integer extension in pclk_rate calculation

Jordan Rome (1):
bpf: Fix iter/task tid filtering

Josh Poimboeuf (1):
cdrom: Avoid barrier_nospec() in cdrom_ioctl_media_changed()

José Relvas (1):
ALSA: hda/realtek: Add subwoofer quirk for Acer Predator G9-593

Justin Chen (1):
firmware: arm_scmi: Queue in scmi layer for mailbox implementation

Kai Shen (1):
net/smc: Fix memory leak when using percpu refs

Kailang Yang (1):
ALSA: hda/realtek: Update default depop procedure

Kalesh AP (7):
RDMA/bnxt_re: Fix a possible memory leak RDMA/bnxt_re: Add a check for memory allocation RDMA/bnxt_re: Fix out of bound check RDMA/bnxt_re: Return more meaningful error RDMA/bnxt_re: Fix the GID table length RDMA/bnxt_re: Avoid creating fence MR for newer adapters RDMA/bnxt_re: Fix unconditional fence for newer adapters

Kevin Groeneveld (1):
usb: gadget: f_uac2: fix return value for UAC2_ATTRIBUTE_STRING store

Koba Ko (1):
ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM handler and context

Kuniyuki Iwashima (1):
tcp/dccp: Don't use timer_pending() in reqsk_queue_unlink().

Lad Prabhakar (1):
ASoC: rsnd: Fix probe failure on HiHope boards due to endpoint parsing

Lee Jones (1):
usb: gadget: f_uac2: Replace snprintf() with the safer scnprintf() variant

Leo Yan (1):
tracing: Consider the NULL character when validating the event length

Li RongQing (1):
net/smc: Fix searching in list of known pnetids in smc_pnet_add_pnetid

Lin Ma (1):
net: wwan: fix global oob in wwan_rtnl_policy

Linus Torvalds (1):
task_work: make TWA_NMI_CURRENT handling conditional on IRQ_WORK

Luiz Augusto von Dentz (2):
Bluetooth: SCO: Fix UAF on sco_sock_timeout
Bluetooth: ISO: Fix UAF on iso_sock_timeout

Maher Sanalla (1):
net/mlx5: Check for invalid vector index on EQ creation

Marc Zyngier (1):
KVM: arm64: Don't eagerly teardown the vgic on init error

Mario Limonciello (2):
drm/amd: Guard against bad data for ATIF ACPI method drm/amd/display: Disable PSR-SU on Parade 08-01 TCON too

Mark Rutland (1):
arm64: Force position-independent veneers

Martin Kletzander (1):
x86/resctrl: Avoid overflow in MB settings in bw_validate()

Masami Hiramatsu (Google) (4):
tracing/fprobe-event: cleanup: Fix a wrong comment in fprobe event tracing/probes: cleanup: Set trace_probe::nr_args at trace_probe_init tracing/probes: Support $argN in return probe (kprobe and fprobe)
tracing: probes: Fix to zero initialize a local variable

Mateusz Guzik (1):
exec: don't WARN for racy path_noexec check

Mathias Nyman (1):
xhci: dbc: honor usb transfer size boundaries.

Matthew Wilcox (Oracle) (5):
mm: convert collapse_huge_page() to use a folio mm/khugepaged: use a folio more in collapse_file()
khugepaged: inline hpage_collapse_alloc_folio()
khugepaged: convert alloc_charge_hpage to alloc_charge_folio
khugepaged: remove hpage from collapse_file()

Maurizio Lombardi (1):
nvme-pci: fix race condition between reset and nvme_dev_disable()

Michal Luczaj (4):
bpf, sockmap: SK_DROP on attempted redirects of unsupported af_vsock
vsock: Update rx_bytes on read_skb()
vsock: Update msg_count on read_skb()
bpf, vsock: Drop static vsock_bpf_prot initialization

Michel Alex (1):
net: phy: dp83822: Fix reset pin definitions

Mikel Rychliski (1):
tracing/probes: Fix MAX_TRACE_ARGS limit handling

Mikhail Lobanov (1):
iio: accel: bma400: Fix uninitialized variable field_value in tap event handling.

Miquel Raynal (2):
ASoC: dt-bindings: davinci-mcasp: Fix interrupts property
ASoC: dt-bindings: davinci-mcasp: Fix interrupt properties

Murad Masimov (1):
ALSA: hda/cs8409: Fix possible NULL dereference

Naohiro Aota (1):
btrfs: zoned: fix zone unusable accounting for freed reserved extent

Niklas Cassel (1):
ata: libata: Set DID_TIME_OUT for commands that actually timed out

Niklas Schnelle (1):

      s390/pci: Handle PCI error codes other than 0x3a

Niklas Söderlund (1):
net: ravb: Only advertise Rx/Tx timestamps if hardware supports it

Oliver Neukum (2):
net: usb: usbnet: fix race in probe failure
net: usb: usbnet: fix name regression

Pablo Neira Ayuso (1):
netfilter: xtables: fix typo causing some targets not to load on IPv6

Pali Rohár (1):
cifs: Validate content of NFS reparse point buffer

Paritosh Dixit (1):
net: stmmac: dwmac-tegra: Fix link bring-up sequence

Paul Moore (1):
selinux: improve error checking in sel_write_load()

Paulo Alcantara (1):
smb: client: fix OOBs when building SMB2_IOCTL request

Pawan Gupta (1):
x86/lam: Disable ADDRESS_MASKING in most cases

Peter Rashleigh (2):
net: dsa: mv88e6xxx: Fix the max_vid definition for the MV88E6361
net: dsa: mv88e6xxx: Fix error when setting port policy on mv88e6393x

Petr Vaganov (1):
xfrm: fix one more kernel-infoleak in algo dumping

Pranjal Ramajor Asha Kanojiya (1):
accel/qaic: Fix the for loop used to walk SG table

Praveen Kumar Kannoju (1):
net/sched: adjust device watchdog timer to detect stopped queue at right time

Qiao Ma (1):
uprobe: avoid out-of-bounds memory access of fetching args

Roger Quadros (1):
usb: dwc3: core: Fix system suspend on TI AM62 platforms

Ryusuke Konishi (1):
nilfs2: fix kernel bug due to missing clearing of buffer delay flag

Sabrina Dubroca (2):
macsec: don't increment counters for an unrelated SA
xfrm: validate new SA's prefixlen using SA family when sel.family is unset

Saravanan Vajravel (1):
RDMA/bnxt_re: Fix incorrect AVID type in WQE structure

Sean Christopherson (1):
KVM: nSVM: Ignore nCR3[4:0] when loading PDPTEs from memory

Sebastian Andrzej Siewior (1):
task_work: Add TWA_NMI_CURRENT as an additional notify mode.

Selvin Xavier (3):
RDMA/bnxt_re: Support new 5760X P7 devices
RDMA/bnxt_re: Update the BAR offsets
RDMA/bnxt_re: Fix the offset for GenP7 adapters for user applications

Shay Drory (1):
net/mlx5: Fix command bitmask initialization

Shenghao Yang (3):
net: dsa: mv88e6xxx: group cycle counter coefficients
net: dsa: mv88e6xxx: read cycle counter period from hardware
net: dsa: mv88e6xxx: support 4000ps cycle counter period

Shengjiu Wang (1):
ASoC: fsl_sai: Enable 'FIFO continue on error' FCONT bit

Shubham Panwar (1):
ACPI: button: Add DMI quirk for Samsung Galaxy Book2 to fix initial lid detection issue

Srinivasan Shanmugam (1):
drm/amd/amdgpu: Fix double unlock in amdgpu_mes_add_ring

Su Hui (2):
firmware: arm_scmi: Fix the double free in scmi_debugfs_common_setup()
smb: client: fix possible double free in smb2_set_ea()

Thadeu Lima de Souza Cascardo (1):
usb: typec: altmode should keep reference to parent

Thomas Weißschuh (1):
LoongArch: Don't crash in stack_top() for tasks without vDSO

Timo Grautstueck (1):
lib/Kconfig.debug: fix grammar in RUST_BUILD_ASSERT_ALLOW

Toke Høiland-Jørgensen (2):
bpf: Make sure internal and UAPI bpf_redirect flags don't overlap
bpf: fix kfunc btf caching for modules

Tony Ambardar (1):
selftests/bpf: Fix cross-compiling urandom_read

Tyrone Wu (3):
bpf: fix unpopulated name_len field in perf_event link info selftests/bpf: fix perf_event link info name_len assertion
bpf: Fix link info netfilter flags to populate defrag flag

Vincent Guittot (1):
cpufreq/cppc: Move and rename cppc_cpufreq_{perf_to_khz|khz_to_perf}()

Vishal Moola (Oracle) (1):
mm/khugepaged: convert alloc_charge_hpage() to use folios

Vladimir Oltean (1):
net/sched: act_api: deny mismatched skip_sw/skip_hw flags for actions created by classifiers

Waiman Long (1):
sched/core: Disable page allocation in task_tick_mm_cid()

Wang Hai (7):
net: ethernet: aeroflex: fix potential memory leak in greth_start_xmit_gbit()
net: xilinx: axienet: fix potential memory leak in axienet_start_xmit()
net: systemport: fix potential memory leak in bcm_sysport_xmit()
net: bcmasp: fix potential memory leak in bcmasp_xmit()
scsi: target: core: Fix null-ptr-deref in target_alloc_device() net/sun3_82586: fix potential memory leak in sun3_82586_send_packet()
be2net: fix potential memory leak in be_xmit()

William Butler (1):
nvme-pci: set doorbell config before unquiescing

Xin Long (1):
ipv4: give an IPv4 dev to blackhole_netdev

Yang Erkun (1):
nfsd: cancel nfsd_shrinker_work using sync mode in nfs4_state_shutdown_net

Yang Shi (1):
mm: khugepaged: fix the arguments order in khugepaged_collapse_file trace point

Ye Bin (1):
Bluetooth: bnep: fix wild-memory-access in proto_unregister

Yuan Can (1):
powercap: dtpm_devfreq: Fix error check against dev_pm_qos_add_request()

Yue Haibing (1):
btrfs: fix passing 0 to ERR_PTR in btrfs_search_dir_index_item()

Zhao Mengmeng (3):
udf: refactor udf_current_aext() to handle error
udf: refactor udf_next_aext() to handle error
udf: refactor inode_bmap() to handle error

Zichen Xie (1):
ASoC: qcom: Fix NULL Dereference in asoc_qcom_lpass_cpu_platform_probe()

liwei (1):
cpufreq: CPPC: fix perf_to_khz/khz_to_perf conversion exception

author maintainer
#1 lore raw
Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml +9 -9
index 7735e08d35ba..beef193aaaeb 100644
@@ -102,21 +102,21 @@ properties:
     default: 2
 
   interrupts:
-    anyOf:
-      - minItems: 1
-        items:
-          - description: TX interrupt
-          - description: RX interrupt
-      - items:
-          - description: common/combined interrupt
+    minItems: 1
+    maxItems: 2
 
   interrupt-names:
     oneOf:
-      - minItems: 1
+      - description: TX interrupt
+        const: tx
+      - description: RX interrupt
+        const: rx
+      - description: TX and RX interrupts
         items:
           - const: tx
           - const: rx
-      - const: common
+      - description: Common/combined interrupt
+        const: common
 
   fck_parent:
     $ref: /schemas/types.yaml#/definitions/string
Makefile +1 -1
index f80e78c7cf20..8a55af189f36 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 6
-SUBLEVEL = 58
+SUBLEVEL = 59
 EXTRAVERSION =
 NAME = Pinguïn Aangedreven
 
arch/arm/boot/dts/broadcom/bcm2837-rpi-cm3-io3.dts +1 -1
index 72d26d130efa..85f54fa595aa 100644
@@ -77,7 +77,7 @@ &gpio {
 };
 
 &hdmi {
-	hpd-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
+	hpd-gpios = <&expgpio 0 GPIO_ACTIVE_LOW>;
 	power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
 	status = "okay";
 };
arch/arm64/Makefile +1 -1
index 9a2d3723cd0f..11782860717f 100644
@@ -10,7 +10,7 @@
 #
 # Copyright (C) 1995-2001 by Russell King
 
-LDFLAGS_vmlinux	:=--no-undefined -X
+LDFLAGS_vmlinux	:=--no-undefined -X --pic-veneer
 
 ifeq ($(CONFIG_RELOCATABLE), y)
 # Pass --no-apply-dynamic-relocs to restore pre-binutils-2.27 behaviour
arch/arm64/kvm/arm.c +3 -0
index 685cc436146a..18413d869cca 100644
@@ -777,6 +777,9 @@ static int kvm_vcpu_suspend(struct kvm_vcpu *vcpu)
 static int check_vcpu_requests(struct kvm_vcpu *vcpu)
 {
 	if (kvm_request_pending(vcpu)) {
+		if (kvm_check_request(KVM_REQ_VM_DEAD, vcpu))
+			return -EIO;
+
 		if (kvm_check_request(KVM_REQ_SLEEP, vcpu))
 			kvm_vcpu_sleep(vcpu);
 
arch/arm64/kvm/sys_regs.c +1 -1
index b233a64df295..370a1a7bd369 100644
@@ -1708,7 +1708,7 @@ static u64 reset_clidr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
 	 * one cache line.
 	 */
 	if (kvm_has_mte(vcpu->kvm))
-		clidr |= 2 << CLIDR_TTYPE_SHIFT(loc);
+		clidr |= 2ULL << CLIDR_TTYPE_SHIFT(loc);
 
 	__vcpu_sys_reg(vcpu, r->reg) = clidr;
 
arch/arm64/kvm/vgic/vgic-init.c +3 -3
index a2b439ad387c..b7306c588d9d 100644
@@ -494,10 +494,10 @@ int kvm_vgic_map_resources(struct kvm *kvm)
 out:
 	mutex_unlock(&kvm->arch.config_lock);
 out_slots:
-	mutex_unlock(&kvm->slots_lock);
-
 	if (ret)
-		kvm_vgic_destroy(kvm);
+		kvm_vm_dead(kvm);
+
+	mutex_unlock(&kvm->slots_lock);
 
 	return ret;
 }
arch/loongarch/include/asm/bootinfo.h +4 -0
index c60796869b2b..d2317fa6a766 100644
@@ -24,6 +24,10 @@ struct loongson_board_info {
 	const char *board_vendor;
 };
 
+/*
+ * The "core" of cores_per_node and cores_per_package stands for a
+ * logical core, which means in a SMT system it stands for a thread.
+ */
 struct loongson_system_configuration {
 	int nr_cpus;
 	int nr_nodes;
arch/loongarch/include/asm/kasan.h +1 -1
index cd6084f4e153..c6bce5fbff57 100644
@@ -16,7 +16,7 @@
 #define XRANGE_SHIFT (48)
 
 /* Valid address length */
-#define XRANGE_SHADOW_SHIFT	(PGDIR_SHIFT + PAGE_SHIFT - 3)
+#define XRANGE_SHADOW_SHIFT	min(cpu_vabits, VA_BITS)
 /* Used for taking out the valid address */
 #define XRANGE_SHADOW_MASK	GENMASK_ULL(XRANGE_SHADOW_SHIFT - 1, 0)
 /* One segment whole address space size */
arch/loongarch/kernel/process.c +9 -7
index f2ff8b5d591e..6e58f65455c7 100644
@@ -293,13 +293,15 @@ unsigned long stack_top(void)
 {
 	unsigned long top = TASK_SIZE & PAGE_MASK;
 
-	/* Space for the VDSO & data page */
-	top -= PAGE_ALIGN(current->thread.vdso->size);
-	top -= VVAR_SIZE;
-
-	/* Space to randomize the VDSO base */
-	if (current->flags & PF_RANDOMIZE)
-		top -= VDSO_RANDOMIZE_SIZE;
+	if (current->thread.vdso) {
+		/* Space for the VDSO & data page */
+		top -= PAGE_ALIGN(current->thread.vdso->size);
+		top -= VVAR_SIZE;
+
+		/* Space to randomize the VDSO base */
+		if (current->flags & PF_RANDOMIZE)
+			top -= VDSO_RANDOMIZE_SIZE;
+	}
 
 	return top;
 }
arch/loongarch/kernel/setup.c +2 -1
index 6748d7f3f221..065f2db57c09 100644
@@ -55,6 +55,7 @@
 #define SMBIOS_FREQHIGH_OFFSET		0x17
 #define SMBIOS_FREQLOW_MASK		0xFF
 #define SMBIOS_CORE_PACKAGE_OFFSET	0x23
+#define SMBIOS_THREAD_PACKAGE_OFFSET	0x25
 #define LOONGSON_EFI_ENABLE		(1 << 3)
 
 #ifdef CONFIG_EFI
@@ -129,7 +130,7 @@ static void __init parse_cpu_table(const struct dmi_header *dm)
 	cpu_clock_freq = freq_temp * 1000000;
 
 	loongson_sysconf.cpuname = (void *)dmi_string_parse(dm, dmi_data[16]);
-	loongson_sysconf.cores_per_package = *(dmi_data + SMBIOS_CORE_PACKAGE_OFFSET);
+	loongson_sysconf.cores_per_package = *(dmi_data + SMBIOS_THREAD_PACKAGE_OFFSET);
 
 	pr_info("CpuClock = %llu\n", cpu_clock_freq);
 }
arch/loongarch/kernel/traps.c +5 -0
index aebfc3733a76..d59052c03d9b 100644
@@ -529,6 +529,9 @@ asmlinkage void noinstr do_ale(struct pt_regs *regs)
 #else
 	unsigned int *pc;
 
+	if (regs->csr_prmd & CSR_PRMD_PIE)
+		local_irq_enable();
+
 	perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, regs, regs->csr_badvaddr);
 
 	/*
@@ -553,6 +556,8 @@ asmlinkage void noinstr do_ale(struct pt_regs *regs)
 	die_if_kernel("Kernel ale access", regs);
 	force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)regs->csr_badvaddr);
 out:
+	if (regs->csr_prmd & CSR_PRMD_PIE)
+		local_irq_disable();
 #endif
 	irqentry_exit(regs, state);
 }
arch/riscv/net/bpf_jit_comp64.c +2 -2
index 2f041b5cea97..26eeb3973631 100644
@@ -555,8 +555,8 @@ static void emit_atomic(u8 rd, u8 rs, s16 off, s32 imm, bool is64,
 		     rv_lr_w(r0, 0, rd, 0, 0), ctx);
 		jmp_offset = ninsns_rvoff(8);
 		emit(rv_bne(RV_REG_T2, r0, jmp_offset >> 1), ctx);
-		emit(is64 ? rv_sc_d(RV_REG_T3, rs, rd, 0, 0) :
-		     rv_sc_w(RV_REG_T3, rs, rd, 0, 0), ctx);
+		emit(is64 ? rv_sc_d(RV_REG_T3, rs, rd, 0, 1) :
+		     rv_sc_w(RV_REG_T3, rs, rd, 0, 1), ctx);
 		jmp_offset = ninsns_rvoff(-6);
 		emit(rv_bne(RV_REG_T3, 0, jmp_offset >> 1), ctx);
 		emit(rv_fence(0x3, 0x3), ctx);
arch/s390/include/asm/perf_event.h +1 -0
index 9917e2717b2b..66aff768f815 100644
@@ -73,6 +73,7 @@ struct perf_sf_sde_regs {
 #define SAMPLE_FREQ_MODE(hwc)	(SAMPL_FLAGS(hwc) & PERF_CPUM_SF_FREQ_MODE)
 
 #define perf_arch_fetch_caller_regs(regs, __ip) do {			\
+	(regs)->psw.mask = 0;						\
 	(regs)->psw.addr = (__ip);					\
 	(regs)->gprs[15] = (unsigned long)__builtin_frame_address(0) -	\
 		offsetof(struct stack_frame, back_chain);		\
arch/s390/pci/pci_event.c +9 -8
index b9324ca2eb94..b3961f1016ea 100644
@@ -272,18 +272,19 @@ static void __zpci_event_error(struct zpci_ccdf_err *ccdf)
 		goto no_pdev;
 
 	switch (ccdf->pec) {
-	case 0x003a: /* Service Action or Error Recovery Successful */
+	case 0x002a: /* Error event concerns FMB */
+	case 0x002b:
+	case 0x002c:
+		break;
+	case 0x0040: /* Service Action or Error Recovery Failed */
+	case 0x003b:
+		zpci_event_io_failure(pdev, pci_channel_io_perm_failure);
+		break;
+	default: /* PCI function left in the error state attempt to recover */
 		ers_res = zpci_event_attempt_error_recovery(pdev);
 		if (ers_res != PCI_ERS_RESULT_RECOVERED)
 			zpci_event_io_failure(pdev, pci_channel_io_perm_failure);
 		break;
-	default:
-		/*
-		 * Mark as frozen not permanently failed because the device
-		 * could be subsequently recovered by the platform.
-		 */
-		zpci_event_io_failure(pdev, pci_channel_io_frozen);
-		break;
 	}
 	pci_dev_put(pdev);
 no_pdev:
arch/x86/Kconfig +1 -0
index 82d12c93feab..05c82fd5d0f6 100644
@@ -2217,6 +2217,7 @@ config RANDOMIZE_MEMORY_PHYSICAL_PADDING
 config ADDRESS_MASKING
 	bool "Linear Address Masking support"
 	depends on X86_64
+	depends on COMPILE_TEST || !CPU_MITIGATIONS # wait for LASS
 	help
 	  Linear Address Masking (LAM) modifies the checking that is applied
 	  to 64-bit linear addresses, allowing software to use of the
arch/x86/kernel/cpu/resctrl/ctrlmondata.c +14 -9
index b44c487727d4..a701e7921ea5 100644
@@ -27,10 +27,10 @@
  * hardware. The allocated bandwidth percentage is rounded to the next
  * control step available on the hardware.
  */
-static bool bw_validate(char *buf, unsigned long *data, struct rdt_resource *r)
+static bool bw_validate(char *buf, u32 *data, struct rdt_resource *r)
 {
-	unsigned long bw;
 	int ret;
+	u32 bw;
 
 	/*
 	 * Only linear delay values is supported for current Intel SKUs.
@@ -40,16 +40,21 @@ static bool bw_validate(char *buf, unsigned long *data, struct rdt_resource *r)
 		return false;
 	}
 
-	ret = kstrtoul(buf, 10, &bw);
+	ret = kstrtou32(buf, 10, &bw);
 	if (ret) {
-		rdt_last_cmd_printf("Non-decimal digit in MB value %s\n", buf);
+		rdt_last_cmd_printf("Invalid MB value %s\n", buf);
 		return false;
 	}
 
-	if ((bw < r->membw.min_bw || bw > r->default_ctrl) &&
-	    !is_mba_sc(r)) {
-		rdt_last_cmd_printf("MB value %ld out of range [%d,%d]\n", bw,
-				    r->membw.min_bw, r->default_ctrl);
+	/* Nothing else to do if software controller is enabled. */
+	if (is_mba_sc(r)) {
+		*data = bw;
+		return true;
+	}
+
+	if (bw < r->membw.min_bw || bw > r->default_ctrl) {
+		rdt_last_cmd_printf("MB value %u out of range [%d,%d]\n",
+				    bw, r->membw.min_bw, r->default_ctrl);
 		return false;
 	}
 
@@ -63,7 +68,7 @@ int parse_bw(struct rdt_parse_data *data, struct resctrl_schema *s,
 	struct resctrl_staged_config *cfg;
 	u32 closid = data->rdtgrp->closid;
 	struct rdt_resource *r = s->res;
-	unsigned long bw_val;
+	u32 bw_val;
 
 	cfg = &d->staged_config[s->conf_type];
 	if (cfg->have_new_ctrl) {
arch/x86/kvm/svm/nested.c +5 -1
index 60891b9ce25f..acf22bd99efc 100644
@@ -63,8 +63,12 @@ static u64 nested_svm_get_tdp_pdptr(struct kvm_vcpu *vcpu, int index)
 	u64 pdpte;
 	int ret;
 
+	/*
+	 * Note, nCR3 is "assumed" to be 32-byte aligned, i.e. the CPU ignores
+	 * nCR3[4:0] when loading PDPTEs from memory.
+	 */
 	ret = kvm_vcpu_read_guest_page(vcpu, gpa_to_gfn(cr3), &pdpte,
-				       offset_in_page(cr3) + index * 8, 8);
+				       (cr3 & GENMASK(11, 5)) + index * 8, 8);
 	if (ret)
 		return 0;
 	return pdpte;
drivers/accel/qaic/qaic_control.c +1 -1
index 388abd40024b..f3db3fa91dd5 100644
@@ -496,7 +496,7 @@ static int encode_addr_size_pairs(struct dma_xfer *xfer, struct wrapper_list *wr
 	nents = sgt->nents;
 	nents_dma = nents;
 	*size = QAIC_MANAGE_EXT_MSG_LENGTH - msg_hdr_len - sizeof(**out_trans);
-	for_each_sgtable_sg(sgt, sg, i) {
+	for_each_sgtable_dma_sg(sgt, sg, i) {
 		*size -= sizeof(*asp);
 		/* Save 1K for possible follow-up transactions. */
 		if (*size < SZ_1K) {
drivers/accel/qaic/qaic_data.c +3 -3
index ed1a5af434f2..d2f8c70a77a5 100644
@@ -177,7 +177,7 @@ static int clone_range_of_sgt_for_slice(struct qaic_device *qdev, struct sg_tabl
 	nents = 0;
 
 	size = size ? size : PAGE_SIZE;
-	for (sg = sgt_in->sgl; sg; sg = sg_next(sg)) {
+	for_each_sgtable_dma_sg(sgt_in, sg, j) {
 		len = sg_dma_len(sg);
 
 		if (!len)
@@ -214,7 +214,7 @@ static int clone_range_of_sgt_for_slice(struct qaic_device *qdev, struct sg_tabl
 
 	/* copy relevant sg node and fix page and length */
 	sgn = sgf;
-	for_each_sgtable_sg(sgt, sg, j) {
+	for_each_sgtable_dma_sg(sgt, sg, j) {
 		memcpy(sg, sgn, sizeof(*sg));
 		if (sgn == sgf) {
 			sg_dma_address(sg) += offf;
@@ -294,7 +294,7 @@ static int encode_reqs(struct qaic_device *qdev, struct bo_slice *slice,
 	 * fence.
 	 */
 	dev_addr = req->dev_addr;
-	for_each_sgtable_sg(slice->sgt, sg, i) {
+	for_each_sgtable_dma_sg(slice->sgt, sg, i) {
 		slice->reqs[i].cmd = cmd;
 		slice->reqs[i].src_addr = cpu_to_le64(slice->dir == DMA_TO_DEVICE ?
 						      sg_dma_address(sg) : dev_addr);
drivers/acpi/button.c +11 -0
index 1e76a64cce0a..906a7bfa448b 100644
@@ -130,6 +130,17 @@ static const struct dmi_system_id dmi_lid_quirks[] = {
 		},
 		.driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN,
 	},
+	{
+		/*
+		 * Samsung galaxybook2 ,initial _LID device notification returns
+		 * lid closed.
+		 */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "750XED"),
+		},
+		.driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN,
+	},
 	{}
 };
 
drivers/acpi/cppc_acpi.c +116 -0

125 lines not on this page · raw message

drivers/acpi/prmt.c +23 -6
index 7020584096bf..8b391f12853b 100644
@@ -52,7 +52,7 @@ struct prm_context_buffer {
 static LIST_HEAD(prm_module_list);
 
 struct prm_handler_info {
-	guid_t guid;
+	efi_guid_t guid;
 	efi_status_t (__efiapi *handler_addr)(u64, void *);
 	u64 static_data_buffer_addr;
 	u64 acpi_param_buffer_addr;
@@ -72,17 +72,21 @@ struct prm_module_info {
 	struct prm_handler_info handlers[];
 };
 
-static u64 efi_pa_va_lookup(u64 pa)
+static u64 efi_pa_va_lookup(efi_guid_t *guid, u64 pa)
 {
 	efi_memory_desc_t *md;
 	u64 pa_offset = pa & ~PAGE_MASK;
 	u64 page = pa & PAGE_MASK;
 
 	for_each_efi_memory_desc(md) {
-		if (md->phys_addr < pa && pa < md->phys_addr + PAGE_SIZE * md->num_pages)
+		if ((md->attribute & EFI_MEMORY_RUNTIME) &&
+		    (md->phys_addr < pa && pa < md->phys_addr + PAGE_SIZE * md->num_pages)) {
 			return pa_offset + md->virt_addr + page - md->phys_addr;
+		}
 	}
 
+	pr_warn("Failed to find VA for GUID: %pUL, PA: 0x%llx", guid, pa);
+
 	return 0;
 }
 
@@ -148,9 +152,15 @@ acpi_parse_prmt(union acpi_subtable_headers *header, const unsigned long end)
 		th = &tm->handlers[cur_handler];
 
 		guid_copy(&th->guid, (guid_t *)handler_info->handler_guid);
-		th->handler_addr = (void *)efi_pa_va_lookup(handler_info->handler_address);
-		th->static_data_buffer_addr = efi_pa_va_lookup(handler_info->static_data_buffer_address);
-		th->acpi_param_buffer_addr = efi_pa_va_lookup(handler_info->acpi_param_buffer_address);
+		th->handler_addr =
+			(void *)efi_pa_va_lookup(&th->guid, handler_info->handler_address);
+
+		th->static_data_buffer_addr =
+			efi_pa_va_lookup(&th->guid, handler_info->static_data_buffer_address);
+
+		th->acpi_param_buffer_addr =
+			efi_pa_va_lookup(&th->guid, handler_info->acpi_param_buffer_address);
+
 	} while (++cur_handler < tm->handler_count && (handler_info = get_next_handler(handler_info)));
 
 	return 0;
@@ -253,6 +263,13 @@ static acpi_status acpi_platformrt_space_handler(u32 function,
 		if (!handler || !module)
 			goto invalid_guid;
 
+		if (!handler->handler_addr ||
+		    !handler->static_data_buffer_addr ||
+		    !handler->acpi_param_buffer_addr) {
+			buffer->prm_status = PRM_HANDLER_ERROR;
+			return AE_OK;
+		}
+
 		ACPI_COPY_NAMESEG(context.signature, "PRMC");
 		context.revision = 0x0;
 		context.reserved = 0x0;
drivers/acpi/resource.c +7 -0
index 95233b413c1a..d3d776d4fb5a 100644
@@ -498,6 +498,13 @@ static const struct dmi_system_id tongfang_gm_rg[] = {
 			DMI_MATCH(DMI_BOARD_NAME, "GMxRGxx"),
 		},
 	},
+	{
+		/* LG Electronics 16T90SP */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "LG Electronics"),
+			DMI_MATCH(DMI_BOARD_NAME, "16T90SP"),
+		},
+	},
 	{ }
 };
 
drivers/ata/libata-eh.c +1 -0
index a96566e1b2b8..9cc022522184 100644
@@ -636,6 +636,7 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap,
 			/* the scmd has an associated qc */
 			if (!(qc->flags & ATA_QCFLAG_EH)) {
 				/* which hasn't failed yet, timeout */
+				set_host_byte(scmd, DID_TIME_OUT);
 				qc->err_mask |= AC_ERR_TIMEOUT;
 				qc->flags |= ATA_QCFLAG_EH;
 				nr_timedout++;
drivers/cdrom/cdrom.c +1 -1
index 01f46caf1f88..54b80911f3e2 100644
@@ -2313,7 +2313,7 @@ static int cdrom_ioctl_media_changed(struct cdrom_device_info *cdi,
 		return -EINVAL;
 
 	/* Prevent arg from speculatively bypassing the length check */
-	barrier_nospec();
+	arg = array_index_nospec(arg, cdi->capacity);
 
 	info = kmalloc(sizeof(*info), GFP_KERNEL);
 	if (!info)
drivers/cpufreq/amd-pstate.c +10 -0
index f461f99eb040..8c16d67b98bf 100644
@@ -1061,11 +1061,21 @@ static int amd_pstate_register_driver(int mode)
 		return -EINVAL;
 
 	cppc_state = mode;
+
+	ret = amd_pstate_enable(true);
+	if (ret) {
+		pr_err("failed to enable cppc during amd-pstate driver registration, return %d\n",
+		       ret);
+		amd_pstate_driver_cleanup();
+		return ret;
+	}
+
 	ret = cpufreq_register_driver(current_pstate_driver);
 	if (ret) {
 		amd_pstate_driver_cleanup();
 		return ret;
 	}
+
 	return 0;
 }
 
drivers/cpufreq/cppc_cpufreq.c +17 -122

239 lines not on this page · raw message

drivers/firmware/arm_scmi/driver.c +1 -3
index 87383c05424b..3962683e2af9 100644
@@ -2603,10 +2603,8 @@ static struct scmi_debug_info *scmi_debugfs_common_setup(struct scmi_info *info)
 	dbg->top_dentry = top_dentry;
 
 	if (devm_add_action_or_reset(info->dev,
-				     scmi_debugfs_common_cleanup, dbg)) {
-		scmi_debugfs_common_cleanup(dbg);
+				     scmi_debugfs_common_cleanup, dbg))
 		return NULL;
-	}
 
 	return dbg;
 }
drivers/firmware/arm_scmi/mailbox.c +21 -11
index b8d470417e8f..8e513f70b75d 100644
@@ -23,6 +23,7 @@
  * @chan_receiver: Optional Receiver mailbox unidirectional channel
  * @cinfo: SCMI channel info
  * @shmem: Transmit/Receive shared memory area
+ * @chan_lock: Lock that prevents multiple xfers from being queued
  */
 struct scmi_mailbox {
 	struct mbox_client cl;
@@ -30,6 +31,7 @@ struct scmi_mailbox {
 	struct mbox_chan *chan_receiver;
 	struct scmi_chan_info *cinfo;
 	struct scmi_shared_mem __iomem *shmem;
+	struct mutex chan_lock;
 };
 
 #define client_to_scmi_mailbox(c) container_of(c, struct scmi_mailbox, cl)
@@ -228,6 +230,7 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
 
 	cinfo->transport_info = smbox;
 	smbox->cinfo = cinfo;
+	mutex_init(&smbox->chan_lock);
 
 	return 0;
 }
@@ -255,13 +258,23 @@ static int mailbox_send_message(struct scmi_chan_info *cinfo,
 	struct scmi_mailbox *smbox = cinfo->transport_info;
 	int ret;
 
-	ret = mbox_send_message(smbox->chan, xfer);
+	/*
+	 * The mailbox layer has its own queue. However the mailbox queue
+	 * confuses the per message SCMI timeouts since the clock starts when
+	 * the message is submitted into the mailbox queue. So when multiple
+	 * messages are queued up the clock starts on all messages instead of
+	 * only the one inflight.
+	 */
+	mutex_lock(&smbox->chan_lock);
 
-	/* mbox_send_message returns non-negative value on success, so reset */
-	if (ret > 0)
-		ret = 0;
+	ret = mbox_send_message(smbox->chan, xfer);
+	/* mbox_send_message returns non-negative value on success */
+	if (ret < 0) {
+		mutex_unlock(&smbox->chan_lock);
+		return ret;
+	}
 
-	return ret;
+	return 0;
 }
 
 static void mailbox_mark_txdone(struct scmi_chan_info *cinfo, int ret,
@@ -269,13 +282,10 @@ static void mailbox_mark_txdone(struct scmi_chan_info *cinfo, int ret,
 {
 	struct scmi_mailbox *smbox = cinfo->transport_info;
 
-	/*
-	 * NOTE: we might prefer not to need the mailbox ticker to manage the
-	 * transfer queueing since the protocol layer queues things by itself.
-	 * Unfortunately, we have to kick the mailbox framework after we have
-	 * received our message.
-	 */
 	mbox_client_txdone(smbox->chan, ret);
+
+	/* Release channel */
+	mutex_unlock(&smbox->chan_lock);
 }
 
 static void mailbox_fetch_response(struct scmi_chan_info *cinfo,
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +12 -3
index 2bca37044ad0..fac204d6e0ea 100644
@@ -147,6 +147,7 @@ static union acpi_object *amdgpu_atif_call(struct amdgpu_atif *atif,
 					   struct acpi_buffer *params)
 {
 	acpi_status status;
+	union acpi_object *obj;
 	union acpi_object atif_arg_elements[2];
 	struct acpi_object_list atif_arg;
 	struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
@@ -169,16 +170,24 @@ static union acpi_object *amdgpu_atif_call(struct amdgpu_atif *atif,
 
 	status = acpi_evaluate_object(atif->handle, NULL, &atif_arg,
 				      &buffer);
+	obj = (union acpi_object *)buffer.pointer;
 
-	/* Fail only if calling the method fails and ATIF is supported */
+	/* Fail if calling the method fails and ATIF is supported */
 	if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
 		DRM_DEBUG_DRIVER("failed to evaluate ATIF got %s\n",
 				 acpi_format_exception(status));
-		kfree(buffer.pointer);
+		kfree(obj);
 		return NULL;
 	}
 
-	return buffer.pointer;
+	if (obj->type != ACPI_TYPE_BUFFER) {
+		DRM_DEBUG_DRIVER("bad object returned from ATIF: %d\n",
+				 obj->type);
+		kfree(obj);
+		return NULL;
+	}
+
+	return obj;
 }
 
 /**
drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c +3 -2
index c5c55e132af2..5e3abdd0805b 100644
@@ -1053,8 +1053,10 @@ int amdgpu_mes_add_ring(struct amdgpu_device *adev, int gang_id,
 
 	r = amdgpu_ring_init(adev, ring, 1024, NULL, 0,
 			     AMDGPU_RING_PRIO_DEFAULT, NULL);
-	if (r)
+	if (r) {
+		amdgpu_mes_unlock(&adev->mes);
 		goto clean_up_memory;
+	}
 
 	amdgpu_mes_ring_to_queue_props(adev, ring, &qprops);
 
@@ -1087,7 +1089,6 @@ int amdgpu_mes_add_ring(struct amdgpu_device *adev, int gang_id,
 	amdgpu_ring_fini(ring);
 clean_up_memory:
 	kfree(ring);
-	amdgpu_mes_unlock(&adev->mes);
 	return r;
 }
 
drivers/gpu/drm/amd/display/modules/power/power_helpers.c +2 -0
index 2b3d5183818a..4887a360ead4 100644
@@ -841,6 +841,8 @@ bool is_psr_su_specific_panel(struct dc_link *link)
 				isPSRSUSupported = false;
 			else if (dpcd_caps->sink_dev_id_str[1] == 0x08 && dpcd_caps->sink_dev_id_str[0] == 0x03)
 				isPSRSUSupported = false;
+			else if (dpcd_caps->sink_dev_id_str[1] == 0x08 && dpcd_caps->sink_dev_id_str[0] == 0x01)
+				isPSRSUSupported = false;
 			else if (dpcd_caps->psr_info.force_psrsu_cap == 0x1)
 				isPSRSUSupported = true;
 		}
drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +13 -4
index e238e4e8116c..ad57368dc13f 100644
@@ -722,12 +722,13 @@ void dpu_crtc_complete_commit(struct drm_crtc *crtc)
 	_dpu_crtc_complete_flip(crtc);
 }
 
-static void _dpu_crtc_setup_lm_bounds(struct drm_crtc *crtc,
+static int _dpu_crtc_check_and_setup_lm_bounds(struct drm_crtc *crtc,
 		struct drm_crtc_state *state)
 {
 	struct dpu_crtc_state *cstate = to_dpu_crtc_state(state);
 	struct drm_display_mode *adj_mode = &state->adjusted_mode;
 	u32 crtc_split_width = adj_mode->hdisplay / cstate->num_mixers;
+	struct dpu_kms *dpu_kms = _dpu_crtc_get_kms(crtc);
 	int i;
 
 	for (i = 0; i < cstate->num_mixers; i++) {
@@ -738,7 +739,12 @@ static void _dpu_crtc_setup_lm_bounds(struct drm_crtc *crtc,
 		r->y2 = adj_mode->vdisplay;
 
 		trace_dpu_crtc_setup_lm_bounds(DRMID(crtc), i, r);
+
+		if (drm_rect_width(r) > dpu_kms->catalog->caps->max_mixer_width)
+			return -E2BIG;
 	}
+
+	return 0;
 }
 
 static void _dpu_crtc_get_pcc_coeff(struct drm_crtc_state *state,
@@ -814,7 +820,7 @@ static void dpu_crtc_atomic_begin(struct drm_crtc *crtc,
 
 	DRM_DEBUG_ATOMIC("crtc%d\n", crtc->base.id);
 
-	_dpu_crtc_setup_lm_bounds(crtc, crtc->state);
+	_dpu_crtc_check_and_setup_lm_bounds(crtc, crtc->state);
 
 	/* encoder will trigger pending mask now */
 	drm_for_each_encoder_mask(encoder, crtc->dev, crtc->state->encoder_mask)
@@ -1208,8 +1214,11 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc,
 	if (crtc_state->active_changed)
 		crtc_state->mode_changed = true;
 
-	if (cstate->num_mixers)
-		_dpu_crtc_setup_lm_bounds(crtc, crtc_state);
+	if (cstate->num_mixers) {
+		rc = _dpu_crtc_check_and_setup_lm_bounds(crtc, crtc_state);
+		if (rc)
+			return rc;
+	}
 
 	/* FIXME: move this to dpu_plane_atomic_check? */
 	drm_atomic_crtc_state_for_each_plane_state(plane, pstate, crtc_state) {
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +4 -5
index 6262ec5e4020..10c68de1bf22 100644
@@ -1122,21 +1122,20 @@ static void dpu_encoder_virt_atomic_mode_set(struct drm_encoder *drm_enc,
 	for (i = 0; i < dpu_enc->num_phys_encs; i++) {
 		struct dpu_encoder_phys *phys = dpu_enc->phys_encs[i];
 
-		if (!dpu_enc->hw_pp[i]) {
+		phys->hw_pp = dpu_enc->hw_pp[i];
+		if (!phys->hw_pp) {
 			DPU_ERROR_ENC(dpu_enc,
 				"no pp block assigned at idx: %d\n", i);
 			return;
 		}
 
-		if (!hw_ctl[i]) {
+		phys->hw_ctl = i < num_ctl ? to_dpu_hw_ctl(hw_ctl[i]) : NULL;
+		if (!phys->hw_ctl) {
 			DPU_ERROR_ENC(dpu_enc,
 				"no ctl block assigned at idx: %d\n", i);
 			return;
 		}
 
-		phys->hw_pp = dpu_enc->hw_pp[i];
-		phys->hw_ctl = to_dpu_hw_ctl(hw_ctl[i]);
-
 		phys->cached_mode = crtc_state->adjusted_mode;
 		if (phys->ops.atomic_mode_set)
 			phys->ops.atomic_mode_set(phys, crtc_state, conn_state);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c +1 -1
index daaf0e604753..20c8b9af7a21 100644
@@ -280,7 +280,7 @@ static void dpu_encoder_phys_vid_setup_timing_engine(
 	intf_cfg.stream_sel = 0; /* Don't care value for video mode */
 	intf_cfg.mode_3d = dpu_encoder_helper_get_3d_blend_mode(phys_enc);
 	intf_cfg.dsc = dpu_encoder_helper_get_dsc(phys_enc);
-	if (phys_enc->hw_pp->merge_3d)
+	if (intf_cfg.mode_3d && phys_enc->hw_pp->merge_3d)
 		intf_cfg.merge_3d = phys_enc->hw_pp->merge_3d->idx;
 
 	spin_lock_irqsave(phys_enc->enc_spinlock, lock_flags);
drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c +10 -9
index add72bbc28b1..4d55e3cf570f 100644
@@ -26,7 +26,7 @@ static void msm_disp_state_dump_regs(u32 **reg, u32 aligned_len, void __iomem *b
 	end_addr = base_addr + aligned_len;
 
 	if (!(*reg))
-		*reg = kzalloc(len_padded, GFP_KERNEL);
+		*reg = kvzalloc(len_padded, GFP_KERNEL);
 
 	if (*reg)
 		dump_addr = *reg;
@@ -48,20 +48,21 @@ static void msm_disp_state_dump_regs(u32 **reg, u32 aligned_len, void __iomem *b
 	}
 }
 
-static void msm_disp_state_print_regs(u32 **reg, u32 len, void __iomem *base_addr,
-		struct drm_printer *p)
+static void msm_disp_state_print_regs(const u32 *dump_addr, u32 len,
+		void __iomem *base_addr, struct drm_printer *p)
 {
 	int i;
-	u32 *dump_addr = NULL;
 	void __iomem *addr;
 	u32 num_rows;
 
+	if (!dump_addr) {
+		drm_printf(p, "Registers not stored\n");
+		return;
+	}
+
 	addr = base_addr;
 	num_rows = len / REG_DUMP_ALIGN;
 
-	if (*reg)
-		dump_addr = *reg;
-
 	for (i = 0; i < num_rows; i++) {
 		drm_printf(p, "0x%lx : %08x %08x %08x %08x\n",
 				(unsigned long)(addr - base_addr),
@@ -89,7 +90,7 @@ void msm_disp_state_print(struct msm_disp_state *state, struct drm_printer *p)
 
 	list_for_each_entry_safe(block, tmp, &state->blocks, node) {
 		drm_printf(p, "====================%s================\n", block->name);
-		msm_disp_state_print_regs(&block->state, block->size, block->base_addr, p);
+		msm_disp_state_print_regs(block->state, block->size, block->base_addr, p);
 	}
 
 	drm_printf(p, "===================dpu drm state================\n");
@@ -161,7 +162,7 @@ void msm_disp_state_free(void *data)
 
 	list_for_each_entry_safe(block, tmp, &disp_state->blocks, node) {
 		list_del(&block->node);
-		kfree(block->state);
+		kvfree(block->state);
 		kfree(block);
 	}
 
drivers/gpu/drm/msm/dsi/dsi_host.c +2 -2
index 77b805eacb1b..f920329fe2e0 100644
@@ -537,7 +537,7 @@ static unsigned long dsi_adjust_pclk_for_compression(const struct drm_display_mo
 
 	int new_htotal = mode->htotal - mode->hdisplay + new_hdisplay;
 
-	return new_htotal * mode->vtotal * drm_mode_vrefresh(mode);
+	return mult_frac(mode->clock * 1000u, new_htotal, mode->htotal);
 }
 
 static unsigned long dsi_get_pclk_rate(const struct drm_display_mode *mode,
@@ -545,7 +545,7 @@ static unsigned long dsi_get_pclk_rate(const struct drm_display_mode *mode,
 {
 	unsigned long pclk_rate;
 
-	pclk_rate = mode->clock * 1000;
+	pclk_rate = mode->clock * 1000u;
 
 	if (dsc)
 		pclk_rate = dsi_adjust_pclk_for_compression(mode, dsc);
drivers/gpu/drm/vboxvideo/hgsmi_base.c +9 -1
index 8c041d7ce4f1..87dccaecc3e5 100644
@@ -139,7 +139,15 @@ int hgsmi_update_pointer_shape(struct gen_pool *ctx, u32 flags,
 		flags |= VBOX_MOUSE_POINTER_VISIBLE;
 	}
 
-	p = hgsmi_buffer_alloc(ctx, sizeof(*p) + pixel_len, HGSMI_CH_VBVA,
+	/*
+	 * The 4 extra bytes come from switching struct vbva_mouse_pointer_shape
+	 * from having a 4 bytes fixed array at the end to using a proper VLA
+	 * at the end. These 4 extra bytes were not subtracted from sizeof(*p)
+	 * before the switch to the VLA, so this way the behavior is unchanged.
+	 * Chances are these 4 extra bytes are not necessary but they are kept
+	 * to avoid regressions.
+	 */
+	p = hgsmi_buffer_alloc(ctx, sizeof(*p) + pixel_len + 4, HGSMI_CH_VBVA,
 			       VBVA_MOUSE_POINTER_SHAPE);
 	if (!p)
 		return -ENOMEM;
drivers/gpu/drm/vboxvideo/vboxvideo.h +1 -3
index f60d82504da0..79ec8481de0e 100644
@@ -351,10 +351,8 @@ struct vbva_mouse_pointer_shape {
 	 * Bytes in the gap between the AND and the XOR mask are undefined.
 	 * XOR mask scanlines have no gap between them and size of XOR mask is:
 	 * xor_len = width * 4 * height.
-	 *
-	 * Preallocate 4 bytes for accessing actual data as p->data.
 	 */
-	u8 data[4];
+	u8 data[];
 } __packed;
 
 /* pointer is visible */
drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c +4 -0
index b22ae25db4e1..52ea0c50c852 100644
@@ -881,6 +881,10 @@ static int vmw_stdu_connector_atomic_check(struct drm_connector *conn,
 	struct drm_crtc_state *new_crtc_state;
 
 	conn_state = drm_atomic_get_connector_state(state, conn);
+
+	if (IS_ERR(conn_state))
+		return PTR_ERR(conn_state);
+
 	du = vmw_connector_to_stdu(conn);
 
 	if (!conn_state->crtc)
drivers/iio/accel/bma400_core.c +2 -1
index e90e2f01550a..04083b7395ab 100644
@@ -1219,7 +1219,8 @@ static int bma400_activity_event_en(struct bma400_data *data,
 static int bma400_tap_event_en(struct bma400_data *data,
 			       enum iio_event_direction dir, int state)
 {
-	unsigned int mask, field_value;
+	unsigned int mask;
+	unsigned int field_value = 0;
 	int ret;
 
 	/*
drivers/iio/adc/Kconfig +2 -0
index e46817cb5581..6dee3b686eff 100644
@@ -1335,6 +1335,8 @@ config TI_LMP92064
 	tristate "Texas Instruments LMP92064 ADC driver"
 	depends on SPI
 	select REGMAP_SPI
+	select IIO_BUFFER
+	select IIO_TRIGGERED_BUFFER
 	help
 	  Say yes here to build support for the LMP92064 Precision Current and Voltage
 	  sensor.
drivers/iio/frequency/Kconfig +17 -16
index 71de6cc4a158..036763d3e84c 100644
@@ -82,25 +82,26 @@ config ADMV1014
 	  module will be called admv1014.
 
 config ADMV4420
-       tristate "Analog Devices ADMV4420 K Band Downconverter"
-       depends on SPI
-       help
-         Say yes here to build support for Analog Devices K Band
-         Downconverter with integrated Fractional-N PLL and VCO.
+	tristate "Analog Devices ADMV4420 K Band Downconverter"
+	depends on SPI
+	select REGMAP_SPI
+	help
+	  Say yes here to build support for Analog Devices K Band
+	  Downconverter with integrated Fractional-N PLL and VCO.
 
-         To compile this driver as a module, choose M here: the
-         module will be called admv4420.
+	  To compile this driver as a module, choose M here: the
+	  module will be called admv4420.
 
 config ADRF6780
-        tristate "Analog Devices ADRF6780 Microwave Upconverter"
-        depends on SPI
-        depends on COMMON_CLK
-        help
-          Say yes here to build support for Analog Devices ADRF6780
-          5.9 GHz to 23.6 GHz, Wideband, Microwave Upconverter.
-
-          To compile this driver as a module, choose M here: the
-          module will be called adrf6780.
+	tristate "Analog Devices ADRF6780 Microwave Upconverter"
+	depends on SPI
+	depends on COMMON_CLK
+	help
+	  Say yes here to build support for Analog Devices ADRF6780
+	  5.9 GHz to 23.6 GHz, Wideband, Microwave Upconverter.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called adrf6780.
 
 endmenu
 endmenu
drivers/infiniband/core/addr.c +2 -0
index f253295795f0..fd78d678877c 100644
@@ -269,6 +269,8 @@ rdma_find_ndev_for_src_ip_rcu(struct net *net, const struct sockaddr *src_in)
 		break;
 #endif
 	}
+	if (!ret && dev && is_vlan_dev(dev))
+		dev = vlan_dev_real_dev(dev);
 	return ret ? ERR_PTR(ret) : dev;
 }
 
drivers/infiniband/hw/bnxt_re/hw_counters.c +3 -3
index 93572405d6fa..1e63f8091748 100644
@@ -366,12 +366,12 @@ int bnxt_re_ib_get_hw_stats(struct ib_device *ibdev,
 				goto done;
 			}
 		}
-		if (rdev->pacing.dbr_pacing)
+		if (rdev->pacing.dbr_pacing && bnxt_qplib_is_chip_gen_p5_p7(rdev->chip_ctx))
 			bnxt_re_copy_db_pacing_stats(rdev, stats);
 	}
 
 done:
-	return bnxt_qplib_is_chip_gen_p5(rdev->chip_ctx) ?
+	return bnxt_qplib_is_chip_gen_p5_p7(rdev->chip_ctx) ?
 		BNXT_RE_NUM_EXT_COUNTERS : BNXT_RE_NUM_STD_COUNTERS;
 }
 
@@ -381,7 +381,7 @@ struct rdma_hw_stats *bnxt_re_ib_alloc_hw_port_stats(struct ib_device *ibdev,
 	struct bnxt_re_dev *rdev = to_bnxt_re_dev(ibdev, ibdev);
 	int num_counters = 0;
 
-	if (bnxt_qplib_is_chip_gen_p5(rdev->chip_ctx))
+	if (bnxt_qplib_is_chip_gen_p5_p7(rdev->chip_ctx))
 		num_counters = BNXT_RE_NUM_EXT_COUNTERS;
 	else
 		num_counters = BNXT_RE_NUM_STD_COUNTERS;
drivers/infiniband/hw/bnxt_re/ib_verbs.c +31 -17

121 lines not on this page · raw message

drivers/infiniband/hw/bnxt_re/main.c +20 -22

109 lines not on this page · raw message

drivers/infiniband/hw/bnxt_re/qplib_fp.c +2 -2
index 3b28878f6206..4ee11cb4f2bd 100644
@@ -995,7 +995,7 @@ int bnxt_qplib_create_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
 
 	/* SQ */
 	if (qp->type == CMDQ_CREATE_QP_TYPE_RC) {
-		psn_sz = bnxt_qplib_is_chip_gen_p5(res->cctx) ?
+		psn_sz = bnxt_qplib_is_chip_gen_p5_p7(res->cctx) ?
 			 sizeof(struct sq_psn_search_ext) :
 			 sizeof(struct sq_psn_search);
 
@@ -1649,7 +1649,7 @@ static void bnxt_qplib_fill_psn_search(struct bnxt_qplib_qp *qp,
 	flg_npsn = ((swq->next_psn << SQ_PSN_SEARCH_NEXT_PSN_SFT) &
 		     SQ_PSN_SEARCH_NEXT_PSN_MASK);
 
-	if (bnxt_qplib_is_chip_gen_p5(qp->cctx)) {
+	if (bnxt_qplib_is_chip_gen_p5_p7(qp->cctx)) {
 		psns_ext->opcode_start_psn = cpu_to_le32(op_spsn);
 		psns_ext->flags_next_psn = cpu_to_le32(flg_npsn);
 		psns_ext->start_slot_idx = cpu_to_le16(swq->slot_idx);
drivers/infiniband/hw/bnxt_re/qplib_fp.h +1 -1
index a6f38d8f12ef..56ddff96b508 100644
@@ -169,7 +169,7 @@ struct bnxt_qplib_swqe {
 			};
 			u32		q_key;
 			u32		dst_qp;
-			u16		avid;
+			u32		avid;
 		} send;
 
 		/* Send Raw Ethernet and QP1 */
drivers/infiniband/hw/bnxt_re/qplib_rcfw.c +2 -2
index 5680fe8b890a..7294221b3316 100644
@@ -525,7 +525,7 @@ static int __bnxt_qplib_rcfw_send_message(struct bnxt_qplib_rcfw *rcfw,
 		/* failed with status */
 		dev_err(&rcfw->pdev->dev, "cmdq[%#x]=%#x status %#x\n",
 			cookie, opcode, evnt->status);
-		rc = -EFAULT;
+		rc = -EIO;
 	}
 
 	return rc;
@@ -852,7 +852,7 @@ int bnxt_qplib_init_rcfw(struct bnxt_qplib_rcfw *rcfw,
 	 */
 	if (is_virtfn)
 		goto skip_ctx_setup;
-	if (bnxt_qplib_is_chip_gen_p5(rcfw->res->cctx))
+	if (bnxt_qplib_is_chip_gen_p5_p7(rcfw->res->cctx))
 		goto config_vf_res;
 
 	lvl = ctx->qpc_tbl.level;
drivers/infiniband/hw/bnxt_re/qplib_res.c +6 -17
index ae2bde34e785..96ceec1e8199 100644
@@ -244,6 +244,8 @@ int bnxt_qplib_alloc_init_hwq(struct bnxt_qplib_hwq *hwq,
 			sginfo.pgsize = npde * pg_size;
 			sginfo.npages = 1;
 			rc = __alloc_pbl(res, &hwq->pbl[PBL_LVL_0], &sginfo);
+			if (rc)
+				goto fail;
 
 			/* Alloc PBL pages */
 			sginfo.npages = npbl;
@@ -255,22 +257,9 @@ int bnxt_qplib_alloc_init_hwq(struct bnxt_qplib_hwq *hwq,
 			dst_virt_ptr =
 				(dma_addr_t **)hwq->pbl[PBL_LVL_0].pg_arr;
 			src_phys_ptr = hwq->pbl[PBL_LVL_1].pg_map_arr;
-			if (hwq_attr->type == HWQ_TYPE_MR) {
-			/* For MR it is expected that we supply only 1 contigous
-			 * page i.e only 1 entry in the PDL that will contain
-			 * all the PBLs for the user supplied memory region
-			 */
-				for (i = 0; i < hwq->pbl[PBL_LVL_1].pg_count;
-				     i++)
-					dst_virt_ptr[0][i] = src_phys_ptr[i] |
-						flag;
-			} else {
-				for (i = 0; i < hwq->pbl[PBL_LVL_1].pg_count;
-				     i++)
-					dst_virt_ptr[PTR_PG(i)][PTR_IDX(i)] =
-						src_phys_ptr[i] |
-						PTU_PDE_VALID;
-			}
+			for (i = 0; i < hwq->pbl[PBL_LVL_1].pg_count; i++)
+				dst_virt_ptr[0][i] = src_phys_ptr[i] | flag;
+
 			/* Alloc or init PTEs */
 			rc = __alloc_pbl(res, &hwq->pbl[PBL_LVL_2],
 					 hwq_attr->sginfo);
@@ -805,7 +794,7 @@ static int bnxt_qplib_alloc_dpi_tbl(struct bnxt_qplib_res *res,
 	dpit = &res->dpi_tbl;
 	reg = &dpit->wcreg;
 
-	if (!bnxt_qplib_is_chip_gen_p5(res->cctx)) {
+	if (!bnxt_qplib_is_chip_gen_p5_p7(res->cctx)) {
 		/* Offest should come from L2 driver */
 		dbr_offset = dev_attr->l2_db_size;
 		dpit->ucreg.offset = dbr_offset;
drivers/infiniband/hw/bnxt_re/qplib_res.h +17 -3
index 534db462216a..f9e7aa3757cf 100644
@@ -44,6 +44,9 @@ extern const struct bnxt_qplib_gid bnxt_qplib_gid_zero;
 #define CHIP_NUM_57508		0x1750
 #define CHIP_NUM_57504		0x1751
 #define CHIP_NUM_57502		0x1752
+#define CHIP_NUM_58818          0xd818
+#define CHIP_NUM_57608          0x1760
+
 
 struct bnxt_qplib_drv_modes {
 	u8	wqe_mode;
@@ -296,6 +299,12 @@ struct bnxt_qplib_res {
 	struct bnxt_qplib_db_pacing_data *pacing_data;
 };
 
+static inline bool bnxt_qplib_is_chip_gen_p7(struct bnxt_qplib_chip_ctx *cctx)
+{
+	return (cctx->chip_num == CHIP_NUM_58818 ||
+		cctx->chip_num == CHIP_NUM_57608);
+}
+
 static inline bool bnxt_qplib_is_chip_gen_p5(struct bnxt_qplib_chip_ctx *cctx)
 {
 	return (cctx->chip_num == CHIP_NUM_57508 ||
@@ -303,15 +312,20 @@ static inline bool bnxt_qplib_is_chip_gen_p5(struct bnxt_qplib_chip_ctx *cctx)
 		cctx->chip_num == CHIP_NUM_57502);
 }
 
+static inline bool bnxt_qplib_is_chip_gen_p5_p7(struct bnxt_qplib_chip_ctx *cctx)
+{
+	return bnxt_qplib_is_chip_gen_p5(cctx) || bnxt_qplib_is_chip_gen_p7(cctx);
+}
+
 static inline u8 bnxt_qplib_get_hwq_type(struct bnxt_qplib_res *res)
 {
-	return bnxt_qplib_is_chip_gen_p5(res->cctx) ?
+	return bnxt_qplib_is_chip_gen_p5_p7(res->cctx) ?
 					HWQ_TYPE_QUEUE : HWQ_TYPE_L2_CMPL;
 }
 
 static inline u8 bnxt_qplib_get_ring_type(struct bnxt_qplib_chip_ctx *cctx)
 {
-	return bnxt_qplib_is_chip_gen_p5(cctx) ?
+	return bnxt_qplib_is_chip_gen_p5_p7(cctx) ?
 	       RING_ALLOC_REQ_RING_TYPE_NQ :
 	       RING_ALLOC_REQ_RING_TYPE_ROCE_CMPL;
 }
@@ -488,7 +502,7 @@ static inline void bnxt_qplib_ring_nq_db(struct bnxt_qplib_db_info *info,
 	u32 type;
 
 	type = arm ? DBC_DBC_TYPE_NQ_ARM : DBC_DBC_TYPE_NQ;
-	if (bnxt_qplib_is_chip_gen_p5(cctx))
+	if (bnxt_qplib_is_chip_gen_p5_p7(cctx))
 		bnxt_qplib_ring_db(info, type);
 	else
 		bnxt_qplib_ring_db32(info, arm);
drivers/infiniband/hw/bnxt_re/qplib_sp.c +16 -6
index a27b68515164..0b98577cd708 100644
@@ -59,7 +59,7 @@ static bool bnxt_qplib_is_atomic_cap(struct bnxt_qplib_rcfw *rcfw)
 {
 	u16 pcie_ctl2 = 0;
 
-	if (!bnxt_qplib_is_chip_gen_p5(rcfw->res->cctx))
+	if (!bnxt_qplib_is_chip_gen_p5_p7(rcfw->res->cctx))
 		return false;
 
 	pcie_capability_read_word(rcfw->pdev, PCI_EXP_DEVCTL2, &pcie_ctl2);
@@ -133,10 +133,12 @@ int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
 	 * reporting the max number
 	 */
 	attr->max_qp_wqes -= BNXT_QPLIB_RESERVED_QP_WRS + 1;
-	attr->max_qp_sges = bnxt_qplib_is_chip_gen_p5(rcfw->res->cctx) ?
+	attr->max_qp_sges = bnxt_qplib_is_chip_gen_p5_p7(rcfw->res->cctx) ?
 			    6 : sb->max_sge;
 	attr->max_cq = le32_to_cpu(sb->max_cq);
 	attr->max_cq_wqes = le32_to_cpu(sb->max_cqe);
+	if (!bnxt_qplib_is_chip_gen_p7(rcfw->res->cctx))
+		attr->max_cq_wqes = min_t(u32, BNXT_QPLIB_MAX_CQ_WQES, attr->max_cq_wqes);
 	attr->max_cq_sges = attr->max_qp_sges;
 	attr->max_mr = le32_to_cpu(sb->max_mr);
 	attr->max_mw = le32_to_cpu(sb->max_mw);
@@ -151,9 +153,17 @@ int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
 	attr->max_srq_sges = sb->max_srq_sge;
 	attr->max_pkey = 1;
 	attr->max_inline_data = le32_to_cpu(sb->max_inline_data);
-	attr->l2_db_size = (sb->l2_db_space_size + 1) *
-			    (0x01 << RCFW_DBR_BASE_PAGE_SHIFT);
-	attr->max_sgid = BNXT_QPLIB_NUM_GIDS_SUPPORTED;
+	if (!bnxt_qplib_is_chip_gen_p7(rcfw->res->cctx))
+		attr->l2_db_size = (sb->l2_db_space_size + 1) *
+				    (0x01 << RCFW_DBR_BASE_PAGE_SHIFT);
+	/*
+	 * Read the max gid supported by HW.
+	 * For each entry in HW  GID in HW table, we consume 2
+	 * GID entries in the kernel GID table.  So max_gid reported
+	 * to stack can be up to twice the value reported by the HW, up to 256 gids.
+	 */
+	attr->max_sgid = le32_to_cpu(sb->max_gid);
+	attr->max_sgid = min_t(u32, BNXT_QPLIB_NUM_GIDS_SUPPORTED, 2 * attr->max_sgid);
 	attr->dev_cap_flags = le16_to_cpu(sb->dev_cap_flags);
 
 	bnxt_qplib_query_version(rcfw, attr->fw_ver);
@@ -934,7 +944,7 @@ int bnxt_qplib_modify_cc(struct bnxt_qplib_res *res,
 	req->inactivity_th = cpu_to_le16(cc_param->inact_th);
 
 	/* For chip gen P5 onwards fill extended cmd and header */
-	if (bnxt_qplib_is_chip_gen_p5(res->cctx)) {
+	if (bnxt_qplib_is_chip_gen_p5_p7(res->cctx)) {
 		struct roce_tlv *hdr;
 		u32 payload;
 		u32 chunks;
drivers/infiniband/hw/bnxt_re/qplib_sp.h +1 -0
index d33c78b96217..755765e68eaa 100644
@@ -55,6 +55,7 @@ struct bnxt_qplib_dev_attr {
 	u32				max_qp_wqes;
 	u32				max_qp_sges;
 	u32				max_cq;
+#define BNXT_QPLIB_MAX_CQ_WQES          0xfffff
 	u32				max_cq_wqes;
 	u32				max_cq_sges;
 	u32				max_mr;
drivers/infiniband/hw/cxgb4/cm.c +4 -5
index b3757c6a0457..8d753e6e0c71 100644
@@ -2086,7 +2086,7 @@ static int import_ep(struct c4iw_ep *ep, int iptype, __u8 *peer_ip,
 	err = -ENOMEM;
 	if (n->dev->flags & IFF_LOOPBACK) {
 		if (iptype == 4)
-			pdev = ip_dev_find(&init_net, *(__be32 *)peer_ip);
+			pdev = __ip_dev_find(&init_net, *(__be32 *)peer_ip, false);
 		else if (IS_ENABLED(CONFIG_IPV6))
 			for_each_netdev(&init_net, pdev) {
 				if (ipv6_chk_addr(&init_net,
@@ -2101,12 +2101,12 @@ static int import_ep(struct c4iw_ep *ep, int iptype, __u8 *peer_ip,
 			err = -ENODEV;
 			goto out;
 		}
+		if (is_vlan_dev(pdev))
+			pdev = vlan_dev_real_dev(pdev);
 		ep->l2t = cxgb4_l2t_get(cdev->rdev.lldi.l2t,
 					n, pdev, rt_tos2priority(tos));
-		if (!ep->l2t) {
-			dev_put(pdev);
+		if (!ep->l2t)
 			goto out;
-		}
 		ep->mtu = pdev->mtu;
 		ep->tx_chan = cxgb4_port_chan(pdev);
 		ep->smac_idx = ((struct port_info *)netdev_priv(pdev))->smt_idx;
@@ -2119,7 +2119,6 @@ static int import_ep(struct c4iw_ep *ep, int iptype, __u8 *peer_ip,
 		ep->rss_qid = cdev->rdev.lldi.rxq_ids[
 			cxgb4_port_idx(pdev) * step];
 		set_tcp_window(ep, (struct port_info *)netdev_priv(pdev));
-		dev_put(pdev);
 	} else {
 		pdev = get_real_dev(n->dev);
 		ep->l2t = cxgb4_l2t_get(cdev->rdev.lldi.l2t,
drivers/infiniband/hw/irdma/cm.c +1 -1
index 42d1e9771066..1916daa8c332 100644
@@ -3630,7 +3630,7 @@ void irdma_free_lsmm_rsrc(struct irdma_qp *iwqp)
 /**
  * irdma_accept - registered call for connection to be accepted
  * @cm_id: cm information for passive connection
- * @conn_param: accpet parameters
+ * @conn_param: accept parameters
  */
 int irdma_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
 {
drivers/infiniband/ulp/srpt/ib_srpt.c +68 -12

145 lines not on this page · raw message

drivers/irqchip/irq-renesas-rzg2l.c +79 -15

154 lines not on this page · raw message

drivers/net/dsa/mv88e6xxx/chip.c +1 -1
index 3877744193e2..062bcbe6255c 100644
@@ -6208,7 +6208,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
 		.invalid_port_mask = BIT(1) | BIT(2) | BIT(8),
 		.num_internal_phys = 5,
 		.internal_phys_offset = 3,
-		.max_vid = 4095,
+		.max_vid = 8191,
 		.max_sid = 63,
 		.port_base_addr = 0x0,
 		.phy_base_addr = 0x0,
drivers/net/dsa/mv88e6xxx/chip.h +2 -4
index f48a3c0ac7f9..f02518e93b60 100644
@@ -206,6 +206,7 @@ struct mv88e6xxx_gpio_ops;
 struct mv88e6xxx_avb_ops;
 struct mv88e6xxx_ptp_ops;
 struct mv88e6xxx_pcs_ops;
+struct mv88e6xxx_cc_coeffs;
 
 struct mv88e6xxx_irq {
 	u16 masked;
@@ -397,6 +398,7 @@ struct mv88e6xxx_chip {
 	struct cyclecounter	tstamp_cc;
 	struct timecounter	tstamp_tc;
 	struct delayed_work	overflow_work;
+	const struct mv88e6xxx_cc_coeffs *cc_coeffs;
 
 	struct ptp_clock	*ptp_clock;
 	struct ptp_clock_info	ptp_clock_info;
@@ -719,10 +721,6 @@ struct mv88e6xxx_ptp_ops {
 	int arr1_sts_reg;
 	int dep_sts_reg;
 	u32 rx_filters;
-	u32 cc_shift;
-	u32 cc_mult;
-	u32 cc_mult_num;
-	u32 cc_mult_dem;
 };
 
 struct mv88e6xxx_pcs_ops {
drivers/net/dsa/mv88e6xxx/port.c +1 -0
index 5394a8cf7bf1..04053fdc6489 100644
@@ -1713,6 +1713,7 @@ int mv88e6393x_port_set_policy(struct mv88e6xxx_chip *chip, int port,
 	ptr = shift / 8;
 	shift %= 8;
 	mask >>= ptr * 8;
+	ptr <<= 8;
 
 	err = mv88e6393x_port_policy_read(chip, port, ptr, &reg);
 	if (err)
drivers/net/dsa/mv88e6xxx/ptp.c +75 -33

187 lines not on this page · raw message

drivers/net/ethernet/aeroflex/greth.c +2 -1
index 597a02c75d52..e624d31d20d8 100644
@@ -484,7 +484,7 @@ greth_start_xmit_gbit(struct sk_buff *skb, struct net_device *dev)
 
 	if (unlikely(skb->len > MAX_FRAME_SIZE)) {
 		dev->stats.tx_errors++;
-		goto out;
+		goto len_error;
 	}
 
 	/* Save skb pointer. */
@@ -575,6 +575,7 @@ greth_start_xmit_gbit(struct sk_buff *skb, struct net_device *dev)
 map_error:
 	if (net_ratelimit())
 		dev_warn(greth->dev, "Could not create TX DMA mapping\n");
+len_error:
 	dev_kfree_skb(skb);
 out:
 	return err;
drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c +1 -0
index 6bf149d64594..f0647286c68b 100644
@@ -322,6 +322,7 @@ static netdev_tx_t bcmasp_xmit(struct sk_buff *skb, struct net_device *dev)
 			}
 			/* Rewind so we do not have a hole */
 			spb_index = intf->tx_spb_index;
+			dev_kfree_skb(skb);
 			return NETDEV_TX_OK;
 		}
 
drivers/net/ethernet/broadcom/bcmsysport.c +1 -0
index bf1611cce974..49e890a7e04a 100644
@@ -1359,6 +1359,7 @@ static netdev_tx_t bcm_sysport_xmit(struct sk_buff *skb,
 		netif_err(priv, tx_err, dev, "DMA map failed at %p (len=%d)\n",
 			  skb->data, skb_len);
 		ret = NETDEV_TX_OK;
+		dev_kfree_skb_any(skb);
 		goto out;
 	}
 
drivers/net/ethernet/emulex/benet/be_main.c +5 -5
index ad862ed7888a..9d425ece33fd 100644
@@ -1381,10 +1381,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev)
 	be_get_wrb_params_from_skb(adapter, skb, &wrb_params);
 
 	wrb_cnt = be_xmit_enqueue(adapter, txo, skb, &wrb_params);
-	if (unlikely(!wrb_cnt)) {
-		dev_kfree_skb_any(skb);
-		goto drop;
-	}
+	if (unlikely(!wrb_cnt))
+		goto drop_skb;
 
 	/* if os2bmc is enabled and if the pkt is destined to bmc,
 	 * enqueue the pkt a 2nd time with mgmt bit set.
@@ -1393,7 +1391,7 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev)
 		BE_WRB_F_SET(wrb_params.features, OS2BMC, 1);
 		wrb_cnt = be_xmit_enqueue(adapter, txo, skb, &wrb_params);
 		if (unlikely(!wrb_cnt))
-			goto drop;
+			goto drop_skb;
 		else
 			skb_get(skb);
 	}
@@ -1407,6 +1405,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev)
 		be_xmit_flush(adapter, txo);
 
 	return NETDEV_TX_OK;
+drop_skb:
+	dev_kfree_skb_any(skb);
 drop:
 	tx_stats(txo)->tx_drv_drops++;
 	/* Flush the already enqueued tx requests */
drivers/net/ethernet/freescale/fman/mac.c +51 -17

164 lines not on this page · raw message

drivers/net/ethernet/freescale/fman/mac.h +5 -1
index fe747915cc73..8b5b43d50f8e 100644
@@ -19,12 +19,13 @@
 struct fman_mac;
 struct mac_priv_s;
 
+#define PORT_NUM 2
 struct mac_device {
 	void __iomem		*vaddr;
 	struct device		*dev;
 	struct resource		*res;
 	u8			 addr[ETH_ALEN];
-	struct fman_port	*port[2];
+	struct fman_port	*port[PORT_NUM];
 	struct phylink		*phylink;
 	struct phylink_config	phylink_config;
 	phy_interface_t		phy_if;
@@ -52,6 +53,9 @@ struct mac_device {
 
 	struct fman_mac		*fman_mac;
 	struct mac_priv_s	*priv;
+
+	struct device		*fman_dev;
+	struct device		*fman_port_devs[PORT_NUM];
 };
 
 static inline struct mac_device
drivers/net/ethernet/i825xx/sun3_82586.c +1 -0
index f2d4669c81cf..58a3d28d938c 100644
@@ -1012,6 +1012,7 @@ sun3_82586_send_packet(struct sk_buff *skb, struct net_device *dev)
 	if(skb->len > XMIT_BUFF_SIZE)
 	{
 		printk("%s: Sorry, max. framelength is %d bytes. The length of your frame is %d bytes.\n",dev->name,XMIT_BUFF_SIZE,skb->len);
+		dev_kfree_skb(skb);
 		return NETDEV_TX_OK;
 	}
 
drivers/net/ethernet/marvell/octeon_ep/octep_rx.c +59 -23

122 lines not on this page · raw message

drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +2 -2
index 224a025283ca..29487518ca67 100644
@@ -2298,7 +2298,7 @@ static int nix_smq_flush(struct rvu *rvu, int blkaddr,
 				 NIX_AF_TL3_TL2X_LINKX_CFG(tl2_tl3_link_schq, link));
 		if (!(cfg & BIT_ULL(12)))
 			continue;
-		bmap |= (1 << i);
+		bmap |= BIT_ULL(i);
 		cfg &= ~BIT_ULL(12);
 		rvu_write64(rvu, blkaddr,
 			    NIX_AF_TL3_TL2X_LINKX_CFG(tl2_tl3_link_schq, link), cfg);
@@ -2319,7 +2319,7 @@ static int nix_smq_flush(struct rvu *rvu, int blkaddr,
 
 	/* Set NIX_AF_TL3_TL2_LINKX_CFG[ENA] for the TL3/TL2 queue */
 	for (i = 0; i < (rvu->hw->cgx_links + rvu->hw->lbk_links); i++) {
-		if (!(bmap & (1 << i)))
+		if (!(bmap & BIT_ULL(i)))
 			continue;
 		cfg = rvu_read64(rvu, blkaddr,
 				 NIX_AF_TL3_TL2X_LINKX_CFG(tl2_tl3_link_schq, link));
drivers/net/ethernet/mellanox/mlx5/core/cmd.c +6 -2
index 48dc4ae87af0..80af0fc7101f 100644
@@ -1758,6 +1758,10 @@ static void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, u64 vec, bool force
 	}
 }
 
+#define MLX5_MAX_MANAGE_PAGES_CMD_ENT 1
+#define MLX5_CMD_MASK ((1UL << (cmd->vars.max_reg_cmds + \
+			   MLX5_MAX_MANAGE_PAGES_CMD_ENT)) - 1)
+
 static void mlx5_cmd_trigger_completions(struct mlx5_core_dev *dev)
 {
 	struct mlx5_cmd *cmd = &dev->cmd;
@@ -1769,7 +1773,7 @@ static void mlx5_cmd_trigger_completions(struct mlx5_core_dev *dev)
 	/* wait for pending handlers to complete */
 	mlx5_eq_synchronize_cmd_irq(dev);
 	spin_lock_irqsave(&dev->cmd.alloc_lock, flags);
-	vector = ~dev->cmd.vars.bitmask & ((1ul << (1 << dev->cmd.vars.log_sz)) - 1);
+	vector = ~dev->cmd.vars.bitmask & MLX5_CMD_MASK;
 	if (!vector)
 		goto no_trig;
 
@@ -2275,7 +2279,7 @@ int mlx5_cmd_enable(struct mlx5_core_dev *dev)
 
 	cmd->state = MLX5_CMDIF_STATE_DOWN;
 	cmd->vars.max_reg_cmds = (1 << cmd->vars.log_sz) - 1;
-	cmd->vars.bitmask = (1UL << cmd->vars.max_reg_cmds) - 1;
+	cmd->vars.bitmask = MLX5_CMD_MASK;
 
 	sema_init(&cmd->vars.sem, cmd->vars.max_reg_cmds);
 	sema_init(&cmd->vars.pages_sem, 1);
drivers/net/ethernet/mellanox/mlx5/core/eq.c +6 -0
index 40a6cb052a2d..07a041954909 100644
@@ -1073,6 +1073,12 @@ int mlx5_comp_eqn_get(struct mlx5_core_dev *dev, u16 vecidx, int *eqn)
 	struct mlx5_eq_comp *eq;
 	int ret = 0;
 
+	if (vecidx >= table->max_comp_eqs) {
+		mlx5_core_dbg(dev, "Requested vector index %u should be less than %u",
+			      vecidx, table->max_comp_eqs);
+		return -EINVAL;
+	}
+
 	mutex_lock(&table->comp_lock);
 	eq = xa_load(&table->comp_eqs, vecidx);
 	if (eq) {
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +3 -2
index 1789800faaeb..f6022c135ec0 100644
@@ -1489,7 +1489,7 @@ int mlx5_eswitch_enable_locked(struct mlx5_eswitch *esw, int num_vfs)
 	}
 
 	if (err)
-		goto abort;
+		goto err_esw_enable;
 
 	esw->fdb_table.flags |= MLX5_ESW_FDB_CREATED;
 
@@ -1503,7 +1503,8 @@ int mlx5_eswitch_enable_locked(struct mlx5_eswitch *esw, int num_vfs)
 
 	return 0;
 
-abort:
+err_esw_enable:
+	mlx5_eq_notifier_unregister(esw->dev, &esw->nb);
 	mlx5_esw_acls_ns_cleanup(esw);
 	return err;
 }
drivers/net/ethernet/realtek/r8169_main.c +3 -1
index b499d8ea6d21..6856eb602f82 100644
@@ -4576,7 +4576,9 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
 	if ((status & 0xffff) == 0xffff || !(status & tp->irq_mask))
 		return IRQ_NONE;
 
-	if (unlikely(status & SYSErr)) {
+	/* At least RTL8168fp may unexpectedly set the SYSErr bit */
+	if (unlikely(status & SYSErr &&
+	    tp->mac_version <= RTL_GIGA_MAC_VER_06)) {
 		rtl8169_pcierr_interrupt(tp->dev);
 		goto out;
 	}
drivers/net/ethernet/renesas/ravb_main.c +12 -13
index c6897e6ea362..58fdc4f8dd48 100644
@@ -1673,20 +1673,19 @@ static int ravb_get_ts_info(struct net_device *ndev,
 	struct ravb_private *priv = netdev_priv(ndev);
 	const struct ravb_hw_info *hw_info = priv->info;
 
-	info->so_timestamping =
-		SOF_TIMESTAMPING_TX_SOFTWARE |
-		SOF_TIMESTAMPING_RX_SOFTWARE |
-		SOF_TIMESTAMPING_SOFTWARE |
-		SOF_TIMESTAMPING_TX_HARDWARE |
-		SOF_TIMESTAMPING_RX_HARDWARE |
-		SOF_TIMESTAMPING_RAW_HARDWARE;
-	info->tx_types = (1 << HWTSTAMP_TX_OFF) | (1 << HWTSTAMP_TX_ON);
-	info->rx_filters =
-		(1 << HWTSTAMP_FILTER_NONE) |
-		(1 << HWTSTAMP_FILTER_PTP_V2_L2_EVENT) |
-		(1 << HWTSTAMP_FILTER_ALL);
-	if (hw_info->gptp || hw_info->ccc_gac)
+	if (hw_info->gptp || hw_info->ccc_gac) {
+		info->so_timestamping =
+			SOF_TIMESTAMPING_TX_SOFTWARE |
+			SOF_TIMESTAMPING_TX_HARDWARE |
+			SOF_TIMESTAMPING_RX_HARDWARE |
+			SOF_TIMESTAMPING_RAW_HARDWARE;
+		info->tx_types = (1 << HWTSTAMP_TX_OFF) | (1 << HWTSTAMP_TX_ON);
+		info->rx_filters =
+			(1 << HWTSTAMP_FILTER_NONE) |
+			(1 << HWTSTAMP_FILTER_PTP_V2_L2_EVENT) |
+			(1 << HWTSTAMP_FILTER_ALL);
 		info->phc_index = ptp_clock_index(priv->ptp.clock);
+	}
 
 	return 0;
 }
drivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c +12 -2
index e0f3cbd36852..e2d61a3a7712 100644
@@ -127,10 +127,12 @@ static int mgbe_uphy_lane_bringup_serdes_up(struct net_device *ndev, void *mgbe_
 	value &= ~XPCS_WRAP_UPHY_RX_CONTROL_AUX_RX_IDDQ;
 	writel(value, mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
 
+	usleep_range(10, 20);  /* 50ns min delay needed as per HW design */
 	value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
 	value &= ~XPCS_WRAP_UPHY_RX_CONTROL_RX_SLEEP;
 	writel(value, mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
 
+	usleep_range(10, 20);  /* 500ns min delay needed as per HW design */
 	value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
 	value |= XPCS_WRAP_UPHY_RX_CONTROL_RX_CAL_EN;
 	writel(value, mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
@@ -143,22 +145,30 @@ static int mgbe_uphy_lane_bringup_serdes_up(struct net_device *ndev, void *mgbe_
 		return err;
 	}
 
+	usleep_range(10, 20);  /* 50ns min delay needed as per HW design */
 	value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
 	value |= XPCS_WRAP_UPHY_RX_CONTROL_RX_DATA_EN;
 	writel(value, mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
 
 	value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
-	value |= XPCS_WRAP_UPHY_RX_CONTROL_RX_CDR_RESET;
+	value &= ~XPCS_WRAP_UPHY_RX_CONTROL_RX_PCS_PHY_RDY;
 	writel(value, mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
 
+	usleep_range(10, 20);  /* 50ns min delay needed as per HW design */
 	value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
-	value &= ~XPCS_WRAP_UPHY_RX_CONTROL_RX_CDR_RESET;
+	value |= XPCS_WRAP_UPHY_RX_CONTROL_RX_CDR_RESET;
 	writel(value, mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
 
+	usleep_range(10, 20);  /* 50ns min delay needed as per HW design */
 	value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
 	value |= XPCS_WRAP_UPHY_RX_CONTROL_RX_PCS_PHY_RDY;
 	writel(value, mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
 
+	msleep(30);  /* 30ms delay needed as per HW design */
+	value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
+	value &= ~XPCS_WRAP_UPHY_RX_CONTROL_RX_CDR_RESET;
+	writel(value, mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL);
+
 	err = readl_poll_timeout(mgbe->xpcs + XPCS_WRAP_IRQ_STATUS, value,
 				 value & XPCS_WRAP_IRQ_STATUS_PCS_LINK_STS,
 				 500, 500 * 2000);
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +2 -0
index 62c10eb4f0ad..9f779653ed62 100644
@@ -845,6 +845,7 @@ axienet_start_xmit(struct sk_buff *skb, struct net_device *ndev)
 		if (net_ratelimit())
 			netdev_err(ndev, "TX DMA mapping error\n");
 		ndev->stats.tx_dropped++;
+		dev_kfree_skb_any(skb);
 		return NETDEV_TX_OK;
 	}
 	desc_set_phys_addr(lp, phys, cur_p);
@@ -865,6 +866,7 @@ axienet_start_xmit(struct sk_buff *skb, struct net_device *ndev)
 			ndev->stats.tx_dropped++;
 			axienet_free_tx_chain(lp, orig_tail_ptr, ii + 1,
 					      true, NULL, 0);
+			dev_kfree_skb_any(skb);
 			return NETDEV_TX_OK;
 		}
 		desc_set_phys_addr(lp, phys, cur_p);
drivers/net/hyperv/netvsc_drv.c +30 -0
index 9d2d66a4aafd..8698d2db3dc8 100644
@@ -2795,6 +2795,31 @@ static struct  hv_driver netvsc_drv = {
 	},
 };
 
+/* Set VF's namespace same as the synthetic NIC */
+static void netvsc_event_set_vf_ns(struct net_device *ndev)
+{
+	struct net_device_context *ndev_ctx = netdev_priv(ndev);
+	struct net_device *vf_netdev;
+	int ret;
+
+	vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev);
+	if (!vf_netdev)
+		return;
+
+	if (!net_eq(dev_net(ndev), dev_net(vf_netdev))) {
+		ret = dev_change_net_namespace(vf_netdev, dev_net(ndev),
+					       "eth%d");
+		if (ret)
+			netdev_err(vf_netdev,
+				   "Cannot move to same namespace as %s: %d\n",
+				   ndev->name, ret);
+		else
+			netdev_info(vf_netdev,
+				    "Moved VF to namespace with: %s\n",
+				    ndev->name);
+	}
+}
+
 /*
  * On Hyper-V, every VF interface is matched with a corresponding
  * synthetic interface. The synthetic interface is presented first
@@ -2807,6 +2832,11 @@ static int netvsc_netdev_event(struct notifier_block *this,
 	struct net_device *event_dev = netdev_notifier_info_to_dev(ptr);
 	int ret = 0;
 
+	if (event_dev->netdev_ops == &device_ops && event == NETDEV_REGISTER) {
+		netvsc_event_set_vf_ns(event_dev);
+		return NOTIFY_DONE;
+	}
+
 	ret = check_dev_is_matching_vf(event_dev);
 	if (ret != 0)
 		return NOTIFY_DONE;
drivers/net/macsec.c +0 -18
index 778fb77c5a93..2ada8baf815b 100644
@@ -151,19 +151,6 @@ static struct macsec_rx_sa *macsec_rxsa_get(struct macsec_rx_sa __rcu *ptr)
 	return sa;
 }
 
-static struct macsec_rx_sa *macsec_active_rxsa_get(struct macsec_rx_sc *rx_sc)
-{
-	struct macsec_rx_sa *sa = NULL;
-	int an;
-
-	for (an = 0; an < MACSEC_NUM_AN; an++)	{
-		sa = macsec_rxsa_get(rx_sc->sa[an]);
-		if (sa)
-			break;
-	}
-	return sa;
-}
-
 static void free_rx_sc_rcu(struct rcu_head *head)
 {
 	struct macsec_rx_sc *rx_sc = container_of(head, struct macsec_rx_sc, rcu_head);
@@ -1205,15 +1192,12 @@ static rx_handler_result_t macsec_handle_frame(struct sk_buff **pskb)
 		/* If validateFrames is Strict or the C bit in the
 		 * SecTAG is set, discard
 		 */
-		struct macsec_rx_sa *active_rx_sa = macsec_active_rxsa_get(rx_sc);
 		if (hdr->tci_an & MACSEC_TCI_C ||
 		    secy->validate_frames == MACSEC_VALIDATE_STRICT) {
 			u64_stats_update_begin(&rxsc_stats->syncp);
 			rxsc_stats->stats.InPktsNotUsingSA++;
 			u64_stats_update_end(&rxsc_stats->syncp);
 			DEV_STATS_INC(secy->netdev, rx_errors);
-			if (active_rx_sa)
-				this_cpu_inc(active_rx_sa->stats->InPktsNotUsingSA);
 			goto drop_nosa;
 		}
 
@@ -1223,8 +1207,6 @@ static rx_handler_result_t macsec_handle_frame(struct sk_buff **pskb)
 		u64_stats_update_begin(&rxsc_stats->syncp);
 		rxsc_stats->stats.InPktsUnusedSA++;
 		u64_stats_update_end(&rxsc_stats->syncp);
-		if (active_rx_sa)
-			this_cpu_inc(active_rx_sa->stats->InPktsUnusedSA);
 		goto deliver;
 	}
 
drivers/net/netdevsim/dev.c +9 -6
index 92a7a36b93ac..3e0b61202f0c 100644
@@ -836,7 +836,8 @@ static void nsim_dev_trap_report_work(struct work_struct *work)
 	nsim_dev = nsim_trap_data->nsim_dev;
 
 	if (!devl_trylock(priv_to_devlink(nsim_dev))) {
-		schedule_delayed_work(&nsim_dev->trap_data->trap_report_dw, 1);
+		queue_delayed_work(system_unbound_wq,
+				   &nsim_dev->trap_data->trap_report_dw, 1);
 		return;
 	}
 
@@ -848,11 +849,12 @@ static void nsim_dev_trap_report_work(struct work_struct *work)
 			continue;
 
 		nsim_dev_trap_report(nsim_dev_port);
+		cond_resched();
 	}
 	devl_unlock(priv_to_devlink(nsim_dev));
-
-	schedule_delayed_work(&nsim_dev->trap_data->trap_report_dw,
-			      msecs_to_jiffies(NSIM_TRAP_REPORT_INTERVAL_MS));
+	queue_delayed_work(system_unbound_wq,
+			   &nsim_dev->trap_data->trap_report_dw,
+			   msecs_to_jiffies(NSIM_TRAP_REPORT_INTERVAL_MS));
 }
 
 static int nsim_dev_traps_init(struct devlink *devlink)
@@ -907,8 +909,9 @@ static int nsim_dev_traps_init(struct devlink *devlink)
 
 	INIT_DELAYED_WORK(&nsim_dev->trap_data->trap_report_dw,
 			  nsim_dev_trap_report_work);
-	schedule_delayed_work(&nsim_dev->trap_data->trap_report_dw,
-			      msecs_to_jiffies(NSIM_TRAP_REPORT_INTERVAL_MS));
+	queue_delayed_work(system_unbound_wq,
+			   &nsim_dev->trap_data->trap_report_dw,
+			   msecs_to_jiffies(NSIM_TRAP_REPORT_INTERVAL_MS));
 
 	return 0;
 
drivers/net/phy/dp83822.c +2 -2
index 29e1cbea6dc0..507726a08f82 100644
@@ -40,8 +40,8 @@
 /* Control Register 2 bits */
 #define DP83822_FX_ENABLE	BIT(14)
 
-#define DP83822_HW_RESET	BIT(15)
-#define DP83822_SW_RESET	BIT(14)
+#define DP83822_SW_RESET	BIT(15)
+#define DP83822_DIG_RESTART	BIT(14)
 
 /* PHY STS bits */
 #define DP83822_PHYSTS_DUPLEX			BIT(2)
drivers/net/plip/plip.c +1 -1
index 40ce8abe6999..6019811920a4 100644
@@ -815,7 +815,7 @@ plip_send_packet(struct net_device *dev, struct net_local *nl,
 				return HS_TIMEOUT;
 			}
 		}
-		break;
+		fallthrough;
 
 	case PLIP_PK_LENGTH_LSB:
 		if (plip_send(nibble_timeout, dev,
drivers/net/usb/usbnet.c +3 -1
index 60c58dd6d253..9f66c47dc58b 100644
@@ -1771,7 +1771,8 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
 		// can rename the link if it knows better.
 		if ((dev->driver_info->flags & FLAG_ETHER) != 0 &&
 		    ((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 ||
-		     (net->dev_addr [0] & 0x02) == 0))
+		     /* somebody touched it*/
+		     !is_zero_ether_addr(net->dev_addr)))
 			strscpy(net->name, "eth%d", sizeof(net->name));
 		/* WLAN devices should always be named "wlan%d" */
 		if ((dev->driver_info->flags & FLAG_WLAN) != 0)
@@ -1874,6 +1875,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
 	 * may trigger an error resubmitting itself and, worse,
 	 * schedule a timer. So we kill it all just in case.
 	 */
+	usbnet_mark_going_away(dev);
 	cancel_work_sync(&dev->kevent);
 	del_timer_sync(&dev->delay);
 	free_percpu(net->tstats);
drivers/net/vmxnet3/vmxnet3_xdp.c +1 -1
index a6c787454a1a..1341374a4588 100644
@@ -148,7 +148,7 @@ vmxnet3_xdp_xmit_frame(struct vmxnet3_adapter *adapter,
 	} else { /* XDP buffer from page pool */
 		page = virt_to_page(xdpf->data);
 		tbi->dma_addr = page_pool_get_dma_addr(page) +
-				VMXNET3_XDP_HEADROOM;
+				(xdpf->data - (void *)xdpf);
 		dma_sync_single_for_device(&adapter->pdev->dev,
 					   tbi->dma_addr, buf_size,
 					   DMA_TO_DEVICE);
drivers/net/wwan/wwan_core.c +1 -1
index 284ab1f56391..45ed3afc443d 100644
@@ -1031,7 +1031,7 @@ static const struct nla_policy wwan_rtnl_policy[IFLA_WWAN_MAX + 1] = {
 
 static struct rtnl_link_ops wwan_rtnl_link_ops __read_mostly = {
 	.kind = "wwan",
-	.maxtype = __IFLA_WWAN_MAX,
+	.maxtype = IFLA_WWAN_MAX,
 	.alloc = wwan_rtnl_alloc,
 	.validate = wwan_rtnl_validate,
 	.newlink = wwan_rtnl_newlink,
drivers/nvme/host/pci.c +17 -4
index 32b5cc76a022..b701969cf1c2 100644
@@ -2469,17 +2469,29 @@ static unsigned int nvme_pci_nr_maps(struct nvme_dev *dev)
 	return 1;
 }
 
-static void nvme_pci_update_nr_queues(struct nvme_dev *dev)
+static bool nvme_pci_update_nr_queues(struct nvme_dev *dev)
 {
 	if (!dev->ctrl.tagset) {
 		nvme_alloc_io_tag_set(&dev->ctrl, &dev->tagset, &nvme_mq_ops,
 				nvme_pci_nr_maps(dev), sizeof(struct nvme_iod));
-		return;
+		return true;
+	}
+
+	/* Give up if we are racing with nvme_dev_disable() */
+	if (!mutex_trylock(&dev->shutdown_lock))
+		return false;
+
+	/* Check if nvme_dev_disable() has been executed already */
+	if (!dev->online_queues) {
+		mutex_unlock(&dev->shutdown_lock);
+		return false;
 	}
 
 	blk_mq_update_nr_hw_queues(&dev->tagset, dev->online_queues - 1);
 	/* free previously allocated queues that are no longer usable */
 	nvme_free_queues(dev, dev->online_queues);
+	mutex_unlock(&dev->shutdown_lock);
+	return true;
 }
 
 static int nvme_pci_enable(struct nvme_dev *dev)
@@ -2757,10 +2769,11 @@ static void nvme_reset_work(struct work_struct *work)
 	 * controller around but remove all namespaces.
 	 */
 	if (dev->online_queues > 1) {
+		nvme_dbbuf_set(dev);
 		nvme_unquiesce_io_queues(&dev->ctrl);
 		nvme_wait_freeze(&dev->ctrl);
-		nvme_pci_update_nr_queues(dev);
-		nvme_dbbuf_set(dev);
+		if (!nvme_pci_update_nr_queues(dev))
+			goto out;
 		nvme_unfreeze(&dev->ctrl);
 	} else {
 		dev_warn(dev->ctrl.device, "IO queues lost\n");
drivers/platform/x86/dell/dell-wmi-base.c +9 -0
index 502783a7adb1..24fd7ffadda9 100644
@@ -264,6 +264,15 @@ static const struct key_entry dell_wmi_keymap_type_0010[] = {
 	/*Speaker Mute*/
 	{ KE_KEY, 0x109, { KEY_MUTE} },
 
+	/* S2Idle screen off */
+	{ KE_IGNORE, 0x120, { KEY_RESERVED }},
+
+	/* Leaving S4 or S2Idle suspend */
+	{ KE_IGNORE, 0x130, { KEY_RESERVED }},
+
+	/* Entering S2Idle suspend */
+	{ KE_IGNORE, 0x140, { KEY_RESERVED }},
+
 	/* Mic mute */
 	{ KE_KEY, 0x150, { KEY_MICMUTE } },
 
drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +1 -0
index b929b4f82420..af49dd6b31ad 100644
@@ -521,6 +521,7 @@ static int __init sysman_init(void)
 	int ret = 0;
 
 	if (!dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Dell System", NULL) &&
+	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Alienware", NULL) &&
 	    !dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "www.dell.com", NULL)) {
 		pr_err("Unable to run on non-Dell system\n");
 		return -ENODEV;
drivers/powercap/dtpm_devfreq.c +1 -1
index 612c3b59dd5b..0ca53db7a90e 100644
@@ -166,7 +166,7 @@ static int __dtpm_devfreq_setup(struct devfreq *devfreq, struct dtpm *parent)
 	ret = dev_pm_qos_add_request(dev, &dtpm_devfreq->qos_req,
 				     DEV_PM_QOS_MAX_FREQUENCY,
 				     PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE);
-	if (ret) {
+	if (ret < 0) {
 		pr_err("Failed to add QoS request: %d\n", ret);
 		goto out_dtpm_unregister;
 	}
drivers/target/target_core_device.c +1 -1
index 86590a7e29f6..dd041ee18ac9 100644
@@ -692,7 +692,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name)
 
 	dev->queues = kcalloc(nr_cpu_ids, sizeof(*dev->queues), GFP_KERNEL);
 	if (!dev->queues) {
-		dev->transport->free_device(dev);
+		hba->backend->ops->free_device(dev);
 		return NULL;
 	}
 
drivers/target/target_core_user.c +1 -1
index 22cc6cac0ba2..2e100b76914a 100644
@@ -2130,7 +2130,7 @@ static int tcmu_netlink_event_send(struct tcmu_dev *udev,
 	}
 
 	ret = genlmsg_multicast_allns(&tcmu_genl_family, skb, 0,
-				      TCMU_MCGRP_CONFIG, GFP_KERNEL);
+				      TCMU_MCGRP_CONFIG);
 
 	/* Wait during an add as the listener may not be up yet */
 	if (ret == 0 ||
drivers/usb/dwc3/core.c +19 -0
index af851e4e8c8a..8cbe19574bbc 100644
@@ -2106,6 +2106,11 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
 {
 	u32 reg;
 
+	dwc->susphy_state = (dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)) &
+			    DWC3_GUSB2PHYCFG_SUSPHY) ||
+			    (dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(0)) &
+			    DWC3_GUSB3PIPECTL_SUSPHY);
+
 	switch (dwc->current_dr_role) {
 	case DWC3_GCTL_PRTCAP_DEVICE:
 		if (pm_runtime_suspended(dwc->dev))
@@ -2153,6 +2158,15 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
 		break;
 	}
 
+	if (!PMSG_IS_AUTO(msg)) {
+		/*
[… more lines in the raw message]

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

drivers/usb/dwc3/core.h +3 -0
index 420753205faf..3325796f3cb4 100644

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

drivers/usb/gadget/function/f_uac2.c +8 -5
index 0219cd79493a..b3dc5f5164f4 100644

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

drivers/usb/host/xhci-caps.h new file +85 -0

85 lines not on this page · raw message

drivers/usb/host/xhci-dbgcap.h +1 -1
index 51a7ab3ba0ca..76170d7a7e7c 100644

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

drivers/usb/host/xhci-dbgtty.c +53 -20

73 lines not on this page · raw message

drivers/usb/host/xhci-port.h new file +176 -0

176 lines not on this page · raw message

drivers/usb/host/xhci.h +3 -259

262 lines not on this page · raw message

drivers/usb/typec/class.c +3 -0
index f92fc2acfcba..79cad8d61dac 100644

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

fs/btrfs/block-group.c +2 -0
index 4e999e1c1407..434cf3d5f4cf 100644

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

fs/btrfs/dir-item.c +2 -2
index 9c07d5c3e5ad..7066414be6ee 100644

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

fs/btrfs/inode.c +2 -5
index ee04185d8e0f..ea19ea75674d 100644

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

fs/exec.c +9 -12
index f49b352a6032..7776209d98c1 100644

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

fs/jfs/jfs_dmap.c +1 -1
index 974ecf5e0d95..3ab410059dc2 100644

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

fs/nfsd/nfs4state.c +1 -1
index f16bbbfcf672..975dd74a7a4d 100644

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

fs/nilfs2/page.c +4 -2
index b4e54d079b7d..36d29c183bb7 100644

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

fs/open.c +2 -0
index 59db720693f9..f9ac703ec1b2 100644

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

fs/smb/client/fs_context.c +7 -0
index 3bbac925d076..8d7484400fe8 100644

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

fs/smb/client/reparse.c +23 -0
index ad0e0de9a165..7429b96a6ae5 100644

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

fs/smb/client/smb2ops.c +2 -1
index 450e3050324c..ab6e79be2c15 100644

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

fs/smb/client/smb2pdu.c +9 -0
index 83a03201bb86..a86a3fbfb5a4 100644

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

fs/udf/balloc.c +25 -13
index bb471ec36404..f5de2030e769 100644

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

fs/udf/directory.c +16 -7
index 93153665eb37..632453aa3893 100644

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

fs/udf/inode.c +134 -68

202 lines not on this page · raw message

fs/udf/partition.c +4 -2
index af877991edc1..2b85c9501bed 100644

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

fs/udf/super.c +2 -1
index 3c78535f406b..20dff9ed2471 100644

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

fs/udf/truncate.c +34 -9

43 lines not on this page · raw message

fs/udf/udfdecl.h +9 -6
index 88692512a466..d159f20d61e8 100644

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

include/acpi/cppc_acpi.h +2 -0
index ec425d2834f8..e1720d930666 100644

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

include/linux/bpf.h +11 -3
index 1e05cc80e048..5a27fd533fab 100644

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

include/linux/memcontrol.h +0 -14
index e4e24da16d2c..b1fdb1554f2f 100644

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

include/linux/netdevice.h +12 -0
index 8f5ac20b4c03..1576e7443eee 100644

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

include/linux/task_work.h +5 -1
index 26b8a47f41fc..2964171856e0 100644

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

include/linux/trace_events.h +4 -2
index cb8bd759e800..9d799777c333 100644

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

include/net/bluetooth/bluetooth.h +1 -0
index e4a6831133f8..4763a47bf8c8 100644

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

include/net/genetlink.h +1 -2
index c53244f20437..e8c34aa4a640 100644

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

include/net/sock.h +5 -0
index c3961050b8e3..e0be8bd98396 100644

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

include/net/xfrm.h +15 -13
index b280e7c46011..93a9866ee481 100644

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

include/trace/events/huge_memory.h +5 -5
index 6e2ef1d4b002..37f2443b3cdb 100644

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

include/uapi/linux/bpf.h +12 -8
index ba6e346c8d66..431bc700bcfb 100644

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

kernel/bpf/btf.c +1 -0
index e0e4d4f490e8..c8828016a66f 100644

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

kernel/bpf/devmap.c +7 -4
index 69e78dc4bb18..96b0345f76c2 100644

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

kernel/bpf/helpers.c +5 -5
index 3dba5bb294d8..41d62405c852 100644

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

kernel/bpf/ringbuf.c +1 -1
index 238d9b206bbd..246559c3e93d 100644

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

kernel/bpf/syscall.c +34 -13

47 lines not on this page · raw message

kernel/bpf/task_iter.c +1 -1
index c4ab9d6cdbe9..f7ef58090c7d 100644

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

kernel/bpf/verifier.c +50 -49

99 lines not on this page · raw message

kernel/sched/core.c +3 -1
index 9b406d988654..b6f922a20f83 100644

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

kernel/task_work.c +39 -4

43 lines not on this page · raw message

kernel/time/posix-clock.c +3 -3
index 8127673bfc45..05e73d209aa8 100644

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

kernel/trace/bpf_trace.c +5 -6
index eca858bde804..9064f75de7e4 100644

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

kernel/trace/trace.c +1 -0
index 4f93d57cc029..ecd869ed2767 100644

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

kernel/trace/trace_eprobe.c +10 -5
index 72714cbf475c..31bb977670bd 100644

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

kernel/trace/trace_fprobe.c +46 -19

65 lines not on this page · raw message

kernel/trace/trace_kprobe.c +63 -15

78 lines not on this page · raw message

kernel/trace/trace_probe.c +163 -26

189 lines not on this page · raw message

kernel/trace/trace_probe.h +28 -2
index c1877d018269..cef3a50628a3 100644

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

kernel/trace/trace_probe_tmpl.h +5 -5
index 3935b347f874..2caf0d2afb32 100644

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

kernel/trace/trace_uprobe.c +67 -47

114 lines not on this page · raw message

lib/Kconfig.debug +1 -1
index da5513cfc125..f94c3e957b82 100644

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

mm/khugepaged.c +61 -66

127 lines not on this page · raw message

net/bluetooth/af_bluetooth.c +22 -0
index e39fba5565c5..0b4d0a8bd361 100644

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

net/bluetooth/bnep/core.c +1 -2
index a660c428e220..38f542665f19 100644

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

net/bluetooth/iso.c +12 -6
index 9b365fb44fac..c2c80d600083 100644

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

net/bluetooth/sco.c +12 -6
index 3c3650902c83..fb368540139a 100644

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

net/core/filter.c +20 -30

50 lines not on this page · raw message

net/core/sock_map.c +8 -0
index 2afac40bb83c..2da881a8e798 100644

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

net/ipv4/devinet.c +25 -10
index cb0c80328eeb..4822f68edbf0 100644

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

net/ipv4/inet_connection_sock.c +16 -5
index 8720f3840b69..ca8cc0988b61 100644

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

net/ipv4/xfrm4_policy.c +18 -22
index c33bca2c3841..63bbc7f6a5a8 100644

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

net/ipv6/xfrm6_policy.c +16 -15
index 444b0b4469a4..4cd625af91e6 100644

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

net/l2tp/l2tp_netlink.c +2 -2
index a901fd14fe3b..e27e00cb16c6 100644

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

net/netfilter/nf_bpf_link.c +6 -1
index 0e4beae421f8..2aad0562a413 100644

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

net/netfilter/xt_NFLOG.c +1 -1
index d80abd6ccaf8..6dcf4bc7e30b 100644

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

net/netfilter/xt_TRACE.c +1 -0
index f3fa4f11348c..a642ff09fc8e 100644

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

net/netfilter/xt_mark.c +1 -1
index f76fe04fc9a4..65b965ca40ea 100644

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

net/netlink/genetlink.c +14 -14
index d41c4a936ad0..d6eee5140c8b 100644

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

net/sched/act_api.c +22 -1
index 2d6d58e1b278..4572aa6e0273 100644

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

net/sched/sch_generic.c +13 -4
index 6ab9359c1706..b51af871a621 100644

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

net/sched/sch_taprio.c +14 -7
index 87090d679036..951a87909c29 100644

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

net/smc/smc_pnet.c +1 -1
index 306b536fa89e..284cec1e20ec 100644

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

net/smc/smc_wr.c +5 -1
index 0021065a600a..994c0cd4fddb 100644

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

net/vmw_vsock/virtio_transport_common.c +12 -2
index e87fd9480acd..78b5f4f8808b 100644

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

net/vmw_vsock/vsock_bpf.c +0 -8
index c42c5cc18f32..4aa6e74ec295 100644

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

net/wireless/nl80211.c +2 -6
index 9e74f249cb45..797907303669 100644

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

net/xfrm/xfrm_device.c +8 -3
index 6346690d5c69..04dc0c8a8370 100644

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

net/xfrm/xfrm_policy.c +38 -12

50 lines not on this page · raw message

net/xfrm/xfrm_user.c +8 -2
index 979f23cded40..1d91b42e7997 100644

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

security/selinux/selinuxfs.c +16 -14
index 2c23a5a28608..54bc18e8164b 100644

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

sound/firewire/amdtp-stream.c +3 -0
index 5f0f8d9c08d1..8c6254ff143e 100644

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

sound/pci/hda/Kconfig +1 -1
index 9698ebe3fbc2..233b03bb4f98 100644

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

sound/pci/hda/patch_cs8409.c +3 -2
index e41316e2e983..892223d9e64a 100644

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

sound/pci/hda/patch_realtek.c +27 -21

48 lines not on this page · raw message

sound/soc/amd/yc/acp6x-mach.c +7 -0
index 248e3bcbf386..76f5d926d1ea 100644

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

sound/soc/codecs/lpass-rx-macro.c +1 -1
index 29197d34ec09..7e9f0ab91412 100644

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

sound/soc/codecs/max98388.c +1 -0
index cde5e85946cb..87386404129d 100644

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

sound/soc/fsl/fsl_micfil.c +42 -1

43 lines not on this page · raw message

sound/soc/fsl/fsl_sai.c +4 -1
index 3d202398c541..aa15f56ca139 100644

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

sound/soc/fsl/fsl_sai.h +1 -0
index 550df87b6a06..eba465c2387b 100644

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

sound/soc/loongson/loongson_card.c +1 -0
index 8cc54aedd002..010e959d4c69 100644

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

sound/soc/qcom/lpass-cpu.c +2 -0
index 73b42d9ee244..e587455dc40a 100644

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

sound/soc/qcom/sm8250.c +1 -0
index 6558bf2e14e8..9eb8ae0196d9 100644

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

sound/soc/sh/rcar/core.c +5 -2
index 1bd7114c472a..98c7be340a53 100644

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

tools/include/uapi/linux/bpf.h +7 -0
index ba6e346c8d66..977ec094bc2a 100644

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

tools/testing/selftests/bpf/Makefile +1 -1
index ab364e95a9b2..f5a3a84fac95 100644

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

tools/testing/selftests/bpf/prog_tests/fill_link_info.c +45 -24

69 lines not on this page · raw message

tools/testing/selftests/bpf/progs/verifier_helper_value_access.c +4 -4
index 692216c0ad3d..3e8340c2408f 100644

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

tools/testing/selftests/bpf/progs/verifier_raw_stack.c +1 -1
index f67390224a9c..7cc83acac727 100644

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

tools/testing/selftests/ftrace/test.d/dynevent/fprobe_syntax_errors.tc +4 -0
index 20e42c030095..61877d166451 100644

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

tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc +2 -0
index 65fbb26fd58c..a16c6a6f6055 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.