Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kernel-source for openSUSE:Factory 
checked in at 2025-06-24 20:45:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kernel-source (Old)
 and      /work/SRC/openSUSE:Factory/.kernel-source.new.7067 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kernel-source"

Tue Jun 24 20:45:34 2025 rev:786 rq:1287650 version:6.15.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/kernel-source/dtb-aarch64.changes        
2025-06-13 18:42:33.187767195 +0200
+++ /work/SRC/openSUSE:Factory/.kernel-source.new.7067/dtb-aarch64.changes      
2025-06-24 20:45:52.736170541 +0200
@@ -1,0 +2,1450 @@
+Sat Jun 21 21:18:05 CEST 2025 - jsl...@suse.cz
+
+- PCI: pciehp: Ignore belated Presence Detect Changed caused by
+  DPC (git-fixes).
+- io_uring/sqpoll: don't put task_struct on tctx setup failure
+  (git-fixes).
+- wifi: remove zero-length arrays (git-fixes).
+- ptp: fix breakage after ptp_vclock_in_use() rework (git-fixes).
+- commit 959cb8f
+
+-------------------------------------------------------------------
+Sat Jun 21 20:59:36 CEST 2025 - jsl...@suse.cz
+
+- Linux 6.15.3 (bsc#1012628).
+- tools/x86/kcpuid: Fix error handling (bsc#1012628).
+- x86/idle: Remove MFENCEs for X86_BUG_CLFLUSH_MONITOR in
+  mwait_idle_with_hints() and prefer_mwait_c1_over_halt()
+  (bsc#1012628).
+- crypto: iaa - Do not clobber req->base.data (bsc#1012628).
+- crypto: sun8i-ce-hash - fix error handling in
+  sun8i_ce_hash_run() (bsc#1012628).
+- sched: Fix trace_sched_switch(.prev_state) (bsc#1012628).
+- crypto: ecdsa - Fix enc/dec size reported by KEYCTL_PKEY_QUERY
+  (bsc#1012628).
+- crypto: ecdsa - Fix NIST P521 key size reported by
+  KEYCTL_PKEY_QUERY (bsc#1012628).
+- crypto: zynqmp-sha - Add locking (bsc#1012628).
+- kunit: qemu_configs: sparc: Explicitly enable CONFIG_SPARC32=y
+  (bsc#1012628).
+- kunit: qemu_configs: Disable faulting tests on 32-bit SPARC
+  (bsc#1012628).
+- perf/x86/amd/uncore: Remove unused 'struct amd_uncore_ctx::node'
+  member (bsc#1012628).
+- perf/x86/amd/uncore: Prevent UMC counters from saturating
+  (bsc#1012628).
+- gfs2: replace sd_aspace with sd_inode (bsc#1012628).
+- gfs2: gfs2_create_inode error handling fix (bsc#1012628).
+- gfs2: Move gfs2_dinode_dealloc (bsc#1012628).
+- gfs2: Move GIF_ALLOC_FAILED check out of gfs2_ea_dealloc
+  (bsc#1012628).
+- gfs2: deallocate inodes in gfs2_create_inode (bsc#1012628).
+- perf/core: Fix broken throttling when max_samples_per_tick=1
+  (bsc#1012628).
+- crypto: sun8i-ce-cipher - fix error handling in
+  sun8i_ce_cipher_prepare() (bsc#1012628).
+- crypto: sun8i-ss - do not use sg_dma_len before calling DMA
+  functions (bsc#1012628).
+- powerpc: do not build ppc_save_regs.o always (bsc#1012628).
+- powerpc/crash: Fix non-smp kexec preparation (bsc#1012628).
+- sched/core: Tweak wait_task_inactive() to force dequeue
+  sched_delayed tasks (bsc#1012628).
+- x86/microcode/AMD: Do not return error when microcode update
+  is not necessary (bsc#1012628).
+- selftests: coredump: Properly initialize pointer (bsc#1012628).
+- selftests: coredump: Fix test failure for slow machines
+  (bsc#1012628).
+- selftests: coredump: Raise timeout to 2 minutes (bsc#1012628).
+- crypto: sun8i-ce - undo runtime PM changes during driver removal
+  (bsc#1012628).
+- blk-throttle: Fix wrong tg->[bytes/io]_disp update in
+  __tg_update_carryover() (bsc#1012628).
+- x86/cpu: Sanitize CPUID(0x80000000) output (bsc#1012628).
+- x86/insn: Fix opcode map (!REX2) superscript tags (bsc#1012628).
+- brd: fix aligned_sector from brd_do_discard() (bsc#1012628).
+- brd: fix discard end sector (bsc#1012628).
+- kselftest: cpufreq: Get rid of double suspend in rtcwake case
+  (bsc#1012628).
+- crypto: marvell/cesa - Handle zero-length skcipher requests
+  (bsc#1012628).
+- crypto: marvell/cesa - Avoid empty transfer descriptor
+  (bsc#1012628).
+- erofs: fix file handle encoding for 64-bit NIDs (bsc#1012628).
+- erofs: avoid using multiple devices with different type
+  (bsc#1012628).
+- powerpc/pseries/iommu: Fix kmemleak in TCE table userspace view
+  (bsc#1012628).
+- btrfs: scrub: update device stats when an error is detected
+  (bsc#1012628).
+- btrfs: scrub: fix a wrong error type when metadata bytenr
+  mismatches (bsc#1012628).
+- btrfs: fix invalid data space release when truncating block
+  in NOCOW mode (bsc#1012628).
+- btrfs: fix wrong start offset for delalloc space release during
+  mmap write (bsc#1012628).
+- rcu/cpu_stall_cputime: fix the hardirq count for x86
+  architecture (bsc#1012628).
+- crypto: lrw - Only add ecb if it is not already there
+  (bsc#1012628).
+- crypto: xts - Only add ecb if it is not already there
+  (bsc#1012628).
+- crypto: sun8i-ce - move fallback ahash_request to the end of
+  the struct (bsc#1012628).
+- sched/fair: Fixup wake_up_sync() vs DELAYED_DEQUEUE
+  (bsc#1012628).
+- kunit: Fix wrong parameter to kunit_deactivate_static_stub()
+  (bsc#1012628).
+- gfs2: Move gfs2_trans_add_databufs (bsc#1012628).
+- gfs2: Don't start unnecessary transactions during log flush
+  (bsc#1012628).
+- crypto: api - Redo lookup on EEXIST (bsc#1012628).
+- ACPICA: exserial: don't forget to handle FFixedHW opregions
+  for reading (bsc#1012628).
+- ASoC: tas2764: Reinit cache on part reset (bsc#1012628).
+- ASoC: tas2764: Enable main IRQs (bsc#1012628).
+- ASoC: mediatek: mt8195: Set ETDM1/2 IN/OUT to COMP_DUMMY()
+  (bsc#1012628).
+- EDAC/skx_common: Fix general protection fault (bsc#1012628).
+- EDAC/{skx_common,i10nm}: Fix the loss of saved RRL for HBM
+  pseudo channel 0 (bsc#1012628).
+- spi: tegra210-quad: Fix X1_X2_X4 encoding and support x4
+  transfers (bsc#1012628).
+- spi: tegra210-quad: remove redundant error handling code
+  (bsc#1012628).
+- spi: tegra210-quad: modify chip select (CS) deactivation
+  (bsc#1012628).
+- power: reset: at91-reset: Optimize at91_reset() (bsc#1012628).
+- PM: EM: Fix potential division-by-zero error in
+  em_compute_costs() (bsc#1012628).
+- power: supply: max77705: Fix workqueue error handling in probe
+  (bsc#1012628).
+- platform/chrome: cros_ec_typec: Set Pin Assignment E in DP
+  PORT VDO (bsc#1012628).
+- ASoC: SOF: ipc4-pcm: Adjust pipeline_list->pipelines allocation
+  type (bsc#1012628).
+- ASoC: Intel: avs: Fix kcalloc() sizes (bsc#1012628).
+- ASoC: SOF: amd: add missing acp descriptor field (bsc#1012628).
+- PM: wakeup: Delete space in the end of string shown by
+  pm_show_wakelocks() (bsc#1012628).
+- ACPI: resource: fix a typo for MECHREVO in
+  irq1_edge_low_force_override[] (bsc#1012628).
+- PM: runtime: Add new devm functions (bsc#1012628).
+- spi: atmel-quadspi: Fix unbalanced pm_runtime by using devm_
+  API (bsc#1012628).
+- x86/mtrr: Check if fixed-range MTRRs exist in
+  mtrr_save_fixed_ranges() (bsc#1012628).
+- PM: sleep: Print PM debug messages during hibernation
+  (bsc#1012628).
+- spi: spi-qpic-snand: use kmalloc() for OOB buffer allocation
+  (bsc#1012628).
+- spi: spi-qpic-snand: validate user/chip specific ECC properties
+  (bsc#1012628).
+- thermal/drivers/mediatek/lvts: Fix debugfs unregister on failure
+  (bsc#1012628).
+- ACPI: OSI: Stop advertising support for "3.0 _SCP Extensions"
+  (bsc#1012628).
+- ACPI: thermal: Execute _SCP before reading trip points
+  (bsc#1012628).
+- spi: sh-msiof: Fix maximum DMA transfer size (bsc#1012628).
+- ASoC: apple: mca: Constrain channels according to TDM mask
+  (bsc#1012628).
+- EDAC/bluefield: Don't use bluefield_edac_readl() result on error
+  (bsc#1012628).
+- ALSA: core: fix up bus match const issues (bsc#1012628).
+- ACPI: platform_profile: Avoid initializing on non-ACPI platforms
+  (bsc#1012628).
+- drm/vmwgfx: Add seqno waiter for sync_files (bsc#1012628).
+- drm/vmwgfx: Add error path for xa_store in
+  vmw_bo_add_detached_resource (bsc#1012628).
+- drm: xlnx: zynqmp_dpsub: fix Kconfig dependencies for ASoC
+  (bsc#1012628).
+- drm/ci: fix merge request rules (bsc#1012628).
+- drm/vmwgfx: Fix dumb buffer leak (bsc#1012628).
+- drm/vc4: hdmi: Call HDMI hotplug helper on disconnect
+  (bsc#1012628).
+- drm/xe/d3cold: Set power state to D3Cold during s2idle/s3
+  (bsc#1012628).
+- drm/vc4: tests: Use return instead of assert (bsc#1012628).
+- drm/vc4: tests: Stop allocating the state in test init
+  (bsc#1012628).
+- drm/vc4: tests: Retry pv-muxing tests when EDEADLK
+  (bsc#1012628).
+- drm/amd/pp: Fix potential NULL pointer dereference in
+  atomctrl_initialize_mc_reg_table (bsc#1012628).
+- media: rkvdec: Fix frame size enumeration (bsc#1012628).
+- arm64/fpsimd: Avoid RES0 bits in the SME trap handler
+  (bsc#1012628).
+- arm64/fpsimd: Discard stale CPU state when handling SME traps
+  (bsc#1012628).
+- arm64/fpsimd: Don't corrupt FPMR when streaming mode changes
+  (bsc#1012628).
+- arm64/fpsimd: Avoid clobbering kernel FPSIMD state with SMSTOP
+  (bsc#1012628).
+- arm64/fpsimd: Reset FPMR upon exec() (bsc#1012628).
+- arm64/fpsimd: Fix merging of FPSIMD state during signal return
+  (bsc#1012628).
+- drm/panthor: Fix GPU_COHERENCY_ACE[_LITE] definitions
+  (bsc#1012628).
+- drm/panthor: Call panthor_gpu_coherency_init() after PM resume()
+  (bsc#1012628).
+- drm/panthor: Update panthor_mmu::irq::mask when needed
+  (bsc#1012628).
+- accel/amdxdna: Fix incorrect size of ERT_START_NPU commands
+  (bsc#1012628).
+- drm/panthor: Fix the panthor_gpu_coherency_init() error path
+  (bsc#1012628).
+- perf: arm-ni: Unregister PMUs on probe failure (bsc#1012628).
+- perf: arm-ni: Fix missing platform_set_drvdata() (bsc#1012628).
+- drm/amdgpu: Refine Cleaner Shader MEC firmware version for
+  GFX10.1.x GPUs (bsc#1012628).
+- drm/panel: samsung-sofef00: Drop s6e3fc2x01 support
+  (bsc#1012628).
+- drm/bridge: lt9611uxc: Fix an error handling path in
+  lt9611uxc_probe() (bsc#1012628).
+- drm/v3d: Associate a V3D tech revision to all supported devices
+  (bsc#1012628).
+- drm/v3d: fix client obtained from axi_ids on V3D 4.1
+  (bsc#1012628).
+- drm/v3d: client ranges from axi_ids are different with V3D 7.1
+  (bsc#1012628).
+- fs/ntfs3: handle hdr_first_de() return value (bsc#1012628).
+- fs/ntfs3: Add missing direct_IO in ntfs_aops_cmpr (bsc#1012628).
+- kunit/usercopy: Disable u64 test on 32-bit SPARC (bsc#1012628).
+- watchdog: exar: Shorten identity name to fit correctly
+  (bsc#1012628).
+- m68k: mac: Fix macintosh_config for Mac II (bsc#1012628).
+- firmware: psci: Fix refcount leak in psci_dt_init (bsc#1012628).
+- arm64: Support ARM64_VA_BITS=52 when setting
+  ARCH_MMAP_RND_BITS_MAX (bsc#1012628).
+- arm64/fpsimd: Avoid warning when sve_to_fpsimd() is unused
+  (bsc#1012628).
+- selftests/seccomp: fix syscall_restart test for arm compat
+  (bsc#1012628).
+- drm/msm/dpu: enable SmartDMA on SM8150 (bsc#1012628).
+- drm/msm/dpu: enable SmartDMA on SC8180X (bsc#1012628).
+- drm/msm/dpu: remove DSC feature bit for PINGPONG on MSM8937
+  (bsc#1012628).
+- drm/msm/dpu: remove DSC feature bit for PINGPONG on MSM8917
+  (bsc#1012628).
+- drm/msm/dpu: remove DSC feature bit for PINGPONG on MSM8953
+  (bsc#1012628).
+- drm: rcar-du: Fix memory leak in rcar_du_vsps_init()
+  (bsc#1012628).
+- drm/vkms: Adjust vkms_state->active_planes allocation type
+  (bsc#1012628).
+- drm/tegra: rgb: Fix the unbound reference count (bsc#1012628).
+- drm/amd/display: Don't check for NULL divisor in fixpt code
+  (bsc#1012628).
+- firmware: SDEI: Allow sdei initialization without ACPI_APEI_GHES
+  (bsc#1012628).
+- kselftest/arm64: fp-ptrace: Fix expected FPMR value when
+  PSTATE.SM is changed (bsc#1012628).
+- overflow: Fix direct struct member initialization in
+  _DEFINE_FLEX() (bsc#1012628).
+- scsi: qedf: Use designated initializer for struct
+  qed_fcoe_cb_ops (bsc#1012628).
+- media: synopsys: hdmirx: Renamed frame_idx to sequence
+  (bsc#1012628).
+- media: synopsys: hdmirx: Count dropped frames (bsc#1012628).
+- perf/amlogic: Replace smp_processor_id() with
+  raw_smp_processor_id() in meson_ddr_pmu_create() (bsc#1012628).
+- selftests/seccomp: fix negative_ENOSYS tracer tests on arm32
+  (bsc#1012628).
+- drm/msm/a6xx: Disable rgb565_predicator on Adreno 7c3
+  (bsc#1012628).
+- drm/msm/dp: Fix support of LTTPR initialization (bsc#1012628).
+- drm/msm/dp: Account for LTTPRs capabilities (bsc#1012628).
+- drm/msm/dp: Prepare for link training per-segment for LTTPRs
+  (bsc#1012628).
+- drm/i915/dp_mst: Use the correct connector while computing
+  the link BPP limit on MST (bsc#1012628).
+- drm/mediatek: mtk_drm_drv: Fix kobject put for mtk_mutex device
+  ptr (bsc#1012628).
+- drm/mediatek: Fix kobject put for component sub-drivers
+  (bsc#1012628).
+- drm/mediatek: mtk_drm_drv: Unbind secondary mmsys components
+  on err (bsc#1012628).
+- media: verisilicon: Free post processor buffers on error
+  (bsc#1012628).
+- svcrdma: Reduce the number of rdma_rw contexts per-QP
+  (bsc#1012628).
+- xen/x86: fix initial memory balloon target (bsc#1012628).
+- drm/xe/guc: Refactor GuC debugfs initialization (bsc#1012628).
+- drm/xe/guc: Don't expose GuC privileged debugfs files if VF
+  (bsc#1012628).
+- drm/xe/guc: Make creation of SLPC debugfs files conditional
+  (bsc#1012628).
+- drm/panic: clean Clippy warning (bsc#1012628).
+- drm/panic: Use a decimal fifo to avoid u64 by u64 divide
+  (bsc#1012628).
+- wifi: ath12k: fix NULL access in assign channel context handler
+  (bsc#1012628).
+- wifi: ath11k: fix node corruption in ar->arvifs list
+  (bsc#1012628).
+- libbpf: Fix implicit memfd_create() for bionic (bsc#1012628).
+- wifi: ath12k: Fix memory leak during vdev_id mismatch
+  (bsc#1012628).
+- wifi: ath12k: Fix memory corruption during MLO multicast tx
+  (bsc#1012628).
+- wifi: ath12k: Fix invalid memory access while forming 802.11
+  header (bsc#1012628).
+- IB/cm: use rwlock for MAD agent lock (bsc#1012628).
+- bpf: Check link_create.flags parameter for multi_kprobe
+  (bsc#1012628).
+- bpf: Check link_create.flags parameter for multi_uprobe
+  (bsc#1012628).
+- selftests/bpf: Fix bpf_nf selftest failure (bsc#1012628).
+- bpf: fix ktls panic with sockmap (bsc#1012628).
++++ 1153 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/kernel-source/dtb-aarch64.changes
++++ and /work/SRC/openSUSE:Factory/.kernel-source.new.7067/dtb-aarch64.changes
dtb-armv6l.changes: same change
dtb-armv7l.changes: same change
dtb-riscv64.changes: same change
kernel-64kb.changes: same change
kernel-default.changes: same change
kernel-docs.changes: same change
kernel-kvmsmall.changes: same change
kernel-lpae.changes: same change
kernel-obs-build.changes: same change
kernel-obs-qa.changes: same change
kernel-pae.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-vanilla.changes: same change
kernel-zfcpdump.changes: same change

Old:
----
  log.sh

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ dtb-aarch64.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:02.872590764 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:02.876590930 +0200
@@ -17,17 +17,17 @@
 
 
 %define srcversion 6.15
-%define patchversion 6.15.2
+%define patchversion 6.15.3
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
 
-%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
+%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
 
 Name:           dtb-aarch64
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
@@ -76,7 +76,6 @@
 Source63:       arch-symbols
 Source64:       package-descriptions
 Source65:       kernel-spec-macros
-Source67:       log.sh
 Source68:       host-memcpy-hack.h
 Source69:       try-disable-staging-driver
 Source70:       kernel-obs-build.spec.in
@@ -145,7 +144,6 @@
 NoSource:       63
 NoSource:       64
 NoSource:       65
-NoSource:       67
 NoSource:       68
 NoSource:       69
 NoSource:       70

dtb-armv6l.spec: same change
dtb-armv7l.spec: same change
dtb-riscv64.spec: same change
++++++ kernel-64kb.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.036597564 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.040597729 +0200
@@ -18,8 +18,8 @@
 
 
 %define srcversion 6.15
-%define patchversion 6.15.2
-%define git_commit 3a37f077e5d3fc695953a4e3cdab52b468d08b68
+%define patchversion 6.15.3
+%define git_commit d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 %define variant %{nil}
 %define compress_modules zstd
 %define compress_vmlinux xz
@@ -31,17 +31,18 @@
 %define supported_modules_check 0
 %define build_flavor 64kb
 %define generate_compile_commands 1
+%define use_suse_kabi_tools 0
 %define gcc_package gcc
 %define gcc_compiler gcc
 
 %include %_sourcedir/kernel-spec-macros
 
-%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
+%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
 
 Name:           kernel-64kb
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
@@ -83,6 +84,9 @@
 %ifarch %arm
 BuildRequires:  u-boot-tools
 %endif
+%if %use_suse_kabi_tools
+BuildRequires:  suse-kabi-tools
+%endif
 # Do not install p-b and dracut for the install check, the %post script is
 # able to handle this
 #!BuildIgnore: perl-Bootloader dracut distribution-release 
suse-kernel-rpm-scriptlets
@@ -198,7 +202,6 @@
 Source63:       arch-symbols
 Source64:       package-descriptions
 Source65:       kernel-spec-macros
-Source67:       log.sh
 Source68:       host-memcpy-hack.h
 Source69:       try-disable-staging-driver
 Source70:       kernel-obs-build.spec.in
@@ -267,7 +270,6 @@
 NoSource:       63
 NoSource:       64
 NoSource:       65
-NoSource:       67
 NoSource:       68
 NoSource:       69
 NoSource:       70
@@ -1443,10 +1445,12 @@
 cd %kernel_build_dir
 source .kernel-binary.spec.buildenv
 
-# create *.symref files in the tree
-if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
+%if !%use_suse_kabi_tools
+    # create *.symref files in the tree
+    if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
     %_sourcedir/modversions --unpack . < $_
-fi
+    fi
+%endif
 
 %if "%CONFIG_KMSG_IDS" == "y"
     chmod +x ../scripts/kmsg-doc
@@ -1680,11 +1684,15 @@
     %endif
 
     # Table of types used in exported symbols (for modversion debugging).
-    %_sourcedir/modversions --pack . > 
%buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
-       gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    else
-       rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+    %if %use_suse_kabi_tools
+        ksymtypes consolidate %{?_smp_mflags} \
+            --output=%my_builddir/symtypes-%build_flavor .
+    %else
+        %_sourcedir/modversions --pack . > %my_builddir/symtypes-%build_flavor
+    %endif
+    if [ -s %my_builddir/symtypes-%build_flavor ]; then
+        gzip -n -9 -c %my_builddir/symtypes-%build_flavor \
+            > %buildroot/boot/symtypes-%kernelrelease-%build_flavor.gz
     fi
 
     # Some architecture's $(uname -m) output is different from the ARCH
@@ -1735,11 +1743,25 @@
     res=0
     if test -e %my_builddir/kabi/%cpu_arch/symvers-%build_flavor; then
         # check for kabi changes
+        %if %use_suse_kabi_tools
+            ksymvers compare --rules=%my_builddir/kabi/severities \
+                --format=symbols:%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
+                Module.symvers || res=$?
+        %else
         %_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
             %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
             Module.symvers || res=$?
+        %endif
     fi
     if [ $res -ne 0 ]; then
+        %if %use_suse_kabi_tools
+            ksymtypes compare %{?_smp_mflags} \
+                --filter-symbol-list=%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor \
+                %my_builddir/symtypes-%build_flavor
+        %endif
+
        # %ignore_kabi_badness is defined in the Kernel:* projects in the
        # OBS to be able to build the KOTD in spite of kabi errors
        if [ 0%{?ignore_kabi_badness} -eq 0 -a \

++++++ kernel-default.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.080599388 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.080599388 +0200
@@ -18,8 +18,8 @@
 
 
 %define srcversion 6.15
-%define patchversion 6.15.2
-%define git_commit 3a37f077e5d3fc695953a4e3cdab52b468d08b68
+%define patchversion 6.15.3
+%define git_commit d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 %define variant %{nil}
 %define compress_modules zstd
 %define compress_vmlinux xz
@@ -31,17 +31,18 @@
 %define supported_modules_check 0
 %define build_flavor default
 %define generate_compile_commands 1
+%define use_suse_kabi_tools 0
 %define gcc_package gcc
 %define gcc_compiler gcc
 
 %include %_sourcedir/kernel-spec-macros
 
-%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
+%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
 
 Name:           kernel-default
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
@@ -83,6 +84,9 @@
 %ifarch %arm
 BuildRequires:  u-boot-tools
 %endif
+%if %use_suse_kabi_tools
+BuildRequires:  suse-kabi-tools
+%endif
 # Do not install p-b and dracut for the install check, the %post script is
 # able to handle this
 #!BuildIgnore: perl-Bootloader dracut distribution-release 
suse-kernel-rpm-scriptlets
@@ -198,7 +202,6 @@
 Source63:       arch-symbols
 Source64:       package-descriptions
 Source65:       kernel-spec-macros
-Source67:       log.sh
 Source68:       host-memcpy-hack.h
 Source69:       try-disable-staging-driver
 Source70:       kernel-obs-build.spec.in
@@ -267,7 +270,6 @@
 NoSource:       63
 NoSource:       64
 NoSource:       65
-NoSource:       67
 NoSource:       68
 NoSource:       69
 NoSource:       70
@@ -1551,10 +1553,12 @@
 cd %kernel_build_dir
 source .kernel-binary.spec.buildenv
 
-# create *.symref files in the tree
-if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
+%if !%use_suse_kabi_tools
+    # create *.symref files in the tree
+    if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
     %_sourcedir/modversions --unpack . < $_
-fi
+    fi
+%endif
 
 %if "%CONFIG_KMSG_IDS" == "y"
     chmod +x ../scripts/kmsg-doc
@@ -1788,11 +1792,15 @@
     %endif
 
     # Table of types used in exported symbols (for modversion debugging).
-    %_sourcedir/modversions --pack . > 
%buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
-       gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    else
-       rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+    %if %use_suse_kabi_tools
+        ksymtypes consolidate %{?_smp_mflags} \
+            --output=%my_builddir/symtypes-%build_flavor .
+    %else
+        %_sourcedir/modversions --pack . > %my_builddir/symtypes-%build_flavor
+    %endif
+    if [ -s %my_builddir/symtypes-%build_flavor ]; then
+        gzip -n -9 -c %my_builddir/symtypes-%build_flavor \
+            > %buildroot/boot/symtypes-%kernelrelease-%build_flavor.gz
     fi
 
     # Some architecture's $(uname -m) output is different from the ARCH
@@ -1843,11 +1851,25 @@
     res=0
     if test -e %my_builddir/kabi/%cpu_arch/symvers-%build_flavor; then
         # check for kabi changes
+        %if %use_suse_kabi_tools
+            ksymvers compare --rules=%my_builddir/kabi/severities \
+                --format=symbols:%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
+                Module.symvers || res=$?
+        %else
         %_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
             %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
             Module.symvers || res=$?
+        %endif
     fi
     if [ $res -ne 0 ]; then
+        %if %use_suse_kabi_tools
+            ksymtypes compare %{?_smp_mflags} \
+                --filter-symbol-list=%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor \
+                %my_builddir/symtypes-%build_flavor
+        %endif
+
        # %ignore_kabi_badness is defined in the Kernel:* projects in the
        # OBS to be able to build the KOTD in spite of kabi errors
        if [ 0%{?ignore_kabi_badness} -eq 0 -a \

++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.112600714 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.116600881 +0200
@@ -17,20 +17,20 @@
 
 
 %define srcversion 6.15
-%define patchversion 6.15.2
-%define git_commit 3a37f077e5d3fc695953a4e3cdab52b468d08b68
+%define patchversion 6.15.3
+%define git_commit d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 %define variant %{nil}
 %define build_html 1
 %define build_pdf 0
 
 %include %_sourcedir/kernel-spec-macros
 
-%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
+%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
 
 Name:           kernel-docs
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
@@ -119,7 +119,6 @@
 Source63:       arch-symbols
 Source64:       package-descriptions
 Source65:       kernel-spec-macros
-Source67:       log.sh
 Source68:       host-memcpy-hack.h
 Source69:       try-disable-staging-driver
 Source70:       kernel-obs-build.spec.in
@@ -188,7 +187,6 @@
 NoSource:       63
 NoSource:       64
 NoSource:       65
-NoSource:       67
 NoSource:       68
 NoSource:       69
 NoSource:       70

++++++ kernel-kvmsmall.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.152602373 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.156602538 +0200
@@ -18,8 +18,8 @@
 
 
 %define srcversion 6.15
-%define patchversion 6.15.2
-%define git_commit 3a37f077e5d3fc695953a4e3cdab52b468d08b68
+%define patchversion 6.15.3
+%define git_commit d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 %define variant %{nil}
 %define compress_modules zstd
 %define compress_vmlinux xz
@@ -31,17 +31,18 @@
 %define supported_modules_check 0
 %define build_flavor kvmsmall
 %define generate_compile_commands 1
+%define use_suse_kabi_tools 0
 %define gcc_package gcc
 %define gcc_compiler gcc
 
 %include %_sourcedir/kernel-spec-macros
 
-%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
+%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
 
 Name:           kernel-kvmsmall
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
@@ -83,6 +84,9 @@
 %ifarch %arm
 BuildRequires:  u-boot-tools
 %endif
+%if %use_suse_kabi_tools
+BuildRequires:  suse-kabi-tools
+%endif
 # Do not install p-b and dracut for the install check, the %post script is
 # able to handle this
 #!BuildIgnore: perl-Bootloader dracut distribution-release 
suse-kernel-rpm-scriptlets
@@ -198,7 +202,6 @@
 Source63:       arch-symbols
 Source64:       package-descriptions
 Source65:       kernel-spec-macros
-Source67:       log.sh
 Source68:       host-memcpy-hack.h
 Source69:       try-disable-staging-driver
 Source70:       kernel-obs-build.spec.in
@@ -267,7 +270,6 @@
 NoSource:       63
 NoSource:       64
 NoSource:       65
-NoSource:       67
 NoSource:       68
 NoSource:       69
 NoSource:       70
@@ -1459,10 +1461,12 @@
 cd %kernel_build_dir
 source .kernel-binary.spec.buildenv
 
-# create *.symref files in the tree
-if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
+%if !%use_suse_kabi_tools
+    # create *.symref files in the tree
+    if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
     %_sourcedir/modversions --unpack . < $_
-fi
+    fi
+%endif
 
 %if "%CONFIG_KMSG_IDS" == "y"
     chmod +x ../scripts/kmsg-doc
@@ -1696,11 +1700,15 @@
     %endif
 
     # Table of types used in exported symbols (for modversion debugging).
-    %_sourcedir/modversions --pack . > 
%buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
-       gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    else
-       rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+    %if %use_suse_kabi_tools
+        ksymtypes consolidate %{?_smp_mflags} \
+            --output=%my_builddir/symtypes-%build_flavor .
+    %else
+        %_sourcedir/modversions --pack . > %my_builddir/symtypes-%build_flavor
+    %endif
+    if [ -s %my_builddir/symtypes-%build_flavor ]; then
+        gzip -n -9 -c %my_builddir/symtypes-%build_flavor \
+            > %buildroot/boot/symtypes-%kernelrelease-%build_flavor.gz
     fi
 
     # Some architecture's $(uname -m) output is different from the ARCH
@@ -1751,11 +1759,25 @@
     res=0
     if test -e %my_builddir/kabi/%cpu_arch/symvers-%build_flavor; then
         # check for kabi changes
+        %if %use_suse_kabi_tools
+            ksymvers compare --rules=%my_builddir/kabi/severities \
+                --format=symbols:%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
+                Module.symvers || res=$?
+        %else
         %_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
             %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
             Module.symvers || res=$?
+        %endif
     fi
     if [ $res -ne 0 ]; then
+        %if %use_suse_kabi_tools
+            ksymtypes compare %{?_smp_mflags} \
+                --filter-symbol-list=%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor \
+                %my_builddir/symtypes-%build_flavor
+        %endif
+
        # %ignore_kabi_badness is defined in the Kernel:* projects in the
        # OBS to be able to build the KOTD in spite of kabi errors
        if [ 0%{?ignore_kabi_badness} -eq 0 -a \

++++++ kernel-lpae.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.188603866 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.192604031 +0200
@@ -18,8 +18,8 @@
 
 
 %define srcversion 6.15
-%define patchversion 6.15.2
-%define git_commit 3a37f077e5d3fc695953a4e3cdab52b468d08b68
+%define patchversion 6.15.3
+%define git_commit d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 %define variant %{nil}
 %define compress_modules zstd
 %define compress_vmlinux xz
@@ -31,17 +31,18 @@
 %define supported_modules_check 0
 %define build_flavor lpae
 %define generate_compile_commands 1
+%define use_suse_kabi_tools 0
 %define gcc_package gcc
 %define gcc_compiler gcc
 
 %include %_sourcedir/kernel-spec-macros
 
-%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
+%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
 
 Name:           kernel-lpae
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
@@ -83,6 +84,9 @@
 %ifarch %arm
 BuildRequires:  u-boot-tools
 %endif
+%if %use_suse_kabi_tools
+BuildRequires:  suse-kabi-tools
+%endif
 # Do not install p-b and dracut for the install check, the %post script is
 # able to handle this
 #!BuildIgnore: perl-Bootloader dracut distribution-release 
suse-kernel-rpm-scriptlets
@@ -198,7 +202,6 @@
 Source63:       arch-symbols
 Source64:       package-descriptions
 Source65:       kernel-spec-macros
-Source67:       log.sh
 Source68:       host-memcpy-hack.h
 Source69:       try-disable-staging-driver
 Source70:       kernel-obs-build.spec.in
@@ -267,7 +270,6 @@
 NoSource:       63
 NoSource:       64
 NoSource:       65
-NoSource:       67
 NoSource:       68
 NoSource:       69
 NoSource:       70
@@ -1435,10 +1437,12 @@
 cd %kernel_build_dir
 source .kernel-binary.spec.buildenv
 
-# create *.symref files in the tree
-if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
+%if !%use_suse_kabi_tools
+    # create *.symref files in the tree
+    if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
     %_sourcedir/modversions --unpack . < $_
-fi
+    fi
+%endif
 
 %if "%CONFIG_KMSG_IDS" == "y"
     chmod +x ../scripts/kmsg-doc
@@ -1672,11 +1676,15 @@
     %endif
 
     # Table of types used in exported symbols (for modversion debugging).
-    %_sourcedir/modversions --pack . > 
%buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
-       gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    else
-       rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+    %if %use_suse_kabi_tools
+        ksymtypes consolidate %{?_smp_mflags} \
+            --output=%my_builddir/symtypes-%build_flavor .
+    %else
+        %_sourcedir/modversions --pack . > %my_builddir/symtypes-%build_flavor
+    %endif
+    if [ -s %my_builddir/symtypes-%build_flavor ]; then
+        gzip -n -9 -c %my_builddir/symtypes-%build_flavor \
+            > %buildroot/boot/symtypes-%kernelrelease-%build_flavor.gz
     fi
 
     # Some architecture's $(uname -m) output is different from the ARCH
@@ -1727,11 +1735,25 @@
     res=0
     if test -e %my_builddir/kabi/%cpu_arch/symvers-%build_flavor; then
         # check for kabi changes
+        %if %use_suse_kabi_tools
+            ksymvers compare --rules=%my_builddir/kabi/severities \
+                --format=symbols:%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
+                Module.symvers || res=$?
+        %else
         %_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
             %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
             Module.symvers || res=$?
+        %endif
     fi
     if [ $res -ne 0 ]; then
+        %if %use_suse_kabi_tools
+            ksymtypes compare %{?_smp_mflags} \
+                --filter-symbol-list=%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor \
+                %my_builddir/symtypes-%build_flavor
+        %endif
+
        # %ignore_kabi_badness is defined in the Kernel:* projects in the
        # OBS to be able to build the KOTD in spite of kabi errors
        if [ 0%{?ignore_kabi_badness} -eq 0 -a \

++++++ kernel-obs-build.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.224605358 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.224605358 +0200
@@ -19,7 +19,7 @@
 
 #!BuildIgnore: post-build-checks
 
-%define patchversion 6.15.2
+%define patchversion 6.15.3
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -38,23 +38,23 @@
 %endif
 %endif
 %endif
-%global kernel_package 
kernel%kernel_flavor-srchash-3a37f077e5d3fc695953a4e3cdab52b468d08b68
+%global kernel_package 
kernel%kernel_flavor-srchash-d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 %endif
 %if 0%{?rhel_version}
 %global kernel_package kernel
 %endif
 
 Name:           kernel-obs-build
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
 Summary:        package kernel and initrd for OBS VM builds
 License:        GPL-2.0-only
 Group:          SLES
-Provides:       
kernel-obs-build-srchash-3a37f077e5d3fc695953a4e3cdab52b468d08b68
+Provides:       
kernel-obs-build-srchash-d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 BuildRequires:  coreutils
 BuildRequires:  device-mapper
 BuildRequires:  dracut

++++++ kernel-obs-qa.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.256606684 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.264607016 +0200
@@ -17,15 +17,15 @@
 # needsrootforbuild
 
 
-%define patchversion 6.15.2
+%define patchversion 6.15.3
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
 
 Name:           kernel-obs-qa
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
@@ -35,7 +35,7 @@
 BuildRequires:  kernel-default
 # kernel-obs-build must be also configured as VMinstall, but is required
 # here as well to avoid that qa and build package build parallel
-BuildRequires:  
kernel-obs-build-srchash-3a37f077e5d3fc695953a4e3cdab52b468d08b68
+BuildRequires:  
kernel-obs-build-srchash-d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 BuildRequires:  modutils
 ExclusiveArch:  aarch64 armv6hl armv7hl ppc64le riscv64 s390x x86_64
 

++++++ kernel-pae.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.300608508 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.304608674 +0200
@@ -18,8 +18,8 @@
 
 
 %define srcversion 6.15
-%define patchversion 6.15.2
-%define git_commit 3a37f077e5d3fc695953a4e3cdab52b468d08b68
+%define patchversion 6.15.3
+%define git_commit d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 %define variant %{nil}
 %define compress_modules zstd
 %define compress_vmlinux xz
@@ -31,17 +31,18 @@
 %define supported_modules_check 0
 %define build_flavor pae
 %define generate_compile_commands 1
+%define use_suse_kabi_tools 0
 %define gcc_package gcc
 %define gcc_compiler gcc
 
 %include %_sourcedir/kernel-spec-macros
 
-%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
+%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
 
 Name:           kernel-pae
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
@@ -83,6 +84,9 @@
 %ifarch %arm
 BuildRequires:  u-boot-tools
 %endif
+%if %use_suse_kabi_tools
+BuildRequires:  suse-kabi-tools
+%endif
 # Do not install p-b and dracut for the install check, the %post script is
 # able to handle this
 #!BuildIgnore: perl-Bootloader dracut distribution-release 
suse-kernel-rpm-scriptlets
@@ -198,7 +202,6 @@
 Source63:       arch-symbols
 Source64:       package-descriptions
 Source65:       kernel-spec-macros
-Source67:       log.sh
 Source68:       host-memcpy-hack.h
 Source69:       try-disable-staging-driver
 Source70:       kernel-obs-build.spec.in
@@ -267,7 +270,6 @@
 NoSource:       63
 NoSource:       64
 NoSource:       65
-NoSource:       67
 NoSource:       68
 NoSource:       69
 NoSource:       70
@@ -1507,10 +1509,12 @@
 cd %kernel_build_dir
 source .kernel-binary.spec.buildenv
 
-# create *.symref files in the tree
-if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
+%if !%use_suse_kabi_tools
+    # create *.symref files in the tree
+    if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
     %_sourcedir/modversions --unpack . < $_
-fi
+    fi
+%endif
 
 %if "%CONFIG_KMSG_IDS" == "y"
     chmod +x ../scripts/kmsg-doc
@@ -1744,11 +1748,15 @@
     %endif
 
     # Table of types used in exported symbols (for modversion debugging).
-    %_sourcedir/modversions --pack . > 
%buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
-       gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    else
-       rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+    %if %use_suse_kabi_tools
+        ksymtypes consolidate %{?_smp_mflags} \
+            --output=%my_builddir/symtypes-%build_flavor .
+    %else
+        %_sourcedir/modversions --pack . > %my_builddir/symtypes-%build_flavor
+    %endif
+    if [ -s %my_builddir/symtypes-%build_flavor ]; then
+        gzip -n -9 -c %my_builddir/symtypes-%build_flavor \
+            > %buildroot/boot/symtypes-%kernelrelease-%build_flavor.gz
     fi
 
     # Some architecture's $(uname -m) output is different from the ARCH
@@ -1799,11 +1807,25 @@
     res=0
     if test -e %my_builddir/kabi/%cpu_arch/symvers-%build_flavor; then
         # check for kabi changes
+        %if %use_suse_kabi_tools
+            ksymvers compare --rules=%my_builddir/kabi/severities \
+                --format=symbols:%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
+                Module.symvers || res=$?
+        %else
         %_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
             %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
             Module.symvers || res=$?
+        %endif
     fi
     if [ $res -ne 0 ]; then
+        %if %use_suse_kabi_tools
+            ksymtypes compare %{?_smp_mflags} \
+                --filter-symbol-list=%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor \
+                %my_builddir/symtypes-%build_flavor
+        %endif
+
        # %ignore_kabi_badness is defined in the Kernel:* projects in the
        # OBS to be able to build the KOTD in spite of kabi errors
        if [ 0%{?ignore_kabi_badness} -eq 0 -a \

++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.336610001 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.340610167 +0200
@@ -17,20 +17,20 @@
 
 
 %define srcversion 6.15
-%define patchversion 6.15.2
-%define git_commit 3a37f077e5d3fc695953a4e3cdab52b468d08b68
+%define patchversion 6.15.3
+%define git_commit d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 %define variant %{nil}
 %define gcc_package gcc
 %define gcc_compiler gcc
 
 %include %_sourcedir/kernel-spec-macros
 
-%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
+%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
 
 Name:           kernel-source
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
@@ -93,7 +93,6 @@
 Source63:       arch-symbols
 Source64:       package-descriptions
 Source65:       kernel-spec-macros
-Source67:       log.sh
 Source68:       host-memcpy-hack.h
 Source69:       try-disable-staging-driver
 Source70:       kernel-obs-build.spec.in

++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.376611659 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.380611825 +0200
@@ -16,16 +16,16 @@
 #
 
 
-%define git_commit 3a37f077e5d3fc695953a4e3cdab52b468d08b68
+%define git_commit d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
 
 Name:           kernel-syms
-Version:        6.15.2
+Version:        6.15.3
 %if %using_buildservice
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif

++++++ kernel-vanilla.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.420613484 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.424613650 +0200
@@ -18,8 +18,8 @@
 
 
 %define srcversion 6.15
-%define patchversion 6.15.2
-%define git_commit 3a37f077e5d3fc695953a4e3cdab52b468d08b68
+%define patchversion 6.15.3
+%define git_commit d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 %define variant %{nil}
 %define compress_modules zstd
 %define compress_vmlinux xz
@@ -31,17 +31,18 @@
 %define supported_modules_check 0
 %define build_flavor vanilla
 %define generate_compile_commands 1
+%define use_suse_kabi_tools 0
 %define gcc_package gcc
 %define gcc_compiler gcc
 
 %include %_sourcedir/kernel-spec-macros
 
-%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
+%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
 
 Name:           kernel-vanilla
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
@@ -83,6 +84,9 @@
 %ifarch %arm
 BuildRequires:  u-boot-tools
 %endif
+%if %use_suse_kabi_tools
+BuildRequires:  suse-kabi-tools
+%endif
 # Do not install p-b and dracut for the install check, the %post script is
 # able to handle this
 #!BuildIgnore: perl-Bootloader dracut distribution-release 
suse-kernel-rpm-scriptlets
@@ -198,7 +202,6 @@
 Source63:       arch-symbols
 Source64:       package-descriptions
 Source65:       kernel-spec-macros
-Source67:       log.sh
 Source68:       host-memcpy-hack.h
 Source69:       try-disable-staging-driver
 Source70:       kernel-obs-build.spec.in
@@ -267,7 +270,6 @@
 NoSource:       63
 NoSource:       64
 NoSource:       65
-NoSource:       67
 NoSource:       68
 NoSource:       69
 NoSource:       70
@@ -1431,10 +1433,12 @@
 cd %kernel_build_dir
 source .kernel-binary.spec.buildenv
 
-# create *.symref files in the tree
-if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
+%if !%use_suse_kabi_tools
+    # create *.symref files in the tree
+    if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
     %_sourcedir/modversions --unpack . < $_
-fi
+    fi
+%endif
 
 %if "%CONFIG_KMSG_IDS" == "y"
     chmod +x ../scripts/kmsg-doc
@@ -1668,11 +1672,15 @@
     %endif
 
     # Table of types used in exported symbols (for modversion debugging).
-    %_sourcedir/modversions --pack . > 
%buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
-       gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    else
-       rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+    %if %use_suse_kabi_tools
+        ksymtypes consolidate %{?_smp_mflags} \
+            --output=%my_builddir/symtypes-%build_flavor .
+    %else
+        %_sourcedir/modversions --pack . > %my_builddir/symtypes-%build_flavor
+    %endif
+    if [ -s %my_builddir/symtypes-%build_flavor ]; then
+        gzip -n -9 -c %my_builddir/symtypes-%build_flavor \
+            > %buildroot/boot/symtypes-%kernelrelease-%build_flavor.gz
     fi
 
     # Some architecture's $(uname -m) output is different from the ARCH
@@ -1723,11 +1731,25 @@
     res=0
     if test -e %my_builddir/kabi/%cpu_arch/symvers-%build_flavor; then
         # check for kabi changes
+        %if %use_suse_kabi_tools
+            ksymvers compare --rules=%my_builddir/kabi/severities \
+                --format=symbols:%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
+                Module.symvers || res=$?
+        %else
         %_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
             %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
             Module.symvers || res=$?
+        %endif
     fi
     if [ $res -ne 0 ]; then
+        %if %use_suse_kabi_tools
+            ksymtypes compare %{?_smp_mflags} \
+                --filter-symbol-list=%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor \
+                %my_builddir/symtypes-%build_flavor
+        %endif
+
        # %ignore_kabi_badness is defined in the Kernel:* projects in the
        # OBS to be able to build the KOTD in spite of kabi errors
        if [ 0%{?ignore_kabi_badness} -eq 0 -a \

++++++ kernel-zfcpdump.spec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:03.460615142 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:03.464615308 +0200
@@ -18,8 +18,8 @@
 
 
 %define srcversion 6.15
-%define patchversion 6.15.2
-%define git_commit 3a37f077e5d3fc695953a4e3cdab52b468d08b68
+%define patchversion 6.15.3
+%define git_commit d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 %define variant %{nil}
 %define compress_modules zstd
 %define compress_vmlinux xz
@@ -31,17 +31,18 @@
 %define supported_modules_check 0
 %define build_flavor zfcpdump
 %define generate_compile_commands 1
+%define use_suse_kabi_tools 0
 %define gcc_package gcc
 %define gcc_compiler gcc
 
 %include %_sourcedir/kernel-spec-macros
 
-%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
+%(chmod +x 
%_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
 
 Name:           kernel-zfcpdump
-Version:        6.15.2
+Version:        6.15.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g3a37f07
+Release:        <RELEASE>.gd7f7d34
 %else
 Release:        0
 %endif
@@ -83,6 +84,9 @@
 %ifarch %arm
 BuildRequires:  u-boot-tools
 %endif
+%if %use_suse_kabi_tools
+BuildRequires:  suse-kabi-tools
+%endif
 # Do not install p-b and dracut for the install check, the %post script is
 # able to handle this
 #!BuildIgnore: perl-Bootloader dracut distribution-release 
suse-kernel-rpm-scriptlets
@@ -198,7 +202,6 @@
 Source63:       arch-symbols
 Source64:       package-descriptions
 Source65:       kernel-spec-macros
-Source67:       log.sh
 Source68:       host-memcpy-hack.h
 Source69:       try-disable-staging-driver
 Source70:       kernel-obs-build.spec.in
@@ -267,7 +270,6 @@
 NoSource:       63
 NoSource:       64
 NoSource:       65
-NoSource:       67
 NoSource:       68
 NoSource:       69
 NoSource:       70
@@ -1443,10 +1445,12 @@
 cd %kernel_build_dir
 source .kernel-binary.spec.buildenv
 
-# create *.symref files in the tree
-if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
+%if !%use_suse_kabi_tools
+    # create *.symref files in the tree
+    if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
     %_sourcedir/modversions --unpack . < $_
-fi
+    fi
+%endif
 
 %if "%CONFIG_KMSG_IDS" == "y"
     chmod +x ../scripts/kmsg-doc
@@ -1680,11 +1684,15 @@
     %endif
 
     # Table of types used in exported symbols (for modversion debugging).
-    %_sourcedir/modversions --pack . > 
%buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
-       gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    else
-       rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+    %if %use_suse_kabi_tools
+        ksymtypes consolidate %{?_smp_mflags} \
+            --output=%my_builddir/symtypes-%build_flavor .
+    %else
+        %_sourcedir/modversions --pack . > %my_builddir/symtypes-%build_flavor
+    %endif
+    if [ -s %my_builddir/symtypes-%build_flavor ]; then
+        gzip -n -9 -c %my_builddir/symtypes-%build_flavor \
+            > %buildroot/boot/symtypes-%kernelrelease-%build_flavor.gz
     fi
 
     # Some architecture's $(uname -m) output is different from the ARCH
@@ -1735,11 +1743,25 @@
     res=0
     if test -e %my_builddir/kabi/%cpu_arch/symvers-%build_flavor; then
         # check for kabi changes
+        %if %use_suse_kabi_tools
+            ksymvers compare --rules=%my_builddir/kabi/severities \
+                --format=symbols:%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
+                Module.symvers || res=$?
+        %else
         %_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
             %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
             Module.symvers || res=$?
+        %endif
     fi
     if [ $res -ne 0 ]; then
+        %if %use_suse_kabi_tools
+            ksymtypes compare %{?_smp_mflags} \
+                --filter-symbol-list=%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor \
+                %my_builddir/symtypes-%build_flavor
+        %endif
+
        # %ignore_kabi_badness is defined in the Kernel:* projects in the
        # OBS to be able to build the KOTD in spite of kabi errors
        if [ 0%{?ignore_kabi_badness} -eq 0 -a \

++++++ config.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/arm64/default new/config/arm64/default
--- old/config/arm64/default    2025-06-11 09:47:59.000000000 +0200
+++ new/config/arm64/default    2025-06-21 20:59:36.000000000 +0200
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm64 6.15.0 Kernel Configuration
+# Linux/arm64 6.15.3 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)"
 CONFIG_CC_IS_GCC=y
@@ -9284,8 +9284,6 @@
 CONFIG_HID_ACRUX_FF=y
 CONFIG_HID_APPLE=m
 CONFIG_HID_APPLEIR=m
-CONFIG_HID_APPLETB_BL=m
-CONFIG_HID_APPLETB_KBD=m
 CONFIG_HID_ASUS=m
 CONFIG_HID_AUREAL=m
 CONFIG_HID_BELKIN=m
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/armv6hl/default new/config/armv6hl/default
--- old/config/armv6hl/default  2025-06-11 09:47:59.000000000 +0200
+++ new/config/armv6hl/default  2025-06-21 20:59:36.000000000 +0200
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 6.15.0 Kernel Configuration
+# Linux/arm 6.15.3 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)"
 CONFIG_CC_IS_GCC=y
@@ -6201,8 +6201,6 @@
 # CONFIG_HID_ACRUX_FF is not set
 CONFIG_HID_APPLE=m
 # CONFIG_HID_APPLEIR is not set
-CONFIG_HID_APPLETB_BL=m
-CONFIG_HID_APPLETB_KBD=m
 CONFIG_HID_ASUS=m
 # CONFIG_HID_AUREAL is not set
 CONFIG_HID_BELKIN=m
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/armv7hl/default new/config/armv7hl/default
--- old/config/armv7hl/default  2025-06-11 09:47:59.000000000 +0200
+++ new/config/armv7hl/default  2025-06-21 20:59:36.000000000 +0200
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 6.15.0 Kernel Configuration
+# Linux/arm 6.15.3 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)"
 CONFIG_CC_IS_GCC=y
@@ -8839,8 +8839,6 @@
 CONFIG_HID_ACRUX_FF=y
 CONFIG_HID_APPLE=m
 CONFIG_HID_APPLEIR=m
-CONFIG_HID_APPLETB_BL=m
-CONFIG_HID_APPLETB_KBD=m
 CONFIG_HID_ASUS=m
 CONFIG_HID_AUREAL=m
 CONFIG_HID_BELKIN=m
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/i386/pae new/config/i386/pae
--- old/config/i386/pae 2025-06-11 09:47:59.000000000 +0200
+++ new/config/i386/pae 2025-06-21 20:59:36.000000000 +0200
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/i386 6.15.0 Kernel Configuration
+# Linux/i386 6.15.3 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)"
 CONFIG_CC_IS_GCC=y
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/ppc64le/default new/config/ppc64le/default
--- old/config/ppc64le/default  2025-06-11 09:47:59.000000000 +0200
+++ new/config/ppc64le/default  2025-06-21 20:59:36.000000000 +0200
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/powerpc 6.15.0 Kernel Configuration
+# Linux/powerpc 6.15.3 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)"
 CONFIG_CC_IS_GCC=y
@@ -6262,8 +6262,6 @@
 CONFIG_HID_ACRUX_FF=y
 CONFIG_HID_APPLE=m
 CONFIG_HID_APPLEIR=m
-CONFIG_HID_APPLETB_BL=m
-CONFIG_HID_APPLETB_KBD=m
 CONFIG_HID_ASUS=m
 CONFIG_HID_AUREAL=m
 CONFIG_HID_BELKIN=m
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/riscv64/default new/config/riscv64/default
--- old/config/riscv64/default  2025-06-11 09:47:59.000000000 +0200
+++ new/config/riscv64/default  2025-06-21 20:59:36.000000000 +0200
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/riscv 6.15.0 Kernel Configuration
+# Linux/riscv 6.15.3 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)"
 CONFIG_CC_IS_GCC=y
@@ -7836,8 +7836,6 @@
 CONFIG_HID_ACRUX_FF=y
 CONFIG_HID_APPLE=m
 CONFIG_HID_APPLEIR=m
-CONFIG_HID_APPLETB_BL=m
-CONFIG_HID_APPLETB_KBD=m
 CONFIG_HID_ASUS=m
 CONFIG_HID_AUREAL=m
 CONFIG_HID_BELKIN=m
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/s390x/default new/config/s390x/default
--- old/config/s390x/default    2025-06-11 09:47:59.000000000 +0200
+++ new/config/s390x/default    2025-06-21 20:59:36.000000000 +0200
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/s390 6.15.0 Kernel Configuration
+# Linux/s390 6.15.3 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)"
 CONFIG_CC_IS_GCC=y
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/s390x/zfcpdump new/config/s390x/zfcpdump
--- old/config/s390x/zfcpdump   2025-06-11 09:47:59.000000000 +0200
+++ new/config/s390x/zfcpdump   2025-06-21 20:59:36.000000000 +0200
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/s390 6.15.0 Kernel Configuration
+# Linux/s390 6.15.3 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)"
 CONFIG_CC_IS_GCC=y
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/x86_64/default new/config/x86_64/default
--- old/config/x86_64/default   2025-06-11 09:47:59.000000000 +0200
+++ new/config/x86_64/default   2025-06-21 20:59:36.000000000 +0200
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86_64 6.15.0 Kernel Configuration
+# Linux/x86_64 6.15.3 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)"
 CONFIG_CC_IS_GCC=y

++++++ kernel-binary.spec.in ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:04.044639354 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:04.048639519 +0200
@@ -31,6 +31,7 @@
 %define supported_modules_check @SUPPORTED_MODULES_CHECK@
 %define build_flavor @FLAVOR@
 %define generate_compile_commands @GENERATE_COMPILE_COMMANDS@
+%define use_suse_kabi_tools @USE_SUSE_KABI_TOOLS@
 %define gcc_package @GCC_PACKAGE@
 %define gcc_compiler @GCC_COMPILER@
 
@@ -83,6 +84,9 @@
 %ifarch %arm
 BuildRequires:  u-boot-tools
 %endif
+%if %use_suse_kabi_tools
+BuildRequires:  suse-kabi-tools
+%endif
 # Do not install p-b and dracut for the install check, the %post script is
 # able to handle this
 #!BuildIgnore: perl-Bootloader dracut distribution-release 
suse-kernel-rpm-scriptlets
@@ -968,10 +972,12 @@
 cd %kernel_build_dir
 source .kernel-binary.spec.buildenv
 
-# create *.symref files in the tree
-if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
-    %_sourcedir/modversions --unpack . < $_
-fi
+%if !%use_suse_kabi_tools
+    # create *.symref files in the tree
+    if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
+        %_sourcedir/modversions --unpack . < $_
+    fi
+%endif
 
 %if "%CONFIG_KMSG_IDS" == "y"
     chmod +x ../scripts/kmsg-doc
@@ -1205,11 +1211,15 @@
     %endif
 
     # Table of types used in exported symbols (for modversion debugging).
-    %_sourcedir/modversions --pack . > 
%buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
-       gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
-    else
-       rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+    %if %use_suse_kabi_tools
+        ksymtypes consolidate %{?_smp_mflags} \
+            --output=%my_builddir/symtypes-%build_flavor .
+    %else
+        %_sourcedir/modversions --pack . > %my_builddir/symtypes-%build_flavor
+    %endif
+    if [ -s %my_builddir/symtypes-%build_flavor ]; then
+        gzip -n -9 -c %my_builddir/symtypes-%build_flavor \
+            > %buildroot/boot/symtypes-%kernelrelease-%build_flavor.gz
     fi
 
     # Some architecture's $(uname -m) output is different from the ARCH
@@ -1260,11 +1270,25 @@
     res=0
     if test -e %my_builddir/kabi/%cpu_arch/symvers-%build_flavor; then
         # check for kabi changes
-        %_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
-            %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
-            Module.symvers || res=$?
+        %if %use_suse_kabi_tools
+            ksymvers compare --rules=%my_builddir/kabi/severities \
+                --format=symbols:%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
+                Module.symvers || res=$?
+        %else
+            %_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
+                %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
+                Module.symvers || res=$?
+        %endif
     fi
     if [ $res -ne 0 ]; then
+        %if %use_suse_kabi_tools
+            ksymtypes compare %{?_smp_mflags} \
+                --filter-symbol-list=%my_builddir/changed-exports \
+                %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor \
+                %my_builddir/symtypes-%build_flavor
+        %endif
+
        # %ignore_kabi_badness is defined in the Kernel:* projects in the
        # OBS to be able to build the KOTD in spite of kabi errors
        if [ 0%{?ignore_kabi_badness} -eq 0 -a \

++++++ kernel-source.spec.in ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:04.224646816 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:04.228646982 +0200
@@ -93,7 +93,6 @@
 Source63:       arch-symbols
 Source64:       package-descriptions
 Source65:       kernel-spec-macros
-Source67:       log.sh
 Source68:       host-memcpy-hack.h
 Source69:       try-disable-staging-driver
 Source70:       kernel-obs-build.spec.in



++++++ mkspec ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:04.344651791 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:04.348651958 +0200
@@ -72,6 +72,7 @@
 my $build_pdf = to_bool $vars{'BUILD_PDF'};
 my $build_html = to_bool $vars{'BUILD_HTML'};
 my $generate_compile_commands = to_bool $vars{'GENERATE_COMPILE_COMMANDS'};
+my $use_suse_kabi_tools = to_bool $vars{'USE_SUSE_KABI_TOOLS'};
 
 if (!defined ($rpmrelease)) {
        $rpmrelease = $vars{'RELEASE'} || 0;
@@ -149,6 +150,7 @@
        COMPRESS_MODULES => $compress_modules,
        COMPRESS_VMLINUX => $compress_vmlinux,
        GENERATE_COMPILE_COMMANDS => $generate_compile_commands,
+       USE_SUSE_KABI_TOOLS => $use_suse_kabi_tools,
        GCC_PACKAGE => $gcc_package,
        GCC_COMPILER => $gcc_compiler,
 );


++++++ patches.kernel.org.tar.bz2 ++++++
++++ 74716 lines of diff (skipped)

++++++ patches.suse.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/PCI-pciehp-Ignore-belated-Presence-Detect-Changed-ca.patch 
new/patches.suse/PCI-pciehp-Ignore-belated-Presence-Detect-Changed-ca.patch
--- old/patches.suse/PCI-pciehp-Ignore-belated-Presence-Detect-Changed-ca.patch 
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/PCI-pciehp-Ignore-belated-Presence-Detect-Changed-ca.patch 
2025-06-21 21:18:07.000000000 +0200
@@ -0,0 +1,56 @@
+From: Lukas Wunner <lu...@wunner.de>
+Date: Wed, 18 Jun 2025 16:38:25 +0200
+Subject: PCI: pciehp: Ignore belated Presence Detect Changed caused by DPC
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+References: git-fixes
+Git-commit: bbf10cd686835d5a4b8566dc73a3b00b4cd7932a
+Patch-mainline: v6.16
+
+Commit c3be50f7547c ("PCI: pciehp: Ignore Presence Detect Changed caused by
+DPC") sought to ignore Presence Detect Changed events occurring as a side
+effect of Downstream Port Containment.
+
+The commit awaits recovery from DPC and then clears events which occurred
+in the meantime.  However if the first event seen after DPC is Data Link
+Layer State Changed, only that event is cleared and not Presence Detect
+Changed.  The object of the commit is thus defeated.
+
+That's because pciehp_ist() computes the events to clear based on the local
+"events" variable instead of "ctrl->pending_events".  The former contains
+the events that had occurred when pciehp_ist() was entered, whereas the
+latter also contains events that have accumulated while awaiting DPC
+recovery.
+
+In practice, the order of PDC and DLLSC events is arbitrary and the delay
+in-between can be several milliseconds.
+
+So change the logic to always clear PDC events, even if they come after an
+initial DLLSC event.
+
+Fixes: c3be50f7547c ("PCI: pciehp: Ignore Presence Detect Changed caused by 
DPC")
+Reported-by: Lương Việt Hoàng <tcm4...@gmail.com>
+Reported-by: Joel Mathew Thomas <pro...@tutamail.com>
+Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219765#c165
+Signed-off-by: Lukas Wunner <lu...@wunner.de>
+Signed-off-by: Bjorn Helgaas <bhelg...@google.com>
+Tested-by: Lương Việt Hoàng <tcm4...@gmail.com>
+Tested-by: Joel Mathew Thomas <pro...@tutamail.com>
+Link: 
https://patch.msgid.link/d9c4286a16253af7e93eaf12e076e3ef3546367a.1750257164.git.lu...@wunner.de
+Signed-off-by: Jiri Slaby <jsl...@suse.cz>
+---
+ drivers/pci/hotplug/pciehp_hpc.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/pci/hotplug/pciehp_hpc.c
++++ b/drivers/pci/hotplug/pciehp_hpc.c
+@@ -771,7 +771,7 @@ static irqreturn_t pciehp_ist(int irq, v
+               u16 ignored_events = PCI_EXP_SLTSTA_DLLSC;
+ 
+               if (!ctrl->inband_presence_disabled)
+-                      ignored_events |= events & PCI_EXP_SLTSTA_PDC;
++                      ignored_events |= PCI_EXP_SLTSTA_PDC;
+ 
+               events &= ~ignored_events;
+               pciehp_ignore_link_change(ctrl, pdev, irq, ignored_events);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/drm-nouveau-nvkm-factor-out-current-GSP-RPC-command-.patch 
new/patches.suse/drm-nouveau-nvkm-factor-out-current-GSP-RPC-command-.patch
--- old/patches.suse/drm-nouveau-nvkm-factor-out-current-GSP-RPC-command-.patch 
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/drm-nouveau-nvkm-factor-out-current-GSP-RPC-command-.patch 
2025-06-21 21:18:07.000000000 +0200
@@ -0,0 +1,304 @@
+From: Zhi Wang <z...@nvidia.com>
+Date: Thu, 27 Feb 2025 01:35:53 +0000
+Subject: drm/nouveau/nvkm: factor out current GSP RPC command policies
+References: 
<CAPM=9twidpukmfkmoqslxghdfnqxgfjnnau1_xrt8puel4m...@mail.gmail.com>
+Git-commit: 4570355f8eaa476164cfb7ca959fdbf0cebbc9eb
+Patch-mainline: 6.16-rc1
+
+There can be multiple cases of handling the GSP RPC messages, which are
+the reply of GSP RPC commands according to the requirement of the
+callers and the nature of the GSP RPC commands.
+
+The current supported reply policies are "callers don't care" and "receive
+the entire message" according to the requirement of the callers. To
+introduce a new policy, factor out the current RPC command reply polices.
+Also, centralize the handling of the reply in a single function.
+
+Factor out NVKM_GSP_RPC_REPLY_NOWAIT as "callers don't care" and
+NVKM_GSP_RPC_REPLY_RECV as "receive the entire message". Introduce a
+kernel doc to document the policies. Factor out
+r535_gsp_rpc_handle_reply().
+
+No functional change is intended for small GSP RPC commands. For large GSP
+commands, the caller decides the policy of how to handle the returned GSP
+RPC message.
+
+Cc: Ben Skeggs <bske...@nvidia.com>
+Cc: Alexandre Courbot <acour...@nvidia.com>
+Signed-off-by: Zhi Wang <z...@nvidia.com>
+Signed-off-by: Danilo Krummrich <d...@kernel.org>
+Link: 
https://patchwork.freedesktop.org/patch/msgid/20250227013554.8269-2-z...@nvidia.com
+Signed-off-by: Jiri Slaby <jsl...@suse.cz>
+---
+ Documentation/gpu/nouveau.rst                      |    3 
+ drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h  |   34 +++++++--
+ drivers/gpu/drm/nouveau/nvkm/subdev/bar/r535.c     |    2 
+ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c     |   75 
++++++++++-----------
+ drivers/gpu/drm/nouveau/nvkm/subdev/instmem/r535.c |    2 
+ 5 files changed, 72 insertions(+), 44 deletions(-)
+
+--- a/Documentation/gpu/nouveau.rst
++++ b/Documentation/gpu/nouveau.rst
+@@ -27,3 +27,6 @@ GSP Support
+ 
+ .. kernel-doc:: drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
+    :doc: GSP message queue element
++
++.. kernel-doc:: drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h
++   :doc: GSP message handling policy
+--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h
++++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h
+@@ -31,6 +31,25 @@ typedef int (*nvkm_gsp_msg_ntfy_func)(vo
+ struct nvkm_gsp_event;
+ typedef void (*nvkm_gsp_event_func)(struct nvkm_gsp_event *, void *repv, u32 
repc);
+ 
++/**
++ * DOC: GSP message handling policy
++ *
++ * When sending a GSP RPC command, there can be multiple cases of handling
++ * the GSP RPC messages, which are the reply of GSP RPC commands, according
++ * to the requirement of the callers and the nature of the GSP RPC commands.
++ *
++ * NVKM_GSP_RPC_REPLY_NOWAIT - If specified, immediately return to the
++ * caller after the GSP RPC command is issued.
++ *
++ * NVKM_GSP_RPC_REPLY_RECV - If specified, wait and receive the entire GSP
++ * RPC message after the GSP RPC command is issued.
++ *
++ */
++enum nvkm_gsp_rpc_reply_policy {
++      NVKM_GSP_RPC_REPLY_NOWAIT = 0,
++      NVKM_GSP_RPC_REPLY_RECV,
++};
++
+ struct nvkm_gsp {
+       const struct nvkm_gsp_func *func;
+       struct nvkm_subdev subdev;
+@@ -188,7 +207,8 @@ struct nvkm_gsp {
+ 
+       const struct nvkm_gsp_rm {
+               void *(*rpc_get)(struct nvkm_gsp *, u32 fn, u32 argc);
+-              void *(*rpc_push)(struct nvkm_gsp *, void *argv, bool wait, u32 
repc);
++              void *(*rpc_push)(struct nvkm_gsp *gsp, void *argv,
++                                enum nvkm_gsp_rpc_reply_policy policy, u32 
repc);
+               void (*rpc_done)(struct nvkm_gsp *gsp, void *repv);
+ 
+               void *(*rm_ctrl_get)(struct nvkm_gsp_object *, u32 cmd, u32 
argc);
+@@ -255,9 +275,10 @@ nvkm_gsp_rpc_get(struct nvkm_gsp *gsp, u
+ }
+ 
+ static inline void *
+-nvkm_gsp_rpc_push(struct nvkm_gsp *gsp, void *argv, bool wait, u32 repc)
++nvkm_gsp_rpc_push(struct nvkm_gsp *gsp, void *argv,
++                enum nvkm_gsp_rpc_reply_policy policy, u32 repc)
+ {
+-      return gsp->rm->rpc_push(gsp, argv, wait, repc);
++      return gsp->rm->rpc_push(gsp, argv, policy, repc);
+ }
+ 
+ static inline void *
+@@ -268,13 +289,14 @@ nvkm_gsp_rpc_rd(struct nvkm_gsp *gsp, u3
+       if (IS_ERR_OR_NULL(argv))
+               return argv;
+ 
+-      return nvkm_gsp_rpc_push(gsp, argv, true, argc);
++      return nvkm_gsp_rpc_push(gsp, argv, NVKM_GSP_RPC_REPLY_RECV, argc);
+ }
+ 
+ static inline int
+-nvkm_gsp_rpc_wr(struct nvkm_gsp *gsp, void *argv, bool wait)
++nvkm_gsp_rpc_wr(struct nvkm_gsp *gsp, void *argv,
++              enum nvkm_gsp_rpc_reply_policy policy)
+ {
+-      void *repv = nvkm_gsp_rpc_push(gsp, argv, wait, 0);
++      void *repv = nvkm_gsp_rpc_push(gsp, argv, policy, 0);
+ 
+       if (IS_ERR(repv))
+               return PTR_ERR(repv);
+--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/r535.c
++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/r535.c
+@@ -56,7 +56,7 @@ r535_bar_bar2_update_pde(struct nvkm_gsp
+       rpc->info.entryValue = addr ? ((addr >> 4) | 2) : 0; /* PD3 entry 
format! */
+       rpc->info.entryLevelShift = 47; //XXX: probably fetch this from mmu!
+ 
+-      return nvkm_gsp_rpc_wr(gsp, rpc, true);
++      return nvkm_gsp_rpc_wr(gsp, rpc, NVKM_GSP_RPC_REPLY_RECV);
+ }
+ 
+ static void
+--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
+@@ -585,13 +585,34 @@ r535_gsp_rpc_poll(struct nvkm_gsp *gsp,
+ }
+ 
+ static void *
+-r535_gsp_rpc_send(struct nvkm_gsp *gsp, void *payload, bool wait,
+-                u32 gsp_rpc_len)
++r535_gsp_rpc_handle_reply(struct nvkm_gsp *gsp, u32 fn,
++                        enum nvkm_gsp_rpc_reply_policy policy,
++                        u32 gsp_rpc_len)
++{
++      struct nvfw_gsp_rpc *reply;
++      void *repv = NULL;
++
++      switch (policy) {
++      case NVKM_GSP_RPC_REPLY_NOWAIT:
++              break;
++      case NVKM_GSP_RPC_REPLY_RECV:
++              reply = r535_gsp_msg_recv(gsp, fn, gsp_rpc_len);
++              if (!IS_ERR_OR_NULL(reply))
++                      repv = reply->data;
++              else
++                      repv = reply;
++              break;
++      }
++
++      return repv;
++}
++
++static void *
++r535_gsp_rpc_send(struct nvkm_gsp *gsp, void *payload,
++                enum nvkm_gsp_rpc_reply_policy policy, u32 gsp_rpc_len)
+ {
+       struct nvfw_gsp_rpc *rpc = to_gsp_hdr(payload, rpc);
+-      struct nvfw_gsp_rpc *msg;
+       u32 fn = rpc->function;
+-      void *repv = NULL;
+       int ret;
+ 
+       if (gsp->subdev.debug >= NV_DBG_TRACE) {
+@@ -605,15 +626,7 @@ r535_gsp_rpc_send(struct nvkm_gsp *gsp,
+       if (ret)
+               return ERR_PTR(ret);
+ 
+-      if (wait) {
+-              msg = r535_gsp_msg_recv(gsp, fn, gsp_rpc_len);
+-              if (!IS_ERR_OR_NULL(msg))
+-                      repv = msg->data;
+-              else
+-                      repv = msg;
+-      }
+-
+-      return repv;
++      return r535_gsp_rpc_handle_reply(gsp, fn, policy, gsp_rpc_len);
+ }
+ 
+ static void
+@@ -797,7 +810,7 @@ r535_gsp_rpc_rm_free(struct nvkm_gsp_obj
+       rpc->params.hRoot = client->object.handle;
+       rpc->params.hObjectParent = 0;
+       rpc->params.hObjectOld = object->handle;
+-      return nvkm_gsp_rpc_wr(gsp, rpc, true);
++      return nvkm_gsp_rpc_wr(gsp, rpc, NVKM_GSP_RPC_REPLY_RECV);
+ }
+ 
+ static void
+@@ -815,7 +828,7 @@ r535_gsp_rpc_rm_alloc_push(struct nvkm_g
+       struct nvkm_gsp *gsp = object->client->gsp;
+       void *ret = NULL;
+ 
+-      rpc = nvkm_gsp_rpc_push(gsp, rpc, true, sizeof(*rpc));
++      rpc = nvkm_gsp_rpc_push(gsp, rpc, NVKM_GSP_RPC_REPLY_RECV, 
sizeof(*rpc));
+       if (IS_ERR_OR_NULL(rpc))
+               return rpc;
+ 
+@@ -876,7 +889,7 @@ r535_gsp_rpc_rm_ctrl_push(struct nvkm_gs
+       struct nvkm_gsp *gsp = object->client->gsp;
+       int ret = 0;
+ 
+-      rpc = nvkm_gsp_rpc_push(gsp, rpc, true, repc);
++      rpc = nvkm_gsp_rpc_push(gsp, rpc, NVKM_GSP_RPC_REPLY_RECV, repc);
+       if (IS_ERR_OR_NULL(rpc)) {
+               *params = NULL;
+               return PTR_ERR(rpc);
+@@ -948,8 +961,8 @@ r535_gsp_rpc_get(struct nvkm_gsp *gsp, u
+ }
+ 
+ static void *
+-r535_gsp_rpc_push(struct nvkm_gsp *gsp, void *payload, bool wait,
+-                u32 gsp_rpc_len)
++r535_gsp_rpc_push(struct nvkm_gsp *gsp, void *payload,
++                enum nvkm_gsp_rpc_reply_policy policy, u32 gsp_rpc_len)
+ {
+       struct nvfw_gsp_rpc *rpc = to_gsp_hdr(payload, rpc);
+       struct r535_gsp_msg *msg = to_gsp_hdr(rpc, msg);
+@@ -967,7 +980,7 @@ r535_gsp_rpc_push(struct nvkm_gsp *gsp,
+               rpc->length = sizeof(*rpc) + max_payload_size;
+               msg->checksum = rpc->length;
+ 
+-              repv = r535_gsp_rpc_send(gsp, payload, false, 0);
++              repv = r535_gsp_rpc_send(gsp, payload, 
NVKM_GSP_RPC_REPLY_NOWAIT, 0);
+               if (IS_ERR(repv))
+                       goto done;
+ 
+@@ -988,7 +1001,7 @@ r535_gsp_rpc_push(struct nvkm_gsp *gsp,
+ 
+                       memcpy(next, payload, size);
+ 
+-                      repv = r535_gsp_rpc_send(gsp, next, false, 0);
++                      repv = r535_gsp_rpc_send(gsp, next, 
NVKM_GSP_RPC_REPLY_NOWAIT, 0);
+                       if (IS_ERR(repv))
+                               goto done;
+ 
+@@ -997,20 +1010,10 @@ r535_gsp_rpc_push(struct nvkm_gsp *gsp,
+               }
+ 
+               /* Wait for reply. */
+-              rpc = r535_gsp_msg_recv(gsp, fn, payload_size +
+-                                      sizeof(*rpc));
+-              if (!IS_ERR_OR_NULL(rpc)) {
+-                      if (wait) {
+-                              repv = rpc->data;
+-                      } else {
+-                              nvkm_gsp_rpc_done(gsp, rpc);
+-                              repv = NULL;
+-                      }
+-              } else {
+-                      repv = wait ? rpc : NULL;
+-              }
++              repv = r535_gsp_rpc_handle_reply(gsp, fn, policy, payload_size +
++                                               sizeof(*rpc));
+       } else {
+-              repv = r535_gsp_rpc_send(gsp, payload, wait, gsp_rpc_len);
++              repv = r535_gsp_rpc_send(gsp, payload, policy, gsp_rpc_len);
+       }
+ 
+ done:
+@@ -1327,7 +1330,7 @@ r535_gsp_rpc_unloading_guest_driver(stru
+               rpc->newLevel = NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_0;
+       }
+ 
+-      return nvkm_gsp_rpc_wr(gsp, rpc, true);
++      return nvkm_gsp_rpc_wr(gsp, rpc, NVKM_GSP_RPC_REPLY_RECV);
+ }
+ 
+ enum registry_type {
+@@ -1684,7 +1687,7 @@ r535_gsp_rpc_set_registry(struct nvkm_gs
+ 
+       build_registry(gsp, rpc);
+ 
+-      return nvkm_gsp_rpc_wr(gsp, rpc, false);
++      return nvkm_gsp_rpc_wr(gsp, rpc, NVKM_GSP_RPC_REPLY_NOWAIT);
+ 
+ fail:
+       clean_registry(gsp);
+@@ -1893,7 +1896,7 @@ r535_gsp_rpc_set_system_info(struct nvkm
+       info->pciConfigMirrorSize = 0x001000;
+       r535_gsp_acpi_info(gsp, &info->acpiMethodData);
+ 
+-      return nvkm_gsp_rpc_wr(gsp, info, false);
++      return nvkm_gsp_rpc_wr(gsp, info, NVKM_GSP_RPC_REPLY_NOWAIT);
+ }
+ 
+ static int
+--- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/r535.c
++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/r535.c
+@@ -105,7 +105,7 @@ fbsr_memlist(struct nvkm_gsp_device *dev
+                       rpc->pteDesc.pte_pde[i].pte = (phys >> 12) + i;
+       }
+ 
+-      ret = nvkm_gsp_rpc_wr(gsp, rpc, true);
++      ret = nvkm_gsp_rpc_wr(gsp, rpc, NVKM_GSP_RPC_REPLY_RECV);
+       if (ret)
+               return ret;
+ 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/drm-nouveau-nvkm-introduce-new-GSP-reply-policy-NVKM.patch 
new/patches.suse/drm-nouveau-nvkm-introduce-new-GSP-reply-policy-NVKM.patch
--- old/patches.suse/drm-nouveau-nvkm-introduce-new-GSP-reply-policy-NVKM.patch 
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/drm-nouveau-nvkm-introduce-new-GSP-reply-policy-NVKM.patch 
2025-06-21 21:18:07.000000000 +0200
@@ -0,0 +1,80 @@
+From: Zhi Wang <z...@nvidia.com>
+Date: Thu, 27 Feb 2025 01:35:54 +0000
+Subject: drm/nouveau/nvkm: introduce new GSP reply policy
+ NVKM_GSP_RPC_REPLY_POLL
+References: 
<CAPM=9twidpukmfkmoqslxghdfnqxgfjnnau1_xrt8puel4m...@mail.gmail.com>
+Git-commit: a738fa9105ac2897701ba4067c33e85faa27d1e2
+Patch-mainline: 6.16-rc1
+
+Some GSP RPC commands need a new reply policy: "caller don't care about
+the message content but want to make sure a reply is received". To
+support this case, a new reply policy is introduced.
+
+NV_VGPU_MSG_FUNCTION_ALLOC_MEMORY is a large GSP RPC command. The actual
+required policy is NVKM_GSP_RPC_REPLY_POLL. This can be observed from the
+dump of the GSP message queue. After the large GSP RPC command is issued,
+GSP will write only an empty RPC header in the queue as the reply.
+
+Without this change, the policy "receiving the entire message" is used
+for NV_VGPU_MSG_FUNCTION_ALLOC_MEMORY. This causes the timeout of receiving
+the returned GSP message in the suspend/resume path.
+
+Introduce the new reply policy NVKM_GSP_RPC_REPLY_POLL, which waits for
+the returned GSP message but discards it for the caller. Use the new policy
+NVKM_GSP_RPC_REPLY_POLL on the GSP RPC command
+NV_VGPU_MSG_FUNCTION_ALLOC_MEMORY.
+
+Fixes: 50f290053d79 ("drm/nouveau: support handling the return of large GSP 
message")
+Cc: Danilo Krummrich <d...@kernel.org>
+Cc: Alexandre Courbot <acour...@nvidia.com>
+Tested-by: Ben Skeggs <bske...@nvidia.com>
+Signed-off-by: Zhi Wang <z...@nvidia.com>
+Signed-off-by: Danilo Krummrich <d...@kernel.org>
+Link: 
https://patchwork.freedesktop.org/patch/msgid/20250227013554.8269-3-z...@nvidia.com
+Signed-off-by: Jiri Slaby <jsl...@suse.cz>
+---
+ drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h  |    4 ++++
+ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c     |    3 +++
+ drivers/gpu/drm/nouveau/nvkm/subdev/instmem/r535.c |    2 +-
+ 3 files changed, 8 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h
++++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h
+@@ -44,10 +44,14 @@ typedef void (*nvkm_gsp_event_func)(stru
+  * NVKM_GSP_RPC_REPLY_RECV - If specified, wait and receive the entire GSP
+  * RPC message after the GSP RPC command is issued.
+  *
++ * NVKM_GSP_RPC_REPLY_POLL - If specified, wait for the specific reply and
++ * discard the reply before returning to the caller.
++ *
+  */
+ enum nvkm_gsp_rpc_reply_policy {
+       NVKM_GSP_RPC_REPLY_NOWAIT = 0,
+       NVKM_GSP_RPC_REPLY_RECV,
++      NVKM_GSP_RPC_REPLY_POLL,
+ };
+ 
+ struct nvkm_gsp {
+--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
+@@ -602,6 +602,9 @@ r535_gsp_rpc_handle_reply(struct nvkm_gs
+               else
+                       repv = reply;
+               break;
++      case NVKM_GSP_RPC_REPLY_POLL:
++              repv = r535_gsp_msg_recv(gsp, fn, 0);
++              break;
+       }
+ 
+       return repv;
+--- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/r535.c
++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/r535.c
+@@ -105,7 +105,7 @@ fbsr_memlist(struct nvkm_gsp_device *dev
+                       rpc->pteDesc.pte_pde[i].pte = (phys >> 12) + i;
+       }
+ 
+-      ret = nvkm_gsp_rpc_wr(gsp, rpc, NVKM_GSP_RPC_REPLY_RECV);
++      ret = nvkm_gsp_rpc_wr(gsp, rpc, NVKM_GSP_RPC_REPLY_POLL);
+       if (ret)
+               return ret;
+ 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/io_uring-sqpoll-don-t-put-task_struct-on-tctx-setup-.patch 
new/patches.suse/io_uring-sqpoll-don-t-put-task_struct-on-tctx-setup-.patch
--- old/patches.suse/io_uring-sqpoll-don-t-put-task_struct-on-tctx-setup-.patch 
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/io_uring-sqpoll-don-t-put-task_struct-on-tctx-setup-.patch 
2025-06-21 21:18:07.000000000 +0200
@@ -0,0 +1,53 @@
+From: Jens Axboe <ax...@kernel.dk>
+Date: Tue, 17 Jun 2025 06:43:18 -0600
+Subject: io_uring/sqpoll: don't put task_struct on tctx setup failure
+References: git-fixes
+Git-commit: f2320f1dd6f6f82cb2c7aff23a12bab537bdea89
+Patch-mainline: v6.16
+
+A recent commit moved the error handling of sqpoll thread and tctx
+failures into the thread itself, as part of fixing an issue. However, it
+missed that tctx allocation may also fail, and that
+io_sq_offload_create() does its own error handling for the task_struct
+in that case.
+
+Remove the manual task putting in io_sq_offload_create(), as
+io_sq_thread() will notice that the tctx did not get setup and hence it
+should put itself and exit.
+
+Reported-by: syzbot+763e12bbf004fb106...@syzkaller.appspotmail.com
+Fixes: ac0b8b327a56 ("io_uring: fix use-after-free of sq->thread in 
__io_uring_show_fdinfo()")
+Signed-off-by: Jens Axboe <ax...@kernel.dk>
+Signed-off-by: Jiri Slaby <jsl...@suse.cz>
+---
+ io_uring/sqpoll.c |    5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+--- a/io_uring/sqpoll.c
++++ b/io_uring/sqpoll.c
+@@ -419,7 +419,6 @@ void io_sqpoll_wait_sq(struct io_ring_ct
+ __cold int io_sq_offload_create(struct io_ring_ctx *ctx,
+                               struct io_uring_params *p)
+ {
+-      struct task_struct *task_to_put = NULL;
+       int ret;
+ 
+       /* Retain compatibility with failing for an invalid attach attempt */
+@@ -498,7 +497,7 @@ __cold int io_sq_offload_create(struct i
+               rcu_assign_pointer(sqd->thread, tsk);
+               mutex_unlock(&sqd->lock);
+ 
+-              task_to_put = get_task_struct(tsk);
++              get_task_struct(tsk);
+               ret = io_uring_alloc_task_context(tsk, ctx);
+               wake_up_new_task(tsk);
+               if (ret)
+@@ -513,8 +512,6 @@ err_sqpoll:
+       complete(&ctx->sq_data->exited);
+ err:
+       io_sq_thread_finish(ctx);
+-      if (task_to_put)
+-              put_task_struct(task_to_put);
+       return ret;
+ }
+ 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/ptp-fix-breakage-after-ptp_vclock_in_use-rework.patch 
new/patches.suse/ptp-fix-breakage-after-ptp_vclock_in_use-rework.patch
--- old/patches.suse/ptp-fix-breakage-after-ptp_vclock_in_use-rework.patch      
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/ptp-fix-breakage-after-ptp_vclock_in_use-rework.patch      
2025-06-21 21:18:07.000000000 +0200
@@ -0,0 +1,157 @@
+From: Vladimir Oltean <vladimir.olt...@nxp.com>
+Date: Fri, 13 Jun 2025 20:47:48 +0300
+Subject: ptp: fix breakage after ptp_vclock_in_use() rework
+References: git-fixes
+Git-commit: 5ab73b010cad294851e558f1d4714a85c6f206c7
+Patch-mainline: v6.16
+
+What is broken
+--------------
+
+ptp4l, and any other application which calls clock_adjtime() on a
+physical clock, is greeted with error -EBUSY after commit 87f7ce260a3c
+("ptp: remove ptp->n_vclocks check logic in ptp_vclock_in_use()").
+
+Explanation for the breakage
+----------------------------
+
+The blamed commit was based on the false assumption that
+ptp_vclock_in_use() callers already test for n_vclocks prior to calling
+this function.
+
+This is notably incorrect for the code path below, in which there is, in
+fact, no n_vclocks test:
+
+ptp_clock_adjtime()
+-> ptp_clock_freerun()
+   -> ptp_vclock_in_use()
+
+The result is that any clock adjustment on any physical clock is now
+impossible. This is _despite_ there not being any vclock over this
+physical clock.
+
+$ ptp4l -i eno0 -2 -P -m
+ptp4l[58.425]: selected /dev/ptp0 as PTP clock
+[   58.429749] ptp: physical clock is free running
+ptp4l[58.431]: Failed to open /dev/ptp0: Device or resource busy
+failed to create a clock
+$ cat /sys/class/ptp/ptp0/n_vclocks
+0
+
+The patch makes the ptp_vclock_in_use() function say "if it's not a
+virtual clock, then this physical clock does have virtual clocks on
+top".
+
+Then ptp_clock_freerun() uses this information to say "this physical
+clock has virtual clocks on top, so it must stay free-running".
+
+Then ptp_clock_adjtime() uses this information to say "well, if this
+physical clock has to be free-running, I can't do it, return -EBUSY".
+
+Simply put, ptp_vclock_in_use() cannot be simplified so as to remove the
+test whether vclocks are in use.
+
+What did the blamed commit intend to fix
+----------------------------------------
+
+The blamed commit presents a lockdep warning stating "possible recursive
+locking detected", with the n_vclocks_store() and ptp_clock_unregister()
+functions involved.
+
+The recursive locking seems this:
+n_vclocks_store()
+-> mutex_lock_interruptible(&ptp->n_vclocks_mux) // 1
+-> device_for_each_child_reverse(..., unregister_vclock)
+   -> unregister_vclock()
+      -> ptp_vclock_unregister()
+         -> ptp_clock_unregister()
+            -> ptp_vclock_in_use()
+               -> mutex_lock_interruptible(&ptp->n_vclocks_mux) // 2
+
+The issue can be triggered by creating and then deleting vclocks:
+$ echo 2 > /sys/class/ptp/ptp0/n_vclocks
+$ echo 0 > /sys/class/ptp/ptp0/n_vclocks
+
+But note that in the original stack trace, the address of the first lock
+is different from the address of the second lock. This is because at
+step 1 marked above, &ptp->n_vclocks_mux is the lock of the parent
+(physical) PTP clock, and at step 2, the lock is of the child (virtual)
+PTP clock. They are different locks of different devices.
+
+In this situation there is no real deadlock, the lockdep warning is
+caused by the fact that the mutexes have the same lock class on both the
+parent and the child. Functionally it is fine.
+
+Proposed alternative solution
+-----------------------------
+
+We must reintroduce the body of ptp_vclock_in_use() mostly as it was
+structured prior to the blamed commit, but avoid the lockdep warning.
+
+Based on the fact that vclocks cannot be nested on top of one another
+(ptp_is_attribute_visible() hides n_vclocks for virtual clocks), we
+already know that ptp->n_vclocks is zero for a virtual clock. And
+ptp->is_virtual_clock is a runtime invariant, established at
+ptp_clock_register() time and never changed. There is no need to
+serialize on any mutex in order to read ptp->is_virtual_clock, and we
+take advantage of that by moving it outside the lock.
+
+Thus, virtual clocks do not need to acquire &ptp->n_vclocks_mux at
+all, and step 2 in the code walkthrough above can simply go away.
+We can simply return false to the question "ptp_vclock_in_use(a virtual
+clock)".
+
+Other notes
+-----------
+
+Releasing &ptp->n_vclocks_mux before ptp_vclock_in_use() returns
+execution seems racy, because the returned value can become stale as
+soon as the function returns and before the return value is used (i.e.
+n_vclocks_store() can run any time). The locking requirement should
+somehow be transferred to the caller, to ensure a longer life time for
+the returned value, but this seems out of scope for this severe bug fix.
+
+Because we are also fixing up the logic from the original commit, there
+is another Fixes: tag for that.
+
+Fixes: 87f7ce260a3c ("ptp: remove ptp->n_vclocks check logic in 
ptp_vclock_in_use()")
+Fixes: 73f37068d540 ("ptp: support ptp physical/virtual clocks conversion")
+Signed-off-by: Vladimir Oltean <vladimir.olt...@nxp.com>
+Link: https://patch.msgid.link/20250613174749.406826-2-vladimir.olt...@nxp.com
+Signed-off-by: Jakub Kicinski <k...@kernel.org>
+Signed-off-by: Jiri Slaby <jsl...@suse.cz>
+---
+ drivers/ptp/ptp_private.h |   22 +++++++++++++++++++++-
+ 1 file changed, 21 insertions(+), 1 deletion(-)
+
+--- a/drivers/ptp/ptp_private.h
++++ b/drivers/ptp/ptp_private.h
+@@ -98,7 +98,27 @@ static inline int queue_cnt(const struct
+ /* Check if ptp virtual clock is in use */
+ static inline bool ptp_vclock_in_use(struct ptp_clock *ptp)
+ {
+-      return !ptp->is_virtual_clock;
++      bool in_use = false;
++
++      /* Virtual clocks can't be stacked on top of virtual clocks.
++       * Avoid acquiring the n_vclocks_mux on virtual clocks, to allow this
++       * function to be called from code paths where the n_vclocks_mux of the
++       * parent physical clock is already held. Functionally that's not an
++       * issue, but lockdep would complain, because they have the same lock
++       * class.
++       */
++      if (ptp->is_virtual_clock)
++              return false;
++
++      if (mutex_lock_interruptible(&ptp->n_vclocks_mux))
++              return true;
++
++      if (ptp->n_vclocks)
++              in_use = true;
++
++      mutex_unlock(&ptp->n_vclocks_mux);
++
++      return in_use;
+ }
+ 
+ /* Check if ptp clock shall be free running */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/wifi-ath12k-Abort-scan-before-removing-link-interfac.patch 
new/patches.suse/wifi-ath12k-Abort-scan-before-removing-link-interfac.patch
--- old/patches.suse/wifi-ath12k-Abort-scan-before-removing-link-interfac.patch 
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/wifi-ath12k-Abort-scan-before-removing-link-interfac.patch 
2025-06-21 21:18:07.000000000 +0200
@@ -0,0 +1,48 @@
+From 1ab2e9046b4f3b298274ad4cc08ff456d3e4274e Mon Sep 17 00:00:00 2001
+From: Lingbo Kong <quic_ling...@quicinc.com>
+Date: Fri, 18 Apr 2025 14:40:08 +0800
+Subject: [PATCH] wifi: ath12k: Abort scan before removing link interface to 
prevent duplicate deletion
+Git-commit: 1ab2e9046b4f3b298274ad4cc08ff456d3e4274e
+Patch-mainline: v6.16-rc1
+References: bsc#1243995
+
+Currently, when ath12k performs the remove link interface operation, if
+there is an ongoing scan operation on the arvif, ath12k may execute the
+remove link interface operation multiple times on the same arvif. This
+occurs because, during the remove link operation, if a scan operation is
+present on the arvif, ath12k may receive a WMI_SCAN_EVENT_COMPLETED event
+from the firmware. Upon receiving this event, ath12k will continue to
+execute the ath12k_scan_vdev_clean_work() function, performing the remove
+link interface operation on the same arvif again.
+
+To address this issue, before executing the remove link interface
+operation, ath12k needs to check if there is an ongoing scan operation on
+the current arvif. If such an operation exists, it should be aborted.
+
+Tested-on: WCN7850 hw2.0 PCI 
WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
+
+Signed-off-by: Lingbo Kong <quic_ling...@quicinc.com>
+Tested-by: Lorenzo Stoakes <lorenzo.stoa...@oracle.com>
+Reviewed-by: Vasanthakumar Thiagarajan 
<vasanthakumar.thiagara...@oss.qualcomm.com>
+Link: https://patch.msgid.link/20250418064008.7172-1-quic_ling...@quicinc.com
+Signed-off-by: Jeff Johnson <jeff.john...@oss.qualcomm.com>
+Acked-by: Takashi Iwai <ti...@suse.de>
+
+---
+ drivers/net/wireless/ath/ath12k/mac.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/net/wireless/ath/ath12k/mac.c
++++ b/drivers/net/wireless/ath/ath12k/mac.c
+@@ -9744,6 +9744,11 @@ static void ath12k_mac_op_flush(struct i
+ 
+               ath12k_mac_flush(arvif->ar);
+       }
++
++      if (ar->scan.arvif == arvif && ar->scan.state == ATH12K_SCAN_RUNNING) {
++              ath12k_scan_abort(ar);
++              ar->scan.arvif = NULL;
++      }
+ }
+ 
+ static int
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/wifi-ath12k-introduce-ath12k_fw_feature_supported.patch 
new/patches.suse/wifi-ath12k-introduce-ath12k_fw_feature_supported.patch
--- old/patches.suse/wifi-ath12k-introduce-ath12k_fw_feature_supported.patch    
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/wifi-ath12k-introduce-ath12k_fw_feature_supported.patch    
2025-06-21 21:18:07.000000000 +0200
@@ -0,0 +1,109 @@
+From dad6de9070a8dfc8268ed7c1684b81d1e2eeaa97 Mon Sep 17 00:00:00 2001
+From: Baochen Qiang <quic_bqi...@quicinc.com>
+Date: Wed, 9 Apr 2025 10:26:34 +0800
+Subject: [PATCH] wifi: ath12k: introduce ath12k_fw_feature_supported()
+Git-commit: dad6de9070a8dfc8268ed7c1684b81d1e2eeaa97
+Patch-mainline: v6.16-rc1
+References: bsc#1243995
+
+There are several places checking if a specific bit set in
+ab->fw.fw_features, and in an upcoming patch additional check needs to be
+added at all places.
+
+Introduce a new helper ath12k_fw_feature_supported() to avoid code
+duplication.
+
+Tested-on: WCN7850 hw2.0 PCI 
WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
+Tested-on: WCN7850 hw2.0 PCI 
WLAN.HMT.1.1.c5-00284-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
+Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00209-QCAHKSWPL_SILICONZ-1
+
+Signed-off-by: Baochen Qiang <quic_bqi...@quicinc.com>
+Link: 
https://patch.msgid.link/20250409-ath12k-wcn7850-mlo-support-v2-1-3801132ca...@quicinc.com
+Signed-off-by: Jeff Johnson <jeff.john...@oss.qualcomm.com>
+Acked-by: Takashi Iwai <ti...@suse.de>
+
+---
+ drivers/net/wireless/ath/ath12k/core.c | 2 +-
+ drivers/net/wireless/ath/ath12k/fw.c   | 7 ++++++-
+ drivers/net/wireless/ath/ath12k/fw.h   | 3 ++-
+ drivers/net/wireless/ath/ath12k/pci.c  | 4 ++--
+ 4 files changed, 11 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/net/wireless/ath/ath12k/core.c 
b/drivers/net/wireless/ath/ath12k/core.c
+index 9b23329f1bf2..ae125b57a571 100644
+--- a/drivers/net/wireless/ath/ath12k/core.c
++++ b/drivers/net/wireless/ath/ath12k/core.c
+@@ -2079,7 +2079,7 @@ void ath12k_core_hw_group_set_mlo_capable(struct 
ath12k_hw_group *ag)
+               /* even if 1 device's firmware feature indicates MLO
+                * unsupported, make MLO unsupported for the whole group
+                */
+-              if (!test_bit(ATH12K_FW_FEATURE_MLO, ab->fw.fw_features)) {
++              if (!ath12k_fw_feature_supported(ab, ATH12K_FW_FEATURE_MLO)) {
+                       ag->mlo_capable = false;
+                       return;
+               }
+diff --git a/drivers/net/wireless/ath/ath12k/fw.c 
b/drivers/net/wireless/ath/ath12k/fw.c
+index 5be4b2d4a19d..af8b87ca4ccb 100644
+--- a/drivers/net/wireless/ath/ath12k/fw.c
++++ b/drivers/net/wireless/ath/ath12k/fw.c
+@@ -1,6 +1,6 @@
+ // SPDX-License-Identifier: BSD-3-Clause-Clear
+ /*
+- * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights 
reserved.
++ * Copyright (c) 2022-2025 Qualcomm Innovation Center, Inc. All rights 
reserved.
+  */
+ 
+ #include "core.h"
+@@ -169,3 +169,8 @@ void ath12k_fw_unmap(struct ath12k_base *ab)
+       release_firmware(ab->fw.fw);
+       memset(&ab->fw, 0, sizeof(ab->fw));
+ }
++
++bool ath12k_fw_feature_supported(struct ath12k_base *ab, enum 
ath12k_fw_features feat)
++{
++      return test_bit(feat, ab->fw.fw_features);
++}
+diff --git a/drivers/net/wireless/ath/ath12k/fw.h 
b/drivers/net/wireless/ath/ath12k/fw.h
+index 273c003eff3b..7afaefed5086 100644
+--- a/drivers/net/wireless/ath/ath12k/fw.h
++++ b/drivers/net/wireless/ath/ath12k/fw.h
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: BSD-3-Clause-Clear */
+ /*
+- * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights 
reserved.
++ * Copyright (c) 2022-2025 Qualcomm Innovation Center, Inc. All rights 
reserved.
+  */
+ 
+ #ifndef ATH12K_FW_H
+@@ -32,5 +32,6 @@ enum ath12k_fw_features {
+ 
+ void ath12k_fw_map(struct ath12k_base *ab);
+ void ath12k_fw_unmap(struct ath12k_base *ab);
++bool ath12k_fw_feature_supported(struct ath12k_base *ab, enum 
ath12k_fw_features feat);
+ 
+ #endif /* ATH12K_FW_H */
+diff --git a/drivers/net/wireless/ath/ath12k/pci.c 
b/drivers/net/wireless/ath/ath12k/pci.c
+index a8a17d6aa75e..528a4a57d136 100644
+--- a/drivers/net/wireless/ath/ath12k/pci.c
++++ b/drivers/net/wireless/ath/ath12k/pci.c
+@@ -718,7 +718,7 @@ static void ath12k_pci_init_qmi_ce_config(struct 
ath12k_base *ab)
+       cfg->svc_to_ce_map_len = ab->hw_params->svc_to_ce_map_len;
+       ab->qmi.service_ins_id = ab->hw_params->qmi_service_ins_id;
+ 
+-      if (test_bit(ATH12K_FW_FEATURE_MULTI_QRTR_ID, ab->fw.fw_features)) {
++      if (ath12k_fw_feature_supported(ab, ATH12K_FW_FEATURE_MULTI_QRTR_ID)) {
+               ab_pci->qmi_instance =
+                       u32_encode_bits(pci_domain_nr(bus), DOMAIN_NUMBER_MASK) 
|
+                       u32_encode_bits(bus->number, BUS_NUMBER_MASK);
+@@ -1468,7 +1468,7 @@ int ath12k_pci_power_up(struct ath12k_base *ab)
+ 
+       ath12k_pci_msi_enable(ab_pci);
+ 
+-      if (test_bit(ATH12K_FW_FEATURE_MULTI_QRTR_ID, ab->fw.fw_features))
++      if (ath12k_fw_feature_supported(ab, ATH12K_FW_FEATURE_MULTI_QRTR_ID))
+               ath12k_pci_update_qrtr_node_id(ab);
+ 
+       ret = ath12k_mhi_start(ab_pci);
+-- 
+2.49.0
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/wifi-ath12k-support-MLO-as-well-if-single_chip_mlo_s.patch 
new/patches.suse/wifi-ath12k-support-MLO-as-well-if-single_chip_mlo_s.patch
--- old/patches.suse/wifi-ath12k-support-MLO-as-well-if-single_chip_mlo_s.patch 
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/wifi-ath12k-support-MLO-as-well-if-single_chip_mlo_s.patch 
2025-06-21 21:18:07.000000000 +0200
@@ -0,0 +1,104 @@
+From 32f7b19668bd2894f1a236580c2132fc4b9f4449 Mon Sep 17 00:00:00 2001
+From: Baochen Qiang <quic_bqi...@quicinc.com>
+Date: Wed, 9 Apr 2025 10:26:36 +0800
+Subject: [PATCH] wifi: ath12k: support MLO as well if single_chip_mlo_support 
flag is set
+Git-commit: 32f7b19668bd2894f1a236580c2132fc4b9f4449
+Patch-mainline: v6.16-rc1
+References: bsc#1243995
+
+Currently firmware MLO capability is validated via firmware IE, however
+WCN7850 firmware does not support this method but instead advertises
+MLO by single_chip_mlo_support bit in QMI phy capability message.
+
+Change to consider single_chip_mlo_support bit as well for MLO capability
+validation.
+
+Tested-on: WCN7850 hw2.0 PCI 
WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
+Tested-on: WCN7850 hw2.0 PCI 
WLAN.HMT.1.1.c5-00284-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
+Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00209-QCAHKSWPL_SILICONZ-1
+
+Signed-off-by: Baochen Qiang <quic_bqi...@quicinc.com>
+Link: 
https://patch.msgid.link/20250409-ath12k-wcn7850-mlo-support-v2-3-3801132ca...@quicinc.com
+Signed-off-by: Jeff Johnson <jeff.john...@oss.qualcomm.com>
+Acked-by: Takashi Iwai <ti...@suse.de>
+
+---
+ drivers/net/wireless/ath/ath12k/core.c |   21 ++++++++++-----------
+ drivers/net/wireless/ath/ath12k/core.h |    3 +++
+ drivers/net/wireless/ath/ath12k/qmi.c  |    6 +++++-
+ 3 files changed, 18 insertions(+), 12 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath12k/core.c
++++ b/drivers/net/wireless/ath/ath12k/core.c
+@@ -1843,20 +1843,18 @@ void ath12k_core_hw_group_set_mlo_capabl
+ 
+       lockdep_assert_held(&ag->mutex);
+ 
+-      /* If more than one devices are grouped, then inter MLO
+-       * functionality can work still independent of whether internally
+-       * each device supports single_chip_mlo or not.
+-       * Only when there is one device, then disable for WCN chipsets
+-       * till the required driver implementation is in place.
+-       */
+       if (ag->num_devices == 1) {
+               ab = ag->ab[0];
+-
+-              /* WCN chipsets does not advertise in firmware features
+-               * hence skip checking
+-               */
+-              if (ab->hw_params->def_num_link)
++              /* QCN9274 firmware uses firmware IE for MLO advertisement */
++              if (ab->fw.fw_features_valid) {
++                      ag->mlo_capable =
++                              ath12k_fw_feature_supported(ab, 
ATH12K_FW_FEATURE_MLO);
+                       return;
++              }
++
++              /* while WCN7850 firmware uses QMI single_chip_mlo_support bit 
*/
++              ag->mlo_capable = ab->single_chip_mlo_support;
++              return;
+       }
+ 
+       ag->mlo_capable = true;
+@@ -1975,6 +1973,7 @@ struct ath12k_base *ath12k_core_alloc(st
+       ab->dev = dev;
+       ab->hif.bus = bus;
+       ab->qmi.num_radios = U8_MAX;
++      ab->single_chip_mlo_support = false;
+ 
+       /* Device index used to identify the devices in a group.
+        *
+--- a/drivers/net/wireless/ath/ath12k/core.h
++++ b/drivers/net/wireless/ath/ath12k/core.h
+@@ -1089,6 +1089,9 @@ struct ath12k_base {
+       enum ath12k_firmware_mode fw_mode;
+       struct ath12k_ftm_event_obj ftm_event_obj;
+ 
++      /* Denote whether MLO is possible within the device */
++      bool single_chip_mlo_support;
++
+       /* must be last */
+       u8 drv_priv[] __aligned(sizeof(void *));
+ };
+--- a/drivers/net/wireless/ath/ath12k/qmi.c
++++ b/drivers/net/wireless/ath/ath12k/qmi.c
+@@ -2264,6 +2264,9 @@ static void ath12k_qmi_phy_cap_send(stru
+               goto out;
+       }
+ 
++      if (resp.single_chip_mlo_support_valid && resp.single_chip_mlo_support)
++              ab->single_chip_mlo_support = true;
++
+       if (!resp.num_phy_valid) {
+               ret = -ENODATA;
+               goto out;
+@@ -2272,7 +2275,8 @@ static void ath12k_qmi_phy_cap_send(stru
+       ab->qmi.num_radios = resp.num_phy;
+ 
+       ath12k_dbg(ab, ATH12K_DBG_QMI,
+-                 "phy capability resp valid %d num_phy %d valid %d board_id 
%d\n",
++                 "phy capability resp valid %d single_chip_mlo_support %d 
valid %d num_phy %d valid %d board_id %d\n",
++                 resp.single_chip_mlo_support_valid, 
resp.single_chip_mlo_support,
+                  resp.num_phy_valid, resp.num_phy,
+                  resp.board_id_valid, resp.board_id);
+ 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/wifi-ath12k-use-fw_features-only-when-it-is-valid.patch 
new/patches.suse/wifi-ath12k-use-fw_features-only-when-it-is-valid.patch
--- old/patches.suse/wifi-ath12k-use-fw_features-only-when-it-is-valid.patch    
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/wifi-ath12k-use-fw_features-only-when-it-is-valid.patch    
2025-06-21 21:18:07.000000000 +0200
@@ -0,0 +1,69 @@
+From 6b85b83e46516ce38ce82dd2f1c4e40d183aa311 Mon Sep 17 00:00:00 2001
+From: Baochen Qiang <quic_bqi...@quicinc.com>
+Date: Wed, 9 Apr 2025 10:26:35 +0800
+Subject: [PATCH] wifi: ath12k: use fw_features only when it is valid
+Git-commit: 6b85b83e46516ce38ce82dd2f1c4e40d183aa311
+Patch-mainline: v6.16-rc1
+References: bsc#1243995
+
+Currently fw_features is used to check if a specific feature is supported
+or not: if the feature bit is set the feature is believed to be supported,
+otherwise not supported. Since fw_features is populated only when using
+firmware API-2, and by default it is zero, in case of API-1 such as
+WCN7850 firmware it is possible that a feature is not enabled by host
+while actually firmware supports it.
+
+To avoid this, add a new flag indicating whether fw_features has been ever
+populated or not, and only when that flag is true we choose to believe
+fw_features. This benefits firmware MLO capability validation in an
+upcoming patch.
+
+Tested-on: WCN7850 hw2.0 PCI 
WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
+Tested-on: WCN7850 hw2.0 PCI 
WLAN.HMT.1.1.c5-00284-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
+Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00209-QCAHKSWPL_SILICONZ-1
+
+Signed-off-by: Baochen Qiang <quic_bqi...@quicinc.com>
+Link: 
https://patch.msgid.link/20250409-ath12k-wcn7850-mlo-support-v2-2-3801132ca...@quicinc.com
+Signed-off-by: Jeff Johnson <jeff.john...@oss.qualcomm.com>
+Acked-by: Takashi Iwai <ti...@suse.de>
+
+---
+ drivers/net/wireless/ath/ath12k/core.h | 1 +
+ drivers/net/wireless/ath/ath12k/fw.c   | 4 +++-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/wireless/ath/ath12k/core.h 
b/drivers/net/wireless/ath/ath12k/core.h
+index 44e02ebb1071..ad39537786c3 100644
+--- a/drivers/net/wireless/ath/ath12k/core.h
++++ b/drivers/net/wireless/ath/ath12k/core.h
+@@ -1087,6 +1087,7 @@ struct ath12k_base {
+               size_t m3_len;
+ 
+               DECLARE_BITMAP(fw_features, ATH12K_FW_FEATURE_COUNT);
++              bool fw_features_valid;
+       } fw;
+ 
+       const struct hal_rx_ops *hal_rx_ops;
+diff --git a/drivers/net/wireless/ath/ath12k/fw.c 
b/drivers/net/wireless/ath/ath12k/fw.c
+index af8b87ca4ccb..5ac497f80cad 100644
+--- a/drivers/net/wireless/ath/ath12k/fw.c
++++ b/drivers/net/wireless/ath/ath12k/fw.c
+@@ -99,6 +99,8 @@ static int ath12k_fw_request_firmware_api_n(struct 
ath12k_base *ab,
+                                       __set_bit(i, ab->fw.fw_features);
+                       }
+ 
++                      ab->fw.fw_features_valid = true;
++
+                       ath12k_dbg_dump(ab, ATH12K_DBG_BOOT, "features", "",
+                                       ab->fw.fw_features,
+                                       sizeof(ab->fw.fw_features));
+@@ -172,5 +174,5 @@ void ath12k_fw_unmap(struct ath12k_base *ab)
+ 
+ bool ath12k_fw_feature_supported(struct ath12k_base *ab, enum 
ath12k_fw_features feat)
+ {
+-      return test_bit(feat, ab->fw.fw_features);
++      return ab->fw.fw_features_valid && test_bit(feat, ab->fw.fw_features);
+ }
+-- 
+2.49.0
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/patches.suse/wifi-remove-zero-length-arrays.patch 
new/patches.suse/wifi-remove-zero-length-arrays.patch
--- old/patches.suse/wifi-remove-zero-length-arrays.patch       1970-01-01 
01:00:00.000000000 +0100
+++ new/patches.suse/wifi-remove-zero-length-arrays.patch       2025-06-21 
21:18:07.000000000 +0200
@@ -0,0 +1,84 @@
+From: Johannes Berg <johannes.b...@intel.com>
+Date: Sat, 14 Jun 2025 00:30:37 +0200
+Subject: wifi: remove zero-length arrays
+References: git-fixes
+Git-commit: a85b8544d46390469b6ca72d6bfd3ecb7be985ff
+Patch-mainline: v6.16
+
+All of these are really meant to be variable-length, and
+in the case of s1g_beacon it's actually accessed. Make that
+one in particular, and a couple of others (that aren't used
+as arrays now), actually variable.
+
+Reported-by: syzbot+fd222bb38e916df26...@syzkaller.appspotmail.com
+Fixes: 1e1f706fc2ce ("wifi: cfg80211/mac80211: correctly parse S1G beacon 
optional elements")
+Link: 
https://patch.msgid.link/20250614003037.a3e82e882251.I2e8b58e56ff2a9f8b06c66f036578b7c1d4e4685@changeid
+Signed-off-by: Johannes Berg <johannes.b...@intel.com>
+Signed-off-by: Jiri Slaby <jsl...@suse.cz>
+---
+ include/linux/ieee80211.h |   18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+--- a/include/linux/ieee80211.h
++++ b/include/linux/ieee80211.h
+@@ -1278,7 +1278,7 @@ struct ieee80211_ext {
+                       u8 sa[ETH_ALEN];
+                       __le32 timestamp;
+                       u8 change_seq;
+-                      u8 variable[0];
++                      u8 variable[];
+               } __packed s1g_beacon;
+       } u;
+ } __packed __aligned(2);
+@@ -1536,7 +1536,7 @@ struct ieee80211_mgmt {
+                                       u8 action_code;
+                                       u8 dialog_token;
+                                       __le16 capability;
+-                                      u8 variable[0];
++                                      u8 variable[];
+                               } __packed tdls_discover_resp;
+                               struct {
+                                       u8 action_code;
+@@ -1721,35 +1721,35 @@ struct ieee80211_tdls_data {
+               struct {
+                       u8 dialog_token;
+                       __le16 capability;
+-                      u8 variable[0];
++                      u8 variable[];
+               } __packed setup_req;
+               struct {
+                       __le16 status_code;
+                       u8 dialog_token;
+                       __le16 capability;
+-                      u8 variable[0];
++                      u8 variable[];
+               } __packed setup_resp;
+               struct {
+                       __le16 status_code;
+                       u8 dialog_token;
+-                      u8 variable[0];
++                      u8 variable[];
+               } __packed setup_cfm;
+               struct {
+                       __le16 reason_code;
+-                      u8 variable[0];
++                      u8 variable[];
+               } __packed teardown;
+               struct {
+                       u8 dialog_token;
+-                      u8 variable[0];
++                      u8 variable[];
+               } __packed discover_req;
+               struct {
+                       u8 target_channel;
+                       u8 oper_class;
+-                      u8 variable[0];
++                      u8 variable[];
+               } __packed chan_switch_req;
+               struct {
+                       __le16 status_code;
+-                      u8 variable[0];
++                      u8 variable[];
+               } __packed chan_switch_resp;
+       } u;
+ } __packed;

++++++ series.conf ++++++
++++ 806 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/kernel-source/series.conf
++++ and /work/SRC/openSUSE:Factory/.kernel-source.new.7067/series.conf

++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.nV1kBJ/_old  2025-06-24 20:46:05.392695240 +0200
+++ /var/tmp/diff_new_pack.nV1kBJ/_new  2025-06-24 20:46:05.416696235 +0200
@@ -1,4 +1,4 @@
-2025-06-11 07:47:59 +0000
-GIT Revision: 3a37f077e5d3fc695953a4e3cdab52b468d08b68
+2025-06-21 19:19:18 +0000
+GIT Revision: d7f7d34a2ff1c4f06c2a04991e35a37f9fa6d9e0
 GIT Branch: stable
 

Reply via email to