Skip to contentSkip to conversation

Linux 6.12.6

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

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.12.6 kernel.

All users of the 6.12 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/networking/ip-sysctl.rst                       |    6 
 Documentation/power/runtime_pm.rst                           |    4 
 Makefile                                                     |    2 
 arch/arm64/kvm/sys_regs.c                                    |   55 +
 arch/riscv/include/asm/kfence.h                              |    4 
 arch/riscv/kernel/setup.c                                    |    2 
 arch/riscv/mm/init.c                                         |    7 
 arch/x86/events/intel/ds.c                                   |    2 
 arch/x86/include/asm/processor.h                             |    2 
 arch/x86/include/asm/static_call.h                           |   15 
 arch/x86/include/asm/sync_core.h                             |    6 
 arch/x86/include/asm/xen/hypercall.h                         |   36 
 arch/x86/kernel/callthunks.c                                 |    5 
 arch/x86/kernel/cpu/common.c                                 |   38 
 arch/x86/kernel/static_call.c                                |    9 
 arch/x86/xen/enlighten.c                                     |   64 +
 arch/x86/xen/enlighten_hvm.c                                 |   13 
 arch/x86/xen/enlighten_pv.c                                  |    4 
 arch/x86/xen/enlighten_pvh.c                                 |    7 
 arch/x86/xen/xen-asm.S                                       |   50 -
 arch/x86/xen/xen-head.S                                      |  106 +-
 arch/x86/xen/xen-ops.h                                       |    9 
 block/blk-cgroup.c                                           |    6 
 block/blk-iocost.c                                           |    9 
 block/blk-mq-sysfs.c                                         |   16 
 block/blk-mq.c                                               |  127 ++
 block/blk-sysfs.c                                            |    4 
 block/blk-zoned.c                                            |  524 ++++-------
 drivers/acpi/acpica/evxfregn.c                               |    2 
 drivers/acpi/nfit/core.c                                     |    7 
 drivers/acpi/resource.c                                      |    6 
 drivers/ata/sata_highbank.c                                  |    1 
 drivers/bluetooth/btmtk.c                                    |   20 
 drivers/clk/clk-en7523.c                                     |    5 
 drivers/crypto/hisilicon/debugfs.c                           |    4 
 drivers/gpio/gpio-graniterapids.c                            |   52 -
 drivers/gpio/gpio-ljca.c                                     |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c                       |   17 
 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c                      |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c                       |   13 
 drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c                        |    2 
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c                        |   24 
 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c        |   15 
 drivers/gpu/drm/amd/amdkfd/kfd_process.c                     |   23 
 drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c       |   12 
 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c         |    1 
 drivers/gpu/drm/drm_panic_qr.rs                              |    1 
 drivers/gpu/drm/i915/display/intel_color.c                   |   30 
 drivers/gpu/drm/i915/i915_gpu_error.c                        |   18 
 drivers/gpu/drm/i915/i915_scheduler.c                        |    2 
 drivers/gpu/drm/xe/tests/xe_migrate.c                        |    4 
 drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c                  |    8 
 drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h                  |    1 
 drivers/gpu/drm/xe/xe_pt.c                                   |    3 
 drivers/gpu/drm/xe/xe_reg_sr.c                               |   31 
 drivers/gpu/drm/xe/xe_reg_sr_types.h                         |    6 
 drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c               |    2 
 drivers/iommu/intel/cache.c                                  |   34 
 drivers/iommu/intel/iommu.c                                  |    4 
 drivers/md/dm-zoned-reclaim.c                                |    6 
 drivers/net/bonding/bond_main.c                              |   10 
 drivers/net/dsa/microchip/ksz_common.c                       |   42 
 drivers/net/dsa/ocelot/felix_vsc9959.c                       |   17 
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                    |   14 
 drivers/net/ethernet/broadcom/bnxt/bnxt.h                    |    9 
 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h                   |    2 
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c              |    2 
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c                   |    5 
 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_domain.c |    4 
 drivers/net/ethernet/microchip/sparx5/sparx5_main.c          |   11 
 drivers/net/ethernet/microchip/sparx5/sparx5_port.c          |    2 
 drivers/net/ethernet/microsoft/mana/gdma_main.c              |    6 
 drivers/net/ethernet/mscc/ocelot_ptp.c                       |  209 ++--
 drivers/net/ethernet/qualcomm/qca_spi.c                      |   26 
 drivers/net/ethernet/qualcomm/qca_spi.h                      |    1 
 drivers/net/ethernet/renesas/rswitch.c                       |   85 +
 drivers/net/ethernet/renesas/rswitch.h                       |   14 
 drivers/net/team/team_core.c                                 |   11 
 drivers/net/virtio_net.c                                     |   24 
 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c            |    2 
 drivers/net/xen-netfront.c                                   |    5 
 drivers/ptp/ptp_kvm_x86.c                                    |    6 
 drivers/regulator/axp20x-regulator.c                         |   36 
 drivers/spi/spi-aspeed-smc.c                                 |   10 
 drivers/spi/spi-rockchip.c                                   |   14 
 drivers/tty/serial/sh-sci.c                                  |   29 
 drivers/ufs/core/ufshcd.c                                    |    1 
 drivers/usb/core/hcd.c                                       |    8 
 drivers/usb/dwc2/hcd.c                                       |   19 
 drivers/usb/dwc3/dwc3-imx8mp.c                               |   30 
 drivers/usb/dwc3/dwc3-xilinx.c                               |    5 
 drivers/usb/gadget/function/f_midi2.c                        |    6 
 drivers/usb/gadget/function/u_serial.c                       |    9 
 drivers/usb/host/ehci-sh.c                                   |    9 
 drivers/usb/host/max3421-hcd.c                               |   16 
 drivers/usb/misc/onboard_usb_dev.c                           |    4 
 drivers/usb/typec/anx7411.c                                  |   66 -
 drivers/usb/typec/ucsi/ucsi.c                                |    6 
 drivers/virtio/virtio_ring.c                                 |    6 
 fs/smb/client/inode.c                                        |    5 
 fs/smb/server/auth.c                                         |    2 
 fs/smb/server/mgmt/user_session.c                            |    6 
 fs/smb/server/server.c                                       |    4 
 fs/smb/server/smb2pdu.c                                      |   27 
 fs/xfs/libxfs/xfs_btree.c                                    |   33 
 fs/xfs/libxfs/xfs_btree.h                                    |    2 
 fs/xfs/libxfs/xfs_ialloc_btree.c                             |    4 
 fs/xfs/libxfs/xfs_symlink_remote.c                           |    4 
 fs/xfs/scrub/agheader.c                                      |    6 
 fs/xfs/scrub/agheader_repair.c                               |    6 
 fs/xfs/scrub/fscounters.c                                    |    2 
 fs/xfs/scrub/ialloc.c                                        |    4 
 fs/xfs/scrub/refcount.c                                      |    2 
 fs/xfs/scrub/symlink_repair.c                                |    3 
 fs/xfs/scrub/trace.h                                         |    2 
 fs/xfs/xfs_bmap_util.c                                       |    2 
 fs/xfs/xfs_file.c                                            |    8 
 fs/xfs/xfs_rtalloc.c                                         |    2 
 fs/xfs/xfs_trans.c                                           |   19 
 include/linux/blkdev.h                                       |    5 
 include/linux/bpf.h                                          |   19 
 include/linux/compiler.h                                     |   37 
 include/linux/dsa/ocelot.h                                   |    1 
 include/linux/netdev_features.h                              |    7 
 include/linux/static_call.h                                  |    6 
 include/linux/virtio.h                                       |    3 
 include/net/bluetooth/bluetooth.h                            |   10 
 include/net/lapb.h                                           |    2 
 include/net/mac80211.h                                       |    4 
 include/net/net_namespace.h                                  |    1 
 include/net/netfilter/nf_tables.h                            |    4 
 include/soc/mscc/ocelot.h                                    |    2 
 kernel/bpf/btf.c                                             |  149 +++
 kernel/bpf/verifier.c                                        |   79 -
 kernel/sched/deadline.c                                      |    2 
 kernel/static_call_inline.c                                  |    2 
 kernel/trace/bpf_trace.c                                     |   11 
 kernel/trace/trace_uprobe.c                                  |    6 
 mm/slub.c                                                    |   21 
 net/batman-adv/translation-table.c                           |   58 -
 net/bluetooth/hci_event.c                                    |   33 
 net/bluetooth/hci_sock.c                                     |   14 
 net/bluetooth/iso.c                                          |   69 +
 net/bluetooth/l2cap_sock.c                                   |   20 
 net/bluetooth/rfcomm/sock.c                                  |    9 
 net/bluetooth/sco.c                                          |   40 
 net/core/net_namespace.c                                     |   20 
 net/core/sock_map.c                                          |    6 
 net/dsa/tag_ocelot_8021q.c                                   |    2 
 net/ipv4/tcp_output.c                                        |    6 
 net/mac80211/cfg.c                                           |    9 
 net/mac80211/ieee80211_i.h                                   |   49 -
 net/mac80211/iface.c                                         |   12 
 net/mac80211/mlme.c                                          |    2 
 net/mac80211/util.c                                          |   23 
 net/netfilter/nf_tables_api.c                                |   32 
 net/netfilter/xt_IDLETIMER.c                                 |   52 -
 net/sched/sch_netem.c                                        |   22 
 net/tipc/udp_media.c                                         |    7 
 net/unix/af_unix.c                                           |    1 
 net/wireless/nl80211.c                                       |    2 
 net/wireless/sme.c                                           |    1 
 rust/Makefile                                                |   15 
 sound/core/control_led.c                                     |   14 
 sound/pci/hda/patch_realtek.c                                |    1 
 sound/soc/amd/yc/acp6x-mach.c                                |   13 
 sound/soc/codecs/tas2781-i2c.c                               |    2 
 sound/soc/fsl/fsl_spdif.c                                    |    2 
 sound/soc/fsl/fsl_xcvr.c                                     |    2 
 sound/soc/intel/boards/sof_sdw.c                             |    8 
 sound/usb/quirks.c                                           |    2 
 tools/lib/perf/evlist.c                                      |   18 
 tools/objtool/check.c                                        |    9 
 tools/perf/builtin-ftrace.c                                  |    3 
 tools/perf/util/build-id.c                                   |    4 
 tools/perf/util/machine.c                                    |    2 
 tools/testing/selftests/arm64/abi/syscall-abi-asm.S          |   32 
 tools/testing/selftests/bpf/progs/test_tp_btf_nullable.c     |    6 
 tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c  |    4 
 tools/testing/selftests/bpf/progs/verifier_d_path.c          |    4 
 tools/testing/selftests/drivers/net/mlxsw/sharedbuffer.sh    |   55 -
 tools/testing/selftests/net/netfilter/rpath.sh               |   18 
 182 files changed, 2197 insertions(+), 1291 deletions(-)

Alan Borzeszkowski (5):
gpio: graniterapids: Fix GPIO Ack functionality
gpio: graniterapids: Fix vGPIO driver crash
gpio: graniterapids: Fix incorrect BAR assignment
gpio: graniterapids: Determine if GPIO pad can be used by driver
gpio: graniterapids: Check if GPIO line can be used for IRQs

Alexandre Ghiti (2):
riscv: Fix wrong usage of __pa() on a fixmap address
riscv: Fix IPIs usage in kfence_protect_page()

Andrew Martin (1):
drm/amdkfd: Dereference null return value

Anumula Murali Mohan Reddy (1):
cxgb4: use port number to set mac addr

Arnaldo Carvalho de Melo (1):

      perf machine: Initialize machine->env to address a segfault

Benjamin Lin (1):
wifi: mac80211: fix station NSS capability initialization order

Björn Töpel (1):
riscv: mm: Do not call pmd dtor on vmemmap page table teardown

Charles Keepax (1):
ASoC: Intel: sof_sdw: Add space for a terminator into DAIs array

Chenghai Huang (1):
crypto: hisilicon/debugfs - fix the struct pointer incorrectly offset problem

Christian König (2):
drm/amdgpu: fix UVD contiguous CS mapping problem drm/amdgpu: fix when the cleaner shader is emitted

Christian Loehle (1):
spi: rockchip: Fix PM runtime count on no-op cs

Christian Marangi (1):
clk: en7523: Fix wrong BUS clock for EN7581

Christophe JAILLET (1):
spi: aspeed: Fix an error handling path in aspeed_spi_[read|write]_user()

Claudiu Beznea (1):
serial: sh-sci: Check if TX data was written to device in .tx_empty()

Damien Le Moal (5):
block: Switch to using refcount_t for zone write plugs
block: Use a zone write plug BIO work for REQ_NOWAIT BIOs
dm: Fix dm-zoned-reclaim zone write pointer alignment
block: Prevent potential deadlocks in zone write plug error recovery
block: Ignore REQ_NOWAIT for zone reset and zone finish operations

Dan Carpenter (1):
net/mlx5: DR, prevent potential error pointer dereference

Daniel Borkmann (5):
net, team, bonding: Add netdev_base_features helper
bonding: Fix initial {vlan,mpls}_feature set in bond_compute_features
bonding: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL
team: Fix initial vlan_feature set in __team_compute_features
team: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL

Daniel Machon (2):
net: sparx5: fix FDMA performance issue
net: sparx5: fix the maximum frame length register

Daniele Ceraolo Spurio (1):
drm/xe: Call invalidation_fence_fini for PT inval fences in error state

Danielle Ratson (3):
selftests: mlxsw: sharedbuffer: Remove h1 ingress test case
selftests: mlxsw: sharedbuffer: Remove duplicate test cases
selftests: mlxsw: sharedbuffer: Ensure no extra packets are counted

Daniil Tatianin (1):
ACPICA: events/evxfregn: don't release the ContextMutex that was never acquired

