Skip to contentSkip to conversation

Linux 6.11.4

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

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.11.4 kernel.

All users of the 6.11 kernel series must upgrade.

The updated 6.11.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.11.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

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

 Makefile                                                             |    2 
 arch/loongarch/pci/acpi.c                                            |    1 
 arch/riscv/include/asm/sparsemem.h                                   |    2 
 arch/riscv/include/asm/string.h                                      |    2 
 arch/riscv/kernel/elf_kexec.c                                        |    6 
 arch/riscv/kernel/entry.S                                            |    4 
 arch/riscv/kernel/riscv_ksyms.c                                      |    3 
 arch/riscv/lib/Makefile                                              |    2 
 arch/riscv/lib/strcmp.S                                              |    1 
 arch/riscv/lib/strlen.S                                              |    1 
 arch/riscv/lib/strncmp.S                                             |    1 
 arch/riscv/purgatory/Makefile                                        |    2 
 arch/s390/include/asm/facility.h                                     |    6 
 arch/s390/include/asm/io.h                                           |    2 
 arch/s390/kernel/early.c                                             |   17 
 arch/s390/kernel/perf_cpum_sf.c                                      |   12 
 arch/s390/mm/cmm.c                                                   |   18 
 arch/x86/kernel/amd_nb.c                                             |    3 
 arch/x86/net/bpf_jit_comp.c                                          |   54 
 arch/x86/xen/enlighten_pv.c                                          |    4 
 drivers/acpi/resource.c                                              |   29 
 drivers/ata/libata-eh.c                                              |   18 
 drivers/base/bus.c                                                   |    8 
 drivers/base/power/common.c                                          |   25 
 drivers/block/zram/zram_drv.c                                        |    7 
 drivers/bluetooth/btusb.c                                            |   20 
 drivers/char/virtio_console.c                                        |   18 
 drivers/clk/bcm/clk-bcm53573-ilp.c                                   |    2 
 drivers/clk/imx/clk-imx7d.c                                          |    4 
 drivers/comedi/drivers/ni_routing/tools/convert_c_to_py.c            |    5 
 drivers/dax/device.c                                                 |    2 
 drivers/gpio/gpio-aspeed.c                                           |    4 
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c                     |    4 
 drivers/gpu/drm/amd/amdkfd/kfd_process.c                             |    7 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                    |    7 
 drivers/gpu/drm/amd/display/dc/core/dc.c                             |   47 
 drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h                         |   26 
 drivers/gpu/drm/drm_fbdev_dma.c                                      |    3 
 drivers/gpu/drm/i915/display/intel_hdcp.c                            |   10 
 drivers/gpu/drm/nouveau/dispnv04/crtc.c                              |    2 
 drivers/gpu/drm/nouveau/nouveau_abi16.c                              |    2 
 drivers/gpu/drm/nouveau/nouveau_bo.c                                 |    2 
 drivers/gpu/drm/nouveau/nouveau_chan.c                               |   21 
 drivers/gpu/drm/nouveau/nouveau_chan.h                               |    3 
 drivers/gpu/drm/nouveau/nouveau_dmem.c                               |    2 
 drivers/gpu/drm/nouveau/nouveau_drm.c                                |    4 
 drivers/gpu/drm/v3d/v3d_perfmon.c                                    |    9 
 drivers/gpu/drm/vc4/vc4_perfmon.c                                    |    7 
 drivers/gpu/drm/xe/xe_bb.c                                           |    3 
 drivers/gpu/drm/xe/xe_debugfs.c                                      |    2 
 drivers/gpu/drm/xe/xe_gt.c                                           |    4 
 drivers/gpu/drm/xe/xe_guc_ct.c                                       |   44 
 drivers/gpu/drm/xe/xe_guc_submit.c                                   |    9 
 drivers/hid/amd-sfh-hid/amd_sfh_client.c                             |   14 
 drivers/hid/hid-ids.h                                                |    3 
 drivers/hid/hid-multitouch.c                                         |    8 
 drivers/hid/hid-plantronics.c                                        |   23 
 drivers/hid/intel-ish-hid/ishtp-fw-loader.c                          |    2 
 drivers/hid/wacom_wac.c                                              |    2 
 drivers/hwmon/Kconfig                                                |    5 
 drivers/hwmon/intel-m10-bmc-hwmon.c                                  |    2 
 drivers/hwmon/k10temp.c                                              |    1 
 drivers/i2c/busses/i2c-i801.c                                        |    9 
 drivers/i3c/master/i3c-master-cdns.c                                 |    1 
 drivers/infiniband/core/mad.c                                        |   14 
 drivers/infiniband/hw/mlx5/odp.c                                     |   25 
 drivers/infiniband/ulp/rtrs/rtrs-srv.c                               |   13 
 drivers/md/dm-vdo/dedupe.c                                           |    3 
 drivers/media/common/videobuf2/videobuf2-core.c                      |    8 
 drivers/mfd/intel-lpss-pci.c                                         |   39 
 drivers/mfd/intel_soc_pmic_chtwc.c                                   |    1 
 drivers/mmc/host/mvsdio.c                                            |   71 
 drivers/mmc/host/sdhci-of-dwcmshc.c                                  |    8 
 drivers/net/dsa/b53/b53_common.c                                     |   17 
 drivers/net/dsa/lan9303-core.c                                       |   29 
 drivers/net/dsa/sja1105/sja1105_main.c                               |    1 
 drivers/net/ethernet/adi/adin1110.c                                  |    4 
 drivers/net/ethernet/freescale/fec_main.c                            |    6 
 drivers/net/ethernet/ibm/emac/mal.c                                  |    4 
 drivers/net/ethernet/intel/e1000e/hw.h                               |    4 
 drivers/net/ethernet/intel/e1000e/netdev.c                           |    4 
 drivers/net/ethernet/intel/i40e/i40e_main.c                          |    1 
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c                   |    2 
 drivers/net/ethernet/intel/ice/ice_ddp.c                             |   58 
 drivers/net/ethernet/intel/ice/ice_ddp.h                             |    4 
 drivers/net/ethernet/intel/ice/ice_dpll.c                            |    6 
 drivers/net/ethernet/intel/ice/ice_eswitch_br.c                      |    5 
 drivers/net/ethernet/intel/ice/ice_eswitch_br.h                      |    1 
 drivers/net/ethernet/intel/ice/ice_main.c                            |   39 
 drivers/net/ethernet/intel/ice/ice_sriov.c                           |   19 
 drivers/net/ethernet/intel/ice/ice_switch.c                          |    2 
 drivers/net/ethernet/intel/ice/ice_tc_lib.c                          |   11 
 drivers/net/ethernet/intel/ice/ice_vf_lib.c                          |    9 
 drivers/net/ethernet/intel/ice/ice_vf_lib_private.h                  |    1 
 drivers/net/ethernet/intel/ice/ice_vsi_vlan_lib.c                    |   57 
 drivers/net/ethernet/intel/ice/ice_vsi_vlan_lib.h                    |    1 
 drivers/net/ethernet/intel/idpf/idpf_virtchnl.c                      |    9 
 drivers/net/ethernet/intel/igb/igb_main.c                            |    4 
 drivers/net/ethernet/sfc/efx_channels.c                              |    3 
 drivers/net/ethernet/sfc/siena/efx_channels.c                        |    3 
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c                    |    2 
 drivers/net/ethernet/ti/icssg/icssg_config.c                         |    2 
 drivers/net/ethernet/ti/icssg/icssg_prueth.c                         |    1 
 drivers/net/ethernet/ti/icssg/icssg_prueth.h                         |    2 
 drivers/net/netconsole.c                                             |    8 
 drivers/net/phy/aquantia/aquantia_main.c                             |   51 
 drivers/net/phy/bcm84881.c                                           |    4 
 drivers/net/phy/dp83869.c                                            |    1 
 drivers/net/phy/phy_device.c                                         |    5 
 drivers/net/phy/realtek.c                                            |   24 
 drivers/net/ppp/ppp_async.c                                          |    2 
 drivers/net/pse-pd/pse_core.c                                        |   11 
 drivers/net/slip/slhc.c                                              |   57 
 drivers/net/vxlan/vxlan_core.c                                       |    6 
 drivers/net/vxlan/vxlan_private.h                                    |    2 
 drivers/net/vxlan/vxlan_vnifilter.c                                  |   19 
 drivers/ntb/hw/mscc/ntb_hw_switchtec.c                               |    1 
 drivers/nvdimm/nd_virtio.c                                           |    9 
 drivers/opp/core.c                                                   |    4 
 drivers/pci/controller/dwc/pcie-designware.c                         |    2 
 drivers/pci/controller/dwc/pcie-designware.h                         |    2 
 drivers/pci/controller/dwc/pcie-qcom.c                               |   72 
 drivers/pci/endpoint/pci-epc-core.c                                  |   14 
 drivers/pci/pci.c                                                    |   14 
 drivers/pci/probe.c                                                  |    2 
 drivers/pci/quirks.c                                                 |    8 
 drivers/pci/remove.c                                                 |    2 
 drivers/powercap/intel_rapl_tpmi.c                                   |   19 
 drivers/remoteproc/imx_rproc.c                                       |   13 
 drivers/scsi/fnic/fnic_main.c                                        |    2 
 drivers/scsi/lpfc/lpfc_ct.c                                          |   22 
 drivers/scsi/lpfc/lpfc_disc.h                                        |    7 
 drivers/scsi/lpfc/lpfc_els.c                                         |  132 
 drivers/scsi/lpfc/lpfc_vport.c                                       |   43 
 drivers/scsi/wd33c93.c                                               |    2 
 drivers/soundwire/cadence_master.c                                   |   39 
 drivers/soundwire/cadence_master.h                                   |    5 
 drivers/soundwire/intel.h                                            |    2 
 drivers/soundwire/intel_auxdevice.c                                  |    1 
 drivers/soundwire/intel_bus_common.c                                 |   27 
 drivers/staging/vme_user/vme_fake.c                                  |    6 
 drivers/staging/vme_user/vme_tsi148.c                                |    6 
 drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c |    2 
 drivers/thermal/thermal_core.c                                       |    5 
 drivers/thermal/thermal_core.h                                       |    3 
 drivers/thermal/thermal_netlink.c                                    |    9 
 drivers/tty/serial/serial_core.c                                     |   16 
 drivers/ufs/core/ufshcd.c                                            |    5 
 drivers/usb/chipidea/udc.c                                           |    8 
 drivers/usb/dwc2/platform.c                                          |   26 
 drivers/usb/dwc3/core.c                                              |   30 
 drivers/usb/dwc3/core.h                                              |    4 
 drivers/usb/dwc3/gadget.c                                            |   11 
 drivers/usb/gadget/function/uvc_v4l2.c                               |   12 
 drivers/usb/gadget/udc/core.c                                        |    1 
 drivers/usb/host/xhci-dbgcap.c                                       |  133 
 drivers/usb/host/xhci-dbgcap.h                                       |    2 
 drivers/usb/host/xhci-pci.c                                          |    5 
 drivers/usb/host/xhci-plat.c                                         |    6 
 drivers/usb/misc/yurex.c                                             |   19 
 drivers/usb/storage/unusual_devs.h                                   |   11 
 drivers/usb/typec/tipd/core.c                                        |    3 
 drivers/vdpa/octeon_ep/octep_vdpa_hw.c                               |   12 
 drivers/video/fbdev/core/fbcon.c                                     |    2 
 drivers/video/fbdev/sis/sis_main.c                                   |    2 
 fs/btrfs/extent-tree.c                                               |   26 
 fs/btrfs/free-space-cache.c                                          |    4 
 fs/btrfs/free-space-cache.h                                          |    6 
 fs/btrfs/volumes.h                                                   |    6 
 fs/btrfs/zoned.c                                                     |    2 
 fs/ext4/super.c                                                      |    9 
 fs/ext4/xattr.c                                                      |    4 
 fs/nfs/callback_xdr.c                                                |    2 
 fs/nfs/client.c                                                      |    1 
 fs/nfs/nfs42proc.c                                                   |    2 
 fs/nfs/nfs4state.c                                                   |    2 
 fs/nfsd/filecache.c                                                  |    4 
 fs/nfsd/nfs4state.c                                                  |    1 
 fs/nfsd/nfssvc.c                                                     |    6 
 fs/ntfs3/file.c                                                      |   40 
 fs/ntfs3/frecord.c                                                   |   21 
 fs/ntfs3/fslog.c                                                     |   19 
 fs/ntfs3/namei.c                                                     |    4 
 fs/ntfs3/super.c                                                     |    3 
 fs/proc/kcore.c                                                      |   36 
 fs/smb/client/smb2ops.c                                              |   47 
 fs/smb/client/smb2pdu.c                                              |    6 
 fs/unicode/mkutf8data.c                                              |   70 
 fs/unicode/utf8data.c_shipped                                        | 6703 ++++------
 include/linux/bpf.h                                                  |    1 
 include/linux/nfs_fs_sb.h                                            |    1 
 include/linux/pci-epc.h                                              |    2 
 include/linux/pci.h                                                  |    2 
 include/linux/pci_ids.h                                              |    3 
 include/net/mctp.h                                                   |    2 
 include/net/rtnetlink.h                                              |   17 
 include/net/sch_generic.h                                            |    1 
 include/net/sock.h                                                   |    2 
 io_uring/io_uring.c                                                  |   15 
 io_uring/rw.c                                                        |   19 
 kernel/bpf/arraymap.c                                                |    3 
 kernel/bpf/core.c                                                    |   21 
 kernel/bpf/hashtab.c                                                 |    3 
 kernel/bpf/syscall.c                                                 |   19 
 kernel/kthread.c                                                     |    2 
 kernel/rcu/tree_nocb.h                                               |    8 
 mm/secretmem.c                                                       |    4 
 net/bluetooth/hci_conn.c                                             |    3 
 net/bluetooth/rfcomm/sock.c                                          |    2 
 net/bridge/br_netfilter_hooks.c                                      |    5 
 net/bridge/br_netlink.c                                              |    6 
 net/bridge/br_private.h                                              |    5 
 net/bridge/br_vlan.c                                                 |   19 
 net/core/dst.c                                                       |   17 
 net/core/rtnetlink.c                                                 |   29 
 net/dsa/user.c                                                       |   11 
 net/ipv4/netfilter/nf_reject_ipv4.c                                  |   10 
 net/ipv4/netfilter/nft_fib_ipv4.c                                    |    4 
 net/ipv4/tcp_input.c                                                 |   42 
 net/ipv6/netfilter/nf_reject_ipv6.c                                  |    5 
 net/ipv6/netfilter/nft_fib_ipv6.c                                    |    5 
 net/mctp/af_mctp.c                                                   |    6 
 net/mctp/device.c                                                    |   30 
 net/mctp/neigh.c                                                     |   31 
 net/mctp/route.c                                                     |   33 
 net/mpls/af_mpls.c                                                   |   32 
 net/mptcp/mib.c                                                      |    2 
 net/mptcp/mib.h                                                      |    2 
 net/mptcp/pm_netlink.c                                               |    3 
 net/mptcp/protocol.c                                                 |   24 
 net/mptcp/subflow.c                                                  |    6 
 net/netfilter/nf_nat_core.c                                          |  120 
 net/netfilter/xt_CHECKSUM.c                                          |   33 
 net/netfilter/xt_CLASSIFY.c                                          |   16 
 net/netfilter/xt_CONNSECMARK.c                                       |   36 
 net/netfilter/xt_CT.c                                                |  106 
 net/netfilter/xt_IDLETIMER.c                                         |   59 
 net/netfilter/xt_LED.c                                               |   39 
 net/netfilter/xt_NFLOG.c                                             |   36 
 net/netfilter/xt_RATEEST.c                                           |   39 
 net/netfilter/xt_SECMARK.c                                           |   27 
 net/netfilter/xt_TRACE.c                                             |   35 
 net/netfilter/xt_addrtype.c                                          |   15 
 net/netfilter/xt_cluster.c                                           |   33 
 net/netfilter/xt_connbytes.c                                         |    4 
 net/netfilter/xt_connlimit.c                                         |   39 
 net/netfilter/xt_connmark.c                                          |   28 
 net/netfilter/xt_mark.c                                              |   42 
 net/netlink/af_netlink.c                                             |    3 
 net/phonet/pn_netlink.c                                              |   28 
 net/rxrpc/sendmsg.c                                                  |   10 
 net/sched/sch_api.c                                                  |    7 
 net/sctp/socket.c                                                    |   18 
 net/smc/smc_inet.c                                                   |   11 
 net/socket.c                                                         |    7 
 sound/pci/hda/hda_intel.c                                            |    2 
 tools/build/feature/Makefile                                         |    5 
 tools/iio/iio_generic_buffer.c                                       |    4 
 tools/perf/Makefile.config                                           |    7 
 tools/perf/util/vdso.c                                               |    4 
 tools/testing/ktest/ktest.pl                                         |    2 
 tools/testing/selftests/bpf/progs/verifier_int_ptr.c                 |    5 
 tools/testing/selftests/mm/hmm-tests.c                               |    2 
 tools/testing/selftests/net/forwarding/no_forwarding.sh              |    2 
 tools/testing/selftests/rseq/rseq.c                                  |  110 
 tools/testing/selftests/rseq/rseq.h                                  |   10 
 266 files changed, 5943 insertions(+), 4521 deletions(-)

Abhishek Chauhan (2):
net: phy: aquantia: AQR115c fix up PMA capabilities
net: phy: aquantia: remove usage of phy_set_max_speed

Abhishek Tamboli (1):
usb: gadget: uvc: Fix ERR_PTR dereference in uvc_v4l2.c

Aleksandr Loktionov (1):
i40e: Fix macvlan leak by synchronizing access to mac_filter_hash

Alex Deucher (1):
drm/amdgpu: partially revert powerplay __counted_by changes

Alex Hung (1):
drm/amd/display: Check null pointer before dereferencing se

Alex Williamson (1):
PCI: Mark Creative Labs EMU20k2 INTx masking as broken

Alexander Gordeev (1):
fs/proc/kcore.c: allow translation of physical memory addresses

Anastasia Kovaleva (1):
net: Fix an unsafe loop on the list

Anatolij Gustschin (1):
net: dsa: lan9303: ensure chip reset and wait for READY status

Andrey Shumilin (1):
fbdev: sisfb: Fix strbuf array overflow

Andrey Skvortsov (1):
zram: don't free statically defined names

Andy Roulin (1):
netfilter: br_netfilter: fix panic with metadata_dst skb

Arkadiusz Kubalewski (1):
ice: disallow DPLL_PIN_STATE_SELECTABLE for dpll output pins

Avri Altman (1):
scsi: ufs: Use pre-calculated offsets in ufshcd_init_lrb()

Basavaraj Natikar (1):
HID: amd_sfh: Switch to device-managed dmam_alloc_coherent()

Ben Skeggs (1):
drm/nouveau: pass cli to nouveau_channel_new() instead of drm+device

Billy Tsai (2):
gpio: aspeed: Add the flush write to ensure the write complete.
gpio: aspeed: Use devm_clk api to manage clock source

Breno Leitao (1):
net: netconsole: fix wrong warning

Christian Marangi (1):
net: phy: Remove LED entry from LEDs list on unregister

Christophe JAILLET (2):
net: phy: bcm84881: Fix some error handling paths
net: ethernet: adi: adin1110: Fix some error handling path in adin1110_read_fifo()

Chuck Lever (1):
NFSD: Mark filecache "down" if init fails

D. Wythe (1):
net/smc: fix lacks of icsk_syn_mss with IPPROTO_SMC

Dan Carpenter (2):
SUNRPC: Fix integer overflow in decode_rc_list()
OPP: fix error code in dev_pm_opp_set_config()

Daniel Borkmann (1):
selftests/bpf: Fix ARG_PTR_TO_LONG {half-,}uninitialized test

Daniel Jordan (1):
ktest.pl: Avoid false positives with grub2 skip regex

Daniel Palmer (1):
scsi: wd33c93: Don't use stale scsi_pointer value

Dave Ertman (1):
ice: fix VLAN replay after reset

David Howells (1):
rxrpc: Fix uninitialised variable in rxrpc_send_data()

Diogo Jahchan Koike (1):
ntfs3: Change to non-blocking allocation in ntfs_d_hash

Donet Tom (1):

      selftests/mm: fix incorrect buffer->mirror size in hmm2 double_map test

Enzo Matsumiya (1):
smb: client: fix UAF in async decryption

Eric Dumazet (4):
net/sched: accept TCA_STAB only for root qdisc
net: do not delay dst_entries_add() in dst_release()
ppp: fix ppp_async_encode() illegal access
slip: make slhc_remember() more robust against malicious packets

Filipe Manana (1):
btrfs: zoned: fix missing RCU locking in error message when loading zone info

Florian Westphal (3):
netfilter: nf_nat: don't try nat source port reallocation for reverse dir clash
netfilter: xtables: avoid NFPROTO_UNSPEC where needed
netfilter: fib: check correct rtable in vrf setups

Frank Li (1):
usb: host: xhci-plat: Parse xhci-missing_cas_quirk and apply quirk

Frederic Weisbecker (2):
rcu/nocb: Fix rcuog wake-up from offline softirq
kthread: unpark only parked kthread

Gabriel Krisman Bertazi (1):
unicode: Don't special case ignorable code points

Gerald Schaefer (1):
s390/mm: Add cond_resched() to cmm_alloc/free_pages()

Greg Kroah-Hartman (1):

      Linux 6.11.4

Guenter Roeck (1):
hwmon: (tmp513) Add missing dependency on REGMAP_I2C

Gui-Dong Han (2):
ice: Fix improper handling of refcount in ice_dpll_init_rclk_pins()
ice: Fix improper handling of refcount in ice_sriov_set_msix_vec_count()

