Linux 6.6.59
Greg Kroah-Hartman
maintainerI'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
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml +9 -9
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -537,7 +537,7 @@ static unsigned long dsi_adjust_pclk_for_compression(const struct drm_display_moint 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 0xfffffu32 max_cq_wqes;u32 max_cq_sges;u32 max_mr;
drivers/infiniband/hw/cxgb4/cm.c +4 -5
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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, ®);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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -19,12 +19,13 @@struct fman_mac ;struct mac_priv_s ; +#define PORT_NUM 2struct 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)) { +/*
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-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
fs/udf/inode.c +134 -68
202 lines not on this page · raw message
fs/udf/truncate.c +34 -9
43 lines not on this page · raw message
kernel/bpf/syscall.c +34 -13
47 lines not on this page · raw message
kernel/bpf/verifier.c +50 -49
99 lines not on this page · raw message
kernel/task_work.c +39 -4
43 lines not on this page · 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_uprobe.c +67 -47
114 lines not on this page · raw message
mm/khugepaged.c +61 -66
127 lines not on this page · raw message
net/core/filter.c +20 -30
50 lines not on this page · raw message
net/vmw_vsock/virtio_transport_common.c +12 -2
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
sound/pci/hda/patch_realtek.c +27 -21
48 lines not on this page · raw message
sound/soc/fsl/fsl_micfil.c +42 -1
43 lines not on this page · 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
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/verifier_raw_stack.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ftrace/test.d/dynevent/fprobe_syntax_errors.tc +4 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc +2 -0
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.