Darrick J. Wong (9):
xfs: set XFS_SICK_INO_SYMLINK_ZAPPED explicitly when zapping a symlink
xfs: update btree keys correctly when _insrec splits an inode root block
xfs: don't drop errno values when we fail to ficlone the entire range
xfs: return a 64-bit block count from xfs_btree_count_blocks
xfs: fix null bno_hint handling in xfs_rtallocate_rtg
xfs: return from xfs_symlink_verify early on V4 filesystems
xfs: fix scrub tracepoints when inode-rooted btrees are involved
xfs: only run precommits once per transaction object
xfs: unlock inodes when erroring out of xfs_trans_alloc_dir

David (Ming Qiang) Wu (1):
amdgpu/uvd: get ring reference from rq scheduler

David Howells (1):
cifs: Fix rmdir failure due to ongoing I/O on deleted file

Emmanuel Grumbach (1):
wifi: mac80211: fix a queue stall in certain cases of CSA

Eric Dumazet (3):
tipc: fix NULL deref in cleanup_bearer()
net: lapb: increase LAPB_HEADER_LEN
net: defer final 'struct net' free in netns dismantle

Eugene Kobyak (1):
drm/i915: Fix NULL pointer dereference in capture_engine

Florian Westphal (1):
netfilter: nf_tables: do not defer rule destruction via call_rcu

Frederik Deweerdt (1):
splice: do not checksum AF_UNIX sockets

Frédéric Danis (1):
Bluetooth: SCO: Add support for 16 bits transparent voice setting

Greg Kroah-Hartman (1):

      Linux 6.12.6

Haoyu Li (3):
gpio: ljca: Initialize num before accessing item in ljca_gpio_config
wifi: mac80211: init cnt before accessing elem in ieee80211_copy_mbssid_beacon
wifi: cfg80211: sme: init n_channels before channels[] access

Harish Kasiviswanathan (2):
drm/amdkfd: hard-code cacheline size for gfx11 drm/amdkfd: hard-code MALL cacheline size for gfx11, gfx12

Hridesh MG (1):
ALSA: hda/realtek: Fix headset mic on Acer Nitro 5

Ilpo Järvinen (1):
ACPI: resource: Fix memory resource type union access

Iulia Tanasescu (4):
Bluetooth: iso: Always release hdev at the end of iso_listen_bis
Bluetooth: iso: Fix recursive locking warning
Bluetooth: iso: Fix circular lock in iso_listen_bis
Bluetooth: iso: Fix circular lock in iso_conn_big_sync

Jaakko Salo (1):
ALSA: usb-audio: Add implicit feedback quirk for Yamaha THR5

James Clark (1):
libperf: evlist: Fix --cpu argument on hybrid platform

James Morse (1):
KVM: arm64: Disable MPAM visibility by default and ignore VMM writes

Jann Horn (2):
bpf: Fix UAF via mismatching bpf_prog/attachment RCU flavors
bpf: Fix theoretical prog_array UAF in __uprobe_perf_func()

Jesse Van Gavere (1):
net: dsa: microchip: KSZ9896 register regmap alignment to 32 bit boundaries

[email protected] (1):
drm/amdkfd: pause autosuspend when creating pdd

Jiasheng Jiang (1):
drm/i915: Fix memory leak by correcting cache object name in error handler

Jiri Olsa (1):
bpf,perf: Fix invalid prog_array access in perf_event_detach_bpf_prog

Joe Hattori (3):
ata: sata_highbank: fix OF node reference leak in highbank_initialize_phys()
usb: typec: anx7411: fix fwnode_handle reference leak
usb: typec: anx7411: fix OF node reference leaks in anx7411_typec_switch_probe()

Juergen Gross (9):
xen/netfront: fix crash when removing device
x86: make get_cpu_vendor() accessible from Xen code objtool/x86: allow syscall instruction
x86/static-call: provide a way to do very early static-call updates x86/xen: don't do PV iret hypercall through hypercall page x86/xen: add central hypercall functions
x86/xen: use new hypercall functions instead of hypercall page x86/xen: remove hypercall page
x86/static-call: fix 32-bit build

Juri Lelli (1):
sched/deadline: Fix replenish_dl_new_period dl_server condition

Kan Liang (1):
perf/x86/intel/ds: Unconditionally drain PEBS DS when changing PEBS_DATA_CFG

Kenneth Feng (1):
drm/amd/pm: Set SMU v13.0.7 default workload type

Koichiro Den (3):
virtio_net: correct netdev_tx_reset_queue() invocation point
virtio_ring: add a func argument 'recycle_done' to virtqueue_resize()
virtio_net: ensure netdev_tx_reset_queue is called on tx ring resize

Kuan-Wei Chiu (1):
perf ftrace: Fix undefined behavior in cmp_profile_data()

Kumar Kartikeya Dwivedi (3):
bpf: Revert "bpf: Mark raw_tp arguments with PTR_MAYBE_NULL"
bpf: Check size for BTF-based ctx access of pointer members
bpf: Augment raw_tp arguments with PTR_MAYBE_NULL

Lianqin Hu (1):
usb: gadget: u_serial: Fix the issue that gs_start_io crashed due to accessing null pointer

Lin Ma (1):

      wifi: nl80211: fix NL80211_ATTR_MLO_LINK_ID off-by-one

LongPing Wei (1):
block: get wp_offset by bdev_offset_from_zone_start

Lu Baolu (1):
iommu/vt-d: Remove cache tags before disabling ATS

Lucas De Marchi (1):
drm/xe/reg_sr: Remove register pool

Luis Claudio R. Goncalves (1):
iommu/tegra241-cmdqv: do not use smp_processor_id in preemptible context

Luiz Augusto von Dentz (1):
Bluetooth: hci_event: Fix using rcu_read_(un)lock while iterating

Mark Tomlinson (1):
usb: host: max3421-hcd: Correctly abort a USB request.

Martin Ottens (1):
net/sched: netem: account for backlog updates from child qdisc

Maxim Levitsky (2):
net: mana: Fix memory leak in mana_gd_setup_irqs
net: mana: Fix irq_contexts memory leak in mana_gd_setup_irqs

Michael Chan (2):
bnxt_en: Fix GSO type for HW GRO packets on 5750X chips
bnxt_en: Fix aggregation ID mask to prevent oops on 5760X chips

Michal Luczaj (3):
bpf, sockmap: Fix race between element replace and close() bpf, sockmap: Fix update element with same
Bluetooth: Improve setsockopt() handling of malformed user input

Miguel Ojeda (2):
drm/panic: remove spurious empty line to clean warning
rust: kbuild: set bindgen's Rust target version

Ming Lei (1):

      blk-mq: move cpuhp callback registering out of q->sysfs_lock

Mirsad Todorovac (1):
drm/xe: fix the ERR_PTR() returned on failure to allocate tiny pt

MoYuanhao (1):
tcp: check space before adding MPTCP SYN options

Namhyung Kim (1):
perf tools: Fix build-id event recording

Namjae Jeon (1):
ksmbd: fix racy issue from session lookup and expire

Nathan Chancellor (1):
blk-iocost: Avoid using clamp() on inuse in __propagate_weights()

Neal Frager (1):
usb: dwc3: xilinx: make sure pipe clock is deselected in usb2 only mode

Nikita Yushchenko (6):
net: renesas: rswitch: fix possible early skb release
net: renesas: rswitch: fix race window between tx start and complete
net: renesas: rswitch: fix leaked pointer on error path
net: renesas: rswitch: avoid use-after-put for a device tree node
net: renesas: rswitch: handle stop vs interrupt race
net: renesas: rswitch: fix initial MPIC register setting

Nilay Shroff (1):
block: Fix potential deadlock while freezing queue and acquiring sysfs_lock

Paul Barker (1):
Documentation: PM: Clarify pm_runtime_resume_and_get() return value

Petr Machata (1):
Documentation: networking: Add a caveat to nexthop_compat_mode sysctl

Phil Sutter (2):
selftests: netfilter: Stabilize rpath.sh
netfilter: IDLETIMER: Fix for possible ABBA deadlock

Philippe Simons (1):

      regulator: axp20x: AXP717: set ramp_delay

Radhey Shyam Pandey (1):
usb: misc: onboard_usb_dev: skip suspend/resume sequence for USB5744 SMBus support

Remi Pommarel (3):
batman-adv: Do not send uninitialized TT changes
batman-adv: Remove uninitialized data in full table TT response
batman-adv: Do not let TT changes list grows indefinitely

Robert Hodaszi (1):
net: dsa: tag_ocelot_8021q: fix broken reception

Shakeel Butt (1):
memcg: slub: fix SUnreclaim for post charged objects

Shankar Bandal (2):
gpio: graniterapids: Fix invalid GPI_IS register offset
gpio: graniterapids: Fix invalid RXEVCFG register bitmask

Shenghao Ding (1):
ASoC: tas2781: Fix calibration issue in stress test

Shengjiu Wang (2):
ASoC: fsl_xcvr: change IFACE_PCM to IFACE_MIXER
ASoC: fsl_spdif: change IFACE_PCM to IFACE_MIXER

Stefan Wahren (5):
usb: dwc2: Fix HCD resume
usb: dwc2: hcd: Fix GetPortStatus & SetPortFeature
usb: dwc2: Fix HCD port connection race
qca_spi: Fix clock speed for multiple QCA7000
qca_spi: Make driver probing reliable

Suraj Sonawane (1):
acpi: nfit: vmalloc-out-of-bounds Read in acpi_nfit_ctl

Takashi Iwai (2):
usb: gadget: midi2: Fix interpretation of is_midi1 bits
ALSA: control: Avoid WARN() for symlink errors

Tejun Heo (1):
blk-cgroup: Fix UAF in blkcg_unpin_online()

Thadeu Lima de Souza Cascardo (1):
Bluetooth: btmtk: avoid UAF in btmtk_process_coredump

Thomas Weißschuh (1):
ptp: kvm: x86: Return EOPNOTSUPP instead of ENODEV from kvm_arch_ptp_init()

Venkata Prasad Potturu (1):
ASoC: amd: yc: Fix the wrong return value

Ville Syrjälä (1):
drm/i915/color: Stop using non-posted DSB writes for legacy LUT

Vitalii Mordan (1):
usb: ehci-hcd: fix call balance of clocks handling routines

Vladimir Oltean (6):
net: mscc: ocelot: fix memory leak on ocelot_port_add_txtstamp_skb()
net: mscc: ocelot: improve handling of TX timestamp for unknown skb
net: mscc: ocelot: ocelot->ts_id_lock and ocelot_port->tx_skbs.lock are IRQ-safe
net: mscc: ocelot: be resilient to loss of PTP packets during transmission
net: mscc: ocelot: perform error cleanup in ocelot_hwstamp_set()
net: dsa: felix: fix stuck CPU-injected packets with short taprio windows

Weizhao Ouyang (1):
kselftest/arm64: abi: fix SVCR detection

Xu Yang (2):
usb: core: hcd: only check primary hcd skip_phy_initialization
usb: dwc3: imx8mp: fix software node kernel dump

Yi Liu (1):
iommu/vt-d: Fix qi_batch NULL pointer with nested parent domain

liuderong (1):
scsi: ufs: core: Update compl_time_stamp_local_clock after completing a cqe

Łukasz Bartosik (1):
usb: typec: ucsi: Fix completion notifications

author maintainer
#1 lore raw
Documentation/networking/ip-sysctl.rst +6 -0
index eacf8983e230..dcbb6f6caf6d 100644
@@ -2170,6 +2170,12 @@ nexthop_compat_mode - BOOLEAN
 	understands the new API, this sysctl can be disabled to achieve full
 	performance benefits of the new API by disabling the nexthop expansion
 	and extraneous notifications.
+
+	Note that as a backward-compatible mode, dumping of modern features
+	might be incomplete or wrong. For example, resilient groups will not be
+	shown as such, but rather as just a list of next hops. Also weights that
+	do not fit into 8 bits will show incorrectly.
+
 	Default: true (backward compat mode)
 
 fib_notify_on_flag_change - INTEGER
Documentation/power/runtime_pm.rst +3 -1
index 53d1996460ab..12f429359a82 100644
@@ -347,7 +347,9 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
 
   `int pm_runtime_resume_and_get(struct device *dev);`
     - run pm_runtime_resume(dev) and if successful, increment the device's
-      usage counter; return the result of pm_runtime_resume
+      usage counter; returns 0 on success (whether or not the device's
+      runtime PM status was already 'active') or the error code from
+      pm_runtime_resume() on failure.
 
   `int pm_request_idle(struct device *dev);`
     - submit a request to execute the subsystem-level idle callback for the
Makefile +1 -1
index f158bfe6407a..c10952585c14 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 12
-SUBLEVEL = 5
+SUBLEVEL = 6
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
arch/arm64/kvm/sys_regs.c +52 -3

91 lines not on this page · raw message

arch/riscv/include/asm/kfence.h +3 -1
index 7388edd88986..d08bf7fb3aee 100644
@@ -22,7 +22,9 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect)
 	else
 		set_pte(pte, __pte(pte_val(ptep_get(pte)) | _PAGE_PRESENT));
 
-	flush_tlb_kernel_range(addr, addr + PAGE_SIZE);
+	preempt_disable();
+	local_flush_tlb_kernel_range(addr, addr + PAGE_SIZE);
+	preempt_enable();
 
 	return true;
 }