Hamza Mahfooz (1):
drm/amd/display: fix hibernate entry for DCN35+

Hans de Goede (4):
i2c: i801: Use a different adapter-name for IDF adapters
mfd: intel_soc_pmic_chtwc: Make Lenovo Yoga Tab 3 X90F DMI match less strict
ACPI: resource: Make Asus ExpertBook B2402 matches cover more models
ACPI: resource: Make Asus ExpertBook B2502 matches cover more models

He Lugang (1):
HID: multitouch: Add support for lenovo Y9000P Touchpad

Heiko Carstens (2):
s390/facility: Disable compile time optimization for decompressor code s390/traps: Handle early warnings gracefully

Heiner Kallweit (1):
net: phy: realtek: Fix MMD access on RTL8126A-integrated PHY

Hou Tao (1):
bpf: Call the missed btf_record_free() when map creation fails

Ian Rogers (1):
perf vdso: Missed put on 32-bit dsos

Icenowy Zheng (1):
usb: storage: ignore bogus device raised by JieLi BR21 USB sound chip

Ignat Korchagin (1):

      net: explicitly clear the sk pointer, when pf->create fails

Ilpo Järvinen (2):
mfd: intel-lpss: Add Intel Arrow Lake-H LPSS PCI IDs
mfd: intel-lpss: Add Intel Panther Lake LPSS PCI IDs

Ingo van Lil (1):
net: phy: dp83869: fix memory corruption when enabling fiber

Jakub Kicinski (1):
Revert "net: stmmac: set PP_FLAG_DMA_SYNC_DEV only if XDP is enabled"

Jan Kara (1):
ext4: don't set SB_RDONLY after filesystem errors

Jani Nikula (1):
drm/i915/hdcp: fix connector refcounting

Janne Grunau (1):
drm/fbdev-dma: Only cleanup deferred I/O if necessary

Jason Gerecke (1):
HID: wacom: Hardcode (non-inverted) AES pens as BTN_TOOL_PEN

Javier Carrasco (4):
hwmon: (mc34vr500) Add missing dependency on REGMAP_I2C
hwmon: (adm9240) Add missing dependency on REGMAP_I2C
hwmon: (adt7470) Add missing dependency on REGMAP_I2C
hwmon: (ltc2991) Add missing dependency on REGMAP_I2C

Jens Axboe (2):
io_uring: check if we need to reschedule during overflow flush io_uring/rw: fix cflags posting for single issue multishot read

Jiri Slaby (SUSE) (1):
serial: protect uart_port_dtr_rts() in uart_shutdown() too

Jisheng Zhang (1):
riscv: avoid Imbalance in RAS

John Keeping (1):
usb: gadget: core: force synchronous registration

Jonas Gorski (5):
net: dsa: b53: fix jumbo frame mtu check
net: dsa: b53: fix max MTU for 1g switches
net: dsa: b53: fix max MTU for BCM5325/BCM5365
net: dsa: b53: allow lower MTUs on BCM5325/5365
net: dsa: b53: fix jumbo frames on 10/100 ports

Jose Alberto Reguero (1):
usb: xhci: Fix problem with xhci resume from suspend

Joshua Hay (1):
idpf: use actual mbx receive payload length

Josip Pavic (1):
drm/amd/display: Clear update flags after update has been applied

José Roberto de Souza (1):
drm/xe/oa: Fix overflow in oa batch buffer

Juergen Gross (1):
x86/xen: mark boot CPU of PV guest in MSR_IA32_APICBASE

Justin Tee (3):
scsi: lpfc: Add ELS_RSP cmd to the list of WQEs to flush in lpfc_els_flush_cmd()
scsi: lpfc: Ensure DA_ID handling completion before deleting an NPIV instance
scsi: lpfc: Revise TRACE_EVENT log flag severities from KERN_ERR to KERN_WARNING

Kacper Ludwinski (1):
selftests: net: no_forwarding: fix VID for $swp2 in one_bridge_two_pvids() test

Kaixin Wang (2):
i3c: master: cdns: Fix use after free vulnerability in cdns_i3c_master Driver Due to Race Condition
ntb: ntb_hw_switchtec: Fix use after free vulnerability in switchtec_ntb_remove due to race condition

Ken Raeburn (1):
dm vdo: don't refer to dedupe_context after releasing it

Konstantin Komarov (5):
fs/ntfs3: Do not call file_modified if collapse range failed fs/ntfs3: Optimize large writes into sparse file fs/ntfs3: Fix sparse warning for bigendian fs/ntfs3: Fix sparse warning in ni_fiemap fs/ntfs3: Refactor enum_rstbl to suppress static checker

Kory Maincent (1):
net: pse-pd: Fix enabled status mismatch

Krzysztof Kozlowski (1):
clk: bcm: bcm53573: fix OF node leak in init

Kun(llfl) (1):
device-dax: correct pgoff align in dax_set_mapping()

Kuniyuki Iwashima (6):
rtnetlink: Add bulk registration helpers for rtnetlink message handlers.
vxlan: Handle error of rtnl_register_module().
bridge: Handle error of rtnl_register_module().
mctp: Handle error of rtnl_register_module().
mpls: Handle error of rtnl_register_module().
phonet: Handle error of rtnl_register_module().

Lang Yu (1):
drm/amdkfd: Fix an eviction fence leak

Linus Walleij (1):
Revert "mmc: mvsdio: Use sg_miter for PIO"

Luca Stefani (2):
btrfs: split remaining space to discard in chunks
btrfs: add cancellation points to trim loops

Luiz Augusto von Dentz (3):
Bluetooth: RFCOMM: FIX possible deadlock in rfcomm_sk_state_change
Bluetooth: btusb: Don't fail external suspend requests
Bluetooth: hci_conn: Fix UAF in hci_enhanced_setup_sync

MD Danish Anwar (1):
net: ti: icssg-prueth: Fix race condition for VLAN table access

Manivannan Sadhasivam (2):
PCI: endpoint: Assign PCI domain number for endpoint controllers
PCI: Pass domain number to pci_bus_release_domain_nr() explicitly

Marcin Szycik (3):
ice: Fix entering Safe Mode
ice: Fix netif_is_ice() in Safe Mode
ice: Fix increasing MSI-X on VF

Martin Wilck (1):
scsi: fnic: Move flush_work initialization out of if block

Mathias Nyman (1):
xhci: dbc: Fix STALL transfer event handling

Mathieu Desnoyers (1):
selftests/rseq: Fix mm_cid test failure

Matt Roper (1):
drm/xe: Make wedged_mode debugfs writable

Matthew Auld (3):
drm/xe/guc_submit: fix xa_store() error checking drm/xe/ct: prevent UAF in send_recv() drm/xe/ct: fix xa_store() error checking

Matthieu Baerts (NGI0) (2):
mptcp: fallback when MPTCP opts are dropped after 1st data
mptcp: pm: do not remove closing subflows

Maíra Canal (2):
drm/v3d: Stop the active perfmon before being destroyed drm/vc4: Stop the active perfmon before being destroyed

Md Haris Iqbal (1):
RDMA/rtrs-srv: Avoid null pointer deref during path establishment

Michael Guralnik (1):
RDMA/mlx5: Enforce umem boundaries for explicit ODP page faults

Michael S. Tsirkin (1):
virtio_console: fix misc probe bugs

Michal Swiatkowski (2):
ice: set correct dst VSI in only LAN filters
ice: clear port vlan config during reset

Michal Wilczynski (1):
mmc: sdhci-of-dwcmshc: Prevent stale command interrupt handling

Mohamed Khalfella (1):
igb: Do not bring the device up after non-fatal error

Neal Cardwell (3):
tcp: fix to allow timestamp undo if no retransmits were sent
tcp: fix tcp_enter_recovery() to zero retrans_stamp when it's safe
tcp: fix TFO SYN_RECV to not zero retrans_stamp with retransmits out

NeilBrown (1):
nfsd: nfsd_destroy_serv() must call svc_destroy() even if nfsd_startup_net() failed

Niklas Cassel (1):
ata: libata: avoid superfluous disk spin down + spin up during hibernation

Olga Kornievskaia (1):
nfsd: fix possible badness in FREE_STATEID

Oliver Neukum (1):
Revert "usb: yurex: Replace snprintf() with the safer scnprintf() variant"

Palmer Dabbelt (1):
RISC-V: Don't have MAX_PHYSMEM_BITS exceed phys_addr_t

Paolo Abeni (1):
mptcp: handle consistently DSS corruption

Patrick Roy (1):
secretmem: disable memfd_secret() if arch cannot set direct map

Peng Fan (2):
remoteproc: imx_rproc: Use imx specific hook for find_loaded_rsc_table
clk: imx: Remove CLK_SET_PARENT_GATE for DRAM mux for i.MX7D

Peter Colberg (1):
hwmon: intel-m10-bmc-hwmon: relabel Columbiaville to CVL Die Temperature

Philip Chen (1):
virtio_pmem: Check device status before requesting flush

Pierre-Louis Bossart (2):
soundwire: intel_bus_common: enable interrupts before exiting reset
soundwire: cadence: re-check Peripheral status with delayed_work

Prudhvi Yarlagadda (1):
PCI: qcom: Disable mirroring of DBI and iATU register space in BAR region

Przemek Kitszel (1):
ice: fix memleak in ice_init_tx_topology()

Qianqiang Liu (1):
fbcon: Fix a NULL pointer dereference issue in fbcon_putcs

Rafael J. Wysocki (2):
thermal: core: Reference count the zone in thermal_zone_get_by_id()
thermal: core: Free tzp copy along with the thermal zone

Riyan Dhiman (1):
staging: vme_user: added bound check to geoid

Rosen Penev (2):
net: ibm: emac: mal: fix wrong goto
net: ibm: emac: mal: add dcr_unmap to _remove

Roy Luo (1):
usb: dwc3: re-enable runtime PM after failed resume

Ruffalo Lavoisier (1):
comedi: ni_routing: tools: Check when the file could not be opened

Samuel Holland (1):
riscv: Omit optimized string routines when using KASAN

Saravanan Vajravel (1):
RDMA/mad: Improve handling of timed out WRs of mad agent

Sebastian Andrzej Siewior (1):
sfc: Don't invoke xdp_do_flush() from netpoll.

Selvarasu Ganesan (1):
usb: dwc3: core: Stop processing of pending events if controller is halted

Sergey Senozhatsky (1):
zram: free secondary algorithms names

Shawn Shao (1):
usb: dwc2: Adjust the timing of USB Driver Interrupt Registration in the Crashkernel Scenario

Shyam Sundar S K (1):
x86/amd_nb: Add new PCI IDs for AMD family 1Ah model 60h

Simon Horman (1):
netfilter: nf_reject: Fix build warning when CONFIG_BRIDGE_NETFILTER=n

Srujana Challa (1):
vdpa/octeon_ep: Fix format specifier for pointers in debug messages

Subramanian Ananthanarayanan (1):
PCI: Add ACS quirk for Qualcomm SA8775P

SurajSonawane2415 (1):
hid: intel-ish-hid: Fix uninitialized variable 'rv' in ish_fw_xfer_direct_dma

Tao Chen (1):
bpf: Check percpu map value size first

Thomas Richter (1):
s390/cpum_sf: Remove WARN_ON_ONCE statements

Ulf Hansson (1):
PM: domains: Fix alloc/free in dev_pm_domain_attach|detach_list()

Vinay Belgaumkar (1):
drm/xe: Restore GT freq on GSC load error

Vitaly Lifshits (1):

      e1000e: change I219 (19) devices to ADP

Vladimir Oltean (2):
net: dsa: sja1105: fix reception from VLAN-unaware bridges
net: dsa: refuse cross-chip mirroring operations

Wade Wang (1):
HID: plantronics: Workaround for an unexcepted opposite volume key

Wadim Egorov (1):
usb: typec: tipd: Free IRQ only if it was requested before

WangYuli (1):
PCI: Add function 0 DMA alias quirk for Glenfly Arise chip

Wei Fang (1):
net: fec: don't save PTP state if PTP is unsupported

Wentao Guan (1):
LoongArch: Fix memleak in pci_acpi_scan_root()

Wojciech Drewek (1):
ice: Flush FDB entries before reset

Wojciech Gładysz (1):
ext4: nested locking for xattr inode

Xin Long (1):
sctp: ensure sk_state is set to CLOSED if hashing fails in sctp_listen_start

Xu Kuohai (1):
bpf: Prevent tail call between progs attached to different hooks

Xu Yang (1):
usb: chipidea: udc: enable suspend interrupt after usb reset

Yang Jihong (2):
perf build: Fix static compilation error when libdw is not installed perf build: Fix build feature-dwarf_getlocations fail for old libdw

Yanjun Zhang (1):
NFSv4: Prevent NULL-pointer dereference in nfs42_complete_copies()

Ying Sun (1):
riscv/kexec_file: Fix relocation type R_RISCV_ADD16 and R_RISCV_SUB16 unknown

Yonatan Maman (2):
nouveau/dmem: Fix privileged error in copy engine channel nouveau/dmem: Fix vulnerability in migrate_to_ram upon copy error

Yonghong Song (1):
bpf, x64: Fix a jit convergence issue

Yunke Cao (1):
media: videobuf2-core: clear memory related fields in __vb2_plane_dmabuf_put()

Zhang Rui (3):
thermal: intel: int340x: processor: Fix warning during module unload
powercap: intel_rapl_tpmi: Ignore minor version change
powercap: intel_rapl_tpmi: Fix bogus register reading

Zhu Jun (1):
tools/iio: Add memory allocation failure check for trigger_name

Zijun Hu (2):
driver core: bus: Fix double free in driver API bus_register() driver core: bus: Return -EIO instead of 0 when show/store invalid bus attribute

author maintainer
#1 lore raw
Makefile +1 -1
index 108d314ea95b..50c615983e44 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 11
-SUBLEVEL = 3
+SUBLEVEL = 4
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
arch/loongarch/pci/acpi.c +1 -0
index 365f7de771cb..1da4dc46df43 100644
@@ -225,6 +225,7 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
 	if (bus) {
 		memcpy(bus->sysdata, info->cfg, sizeof(struct pci_config_window));
 		kfree(info);
+		kfree(root_ops);
 	} else {
 		struct pci_bus *child;
 
arch/riscv/include/asm/sparsemem.h +1 -1
index 63acaecc3374..2f901a410586 100644
@@ -7,7 +7,7 @@
 #ifdef CONFIG_64BIT
 #define MAX_PHYSMEM_BITS	56
 #else
-#define MAX_PHYSMEM_BITS	34
+#define MAX_PHYSMEM_BITS	32
 #endif /* CONFIG_64BIT */
 #define SECTION_SIZE_BITS	27
 #endif /* CONFIG_SPARSEMEM */
arch/riscv/include/asm/string.h +2 -0
index a96b1fea24fe..5ba77f60bf0b 100644
@@ -19,6 +19,7 @@ extern asmlinkage void *__memcpy(void *, const void *, size_t);
 extern asmlinkage void *memmove(void *, const void *, size_t);
 extern asmlinkage void *__memmove(void *, const void *, size_t);
 
+#if !(defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS))
 #define __HAVE_ARCH_STRCMP
 extern asmlinkage int strcmp(const char *cs, const char *ct);
 
@@ -27,6 +28,7 @@ extern asmlinkage __kernel_size_t strlen(const char *);
 
 #define __HAVE_ARCH_STRNCMP
 extern asmlinkage int strncmp(const char *cs, const char *ct, size_t count);
+#endif
 
 /* For those files which don't want to check by kasan. */
 #if defined(CONFIG_KASAN) && !defined(__SANITIZE_ADDRESS__)
arch/riscv/kernel/elf_kexec.c +6 -0
index 11c0d2e0becf..3c37661801f9 100644
@@ -451,6 +451,12 @@ int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
 			*(u32 *)loc = CLEAN_IMM(CJTYPE, *(u32 *)loc) |
 				 ENCODE_CJTYPE_IMM(val - addr);
 			break;
+		case R_RISCV_ADD16:
+			*(u16 *)loc += val;
+			break;
+		case R_RISCV_SUB16:
+			*(u16 *)loc -= val;
+			break;
 		case R_RISCV_ADD32:
 			*(u32 *)loc += val;
 			break;
arch/riscv/kernel/entry.S +2 -2
index ac2e908d4418..fefb8e7d957a 100644
@@ -239,8 +239,8 @@ SYM_CODE_START(ret_from_fork)
 	jalr s0
 1:
 	move a0, sp /* pt_regs */
-	la ra, ret_from_exception
-	tail syscall_exit_to_user_mode
+	call syscall_exit_to_user_mode
+	j ret_from_exception
 SYM_CODE_END(ret_from_fork)
 
 #ifdef CONFIG_IRQ_STACKS
arch/riscv/kernel/riscv_ksyms.c +0 -3
index a72879b4249a..5ab1c7e1a6ed 100644
@@ -12,9 +12,6 @@
 EXPORT_SYMBOL(memset);
 EXPORT_SYMBOL(memcpy);
 EXPORT_SYMBOL(memmove);
-EXPORT_SYMBOL(strcmp);
-EXPORT_SYMBOL(strlen);
-EXPORT_SYMBOL(strncmp);
 EXPORT_SYMBOL(__memset);
 EXPORT_SYMBOL(__memcpy);
 EXPORT_SYMBOL(__memmove);
arch/riscv/lib/Makefile +2 -0
index 2b369f51b0a5..8eec6b69a875 100644
@@ -3,9 +3,11 @@ lib-y			+= delay.o
 lib-y			+= memcpy.o
 lib-y			+= memset.o
 lib-y			+= memmove.o
+ifeq ($(CONFIG_KASAN_GENERIC)$(CONFIG_KASAN_SW_TAGS),)
 lib-y			+= strcmp.o
 lib-y			+= strlen.o
 lib-y			+= strncmp.o
+endif
 lib-y			+= csum.o
 ifeq ($(CONFIG_MMU), y)
 lib-$(CONFIG_RISCV_ISA_V)	+= uaccess_vector.o
arch/riscv/lib/strcmp.S +1 -0
index 687b2bea5c43..542301a67a2f 100644
@@ -120,3 +120,4 @@ strcmp_zbb:
 .option pop
 #endif
 SYM_FUNC_END(strcmp)
+EXPORT_SYMBOL(strcmp)
arch/riscv/lib/strlen.S +1 -0
index 8ae3064e45ff..962983b73251 100644
@@ -131,3 +131,4 @@ strlen_zbb:
 #endif
 SYM_FUNC_END(strlen)
 SYM_FUNC_ALIAS(__pi_strlen, strlen)
+EXPORT_SYMBOL(strlen)
arch/riscv/lib/strncmp.S +1 -0
index aba5b3148621..0f359ea2f55b 100644
@@ -136,3 +136,4 @@ strncmp_zbb:
 .option pop
 #endif
 SYM_FUNC_END(strncmp)
+EXPORT_SYMBOL(strncmp)
arch/riscv/purgatory/Makefile +2 -0
index f11945ee2490..fb9c917c9b45 100644
@@ -1,7 +1,9 @@
 # SPDX-License-Identifier: GPL-2.0
 
 purgatory-y := purgatory.o sha256.o entry.o string.o ctype.o memcpy.o memset.o
+ifeq ($(CONFIG_KASAN_GENERIC)$(CONFIG_KASAN_SW_TAGS),)
 purgatory-y += strcmp.o strlen.o strncmp.o
+endif
 
 targets += $(purgatory-y)
 PURGATORY_OBJS = $(addprefix $(obj)/,$(purgatory-y))
arch/s390/include/asm/facility.h +4 -2
index b7d234838a36..65ebf86506cd 100644
@@ -59,8 +59,10 @@ static inline int test_facility(unsigned long nr)
 	unsigned long facilities_als[] = { FACILITIES_ALS };
 
 	if (__builtin_constant_p(nr) && nr < sizeof(facilities_als) * 8) {
-		if (__test_facility(nr, &facilities_als))
-			return 1;
+		if (__test_facility(nr, &facilities_als)) {
+			if (!__is_defined(__DECOMPRESSOR))
+				return 1;
+		}
 	}
 	return __test_facility(nr, &stfle_fac_list);
 }
arch/s390/include/asm/io.h +2 -0
index 0fbc992d7a5e..fc9933a743d6 100644
@@ -16,8 +16,10 @@
 #include <asm/pci_io.h>
 
 #define xlate_dev_mem_ptr xlate_dev_mem_ptr
+#define kc_xlate_dev_mem_ptr xlate_dev_mem_ptr
 void *xlate_dev_mem_ptr(phys_addr_t phys);
 #define unxlate_dev_mem_ptr unxlate_dev_mem_ptr
+#define kc_unxlate_dev_mem_ptr unxlate_dev_mem_ptr
 void unxlate_dev_mem_ptr(phys_addr_t phys, void *addr);
 
 #define IO_SPACE_LIMIT 0
arch/s390/kernel/early.c +15 -2
index ee051ad81c71..0242fa78c918 100644
@@ -177,8 +177,21 @@ static __init void setup_topology(void)
 
 void __do_early_pgm_check(struct pt_regs *regs)
 {
-	if (!fixup_exception(regs))
-		disabled_wait();
+	struct lowcore *lc = get_lowcore();
+	unsigned long ip;
+
+	regs->int_code = lc->pgm_int_code;
+	regs->int_parm_long = lc->trans_exc_code;
+	ip = __rewind_psw(regs->psw, regs->int_code >> 16);
+
+	/* Monitor Event? Might be a warning */
+	if ((regs->int_code & PGM_INT_CODE_MASK) == 0x40) {
+		if (report_bug(ip, regs) == BUG_TRAP_TYPE_WARN)
+			return;
+	}
+	if (fixup_exception(regs))
+		return;
+	disabled_wait();
 }
 
 static noinline __init void setup_lowcore_early(void)
