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