arch/riscv/kernel/setup.c +1 -1
index 26c886db4fb3..2b3c152d3c91 100644
@@ -227,7 +227,7 @@ static void __init init_resources(void)
 static void __init parse_dtb(void)
 {
 	/* Early scan of device tree from init memory */
-	if (early_init_dt_scan(dtb_early_va, __pa(dtb_early_va))) {
+	if (early_init_dt_scan(dtb_early_va, dtb_early_pa)) {
 		const char *name = of_flat_dt_get_machine_name();
 
 		if (name) {
arch/riscv/mm/init.c +4 -3
index 0e8c20adcd98..fc53ce748c80 100644
@@ -1566,7 +1566,7 @@ static void __meminit free_pte_table(pte_t *pte_start, pmd_t *pmd)
 	pmd_clear(pmd);
 }
 
-static void __meminit free_pmd_table(pmd_t *pmd_start, pud_t *pud)
+static void __meminit free_pmd_table(pmd_t *pmd_start, pud_t *pud, bool is_vmemmap)
 {
 	struct page *page = pud_page(*pud);
 	struct ptdesc *ptdesc = page_ptdesc(page);
@@ -1579,7 +1579,8 @@ static void __meminit free_pmd_table(pmd_t *pmd_start, pud_t *pud)
 			return;
 	}
 
-	pagetable_pmd_dtor(ptdesc);
+	if (!is_vmemmap)
+		pagetable_pmd_dtor(ptdesc);
 	if (PageReserved(page))
 		free_reserved_page(page);
 	else
@@ -1703,7 +1704,7 @@ static void __meminit remove_pud_mapping(pud_t *pud_base, unsigned long addr, un
 		remove_pmd_mapping(pmd_base, addr, next, is_vmemmap, altmap);
 
 		if (pgtable_l4_enabled)
-			free_pmd_table(pmd_base, pudp);
+			free_pmd_table(pmd_base, pudp, is_vmemmap);
 	}
 }
 
arch/x86/events/intel/ds.c +1 -1
index fa5ea65de0d0..6188650707ab 100644
@@ -1468,7 +1468,7 @@ void intel_pmu_pebs_enable(struct perf_event *event)
 			 * hence we need to drain when changing said
 			 * size.
 			 */
-			intel_pmu_drain_large_pebs(cpuc);
+			intel_pmu_drain_pebs_buffer();
 			adaptive_pebs_record_size_update();
 			wrmsrl(MSR_PEBS_DATA_CFG, pebs_data_cfg);
 			cpuc->active_pebs_data_cfg = pebs_data_cfg;
arch/x86/include/asm/processor.h +2 -0
index 4a686f0e5dbf..2d776635aa53 100644
@@ -212,6 +212,8 @@ static inline unsigned long long l1tf_pfn_limit(void)
 	return BIT_ULL(boot_cpu_data.x86_cache_bits - 1 - PAGE_SHIFT);
 }
 
+void init_cpu_devs(void);
+void get_cpu_vendor(struct cpuinfo_x86 *c);
 extern void early_cpu_init(void);
 extern void identify_secondary_cpu(struct cpuinfo_x86 *);
 extern void print_cpu_info(struct cpuinfo_x86 *);
arch/x86/include/asm/static_call.h +15 -0
index 125c407e2abe..41502bd2afd6 100644
@@ -65,4 +65,19 @@
 
 extern bool __static_call_fixup(void *tramp, u8 op, void *dest);
 
+extern void __static_call_update_early(void *tramp, void *func);
+
+#define static_call_update_early(name, _func)				\
+({									\
+	typeof(&STATIC_CALL_TRAMP(name)) __F = (_func);			\
+	if (static_call_initialized) {					\
+		__static_call_update(&STATIC_CALL_KEY(name),		\
+				     STATIC_CALL_TRAMP_ADDR(name), __F);\
+	} else {							\
+		WRITE_ONCE(STATIC_CALL_KEY(name).func, _func);		\
+		__static_call_update_early(STATIC_CALL_TRAMP_ADDR(name),\
+					   __F);			\
+	}								\
+})
+
 #endif /* _ASM_STATIC_CALL_H */
arch/x86/include/asm/sync_core.h +3 -3
index ab7382f92aff..96bda43538ee 100644
@@ -8,7 +8,7 @@
 #include <asm/special_insns.h>
 
 #ifdef CONFIG_X86_32
-static inline void iret_to_self(void)
+static __always_inline void iret_to_self(void)
 {
 	asm volatile (
 		"pushfl\n\t"
@@ -19,7 +19,7 @@ static inline void iret_to_self(void)
 		: ASM_CALL_CONSTRAINT : : "memory");
 }
 #else
-static inline void iret_to_self(void)
+static __always_inline void iret_to_self(void)
 {
 	unsigned int tmp;
 
@@ -55,7 +55,7 @@ static inline void iret_to_self(void)
  * Like all of Linux's memory ordering operations, this is a
  * compiler barrier as well.
  */
-static inline void sync_core(void)
+static __always_inline void sync_core(void)
 {
 	/*
 	 * The SERIALIZE instruction is the most straightforward way to
arch/x86/include/asm/xen/hypercall.h +22 -14
index a2dd24947eb8..97771b9d33af 100644
@@ -39,9 +39,11 @@
 #include <linux/string.h>
 #include <linux/types.h>
 #include <linux/pgtable.h>
+#include <linux/instrumentation.h>
 
 #include <trace/events/xen.h>
 
+#include <asm/alternative.h>
 #include <asm/page.h>
 #include <asm/smap.h>
 #include <asm/nospec-branch.h>
@@ -86,11 +88,20 @@ struct xen_dm_op_buf;
  * there aren't more than 5 arguments...)
  */
 
-extern struct { char _entry[32]; } hypercall_page[];
+void xen_hypercall_func(void);
+DECLARE_STATIC_CALL(xen_hypercall, xen_hypercall_func);
 
-#define __HYPERCALL		"call hypercall_page+%c[offset]"
-#define __HYPERCALL_ENTRY(x)						\
-	[offset] "i" (__HYPERVISOR_##x * sizeof(hypercall_page[0]))
+#ifdef MODULE
+#define __ADDRESSABLE_xen_hypercall
+#else
+#define __ADDRESSABLE_xen_hypercall __ADDRESSABLE_ASM_STR(__SCK__xen_hypercall)
+#endif
+
+#define __HYPERCALL					\
+	__ADDRESSABLE_xen_hypercall			\
+	"call __SCT__xen_hypercall"
+
+#define __HYPERCALL_ENTRY(x)	"a" (x)
 
 #ifdef CONFIG_X86_32
 #define __HYPERCALL_RETREG	"eax"
@@ -148,7 +159,7 @@ extern struct { char _entry[32]; } hypercall_page[];
 	__HYPERCALL_0ARG();						\
 	asm volatile (__HYPERCALL					\
 		      : __HYPERCALL_0PARAM				\
-		      : __HYPERCALL_ENTRY(name)				\
+		      : __HYPERCALL_ENTRY(__HYPERVISOR_ ## name)	\
 		      : __HYPERCALL_CLOBBER0);				\
 	(type)__res;							\
 })
@@ -159,7 +170,7 @@ extern struct { char _entry[32]; } hypercall_page[];
 	__HYPERCALL_1ARG(a1);						\
 	asm volatile (__HYPERCALL					\
 		      : __HYPERCALL_1PARAM				\
-		      : __HYPERCALL_ENTRY(name)				\
+		      : __HYPERCALL_ENTRY(__HYPERVISOR_ ## name)	\
 		      : __HYPERCALL_CLOBBER1);				\
 	(type)__res;							\
 })
@@ -170,7 +181,7 @@ extern struct { char _entry[32]; } hypercall_page[];
 	__HYPERCALL_2ARG(a1, a2);					\
 	asm volatile (__HYPERCALL					\
 		      : __HYPERCALL_2PARAM				\
-		      : __HYPERCALL_ENTRY(name)				\
+		      : __HYPERCALL_ENTRY(__HYPERVISOR_ ## name)	\
 		      : __HYPERCALL_CLOBBER2);				\
 	(type)__res;							\
 })
@@ -181,7 +192,7 @@ extern struct { char _entry[32]; } hypercall_page[];
 	__HYPERCALL_3ARG(a1, a2, a3);					\
 	asm volatile (__HYPERCALL					\
 		      : __HYPERCALL_3PARAM				\
-		      : __HYPERCALL_ENTRY(name)				\
+		      : __HYPERCALL_ENTRY(__HYPERVISOR_ ## name)	\
 		      : __HYPERCALL_CLOBBER3);				\
 	(type)__res;							\
 })
@@ -192,7 +203,7 @@ extern struct { char _entry[32]; } hypercall_page[];
 	__HYPERCALL_4ARG(a1, a2, a3, a4);				\
 	asm volatile (__HYPERCALL					\
 		      : __HYPERCALL_4PARAM				\
-		      : __HYPERCALL_ENTRY(name)				\
+		      : __HYPERCALL_ENTRY(__HYPERVISOR_ ## name)	\
 		      : __HYPERCALL_CLOBBER4);				\
 	(type)__res;							\
 })
@@ -206,12 +217,9 @@ xen_single_call(unsigned int call,
 	__HYPERCALL_DECLS;
 	__HYPERCALL_5ARG(a1, a2, a3, a4, a5);
 
-	if (call >= PAGE_SIZE / sizeof(hypercall_page[0]))
-		return -EINVAL;
-
-	asm volatile(CALL_NOSPEC
+	asm volatile(__HYPERCALL
 		     : __HYPERCALL_5PARAM
-		     : [thunk_target] "a" (&hypercall_page[call])
+		     : __HYPERCALL_ENTRY(call)
 		     : __HYPERCALL_CLOBBER5);
 
 	return (long)__res;
arch/x86/kernel/callthunks.c +0 -5
index 465647456753..f17d16607882 100644
@@ -142,11 +142,6 @@ static bool skip_addr(void *dest)
 	if (dest >= (void *)relocate_kernel &&
 	    dest < (void*)relocate_kernel + KEXEC_CONTROL_CODE_MAX_SIZE)
 		return true;
-#endif
-#ifdef CONFIG_XEN
-	if (dest >= (void *)hypercall_page &&
-	    dest < (void*)hypercall_page + PAGE_SIZE)
-		return true;
 #endif
 	return false;
 }
arch/x86/kernel/cpu/common.c +22 -16
index b17bcf9b67ee..f439763f45ae 100644
@@ -868,7 +868,7 @@ static void cpu_detect_tlb(struct cpuinfo_x86 *c)
 		tlb_lld_4m[ENTRIES], tlb_lld_1g[ENTRIES]);
 }
 
-static void get_cpu_vendor(struct cpuinfo_x86 *c)
+void get_cpu_vendor(struct cpuinfo_x86 *c)
 {
 	char *v = c->x86_vendor_id;
 	int i;
@@ -1652,15 +1652,11 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c)
 	detect_nopl();
 }
 
-void __init early_cpu_init(void)
+void __init init_cpu_devs(void)
 {
 	const struct cpu_dev *const *cdev;
 	int count = 0;
 
-#ifdef CONFIG_PROCESSOR_SELECT
-	pr_info("KERNEL supported cpus:\n");
-#endif
-
 	for (cdev = __x86_cpu_dev_start; cdev < __x86_cpu_dev_end; cdev++) {
 		const struct cpu_dev *cpudev = *cdev;
 
@@ -1668,20 +1664,30 @@ void __init early_cpu_init(void)
 			break;
 		cpu_devs[count] = cpudev;
 		count++;
+	}
+}
 
+void __init early_cpu_init(void)
+{
 #ifdef CONFIG_PROCESSOR_SELECT
-		{
-			unsigned int j;
-
-			for (j = 0; j < 2; j++) {
-				if (!cpudev->c_ident[j])
-					continue;
-				pr_info("  %s %s\n", cpudev->c_vendor,
-					cpudev->c_ident[j]);
-			}
-		}
+	unsigned int i, j;
+
+	pr_info("KERNEL supported cpus:\n");
 #endif
+
+	init_cpu_devs();
+
+#ifdef CONFIG_PROCESSOR_SELECT
+	for (i = 0; i < X86_VENDOR_NUM && cpu_devs[i]; i++) {
+		for (j = 0; j < 2; j++) {
+			if (!cpu_devs[i]->c_ident[j])
+				continue;
+			pr_info("  %s %s\n", cpu_devs[i]->c_vendor,
+				cpu_devs[i]->c_ident[j]);
+		}
 	}
+#endif
+
 	early_identify_cpu(&boot_cpu_data);
 }
 
arch/x86/kernel/static_call.c +9 -0
index 4eefaac64c6c..9eed0c144dad 100644
@@ -172,6 +172,15 @@ void arch_static_call_transform(void *site, void *tramp, void *func, bool tail)
 }
 EXPORT_SYMBOL_GPL(arch_static_call_transform);
 
+noinstr void __static_call_update_early(void *tramp, void *func)
+{
+	BUG_ON(system_state != SYSTEM_BOOTING);
+	BUG_ON(!early_boot_irqs_disabled);
+	BUG_ON(static_call_initialized);
+	__text_gen_insn(tramp, JMP32_INSN_OPCODE, tramp, func, JMP32_INSN_SIZE);
+	sync_core();
+}
+
 #ifdef CONFIG_MITIGATION_RETHUNK
 /*
  * This is called by apply_returns() to fix up static call trampolines,
arch/x86/xen/enlighten.c +63 -1

82 lines not on this page · raw message

arch/x86/xen/enlighten_hvm.c +5 -8
index 24d2957a4726..fe57ff85d004 100644
@@ -106,15 +106,8 @@ static void __init init_hvm_pv_info(void)
 	/* PVH set up hypercall page in xen_prepare_pvh(). */
 	if (xen_pvh_domain())
 		pv_info.name = "Xen PVH";
-	else {
-		u64 pfn;
-		uint32_t msr;
-
+	else
 		pv_info.name = "Xen HVM";
-		msr = cpuid_ebx(base + 2);
-		pfn = __pa(hypercall_page);
-		wrmsr_safe(msr, (u32)pfn, (u32)(pfn >> 32));
-	}
 
 	xen_setup_features();
 
@@ -300,6 +293,10 @@ static uint32_t __init xen_platform_hvm(void)
 	if (xen_pv_domain())
 		return 0;
 