arch/s390/kernel/perf_cpum_sf.c +4 -8
index 736c1d9632dd..48fa9471660a 100644
@@ -1463,7 +1463,7 @@ static int aux_output_begin(struct perf_output_handle *handle,
 	unsigned long range, i, range_scan, idx, head, base, offset;
 	struct hws_trailer_entry *te;
 
-	if (WARN_ON_ONCE(handle->head & ~PAGE_MASK))
+	if (handle->head & ~PAGE_MASK)
 		return -EINVAL;
 
 	aux->head = handle->head >> PAGE_SHIFT;
@@ -1642,7 +1642,7 @@ static void hw_collect_aux(struct cpu_hw_sf *cpuhw)
 	unsigned long num_sdb;
 
 	aux = perf_get_aux(handle);
-	if (WARN_ON_ONCE(!aux))
+	if (!aux)
 		return;
 
 	/* Inform user space new data arrived */
@@ -1661,7 +1661,7 @@ static void hw_collect_aux(struct cpu_hw_sf *cpuhw)
 				num_sdb);
 			break;
 		}
-		if (WARN_ON_ONCE(!aux))
+		if (!aux)
 			return;
 
 		/* Update head and alert_mark to new position */
@@ -1896,12 +1896,8 @@ static void cpumsf_pmu_start(struct perf_event *event, int flags)
 {
 	struct cpu_hw_sf *cpuhw = this_cpu_ptr(&cpu_hw_sf);
 
-	if (WARN_ON_ONCE(!(event->hw.state & PERF_HES_STOPPED)))
+	if (!(event->hw.state & PERF_HES_STOPPED))
 		return;
-
-	if (flags & PERF_EF_RELOAD)
-		WARN_ON_ONCE(!(event->hw.state & PERF_HES_UPTODATE));
-
 	perf_pmu_disable(event->pmu);
 	event->hw.state = 0;
 	cpuhw->lsctl.cs = 1;
arch/s390/mm/cmm.c +17 -1
index 75d15bf41d97..d01724a715d0 100644
@@ -95,11 +95,12 @@ static long cmm_alloc_pages(long nr, long *counter,
 		(*counter)++;
 		spin_unlock(&cmm_lock);
 		nr--;
+		cond_resched();
 	}
 	return nr;
 }
 
-static long cmm_free_pages(long nr, long *counter, struct cmm_page_array **list)
+static long __cmm_free_pages(long nr, long *counter, struct cmm_page_array **list)
 {
 	struct cmm_page_array *pa;
 	unsigned long addr;
@@ -123,6 +124,21 @@ static long cmm_free_pages(long nr, long *counter, struct cmm_page_array **list)
 	return nr;
 }
 
+static long cmm_free_pages(long nr, long *counter, struct cmm_page_array **list)
+{
+	long inc = 0;
+
+	while (nr) {
+		inc = min(256L, nr);
+		nr -= inc;
+		inc = __cmm_free_pages(inc, counter, list);
+		if (inc)
+			break;
+		cond_resched();
+	}
+	return nr + inc;
+}
+
 static int cmm_oom_notify(struct notifier_block *self,
 			  unsigned long dummy, void *parm)
 {
arch/x86/kernel/amd_nb.c +3 -0
index 059e5c16af05..61eadde08511 100644
@@ -26,6 +26,7 @@
 #define PCI_DEVICE_ID_AMD_19H_M70H_ROOT		0x14e8
 #define PCI_DEVICE_ID_AMD_1AH_M00H_ROOT		0x153a
 #define PCI_DEVICE_ID_AMD_1AH_M20H_ROOT		0x1507
+#define PCI_DEVICE_ID_AMD_1AH_M60H_ROOT		0x1122
 #define PCI_DEVICE_ID_AMD_MI200_ROOT		0x14bb
 #define PCI_DEVICE_ID_AMD_MI300_ROOT		0x14f8
 
@@ -63,6 +64,7 @@ static const struct pci_device_id amd_root_ids[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M70H_ROOT) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_ROOT) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_ROOT) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_ROOT) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_ROOT) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI300_ROOT) },
 	{}
@@ -95,6 +97,7 @@ static const struct pci_device_id amd_nb_misc_ids[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M78H_DF_F3) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_DF_F3) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_DF_F3) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_DF_F3) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M70H_DF_F3) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_DF_F3) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI300_DF_F3) },
arch/x86/net/bpf_jit_comp.c +52 -2

72 lines not on this page · raw message

arch/x86/xen/enlighten_pv.c +4 -0
index 2c12ae42dc8b..d6818c6cafda 100644
@@ -1032,6 +1032,10 @@ static u64 xen_do_read_msr(unsigned int msr, int *err)
 	switch (msr) {
 	case MSR_IA32_APICBASE:
 		val &= ~X2APIC_ENABLE;
+		if (smp_processor_id() == 0)
+			val |= MSR_IA32_APICBASE_BSP;
+		else
+			val &= ~MSR_IA32_APICBASE_BSP;
 		break;
 	}
 	return val;
drivers/acpi/resource.c +4 -25
index 3d74ebe9dbd8..0eb52e372467 100644
@@ -483,38 +483,17 @@ static const struct dmi_system_id irq1_level_low_skip_override[] = {
                 },
         },
 	{
-		/* Asus ExpertBook B2402CBA */
+		/* Asus ExpertBook B2402 (B2402CBA / B2402FBA / B2402CVA / B2402FVA) */
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-			DMI_MATCH(DMI_BOARD_NAME, "B2402CBA"),
+			DMI_MATCH(DMI_BOARD_NAME, "B2402"),
 		},
 	},
 	{
-		/* Asus ExpertBook B2402FBA */
+		/* Asus ExpertBook B2502 (B2502CBA / B2502FBA / B2502CVA / B2502FVA) */
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-			DMI_MATCH(DMI_BOARD_NAME, "B2402FBA"),
-		},
-	},
-	{
-		/* Asus ExpertBook B2502 */
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-			DMI_MATCH(DMI_BOARD_NAME, "B2502CBA"),
-		},
-	},
-	{
-		/* Asus ExpertBook B2502FBA */
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-			DMI_MATCH(DMI_BOARD_NAME, "B2502FBA"),
-		},
-	},
-	{
-		/* Asus ExpertBook B2502CVA */
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
-			DMI_MATCH(DMI_BOARD_NAME, "B2502CVA"),
+			DMI_MATCH(DMI_BOARD_NAME, "B2502"),
 		},
 	},
 	{
drivers/ata/libata-eh.c +14 -4
index 7df9ec9f924c..002e1e9501d1 100644
@@ -4059,10 +4059,20 @@ static void ata_eh_handle_port_suspend(struct ata_port *ap)
 
 	WARN_ON(ap->pflags & ATA_PFLAG_SUSPENDED);
 
-	/* Set all devices attached to the port in standby mode */
-	ata_for_each_link(link, ap, HOST_FIRST) {
-		ata_for_each_dev(dev, link, ENABLED)
-			ata_dev_power_set_standby(dev);
+	/*
+	 * We will reach this point for all of the PM events:
+	 * PM_EVENT_SUSPEND (if runtime pm, PM_EVENT_AUTO will also be set)
+	 * PM_EVENT_FREEZE, and PM_EVENT_HIBERNATE.
+	 *
+	 * We do not want to perform disk spin down for PM_EVENT_FREEZE.
+	 * (Spin down will be performed by the subsequent PM_EVENT_HIBERNATE.)
+	 */
+	if (!(ap->pm_mesg.event & PM_EVENT_FREEZE)) {
+		/* Set all devices attached to the port in standby mode */
+		ata_for_each_link(link, ap, HOST_FIRST) {
+			ata_for_each_dev(dev, link, ENABLED)
+				ata_dev_power_set_standby(dev);
+		}
 	}
 
 	/*
drivers/base/bus.c +6 -2
index ffea0728b8b2..6a68734e7ebd 100644
@@ -152,7 +152,8 @@ static ssize_t bus_attr_show(struct kobject *kobj, struct attribute *attr,
 {
 	struct bus_attribute *bus_attr = to_bus_attr(attr);
 	struct subsys_private *subsys_priv = to_subsys_private(kobj);
-	ssize_t ret = 0;
+	/* return -EIO for reading a bus attribute without show() */
+	ssize_t ret = -EIO;
 
 	if (bus_attr->show)
 		ret = bus_attr->show(subsys_priv->bus, buf);
@@ -164,7 +165,8 @@ static ssize_t bus_attr_store(struct kobject *kobj, struct attribute *attr,
 {
 	struct bus_attribute *bus_attr = to_bus_attr(attr);
 	struct subsys_private *subsys_priv = to_subsys_private(kobj);
-	ssize_t ret = 0;
+	/* return -EIO for writing a bus attribute without store() */
+	ssize_t ret = -EIO;
 
 	if (bus_attr->store)
 		ret = bus_attr->store(subsys_priv->bus, buf, count);
@@ -920,6 +922,8 @@ int bus_register(const struct bus_type *bus)
 	bus_remove_file(bus, &bus_attr_uevent);
 bus_uevent_fail:
 	kset_unregister(&priv->subsys);
+	/* Above kset_unregister() will kfree @priv */
+	priv = NULL;
 out:
 	kfree(priv);
 	return retval;
drivers/base/power/common.c +15 -10
index 327d168dd37a..1a9dccc2137b 100644
@@ -195,6 +195,7 @@ int dev_pm_domain_attach_list(struct device *dev,
 	struct device *pd_dev = NULL;
 	int ret, i, num_pds = 0;
 	bool by_id = true;
+	size_t size;
 	u32 pd_flags = data ? data->pd_flags : 0;
 	u32 link_flags = pd_flags & PD_FLAG_NO_DEV_LINK ? 0 :
 			DL_FLAG_STATELESS | DL_FLAG_PM_RUNTIME;
@@ -217,19 +218,17 @@ int dev_pm_domain_attach_list(struct device *dev,
 	if (num_pds <= 0)
 		return 0;
 
-	pds = devm_kzalloc(dev, sizeof(*pds), GFP_KERNEL);
+	pds = kzalloc(sizeof(*pds), GFP_KERNEL);
 	if (!pds)
 		return -ENOMEM;
 
-	pds->pd_devs = devm_kcalloc(dev, num_pds, sizeof(*pds->pd_devs),
-				    GFP_KERNEL);
-	if (!pds->pd_devs)
-		return -ENOMEM;
-
-	pds->pd_links = devm_kcalloc(dev, num_pds, sizeof(*pds->pd_links),
-				     GFP_KERNEL);
-	if (!pds->pd_links)
-		return -ENOMEM;
+	size = sizeof(*pds->pd_devs) + sizeof(*pds->pd_links);
+	pds->pd_devs = kcalloc(num_pds, size, GFP_KERNEL);
+	if (!pds->pd_devs) {
+		ret = -ENOMEM;
+		goto free_pds;
+	}
+	pds->pd_links = (void *)(pds->pd_devs + num_pds);
 
 	if (link_flags && pd_flags & PD_FLAG_DEV_LINK_ON)
 		link_flags |= DL_FLAG_RPM_ACTIVE;
@@ -272,6 +271,9 @@ int dev_pm_domain_attach_list(struct device *dev,
 			device_link_del(pds->pd_links[i]);
 		dev_pm_domain_detach(pds->pd_devs[i], true);
 	}
+	kfree(pds->pd_devs);
+free_pds:
+	kfree(pds);
 	return ret;
 }
 EXPORT_SYMBOL_GPL(dev_pm_domain_attach_list);
@@ -318,6 +320,9 @@ void dev_pm_domain_detach_list(struct dev_pm_domain_list *list)
 			device_link_del(list->pd_links[i]);
 		dev_pm_domain_detach(list->pd_devs[i], true);
 	}
+
+	kfree(list->pd_devs);
+	kfree(list);
 }
 EXPORT_SYMBOL_GPL(dev_pm_domain_detach_list);
 
drivers/block/zram/zram_drv.c +7 -0
index efcb8d9d274c..f25b1670e91c 100644
@@ -1989,6 +1989,13 @@ static void zram_destroy_comps(struct zram *zram)
 		zcomp_destroy(comp);
 		zram->num_active_comps--;
 	}
+
+	for (prio = ZRAM_PRIMARY_COMP; prio < ZRAM_MAX_COMPS; prio++) {
+		/* Do not free statically defined compression algorithms */
+		if (zram->comp_algs[prio] != default_compressor)
+			kfree(zram->comp_algs[prio]);
+		zram->comp_algs[prio] = NULL;
+	}
 }
 
 static void zram_reset_device(struct zram *zram)
drivers/bluetooth/btusb.c +18 -2
index 93dbeb8b348d..a1e9b052bc84 100644
@@ -4092,16 +4092,29 @@ static void btusb_disconnect(struct usb_interface *intf)
 static int btusb_suspend(struct usb_interface *intf, pm_message_t message)
 {
 	struct btusb_data *data = usb_get_intfdata(intf);
+	int err;
 
 	BT_DBG("intf %p", intf);
 
-	/* Don't suspend if there are connections */
-	if (hci_conn_count(data->hdev))
+	/* Don't auto-suspend if there are connections; external suspend calls
+	 * shall never fail.
+	 */
+	if (PMSG_IS_AUTO(message) && hci_conn_count(data->hdev))
 		return -EBUSY;
 
 	if (data->suspend_count++)
 		return 0;
 
+	/* Notify Host stack to suspend; this has to be done before stopping
+	 * the traffic since the hci_suspend_dev itself may generate some
+	 * traffic.
+	 */
+	err = hci_suspend_dev(data->hdev);
+	if (err) {
+		data->suspend_count--;
+		return err;
+	}
+
 	spin_lock_irq(&data->txlock);
 	if (!(PMSG_IS_AUTO(message) && data->tx_in_flight)) {
 		set_bit(BTUSB_SUSPENDING, &data->flags);
@@ -4109,6 +4122,7 @@ static int btusb_suspend(struct usb_interface *intf, pm_message_t message)
 	} else {
 		spin_unlock_irq(&data->txlock);
 		data->suspend_count--;
+		hci_resume_dev(data->hdev);
 		return -EBUSY;
 	}
 
@@ -4229,6 +4243,8 @@ static int btusb_resume(struct usb_interface *intf)
 	spin_unlock_irq(&data->txlock);
 	schedule_work(&data->work);
 
+	hci_resume_dev(data->hdev);
+
 	return 0;
 
 failed:
drivers/char/virtio_console.c +10 -8
index de7d720d99fa..bcb05fc44c99 100644
@@ -2007,25 +2007,27 @@ static int virtcons_probe(struct virtio_device *vdev)
 		multiport = true;
 	}
 
-	err = init_vqs(portdev);
-	if (err < 0) {
-		dev_err(&vdev->dev, "Error %d initializing vqs\n", err);
-		goto free_chrdev;
-	}
-
 	spin_lock_init(&portdev->ports_lock);
 	INIT_LIST_HEAD(&portdev->ports);
 	INIT_LIST_HEAD(&portdev->list);
 
-	virtio_device_ready(portdev->vdev);
-
 	INIT_WORK(&portdev->config_work, &config_work_handler);
 	INIT_WORK(&portdev->control_work, &control_work_handler);
 
 	if (multiport) {
 		spin_lock_init(&portdev->c_ivq_lock);
 		spin_lock_init(&portdev->c_ovq_lock);
+	}
 
+	err = init_vqs(portdev);
+	if (err < 0) {
+		dev_err(&vdev->dev, "Error %d initializing vqs\n", err);
+		goto free_chrdev;
+	}
+
+	virtio_device_ready(portdev->vdev);
+
+	if (multiport) {
 		err = fill_queue(portdev->c_ivq, &portdev->c_ivq_lock);
 		if (err < 0) {
 			dev_err(&vdev->dev,
drivers/clk/bcm/clk-bcm53573-ilp.c +1 -1
index 84f2af736ee8..83ef41d618be 100644
@@ -112,7 +112,7 @@ static void bcm53573_ilp_init(struct device_node *np)
 		goto err_free_ilp;
 	}
 
-	ilp->regmap = syscon_node_to_regmap(of_get_parent(np));
+	ilp->regmap = syscon_node_to_regmap(np->parent);
 	if (IS_ERR(ilp->regmap)) {
 		err = PTR_ERR(ilp->regmap);
 		goto err_free_ilp;
drivers/clk/imx/clk-imx7d.c +2 -2
index 2b77d1fc7bb9..1e1296e74835 100644
@@ -498,9 +498,9 @@ static void __init imx7d_clocks_init(struct device_node *ccm_node)
 	hws[IMX7D_ENET_AXI_ROOT_SRC] = imx_clk_hw_mux2_flags("enet_axi_src", base + 0x8900, 24, 3, enet_axi_sel, ARRAY_SIZE(enet_axi_sel), CLK_SET_PARENT_GATE);
 	hws[IMX7D_NAND_USDHC_BUS_ROOT_SRC] = imx_clk_hw_mux2_flags("nand_usdhc_src", base + 0x8980, 24, 3, nand_usdhc_bus_sel, ARRAY_SIZE(nand_usdhc_bus_sel), CLK_SET_PARENT_GATE);
 	hws[IMX7D_DRAM_PHYM_ROOT_SRC] = imx_clk_hw_mux2_flags("dram_phym_src", base + 0x9800, 24, 1, dram_phym_sel, ARRAY_SIZE(dram_phym_sel), CLK_SET_PARENT_GATE);
-	hws[IMX7D_DRAM_ROOT_SRC] = imx_clk_hw_mux2_flags("dram_src", base + 0x9880, 24, 1, dram_sel, ARRAY_SIZE(dram_sel), CLK_SET_PARENT_GATE);
+	hws[IMX7D_DRAM_ROOT_SRC] = imx_clk_hw_mux2("dram_src", base + 0x9880, 24, 1, dram_sel, ARRAY_SIZE(dram_sel));
 	hws[IMX7D_DRAM_PHYM_ALT_ROOT_SRC] = imx_clk_hw_mux2_flags("dram_phym_alt_src", base + 0xa000, 24, 3, dram_phym_alt_sel, ARRAY_SIZE(dram_phym_alt_sel), CLK_SET_PARENT_GATE);
-	hws[IMX7D_DRAM_ALT_ROOT_SRC]  = imx_clk_hw_mux2_flags("dram_alt_src", base + 0xa080, 24, 3, dram_alt_sel, ARRAY_SIZE(dram_alt_sel), CLK_SET_PARENT_GATE);
+	hws[IMX7D_DRAM_ALT_ROOT_SRC]  = imx_clk_hw_mux2("dram_alt_src", base + 0xa080, 24, 3, dram_alt_sel, ARRAY_SIZE(dram_alt_sel));
 	hws[IMX7D_USB_HSIC_ROOT_SRC] = imx_clk_hw_mux2_flags("usb_hsic_src", base + 0xa100, 24, 3, usb_hsic_sel, ARRAY_SIZE(usb_hsic_sel), CLK_SET_PARENT_GATE);
 	hws[IMX7D_PCIE_CTRL_ROOT_SRC] = imx_clk_hw_mux2_flags("pcie_ctrl_src", base + 0xa180, 24, 3, pcie_ctrl_sel, ARRAY_SIZE(pcie_ctrl_sel), CLK_SET_PARENT_GATE);
 	hws[IMX7D_PCIE_PHY_ROOT_SRC] = imx_clk_hw_mux2_flags("pcie_phy_src", base + 0xa200, 24, 3, pcie_phy_sel, ARRAY_SIZE(pcie_phy_sel), CLK_SET_PARENT_GATE);
drivers/comedi/drivers/ni_routing/tools/convert_c_to_py.c +5 -0
index d55521b5bdcb..892a66b2cea6 100644
@@ -140,6 +140,11 @@ int main(void)
 {
 	FILE *fp = fopen("ni_values.py", "w");
 
+	if (fp == NULL) {
+		fprintf(stderr, "Could not open file!");
+		return -1;
+	}
+
 	/* write route register values */
 	fprintf(fp, "ni_route_values = {\n");
 	for (int i = 0; ni_all_route_values[i]; ++i)
drivers/dax/device.c +1 -1
index 2051e4f73c8a..cb09b52a0e32 100644
@@ -86,7 +86,7 @@ static void dax_set_mapping(struct vm_fault *vmf, pfn_t pfn,
 		nr_pages = 1;
 
 	pgoff = linear_page_index(vmf->vma,
-			ALIGN(vmf->address, fault_size));
+			ALIGN_DOWN(vmf->address, fault_size));
 
 	for (i = 0; i < nr_pages; i++) {
 		struct page *page = pfn_to_page(pfn_t_to_pfn(pfn) + i);
drivers/gpio/gpio-aspeed.c +3 -1
index 04c03402db6d..ea40ad43a79b 100644
@@ -406,6 +406,8 @@ static void __aspeed_gpio_set(struct gpio_chip *gc, unsigned int offset,
 	gpio->dcache[GPIO_BANK(offset)] = reg;
 
 	iowrite32(reg, addr);
+	/* Flush write */
+	ioread32(addr);
 }
 
 static void aspeed_gpio_set(struct gpio_chip *gc, unsigned int offset,
@@ -1191,7 +1193,7 @@ static int __init aspeed_gpio_probe(struct platform_device *pdev)
 	if (!gpio_id)
 		return -EINVAL;
 
-	gpio->clk = of_clk_get(pdev->dev.of_node, 0);
+	gpio->clk = devm_clk_get_enabled(&pdev->dev, NULL);
 	if (IS_ERR(gpio->clk)) {
 		dev_warn(&pdev->dev,
 				"Failed to get clock from devicetree, debouncing disabled\n");
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +2 -2
index 11672bfe4fad..a485281ad1ad 100644
@@ -1438,8 +1438,8 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info,
 	list_add_tail(&vm->vm_list_node,
 			&(vm->process_info->vm_list_head));
 	vm->process_info->n_vms++;
-
-	*ef = dma_fence_get(&vm->process_info->eviction_fence->base);
+	if (ef)
+		*ef = dma_fence_get(&vm->process_info->eviction_fence->base);
 	mutex_unlock(&vm->process_info->lock);
 
 	return 0;
drivers/gpu/drm/amd/amdkfd/kfd_process.c +5 -2
index 9e29b92eb523..e44892109f71 100644
@@ -1676,12 +1676,15 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd,
 
 	ret = amdgpu_amdkfd_gpuvm_acquire_process_vm(dev->adev, avm,
 						     &p->kgd_process_info,
-						     &ef);
+						     p->ef ? NULL : &ef);
 	if (ret) {
 		dev_err(dev->adev->dev, "Failed to create process VM object\n");
 		return ret;
 	}
-	RCU_INIT_POINTER(p->ef, ef);
+
+	if (!p->ef)
+		RCU_INIT_POINTER(p->ef, ef);
+
 	pdd->drm_priv = drm_file->private_data;
 
 	ret = kfd_process_device_reserve_ib_mem(pdd);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 -3
index 1ab7cd8a6b6a..4f19e9736a67 100644
@@ -2950,10 +2950,11 @@ static int dm_suspend(void *handle)
 
 	hpd_rx_irq_work_suspend(dm);
 
-	if (adev->dm.dc->caps.ips_support)
-		dc_allow_idle_optimizations(adev->dm.dc, true);
-
 	dc_set_power_state(dm->dc, DC_ACPI_CM_POWER_STATE_D3);
+
+	if (dm->dc->caps.ips_support && adev->in_s0ix)
+		dc_allow_idle_optimizations(dm->dc, true);
+
 	dc_dmub_srv_set_power_state(dm->dc->ctx->dmub_srv, DC_ACPI_CM_POWER_STATE_D3);
 
 	return 0;
drivers/gpu/drm/amd/display/dc/core/dc.c +35 -12

86 lines not on this page · raw message

drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h +13 -13
index 9118fcddbf11..227bf0e84a13 100644
@@ -60,7 +60,7 @@ struct vi_dpm_level {
 
 struct vi_dpm_table {
 	uint32_t count;
-	struct vi_dpm_level dpm_level[] __counted_by(count);
+	struct vi_dpm_level dpm_level[];
 };
 
 #define PCIE_PERF_REQ_REMOVE_REGISTRY   0
@@ -91,7 +91,7 @@ struct phm_set_power_state_input {
 
 struct phm_clock_array {
 	uint32_t count;
-	uint32_t values[] __counted_by(count);
+	uint32_t values[];
 };
 
 struct phm_clock_voltage_dependency_record {
@@ -123,7 +123,7 @@ struct phm_acpclock_voltage_dependency_record {
 
 struct phm_clock_voltage_dependency_table {
 	uint32_t count;
-	struct phm_clock_voltage_dependency_record entries[] __counted_by(count);
+	struct phm_clock_voltage_dependency_record entries[];
 };
 
 struct phm_phase_shedding_limits_record {
@@ -140,7 +140,7 @@ struct phm_uvd_clock_voltage_dependency_record {
 
 struct phm_uvd_clock_voltage_dependency_table {
 	uint8_t count;
-	struct phm_uvd_clock_voltage_dependency_record entries[] __counted_by(count);
+	struct phm_uvd_clock_voltage_dependency_record entries[];
 };
 
 struct phm_acp_clock_voltage_dependency_record {
@@ -150,7 +150,7 @@ struct phm_acp_clock_voltage_dependency_record {
 
 struct phm_acp_clock_voltage_dependency_table {
 	uint32_t count;
-	struct phm_acp_clock_voltage_dependency_record entries[] __counted_by(count);
+	struct phm_acp_clock_voltage_dependency_record entries[];
 };
 
 struct phm_vce_clock_voltage_dependency_record {
@@ -161,32 +161,32 @@ struct phm_vce_clock_voltage_dependency_record {
 
 struct phm_phase_shedding_limits_table {
 	uint32_t count;
-	struct phm_phase_shedding_limits_record  entries[] __counted_by(count);
+	struct phm_phase_shedding_limits_record  entries[];
 };
 
 struct phm_vceclock_voltage_dependency_table {
 	uint8_t count;
-	struct phm_vceclock_voltage_dependency_record entries[] __counted_by(count);
+	struct phm_vceclock_voltage_dependency_record entries[];
 };
 
 struct phm_uvdclock_voltage_dependency_table {
 	uint8_t count;
-	struct phm_uvdclock_voltage_dependency_record entries[] __counted_by(count);
+	struct phm_uvdclock_voltage_dependency_record entries[];
 };
 
 struct phm_samuclock_voltage_dependency_table {
 	uint8_t count;
-	struct phm_samuclock_voltage_dependency_record entries[] __counted_by(count);
+	struct phm_samuclock_voltage_dependency_record entries[];
 };
 
 struct phm_acpclock_voltage_dependency_table {
 	uint32_t count;
-	struct phm_acpclock_voltage_dependency_record entries[] __counted_by(count);
+	struct phm_acpclock_voltage_dependency_record entries[];
 };
 
 struct phm_vce_clock_voltage_dependency_table {
 	uint8_t count;
-	struct phm_vce_clock_voltage_dependency_record entries[] __counted_by(count);
+	struct phm_vce_clock_voltage_dependency_record entries[];
 };
 
 
@@ -393,7 +393,7 @@ union phm_cac_leakage_record {
 
 struct phm_cac_leakage_table {
 	uint32_t count;
-	union phm_cac_leakage_record entries[] __counted_by(count);
+	union phm_cac_leakage_record entries[];
 };
 
 struct phm_samu_clock_voltage_dependency_record {
@@ -404,7 +404,7 @@ struct phm_samu_clock_voltage_dependency_record {
 
 struct phm_samu_clock_voltage_dependency_table {
 	uint8_t count;
-	struct phm_samu_clock_voltage_dependency_record entries[] __counted_by(count);
+	struct phm_samu_clock_voltage_dependency_record entries[];
 };
 
 struct phm_cac_tdp_table {
drivers/gpu/drm/drm_fbdev_dma.c +2 -1
index b0602c4f3628..51c2d742d199 100644
@@ -50,7 +50,8 @@ static void drm_fbdev_dma_fb_destroy(struct fb_info *info)
 	if (!fb_helper->dev)
 		return;
 
-	fb_deferred_io_cleanup(info);
+	if (info->fbdefio)
+		fb_deferred_io_cleanup(info);
 	drm_fb_helper_fini(fb_helper);
 
 	drm_client_buffer_vunmap(fb_helper->buffer);
drivers/gpu/drm/i915/display/intel_hdcp.c +7 -3
index 3ebe035f382e..b0440cc59c23 100644
@@ -1089,7 +1089,8 @@ static void intel_hdcp_update_value(struct intel_connector *connector,
 	hdcp->value = value;
 	if (update_property) {
 		drm_connector_get(&connector->base);
-		queue_work(i915->unordered_wq, &hdcp->prop_work);
+		if (!queue_work(i915->unordered_wq, &hdcp->prop_work))
+			drm_connector_put(&connector->base);
 	}
 }
 
@@ -2517,7 +2518,8 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state,
 		mutex_lock(&hdcp->mutex);
 		hdcp->value = DRM_MODE_CONTENT_PROTECTION_DESIRED;
 		drm_connector_get(&connector->base);
-		queue_work(i915->unordered_wq, &hdcp->prop_work);
+		if (!queue_work(i915->unordered_wq, &hdcp->prop_work))
+			drm_connector_put(&connector->base);
 		mutex_unlock(&hdcp->mutex);
 	}
 
@@ -2534,7 +2536,9 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state,
 		 */
 		if (!desired_and_not_enabled && !content_protection_type_changed) {
 			drm_connector_get(&connector->base);
-			queue_work(i915->unordered_wq, &hdcp->prop_work);
+			if (!queue_work(i915->unordered_wq, &hdcp->prop_work))
+				drm_connector_put(&connector->base);
+
 		}
 	}
 
drivers/gpu/drm/nouveau/dispnv04/crtc.c +1 -1
index 4310ad71870b..8fed62e002fe 100644
@@ -1157,7 +1157,7 @@ nv04_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb,
 	chan = drm->channel;
 	if (!chan)
 		return -ENODEV;
-	cli = (void *)chan->user.client;
+	cli = chan->cli;
 	push = chan->chan.push;
 
 	s = kzalloc(sizeof(*s), GFP_KERNEL);
drivers/gpu/drm/nouveau/nouveau_abi16.c +1 -1
index d56909071de6..0dd38e73676d 100644
@@ -356,7 +356,7 @@ nouveau_abi16_ioctl_channel_alloc(ABI16_IOCTL_ARGS)
 	list_add(&chan->head, &abi16->channels);
 
 	/* create channel object and initialise dma and fence management */
-	ret = nouveau_channel_new(drm, device, false, runm, init->fb_ctxdma_handle,
+	ret = nouveau_channel_new(cli, false, runm, init->fb_ctxdma_handle,
 				  init->tt_ctxdma_handle, &chan->chan);
 	if (ret)
 		goto done;
drivers/gpu/drm/nouveau/nouveau_bo.c +1 -1
index 70fb003a6666..933356e93890 100644
@@ -859,7 +859,7 @@ nouveau_bo_move_m2mf(struct ttm_buffer_object *bo, int evict,
 {
 	struct nouveau_drm *drm = nouveau_bdev(bo->bdev);
 	struct nouveau_channel *chan = drm->ttm.chan;
-	struct nouveau_cli *cli = (void *)chan->user.client;
+	struct nouveau_cli *cli = chan->cli;
 	struct nouveau_fence *fence;
 	int ret;
 
drivers/gpu/drm/nouveau/nouveau_chan.c +11 -10
index 7c97b2886807..cee36b1efd39 100644
@@ -52,7 +52,7 @@ static int
 nouveau_channel_killed(struct nvif_event *event, void *repv, u32 repc)
 {
 	struct nouveau_channel *chan = container_of(event, typeof(*chan), kill);
-	struct nouveau_cli *cli = (void *)chan->user.client;
+	struct nouveau_cli *cli = chan->cli;
 
 	NV_PRINTK(warn, cli, "channel %d killed!\n", chan->chid);
 
@@ -66,7 +66,7 @@ int
 nouveau_channel_idle(struct nouveau_channel *chan)
 {
 	if (likely(chan && chan->fence && !atomic_read(&chan->killed))) {
-		struct nouveau_cli *cli = (void *)chan->user.client;
+		struct nouveau_cli *cli = chan->cli;
 		struct nouveau_fence *fence = NULL;
 		int ret;
 
@@ -142,10 +142,11 @@ nouveau_channel_wait(struct nvif_push *push, u32 size)
 }
 
 static int
-nouveau_channel_prep(struct nouveau_drm *drm, struct nvif_device *device,
+nouveau_channel_prep(struct nouveau_cli *cli,
 		     u32 size, struct nouveau_channel **pchan)
 {
-	struct nouveau_cli *cli = (void *)device->object.client;
+	struct nouveau_drm *drm = cli->drm;
+	struct nvif_device *device = &cli->device;
 	struct nv_dma_v0 args = {};
 	struct nouveau_channel *chan;
 	u32 target;
@@ -155,6 +156,7 @@ nouveau_channel_prep(struct nouveau_drm *drm, struct nvif_device *device,
 	if (!chan)
 		return -ENOMEM;
 
+	chan->cli = cli;
 	chan->device = device;
 	chan->drm = drm;
 	chan->vmm = nouveau_cli_vmm(cli);
@@ -254,7 +256,7 @@ nouveau_channel_prep(struct nouveau_drm *drm, struct nvif_device *device,
 }
 
 static int
-nouveau_channel_ctor(struct nouveau_drm *drm, struct nvif_device *device, bool priv, u64 runm,
+nouveau_channel_ctor(struct nouveau_cli *cli, bool priv, u64 runm,
 		     struct nouveau_channel **pchan)
 {
 	const struct nvif_mclass hosts[] = {
@@ -279,7 +281,7 @@ nouveau_channel_ctor(struct nouveau_drm *drm, struct nvif_device *device, bool p
 		struct nvif_chan_v0 chan;
 		char name[TASK_COMM_LEN+16];
 	} args;
-	struct nouveau_cli *cli = (void *)device->object.client;
+	struct nvif_device *device = &cli->device;
 	struct nouveau_channel *chan;
 	const u64 plength = 0x10000;
 	const u64 ioffset = plength;
@@ -298,7 +300,7 @@ nouveau_channel_ctor(struct nouveau_drm *drm, struct nvif_device *device, bool p
 		size = ioffset + ilength;
 
 	/* allocate dma push buffer */
-	ret = nouveau_channel_prep(drm, device, size, &chan);
+	ret = nouveau_channel_prep(cli, size, &chan);
 	*pchan = chan;
 	if (ret)
 		return ret;
@@ -493,13 +495,12 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart)
 }
 
 int
-nouveau_channel_new(struct nouveau_drm *drm, struct nvif_device *device,
+nouveau_channel_new(struct nouveau_cli *cli,
 		    bool priv, u64 runm, u32 vram, u32 gart, struct nouveau_channel **pchan)
 {
-	struct nouveau_cli *cli = (void *)device->object.client;
 	int ret;
 
-	ret = nouveau_channel_ctor(drm, device, priv, runm, pchan);
+	ret = nouveau_channel_ctor(cli, priv, runm, pchan);
 	if (ret) {
 		NV_PRINTK(dbg, cli, "channel create, %d\n", ret);
 		return ret;
drivers/gpu/drm/nouveau/nouveau_chan.h +2 -1
index 5de2ef4e98c2..260febd634ee 100644
@@ -12,6 +12,7 @@ struct nouveau_channel {
 		struct nvif_push *push;
 	} chan;
 
+	struct nouveau_cli *cli;
 	struct nvif_device *device;
 	struct nouveau_drm *drm;
 	struct nouveau_vmm *vmm;
@@ -62,7 +63,7 @@ struct nouveau_channel {
 int nouveau_channels_init(struct nouveau_drm *);
 void nouveau_channels_fini(struct nouveau_drm *);
 
-int  nouveau_channel_new(struct nouveau_drm *, struct nvif_device *, bool priv, u64 runm,
+int  nouveau_channel_new(struct nouveau_cli *, bool priv, u64 runm,
 			 u32 vram, u32 gart, struct nouveau_channel **);
 void nouveau_channel_del(struct nouveau_channel **);
 int  nouveau_channel_idle(struct nouveau_channel *);
drivers/gpu/drm/nouveau/nouveau_dmem.c +1 -1
index 6fb65b01d778..097bd3af0719 100644
@@ -193,7 +193,7 @@ static vm_fault_t nouveau_dmem_migrate_to_ram(struct vm_fault *vmf)
 	if (!spage || !(src & MIGRATE_PFN_MIGRATE))
 		goto done;
 
-	dpage = alloc_page_vma(GFP_HIGHUSER, vmf->vma, vmf->address);
+	dpage = alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vmf->vma, vmf->address);
 	if (!dpage)
 		goto done;
 
drivers/gpu/drm/nouveau/nouveau_drm.c +2 -2
index a58c31089613..bfba4e374df4 100644
@@ -356,7 +356,7 @@ nouveau_accel_ce_init(struct nouveau_drm *drm)
 		return;
 	}
 
-	ret = nouveau_channel_new(drm, device, false, runm, NvDmaFB, NvDmaTT, &drm->cechan);
+	ret = nouveau_channel_new(&drm->client, true, runm, NvDmaFB, NvDmaTT, &drm->cechan);
 	if (ret)
 		NV_ERROR(drm, "failed to create ce channel, %d\n", ret);
 }
@@ -384,7 +384,7 @@ nouveau_accel_gr_init(struct nouveau_drm *drm)
 		return;
 	}
 
-	ret = nouveau_channel_new(drm, device, false, runm, NvDmaFB, NvDmaTT, &drm->channel);
+	ret = nouveau_channel_new(&drm->client, false, runm, NvDmaFB, NvDmaTT, &drm->channel);
 	if (ret) {
 		NV_ERROR(drm, "failed to create kernel channel, %d\n", ret);
 		nouveau_accel_gr_fini(drm);
drivers/gpu/drm/v3d/v3d_perfmon.c +8 -1
index b7d0b02e1a95..e0bd48e3610a 100644
@@ -289,6 +289,11 @@ void v3d_perfmon_open_file(struct v3d_file_priv *v3d_priv)
 static int v3d_perfmon_idr_del(int id, void *elem, void *data)
 {
 	struct v3d_perfmon *perfmon = elem;
+	struct v3d_dev *v3d = (struct v3d_dev *)data;
+
+	/* If the active perfmon is being destroyed, stop it first */
+	if (perfmon == v3d->active_perfmon)
+		v3d_perfmon_stop(v3d, perfmon, false);
 
 	v3d_perfmon_put(perfmon);
 
@@ -297,8 +302,10 @@ static int v3d_perfmon_idr_del(int id, void *elem, void *data)
 
 void v3d_perfmon_close_file(struct v3d_file_priv *v3d_priv)
 {
+	struct v3d_dev *v3d = v3d_priv->v3d;
+
 	mutex_lock(&v3d_priv->perfmon.lock);
-	idr_for_each(&v3d_priv->perfmon.idr, v3d_perfmon_idr_del, NULL);
+	idr_for_each(&v3d_priv->perfmon.idr, v3d_perfmon_idr_del, v3d);
 	idr_destroy(&v3d_priv->perfmon.idr);
 	mutex_unlock(&v3d_priv->perfmon.lock);
 	mutex_destroy(&v3d_priv->perfmon.lock);
drivers/gpu/drm/vc4/vc4_perfmon.c +6 -1
index c4ac2c946238..c00a5cc2316d 100644
@@ -116,6 +116,11 @@ void vc4_perfmon_open_file(struct vc4_file *vc4file)
 static int vc4_perfmon_idr_del(int id, void *elem, void *data)
 {
 	struct vc4_perfmon *perfmon = elem;
+	struct vc4_dev *vc4 = (struct vc4_dev *)data;
+
+	/* If the active perfmon is being destroyed, stop it first */
+	if (perfmon == vc4->active_perfmon)
+		vc4_perfmon_stop(vc4, perfmon, false);
 
 	vc4_perfmon_put(perfmon);
 
@@ -130,7 +135,7 @@ void vc4_perfmon_close_file(struct vc4_file *vc4file)
 		return;
 
 	mutex_lock(&vc4file->perfmon.lock);
-	idr_for_each(&vc4file->perfmon.idr, vc4_perfmon_idr_del, NULL);
+	idr_for_each(&vc4file->perfmon.idr, vc4_perfmon_idr_del, vc4);
 	idr_destroy(&vc4file->perfmon.idr);
 	mutex_unlock(&vc4file->perfmon.lock);
 	mutex_destroy(&vc4file->perfmon.lock);
drivers/gpu/drm/xe/xe_bb.c +2 -1
index a13e0b3a169e..ef777dbdf4ec 100644
@@ -65,7 +65,8 @@ __xe_bb_create_job(struct xe_exec_queue *q, struct xe_bb *bb, u64 *addr)
 {
 	u32 size = drm_suballoc_size(bb->bo);
 
-	bb->cs[bb->len++] = MI_BATCH_BUFFER_END;
+	if (bb->len == 0 || bb->cs[bb->len - 1] != MI_BATCH_BUFFER_END)
+		bb->cs[bb->len++] = MI_BATCH_BUFFER_END;
 
 	xe_gt_assert(q->gt, bb->len * 4 + bb_prefetch(q->gt) <= size);
 
drivers/gpu/drm/xe/xe_debugfs.c +1 -1
index 1011e5d281fa..c87e6bca64d8 100644
@@ -190,7 +190,7 @@ void xe_debugfs_register(struct xe_device *xe)
 	debugfs_create_file("forcewake_all", 0400, root, xe,
 			    &forcewake_all_fops);
 
-	debugfs_create_file("wedged_mode", 0400, root, xe,
+	debugfs_create_file("wedged_mode", 0600, root, xe,
 			    &wedged_mode_fops);
 
 	for (mem_type = XE_PL_VRAM0; mem_type <= XE_PL_VRAM1; ++mem_type) {
drivers/gpu/drm/xe/xe_gt.c +3 -1
index cb9df15e7137..0062a5e4d5fa 100644
@@ -874,7 +874,9 @@ int xe_gt_sanitize_freq(struct xe_gt *gt)
 	int ret = 0;
 
 	if ((!xe_uc_fw_is_available(&gt->uc.gsc.fw) ||
-	     xe_uc_fw_is_loaded(&gt->uc.gsc.fw)) && XE_WA(gt, 22019338487))
+	     xe_uc_fw_is_loaded(&gt->uc.gsc.fw) ||
+	     xe_uc_fw_is_in_error_state(&gt->uc.gsc.fw)) &&
+	    XE_WA(gt, 22019338487))
 		ret = xe_guc_pc_restore_stashed_freq(&gt->uc.guc.pc);
 
 	return ret;
drivers/gpu/drm/xe/xe_guc_ct.c +26 -18

79 lines not on this page · raw message

drivers/gpu/drm/xe/xe_guc_submit.c +3 -6
index 62c3982ad7fd..690f821f8bf5 100644
@@ -393,7 +393,6 @@ static void __release_guc_id(struct xe_guc *guc, struct xe_exec_queue *q, u32 xa
 static int alloc_guc_id(struct xe_guc *guc, struct xe_exec_queue *q)
 {
 	int ret;
-	void *ptr;
 	int i;
 
 	/*
@@ -413,12 +412,10 @@ static int alloc_guc_id(struct xe_guc *guc, struct xe_exec_queue *q)
 	q->guc->id = ret;
 
 	for (i = 0; i < q->width; ++i) {
-		ptr = xa_store(&guc->submission_state.exec_queue_lookup,
-			       q->guc->id + i, q, GFP_NOWAIT);
-		if (IS_ERR(ptr)) {
-			ret = PTR_ERR(ptr);
+		ret = xa_err(xa_store(&guc->submission_state.exec_queue_lookup,
+				      q->guc->id + i, q, GFP_NOWAIT));
+		if (ret)
 			goto err_release;
-		}
 	}
 
 	return 0;
drivers/hid/amd-sfh-hid/amd_sfh_client.c +3 -11
index 4b59687ff5d8..3438d392920f 100644
@@ -236,9 +236,9 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
 	cl_data->in_data = in_data;
 
 	for (i = 0; i < cl_data->num_hid_devices; i++) {
-		in_data->sensor_virt_addr[i] = dma_alloc_coherent(dev, sizeof(int) * 8,
-								  &cl_data->sensor_dma_addr[i],
-								  GFP_KERNEL);
+		in_data->sensor_virt_addr[i] = dmam_alloc_coherent(dev, sizeof(int) * 8,
+								   &cl_data->sensor_dma_addr[i],
+								   GFP_KERNEL);
 		if (!in_data->sensor_virt_addr[i]) {
 			rc = -ENOMEM;
 			goto cleanup;
@@ -331,7 +331,6 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
 int amd_sfh_hid_client_deinit(struct amd_mp2_dev *privdata)
 {
 	struct amdtp_cl_data *cl_data = privdata->cl_data;
-	struct amd_input_data *in_data = cl_data->in_data;
 	int i, status;
 
 	for (i = 0; i < cl_data->num_hid_devices; i++) {
@@ -351,12 +350,5 @@ int amd_sfh_hid_client_deinit(struct amd_mp2_dev *privdata)
 	cancel_delayed_work_sync(&cl_data->work_buffer);
 	amdtp_hid_remove(cl_data);
 
-	for (i = 0; i < cl_data->num_hid_devices; i++) {
-		if (in_data->sensor_virt_addr[i]) {
-			dma_free_coherent(&privdata->pdev->dev, 8 * sizeof(int),
-					  in_data->sensor_virt_addr[i],
-					  cl_data->sensor_dma_addr[i]);
-		}
-	}
 	return 0;
 }
drivers/hid/hid-ids.h +3 -0
index 06104a4e0fdc..8a991b30e3c6 100644
@@ -505,6 +505,7 @@
 #define USB_DEVICE_ID_GENERAL_TOUCH_WIN8_PIT_E100 0xe100
 
 #define I2C_VENDOR_ID_GOODIX		0x27c6
+#define I2C_DEVICE_ID_GOODIX_01E0	0x01e0
 #define I2C_DEVICE_ID_GOODIX_01E8	0x01e8
 #define I2C_DEVICE_ID_GOODIX_01E9	0x01e9
 #define I2C_DEVICE_ID_GOODIX_01F0	0x01f0
@@ -1035,6 +1036,8 @@
 #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES	0xc056
 #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES	0xc057
 #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES	0xc058
+#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES	0x430c
+#define USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES		0x431e
 
 #define USB_VENDOR_ID_PANASONIC		0x04da
 #define USB_DEVICE_ID_PANABOARD_UBT780	0x1044
drivers/hid/hid-multitouch.c +6 -2
index c4a6908bbe54..847462650549 100644
@@ -1446,7 +1446,8 @@ static __u8 *mt_report_fixup(struct hid_device *hdev, __u8 *rdesc,
 {
 	if (hdev->vendor == I2C_VENDOR_ID_GOODIX &&
 	    (hdev->product == I2C_DEVICE_ID_GOODIX_01E8 ||
-	     hdev->product == I2C_DEVICE_ID_GOODIX_01E9)) {
+	     hdev->product == I2C_DEVICE_ID_GOODIX_01E9 ||
+		 hdev->product == I2C_DEVICE_ID_GOODIX_01E0)) {
 		if (rdesc[607] == 0x15) {
 			rdesc[607] = 0x25;
 			dev_info(
@@ -2065,7 +2066,10 @@ static const struct hid_device_id mt_devices[] = {
 		     I2C_DEVICE_ID_GOODIX_01E8) },
 	{ .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU,
 	  HID_DEVICE(BUS_I2C, HID_GROUP_ANY, I2C_VENDOR_ID_GOODIX,
-		     I2C_DEVICE_ID_GOODIX_01E8) },
+		     I2C_DEVICE_ID_GOODIX_01E9) },
+	{ .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU,
+	  HID_DEVICE(BUS_I2C, HID_GROUP_ANY, I2C_VENDOR_ID_GOODIX,
+		     I2C_DEVICE_ID_GOODIX_01E0) },
 
 	/* GoodTouch panels */
 	{ .driver_data = MT_CLS_NSMU,
drivers/hid/hid-plantronics.c +23 -0
index 3d414ae194ac..25cfd964dc25 100644
@@ -38,8 +38,10 @@
 			    (usage->hid & HID_USAGE_PAGE) == HID_UP_CONSUMER)
 
 #define PLT_QUIRK_DOUBLE_VOLUME_KEYS BIT(0)
+#define PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS BIT(1)
 
 #define PLT_DOUBLE_KEY_TIMEOUT 5 /* ms */
+#define PLT_FOLLOWED_OPPOSITE_KEY_TIMEOUT 220 /* ms */
 
 struct plt_drv_data {
 	unsigned long device_type;
@@ -137,6 +139,21 @@ static int plantronics_event(struct hid_device *hdev, struct hid_field *field,
 
 		drv_data->last_volume_key_ts = cur_ts;
 	}
+	if (drv_data->quirks & PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS) {
+		unsigned long prev_ts, cur_ts;
+
+		/* Usages are filtered in plantronics_usages. */
+
+		if (!value) /* Handle key presses only. */
+			return 0;
+
+		prev_ts = drv_data->last_volume_key_ts;
+		cur_ts = jiffies;
+		if (jiffies_to_msecs(cur_ts - prev_ts) <= PLT_FOLLOWED_OPPOSITE_KEY_TIMEOUT)
+			return 1; /* Ignore the followed opposite volume key. */
+
+		drv_data->last_volume_key_ts = cur_ts;
+	}
 
 	return 0;
 }
@@ -210,6 +227,12 @@ static const struct hid_device_id plantronics_devices[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS,
 					 USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES),
 		.driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS,
+					 USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES),
+		.driver_data = PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS,
+					 USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES),
+		.driver_data = PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) },
 	{ }
 };
drivers/hid/intel-ish-hid/ishtp-fw-loader.c +1 -1
index e157863a8b25..b3c3cfcd97fc 100644
@@ -635,7 +635,7 @@ static int ish_fw_xfer_direct_dma(struct ishtp_cl_data *client_data,
 				  const struct firmware *fw,
 				  const struct shim_fw_info fw_info)
 {
-	int rv;
+	int rv = 0;
 	void *dma_buf;
 	dma_addr_t dma_buf_phy;
 	u32 fragment_offset, fragment_size, payload_max_size;
drivers/hid/wacom_wac.c +2 -0
index e86a37c3cf9c..7a16c65f2014 100644
@@ -2501,6 +2501,8 @@ static void wacom_wac_pen_report(struct hid_device *hdev,
 		/* Going into range select tool */
 		if (wacom_wac->hid_data.invert_state)
 			wacom_wac->tool[0] = BTN_TOOL_RUBBER;
+		else if (wacom_wac->features.quirks & WACOM_QUIRK_AESPEN)
+			wacom_wac->tool[0] = BTN_TOOL_PEN;
 		else if (wacom_wac->id[0])
 			wacom_wac->tool[0] = wacom_intuos_get_tool_type(wacom_wac->id[0]);
 		else
drivers/hwmon/Kconfig +5 -0
index b60fe2e58ad6..778e584c3a75 100644
@@ -162,6 +162,7 @@ config SENSORS_ADM9240
 	tristate "Analog Devices ADM9240 and compatibles"
 	depends on I2C
 	select HWMON_VID
+	select REGMAP_I2C
 	help
 	  If you say yes here you get support for Analog Devices ADM9240,
 	  Dallas DS1780, National Semiconductor LM81 sensor chips.
@@ -223,6 +224,7 @@ config SENSORS_ADT7462
 config SENSORS_ADT7470
 	tristate "Analog Devices ADT7470"
 	depends on I2C
+	select REGMAP_I2C
 	help
 	  If you say yes here you get support for the Analog Devices
 	  ADT7470 temperature monitoring chips.
@@ -999,6 +1001,7 @@ config SENSORS_LTC2990
 config SENSORS_LTC2991
 	tristate "Analog Devices LTC2991"
 	depends on I2C
+	select REGMAP_I2C
 	help
 	  If you say yes here you get support for Analog Devices LTC2991
 	  Octal I2C Voltage, Current, and Temperature Monitor. The LTC2991
@@ -1275,6 +1278,7 @@ config SENSORS_MAX31790
 config SENSORS_MC34VR500
 	tristate "NXP MC34VR500 hardware monitoring driver"
 	depends on I2C
+	select REGMAP_I2C
 	help
 	  If you say yes here you get support for the temperature and input
 	  voltage sensors of the NXP MC34VR500.
@@ -2288,6 +2292,7 @@ config SENSORS_TMP464
 config SENSORS_TMP513
 	tristate "Texas Instruments TMP513 and compatibles"
 	depends on I2C
+	select REGMAP_I2C
 	help
 	  If you say yes here you get support for Texas Instruments TMP512,
 	  and TMP513 temperature and power supply sensor chips.
drivers/hwmon/intel-m10-bmc-hwmon.c +1 -1
index ca2dff158925..96397ae6ff18 100644
@@ -358,7 +358,7 @@ static const struct m10bmc_sdata n6000bmc_temp_tbl[] = {
 	{ 0x4f0, 0x4f4, 0x4f8, 0x52c, 0x0, 500, "Board Top Near FPGA Temperature" },
 	{ 0x4fc, 0x500, 0x504, 0x52c, 0x0, 500, "Board Bottom Near CVL Temperature" },
 	{ 0x508, 0x50c, 0x510, 0x52c, 0x0, 500, "Board Top East Near VRs Temperature" },
-	{ 0x514, 0x518, 0x51c, 0x52c, 0x0, 500, "Columbiaville Die Temperature" },
+	{ 0x514, 0x518, 0x51c, 0x52c, 0x0, 500, "CVL Die Temperature" },
 	{ 0x520, 0x524, 0x528, 0x52c, 0x0, 500, "Board Rear Side Temperature" },
 	{ 0x530, 0x534, 0x538, 0x52c, 0x0, 500, "Board Front Side Temperature" },
 	{ 0x53c, 0x540, 0x544, 0x0, 0x0, 500, "QSFP1 Case Temperature" },
drivers/hwmon/k10temp.c +1 -0
index 543526bac042..f96b91e43312 100644
@@ -548,6 +548,7 @@ static const struct pci_device_id k10temp_id_table[] = {
 	{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_19H_M78H_DF_F3) },
 	{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_1AH_M00H_DF_F3) },
 	{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_1AH_M20H_DF_F3) },
+	{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_1AH_M60H_DF_F3) },
 	{ PCI_VDEVICE(HYGON, PCI_DEVICE_ID_AMD_17H_DF_F3) },
 	{}
 };
drivers/i2c/busses/i2c-i801.c +8 -1
index 328c0dab6b14..299fe9d3afab 100644
@@ -1763,8 +1763,15 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)
 
 	i801_add_tco(priv);
 
+	/*
+	 * adapter.name is used by platform code to find the main I801 adapter
+	 * to instantiante i2c_clients, do not change.
+	 */
 	snprintf(priv->adapter.name, sizeof(priv->adapter.name),
-		"SMBus I801 adapter at %04lx", priv->smba);
+		 "SMBus %s adapter at %04lx",
+		 (priv->features & FEATURE_IDF) ? "I801 IDF" : "I801",
+		 priv->smba);
+
 	err = i2c_add_adapter(&priv->adapter);
 	if (err) {
 		platform_device_unregister(priv->tco_pdev);
drivers/i3c/master/i3c-master-cdns.c +1 -0
index c1627f3552ce..c2d26beb3da2 100644
@@ -1666,6 +1666,7 @@ static void cdns_i3c_master_remove(struct platform_device *pdev)
 {
 	struct cdns_i3c_master *master = platform_get_drvdata(pdev);
 
+	cancel_work_sync(&master->hj_work);
 	i3c_master_unregister(&master->base);
 
 	clk_disable_unprepare(master->sysclk);
drivers/infiniband/core/mad.c +8 -6
index 7439e47ff951..70708fea1296 100644
@@ -2616,14 +2616,16 @@ static int retry_send(struct ib_mad_send_wr_private *mad_send_wr)
 
 static void timeout_sends(struct work_struct *work)
 {
+	struct ib_mad_send_wr_private *mad_send_wr, *n;
 	struct ib_mad_agent_private *mad_agent_priv;
-	struct ib_mad_send_wr_private *mad_send_wr;
 	struct ib_mad_send_wc mad_send_wc;
+	struct list_head local_list;
 	unsigned long flags, delay;
 
 	mad_agent_priv = container_of(work, struct ib_mad_agent_private,
 				      timed_work.work);
 	mad_send_wc.vendor_err = 0;
+	INIT_LIST_HEAD(&local_list);
 
 	spin_lock_irqsave(&mad_agent_priv->lock, flags);
 	while (!list_empty(&mad_agent_priv->wait_list)) {
@@ -2641,13 +2643,16 @@ static void timeout_sends(struct work_struct *work)
 			break;
 		}
 
-		list_del(&mad_send_wr->agent_list);
+		list_del_init(&mad_send_wr->agent_list);
 		if (mad_send_wr->status == IB_WC_SUCCESS &&
 		    !retry_send(mad_send_wr))
 			continue;
 
-		spin_unlock_irqrestore(&mad_agent_priv->lock, flags);
+		list_add_tail(&mad_send_wr->agent_list, &local_list);
+	}
+	spin_unlock_irqrestore(&mad_agent_priv->lock, flags);
 
+	list_for_each_entry_safe(mad_send_wr, n, &local_list, agent_list) {
 		if (mad_send_wr->status == IB_WC_SUCCESS)
 			mad_send_wc.status = IB_WC_RESP_TIMEOUT_ERR;
 		else
@@ -2655,11 +2660,8 @@ static void timeout_sends(struct work_struct *work)
 		mad_send_wc.send_buf = &mad_send_wr->send_buf;
 		mad_agent_priv->agent.send_handler(&mad_agent_priv->agent,
 						   &mad_send_wc);
-
 		deref_mad_agent(mad_agent_priv);
-		spin_lock_irqsave(&mad_agent_priv->lock, flags);
 	}
-	spin_unlock_irqrestore(&mad_agent_priv->lock, flags);
 }
 
 /*
drivers/infiniband/hw/mlx5/odp.c +16 -9
index a524181f34df..3a4605fda6d5 100644
@@ -733,24 +733,31 @@ static int pagefault_dmabuf_mr(struct mlx5_ib_mr *mr, size_t bcnt,
  *  >0: Number of pages mapped
  */
 static int pagefault_mr(struct mlx5_ib_mr *mr, u64 io_virt, size_t bcnt,
-			u32 *bytes_mapped, u32 flags)
+			u32 *bytes_mapped, u32 flags, bool permissive_fault)
 {
 	struct ib_umem_odp *odp = to_ib_umem_odp(mr->umem);
 
-	if (unlikely(io_virt < mr->ibmr.iova))
+	if (unlikely(io_virt < mr->ibmr.iova) && !permissive_fault)
 		return -EFAULT;
 
 	if (mr->umem->is_dmabuf)
 		return pagefault_dmabuf_mr(mr, bcnt, bytes_mapped, flags);
 
 	if (!odp->is_implicit_odp) {
+		u64 offset = io_virt < mr->ibmr.iova ? 0 : io_virt - mr->ibmr.iova;
 		u64 user_va;
 
-		if (check_add_overflow(io_virt - mr->ibmr.iova,
-				       (u64)odp->umem.address, &user_va))
+		if (check_add_overflow(offset, (u64)odp->umem.address,
+				       &user_va))
 			return -EFAULT;
-		if (unlikely(user_va >= ib_umem_end(odp) ||
-			     ib_umem_end(odp) - user_va < bcnt))
+
+		if (permissive_fault) {
+			if (user_va < ib_umem_start(odp))
+				user_va = ib_umem_start(odp);
+			if ((user_va + bcnt) > ib_umem_end(odp))
+				bcnt = ib_umem_end(odp) - user_va;
+		} else if (unlikely(user_va >= ib_umem_end(odp) ||
+				    ib_umem_end(odp) - user_va < bcnt))
 			return -EFAULT;
 		return pagefault_real_mr(mr, odp, user_va, bcnt, bytes_mapped,
 					 flags);
@@ -857,7 +864,7 @@ static int pagefault_single_data_segment(struct mlx5_ib_dev *dev,
 	case MLX5_MKEY_MR:
 		mr = container_of(mmkey, struct mlx5_ib_mr, mmkey);
 
-		ret = pagefault_mr(mr, io_virt, bcnt, bytes_mapped, 0);
+		ret = pagefault_mr(mr, io_virt, bcnt, bytes_mapped, 0, false);
 		if (ret < 0)
 			goto end;
 
@@ -1710,7 +1717,7 @@ static void mlx5_ib_prefetch_mr_work(struct work_struct *w)
 	for (i = 0; i < work->num_sge; ++i) {
 		ret = pagefault_mr(work->frags[i].mr, work->frags[i].io_virt,
 				   work->frags[i].length, &bytes_mapped,
-				   work->pf_flags);
+				   work->pf_flags, false);
 		if (ret <= 0)
 			continue;
 		mlx5_update_odp_stats(work->frags[i].mr, prefetch, ret);
@@ -1761,7 +1768,7 @@ static int mlx5_ib_prefetch_sg_list(struct ib_pd *pd,
 		if (IS_ERR(mr))
 			return PTR_ERR(mr);
 		ret = pagefault_mr(mr, sg_list[i].addr, sg_list[i].length,
-				   &bytes_mapped, pf_flags);
+				   &bytes_mapped, pf_flags, false);
 		if (ret < 0) {
 			mlx5r_deref_odp_mkey(&mr->mmkey);
 			return ret;
drivers/infiniband/ulp/rtrs/rtrs-srv.c +11 -2
index 94ac99a4f696..758a3d9c2844 100644
@@ -931,12 +931,11 @@ static void rtrs_srv_info_req_done(struct ib_cq *cq, struct ib_wc *wc)
 	if (err)
 		goto close;
 
-out:
 	rtrs_iu_free(iu, srv_path->s.dev->ib_dev, 1);
 	return;
 close:
+	rtrs_iu_free(iu, srv_path->s.dev->ib_dev, 1);
 	close_path(srv_path);
-	goto out;
 }
 
 static int post_recv_info_req(struct rtrs_srv_con *con)
@@ -987,6 +986,16 @@ static int post_recv_path(struct rtrs_srv_path *srv_path)
 			q_size = SERVICE_CON_QUEUE_DEPTH;
 		else
 			q_size = srv->queue_depth;
+		if (srv_path->state != RTRS_SRV_CONNECTING) {
+			rtrs_err(s, "Path state invalid. state %s\n",
+				 rtrs_srv_state_str(srv_path->state));
+			return -EIO;
+		}
+
+		if (!srv_path->s.con[cid]) {
+			rtrs_err(s, "Conn not set for %d\n", cid);
+			return -EIO;
+		}
 
 		err = post_recv_io(to_srv_con(srv_path->s.con[cid]), q_size);
 		if (err) {
drivers/md/dm-vdo/dedupe.c +3 -0
index 39ac68614419..80628ae93fba 100644
@@ -729,6 +729,7 @@ static void process_update_result(struct data_vio *agent)
 	    !change_context_state(context, DEDUPE_CONTEXT_COMPLETE, DEDUPE_CONTEXT_IDLE))
 		return;
 
+	agent->dedupe_context = NULL;
 	release_context(context);
 }
 
@@ -1648,6 +1649,7 @@ static void process_query_result(struct data_vio *agent)
 
 	if (change_context_state(context, DEDUPE_CONTEXT_COMPLETE, DEDUPE_CONTEXT_IDLE)) {
 		agent->is_duplicate = decode_uds_advice(context);
+		agent->dedupe_context = NULL;
 		release_context(context);
 	}
 }
@@ -2321,6 +2323,7 @@ static void timeout_index_operations_callback(struct vdo_completion *completion)
 		 * send its requestor on its way.
 		 */
 		list_del_init(&context->list_entry);
+		context->requestor->dedupe_context = NULL;
 		continue_data_vio(context->requestor);
 		timed_out++;
 	}
drivers/media/common/videobuf2/videobuf2-core.c +4 -4
index 8b0de1cb0880..97605c2e25da 100644
@@ -311,6 +311,10 @@ static void __vb2_plane_dmabuf_put(struct vb2_buffer *vb, struct vb2_plane *p)
 	p->mem_priv = NULL;
 	p->dbuf = NULL;
 	p->dbuf_mapped = 0;
+	p->bytesused = 0;
+	p->length = 0;
+	p->m.fd = 0;
+	p->data_offset = 0;
 }
 
 /*
@@ -1420,10 +1424,6 @@ static int __prepare_dmabuf(struct vb2_buffer *vb)
 
 		/* Release previously acquired memory if present */
 		__vb2_plane_dmabuf_put(vb, &vb->planes[plane]);
-		vb->planes[plane].bytesused = 0;
-		vb->planes[plane].length = 0;
-		vb->planes[plane].m.fd = 0;
-		vb->planes[plane].data_offset = 0;
 
 		/* Acquire each plane's memory */
 		mem_priv = call_ptr_memop(attach_dmabuf,
drivers/mfd/intel-lpss-pci.c +39 -0
index 1362b3f64ade..1d8cdc4d5819 100644
@@ -424,6 +424,19 @@ static const struct pci_device_id intel_lpss_pci_ids[] = {
 	{ PCI_VDEVICE(INTEL, 0x5ac4), (kernel_ulong_t)&bxt_spi_info },
 	{ PCI_VDEVICE(INTEL, 0x5ac6), (kernel_ulong_t)&bxt_spi_info },
 	{ PCI_VDEVICE(INTEL, 0x5aee), (kernel_ulong_t)&bxt_uart_info },
+	/* ARL-H */
+	{ PCI_VDEVICE(INTEL, 0x7725), (kernel_ulong_t)&bxt_uart_info },
+	{ PCI_VDEVICE(INTEL, 0x7726), (kernel_ulong_t)&bxt_uart_info },
+	{ PCI_VDEVICE(INTEL, 0x7727), (kernel_ulong_t)&tgl_spi_info },
+	{ PCI_VDEVICE(INTEL, 0x7730), (kernel_ulong_t)&tgl_spi_info },
+	{ PCI_VDEVICE(INTEL, 0x7746), (kernel_ulong_t)&tgl_spi_info },
+	{ PCI_VDEVICE(INTEL, 0x7750), (kernel_ulong_t)&bxt_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0x7751), (kernel_ulong_t)&bxt_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0x7752), (kernel_ulong_t)&bxt_uart_info },
+	{ PCI_VDEVICE(INTEL, 0x7778), (kernel_ulong_t)&bxt_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0x7779), (kernel_ulong_t)&bxt_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0x777a), (kernel_ulong_t)&bxt_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0x777b), (kernel_ulong_t)&bxt_i2c_info },
 	/* RPL-S */
 	{ PCI_VDEVICE(INTEL, 0x7a28), (kernel_ulong_t)&bxt_uart_info },
 	{ PCI_VDEVICE(INTEL, 0x7a29), (kernel_ulong_t)&bxt_uart_info },
@@ -594,6 +607,32 @@ static const struct pci_device_id intel_lpss_pci_ids[] = {
 	{ PCI_VDEVICE(INTEL, 0xa879), (kernel_ulong_t)&ehl_i2c_info },
 	{ PCI_VDEVICE(INTEL, 0xa87a), (kernel_ulong_t)&ehl_i2c_info },
 	{ PCI_VDEVICE(INTEL, 0xa87b), (kernel_ulong_t)&ehl_i2c_info },
+	/* PTL-H */
+	{ PCI_VDEVICE(INTEL, 0xe325), (kernel_ulong_t)&bxt_uart_info },
+	{ PCI_VDEVICE(INTEL, 0xe326), (kernel_ulong_t)&bxt_uart_info },
+	{ PCI_VDEVICE(INTEL, 0xe327), (kernel_ulong_t)&tgl_spi_info },
+	{ PCI_VDEVICE(INTEL, 0xe330), (kernel_ulong_t)&tgl_spi_info },
+	{ PCI_VDEVICE(INTEL, 0xe346), (kernel_ulong_t)&tgl_spi_info },
+	{ PCI_VDEVICE(INTEL, 0xe350), (kernel_ulong_t)&ehl_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0xe351), (kernel_ulong_t)&ehl_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0xe352), (kernel_ulong_t)&bxt_uart_info },
+	{ PCI_VDEVICE(INTEL, 0xe378), (kernel_ulong_t)&ehl_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0xe379), (kernel_ulong_t)&ehl_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0xe37a), (kernel_ulong_t)&ehl_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0xe37b), (kernel_ulong_t)&ehl_i2c_info },
+	/* PTL-P */
+	{ PCI_VDEVICE(INTEL, 0xe425), (kernel_ulong_t)&bxt_uart_info },
+	{ PCI_VDEVICE(INTEL, 0xe426), (kernel_ulong_t)&bxt_uart_info },
+	{ PCI_VDEVICE(INTEL, 0xe427), (kernel_ulong_t)&tgl_spi_info },
+	{ PCI_VDEVICE(INTEL, 0xe430), (kernel_ulong_t)&tgl_spi_info },
+	{ PCI_VDEVICE(INTEL, 0xe446), (kernel_ulong_t)&tgl_spi_info },
+	{ PCI_VDEVICE(INTEL, 0xe450), (kernel_ulong_t)&ehl_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0xe451), (kernel_ulong_t)&ehl_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0xe452), (kernel_ulong_t)&bxt_uart_info },
+	{ PCI_VDEVICE(INTEL, 0xe478), (kernel_ulong_t)&ehl_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0xe479), (kernel_ulong_t)&ehl_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0xe47a), (kernel_ulong_t)&ehl_i2c_info },
+	{ PCI_VDEVICE(INTEL, 0xe47b), (kernel_ulong_t)&ehl_i2c_info },
 	{ }
 };
 MODULE_DEVICE_TABLE(pci, intel_lpss_pci_ids);
drivers/mfd/intel_soc_pmic_chtwc.c +0 -1
index 7fce3ef7ab45..2a83f540d4c9 100644
@@ -178,7 +178,6 @@ static const struct dmi_system_id cht_wc_model_dmi_ids[] = {
 		.driver_data = (void *)(long)INTEL_CHT_WC_LENOVO_YT3_X90,
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
 			DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"),
 		},
 	},
drivers/mmc/host/mvsdio.c +18 -53

164 lines not on this page · raw message

drivers/mmc/host/sdhci-of-dwcmshc.c +8 -0
index e79aa4b3b6c3..c23e5cf47eed 100644
@@ -746,6 +746,14 @@ static void th1520_sdhci_reset(struct sdhci_host *host, u8 mask)
 
 	sdhci_reset(host, mask);
 
+	/* The T-Head 1520 SoC does not comply with the SDHCI specification
+	 * regarding the "Software Reset for CMD line should clear 'Command
+	 * Complete' in the Normal Interrupt Status Register." Clear the bit
+	 * here to compensate for this quirk.
+	 */
+	if (mask & SDHCI_RESET_CMD)
+		sdhci_writel(host, SDHCI_INT_RESPONSE, SDHCI_INT_STATUS);
+
 	if (priv->flags & FLAG_IO_FIXED_1V8) {
 		ctrl_2 = sdhci_readw(host, SDHCI_HOST_CONTROL2);
 		if (!(ctrl_2 & SDHCI_CTRL_VDD_180)) {
drivers/net/dsa/b53/b53_common.c +13 -4
index 0783fc121bbb..c39cb119e760 100644
@@ -27,6 +27,7 @@
 #include <linux/phylink.h>
 #include <linux/etherdevice.h>
 #include <linux/if_bridge.h>
+#include <linux/if_vlan.h>
 #include <net/dsa.h>
 
 #include "b53_regs.h"
@@ -224,6 +225,9 @@ static const struct b53_mib_desc b53_mibs_58xx[] = {
 
 #define B53_MIBS_58XX_SIZE	ARRAY_SIZE(b53_mibs_58xx)
 
+#define B53_MAX_MTU_25		(1536 - ETH_HLEN - VLAN_HLEN - ETH_FCS_LEN)
+#define B53_MAX_MTU		(9720 - ETH_HLEN - VLAN_HLEN - ETH_FCS_LEN)
+
 static int b53_do_vlan_op(struct b53_device *dev, u8 op)
 {
 	unsigned int i;
@@ -2254,20 +2258,25 @@ static int b53_change_mtu(struct dsa_switch *ds, int port, int mtu)
 	bool allow_10_100;
 
 	if (is5325(dev) || is5365(dev))
-		return -EOPNOTSUPP;
+		return 0;
 
 	if (!dsa_is_cpu_port(ds, port))
 		return 0;
 
-	enable_jumbo = (mtu >= JMS_MIN_SIZE);
-	allow_10_100 = (dev->chip_id == BCM583XX_DEVICE_ID);
+	enable_jumbo = (mtu > ETH_DATA_LEN);
+	allow_10_100 = !is63xx(dev);
 
 	return b53_set_jumbo(dev, enable_jumbo, allow_10_100);
 }
 
 static int b53_get_max_mtu(struct dsa_switch *ds, int port)
 {
-	return JMS_MAX_SIZE;
+	struct b53_device *dev = ds->priv;
+
+	if (is5325(dev) || is5365(dev))
+		return B53_MAX_MTU_25;
+
+	return B53_MAX_MTU;
 }
 
 static const struct phylink_mac_ops b53_phylink_mac_ops = {
drivers/net/dsa/lan9303-core.c +29 -0
index 268949939636..d246f95d57ec 100644
@@ -6,6 +6,7 @@
 #include <linux/module.h>
 #include <linux/gpio/consumer.h>
 #include <linux/regmap.h>
+#include <linux/iopoll.h>
 #include <linux/mutex.h>
 #include <linux/mii.h>
 #include <linux/of.h>
@@ -839,6 +840,8 @@ static void lan9303_handle_reset(struct lan9303 *chip)
 	if (!chip->reset_gpio)
 		return;
 
+	gpiod_set_value_cansleep(chip->reset_gpio, 1);
+
 	if (chip->reset_duration != 0)
 		msleep(chip->reset_duration);
 
@@ -864,8 +867,34 @@ static int lan9303_disable_processing(struct lan9303 *chip)
 static int lan9303_check_device(struct lan9303 *chip)
 {
 	int ret;
+	int err;
 	u32 reg;
 
+	/* In I2C-managed configurations this polling loop will clash with
+	 * switch's reading of EEPROM right after reset and this behaviour is
+	 * not configurable. While lan9303_read() already has quite long retry
+	 * timeout, seems not all cases are being detected as arbitration error.
+	 *
+	 * According to datasheet, EEPROM loader has 30ms timeout (in case of
+	 * missing EEPROM).
+	 *
+	 * Loading of the largest supported EEPROM is expected to take at least
+	 * 5.9s.
+	 */
+	err = read_poll_timeout(lan9303_read, ret,
+				!ret && reg & LAN9303_HW_CFG_READY,
+				20000, 6000000, false,
+				chip->regmap, LAN9303_HW_CFG, &reg);
+	if (ret) {
+		dev_err(chip->dev, "failed to read HW_CFG reg: %pe\n",
+			ERR_PTR(ret));
+		return ret;
+	}
+	if (err) {
+		dev_err(chip->dev, "HW_CFG not ready: 0x%08x\n", reg);
+		return err;
+	}
+
 	ret = lan9303_read(chip->regmap, LAN9303_CHIP_REV, &reg);
 	if (ret) {
 		dev_err(chip->dev, "failed to read chip revision register: %d\n",
drivers/net/dsa/sja1105/sja1105_main.c +0 -1
index c7282ce3d11c..6eec3be85571 100644
@@ -3164,7 +3164,6 @@ static int sja1105_setup(struct dsa_switch *ds)
 	 * TPID is ETH_P_SJA1105, and the VLAN ID is the port pvid.
 	 */
 	ds->vlan_filtering_is_global = true;
-	ds->untag_bridge_pvid = true;
 	ds->fdb_isolation = true;
 	ds->max_num_bridges = DSA_TAG_8021Q_MAX_NUM_BRIDGES;
 
drivers/net/ethernet/adi/adin1110.c +2 -2
index 0713f1e2c7f3..bf2e513295bb 100644
@@ -318,11 +318,11 @@ static int adin1110_read_fifo(struct adin1110_port_priv *port_priv)
 	 * from the  ADIN1110 frame header.
 	 */
 	if (frame_size < ADIN1110_FRAME_HEADER_LEN + ADIN1110_FEC_LEN)
-		return ret;
+		return -EINVAL;
 
 	round_len = adin1110_round_len(frame_size);
 	if (round_len < 0)
-		return ret;
+		return -EINVAL;
 
 	frame_size_no_fcs = frame_size - ADIN1110_FRAME_HEADER_LEN - ADIN1110_FEC_LEN;
 	memset(priv->data, 0, ADIN1110_RD_HEADER_LEN);
drivers/net/ethernet/freescale/fec_main.c +4 -2
index 570f8a14d975..910089b57a99 100644
@@ -1077,7 +1077,8 @@ fec_restart(struct net_device *ndev)
 	u32 rcntl = OPT_FRAME_SIZE | 0x04;
 	u32 ecntl = FEC_ECR_ETHEREN;
 
-	fec_ptp_save_state(fep);
+	if (fep->bufdesc_ex)
+		fec_ptp_save_state(fep);
 
 	/* Whack a reset.  We should wait for this.
 	 * For i.MX6SX SOC, enet use AXI bus, we use disable MAC
@@ -1340,7 +1341,8 @@ fec_stop(struct net_device *ndev)
 			netdev_err(ndev, "Graceful transmit stop did not complete!\n");
 	}
 
-	fec_ptp_save_state(fep);
+	if (fep->bufdesc_ex)
+		fec_ptp_save_state(fep);
 
 	/* Whack a reset.  We should wait for this.
 	 * For i.MX6SX SOC, enet use AXI bus, we use disable MAC
drivers/net/ethernet/ibm/emac/mal.c +3 -1
index d92dd9c83031..99d5f83f7c60 100644
@@ -578,7 +578,7 @@ static int mal_probe(struct platform_device *ofdev)
 		printk(KERN_ERR "%pOF: Support for 405EZ not enabled!\n",
 				ofdev->dev.of_node);
 		err = -ENODEV;
-		goto fail;
+		goto fail_unmap;
 #endif
 	}
 
@@ -742,6 +742,8 @@ static void mal_remove(struct platform_device *ofdev)
 
 	free_netdev(mal->dummy_dev);
 
+	dcr_unmap(mal->dcr_host, 0x100);
+
 	dma_free_coherent(&ofdev->dev,
 			  sizeof(struct mal_descriptor) *
 			  (NUM_TX_BUFF * mal->num_tx_chans +
drivers/net/ethernet/intel/e1000e/hw.h +2 -2
index 4b6e7536170a..fc8ed38aa095 100644
@@ -108,8 +108,8 @@ struct e1000_hw;
 #define E1000_DEV_ID_PCH_RPL_I219_V22		0x0DC8
 #define E1000_DEV_ID_PCH_MTP_I219_LM18		0x550A
 #define E1000_DEV_ID_PCH_MTP_I219_V18		0x550B
-#define E1000_DEV_ID_PCH_MTP_I219_LM19		0x550C
-#define E1000_DEV_ID_PCH_MTP_I219_V19		0x550D
+#define E1000_DEV_ID_PCH_ADP_I219_LM19		0x550C
+#define E1000_DEV_ID_PCH_ADP_I219_V19		0x550D
 #define E1000_DEV_ID_PCH_LNP_I219_LM20		0x550E
 #define E1000_DEV_ID_PCH_LNP_I219_V20		0x550F
 #define E1000_DEV_ID_PCH_LNP_I219_LM21		0x5510
drivers/net/ethernet/intel/e1000e/netdev.c +2 -2
index f103249b12fa..07e903346358 100644
@@ -7899,10 +7899,10 @@ static const struct pci_device_id e1000_pci_tbl[] = {
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V17), board_pch_adp },
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_RPL_I219_LM22), board_pch_adp },
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_RPL_I219_V22), board_pch_adp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM19), board_pch_adp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V19), board_pch_adp },
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM18), board_pch_mtp },
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V18), board_pch_mtp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM19), board_pch_mtp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V19), board_pch_mtp },
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LNP_I219_LM20), board_pch_mtp },
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LNP_I219_V20), board_pch_mtp },
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LNP_I219_LM21), board_pch_mtp },
drivers/net/ethernet/intel/i40e/i40e_main.c +1 -0
index cbcfada7b357..f7d4b5f79422 100644
@@ -1734,6 +1734,7 @@ struct i40e_mac_filter *i40e_add_mac_filter(struct i40e_vsi *vsi,
 	struct hlist_node *h;
 	int bkt;
 
+	lockdep_assert_held(&vsi->mac_filter_hash_lock);
 	if (vsi->info.pvid)
 		return i40e_add_filter(vsi, macaddr,
 				       le16_to_cpu(vsi->info.pvid));
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +2 -0
index 662622f01e31..dfa785e39458 100644
@@ -2213,8 +2213,10 @@ static int i40e_vc_get_vf_resources_msg(struct i40e_vf *vf, u8 *msg)
 		vfres->vsi_res[0].qset_handle
 					  = le16_to_cpu(vsi->info.qs_handle[0]);
 		if (!(vf->driver_caps & VIRTCHNL_VF_OFFLOAD_USO) && !vf->pf_set_mac) {
+			spin_lock_bh(&vsi->mac_filter_hash_lock);
 			i40e_del_mac_filter(vsi, vf->default_lan_addr.addr);
 			eth_zero_addr(vf->default_lan_addr.addr);
+			spin_unlock_bh(&vsi->mac_filter_hash_lock);
 		}
 		ether_addr_copy(vfres->vsi_res[0].default_mac_addr,
 				vf->default_lan_addr.addr);
drivers/net/ethernet/intel/ice/ice_ddp.c +28 -30

138 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_ddp.h +2 -2
index 622543f08b43..00840e5a1077 100644
@@ -430,7 +430,7 @@ struct ice_pkg_enum {
 	u32 buf_idx;
 
 	u32 type;
-	struct ice_buf_hdr *buf;
+	const struct ice_buf_hdr *buf;
 	u32 sect_idx;
 	void *sect;
 	u32 sect_type;
@@ -454,6 +454,6 @@ u16 ice_pkg_buf_get_active_sections(struct ice_buf_build *bld);
 void *ice_pkg_enum_section(struct ice_seg *ice_seg, struct ice_pkg_enum *state,
 			   u32 sect_type);
 
-int ice_cfg_tx_topo(struct ice_hw *hw, u8 *buf, u32 len);
+int ice_cfg_tx_topo(struct ice_hw *hw, const void *buf, u32 len);
 
 #endif
drivers/net/ethernet/intel/ice/ice_dpll.c +4 -2
index e92be6f130a3..cc35d29ac9e6 100644
@@ -651,6 +651,8 @@ ice_dpll_output_state_set(const struct dpll_pin *pin, void *pin_priv,
 	struct ice_dpll_pin *p = pin_priv;
 	struct ice_dpll *d = dpll_priv;
 
+	if (state == DPLL_PIN_STATE_SELECTABLE)
+		return -EINVAL;
 	if (!enable && p->state[d->dpll_idx] == DPLL_PIN_STATE_DISCONNECTED)
 		return 0;
 
@@ -1626,6 +1628,8 @@ ice_dpll_init_rclk_pins(struct ice_pf *pf, struct ice_dpll_pin *pin,
 	struct dpll_pin *parent;
 	int ret, i;
 
+	if (WARN_ON((!vsi || !vsi->netdev)))
+		return -EINVAL;
 	ret = ice_dpll_get_pins(pf, pin, start_idx, ICE_DPLL_RCLK_NUM_PER_PF,
 				pf->dplls.clock_id);
 	if (ret)
@@ -1641,8 +1645,6 @@ ice_dpll_init_rclk_pins(struct ice_pf *pf, struct ice_dpll_pin *pin,
 		if (ret)
 			goto unregister_pins;
 	}
-	if (WARN_ON((!vsi || !vsi->netdev)))
-		return -EINVAL;
 	dpll_netdev_pin_set(vsi->netdev, pf->dplls.rclk.pin);
 
 	return 0;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c +4 -1
index f5aceb32bf4d..cccb7ddf61c9 100644
@@ -582,10 +582,13 @@ ice_eswitch_br_switchdev_event(struct notifier_block *nb,
 	return NOTIFY_DONE;
 }
 
-static void ice_eswitch_br_fdb_flush(struct ice_esw_br *bridge)
+void ice_eswitch_br_fdb_flush(struct ice_esw_br *bridge)
 {
 	struct ice_esw_br_fdb_entry *entry, *tmp;
 
+	if (!bridge)
+		return;
+
 	list_for_each_entry_safe(entry, tmp, &bridge->fdb_list, list)
 		ice_eswitch_br_fdb_entry_notify_and_cleanup(bridge, entry);
 }
drivers/net/ethernet/intel/ice/ice_eswitch_br.h +1 -0
index c15c7344d7f8..66a2c804338f 100644
@@ -117,5 +117,6 @@ void
 ice_eswitch_br_offloads_deinit(struct ice_pf *pf);
 int
 ice_eswitch_br_offloads_init(struct ice_pf *pf);
+void ice_eswitch_br_fdb_flush(struct ice_esw_br *bridge);
 
 #endif /* _ICE_ESWITCH_BR_H_ */
drivers/net/ethernet/intel/ice/ice_main.c +7 -32
index ea780d468579..03b72c0e043a 100644
@@ -86,7 +86,8 @@ ice_indr_setup_tc_cb(struct net_device *netdev, struct Qdisc *sch,
 
 bool netif_is_ice(const struct net_device *dev)
 {
-	return dev && (dev->netdev_ops == &ice_netdev_ops);
+	return dev && (dev->netdev_ops == &ice_netdev_ops ||
+		       dev->netdev_ops == &ice_netdev_safe_mode_ops);
 }
 
 /**
@@ -519,25 +520,6 @@ static void ice_pf_dis_all_vsi(struct ice_pf *pf, bool locked)
 		pf->vf_agg_node[node].num_vsis = 0;
 }
 
-/**
- * ice_clear_sw_switch_recipes - clear switch recipes
- * @pf: board private structure
- *
- * Mark switch recipes as not created in sw structures. There are cases where
- * rules (especially advanced rules) need to be restored, either re-read from
- * hardware or added again. For example after the reset. 'recp_created' flag
- * prevents from doing that and need to be cleared upfront.
- */
-static void ice_clear_sw_switch_recipes(struct ice_pf *pf)
-{
-	struct ice_sw_recipe *recp;
-	u8 i;
-
-	recp = pf->hw.switch_info->recp_list;
-	for (i = 0; i < ICE_MAX_NUM_RECIPES; i++)
-		recp[i].recp_created = false;
-}
-
 /**
  * ice_prepare_for_reset - prep for reset
  * @pf: board private structure
@@ -574,8 +556,9 @@ ice_prepare_for_reset(struct ice_pf *pf, enum ice_reset_req reset_type)
 	mutex_unlock(&pf->vfs.table_lock);
 
 	if (ice_is_eswitch_mode_switchdev(pf)) {
-		if (reset_type != ICE_RESET_PFR)
-			ice_clear_sw_switch_recipes(pf);
+		rtnl_lock();
+		ice_eswitch_br_fdb_flush(pf->eswitch.br_offloads->bridge);
+		rtnl_unlock();
 	}
 
 	/* release ADQ specific HW and SW resources */
@@ -4548,16 +4531,10 @@ ice_init_tx_topology(struct ice_hw *hw, const struct firmware *firmware)
 	u8 num_tx_sched_layers = hw->num_tx_sched_layers;
 	struct ice_pf *pf = hw->back;
 	struct device *dev;
-	u8 *buf_copy;
 	int err;
 
 	dev = ice_pf_to_dev(pf);
-	/* ice_cfg_tx_topo buf argument is not a constant,
-	 * so we have to make a copy
-	 */
-	buf_copy = kmemdup(firmware->data, firmware->size, GFP_KERNEL);
-
-	err = ice_cfg_tx_topo(hw, buf_copy, firmware->size);
+	err = ice_cfg_tx_topo(hw, firmware->data, firmware->size);
 	if (!err) {
 		if (hw->num_tx_sched_layers > num_tx_sched_layers)
 			dev_info(dev, "Tx scheduling layers switching feature disabled\n");
@@ -4785,14 +4762,12 @@ int ice_init_dev(struct ice_pf *pf)
 	ice_init_feature_support(pf);
 
 	err = ice_init_ddp_config(hw, pf);
-	if (err)
-		return err;
 
 	/* if ice_init_ddp_config fails, ICE_FLAG_ADV_FEATURES bit won't be
 	 * set in pf->state, which will cause ice_is_safe_mode to return
 	 * true
 	 */
-	if (ice_is_safe_mode(pf)) {
+	if (err || ice_is_safe_mode(pf)) {
 		/* we already got function/device capabilities but these don't
 		 * reflect what the driver needs to do in safe mode. Instead of
 		 * adding conditional logic everywhere to ignore these
drivers/net/ethernet/intel/ice/ice_sriov.c +14 -5
index 55ef33208456..7a7cad20541b 100644
@@ -1096,8 +1096,10 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count)
 		return -ENOENT;
 
 	vsi = ice_get_vf_vsi(vf);
-	if (!vsi)
+	if (!vsi) {
+		ice_put_vf(vf);
 		return -ENOENT;
+	}
 
 	prev_msix = vf->num_msix;
 	prev_queues = vf->num_vf_qs;
@@ -1119,7 +1121,10 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count)
 	if (vf->first_vector_idx < 0)
 		goto unroll;
 
-	if (ice_vf_reconfig_vsi(vf) || ice_vf_init_host_cfg(vf, vsi)) {
+	vsi->req_txq = queues;
+	vsi->req_rxq = queues;
+
+	if (ice_vsi_rebuild(vsi, ICE_VSI_FLAG_NO_INIT)) {
 		/* Try to rebuild with previous values */
 		needs_rebuild = true;
 		goto unroll;
@@ -1142,12 +1147,16 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count)
 	vf->num_msix = prev_msix;
 	vf->num_vf_qs = prev_queues;
 	vf->first_vector_idx = ice_sriov_get_irqs(pf, vf->num_msix);
-	if (vf->first_vector_idx < 0)
+	if (vf->first_vector_idx < 0) {
+		ice_put_vf(vf);
 		return -EINVAL;
+	}
 
 	if (needs_rebuild) {
-		ice_vf_reconfig_vsi(vf);
-		ice_vf_init_host_cfg(vf, vsi);
+		vsi->req_txq = prev_queues;
+		vsi->req_rxq = prev_queues;
+
+		ice_vsi_rebuild(vsi, ICE_VSI_FLAG_NO_INIT);
 	}
 
 	ice_ena_vf_mappings(vf);
drivers/net/ethernet/intel/ice/ice_switch.c +0 -2
index 79d91e95358c..0e740342e294 100644
@@ -6322,8 +6322,6 @@ ice_replay_vsi_fltr(struct ice_hw *hw, u16 vsi_handle, u8 recp_id,
 		if (!itr->vsi_list_info ||
 		    !test_bit(vsi_handle, itr->vsi_list_info->vsi_map))
 			continue;
-		/* Clearing it so that the logic can add it back */
-		clear_bit(vsi_handle, itr->vsi_list_info->vsi_map);
 		f_entry.fltr_info.vsi_handle = vsi_handle;
 		f_entry.fltr_info.fltr_act = ICE_FWD_TO_VSI;
 		/* update the src in case it is VSI num */
drivers/net/ethernet/intel/ice/ice_tc_lib.c +11 -0
index e6923f8121a9..ea39b999a0d0 100644
@@ -819,6 +819,17 @@ ice_eswitch_add_tc_fltr(struct ice_vsi *vsi, struct ice_tc_flower_fltr *fltr)
 		rule_info.sw_act.flag |= ICE_FLTR_TX;
 		rule_info.sw_act.src = vsi->idx;
 		rule_info.flags_info.act = ICE_SINGLE_ACT_LAN_ENABLE;
+		/* This is a specific case. The destination VSI index is
+		 * overwritten by the source VSI index. This type of filter
+		 * should allow the packet to go to the LAN, not to the
+		 * VSI passed here. It should set LAN_EN bit only. However,
+		 * the VSI must be a valid one. Setting source VSI index
+		 * here is safe. Even if the result from switch is set LAN_EN
+		 * and LB_EN (which normally will pass the packet to this VSI)
+		 * packet won't be seen on the VSI, because local loopback is
+		 * turned off.
+		 */
+		rule_info.sw_act.vsi_handle = vsi->idx;
 	} else {
 		/* VF to VF */
 		rule_info.sw_act.flag |= ICE_FLTR_TX;
drivers/net/ethernet/intel/ice/ice_vf_lib.c +8 -1
index 5635e9da2212..f8fbd49e2310 100644
@@ -256,7 +256,7 @@ static void ice_vf_pre_vsi_rebuild(struct ice_vf *vf)
  *
  * It brings the VSI down and then reconfigures it with the hardware.
  */
-int ice_vf_reconfig_vsi(struct ice_vf *vf)
+static int ice_vf_reconfig_vsi(struct ice_vf *vf)
 {
 	struct ice_vsi *vsi = ice_get_vf_vsi(vf);
 	struct ice_pf *pf = vf->pf;
@@ -335,6 +335,13 @@ static int ice_vf_rebuild_host_vlan_cfg(struct ice_vf *vf, struct ice_vsi *vsi)
 
 		err = vlan_ops->add_vlan(vsi, &vf->port_vlan_info);
 	} else {
+		/* clear possible previous port vlan config */
+		err = ice_vsi_clear_port_vlan(vsi);
+		if (err) {
+			dev_err(dev, "failed to clear port VLAN via VSI parameters for VF %u, error %d\n",
+				vf->vf_id, err);
+			return err;
+		}
 		err = ice_vsi_add_vlan_zero(vsi);
 	}
 
drivers/net/ethernet/intel/ice/ice_vf_lib_private.h +0 -1
index 91ba7fe0eaee..0c7e77c0a09f 100644
@@ -23,7 +23,6 @@
 #warning "Only include ice_vf_lib_private.h in CONFIG_PCI_IOV virtualization files"
 #endif
 
-int ice_vf_reconfig_vsi(struct ice_vf *vf);
 void ice_initialize_vf_entry(struct ice_vf *vf);
 void ice_dis_vf_qs(struct ice_vf *vf);
 int ice_check_vf_init(struct ice_vf *vf);
drivers/net/ethernet/intel/ice/ice_vsi_vlan_lib.c +57 -0

60 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_vsi_vlan_lib.h +1 -0
index f0d84d11bd5b..12b227621a7d 100644
@@ -36,5 +36,6 @@ int ice_vsi_ena_outer_insertion(struct ice_vsi *vsi, u16 tpid);
 int ice_vsi_dis_outer_insertion(struct ice_vsi *vsi);
 int ice_vsi_set_outer_port_vlan(struct ice_vsi *vsi, struct ice_vlan *vlan);
 int ice_vsi_clear_outer_port_vlan(struct ice_vsi *vsi);
+int ice_vsi_clear_port_vlan(struct ice_vsi *vsi);
 
 #endif /* _ICE_VSI_VLAN_LIB_H_ */
drivers/net/ethernet/intel/idpf/idpf_virtchnl.c +1 -8
index 70986e12da28..3c0f97650d72 100644
@@ -666,7 +666,7 @@ idpf_vc_xn_forward_reply(struct idpf_adapter *adapter,
 
 	if (ctlq_msg->data_len) {
 		payload = ctlq_msg->ctx.indirect.payload->va;
-		payload_size = ctlq_msg->ctx.indirect.payload->size;
+		payload_size = ctlq_msg->data_len;
 	}
 
 	xn->reply_sz = payload_size;
@@ -1295,10 +1295,6 @@ int idpf_send_create_vport_msg(struct idpf_adapter *adapter,
 		err = reply_sz;
 		goto free_vport_params;
 	}
-	if (reply_sz < IDPF_CTLQ_MAX_BUF_LEN) {
-		err = -EIO;
-		goto free_vport_params;
-	}
 
 	return 0;
 
@@ -2602,9 +2598,6 @@ int idpf_send_get_rx_ptype_msg(struct idpf_vport *vport)
 		if (reply_sz < 0)
 			return reply_sz;
 
-		if (reply_sz < IDPF_CTLQ_MAX_BUF_LEN)
-			return -EIO;
-
 		ptypes_recvd += le16_to_cpu(ptype_info->num_ptypes);
 		if (ptypes_recvd > max_ptype)
 			return -EINVAL;
drivers/net/ethernet/intel/igb/igb_main.c +4 -0
index 1ef4cb871452..f1d088168723 100644
@@ -9651,6 +9651,10 @@ static void igb_io_resume(struct pci_dev *pdev)
 	struct igb_adapter *adapter = netdev_priv(netdev);
 
 	if (netif_running(netdev)) {
+		if (!test_bit(__IGB_DOWN, &adapter->state)) {
+			dev_dbg(&pdev->dev, "Resuming from non-fatal error, do nothing.\n");
+			return;
+		}
 		if (igb_up(adapter)) {
 			dev_err(&pdev->dev, "igb_up failed after reset\n");
 			return;
drivers/net/ethernet/sfc/efx_channels.c +2 -1
index c9e17a8208a9..f1723a6fb082 100644
@@ -1260,7 +1260,8 @@ static int efx_poll(struct napi_struct *napi, int budget)
 
 	spent = efx_process_channel(channel, budget);
 
-	xdp_do_flush();
+	if (budget)
+		xdp_do_flush();
 
 	if (spent < budget) {
 		if (efx_channel_has_rx_queue(channel) &&
drivers/net/ethernet/sfc/siena/efx_channels.c +2 -1
index a7346e965bfe..d120b3c83ac0 100644
@@ -1285,7 +1285,8 @@ static int efx_poll(struct napi_struct *napi, int budget)
 
 	spent = efx_process_channel(channel, budget);
 
-	xdp_do_flush();
+	if (budget)
+		xdp_do_flush();
 
 	if (spent < budget) {
 		if (efx_channel_has_rx_queue(channel) &&
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -1
index 95d3d1081727..f3a1b179aaea 100644
@@ -2022,7 +2022,7 @@ static int __alloc_dma_rx_desc_resources(struct stmmac_priv *priv,
 	rx_q->queue_index = queue;
 	rx_q->priv_data = priv;
 
-	pp_params.flags = PP_FLAG_DMA_MAP | (xdp_prog ? PP_FLAG_DMA_SYNC_DEV : 0);
+	pp_params.flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV;
 	pp_params.pool_size = dma_conf->dma_rx_size;
 	num_pages = DIV_ROUND_UP(dma_conf->dma_buf_sz, PAGE_SIZE);
 	pp_params.order = ilog2(num_pages);
drivers/net/ethernet/ti/icssg/icssg_config.c +2 -0
index dae52a83a378..5be020d0887a 100644
@@ -733,6 +733,7 @@ void icssg_vtbl_modify(struct prueth_emac *emac, u8 vid, u8 port_mask,
 	u8 fid_c1;
 
 	tbl = prueth->vlan_tbl;
+	spin_lock(&prueth->vtbl_lock);
 	fid_c1 = tbl[vid].fid_c1;
 
 	/* FID_C1: bit0..2 port membership mask,
@@ -748,6 +749,7 @@ void icssg_vtbl_modify(struct prueth_emac *emac, u8 vid, u8 port_mask,
 	}
 
 	tbl[vid].fid_c1 = fid_c1;
+	spin_unlock(&prueth->vtbl_lock);
 }
 EXPORT_SYMBOL_GPL(icssg_vtbl_modify);
 
drivers/net/ethernet/ti/icssg/icssg_prueth.c +1 -0
index e3451beed323..33cb3590a5cd 100644
@@ -1262,6 +1262,7 @@ static int prueth_probe(struct platform_device *pdev)
 		icss_iep_init_fw(prueth->iep1);
 	}
 
+	spin_lock_init(&prueth->vtbl_lock);
 	/* setup netdev interfaces */
 	if (eth0_node) {
 		ret = prueth_netdev_init(prueth, eth0_node);
drivers/net/ethernet/ti/icssg/icssg_prueth.h +2 -0
index f678d656a3ed..4d1c895dacdb 100644
@@ -282,6 +282,8 @@ struct prueth {
 	bool is_switchmode_supported;
 	unsigned char switch_id[MAX_PHYS_ITEM_ID_LEN];
 	int default_vlan;
+	/** @vtbl_lock: Lock for vtbl in shared memory */
+	spinlock_t vtbl_lock;
 };
 
 struct emac_tx_ts_response {
drivers/net/netconsole.c +7 -1
index 9c09293b5258..3e68f7a6e0ab 100644
@@ -1118,8 +1118,14 @@ static void send_ext_msg_udp(struct netconsole_target *nt, const char *msg,
 
 			this_chunk = min(userdata_len - sent_userdata,
 					 MAX_PRINT_CHUNK - preceding_bytes);
-			if (WARN_ON_ONCE(this_chunk <= 0))
+			if (WARN_ON_ONCE(this_chunk < 0))
+				/* this_chunk could be zero if all the previous
+				 * message used all the buffer. This is not a
+				 * problem, userdata will be sent in the next
+				 * iteration
+				 */
 				return;
+
 			memcpy(buf + this_header + this_offset,
 			       userdata + sent_userdata,
 			       this_chunk);
drivers/net/phy/aquantia/aquantia_main.c +33 -18

117 lines not on this page · raw message

drivers/net/phy/bcm84881.c +2 -2
index f1d47c264058..97da3aee4942 100644
@@ -132,7 +132,7 @@ static int bcm84881_aneg_done(struct phy_device *phydev)
 
 	bmsr = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_C22 + MII_BMSR);
 	if (bmsr < 0)
-		return val;
+		return bmsr;
 
 	return !!(val & MDIO_AN_STAT1_COMPLETE) &&
 	       !!(bmsr & BMSR_ANEGCOMPLETE);
@@ -158,7 +158,7 @@ static int bcm84881_read_status(struct phy_device *phydev)
 
 	bmsr = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_C22 + MII_BMSR);
 	if (bmsr < 0)
-		return val;
+		return bmsr;
 
 	phydev->autoneg_complete = !!(val & MDIO_AN_STAT1_COMPLETE) &&
 				   !!(bmsr & BMSR_ANEGCOMPLETE);
drivers/net/phy/dp83869.c +0 -1
index d7aaefb5226b..5f056d7db83e 100644
@@ -645,7 +645,6 @@ static int dp83869_configure_fiber(struct phy_device *phydev,
 		     phydev->supported);
 
 	linkmode_set_bit(ETHTOOL_LINK_MODE_FIBRE_BIT, phydev->supported);
-	linkmode_set_bit(ADVERTISED_FIBRE, phydev->advertising);
 
 	if (dp83869->mode == DP83869_RGMII_1000_BASE) {
 		linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseX_Full_BIT,
drivers/net/phy/phy_device.c +3 -2
index 6bb2793de0a9..366cf3b2cbb0 100644
@@ -3249,10 +3249,11 @@ static __maybe_unused int phy_led_hw_is_supported(struct led_classdev *led_cdev,
 
 static void phy_leds_unregister(struct phy_device *phydev)
 {
-	struct phy_led *phyled;
+	struct phy_led *phyled, *tmp;
 
-	list_for_each_entry(phyled, &phydev->leds, list) {
+	list_for_each_entry_safe(phyled, tmp, &phydev->leds, list) {
 		led_classdev_unregister(&phyled->led_cdev);
+		list_del(&phyled->list);
 	}
 }
 
drivers/net/phy/realtek.c +23 -1
index c15d2f66ef0d..166f6a728373 100644
@@ -1081,6 +1081,16 @@ static int rtl8221b_vn_cg_c45_match_phy_device(struct phy_device *phydev)
 	return rtlgen_is_c45_match(phydev, RTL_8221B_VN_CG, true);
 }
 
+static int rtl8251b_c22_match_phy_device(struct phy_device *phydev)
+{
+	return rtlgen_is_c45_match(phydev, RTL_8251B, false);
+}
+
+static int rtl8251b_c45_match_phy_device(struct phy_device *phydev)
+{
+	return rtlgen_is_c45_match(phydev, RTL_8251B, true);
+}
+
 static int rtlgen_resume(struct phy_device *phydev)
 {
 	int ret = genphy_resume(phydev);
@@ -1418,7 +1428,7 @@ static struct phy_driver realtek_drvs[] = {
 		.suspend        = genphy_c45_pma_suspend,
 		.resume         = rtlgen_c45_resume,
 	}, {
-		PHY_ID_MATCH_EXACT(0x001cc862),
+		.match_phy_device = rtl8251b_c45_match_phy_device,
 		.name           = "RTL8251B 5Gbps PHY",
 		.get_features   = rtl822x_get_features,
 		.config_aneg    = rtl822x_config_aneg,
@@ -1427,6 +1437,18 @@ static struct phy_driver realtek_drvs[] = {
 		.resume         = rtlgen_resume,
 		.read_page      = rtl821x_read_page,
 		.write_page     = rtl821x_write_page,
+	}, {
+		.match_phy_device = rtl8251b_c22_match_phy_device,
+		.name           = "RTL8126A-internal 5Gbps PHY",
+		.get_features   = rtl822x_get_features,
+		.config_aneg    = rtl822x_config_aneg,
+		.read_status    = rtl822x_read_status,
+		.suspend        = genphy_suspend,
+		.resume         = rtlgen_resume,
+		.read_page      = rtl821x_read_page,
+		.write_page     = rtl821x_write_page,
+		.read_mmd	= rtl822x_read_mmd,
+		.write_mmd	= rtl822x_write_mmd,
 	}, {
 		PHY_ID_MATCH_EXACT(0x001ccad0),
 		.name		= "RTL8224 2.5Gbps PHY",
drivers/net/ppp/ppp_async.c +1 -1
index c33c3db3cc08..18115e255e52 100644
@@ -542,7 +542,7 @@ ppp_async_encode(struct asyncppp *ap)
 	 * and 7 (code-reject) must be sent as though no options
 	 * had been negotiated.
 	 */
-	islcp = proto == PPP_LCP && 1 <= data[2] && data[2] <= 7;
+	islcp = proto == PPP_LCP && count >= 3 && 1 <= data[2] && data[2] <= 7;
 
 	if (i == 0) {
 		if (islcp)
drivers/net/pse-pd/pse_core.c +11 -0
index 4f032b16a8a0..f8e6854781e6 100644
@@ -785,6 +785,17 @@ static int pse_ethtool_c33_set_config(struct pse_control *psec,
 	 */
 	switch (config->c33_admin_control) {
 	case ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED:
+		/* We could have mismatch between admin_state_enabled and
+		 * state reported by regulator_is_enabled. This can occur when
+		 * the PI is forcibly turn off by the controller. Call
+		 * regulator_disable on that case to fix the counters state.
+		 */
+		if (psec->pcdev->pi[psec->id].admin_state_enabled &&
+		    !regulator_is_enabled(psec->ps)) {
+			err = regulator_disable(psec->ps);
+			if (err)
+				break;
+		}
 		if (!psec->pcdev->pi[psec->id].admin_state_enabled)
 			err = regulator_enable(psec->ps);
 		break;
drivers/net/slip/slhc.c +34 -23

80 lines not on this page · raw message

drivers/net/vxlan/vxlan_core.c +5 -1
index ba59e92ab941..02919c529dc2 100644
@@ -4913,9 +4913,13 @@ static int __init vxlan_init_module(void)
 	if (rc)
 		goto out4;
 
-	vxlan_vnifilter_init();
+	rc = vxlan_vnifilter_init();
+	if (rc)
+		goto out5;
 
 	return 0;
+out5:
+	rtnl_link_unregister(&vxlan_link_ops);
 out4:
 	unregister_switchdev_notifier(&vxlan_switchdev_notifier_block);
 out3:
drivers/net/vxlan/vxlan_private.h +1 -1
index b35d96b78843..76a351a997d5 100644
@@ -202,7 +202,7 @@ int vxlan_vni_in_use(struct net *src_net, struct vxlan_dev *vxlan,
 int vxlan_vnigroup_init(struct vxlan_dev *vxlan);
 void vxlan_vnigroup_uninit(struct vxlan_dev *vxlan);
 
-void vxlan_vnifilter_init(void);
+int vxlan_vnifilter_init(void);
 void vxlan_vnifilter_uninit(void);
 void vxlan_vnifilter_count(struct vxlan_dev *vxlan, __be32 vni,
 			   struct vxlan_vni_node *vninode,
drivers/net/vxlan/vxlan_vnifilter.c +9 -10
index 9c59d0bf8c3d..d2023e7131bd 100644
@@ -992,19 +992,18 @@ static int vxlan_vnifilter_process(struct sk_buff *skb, struct nlmsghdr *nlh,
 	return err;
 }
 
-void vxlan_vnifilter_init(void)
+static const struct rtnl_msg_handler vxlan_vnifilter_rtnl_msg_handlers[] = {
+	{THIS_MODULE, PF_BRIDGE, RTM_GETTUNNEL, NULL, vxlan_vnifilter_dump, 0},
+	{THIS_MODULE, PF_BRIDGE, RTM_NEWTUNNEL, vxlan_vnifilter_process, NULL, 0},
+	{THIS_MODULE, PF_BRIDGE, RTM_DELTUNNEL, vxlan_vnifilter_process, NULL, 0},
+};
+
+int vxlan_vnifilter_init(void)
 {
-	rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_GETTUNNEL, NULL,
-			     vxlan_vnifilter_dump, 0);
-	rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_NEWTUNNEL,
-			     vxlan_vnifilter_process, NULL, 0);
-	rtnl_register_module(THIS_MODULE, PF_BRIDGE, RTM_DELTUNNEL,
-			     vxlan_vnifilter_process, NULL, 0);
+	return rtnl_register_many(vxlan_vnifilter_rtnl_msg_handlers);
 }
 
 void vxlan_vnifilter_uninit(void)
 {
-	rtnl_unregister(PF_BRIDGE, RTM_GETTUNNEL);
-	rtnl_unregister(PF_BRIDGE, RTM_NEWTUNNEL);
-	rtnl_unregister(PF_BRIDGE, RTM_DELTUNNEL);
+	rtnl_unregister_many(vxlan_vnifilter_rtnl_msg_handlers);
 }
drivers/ntb/hw/mscc/ntb_hw_switchtec.c +1 -0
index 31946387badf..ad1786be2554 100644
@@ -1554,6 +1554,7 @@ static void switchtec_ntb_remove(struct device *dev)
 	switchtec_ntb_deinit_db_msg_irq(sndev);
 	switchtec_ntb_deinit_shared_mw(sndev);
 	switchtec_ntb_deinit_crosslink(sndev);
+	cancel_work_sync(&sndev->check_link_status_work);
 	kfree(sndev);
 	dev_info(dev, "ntb device unregistered\n");
 }
drivers/nvdimm/nd_virtio.c +9 -0
index 35c8fbbba10e..f55d60922b87 100644
@@ -44,6 +44,15 @@ static int virtio_pmem_flush(struct nd_region *nd_region)
 	unsigned long flags;
 	int err, err1;
 
+	/*
+	 * Don't bother to submit the request to the device if the device is
+	 * not activated.
+	 */
+	if (vdev->config->get_status(vdev) & VIRTIO_CONFIG_S_NEEDS_RESET) {
+		dev_info(&vdev->dev, "virtio pmem device needs a reset\n");
+		return -EIO;
+	}
+
 	might_sleep();
 	req_data = kmalloc(sizeof(*req_data), GFP_KERNEL);
 	if (!req_data)
drivers/opp/core.c +3 -1
index 494f8860220d..3aa18737470f 100644
@@ -2630,8 +2630,10 @@ int dev_pm_opp_set_config(struct device *dev, struct dev_pm_opp_config *config)
 
 	/* Attach genpds */
 	if (config->genpd_names) {
-		if (config->required_devs)
+		if (config->required_devs) {
+			ret = -EINVAL;
 			goto err;
+		}
 
 		ret = _opp_attach_genpd(opp_table, dev, config->genpd_names,
 					config->virt_devs);
drivers/pci/controller/dwc/pcie-designware.c +2 -0
index 1b5aba1f0c92..bc3a5d6b0177 100644
@@ -112,6 +112,7 @@ int dw_pcie_get_resources(struct dw_pcie *pci)
 		pci->dbi_base = devm_pci_remap_cfg_resource(pci->dev, res);
 		if (IS_ERR(pci->dbi_base))
 			return PTR_ERR(pci->dbi_base);
+		pci->dbi_phys_addr = res->start;
 	}
 
 	/* DBI2 is mainly useful for the endpoint controller */
@@ -134,6 +135,7 @@ int dw_pcie_get_resources(struct dw_pcie *pci)
 			pci->atu_base = devm_ioremap_resource(pci->dev, res);
 			if (IS_ERR(pci->atu_base))
 				return PTR_ERR(pci->atu_base);
+			pci->atu_phys_addr = res->start;
 		} else {
 			pci->atu_base = pci->dbi_base + DEFAULT_DBI_ATU_OFFSET;
 		}
drivers/pci/controller/dwc/pcie-designware.h +2 -0
index 53c4c8f399c8..e518f81ea80c 100644
@@ -407,8 +407,10 @@ struct dw_pcie_ops {
 struct dw_pcie {
 	struct device		*dev;
 	void __iomem		*dbi_base;
+	resource_size_t		dbi_phys_addr;
 	void __iomem		*dbi_base2;
 	void __iomem		*atu_base;
+	resource_size_t		atu_phys_addr;
 	size_t			atu_size;
 	u32			num_ib_windows;
 	u32			num_ob_windows;
drivers/pci/controller/dwc/pcie-qcom.c +57 -15

78 lines not on this page · raw message

drivers/pci/endpoint/pci-epc-core.c +14 -0
index 84309dfe0c68..17f007109255 100644

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

drivers/pci/pci.c +7 -7
index ad2d571ccbc1..85ced6958d6d 100644

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

drivers/pci/probe.c +1 -1
index b14b9876c030..e9e56bbb3b59 100644

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

drivers/pci/quirks.c +8 -0
index 5d57ea27dbc4..dccb60c1d9cc 100644

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

drivers/pci/remove.c +1 -1
index 4770cb87e3f0..cc0c6f5bd2af 100644

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

drivers/powercap/intel_rapl_tpmi.c +15 -4
index 947544e4d229..645fd1dc51a9 100644

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

drivers/remoteproc/imx_rproc.c +12 -1
index 448b9a5438e0..9e99bb27c033 100644

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

drivers/scsi/fnic/fnic_main.c +1 -1
index 29eead383eb9..5d833577f23f 100644

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

drivers/scsi/lpfc/lpfc_ct.c +17 -5
index 2dedd1493e5b..134bc96dd134 100644

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

drivers/scsi/lpfc/lpfc_disc.h +7 -0
index f82615d87c4b..f5ae8cc15820 100644

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

drivers/scsi/lpfc/lpfc_els.c +63 -69

132 lines not on this page · raw message

drivers/scsi/lpfc/lpfc_vport.c +36 -7

43 lines not on this page · raw message

drivers/scsi/wd33c93.c +1 -1
index a44b60c9004a..dd1fef9226f2 100644

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

drivers/soundwire/cadence_master.c +37 -2
index e0683a5975d1..05652e983539 100644

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

drivers/soundwire/cadence_master.h +5 -0
index bc84435e420f..e1d7969ba48a 100644

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

drivers/soundwire/intel.h +2 -0
index 68838e843b54..f4235f5991c3 100644

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

drivers/soundwire/intel_auxdevice.c +1 -0
index 8807e01cbf7c..dff49c5ce5b3 100644

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

drivers/soundwire/intel_bus_common.c +19 -8
index df944e11b9ca..d3ff6c65b64c 100644

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

drivers/staging/vme_user/vme_fake.c +6 -0
index 7f84d1c86f29..c4fb2b65154c 100644

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

drivers/staging/vme_user/vme_tsi148.c +6 -0
index 2ec9c2904404..e40ca4870d70 100644

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

drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c +0 -2
index 006614921870..ba5d36d36fc4 100644

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

drivers/thermal/thermal_core.c +2 -3
index 93c16aff0df2..795be67ca878 100644

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

drivers/thermal/thermal_core.h +3 -0
index 3c8e2bca87f2..57fff8bd5761 100644

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

drivers/thermal/thermal_netlink.c +3 -6
index 97157c453630..f3c58c708969 100644

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

drivers/tty/serial/serial_core.c +9 -7
index 20e797c9e13a..4187ddeeac36 100644

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

drivers/ufs/core/ufshcd.c +2 -3
index a6f818cdef0e..ce0620e80448 100644

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

drivers/usb/chipidea/udc.c +7 -1
index 2d7f616270c1..69ef3cd8d4f8 100644

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

drivers/usb/dwc2/platform.c +14 -12
index 7b84416dfc2b..c1b7209b9483 100644

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

drivers/usb/dwc3/core.c +22 -8
index 9eb085f359ce..21740e2b8f07 100644

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

drivers/usb/dwc3/core.h +0 -4
index c71240e8f7c7..9c508e0c5cdf 100644

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

drivers/usb/dwc3/gadget.c +0 -11
index 291bc549935b..10178e5eda5a 100644

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

drivers/usb/gadget/function/uvc_v4l2.c +11 -1
index a024aecb76dc..de1736f834e6 100644

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

drivers/usb/gadget/udc/core.c +1 -0
index cf6478f97f4a..a6f46364be65 100644

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

drivers/usb/host/xhci-dbgcap.c +82 -51

133 lines not on this page · raw message

drivers/usb/host/xhci-dbgcap.h +1 -1
index 0118c6288a3c..97c5dc290138 100644

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

drivers/usb/host/xhci-pci.c +5 -0
index 994fd8b38bd0..df0c5c4f4508 100644

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

drivers/usb/host/xhci-plat.c +6 -0
index 31bdfa52eeb2..ecaa75718e59 100644

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

drivers/usb/misc/yurex.c +8 -11
index 4a9859e03f6b..7c12b937d075 100644

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

drivers/usb/storage/unusual_devs.h +11 -0
index fd68204374f2..e5ad23d86833 100644

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

drivers/usb/typec/tipd/core.c +2 -1
index dd51a25480bf..256b0c054e9a 100644

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

drivers/vdpa/octeon_ep/octep_vdpa_hw.c +6 -6
index 11bd76ae18cf..1d4767b33315 100644

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

drivers/video/fbdev/core/fbcon.c +2 -0
index 3f7333dca508..fedd796c9a5c 100644

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

drivers/video/fbdev/sis/sis_main.c +1 -1
index 009bf1d92644..75033e6be15a 100644

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

fs/btrfs/extent-tree.c +21 -5
index a5966324607d..d9f511babd89 100644

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

fs/btrfs/free-space-cache.c +2 -2
index eaa1dbd31352..f4bcb2530660 100644

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

fs/btrfs/free-space-cache.h +6 -0
index 83774bfd7b3b..9f1dbfdee8ca 100644

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

fs/btrfs/volumes.h +6 -0
index 37a09ebb34dd..3a9bbb259cda 100644

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

fs/btrfs/zoned.c +1 -1
index 047e3337852e..ff02fd44fb7c 100644

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

fs/ext4/super.c +5 -4
index 687d406f47a9..cd3328b03153 100644

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

fs/ext4/xattr.c +2 -2
index aea9e3c405f1..c6b3b79fdd0d 100644

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

fs/nfs/callback_xdr.c +2 -0
index 6df77f008d3f..fdeb0b34a3d3 100644

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

fs/nfs/client.c +1 -0
index 8286edd6062d..c49d5cce5ce6 100644

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

fs/nfs/nfs42proc.c +1 -1
index 28704f924612..531c9c20ef1d 100644

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

fs/nfs/nfs4state.c +1 -1
index 30aba1dedaba..9795b3591fda 100644

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

fs/nfsd/filecache.c +3 -1
index e2e248032bfd..5583db806b0b 100644

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

fs/nfsd/nfs4state.c +1 -0
index 3837f4e41724..64cf5d7b7a4e 100644

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

fs/nfsd/nfssvc.c +3 -3
index 8103c3c90cd1..58523b4c37de 100644

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

fs/ntfs3/file.c +39 -1
index ca1ddc46bd86..d31eae611fe0 100644

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

fs/ntfs3/frecord.c +8 -13
index a469c608a394..60c975ac38e6 100644

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

fs/ntfs3/fslog.c +17 -2
index c64dd114ac65..d0d530f4e2b9 100644

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

fs/ntfs3/namei.c +2 -2
index f16d318c4372..0a70c3658546 100644

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

fs/ntfs3/super.c +1 -2
index a8758b85803f..28fed4072f67 100644

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

fs/proc/kcore.c +34 -2
index 8e08a9a1b7ed..13a041ef0c4e 100644

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

fs/smb/client/smb2ops.c +28 -19

47 lines not on this page · raw message

fs/smb/client/smb2pdu.c +6 -0
index 88dc49d67037..3d9e6e15dd90 100644

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

fs/unicode/mkutf8data.c +0 -70

70 lines not on this page · raw message

fs/unicode/utf8data.c_shipped +3346 -3357

6,703 lines not on this page · raw message

include/linux/bpf.h +1 -0
index 70fa4ffc3879..f3e5ce397b8e 100644

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

include/linux/nfs_fs_sb.h +1 -0
index 1df86ab98c77..793a4a610db2 100644

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

include/linux/pci-epc.h +2 -0
index 85bdf2adb760..8e3dcac55dcd 100644

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

include/linux/pci.h +1 -1
index 4cf89a4b4cbc..37d97bef060f 100644

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

include/linux/pci_ids.h +3 -0
index e388c8b1cbc2..e4bddb927795 100644

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

include/net/mctp.h +1 -1
index 7b17c52e8ce2..28d59ae94ca3 100644

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

include/net/rtnetlink.h +17 -0
index b45d57b5968a..2d3eb7cb4dff 100644

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

include/net/sch_generic.h +0 -1
index 79edd5b5e3c9..5d74fa7e694c 100644

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

include/net/sock.h +2 -0
index cce23ac4d514..2d4149075091 100644

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

io_uring/io_uring.c +15 -0
index 7a166120a45c..7057d942fb2b 100644

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

io_uring/rw.c +12 -7
index d85e2d41a992..6b3bc0876f7f 100644

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

kernel/bpf/arraymap.c +3 -0
index feabc0193852..a5c6f8aa4901 100644

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

kernel/bpf/core.c +18 -3
index 7ee62e38faf0..4e07cc057d6f 100644

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

kernel/bpf/hashtab.c +3 -0
index 06115f8728e8..bcb74ac880cb 100644

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

kernel/bpf/syscall.c +12 -7
index d9cae8e25969..21fb9c4d498f 100644

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

kernel/kthread.c +2 -0
index db4ceb0f503c..9bb36897b6c6 100644

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

kernel/rcu/tree_nocb.h +7 -1
index 2686ba122fa0..3630f712358e 100644

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

mm/secretmem.c +2 -2
index 3afb5ad701e1..399552814fd0 100644

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

net/bluetooth/hci_conn.c +3 -0
index 58b528df1a86..a7ffce485123 100644

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

net/bluetooth/rfcomm/sock.c +0 -2
index 37d63d768afb..f48250e3f2e1 100644

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

net/bridge/br_netfilter_hooks.c +5 -0
index 8f9c19d992ac..d5aada7bad57 100644

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

net/bridge/br_netlink.c +5 -1
index f17dbac7d828..6b97ae47f855 100644

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

net/bridge/br_private.h +3 -2
index d4bedc87b1d8..041f6e571a20 100644

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

net/bridge/br_vlan.c +9 -10
index 9c2fffb827ab..89f51ea4cabe 100644

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

net/core/dst.c +12 -5
index 95f533844f17..9552a90d4772 100644

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

net/core/rtnetlink.c +29 -0
index 73fd7f543fd0..97a38a7e1b2c 100644

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

net/dsa/user.c +8 -3
index f5adfa1d978a..ac34d5d1deb0 100644

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

net/ipv4/netfilter/nf_reject_ipv4.c +4 -6
index 04504b2b51df..87fd945a0d27 100644

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

net/ipv4/netfilter/nft_fib_ipv4.c +1 -3
index 9eee535c64dd..ba233fdd8188 100644

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

net/ipv4/tcp_input.c +38 -4

42 lines not on this page · raw message

net/ipv6/netfilter/nf_reject_ipv6.c +2 -3
index b9457473c176..7db0437140bf 100644

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

net/ipv6/netfilter/nft_fib_ipv6.c +3 -2
index 36dc14b34388..c9f1634b3838 100644

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

net/mctp/af_mctp.c +5 -1
index de52a9191da0..75f4790d9962 100644

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

net/mctp/device.c +18 -12
index acb97b257428..85cc5f31f1e7 100644

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

net/mctp/neigh.c +19 -12
index ffa0f9e0983f..590f642413e4 100644

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

net/mctp/route.c +23 -10
index eefd7834d9a0..597e9cf5aa64 100644

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

net/mpls/af_mpls.c +21 -11
index 0e6c94a8c2bc..4f6836677e40 100644

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

net/mptcp/mib.c +2 -0
index 7884217f33eb..79f2278434b9 100644

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

net/mptcp/mib.h +2 -0
index 66aa67f49d03..3f4ca290be69 100644

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

net/mptcp/pm_netlink.c +2 -1
index ad935d34c973..6c586b2b377b 100644

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

net/mptcp/protocol.c +21 -3
index 37ebcb7640eb..d4b3bc46cdaa 100644

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

net/mptcp/subflow.c +4 -2
index 064ab3235893..7d14da95a283 100644

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

net/netfilter/nf_nat_core.c +118 -2

120 lines not on this page · raw message

net/netfilter/xt_CHECKSUM.c +23 -10
index c8a639f56168..9d99f5a3d176 100644

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

net/netfilter/xt_CLASSIFY.c +14 -2
index 0accac98dea7..0ae8d8a1216e 100644

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

net/netfilter/xt_CONNSECMARK.c +25 -11
index 76acecf3e757..1494b3ee30e1 100644

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

net/netfilter/xt_CT.c +69 -37

106 lines not on this page · raw message

net/netfilter/xt_IDLETIMER.c +40 -19

59 lines not on this page · raw message

net/netfilter/xt_LED.c +27 -12
index 36c9720ad8d6..f7b0286d106a 100644

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

net/netfilter/xt_NFLOG.c +25 -11
index e660c3710a10..d80abd6ccaf8 100644

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

net/netfilter/xt_RATEEST.c +27 -12
index 80f6624e2355..4f49cfc27831 100644

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

net/netfilter/xt_SECMARK.c +25 -2
index 498a0bf6f044..5bc5ea505eb9 100644

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

net/netfilter/xt_TRACE.c +24 -11
index 5582dce98cae..f3fa4f11348c 100644

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

net/netfilter/xt_addrtype.c +13 -2
index e9b2181e8c42..a77088943107 100644

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

net/netfilter/xt_cluster.c +23 -10
index a047a545371e..908fd5f2c3c8 100644

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

net/netfilter/xt_connbytes.c +3 -1
index 93cb018c3055..2aabdcea8707 100644

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

net/netfilter/xt_connlimit.c +27 -12
index 5d04ef80a61d..d1d0fa6c8061 100644

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

net/netfilter/xt_connmark.c +25 -3
index ad3c033db64e..4277084de2e7 100644

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

net/netfilter/xt_mark.c +32 -10

42 lines not on this page · raw message

net/netlink/af_netlink.c +2 -1
index 0b7a89db3ab7..0a9287fadb47 100644

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

net/phonet/pn_netlink.c +11 -17
index 7008d402499d..894e5c72d6bf 100644

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

net/rxrpc/sendmsg.c +5 -5
index 894b8fa68e5e..23d18fe5de9f 100644

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

net/sched/sch_api.c +6 -1
index 74afc210527d..2eefa4783879 100644

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

net/sctp/socket.c +13 -5
index 078bcb3858c7..36ee34f483d7 100644

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

net/smc/smc_inet.c +11 -0
index a5b2041600f9..a944e7dcb8b9 100644

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

net/socket.c +6 -1
index 0a2bd22ec105..87fc3c6047bc 100644

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

sound/pci/hda/hda_intel.c +1 -1
index b33602e64d17..e8958a464647 100644

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

tools/build/feature/Makefile +4 -1
index 12796808f07a..ead476b373f6 100644

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

tools/iio/iio_generic_buffer.c +4 -0
index 0d0a7a19d6f9..9ef5ee087eda 100644

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

tools/perf/Makefile.config +5 -2
index fa679db61f62..9fccdff682af 100644

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

tools/perf/util/vdso.c +3 -1
index 1b6f8f6db7aa..c12f5d8c4bf6 100644

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

tools/testing/ktest/ktest.pl +1 -1
index eb31cd9c977b..e24cd825e70a 100755

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

tools/testing/selftests/bpf/progs/verifier_int_ptr.c +1 -4
index 9fc3fae5cd83..87206803c025 100644

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

tools/testing/selftests/mm/hmm-tests.c +1 -1
index d2cfc9b494a0..141bf63cbe05 100644

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

tools/testing/selftests/net/forwarding/no_forwarding.sh +1 -1
index 9e677aa64a06..694ece9ba3a7 100755

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

tools/testing/selftests/rseq/rseq.c +75 -35

110 lines not on this page · raw message

tools/testing/selftests/rseq/rseq.h +2 -8
index d7364ea4d201..4e217b620e0c 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.