+	/* Set correct hypercall function. */
+	if (xen_domain)
+		xen_hypercall_setfunc();
+
 	if (xen_pvh_domain() && nopv) {
 		/* Guest booting via the Xen-PVH boot entry goes here */
 		pr_info("\"nopv\" parameter is ignored in PVH guest\n");
arch/x86/xen/enlighten_pv.c +3 -1
index d6818c6cafda..a8eb7e0c473c 100644
@@ -1341,6 +1341,9 @@ asmlinkage __visible void __init xen_start_kernel(struct start_info *si)
 
 	xen_domain_type = XEN_PV_DOMAIN;
 	xen_start_flags = xen_start_info->flags;
+	/* Interrupts are guaranteed to be off initially. */
+	early_boot_irqs_disabled = true;
+	static_call_update_early(xen_hypercall, xen_hypercall_pv);
 
 	xen_setup_features();
 
@@ -1431,7 +1434,6 @@ asmlinkage __visible void __init xen_start_kernel(struct start_info *si)
 	WARN_ON(xen_cpuhp_setup(xen_cpu_up_prepare_pv, xen_cpu_dead_pv));
 
 	local_irq_disable();
-	early_boot_irqs_disabled = true;
 
 	xen_raw_console_write("mapping kernel into physical memory\n");
 	xen_setup_kernel_pagetable((pgd_t *)xen_start_info->pt_base,
arch/x86/xen/enlighten_pvh.c +0 -7
index bf68c329fc01..0e3d930bcb89 100644
@@ -129,17 +129,10 @@ static void __init pvh_arch_setup(void)
 
 void __init xen_pvh_init(struct boot_params *boot_params)
 {
-	u32 msr;
-	u64 pfn;
-
 	xen_pvh = 1;
 	xen_domain_type = XEN_HVM_DOMAIN;
 	xen_start_flags = pvh_start_info.flags;
 
-	msr = cpuid_ebx(xen_cpuid_base() + 2);
-	pfn = __pa(hypercall_page);
-	wrmsr_safe(msr, (u32)pfn, (u32)(pfn >> 32));
-
 	x86_init.oem.arch_setup = pvh_arch_setup;
 	x86_init.oem.banner = xen_banner;
 
arch/x86/xen/xen-asm.S +41 -9

82 lines not on this page · raw message

arch/x86/xen/xen-head.S +83 -23

133 lines not on this page · raw message

arch/x86/xen/xen-ops.h +9 -0
index e1b782e823e6..63c13a2ccf55 100644
@@ -326,4 +326,13 @@ static inline void xen_smp_intr_free_pv(unsigned int cpu) {}
 static inline void xen_smp_count_cpus(void) { }
 #endif /* CONFIG_SMP */
 
+#ifdef CONFIG_XEN_PV
+void xen_hypercall_pv(void);
+#endif
+void xen_hypercall_hvm(void);
+void xen_hypercall_amd(void);
+void xen_hypercall_intel(void);
+void xen_hypercall_setfunc(void);
+void *__xen_hypercall_setfunc(void);
+
 #endif /* XEN_OPS_H */
block/blk-cgroup.c +5 -1
index e68c725cf8d9..45a395862fbc 100644
@@ -1324,10 +1324,14 @@ void blkcg_unpin_online(struct cgroup_subsys_state *blkcg_css)
 	struct blkcg *blkcg = css_to_blkcg(blkcg_css);
 
 	do {
+		struct blkcg *parent;
+
 		if (!refcount_dec_and_test(&blkcg->online_pin))
 			break;
+
+		parent = blkcg_parent(blkcg);
 		blkcg_destroy_blkgs(blkcg);
-		blkcg = blkcg_parent(blkcg);
+		blkcg = parent;
 	} while (blkcg);
 }
 
block/blk-iocost.c +8 -1
index 384aa15e8260..a5894ec9696e 100644
@@ -1098,7 +1098,14 @@ static void __propagate_weights(struct ioc_gq *iocg, u32 active, u32 inuse,
 		inuse = DIV64_U64_ROUND_UP(active * iocg->child_inuse_sum,
 					   iocg->child_active_sum);
 	} else {
-		inuse = clamp_t(u32, inuse, 1, active);
+		/*
+		 * It may be tempting to turn this into a clamp expression with
+		 * a lower limit of 1 but active may be 0, which cannot be used
+		 * as an upper limit in that situation. This expression allows
+		 * active to clamp inuse unless it is 0, in which case inuse
+		 * becomes 1.
+		 */
+		inuse = min(inuse, active) ?: 1;
 	}
 
 	iocg->last_inuse = iocg->inuse;
block/blk-mq-sysfs.c +6 -10
index 156e9bb07abf..cd5ea6eaa76b 100644
@@ -275,15 +275,13 @@ void blk_mq_sysfs_unregister_hctxs(struct request_queue *q)
 	struct blk_mq_hw_ctx *hctx;
 	unsigned long i;
 
-	mutex_lock(&q->sysfs_dir_lock);
+	lockdep_assert_held(&q->sysfs_dir_lock);
+
 	if (!q->mq_sysfs_init_done)
-		goto unlock;
+		return;
 
 	queue_for_each_hw_ctx(q, hctx, i)
 		blk_mq_unregister_hctx(hctx);
-
-unlock:
-	mutex_unlock(&q->sysfs_dir_lock);
 }
 
 int blk_mq_sysfs_register_hctxs(struct request_queue *q)
@@ -292,9 +290,10 @@ int blk_mq_sysfs_register_hctxs(struct request_queue *q)
 	unsigned long i;
 	int ret = 0;
 
-	mutex_lock(&q->sysfs_dir_lock);
+	lockdep_assert_held(&q->sysfs_dir_lock);
+
 	if (!q->mq_sysfs_init_done)
-		goto unlock;
+		return ret;
 
 	queue_for_each_hw_ctx(q, hctx, i) {
 		ret = blk_mq_register_hctx(hctx);
@@ -302,8 +301,5 @@ int blk_mq_sysfs_register_hctxs(struct request_queue *q)
 			break;
 	}
 
-unlock:
-	mutex_unlock(&q->sysfs_dir_lock);
-
 	return ret;
 }
block/blk-mq.c +110 -17

227 lines not on this page · raw message

block/blk-sysfs.c +2 -2
index 207577145c54..42c2cb97d778 100644
@@ -690,11 +690,11 @@ queue_attr_store(struct kobject *kobj, struct attribute *attr,
 			return res;
 	}
 
-	blk_mq_freeze_queue(q);
 	mutex_lock(&q->sysfs_lock);
+	blk_mq_freeze_queue(q);
 	res = entry->store(disk, page, length);
-	mutex_unlock(&q->sysfs_lock);
 	blk_mq_unfreeze_queue(q);
+	mutex_unlock(&q->sysfs_lock);
 	return res;
 }
 
block/blk-zoned.c +232 -292

813 lines not on this page · raw message

drivers/acpi/acpica/evxfregn.c +0 -2
index 95f78383bbdb..bff2d099f469 100644
@@ -232,8 +232,6 @@ acpi_remove_address_space_handler(acpi_handle device,
 
 			/* Now we can delete the handler object */
 
-			acpi_os_release_mutex(handler_obj->address_space.
-					      context_mutex);
 			acpi_ut_remove_reference(handler_obj);
 			goto unlock_and_exit;
 		}
drivers/acpi/nfit/core.c +6 -1
index 5429ec9ef06f..a5d47819b3a4 100644
@@ -454,8 +454,13 @@ int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,
 	if (cmd_rc)
 		*cmd_rc = -EINVAL;
 
-	if (cmd == ND_CMD_CALL)
+	if (cmd == ND_CMD_CALL) {
+		if (!buf || buf_len < sizeof(*call_pkg))
+			return -EINVAL;
+
 		call_pkg = buf;
+	}
+
 	func = cmd_to_func(nfit_mem, cmd, call_pkg, &family);
 	if (func < 0)
 		return func;
drivers/acpi/resource.c +3 -3
index 7fe842dae1ec..821867de43be 100644
@@ -250,6 +250,9 @@ static bool acpi_decode_space(struct resource_win *win,
 	switch (addr->resource_type) {
 	case ACPI_MEMORY_RANGE:
 		acpi_dev_memresource_flags(res, len, wp);
+
+		if (addr->info.mem.caching == ACPI_PREFETCHABLE_MEMORY)
+			res->flags |= IORESOURCE_PREFETCH;
 		break;
 	case ACPI_IO_RANGE:
 		acpi_dev_ioresource_flags(res, len, iodec,
@@ -265,9 +268,6 @@ static bool acpi_decode_space(struct resource_win *win,
 	if (addr->producer_consumer == ACPI_PRODUCER)
 		res->flags |= IORESOURCE_WINDOW;
 
-	if (addr->info.mem.caching == ACPI_PREFETCHABLE_MEMORY)
-		res->flags |= IORESOURCE_PREFETCH;
-
 	return !(res->flags & IORESOURCE_DISABLED);
 }
 
drivers/ata/sata_highbank.c +1 -0
index 63ef7bb073ce..596c6d294da9 100644
@@ -348,6 +348,7 @@ static int highbank_initialize_phys(struct device *dev, void __iomem *addr)
 			phy_nodes[phy] = phy_data.np;
 			cphy_base[phy] = of_iomap(phy_nodes[phy], 0);
 			if (cphy_base[phy] == NULL) {
+				of_node_put(phy_data.np);
 				return 0;
 			}
 			phy_count += 1;
drivers/bluetooth/btmtk.c +12 -8
index 480e4adba9fa..85e99641eaae 100644
@@ -395,6 +395,7 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
 {
 	struct btmtk_data *data = hci_get_priv(hdev);
 	int err;
+	bool complete = false;
 
 	if (!IS_ENABLED(CONFIG_DEV_COREDUMP)) {
 		kfree_skb(skb);
@@ -416,19 +417,22 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
 		fallthrough;
 	case HCI_DEVCOREDUMP_ACTIVE:
 	default:
+		/* Mediatek coredump data would be more than MTK_COREDUMP_NUM */
+		if (data->cd_info.cnt >= MTK_COREDUMP_NUM &&
+		    skb->len > MTK_COREDUMP_END_LEN)
+			if (!memcmp((char *)&skb->data[skb->len - MTK_COREDUMP_END_LEN],
+				    MTK_COREDUMP_END, MTK_COREDUMP_END_LEN - 1))
+				complete = true;
+
 		err = hci_devcd_append(hdev, skb);
 		if (err < 0)
 			break;
 		data->cd_info.cnt++;
 
-		/* Mediatek coredump data would be more than MTK_COREDUMP_NUM */
-		if (data->cd_info.cnt > MTK_COREDUMP_NUM &&
-		    skb->len > MTK_COREDUMP_END_LEN)
-			if (!memcmp((char *)&skb->data[skb->len - MTK_COREDUMP_END_LEN],
-				    MTK_COREDUMP_END, MTK_COREDUMP_END_LEN - 1)) {
-				bt_dev_info(hdev, "Mediatek coredump end");
-				hci_devcd_complete(hdev);
-			}
+		if (complete) {
+			bt_dev_info(hdev, "Mediatek coredump end");
+			hci_devcd_complete(hdev);
+		}
 
 		break;
 	}
drivers/clk/clk-en7523.c +3 -2
index bc21b2921449..62a62eaba2aa 100644
@@ -92,6 +92,7 @@ static const u32 slic_base[] = { 100000000, 3125000 };
 static const u32 npu_base[] = { 333000000, 400000000, 500000000 };
 /* EN7581 */
 static const u32 emi7581_base[] = { 540000000, 480000000, 400000000, 300000000 };
+static const u32 bus7581_base[] = { 600000000, 540000000 };
 static const u32 npu7581_base[] = { 800000000, 750000000, 720000000, 600000000 };
 static const u32 crypto_base[] = { 540000000, 480000000 };
 
@@ -227,8 +228,8 @@ static const struct en_clk_desc en7581_base_clks[] = {
 		.base_reg = REG_BUS_CLK_DIV_SEL,
 		.base_bits = 1,
 		.base_shift = 8,
-		.base_values = bus_base,
-		.n_base_values = ARRAY_SIZE(bus_base),
+		.base_values = bus7581_base,
+		.n_base_values = ARRAY_SIZE(bus7581_base),
 
 		.div_bits = 3,
 		.div_shift = 0,
drivers/crypto/hisilicon/debugfs.c +2 -2
index 1b9b7bccdeff..45e130b901eb 100644
@@ -192,7 +192,7 @@ static int qm_sqc_dump(struct hisi_qm *qm, char *s, char *name)
 
 	down_read(&qm->qps_lock);
 	if (qm->sqc) {
-		memcpy(&sqc, qm->sqc + qp_id * sizeof(struct qm_sqc), sizeof(struct qm_sqc));
+		memcpy(&sqc, qm->sqc + qp_id, sizeof(struct qm_sqc));
 		sqc.base_h = cpu_to_le32(QM_XQC_ADDR_MASK);
 		sqc.base_l = cpu_to_le32(QM_XQC_ADDR_MASK);
 		dump_show(qm, &sqc, sizeof(struct qm_sqc), "SOFT SQC");
@@ -229,7 +229,7 @@ static int qm_cqc_dump(struct hisi_qm *qm, char *s, char *name)
 
 	down_read(&qm->qps_lock);
 	if (qm->cqc) {
-		memcpy(&cqc, qm->cqc + qp_id * sizeof(struct qm_cqc), sizeof(struct qm_cqc));
+		memcpy(&cqc, qm->cqc + qp_id, sizeof(struct qm_cqc));
 		cqc.base_h = cpu_to_le32(QM_XQC_ADDR_MASK);
 		cqc.base_l = cpu_to_le32(QM_XQC_ADDR_MASK);
 		dump_show(qm, &cqc, sizeof(struct qm_cqc), "SOFT CQC");
drivers/gpio/gpio-graniterapids.c +41 -11

138 lines not on this page · raw message

drivers/gpio/gpio-ljca.c +1 -1
index dfec9fbfc7a9..c2a9b4253974 100644
@@ -82,9 +82,9 @@ static int ljca_gpio_config(struct ljca_gpio_dev *ljca_gpio, u8 gpio_id,
 	int ret;
 
 	mutex_lock(&ljca_gpio->trans_lock);
+	packet->num = 1;
 	packet->item[0].index = gpio_id;
 	packet->item[0].value = config | ljca_gpio->connect_mode[gpio_id];
-	packet->num = 1;
 
 	ret = ljca_transfer(ljca_gpio->ljca, LJCA_GPIO_CONFIG, (u8 *)packet,
 			    struct_size(packet, item, packet->num), NULL, 0);
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +11 -6
index d891ab779ca7..5df21529b3b1 100644
@@ -1801,13 +1801,18 @@ int amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser,
 	if (dma_resv_locking_ctx((*bo)->tbo.base.resv) != &parser->exec.ticket)
 		return -EINVAL;
 
+	/* Make sure VRAM is allocated contigiously */
 	(*bo)->flags |= AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS;
-	amdgpu_bo_placement_from_domain(*bo, (*bo)->allowed_domains);
-	for (i = 0; i < (*bo)->placement.num_placement; i++)
-		(*bo)->placements[i].flags |= TTM_PL_FLAG_CONTIGUOUS;
-	r = ttm_bo_validate(&(*bo)->tbo, &(*bo)->placement, &ctx);
-	if (r)
-		return r;
+	if ((*bo)->tbo.resource->mem_type == TTM_PL_VRAM &&
+	    !((*bo)->tbo.resource->placement & TTM_PL_FLAG_CONTIGUOUS)) {
+
+		amdgpu_bo_placement_from_domain(*bo, (*bo)->allowed_domains);
+		for (i = 0; i < (*bo)->placement.num_placement; i++)
+			(*bo)->placements[i].flags |= TTM_PL_FLAG_CONTIGUOUS;
+		r = ttm_bo_validate(&(*bo)->tbo, &(*bo)->placement, &ctx);
+		if (r)
+			return r;
+	}
 
 	return amdgpu_ttm_alloc_gart(&(*bo)->tbo);
 }
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +2 -0
index 31fd30dcd593..65bb26215e86 100644
@@ -551,6 +551,8 @@ static void amdgpu_uvd_force_into_uvd_segment(struct amdgpu_bo *abo)
 	for (i = 0; i < abo->placement.num_placement; ++i) {
 		abo->placements[i].fpfn = 0 >> PAGE_SHIFT;
 		abo->placements[i].lpfn = (256 * 1024 * 1024) >> PAGE_SHIFT;
+		if (abo->placements[i].mem_type == TTM_PL_VRAM)
+			abo->placements[i].flags |= TTM_PL_FLAG_CONTIGUOUS;
 	}
 }
 
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +7 -6
index 6005280f5f38..8d2562d0f143 100644
@@ -674,12 +674,8 @@ int amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job,
 	pasid_mapping_needed &= adev->gmc.gmc_funcs->emit_pasid_mapping &&
 		ring->funcs->emit_wreg;
 
-	if (adev->gfx.enable_cleaner_shader &&
-	    ring->funcs->emit_cleaner_shader &&
-	    job->enforce_isolation)
-		ring->funcs->emit_cleaner_shader(ring);
-
-	if (!vm_flush_needed && !gds_switch_needed && !need_pipe_sync)
+	if (!vm_flush_needed && !gds_switch_needed && !need_pipe_sync &&
+	    !(job->enforce_isolation && !job->vmid))
 		return 0;
 
 	amdgpu_ring_ib_begin(ring);
@@ -690,6 +686,11 @@ int amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job,
 	if (need_pipe_sync)
 		amdgpu_ring_emit_pipeline_sync(ring);
 
+	if (adev->gfx.enable_cleaner_shader &&
+	    ring->funcs->emit_cleaner_shader &&
+	    job->enforce_isolation)
+		ring->funcs->emit_cleaner_shader(ring);
+
 	if (vm_flush_needed) {
 		trace_amdgpu_vm_flush(ring, job->vmid, job->vm_pd_addr);
 		amdgpu_ring_emit_vm_flush(ring, job->vmid, job->vm_pd_addr);
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c +1 -1
index 6068b784dc69..9a30b8c10838 100644
@@ -1289,7 +1289,7 @@ static int uvd_v7_0_ring_patch_cs_in_place(struct amdgpu_cs_parser *p,
 					   struct amdgpu_job *job,
 					   struct amdgpu_ib *ib)
 {
-	struct amdgpu_ring *ring = to_amdgpu_ring(job->base.sched);
+	struct amdgpu_ring *ring = amdgpu_job_ring(job);
 	unsigned i;
 
 	/* No patching necessary for the first instance */
drivers/gpu/drm/amd/amdkfd/kfd_crat.c +21 -3
index 8de61cc524c9..d2993594c848 100644
@@ -1422,6 +1422,7 @@ int kfd_parse_crat_table(void *crat_image, struct list_head *device_list,
 
 
 static int kfd_fill_gpu_cache_info_from_gfx_config(struct kfd_dev *kdev,
+						   bool cache_line_size_missing,
 						   struct kfd_gpu_cache_info *pcache_info)
 {
 	struct amdgpu_device *adev = kdev->adev;
@@ -1436,6 +1437,8 @@ static int kfd_fill_gpu_cache_info_from_gfx_config(struct kfd_dev *kdev,
 					CRAT_CACHE_FLAGS_SIMD_CACHE);
 		pcache_info[i].num_cu_shared = adev->gfx.config.gc_num_tcp_per_wpg / 2;
 		pcache_info[i].cache_line_size = adev->gfx.config.gc_tcp_cache_line_size;
+		if (cache_line_size_missing && !pcache_info[i].cache_line_size)
+			pcache_info[i].cache_line_size = 128;
 		i++;
 	}
 	/* Scalar L1 Instruction Cache per SQC */
@@ -1448,6 +1451,8 @@ static int kfd_fill_gpu_cache_info_from_gfx_config(struct kfd_dev *kdev,
 					CRAT_CACHE_FLAGS_SIMD_CACHE);
 		pcache_info[i].num_cu_shared = adev->gfx.config.gc_num_sqc_per_wgp * 2;
 		pcache_info[i].cache_line_size = adev->gfx.config.gc_instruction_cache_line_size;
+		if (cache_line_size_missing && !pcache_info[i].cache_line_size)
+			pcache_info[i].cache_line_size = 128;
 		i++;
 	}
 	/* Scalar L1 Data Cache per SQC */
@@ -1459,6 +1464,8 @@ static int kfd_fill_gpu_cache_info_from_gfx_config(struct kfd_dev *kdev,
 					CRAT_CACHE_FLAGS_SIMD_CACHE);
 		pcache_info[i].num_cu_shared = adev->gfx.config.gc_num_sqc_per_wgp * 2;
 		pcache_info[i].cache_line_size = adev->gfx.config.gc_scalar_data_cache_line_size;
+		if (cache_line_size_missing && !pcache_info[i].cache_line_size)
+			pcache_info[i].cache_line_size = 64;
 		i++;
 	}
 	/* GL1 Data Cache per SA */
@@ -1471,7 +1478,8 @@ static int kfd_fill_gpu_cache_info_from_gfx_config(struct kfd_dev *kdev,
 					CRAT_CACHE_FLAGS_DATA_CACHE |
 					CRAT_CACHE_FLAGS_SIMD_CACHE);
 		pcache_info[i].num_cu_shared = adev->gfx.config.max_cu_per_sh;
-		pcache_info[i].cache_line_size = 0;
+		if (cache_line_size_missing)
+			pcache_info[i].cache_line_size = 128;
 		i++;
 	}
 	/* L2 Data Cache per GPU (Total Tex Cache) */
@@ -1483,6 +1491,8 @@ static int kfd_fill_gpu_cache_info_from_gfx_config(struct kfd_dev *kdev,
 					CRAT_CACHE_FLAGS_SIMD_CACHE);
 		pcache_info[i].num_cu_shared = adev->gfx.config.max_cu_per_sh;
 		pcache_info[i].cache_line_size = adev->gfx.config.gc_tcc_cache_line_size;
+		if (cache_line_size_missing && !pcache_info[i].cache_line_size)
+			pcache_info[i].cache_line_size = 128;
 		i++;
 	}
 	/* L3 Data Cache per GPU */
@@ -1493,7 +1503,7 @@ static int kfd_fill_gpu_cache_info_from_gfx_config(struct kfd_dev *kdev,
 					CRAT_CACHE_FLAGS_DATA_CACHE |
 					CRAT_CACHE_FLAGS_SIMD_CACHE);
 		pcache_info[i].num_cu_shared = adev->gfx.config.max_cu_per_sh;
-		pcache_info[i].cache_line_size = 0;
+		pcache_info[i].cache_line_size = 64;
 		i++;
 	}
 	return i;
@@ -1568,6 +1578,7 @@ static int kfd_fill_gpu_cache_info_from_gfx_config_v2(struct kfd_dev *kdev,
 int kfd_get_gpu_cache_info(struct kfd_node *kdev, struct kfd_gpu_cache_info **pcache_info)
 {
 	int num_of_cache_types = 0;
+	bool cache_line_size_missing = false;
 
 	switch (kdev->adev->asic_type) {
 	case CHIP_KAVERI:
@@ -1691,10 +1702,17 @@ int kfd_get_gpu_cache_info(struct kfd_node *kdev, struct kfd_gpu_cache_info **pc
 		case IP_VERSION(11, 5, 0):
 		case IP_VERSION(11, 5, 1):
 		case IP_VERSION(11, 5, 2):
+			/* Cacheline size not available in IP discovery for gc11.
+			 * kfd_fill_gpu_cache_info_from_gfx_config to hard code it
+			 */
+			cache_line_size_missing = true;
+			fallthrough;
 		case IP_VERSION(12, 0, 0):
 		case IP_VERSION(12, 0, 1):
 			num_of_cache_types =
-				kfd_fill_gpu_cache_info_from_gfx_config(kdev->kfd, *pcache_info);
+				kfd_fill_gpu_cache_info_from_gfx_config(kdev->kfd,
+									cache_line_size_missing,
+									*pcache_info);
 			break;
 		default:
 			*pcache_info = dummy_cache_info;
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +15 -0
index 648f40091aa3..f5b3ed20e891 100644
@@ -205,6 +205,21 @@ static int add_queue_mes(struct device_queue_manager *dqm, struct queue *q,
 	if (!down_read_trylock(&adev->reset_domain->sem))
 		return -EIO;
 
+	if (!pdd->proc_ctx_cpu_ptr) {
+		r = amdgpu_amdkfd_alloc_gtt_mem(adev,
+				AMDGPU_MES_PROC_CTX_SIZE,
+				&pdd->proc_ctx_bo,
+				&pdd->proc_ctx_gpu_addr,
+				&pdd->proc_ctx_cpu_ptr,
+				false);
+		if (r) {
+			dev_err(adev->dev,
+				"failed to allocate process context bo\n");
+			return r;
+		}
+		memset(pdd->proc_ctx_cpu_ptr, 0, AMDGPU_MES_PROC_CTX_SIZE);
+	}
+
 	memset(&queue_input, 0x0, sizeof(struct mes_add_queue_input));
 	queue_input.process_id = qpd->pqm->process->pasid;
 	queue_input.page_table_base_addr =  qpd->page_table_base;
drivers/gpu/drm/amd/amdkfd/kfd_process.c +2 -21
index ff34bb1ac9db..3139987b82b1 100644
@@ -1076,7 +1076,8 @@ static void kfd_process_destroy_pdds(struct kfd_process *p)
 
 		kfd_free_process_doorbells(pdd->dev->kfd, pdd);
 
-		if (pdd->dev->kfd->shared_resources.enable_mes)
+		if (pdd->dev->kfd->shared_resources.enable_mes &&
+			pdd->proc_ctx_cpu_ptr)
 			amdgpu_amdkfd_free_gtt_mem(pdd->dev->adev,
 						   &pdd->proc_ctx_bo);
 		/*
@@ -1610,7 +1611,6 @@ struct kfd_process_device *kfd_create_process_device_data(struct kfd_node *dev,
 							struct kfd_process *p)
 {
 	struct kfd_process_device *pdd = NULL;
-	int retval = 0;
 
 	if (WARN_ON_ONCE(p->n_pdds >= MAX_GPU_INSTANCE))
 		return NULL;
@@ -1634,21 +1634,6 @@ struct kfd_process_device *kfd_create_process_device_data(struct kfd_node *dev,
 	pdd->user_gpu_id = dev->id;
 	atomic64_set(&pdd->evict_duration_counter, 0);
 
-	if (dev->kfd->shared_resources.enable_mes) {
-		retval = amdgpu_amdkfd_alloc_gtt_mem(dev->adev,
-						AMDGPU_MES_PROC_CTX_SIZE,
-						&pdd->proc_ctx_bo,
-						&pdd->proc_ctx_gpu_addr,
-						&pdd->proc_ctx_cpu_ptr,
-						false);
-		if (retval) {
-			dev_err(dev->adev->dev,
-				"failed to allocate process context bo\n");
-			goto err_free_pdd;
-		}
-		memset(pdd->proc_ctx_cpu_ptr, 0, AMDGPU_MES_PROC_CTX_SIZE);
-	}
-
 	p->pdds[p->n_pdds++] = pdd;
 	if (kfd_dbg_is_per_vmid_supported(pdd->dev))
 		pdd->spi_dbg_override = pdd->dev->kfd2kgd->disable_debug_trap(
@@ -1660,10 +1645,6 @@ struct kfd_process_device *kfd_create_process_device_data(struct kfd_node *dev,
 	idr_init(&pdd->alloc_idr);
 
 	return pdd;
-
-err_free_pdd:
-	kfree(pdd);
-	return NULL;
 }
 
 /**
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +8 -4
index 01b960b15274..ead4317a2168 100644
@@ -212,13 +212,17 @@ static void pqm_clean_queue_resource(struct process_queue_manager *pqm,
 void pqm_uninit(struct process_queue_manager *pqm)
 {
 	struct process_queue_node *pqn, *next;
-	struct kfd_process_device *pdd;
 
 	list_for_each_entry_safe(pqn, next, &pqm->queues, process_queue_list) {
 		if (pqn->q) {
-			pdd = kfd_get_process_device_data(pqn->q->device, pqm->process);
-			kfd_queue_unref_bo_vas(pdd, &pqn->q->properties);
-			kfd_queue_release_buffers(pdd, &pqn->q->properties);
+			struct kfd_process_device *pdd = kfd_get_process_device_data(pqn->q->device,
+										     pqm->process);
+			if (pdd) {
+				kfd_queue_unref_bo_vas(pdd, &pqn->q->properties);
+				kfd_queue_release_buffers(pdd, &pqn->q->properties);
+			} else {
+				WARN_ON(!pdd);
+			}
 			pqm_clean_queue_resource(pqm, pqn);
 		}
 
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c +1 -0
index d0e6d051e9cf..1aedfafa507f 100644
@@ -2717,4 +2717,5 @@ void smu_v13_0_7_set_ppt_funcs(struct smu_context *smu)
 	smu->workload_map = smu_v13_0_7_workload_map;
 	smu->smc_driver_if_version = SMU13_0_7_DRIVER_IF_VERSION;
 	smu_v13_0_set_smu_mailbox_registers(smu);
+	smu->power_profile_mode = PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT;
 }
drivers/gpu/drm/drm_panic_qr.rs +0 -1
index 1ef56cb07dfb..447740d79d3d 100644
@@ -929,7 +929,6 @@ fn draw_all(&mut self, data: impl Iterator<Item = u8>) {
 /// * `tmp` must be valid for reading and writing for `tmp_size` bytes.
 ///
 /// They must remain valid for the duration of the function call.
-
 #[no_mangle]
 pub unsafe extern "C" fn drm_panic_qr_generate(
     url: *const i8,
drivers/gpu/drm/i915/display/intel_color.c +20 -10
index 5d701f48351b..ec55cb651d44 100644
@@ -1333,19 +1333,29 @@ static void ilk_load_lut_8(const struct intel_crtc_state *crtc_state,
 	lut = blob->data;
 
 	/*
-	 * DSB fails to correctly load the legacy LUT
-	 * unless we either write each entry twice,
-	 * or use non-posted writes
+	 * DSB fails to correctly load the legacy LUT unless
+	 * we either write each entry twice when using posted
+	 * writes, or we use non-posted writes.
+	 *
+	 * If palette anti-collision is active during LUT
+	 * register writes:
+	 * - posted writes simply get dropped and thus the LUT
+	 *   contents may not be correctly updated
+	 * - non-posted writes are blocked and thus the LUT
+	 *   contents are always correct, but simultaneous CPU
+	 *   MMIO access will start to fail
+	 *
+	 * Choose the lesser of two evils and use posted writes.
+	 * Using posted writes is also faster, even when having
+	 * to write each register twice.
 	 */
-	if (crtc_state->dsb_color_vblank)
-		intel_dsb_nonpost_start(crtc_state->dsb_color_vblank);
-
-	for (i = 0; i < 256; i++)
+	for (i = 0; i < 256; i++) {
 		ilk_lut_write(crtc_state, LGC_PALETTE(pipe, i),
 			      i9xx_lut_8(&lut[i]));
-
-	if (crtc_state->dsb_color_vblank)
-		intel_dsb_nonpost_end(crtc_state->dsb_color_vblank);
+		if (crtc_state->dsb_color_vblank)
+			ilk_lut_write(crtc_state, LGC_PALETTE(pipe, i),
+				      i9xx_lut_8(&lut[i]));
+	}
 }
 
 static void ilk_load_lut_10(const struct intel_crtc_state *crtc_state,
drivers/gpu/drm/i915/i915_gpu_error.c +15 -3
index 6469b9bcf2ec..082ac72c757a 100644
@@ -1652,9 +1652,21 @@ capture_engine(struct intel_engine_cs *engine,
 		return NULL;
 
 	intel_engine_get_hung_entity(engine, &ce, &rq);
-	if (rq && !i915_request_started(rq))
-		drm_info(&engine->gt->i915->drm, "Got hung context on %s with active request %lld:%lld [0x%04X] not yet started\n",
-			 engine->name, rq->fence.context, rq->fence.seqno, ce->guc_id.id);
+	if (rq && !i915_request_started(rq)) {
+		/*
+		 * We want to know also what is the guc_id of the context,
+		 * but if we don't have the context reference, then skip
+		 * printing it.
+		 */
+		if (ce)
+			drm_info(&engine->gt->i915->drm,
+				 "Got hung context on %s with active request %lld:%lld [0x%04X] not yet started\n",
+				 engine->name, rq->fence.context, rq->fence.seqno, ce->guc_id.id);
+		else
+			drm_info(&engine->gt->i915->drm,
+				 "Got hung context on %s with active request %lld:%lld not yet started\n",
+				 engine->name, rq->fence.context, rq->fence.seqno);
+	}
 
 	if (rq) {
 		capture = intel_engine_coredump_add_request(ee, rq, ATOMIC_MAYFAIL);
drivers/gpu/drm/i915/i915_scheduler.c +1 -1
index 762127dd56c5..70a854557e6e 100644
@@ -506,6 +506,6 @@ int __init i915_scheduler_module_init(void)
 	return 0;
 
 err_priorities:
-	kmem_cache_destroy(slab_priorities);
+	kmem_cache_destroy(slab_dependencies);
 	return -ENOMEM;
 }
drivers/gpu/drm/xe/tests/xe_migrate.c +2 -2
index 1a192a2a941b..3bbdb362d6f0 100644
@@ -224,8 +224,8 @@ static void xe_migrate_sanity_test(struct xe_migrate *m, struct kunit *test)
 				    XE_BO_FLAG_VRAM_IF_DGFX(tile) |
 				    XE_BO_FLAG_PINNED);
 	if (IS_ERR(tiny)) {
-		KUNIT_FAIL(test, "Failed to allocate fake pt: %li\n",
-			   PTR_ERR(pt));
+		KUNIT_FAIL(test, "Failed to allocate tiny fake pt: %li\n",
+			   PTR_ERR(tiny));
 		goto free_pt;
 	}
 
drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c +8 -0
index 9d82ea30f4df..7e385940df08 100644
@@ -65,6 +65,14 @@ invalidation_fence_signal(struct xe_device *xe, struct xe_gt_tlb_invalidation_fe
 	__invalidation_fence_signal(xe, fence);
 }
 
+void xe_gt_tlb_invalidation_fence_signal(struct xe_gt_tlb_invalidation_fence *fence)
+{
+	if (WARN_ON_ONCE(!fence->gt))
+		return;
+
+	__invalidation_fence_signal(gt_to_xe(fence->gt), fence);
+}
+
 static void xe_gt_tlb_fence_timeout(struct work_struct *work)
 {
 	struct xe_gt *gt = container_of(work, struct xe_gt,
drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h +1 -0
index f430d5797af7..00b1c6c01e8d 100644
@@ -28,6 +28,7 @@ int xe_guc_tlb_invalidation_done_handler(struct xe_guc *guc, u32 *msg, u32 len);
 void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
 				       struct xe_gt_tlb_invalidation_fence *fence,
 				       bool stack);
+void xe_gt_tlb_invalidation_fence_signal(struct xe_gt_tlb_invalidation_fence *fence);
 
 static inline void
 xe_gt_tlb_invalidation_fence_wait(struct xe_gt_tlb_invalidation_fence *fence)
drivers/gpu/drm/xe/xe_pt.c +1 -2
index f27f579f4d85..797576690356 100644
@@ -1333,8 +1333,7 @@ static void invalidation_fence_cb(struct dma_fence *fence,
 		queue_work(system_wq, &ifence->work);
 	} else {
 		ifence->base.base.error = ifence->fence->error;
-		dma_fence_signal(&ifence->base.base);
-		dma_fence_put(&ifence->base.base);
+		xe_gt_tlb_invalidation_fence_signal(&ifence->base);
 	}
 	dma_fence_put(ifence->fence);
 }
drivers/gpu/drm/xe/xe_reg_sr.c +6 -25
index 440ac572f6e5..52969c090965 100644
@@ -26,46 +26,27 @@
 #include "xe_reg_whitelist.h"
 #include "xe_rtp_types.h"
 
-#define XE_REG_SR_GROW_STEP_DEFAULT	16
-
 static void reg_sr_fini(struct drm_device *drm, void *arg)
 {
 	struct xe_reg_sr *sr = arg;
+	struct xe_reg_sr_entry *entry;
+	unsigned long reg;
+
+	xa_for_each(&sr->xa, reg, entry)
+		kfree(entry);
 
 	xa_destroy(&sr->xa);
-	kfree(sr->pool.arr);
-	memset(&sr->pool, 0, sizeof(sr->pool));
 }
 
 int xe_reg_sr_init(struct xe_reg_sr *sr, const char *name, struct xe_device *xe)
 {
 	xa_init(&sr->xa);
-	memset(&sr->pool, 0, sizeof(sr->pool));
-	sr->pool.grow_step = XE_REG_SR_GROW_STEP_DEFAULT;
 	sr->name = name;
 
 	return drmm_add_action_or_reset(&xe->drm, reg_sr_fini, sr);
 }
 EXPORT_SYMBOL_IF_KUNIT(xe_reg_sr_init);
 
-static struct xe_reg_sr_entry *alloc_entry(struct xe_reg_sr *sr)
-{
-	if (sr->pool.used == sr->pool.allocated) {
-		struct xe_reg_sr_entry *arr;
-
-		arr = krealloc_array(sr->pool.arr,
-				     ALIGN(sr->pool.allocated + 1, sr->pool.grow_step),
-				     sizeof(*arr), GFP_KERNEL);
-		if (!arr)
-			return NULL;
-
-		sr->pool.arr = arr;
-		sr->pool.allocated += sr->pool.grow_step;
-	}
-
-	return &sr->pool.arr[sr->pool.used++];
-}
-
 static bool compatible_entries(const struct xe_reg_sr_entry *e1,
 			       const struct xe_reg_sr_entry *e2)
 {
@@ -111,7 +92,7 @@ int xe_reg_sr_add(struct xe_reg_sr *sr,
 		return 0;
 	}
 
-	pentry = alloc_entry(sr);
+	pentry = kmalloc(sizeof(*pentry), GFP_KERNEL);
 	if (!pentry) {
 		ret = -ENOMEM;
 		goto fail;
drivers/gpu/drm/xe/xe_reg_sr_types.h +0 -6
index ad48a52b824a..ebe11f237fa2 100644
@@ -20,12 +20,6 @@ struct xe_reg_sr_entry {
 };
 
 struct xe_reg_sr {
-	struct {
-		struct xe_reg_sr_entry *arr;
-		unsigned int used;
-		unsigned int allocated;
-		unsigned int grow_step;
-	} pool;
 	struct xarray xa;
 	const char *name;
 
drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c +1 -1
index c8ec74f089f3..6e41ddaa24d6 100644
@@ -339,7 +339,7 @@ tegra241_cmdqv_get_cmdq(struct arm_smmu_device *smmu,
 	 * one CPU at a time can enter the process, while the others
 	 * will be spinning at the same lock.
 	 */
-	lidx = smp_processor_id() % cmdqv->num_lvcmdqs_per_vintf;
+	lidx = raw_smp_processor_id() % cmdqv->num_lvcmdqs_per_vintf;
 	vcmdq = vintf->lvcmdqs[lidx];
 	if (!vcmdq || !READ_ONCE(vcmdq->enabled))
 		return NULL;
drivers/iommu/intel/cache.c +27 -7
index e5b89f728ad3..09694cca8752 100644
@@ -105,12 +105,35 @@ static void cache_tag_unassign(struct dmar_domain *domain, u16 did,
 	spin_unlock_irqrestore(&domain->cache_lock, flags);
 }
 
+/* domain->qi_batch will be freed in iommu_free_domain() path. */
+static int domain_qi_batch_alloc(struct dmar_domain *domain)
+{
+	unsigned long flags;
+	int ret = 0;
+
+	spin_lock_irqsave(&domain->cache_lock, flags);
+	if (domain->qi_batch)
+		goto out_unlock;
+
+	domain->qi_batch = kzalloc(sizeof(*domain->qi_batch), GFP_ATOMIC);
+	if (!domain->qi_batch)
+		ret = -ENOMEM;
+out_unlock:
+	spin_unlock_irqrestore(&domain->cache_lock, flags);
+
+	return ret;
+}
+
 static int __cache_tag_assign_domain(struct dmar_domain *domain, u16 did,
 				     struct device *dev, ioasid_t pasid)
 {
 	struct device_domain_info *info = dev_iommu_priv_get(dev);
 	int ret;
 
+	ret = domain_qi_batch_alloc(domain);
+	if (ret)
+		return ret;
+
 	ret = cache_tag_assign(domain, did, dev, pasid, CACHE_TAG_IOTLB);
 	if (ret || !info->ats_enabled)
 		return ret;
@@ -139,6 +162,10 @@ static int __cache_tag_assign_parent_domain(struct dmar_domain *domain, u16 did,
 	struct device_domain_info *info = dev_iommu_priv_get(dev);
 	int ret;
 
+	ret = domain_qi_batch_alloc(domain);
+	if (ret)
+		return ret;
+
 	ret = cache_tag_assign(domain, did, dev, pasid, CACHE_TAG_NESTING_IOTLB);
 	if (ret || !info->ats_enabled)
 		return ret;
@@ -190,13 +217,6 @@ int cache_tag_assign_domain(struct dmar_domain *domain,
 	u16 did = domain_get_id_for_dev(domain, dev);
 	int ret;
 
-	/* domain->qi_bach will be freed in iommu_free_domain() path. */
-	if (!domain->qi_batch) {
-		domain->qi_batch = kzalloc(sizeof(*domain->qi_batch), GFP_KERNEL);
-		if (!domain->qi_batch)
-			return -ENOMEM;
-	}
-
 	ret = __cache_tag_assign_domain(domain, did, dev, pasid);
 	if (ret || domain->domain.type != IOMMU_DOMAIN_NESTED)
 		return ret;
drivers/iommu/intel/iommu.c +3 -1
index a167d59101ae..cc23cfcdeb2d 100644
@@ -3372,6 +3372,9 @@ void device_block_translation(struct device *dev)
 	struct intel_iommu *iommu = info->iommu;
 	unsigned long flags;
 
+	if (info->domain)
+		cache_tag_unassign_domain(info->domain, dev, IOMMU_NO_PASID);
+
 	iommu_disable_pci_caps(info);
 	if (!dev_is_real_dma_subdevice(dev)) {
 		if (sm_supported(iommu))
@@ -3388,7 +3391,6 @@ void device_block_translation(struct device *dev)
 	list_del(&info->link);
 	spin_unlock_irqrestore(&info->domain->lock, flags);
 
-	cache_tag_unassign_domain(info->domain, dev, IOMMU_NO_PASID);
 	domain_detach_iommu(info->domain, iommu);
 	info->domain = NULL;
 }
drivers/md/dm-zoned-reclaim.c +3 -3
index d58db9a27e6c..76e2c6868548 100644
@@ -76,9 +76,9 @@ static int dmz_reclaim_align_wp(struct dmz_reclaim *zrc, struct dm_zone *zone,
 	 * pointer and the requested position.
 	 */
 	nr_blocks = block - wp_block;
-	ret = blkdev_issue_zeroout(dev->bdev,
-				   dmz_start_sect(zmd, zone) + dmz_blk2sect(wp_block),
-				   dmz_blk2sect(nr_blocks), GFP_NOIO, 0);
+	ret = blk_zone_issue_zeroout(dev->bdev,
+			dmz_start_sect(zmd, zone) + dmz_blk2sect(wp_block),
+			dmz_blk2sect(nr_blocks), GFP_NOIO);
 	if (ret) {
 		dmz_dev_err(dev,
 			    "Align zone %u wp %llu to %llu (wp+%u) blocks failed %d",
drivers/net/bonding/bond_main.c +5 -5
index 15e0f14d0d49..4d73abae503d 100644
@@ -1520,9 +1520,7 @@ static netdev_features_t bond_fix_features(struct net_device *dev,
 	struct slave *slave;
 
 	mask = features;
-
-	features &= ~NETIF_F_ONE_FOR_ALL;
-	features |= NETIF_F_ALL_FOR_ALL;
+	features = netdev_base_features(features);
 
 	bond_for_each_slave(bond, slave, iter) {
 		features = netdev_increment_features(features,
@@ -1536,6 +1534,7 @@ static netdev_features_t bond_fix_features(struct net_device *dev,
 
 #define BOND_VLAN_FEATURES	(NETIF_F_HW_CSUM | NETIF_F_SG | \
 				 NETIF_F_FRAGLIST | NETIF_F_GSO_SOFTWARE | \
+				 NETIF_F_GSO_ENCAP_ALL | \
 				 NETIF_F_HIGHDMA | NETIF_F_LRO)
 
 #define BOND_ENC_FEATURES	(NETIF_F_HW_CSUM | NETIF_F_SG | \
@@ -1564,8 +1563,9 @@ static void bond_compute_features(struct bonding *bond)
 
 	if (!bond_has_slaves(bond))
 		goto done;
-	vlan_features &= NETIF_F_ALL_FOR_ALL;
-	mpls_features &= NETIF_F_ALL_FOR_ALL;
+
+	vlan_features = netdev_base_features(vlan_features);
+	mpls_features = netdev_base_features(mpls_features);
 
 	bond_for_each_slave(bond, slave, iter) {
 		vlan_features = netdev_increment_features(vlan_features,
drivers/net/dsa/microchip/ksz_common.c +18 -24

78 lines not on this page · raw message

drivers/net/dsa/ocelot/felix_vsc9959.c +11 -6
index 0102a82e88cc..940f1b71226d 100644
@@ -24,7 +24,7 @@
 #define VSC9959_NUM_PORTS		6
 
 #define VSC9959_TAS_GCL_ENTRY_MAX	63
-#define VSC9959_TAS_MIN_GATE_LEN_NS	33
+#define VSC9959_TAS_MIN_GATE_LEN_NS	35
 #define VSC9959_VCAP_POLICER_BASE	63
 #define VSC9959_VCAP_POLICER_MAX	383
 #define VSC9959_SWITCH_PCI_BAR		4
@@ -1056,11 +1056,15 @@ static void vsc9959_mdio_bus_free(struct ocelot *ocelot)
 	mdiobus_free(felix->imdio);
 }
 
-/* The switch considers any frame (regardless of size) as eligible for
- * transmission if the traffic class gate is open for at least 33 ns.
+/* The switch considers any frame (regardless of size) as eligible
+ * for transmission if the traffic class gate is open for at least
+ * VSC9959_TAS_MIN_GATE_LEN_NS.
+ *
  * Overruns are prevented by cropping an interval at the end of the gate time
- * slot for which egress scheduling is blocked, but we need to still keep 33 ns
- * available for one packet to be transmitted, otherwise the port tc will hang.
+ * slot for which egress scheduling is blocked, but we need to still keep
+ * VSC9959_TAS_MIN_GATE_LEN_NS available for one packet to be transmitted,
+ * otherwise the port tc will hang.
+ *
  * This function returns the size of a gate interval that remains available for
  * setting the guard band, after reserving the space for one egress frame.
  */
@@ -1303,7 +1307,8 @@ static void vsc9959_tas_guard_bands_update(struct ocelot *ocelot, int port)
 			 * per-tc static guard band lengths, so it reduces the
 			 * useful gate interval length. Therefore, be careful
 			 * to calculate a guard band (and therefore max_sdu)
-			 * that still leaves 33 ns available in the time slot.
+			 * that still leaves VSC9959_TAS_MIN_GATE_LEN_NS
+			 * available in the time slot.
 			 */
 			max_sdu = div_u64(remaining_gate_len_ps, picos_per_byte);
 			/* A TC gate may be completely closed, which is a
drivers/net/ethernet/broadcom/bnxt/bnxt.c +6 -8
index 3d9ee91e1f8b..dafc5a4039cd 100644
@@ -1518,7 +1518,7 @@ static void bnxt_tpa_start(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
 		if (TPA_START_IS_IPV6(tpa_start1))
 			tpa_info->gso_type = SKB_GSO_TCPV6;
 		/* RSS profiles 1 and 3 with extract code 0 for inner 4-tuple */
-		else if (cmp_type == CMP_TYPE_RX_L2_TPA_START_CMP &&
+		else if (!BNXT_CHIP_P4_PLUS(bp) &&
 			 TPA_START_HASH_TYPE(tpa_start) == 3)
 			tpa_info->gso_type = SKB_GSO_TCPV6;
 		tpa_info->rss_hash =
@@ -2212,15 +2212,13 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
 		if (cmp_type == CMP_TYPE_RX_L2_V3_CMP) {
 			type = bnxt_rss_ext_op(bp, rxcmp);
 		} else {
-			u32 hash_type = RX_CMP_HASH_TYPE(rxcmp);
+			u32 itypes = RX_CMP_ITYPES(rxcmp);
 
-			/* RSS profiles 1 and 3 with extract code 0 for inner
-			 * 4-tuple
-			 */
-			if (hash_type != 1 && hash_type != 3)
-				type = PKT_HASH_TYPE_L3;
-			else
+			if (itypes == RX_CMP_FLAGS_ITYPE_TCP ||
+			    itypes == RX_CMP_FLAGS_ITYPE_UDP)
 				type = PKT_HASH_TYPE_L4;
+			else
+				type = PKT_HASH_TYPE_L3;
 		}
 		skb_set_hash(skb, le32_to_cpu(rxcmp->rx_cmp_rss_hash), type);
 	}
drivers/net/ethernet/broadcom/bnxt/bnxt.h +6 -3
index 69231e85140b..9e05704d9445 100644
@@ -267,6 +267,9 @@ struct rx_cmp {
 	(((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_RSS_HASH_TYPE) >>\
 	  RX_CMP_RSS_HASH_TYPE_SHIFT) & RSS_PROFILE_ID_MASK)
 
+#define RX_CMP_ITYPES(rxcmp)					\
+	(le32_to_cpu((rxcmp)->rx_cmp_len_flags_type) & RX_CMP_FLAGS_ITYPES_MASK)
+
 #define RX_CMP_V3_HASH_TYPE_LEGACY(rxcmp)				\
 	((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_V3_RSS_EXT_OP_LEGACY) >>\
 	 RX_CMP_V3_RSS_EXT_OP_LEGACY_SHIFT)
@@ -378,7 +381,7 @@ struct rx_agg_cmp {
 	u32 rx_agg_cmp_opaque;
 	__le32 rx_agg_cmp_v;
 	#define RX_AGG_CMP_V					(1 << 0)
-	#define RX_AGG_CMP_AGG_ID				(0xffff << 16)
+	#define RX_AGG_CMP_AGG_ID				(0x0fff << 16)
 	 #define RX_AGG_CMP_AGG_ID_SHIFT			 16
 	__le32 rx_agg_cmp_unused;
 };
@@ -416,7 +419,7 @@ struct rx_tpa_start_cmp {
 	 #define RX_TPA_START_CMP_V3_RSS_HASH_TYPE_SHIFT	 7
 	#define RX_TPA_START_CMP_AGG_ID				(0x7f << 25)
 	 #define RX_TPA_START_CMP_AGG_ID_SHIFT			 25
-	#define RX_TPA_START_CMP_AGG_ID_P5			(0xffff << 16)
+	#define RX_TPA_START_CMP_AGG_ID_P5			(0x0fff << 16)
 	 #define RX_TPA_START_CMP_AGG_ID_SHIFT_P5		 16
 	#define RX_TPA_START_CMP_METADATA1			(0xf << 28)
 	 #define RX_TPA_START_CMP_METADATA1_SHIFT		 28
@@ -540,7 +543,7 @@ struct rx_tpa_end_cmp {
 	 #define RX_TPA_END_CMP_PAYLOAD_OFFSET_SHIFT		 16
 	#define RX_TPA_END_CMP_AGG_ID				(0x7f << 25)
 	 #define RX_TPA_END_CMP_AGG_ID_SHIFT			 25
-	#define RX_TPA_END_CMP_AGG_ID_P5			(0xffff << 16)
+	#define RX_TPA_END_CMP_AGG_ID_P5			(0x0fff << 16)
 	 #define RX_TPA_END_CMP_AGG_ID_SHIFT_P5			 16
 
 	__le32 rx_tpa_end_cmp_tsdelta;
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h +1 -1
index bbf7641a0fc7..7e13cd69f68a 100644
@@ -2077,7 +2077,7 @@ void t4_idma_monitor(struct adapter *adapter,
 		     struct sge_idma_monitor_state *idma,
 		     int hz, int ticks);
 int t4_set_vf_mac_acl(struct adapter *adapter, unsigned int vf,
-		      unsigned int naddr, u8 *addr);
+		      u8 start, unsigned int naddr, u8 *addr);
 void t4_tp_pio_read(struct adapter *adap, u32 *buff, u32 nregs,
 		    u32 start_index, bool sleep_ok);
 void t4_tp_tm_pio_read(struct adapter *adap, u32 *buff, u32 nregs,
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +1 -1
index 2418645c8823..fb3933fbb842 100644
@@ -3246,7 +3246,7 @@ static int cxgb4_mgmt_set_vf_mac(struct net_device *dev, int vf, u8 *mac)
 
 	dev_info(pi->adapter->pdev_dev,
 		 "Setting MAC %pM on VF %d\n", mac, vf);
-	ret = t4_set_vf_mac_acl(adap, vf + 1, 1, mac);
+	ret = t4_set_vf_mac_acl(adap, vf + 1, pi->lport, 1, mac);
 	if (!ret)
 		ether_addr_copy(adap->vfinfo[vf].vf_mac_addr, mac);
 	return ret;
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c +3 -2
index 76de55306c4d..175bf9b13058 100644
@@ -10215,11 +10215,12 @@ int t4_load_cfg(struct adapter *adap, const u8 *cfg_data, unsigned int size)
  *	t4_set_vf_mac_acl - Set MAC address for the specified VF
  *	@adapter: The adapter
  *	@vf: one of the VFs instantiated by the specified PF
+ *	@start: The start port id associated with specified VF
  *	@naddr: the number of MAC addresses
  *	@addr: the MAC address(es) to be set to the specified VF
  */
 int t4_set_vf_mac_acl(struct adapter *adapter, unsigned int vf,
-		      unsigned int naddr, u8 *addr)
+		      u8 start, unsigned int naddr, u8 *addr)
 {
 	struct fw_acl_mac_cmd cmd;
 
@@ -10234,7 +10235,7 @@ int t4_set_vf_mac_acl(struct adapter *adapter, unsigned int vf,
 	cmd.en_to_len16 = cpu_to_be32((unsigned int)FW_LEN16(cmd));
 	cmd.nmac = naddr;
 
-	switch (adapter->pf) {
+	switch (start) {
 	case 3:
 		memcpy(cmd.macaddr3, addr, sizeof(cmd.macaddr3));
 		break;
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_domain.c +3 -1
index 3d74109f8230..49f22cad92bf 100644
@@ -297,7 +297,9 @@ dr_domain_add_vport_cap(struct mlx5dr_domain *dmn, u16 vport)
 	if (ret) {
 		mlx5dr_dbg(dmn, "Couldn't insert new vport into xarray (%d)\n", ret);
 		kvfree(vport_caps);
-		return ERR_PTR(ret);
+		if (ret == -EBUSY)
+			return ERR_PTR(-EBUSY);
+		return NULL;
 	}
 
 	return vport_caps;
drivers/net/ethernet/microchip/sparx5/sparx5_main.c +5 -6
index b64c814eac11..0c4c75b3682f 100644
@@ -693,12 +693,11 @@ static int sparx5_start(struct sparx5 *sparx5)
 	err = -ENXIO;
 	if (sparx5->fdma_irq >= 0) {
 		if (GCB_CHIP_ID_REV_ID_GET(sparx5->chip_id) > 0)
-			err = devm_request_threaded_irq(sparx5->dev,
-							sparx5->fdma_irq,
-							NULL,
-							sparx5_fdma_handler,
-							IRQF_ONESHOT,
-							"sparx5-fdma", sparx5);
+			err = devm_request_irq(sparx5->dev,
+					       sparx5->fdma_irq,
+					       sparx5_fdma_handler,
+					       0,
+					       "sparx5-fdma", sparx5);
 		if (!err)
 			err = sparx5_fdma_start(sparx5);
 		if (err)
drivers/net/ethernet/microchip/sparx5/sparx5_port.c +1 -1
index 062e486c002c..672508efce5c 100644
@@ -1119,7 +1119,7 @@ int sparx5_port_init(struct sparx5 *sparx5,
 	spx5_inst_rmw(DEV10G_MAC_MAXLEN_CFG_MAX_LEN_SET(ETH_MAXLEN),
 		      DEV10G_MAC_MAXLEN_CFG_MAX_LEN,
 		      devinst,
-		      DEV10G_MAC_ENA_CFG(0));
+		      DEV10G_MAC_MAXLEN_CFG(0));
 
 	/* Handle Signal Detect in 10G PCS */
 	spx5_inst_wr(PCS10G_BR_PCS_SD_CFG_SD_POL_SET(sd_pol) |
drivers/net/ethernet/microsoft/mana/gdma_main.c +4 -2
index ca4ed58f1206..0c2ba2fa88c4 100644
@@ -1315,7 +1315,7 @@ static int mana_gd_setup_irqs(struct pci_dev *pdev)
 				   GFP_KERNEL);
 	if (!gc->irq_contexts) {
 		err = -ENOMEM;
-		goto free_irq_vector;
+		goto free_irq_array;
 	}
 
 	for (i = 0; i < nvec; i++) {
@@ -1372,6 +1372,7 @@ static int mana_gd_setup_irqs(struct pci_dev *pdev)
 	gc->max_num_msix = nvec;
 	gc->num_msix_usable = nvec;
 	cpus_read_unlock();
+	kfree(irqs);
 	return 0;
 
 free_irq:
@@ -1384,8 +1385,9 @@ static int mana_gd_setup_irqs(struct pci_dev *pdev)
 	}
 
 	kfree(gc->irq_contexts);
-	kfree(irqs);
 	gc->irq_contexts = NULL;
+free_irq_array:
+	kfree(irqs);
 free_irq_vector:
 	cpus_read_unlock();
 	pci_free_irq_vectors(pdev);
drivers/net/ethernet/mscc/ocelot_ptp.c +129 -80

21 lines not on this page · raw message

drivers/net/ethernet/qualcomm/qca_spi.c +11 -15
index 8f7ce6b51a1c..6b4b40c6e1fe 100644

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

drivers/net/ethernet/qualcomm/qca_spi.h +0 -1
index 8f4808695e82..0831cefc58b8 100644

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

drivers/net/ethernet/renesas/rswitch.c +53 -32

85 lines not on this page · raw message

drivers/net/ethernet/renesas/rswitch.h +7 -7
index 72e3ff596d31..e020800dcc57 100644

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

drivers/net/team/team_core.c +6 -5
index 18191d5a8bd4..6ace5a74cddb 100644

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

drivers/net/virtio_net.c +21 -3
index c897afef0b41..60027b439021 100644

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

drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c +1 -1
index a7a10e716e65..e96ddaeeeeff 100644

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

drivers/net/xen-netfront.c +4 -1
index 4265c1cd0ff7..63fe51d0e64d 100644

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

drivers/ptp/ptp_kvm_x86.c +3 -3
index 617c8d6706d3..6cea4fe39bcf 100644

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

drivers/regulator/axp20x-regulator.c +24 -12
index a8e91d9d028b..945d2917b91b 100644

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

drivers/spi/spi-aspeed-smc.c +6 -4
index bbd417c55e7f..b0e3f307b283 100644

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

drivers/spi/spi-rockchip.c +14 -0
index 0bb33c43b1b4..40a64a598a74 100644

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

drivers/tty/serial/sh-sci.c +29 -0
index b80e9a528e17..bdf17eafd359 100644

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

drivers/ufs/core/ufshcd.c +1 -0
index cfebe4a1af9e..bc13133efaa5 100644

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

drivers/usb/core/hcd.c +7 -1
index 500dc35e6477..0b2490347b9f 100644

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

drivers/usb/dwc2/hcd.c +8 -11
index cb54390e7de4..8c3941ecaaf5 100644

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

drivers/usb/dwc3/dwc3-imx8mp.c +16 -14
index 64c0cd1995aa..e99faf014c78 100644

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

drivers/usb/dwc3/dwc3-xilinx.c +4 -1
index b5e5be424ce9..96c87dc4757f 100644

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

drivers/usb/gadget/function/f_midi2.c +5 -1
index 8285df9ed6fd..8c9d0074db58 100644

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

drivers/usb/gadget/function/u_serial.c +6 -3
index 0a8c05b2746b..53d9fc41acc5 100644

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

drivers/usb/host/ehci-sh.c +7 -2
index d31d9506e41a..7c2b2339e674 100644

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

drivers/usb/host/max3421-hcd.c +11 -5
index 9fe4f48b1898..0881fdd1823e 100644

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

drivers/usb/misc/onboard_usb_dev.c +3 -1
index 75dfdca04ff1..27b0a6e18267 100644

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

drivers/usb/typec/anx7411.c +41 -25

66 lines not on this page · raw message

drivers/usb/typec/ucsi/ucsi.c +4 -2
index e0f3925e401b..7a3f0f5af38f 100644

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

drivers/virtio/virtio_ring.c +5 -1
index 98374ed7c577..0112742e4504 100644

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

fs/smb/client/inode.c +4 -1
index b35fe1075503..fafc07e38663 100644

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

fs/smb/server/auth.c +2 -0
index 611716bc8f27..8892177e500f 100644

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

fs/smb/server/mgmt/user_session.c +5 -1
index ad02fe555fda..d960ddcbba16 100644

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

fs/smb/server/server.c +2 -2
index c8cc6fa6fc3e..698af37e988d 100644

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

fs/smb/server/smb2pdu.c +14 -13
index d0836d710f18..7d01dd313351 100644

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

fs/xfs/libxfs/xfs_btree.c +25 -8
index a5c4af148853..134d87b3489a 100644

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

fs/xfs/libxfs/xfs_btree.h +1 -1
index 10b7ddc3b2b3..91e0b6dac31e 100644

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

fs/xfs/libxfs/xfs_ialloc_btree.c +3 -1
index 401b42d52af6..6aa43f3fc68e 100644

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

fs/xfs/libxfs/xfs_symlink_remote.c +3 -1
index f228127a88ff..fb47a76ead18 100644

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

fs/xfs/scrub/agheader.c +3 -3
index f8e5b67128d2..da30f926cbe6 100644

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

fs/xfs/scrub/agheader_repair.c +3 -3
index 2f98d90d7fd6..69b003259784 100644

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

fs/xfs/scrub/fscounters.c +1 -1
index 1d3e98346933..454f17595c9c 100644

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

fs/xfs/scrub/ialloc.c +2 -2
index 750d7b0cd25a..a59c44e5903a 100644

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

fs/xfs/scrub/refcount.c +1 -1
index d0c7d4a29c0f..cccf39d917a0 100644

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

fs/xfs/scrub/symlink_repair.c +2 -1
index d015a86ef460..953ce7be78dc 100644

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

fs/xfs/scrub/trace.h +1 -1
index c886d5d0eb02..da773fee8638 100644

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

fs/xfs/xfs_bmap_util.c +1 -1
index edaf193dbd5c..95f8a09f96ae 100644

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

fs/xfs/xfs_file.c +8 -0
index b19916b11fd5..aba54e3c5836 100644

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

fs/xfs/xfs_rtalloc.c +1 -1
index 3a2005a1e673..8caa55b81674 100644

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

fs/xfs/xfs_trans.c +7 -12
index bdf3704dc301..30e03342287a 100644

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

include/linux/blkdev.h +3 -2
index 6b4bc85f4999..b7f327ce797e 100644

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

include/linux/bpf.h +5 -14
index cbe235091246..a7af13f550e0 100644

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

include/linux/compiler.h +26 -11
index 4d4e23b6e3e7..2d962dade9fa 100644

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

include/linux/dsa/ocelot.h +1 -0
index 6fbfbde68a37..620a3260fc08 100644

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

include/linux/netdev_features.h +7 -0
index 66e7d26b70a4..11be70a7929f 100644

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

include/linux/static_call.h +6 -0
index 141e6b176a1b..78a77a4ae0ea 100644

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

include/linux/virtio.h +2 -1
index 306137a15d07..73c8922e69e0 100644

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

include/net/bluetooth/bluetooth.h +1 -9
index f66bc85c6411..435250c72d56 100644

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

include/net/lapb.h +1 -1
index 124ee122f2c8..6c07420644e4 100644

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

include/net/mac80211.h +1 -3
index 333e0fae6796..5b712582f9a9 100644

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

include/net/net_namespace.h +1 -0
index e67b483cc8bb..9398c8f49953 100644

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

include/net/netfilter/nf_tables.h +0 -4
index 066a3ea33b12..91ae20cb7648 100644

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

include/soc/mscc/ocelot.h +0 -2
index 462c653e1017..2db9ae0575b6 100644

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

kernel/bpf/btf.c +145 -4

149 lines not on this page · raw message

kernel/bpf/verifier.c +7 -72

79 lines not on this page · raw message

kernel/sched/deadline.c +1 -1
index 40a1ad4493b4..fc6f41ac33eb 100644

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

kernel/static_call_inline.c +1 -1
index 5259cda486d0..bb7d066a7c39 100644

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

kernel/trace/bpf_trace.c +11 -0
index 792dc35414a3..50881898e758 100644

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

kernel/trace/trace_uprobe.c +5 -1
index b30fc8fcd095..b085a8a164ea 100644

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

mm/slub.c +18 -3
index 15ba89fef89a..b9447a955f61 100644

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

net/batman-adv/translation-table.c +40 -18

58 lines not on this page · raw message

net/bluetooth/hci_event.c +11 -22
index 2b5ba8acd1d8..388d46c6a043 100644

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

net/bluetooth/hci_sock.c +7 -7
index 2272e1849ebd..022b86797acd 100644

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

net/bluetooth/iso.c +51 -18

69 lines not on this page · raw message

net/bluetooth/l2cap_sock.c +11 -9
index 18e89e764f3b..3d2553dcdb1b 100644

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

net/bluetooth/rfcomm/sock.c +4 -5
index 40766f8119ed..913402806fa0 100644

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

net/bluetooth/sco.c +21 -19
index 1c7252a36866..b872a2ca3ff3 100644

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

net/core/net_namespace.c +19 -1
index e39479f1c9a4..70fea7c1a4b0 100644

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

net/core/sock_map.c +3 -3
index 78347d7d25ef..f1b9b3958792 100644

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

net/dsa/tag_ocelot_8021q.c +1 -1
index 8e8b1bef6af6..11ea8cfd6266 100644

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

net/ipv4/tcp_output.c +4 -2
index 68804fd01daf..8efc58716ce9 100644

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

net/mac80211/cfg.c +4 -5
index 6dfc61a9acd4..1b1bf044378d 100644

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

net/mac80211/ieee80211_i.h +40 -9

49 lines not on this page · raw message

net/mac80211/iface.c +4 -8
index 6ef0990d3d29..af9055252e6d 100644

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

net/mac80211/mlme.c +0 -2
index 0303972c23e4..111066928b96 100644

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

net/mac80211/util.c +3 -20
index f94faa86ba8a..b4814e97cf74 100644

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

net/netfilter/nf_tables_api.c +15 -17
index 4a137afaf0b8..0c5ff4afc370 100644

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

net/netfilter/xt_IDLETIMER.c +28 -24

52 lines not on this page · raw message

net/sched/sch_netem.c +16 -6
index 39382ee1e331..3b519adc0125 100644

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

net/tipc/udp_media.c +6 -1
index b7e25e7e9933..108a4cc2e001 100644

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

net/unix/af_unix.c +1 -0
index 001ccc55ef0f..6b1762300443 100644

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

net/wireless/nl80211.c +1 -1
index 9b1b9dc5a7eb..1e78f575fb56 100644

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

net/wireless/sme.c +1 -0
index 431da30817a6..268171600087 100644

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

rust/Makefile +14 -1
index b5e0a73b78f3..9f59baacaf77 100644

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

sound/core/control_led.c +10 -4
index 65a1ebe87776..e33dfcf863cf 100644

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

sound/pci/hda/patch_realtek.c +1 -0
index 973671e0cdb0..192fc75b51e6 100644

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

sound/soc/amd/yc/acp6x-mach.c +9 -4
index e38c5885dadf..ecf57a6cb7c3 100644

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

sound/soc/codecs/tas2781-i2c.c +1 -1
index 12d093437ba9..1b2f55030c39 100644

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

sound/soc/fsl/fsl_spdif.c +1 -1
index b6ff04f7138a..ee946e0d3f49 100644

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

sound/soc/fsl/fsl_xcvr.c +1 -1
index beede7344efd..4341269eb977 100644

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

sound/soc/intel/boards/sof_sdw.c +6 -2
index a58842a8c8a6..db57292c00ca 100644

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

sound/usb/quirks.c +2 -0
index 00101875d9a8..a0767de7f1b7 100644

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

tools/lib/perf/evlist.c +16 -2
index c6d67fc9e57e..83c43dc13313 100644

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

tools/objtool/check.c +6 -3
index 6604f5d038aa..f0d8796b984a 100644

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

tools/perf/builtin-ftrace.c +2 -1
index 272d3c70810e..a56cf8b0a7d4 100644

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

tools/perf/util/build-id.c +2 -2
index 8982f68e7230..e763e8d99a43 100644

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

tools/perf/util/machine.c +2 -0
index 4f0ac998b0cc..27d5345d2b30 100644

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

tools/testing/selftests/arm64/abi/syscall-abi-asm.S +15 -17
index df3230fdac39..66ab2e0bae5f 100644

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

tools/testing/selftests/bpf/progs/test_tp_btf_nullable.c +1 -5
index 5aaf2b065f86..bba3e37f749b 100644

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

tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c +2 -2
index a570e48b917a..bfc3bf18fed4 100644

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

tools/testing/selftests/bpf/progs/verifier_d_path.c +2 -2
index ec79cbcfde91..87e51a215558 100644

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

tools/testing/selftests/drivers/net/mlxsw/sharedbuffer.sh +40 -15

55 lines not on this page · raw message

tools/testing/selftests/net/netfilter/rpath.sh +16 -2
index 4485fd7675ed..86ec4e68594d 100755

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.