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 2021-06-21 20:35:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kernel-source (Old)
 and      /work/SRC/openSUSE:Factory/.kernel-source.new.2625 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kernel-source"

Mon Jun 21 20:35:28 2021 rev:592 rq:900756 version:5.12.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/kernel-source/dtb-aarch64.changes        
2021-06-15 16:36:59.649657860 +0200
+++ /work/SRC/openSUSE:Factory/.kernel-source.new.2625/dtb-aarch64.changes      
2021-06-21 20:35:47.350631836 +0200
@@ -1,0 +2,446 @@
+Fri Jun 18 13:07:21 CEST 2021 - jsl...@suse.cz
+
+- Linux 5.12.12 (bsc#1012628).
+- fib: Return the correct errno code (bsc#1012628).
+- net: Return the correct errno code (bsc#1012628).
+- net/x25: Return the correct errno code (bsc#1012628).
+- rtnetlink: Fix missing error code in rtnl_bridge_notify()
+  (bsc#1012628).
+- drm/amd/amdgpu:save psp ring wptr to avoid attack (bsc#1012628).
+- drm/amd/display: Fix potential memory leak in DMUB hw_init
+  (bsc#1012628).
+- drm/amdgpu: refine amdgpu_fru_get_product_info (bsc#1012628).
+- drm/amd/display: Allow bandwidth validation for 0 streams
+  (bsc#1012628).
+- net: ipconfig: Don't override command-line hostnames or domains
+  (bsc#1012628).
+- nvme-loop: do not warn for deleted controllers during reset
+  (bsc#1012628).
+- nvme-loop: check for NVME_LOOP_Q_LIVE in
+  nvme_loop_destroy_admin_queue() (bsc#1012628).
+- nvme-loop: clear NVME_LOOP_Q_LIVE when
+  nvme_loop_configure_admin_queue() fails (bsc#1012628).
+- nvme-loop: reset queue count to 1 in
+  nvme_loop_destroy_io_queues() (bsc#1012628).
+- scsi: scsi_devinfo: Add blacklist entry for HPE OPEN-V
+  (bsc#1012628).
+- Bluetooth: Add a new USB ID for RTL8822CE (bsc#1012628).
+- scsi: qedf: Do not put host in qedf_vport_create()
+  unconditionally (bsc#1012628).
+- ethernet: myri10ge: Fix missing error code in myri10ge_probe()
+  (bsc#1012628).
+- scsi: target: core: Fix warning on realtime kernels
+  (bsc#1012628).
+- gfs2: Fix use-after-free in gfs2_glock_shrink_scan
+  (bsc#1012628).
+- mt76: mt7921: remove leftover 80+80 HE capability (bsc#1012628).
+- ALSA: hda: Add AlderLake-M PCI ID (bsc#1012628).
+- riscv: Use -mno-relax when using lld linker (bsc#1012628).
+- HID: intel-ish-hid: ipc: Add Alder Lake device IDs
+  (bsc#1012628).
+- HID: gt683r: add missing MODULE_DEVICE_TABLE (bsc#1012628).
+- HID: multitouch: Disable event reporting on suspend on the
+  Asus T101HA touchpad (bsc#1012628).
+- gfs2: Clean up revokes on normal withdraws (bsc#1012628).
+- gfs2: fix a deadlock on withdraw-during-mount (bsc#1012628).
+- gfs2: Prevent direct-I/O write fallback errors from getting lost
+  (bsc#1012628).
+- ARM: OMAP2+: Fix build warning when mmc_omap is not built
+  (bsc#1012628).
+- ARM: OMAP1: Fix use of possibly uninitialized irq variable
+  (bsc#1012628).
+- hwmon/pmbus: (q54sj108a2) The PMBUS_MFR_ID is actually 6 chars
+  instead of 5 (bsc#1012628).
+- drm/tegra: sor: Fully initialize SOR before registration
+  (bsc#1012628).
+- gpu: host1x: Split up client initalization and registration
+  (bsc#1012628).
+- drm/tegra: sor: Do not leak runtime PM reference (bsc#1012628).
+- mt76: mt7921: fix max aggregation subframes setting
+  (bsc#1012628).
+- HID: usbhid: fix info leak in hid_submit_ctrl (bsc#1012628).
+- HID: Add BUS_VIRTUAL to hid_connect logging (bsc#1012628).
+- HID: multitouch: set Stylus suffix for Stylus-application
+  devices, too (bsc#1012628).
+- HID: quirks: Add quirk for Lenovo optical mouse (bsc#1012628).
+- HID: asus: filter G713/G733 key event to prevent shutdown
+  (bsc#1012628).
+- HID: hid-sensor-hub: Return error for hid_set_field() failure
+  (bsc#1012628).
+- HID: hid-input: add mapping for emoji picker key (bsc#1012628).
+- HID: a4tech: use A4_2WHEEL_MOUSE_HACK_B8 for A4TECH NB-95
+  (bsc#1012628).
+- HID: quirks: Add HID_QUIRK_NO_INIT_REPORTS quirk for Dell K15A
+  keyboard-dock (bsc#1012628).
+- HID: quirks: Set INCREMENT_USAGE_ON_DUPLICATE for Saitek X65
+  (bsc#1012628).
+- HID: asus: Filter keyboard EC for old ROG keyboard
+  (bsc#1012628).
+- net: ieee802154: fix null deref in parse dev addr (bsc#1012628).
+- commit 0e46a2c
+
+-------------------------------------------------------------------
+Wed Jun 16 13:51:32 CEST 2021 - mbrug...@suse.com
+
+- Refresh
+  patches.suse/brcmfmac-Add-clm_blob-firmware-files-to-modinfo.patch.
+- Refresh
+  patches.suse/brcmfmac-Delete-second-brcm-folder-hierarchy.patch.
+- commit e486bc1
+
+-------------------------------------------------------------------
+Wed Jun 16 12:56:38 CEST 2021 - ti...@suse.de
+
+- Update config files: CONFIG_SND_HDA_INTEL=m for armv7hl, too (bsc#1187334)
+  It's used by openQA.
+- commit 041ff44
+
+-------------------------------------------------------------------
+Wed Jun 16 12:36:32 CEST 2021 - jsl...@suse.cz
+
+- Linux 5.12.11 (bsc#1012628).
+- proc: Track /proc/$pid/attr/ opener mm_struct (bsc#1012628).
+- ASoC: max98088: fix ni clock divider calculation (bsc#1012628).
+- ASoC: amd: fix for pcm_read() error (bsc#1012628).
+- spi: Fix spi device unregister flow (bsc#1012628).
+- spi: spi-zynq-qspi: Fix stack violation bug (bsc#1012628).
+- bpf: Forbid trampoline attach for functions with variable
+  arguments (bsc#1012628).
+- ASoC: codecs: lpass-rx-macro: add missing MODULE_DEVICE_TABLE
+  (bsc#1012628).
+- ASoC: codecs: lpass-tx-macro: add missing MODULE_DEVICE_TABLE
+  (bsc#1012628).
+- net/nfc/rawsock.c: fix a permission check bug (bsc#1012628).
+- usb: cdns3: Fix runtime PM imbalance on error (bsc#1012628).
+- ASoC: Intel: bytcr_rt5640: Add quirk for the Glavey TM800A550L
+  tablet (bsc#1012628).
+- ASoC: Intel: bytcr_rt5640: Add quirk for the Lenovo Miix 3-830
+  tablet (bsc#1012628).
+- bpf: Add deny list of btf ids check for tracing programs
+  (bsc#1012628).
+- vfio-ccw: Reset FSM state to IDLE inside FSM (bsc#1012628).
+- vfio-ccw: Serialize FSM IDLE state with I/O completion
+  (bsc#1012628).
+- ASoC: sti-sas: add missing MODULE_DEVICE_TABLE (bsc#1012628).
+- spi: sprd: Add missing MODULE_DEVICE_TABLE (bsc#1012628).
+- usb: chipidea: udc: assign interrupt number to USB gadget
+  structure (bsc#1012628).
+- isdn: mISDN: netjet: Fix crash in nj_probe: (bsc#1012628).
+- bonding: init notify_work earlier to avoid uninitialized use
+  (bsc#1012628).
+- netlink: disable IRQs for netlink_lock_table() (bsc#1012628).
+- net: mdiobus: get rid of a BUG_ON() (bsc#1012628).
+- cgroup: disable controllers at parse time (bsc#1012628).
+- wq: handle VM suspension in stall detection (bsc#1012628).
+- net/qla3xxx: fix schedule while atomic in ql_sem_spinlock
+  (bsc#1012628).
+- RDS tcp loopback connection can hang (bsc#1012628).
+- net:sfc: fix non-freed irq in legacy irq mode (bsc#1012628).
+- scsi: bnx2fc: Return failure if io_req is already in ABTS
+  processing (bsc#1012628).
+- scsi: vmw_pvscsi: Set correct residual data length
+  (bsc#1012628).
+- scsi: hisi_sas: Drop free_irq() of devm_request_irq() allocated
+  irq (bsc#1012628).
+- scsi: target: qla2xxx: Wait for stop_phase1 at WWN removal
+  (bsc#1012628).
+- net: macb: ensure the device is available before accessing
+  GEMGXL control registers (bsc#1012628).
+- net: appletalk: cops: Fix data race in cops_probe1
+  (bsc#1012628).
+- net: dsa: microchip: enable phy errata workaround on 9567
+  (bsc#1012628).
+- Makefile: LTO: have linker check -Wframe-larger-than
+  (bsc#1012628).
+- nvme-fabrics: decode host pathing error for connect
+  (bsc#1012628).
+- MIPS: Fix kernel hang under FUNCTION_GRAPH_TRACER and
+  PREEMPT_TRACER (bsc#1012628).
+- bpf, selftests: Adjust few selftest result_unpriv outcomes
+  (bsc#1012628).
+- dm verity: fix require_signatures module_param permissions
+  (bsc#1012628).
+- bnx2x: Fix missing error code in bnx2x_iov_init_one()
+  (bsc#1012628).
+- nvme-tcp: remove incorrect Kconfig dep in BLK_DEV_NVME
+  (bsc#1012628).
+- nvmet: fix false keep-alive timeout when a controller is torn
+  down (bsc#1012628).
+- powerpc/fsl: set fsl,i2c-erratum-a004447 flag for P2041 i2c
+  controllers (bsc#1012628).
+- powerpc/fsl: set fsl,i2c-erratum-a004447 flag for P1010 i2c
+  controllers (bsc#1012628).
+- spi: Don't have controller clean up spi device before driver
+  unbind (bsc#1012628).
+- spi: Cleanup on failure of initial setup (bsc#1012628).
+- i2c: mpc: Make use of i2c_recover_bus() (bsc#1012628).
+- i2c: mpc: implement erratum A-004447 workaround (bsc#1012628).
+- ALSA: seq: Fix race of snd_seq_timer_open() (bsc#1012628).
+- ALSA: firewire-lib: fix the context to call snd_pcm_stop_xrun()
+  (bsc#1012628).
+- ALSA: hda/realtek: headphone and mic don't work on an Acer
+  laptop (bsc#1012628).
+- ALSA: hda/realtek: fix mute/micmute LEDs and speaker for HP
+  Elite Dragonfly G2 (bsc#1012628).
+- ALSA: hda/realtek: fix mute/micmute LEDs and speaker for HP
+  EliteBook x360 1040 G8 (bsc#1012628).
+- ALSA: hda/realtek: fix mute/micmute LEDs for HP EliteBook 840
+  Aero G8 (bsc#1012628).
+- ALSA: hda/realtek: fix mute/micmute LEDs for HP ZBook Power G8
+  (bsc#1012628).
+- spi: bcm2835: Fix out-of-bounds access with more than 4 slaves
+  (bsc#1012628).
+- Revert "ACPI: sleep: Put the FACS table after using it"
+  (bsc#1012628).
+- drm: Fix use-after-free read in drm_getunique() (bsc#1012628).
+- drm: Lock pointer access in drm_master_release() (bsc#1012628).
+- x86, lto: Pass -stack-alignment only on LLD < 13.0.0
++++ 285 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/kernel-source/dtb-aarch64.changes
++++ and /work/SRC/openSUSE:Factory/.kernel-source.new.2625/dtb-aarch64.changes
dtb-armv6l.changes: same change
dtb-armv7l.changes: same change
dtb-riscv64.changes: same change
kernel-64kb.changes: same change
kernel-debug.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

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

Other differences:
------------------
++++++ dtb-aarch64.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.554637167 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.554637167 +0200
@@ -17,7 +17,7 @@
 
 
 %define srcversion 5.12
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -29,9 +29,9 @@
 %(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,klp-symbols,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
 
 Name:           dtb-aarch64
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif

dtb-armv6l.spec: same change
dtb-armv7l.spec: same change
dtb-riscv64.spec: same change
++++++ kernel-64kb.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.654637294 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.654637294 +0200
@@ -18,7 +18,7 @@
 
 
 %define srcversion 5.12
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 %define vanilla_only 0
 %define compress_modules xz
@@ -54,6 +54,10 @@
 %define config_vars CONFIG_MODULES CONFIG_MODULE_SIG CONFIG_KMSG_IDS 
CONFIG_SUSE_KERNEL_SUPPORTED CONFIG_EFI_STUB CONFIG_LIVEPATCH_IPA_CLONES
 %{expand:%(eval "$(test -n "%cpu_arch_flavor" && tar -xjf 
%_sourcedir/config.tar.bz2 --to-stdout config/%cpu_arch_flavor)"; for config in 
%config_vars; do echo "%%global $config ${!config:-n}"; done)}
 %define split_extra ("%CONFIG_MODULES" == "y" && 
"%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
+
+# Split Leap-only modules to kernel-*-optional subpackage?
+%define split_optional 0
+
 %if "%CONFIG_MODULES" != "y"
        %define klp_symbols 0
 %endif
@@ -68,9 +72,9 @@
 Summary:        Kernel with 64kb PAGE_SIZE
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif
@@ -181,10 +185,10 @@
 Conflicts:      libc.so.6()(64bit)
 %endif
 Provides:       kernel = %version-%source_rel
-Provides:       
kernel-%build_flavor-base-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
-Provides:       kernel-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       
kernel-%build_flavor-base-srchash-0e46a2c644754074b091f728831994304f5dbff0
+Provides:       kernel-srchash-0e46a2c644754074b091f728831994304f5dbff0
 # END COMMON DEPS
-Provides:       %name-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       %name-srchash-0e46a2c644754074b091f728831994304f5dbff0
 %obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
@@ -378,20 +382,25 @@
 mkdir -p %kernel_build_dir
 
 # Generate a list of modules with their support status marking
+# The first marker is supposed to be either "+external", "-" or "-!optional",
+# where "+external" is for an externally supported module, "-" is for an
+# unsuppored module, "-!optional" is for Leap-only unsupported module.
+# There can be an optional arch-specific second marker with "+arch" (e.g.
+# +arm64), which enforces the module to be supported on the specific arch.
 %_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
-awk '
-       /\+external / {
-               print $(NF) " external";
-               next;
-       }
-       /^-/ {
-               print $(NF) " no";
-               next;
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+external") {
+               t = " external";
+       } else if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = " no";
        }
-       {
-               print $(NF);
        }
-' >%kernel_build_dir/Module.supported
+    print $(NF) t;
+}' >%kernel_build_dir/Module.supported
 subpackages=(
        base
 %if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
@@ -403,6 +412,22 @@
                <%_sourcedir/supported.conf | sed 's,.*/,,; s,\.ko$,,' | \
                sort -u >%kernel_build_dir/Module."$package"
 done
+%if %split_extra && %split_optional
+# Module.optional is in a special form, containing guard markers for
+# both extra and optional modules, which is processed by split-modules
+%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = $i
+       }
+    }
+    if (t != "") {print t,$(NF);}
+}' >%kernel_build_dir/Module.optional
+%endif
 
 cd linux-%srcversion
 
@@ -532,7 +557,7 @@
 make clean $MAKE_ARGS
 
 rm -f source
-find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' -printf '%%P\n' \
+find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' ! -name 
'Module.optional' -printf '%%P\n' \
        > %my_builddir/obj-files
 
 %build
@@ -720,7 +745,11 @@
     done
 fi
 
-for sub in '' '-extra'; do
+for sub in '' '-extra' \
+%if %split_extra && %split_optional
+    '-optional' \
+%endif
+; do
     case "$sub" in
     '') base_package=1 ;;
     *) base_package=0 ;;
@@ -822,7 +851,7 @@
         echo %obj_install_dir/%cpu_arch/%build_flavor/Symbols.list > 
%my_builddir/livepatch-files.no_dir
 
         %if "%CONFIG_LIVEPATCH_IPA_CLONES" == "y"
-            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' > ipa-clones.list
+            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' | sort > ipa-clones.list
             cp ipa-clones.list %rpm_install_dir/%cpu_arch/%build_flavor
             echo %obj_install_dir/%cpu_arch/%build_flavor/ipa-clones.list >> 
%my_builddir/livepatch-files.no_dir
             tar -C %kernel_build_dir --verbatim-files-from -T ipa-clones.list 
-cf- | tar -C %rpm_install_dir/%cpu_arch/%build_flavor -xvf-
@@ -941,6 +970,8 @@
         sh ../scripts/mkmakefile ../../../%{basename:%src_install_dir} \
             %rpm_install_dir/%cpu_arch_flavor \
             $(echo %srcversion | sed -r 's/^([0-9]+)\.([0-9]+).*/\1 \2/')
+    else
+       echo include ../../../%{basename:%src_install_dir}/Makefile > 
%rpm_install_dir/%cpu_arch_flavor/Makefile
     fi
 fi
 
@@ -1035,8 +1066,12 @@
        echo "/lib/firmware/%kernelrelease-%build_flavor"
     fi
 } > %my_builddir/kernel-main.files
+
 %if %split_extra
     add_dirs_to_filelist %my_builddir/unsupported-modules > 
%my_builddir/kernel-extra.files
+%if %split_extra && %split_optional
+    add_dirs_to_filelist %my_builddir/optional-modules > 
%my_builddir/kernel-optional.files
+%endif
 
 %if 0%{?sle_version} >= 150000
     # By default, loading unsupported modules is disabled on SLE through
@@ -1104,6 +1139,7 @@
 %obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SLED):%{name}_%_target_cpu)
 Supplements:    packageand(product(sle-we):%{name}_%_target_cpu)
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1132,6 +1168,45 @@
 %defattr(-, root, root)
 %endif
 
+%if %split_extra && %split_optional
+%package optional
+Summary:        Kernel with 64kb PAGE_SIZE - Optional kernel modules
+Group:          System/Kernel
+Url:            http://www.kernel.org/
+Provides:       %name-optional_%_target_cpu = %version-%source_rel
+Provides:       kernel-optional = %version-%source_rel
+Provides:       multiversion(kernel)
+Requires:       %name-extra_%_target_cpu = %version-%source_rel
+Requires(pre):  coreutils awk
+Requires(post): modutils
+Requires(post): perl-Bootloader
+Requires(post): mkinitrd
+%obsolete_rebuilds %name-optional
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
+%ifarch %ix86
+Conflicts:      libc.so.6()(64bit)
+%endif
+
+%description optional
+This kernel is identical to the default kernel, but is configured with
+64kb page size granule. Its main purpose is to serve as compatibility
+kernel for systems that were installed when the default kernel was still
+configured with 64kb page size granule.
+
+This package contains optional modules only for openSUSE Leap.
+
+
+%source_timestamp
+
+%preun optional -f preun-optional.sh
+%postun optional -f postun-optional.sh
+%pre optional -f pre-optional.sh
+%post optional -f post-optional.sh
+
+%files optional -f kernel-optional.files
+%defattr(-, root, root)
+%endif
+
 %if "%CONFIG_KMSG_IDS" == "y"
 
 %package man

++++++ kernel-debug.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.682637329 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.686637335 +0200
@@ -18,7 +18,7 @@
 
 
 %define srcversion 5.12
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 %define vanilla_only 0
 %define compress_modules xz
@@ -54,6 +54,10 @@
 %define config_vars CONFIG_MODULES CONFIG_MODULE_SIG CONFIG_KMSG_IDS 
CONFIG_SUSE_KERNEL_SUPPORTED CONFIG_EFI_STUB CONFIG_LIVEPATCH_IPA_CLONES
 %{expand:%(eval "$(test -n "%cpu_arch_flavor" && tar -xjf 
%_sourcedir/config.tar.bz2 --to-stdout config/%cpu_arch_flavor)"; for config in 
%config_vars; do echo "%%global $config ${!config:-n}"; done)}
 %define split_extra ("%CONFIG_MODULES" == "y" && 
"%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
+
+# Split Leap-only modules to kernel-*-optional subpackage?
+%define split_optional 0
+
 %if "%CONFIG_MODULES" != "y"
        %define klp_symbols 0
 %endif
@@ -68,9 +72,9 @@
 Summary:        A Debug Version of the Kernel
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif
@@ -181,10 +185,10 @@
 Conflicts:      libc.so.6()(64bit)
 %endif
 Provides:       kernel = %version-%source_rel
-Provides:       
kernel-%build_flavor-base-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
-Provides:       kernel-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       
kernel-%build_flavor-base-srchash-0e46a2c644754074b091f728831994304f5dbff0
+Provides:       kernel-srchash-0e46a2c644754074b091f728831994304f5dbff0
 # END COMMON DEPS
-Provides:       %name-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       %name-srchash-0e46a2c644754074b091f728831994304f5dbff0
 %ifarch ppc64
 Provides:       kernel-kdump = 2.6.28
 Obsoletes:      kernel-kdump <= 2.6.28
@@ -384,20 +388,25 @@
 mkdir -p %kernel_build_dir
 
 # Generate a list of modules with their support status marking
+# The first marker is supposed to be either "+external", "-" or "-!optional",
+# where "+external" is for an externally supported module, "-" is for an
+# unsuppored module, "-!optional" is for Leap-only unsupported module.
+# There can be an optional arch-specific second marker with "+arch" (e.g.
+# +arm64), which enforces the module to be supported on the specific arch.
 %_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
-awk '
-       /\+external / {
-               print $(NF) " external";
-               next;
-       }
-       /^-/ {
-               print $(NF) " no";
-               next;
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+external") {
+               t = " external";
+       } else if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = " no";
        }
-       {
-               print $(NF);
        }
-' >%kernel_build_dir/Module.supported
+    print $(NF) t;
+}' >%kernel_build_dir/Module.supported
 subpackages=(
        base
 %if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
@@ -409,6 +418,22 @@
                <%_sourcedir/supported.conf | sed 's,.*/,,; s,\.ko$,,' | \
                sort -u >%kernel_build_dir/Module."$package"
 done
+%if %split_extra && %split_optional
+# Module.optional is in a special form, containing guard markers for
+# both extra and optional modules, which is processed by split-modules
+%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = $i
+       }
+    }
+    if (t != "") {print t,$(NF);}
+}' >%kernel_build_dir/Module.optional
+%endif
 
 cd linux-%srcversion
 
@@ -538,7 +563,7 @@
 make clean $MAKE_ARGS
 
 rm -f source
-find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' -printf '%%P\n' \
+find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' ! -name 
'Module.optional' -printf '%%P\n' \
        > %my_builddir/obj-files
 
 %build
@@ -726,7 +751,11 @@
     done
 fi
 
-for sub in '' '-extra'; do
+for sub in '' '-extra' \
+%if %split_extra && %split_optional
+    '-optional' \
+%endif
+; do
     case "$sub" in
     '') base_package=1 ;;
     *) base_package=0 ;;
@@ -828,7 +857,7 @@
         echo %obj_install_dir/%cpu_arch/%build_flavor/Symbols.list > 
%my_builddir/livepatch-files.no_dir
 
         %if "%CONFIG_LIVEPATCH_IPA_CLONES" == "y"
-            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' > ipa-clones.list
+            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' | sort > ipa-clones.list
             cp ipa-clones.list %rpm_install_dir/%cpu_arch/%build_flavor
             echo %obj_install_dir/%cpu_arch/%build_flavor/ipa-clones.list >> 
%my_builddir/livepatch-files.no_dir
             tar -C %kernel_build_dir --verbatim-files-from -T ipa-clones.list 
-cf- | tar -C %rpm_install_dir/%cpu_arch/%build_flavor -xvf-
@@ -947,6 +976,8 @@
         sh ../scripts/mkmakefile ../../../%{basename:%src_install_dir} \
             %rpm_install_dir/%cpu_arch_flavor \
             $(echo %srcversion | sed -r 's/^([0-9]+)\.([0-9]+).*/\1 \2/')
+    else
+       echo include ../../../%{basename:%src_install_dir}/Makefile > 
%rpm_install_dir/%cpu_arch_flavor/Makefile
     fi
 fi
 
@@ -1041,8 +1072,12 @@
        echo "/lib/firmware/%kernelrelease-%build_flavor"
     fi
 } > %my_builddir/kernel-main.files
+
 %if %split_extra
     add_dirs_to_filelist %my_builddir/unsupported-modules > 
%my_builddir/kernel-extra.files
+%if %split_extra && %split_optional
+    add_dirs_to_filelist %my_builddir/optional-modules > 
%my_builddir/kernel-optional.files
+%endif
 
 %if 0%{?sle_version} >= 150000
     # By default, loading unsupported modules is disabled on SLE through
@@ -1114,6 +1149,7 @@
 %obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SLED):%{name}_%_target_cpu)
 Supplements:    packageand(product(sle-we):%{name}_%_target_cpu)
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1140,6 +1176,47 @@
 %defattr(-, root, root)
 %endif
 
+%if %split_extra && %split_optional
+%package optional
+Summary:        A Debug Version of the Kernel - Optional kernel modules
+Group:          System/Kernel
+Url:            http://www.kernel.org/
+Provides:       %name-optional_%_target_cpu = %version-%source_rel
+Provides:       kernel-optional = %version-%source_rel
+Provides:       multiversion(kernel)
+Requires:       %name-extra_%_target_cpu = %version-%source_rel
+Requires(pre):  coreutils awk
+Requires(post): modutils
+Requires(post): perl-Bootloader
+Requires(post): mkinitrd
+%ifarch ppc64
+Provides:       kernel-kdump-optional = 2.6.28
+Obsoletes:      kernel-kdump-optional <= 2.6.28
+%endif
+%obsolete_rebuilds %name-optional
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
+%ifarch %ix86
+Conflicts:      libc.so.6()(64bit)
+%endif
+
+%description optional
+This kernel has several debug facilities enabled that hurt performance.
+Only use this kernel when investigating problems.
+
+This package contains optional modules only for openSUSE Leap.
+
+
+%source_timestamp
+
+%preun optional -f preun-optional.sh
+%postun optional -f postun-optional.sh
+%pre optional -f pre-optional.sh
+%post optional -f post-optional.sh
+
+%files optional -f kernel-optional.files
+%defattr(-, root, root)
+%endif
+
 %if "%CONFIG_KMSG_IDS" == "y"
 
 %package man

++++++ kernel-default.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.706637360 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.710637365 +0200
@@ -18,7 +18,7 @@
 
 
 %define srcversion 5.12
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 %define vanilla_only 0
 %define compress_modules xz
@@ -54,6 +54,10 @@
 %define config_vars CONFIG_MODULES CONFIG_MODULE_SIG CONFIG_KMSG_IDS 
CONFIG_SUSE_KERNEL_SUPPORTED CONFIG_EFI_STUB CONFIG_LIVEPATCH_IPA_CLONES
 %{expand:%(eval "$(test -n "%cpu_arch_flavor" && tar -xjf 
%_sourcedir/config.tar.bz2 --to-stdout config/%cpu_arch_flavor)"; for config in 
%config_vars; do echo "%%global $config ${!config:-n}"; done)}
 %define split_extra ("%CONFIG_MODULES" == "y" && 
"%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
+
+# Split Leap-only modules to kernel-*-optional subpackage?
+%define split_optional 0
+
 %if "%CONFIG_MODULES" != "y"
        %define klp_symbols 0
 %endif
@@ -68,9 +72,9 @@
 Summary:        The Standard Kernel
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif
@@ -181,10 +185,10 @@
 Conflicts:      libc.so.6()(64bit)
 %endif
 Provides:       kernel = %version-%source_rel
-Provides:       
kernel-%build_flavor-base-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
-Provides:       kernel-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       
kernel-%build_flavor-base-srchash-0e46a2c644754074b091f728831994304f5dbff0
+Provides:       kernel-srchash-0e46a2c644754074b091f728831994304f5dbff0
 # END COMMON DEPS
-Provides:       %name-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       %name-srchash-0e46a2c644754074b091f728831994304f5dbff0
 %ifarch %ix86
 Provides:       kernel-smp = 2.6.17
 Obsoletes:      kernel-smp <= 2.6.17
@@ -427,20 +431,25 @@
 mkdir -p %kernel_build_dir
 
 # Generate a list of modules with their support status marking
+# The first marker is supposed to be either "+external", "-" or "-!optional",
+# where "+external" is for an externally supported module, "-" is for an
+# unsuppored module, "-!optional" is for Leap-only unsupported module.
+# There can be an optional arch-specific second marker with "+arch" (e.g.
+# +arm64), which enforces the module to be supported on the specific arch.
 %_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
-awk '
-       /\+external / {
-               print $(NF) " external";
-               next;
-       }
-       /^-/ {
-               print $(NF) " no";
-               next;
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+external") {
+               t = " external";
+       } else if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = " no";
        }
-       {
-               print $(NF);
        }
-' >%kernel_build_dir/Module.supported
+    print $(NF) t;
+}' >%kernel_build_dir/Module.supported
 subpackages=(
        base
 %if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
@@ -452,6 +461,22 @@
                <%_sourcedir/supported.conf | sed 's,.*/,,; s,\.ko$,,' | \
                sort -u >%kernel_build_dir/Module."$package"
 done
+%if %split_extra && %split_optional
+# Module.optional is in a special form, containing guard markers for
+# both extra and optional modules, which is processed by split-modules
+%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = $i
+       }
+    }
+    if (t != "") {print t,$(NF);}
+}' >%kernel_build_dir/Module.optional
+%endif
 
 cd linux-%srcversion
 
@@ -581,7 +606,7 @@
 make clean $MAKE_ARGS
 
 rm -f source
-find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' -printf '%%P\n' \
+find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' ! -name 
'Module.optional' -printf '%%P\n' \
        > %my_builddir/obj-files
 
 %build
@@ -769,7 +794,11 @@
     done
 fi
 
-for sub in '' '-extra'; do
+for sub in '' '-extra' \
+%if %split_extra && %split_optional
+    '-optional' \
+%endif
+; do
     case "$sub" in
     '') base_package=1 ;;
     *) base_package=0 ;;
@@ -871,7 +900,7 @@
         echo %obj_install_dir/%cpu_arch/%build_flavor/Symbols.list > 
%my_builddir/livepatch-files.no_dir
 
         %if "%CONFIG_LIVEPATCH_IPA_CLONES" == "y"
-            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' > ipa-clones.list
+            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' | sort > ipa-clones.list
             cp ipa-clones.list %rpm_install_dir/%cpu_arch/%build_flavor
             echo %obj_install_dir/%cpu_arch/%build_flavor/ipa-clones.list >> 
%my_builddir/livepatch-files.no_dir
             tar -C %kernel_build_dir --verbatim-files-from -T ipa-clones.list 
-cf- | tar -C %rpm_install_dir/%cpu_arch/%build_flavor -xvf-
@@ -990,6 +1019,8 @@
         sh ../scripts/mkmakefile ../../../%{basename:%src_install_dir} \
             %rpm_install_dir/%cpu_arch_flavor \
             $(echo %srcversion | sed -r 's/^([0-9]+)\.([0-9]+).*/\1 \2/')
+    else
+       echo include ../../../%{basename:%src_install_dir}/Makefile > 
%rpm_install_dir/%cpu_arch_flavor/Makefile
     fi
 fi
 
@@ -1084,8 +1115,12 @@
        echo "/lib/firmware/%kernelrelease-%build_flavor"
     fi
 } > %my_builddir/kernel-main.files
+
 %if %split_extra
     add_dirs_to_filelist %my_builddir/unsupported-modules > 
%my_builddir/kernel-extra.files
+%if %split_extra && %split_optional
+    add_dirs_to_filelist %my_builddir/optional-modules > 
%my_builddir/kernel-optional.files
+%endif
 
 %if 0%{?sle_version} >= 150000
     # By default, loading unsupported modules is disabled on SLE through
@@ -1177,6 +1212,7 @@
 %obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SLED):%{name}_%_target_cpu)
 Supplements:    packageand(product(sle-we):%{name}_%_target_cpu)
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1202,6 +1238,66 @@
 %defattr(-, root, root)
 %endif
 
+%if %split_extra && %split_optional
+%package optional
+Summary:        The Standard Kernel - Optional kernel modules
+Group:          System/Kernel
+Url:            http://www.kernel.org/
+Provides:       %name-optional_%_target_cpu = %version-%source_rel
+Provides:       kernel-optional = %version-%source_rel
+Provides:       multiversion(kernel)
+Requires:       %name-extra_%_target_cpu = %version-%source_rel
+Requires(pre):  coreutils awk
+Requires(post): modutils
+Requires(post): perl-Bootloader
+Requires(post): mkinitrd
+%ifarch %ix86
+Provides:       kernel-trace-optional = 3.13
+Obsoletes:      kernel-trace-optional <= 3.13
+%endif
+%ifarch ppc64
+Provides:       kernel-kdump-optional = 2.6.28
+Obsoletes:      kernel-kdump-optional <= 2.6.28
+%endif
+%ifarch s390x
+Provides:       kernel-trace-optional = 3.13
+Obsoletes:      kernel-trace-optional <= 3.13
+%endif
+%ifarch x86_64
+Provides:       kernel-trace-optional = 3.13
+Obsoletes:      kernel-trace-optional <= 3.13
+Provides:       kernel-bigsmp-optional = 3.1
+Obsoletes:      kernel-bigsmp-optional <= 3.1
+Provides:       kernel-desktop-optional = 4.3
+Obsoletes:      kernel-desktop-optional <= 4.3
+Provides:       kernel-xen-optional = 4.4
+Obsoletes:      kernel-xen-optional <= 4.4
+Provides:       kernel-ec2-optional = 4.4
+Obsoletes:      kernel-ec2-optional <= 4.4
+%endif
+%obsolete_rebuilds %name-optional
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
+%ifarch %ix86
+Conflicts:      libc.so.6()(64bit)
+%endif
+
+%description optional
+The standard kernel for both uniprocessor and multiprocessor systems.
+
+This package contains optional modules only for openSUSE Leap.
+
+
+%source_timestamp
+
+%preun optional -f preun-optional.sh
+%postun optional -f postun-optional.sh
+%pre optional -f pre-optional.sh
+%post optional -f post-optional.sh
+
+%files optional -f kernel-optional.files
+%defattr(-, root, root)
+%endif
+
 %if "%CONFIG_KMSG_IDS" == "y"
 
 %package man

++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.734637395 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.734637395 +0200
@@ -17,7 +17,7 @@
 
 
 %define srcversion 5.12
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -31,9 +31,9 @@
 Summary:        Kernel Documentation
 License:        GPL-2.0
 Group:          Documentation/Man
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif
@@ -64,7 +64,7 @@
 %endif
 Url:            http://www.kernel.org/
 Provides:       %name = %version-%source_rel
-Provides:       %name-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       %name-srchash-0e46a2c644754074b091f728831994304f5dbff0
 BuildArch:      noarch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Source0:        
http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz

++++++ kernel-kvmsmall.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.758637426 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.762637431 +0200
@@ -18,7 +18,7 @@
 
 
 %define srcversion 5.12
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 %define vanilla_only 0
 %define compress_modules xz
@@ -54,6 +54,10 @@
 %define config_vars CONFIG_MODULES CONFIG_MODULE_SIG CONFIG_KMSG_IDS 
CONFIG_SUSE_KERNEL_SUPPORTED CONFIG_EFI_STUB CONFIG_LIVEPATCH_IPA_CLONES
 %{expand:%(eval "$(test -n "%cpu_arch_flavor" && tar -xjf 
%_sourcedir/config.tar.bz2 --to-stdout config/%cpu_arch_flavor)"; for config in 
%config_vars; do echo "%%global $config ${!config:-n}"; done)}
 %define split_extra ("%CONFIG_MODULES" == "y" && 
"%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
+
+# Split Leap-only modules to kernel-*-optional subpackage?
+%define split_optional 0
+
 %if "%CONFIG_MODULES" != "y"
        %define klp_symbols 0
 %endif
@@ -68,9 +72,9 @@
 Summary:        The Small Developer Kernel for KVM
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif
@@ -181,10 +185,10 @@
 Conflicts:      libc.so.6()(64bit)
 %endif
 Provides:       kernel = %version-%source_rel
-Provides:       
kernel-%build_flavor-base-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
-Provides:       kernel-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       
kernel-%build_flavor-base-srchash-0e46a2c644754074b091f728831994304f5dbff0
+Provides:       kernel-srchash-0e46a2c644754074b091f728831994304f5dbff0
 # END COMMON DEPS
-Provides:       %name-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       %name-srchash-0e46a2c644754074b091f728831994304f5dbff0
 %obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
@@ -382,20 +386,25 @@
 mkdir -p %kernel_build_dir
 
 # Generate a list of modules with their support status marking
+# The first marker is supposed to be either "+external", "-" or "-!optional",
+# where "+external" is for an externally supported module, "-" is for an
+# unsuppored module, "-!optional" is for Leap-only unsupported module.
+# There can be an optional arch-specific second marker with "+arch" (e.g.
+# +arm64), which enforces the module to be supported on the specific arch.
 %_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
-awk '
-       /\+external / {
-               print $(NF) " external";
-               next;
-       }
-       /^-/ {
-               print $(NF) " no";
-               next;
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+external") {
+               t = " external";
+       } else if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = " no";
        }
-       {
-               print $(NF);
        }
-' >%kernel_build_dir/Module.supported
+    print $(NF) t;
+}' >%kernel_build_dir/Module.supported
 subpackages=(
        base
 %if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
@@ -407,6 +416,22 @@
                <%_sourcedir/supported.conf | sed 's,.*/,,; s,\.ko$,,' | \
                sort -u >%kernel_build_dir/Module."$package"
 done
+%if %split_extra && %split_optional
+# Module.optional is in a special form, containing guard markers for
+# both extra and optional modules, which is processed by split-modules
+%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = $i
+       }
+    }
+    if (t != "") {print t,$(NF);}
+}' >%kernel_build_dir/Module.optional
+%endif
 
 cd linux-%srcversion
 
@@ -536,7 +561,7 @@
 make clean $MAKE_ARGS
 
 rm -f source
-find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' -printf '%%P\n' \
+find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' ! -name 
'Module.optional' -printf '%%P\n' \
        > %my_builddir/obj-files
 
 %build
@@ -724,7 +749,11 @@
     done
 fi
 
-for sub in '' '-extra'; do
+for sub in '' '-extra' \
+%if %split_extra && %split_optional
+    '-optional' \
+%endif
+; do
     case "$sub" in
     '') base_package=1 ;;
     *) base_package=0 ;;
@@ -826,7 +855,7 @@
         echo %obj_install_dir/%cpu_arch/%build_flavor/Symbols.list > 
%my_builddir/livepatch-files.no_dir
 
         %if "%CONFIG_LIVEPATCH_IPA_CLONES" == "y"
-            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' > ipa-clones.list
+            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' | sort > ipa-clones.list
             cp ipa-clones.list %rpm_install_dir/%cpu_arch/%build_flavor
             echo %obj_install_dir/%cpu_arch/%build_flavor/ipa-clones.list >> 
%my_builddir/livepatch-files.no_dir
             tar -C %kernel_build_dir --verbatim-files-from -T ipa-clones.list 
-cf- | tar -C %rpm_install_dir/%cpu_arch/%build_flavor -xvf-
@@ -945,6 +974,8 @@
         sh ../scripts/mkmakefile ../../../%{basename:%src_install_dir} \
             %rpm_install_dir/%cpu_arch_flavor \
             $(echo %srcversion | sed -r 's/^([0-9]+)\.([0-9]+).*/\1 \2/')
+    else
+       echo include ../../../%{basename:%src_install_dir}/Makefile > 
%rpm_install_dir/%cpu_arch_flavor/Makefile
     fi
 fi
 
@@ -1039,8 +1070,12 @@
        echo "/lib/firmware/%kernelrelease-%build_flavor"
     fi
 } > %my_builddir/kernel-main.files
+
 %if %split_extra
     add_dirs_to_filelist %my_builddir/unsupported-modules > 
%my_builddir/kernel-extra.files
+%if %split_extra && %split_optional
+    add_dirs_to_filelist %my_builddir/optional-modules > 
%my_builddir/kernel-optional.files
+%endif
 
 %if 0%{?sle_version} >= 150000
     # By default, loading unsupported modules is disabled on SLE through
@@ -1108,6 +1143,7 @@
 %obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SLED):%{name}_%_target_cpu)
 Supplements:    packageand(product(sle-we):%{name}_%_target_cpu)
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1140,6 +1176,49 @@
 %defattr(-, root, root)
 %endif
 
+%if %split_extra && %split_optional
+%package optional
+Summary:        The Small Developer Kernel for KVM - Optional kernel modules
+Group:          System/Kernel
+Url:            http://www.kernel.org/
+Provides:       %name-optional_%_target_cpu = %version-%source_rel
+Provides:       kernel-optional = %version-%source_rel
+Provides:       multiversion(kernel)
+Requires:       %name-extra_%_target_cpu = %version-%source_rel
+Requires(pre):  coreutils awk
+Requires(post): modutils
+Requires(post): perl-Bootloader
+Requires(post): mkinitrd
+%obsolete_rebuilds %name-optional
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
+%ifarch %ix86
+Conflicts:      libc.so.6()(64bit)
+%endif
+
+%description optional
+This kernel is intended for kernel developers to use in simple virtual
+machines.  It contains only the device drivers necessary to use a
+KVM virtual machine *without* device passthrough enabled.  Common
+local and network file systems are enabled.  All device mapper targets
+are enabled.  Only the network and graphics drivers for devices that qemu
+emulates are enabled.  Many subsystems enabled in the default kernel
+are entirely disabled.  This kernel is meant to be small and to build
+very quickly.  The configuration may change arbitrarily between builds.
+
+This package contains optional modules only for openSUSE Leap.
+
+
+%source_timestamp
+
+%preun optional -f preun-optional.sh
+%postun optional -f postun-optional.sh
+%pre optional -f pre-optional.sh
+%post optional -f post-optional.sh
+
+%files optional -f kernel-optional.files
+%defattr(-, root, root)
+%endif
+
 %if "%CONFIG_KMSG_IDS" == "y"
 
 %package man

++++++ kernel-lpae.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.782637456 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.786637461 +0200
@@ -18,7 +18,7 @@
 
 
 %define srcversion 5.12
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 %define vanilla_only 0
 %define compress_modules xz
@@ -54,6 +54,10 @@
 %define config_vars CONFIG_MODULES CONFIG_MODULE_SIG CONFIG_KMSG_IDS 
CONFIG_SUSE_KERNEL_SUPPORTED CONFIG_EFI_STUB CONFIG_LIVEPATCH_IPA_CLONES
 %{expand:%(eval "$(test -n "%cpu_arch_flavor" && tar -xjf 
%_sourcedir/config.tar.bz2 --to-stdout config/%cpu_arch_flavor)"; for config in 
%config_vars; do echo "%%global $config ${!config:-n}"; done)}
 %define split_extra ("%CONFIG_MODULES" == "y" && 
"%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
+
+# Split Leap-only modules to kernel-*-optional subpackage?
+%define split_optional 0
+
 %if "%CONFIG_MODULES" != "y"
        %define klp_symbols 0
 %endif
@@ -68,9 +72,9 @@
 Summary:        Kernel for LPAE enabled systems
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif
@@ -181,10 +185,10 @@
 Conflicts:      libc.so.6()(64bit)
 %endif
 Provides:       kernel = %version-%source_rel
-Provides:       
kernel-%build_flavor-base-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
-Provides:       kernel-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       
kernel-%build_flavor-base-srchash-0e46a2c644754074b091f728831994304f5dbff0
+Provides:       kernel-srchash-0e46a2c644754074b091f728831994304f5dbff0
 # END COMMON DEPS
-Provides:       %name-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       %name-srchash-0e46a2c644754074b091f728831994304f5dbff0
 %obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
@@ -376,20 +380,25 @@
 mkdir -p %kernel_build_dir
 
 # Generate a list of modules with their support status marking
+# The first marker is supposed to be either "+external", "-" or "-!optional",
+# where "+external" is for an externally supported module, "-" is for an
+# unsuppored module, "-!optional" is for Leap-only unsupported module.
+# There can be an optional arch-specific second marker with "+arch" (e.g.
+# +arm64), which enforces the module to be supported on the specific arch.
 %_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
-awk '
-       /\+external / {
-               print $(NF) " external";
-               next;
-       }
-       /^-/ {
-               print $(NF) " no";
-               next;
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+external") {
+               t = " external";
+       } else if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = " no";
        }
-       {
-               print $(NF);
        }
-' >%kernel_build_dir/Module.supported
+    print $(NF) t;
+}' >%kernel_build_dir/Module.supported
 subpackages=(
        base
 %if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
@@ -401,6 +410,22 @@
                <%_sourcedir/supported.conf | sed 's,.*/,,; s,\.ko$,,' | \
                sort -u >%kernel_build_dir/Module."$package"
 done
+%if %split_extra && %split_optional
+# Module.optional is in a special form, containing guard markers for
+# both extra and optional modules, which is processed by split-modules
+%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = $i
+       }
+    }
+    if (t != "") {print t,$(NF);}
+}' >%kernel_build_dir/Module.optional
+%endif
 
 cd linux-%srcversion
 
@@ -530,7 +555,7 @@
 make clean $MAKE_ARGS
 
 rm -f source
-find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' -printf '%%P\n' \
+find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' ! -name 
'Module.optional' -printf '%%P\n' \
        > %my_builddir/obj-files
 
 %build
@@ -718,7 +743,11 @@
     done
 fi
 
-for sub in '' '-extra'; do
+for sub in '' '-extra' \
+%if %split_extra && %split_optional
+    '-optional' \
+%endif
+; do
     case "$sub" in
     '') base_package=1 ;;
     *) base_package=0 ;;
@@ -820,7 +849,7 @@
         echo %obj_install_dir/%cpu_arch/%build_flavor/Symbols.list > 
%my_builddir/livepatch-files.no_dir
 
         %if "%CONFIG_LIVEPATCH_IPA_CLONES" == "y"
-            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' > ipa-clones.list
+            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' | sort > ipa-clones.list
             cp ipa-clones.list %rpm_install_dir/%cpu_arch/%build_flavor
             echo %obj_install_dir/%cpu_arch/%build_flavor/ipa-clones.list >> 
%my_builddir/livepatch-files.no_dir
             tar -C %kernel_build_dir --verbatim-files-from -T ipa-clones.list 
-cf- | tar -C %rpm_install_dir/%cpu_arch/%build_flavor -xvf-
@@ -939,6 +968,8 @@
         sh ../scripts/mkmakefile ../../../%{basename:%src_install_dir} \
             %rpm_install_dir/%cpu_arch_flavor \
             $(echo %srcversion | sed -r 's/^([0-9]+)\.([0-9]+).*/\1 \2/')
+    else
+       echo include ../../../%{basename:%src_install_dir}/Makefile > 
%rpm_install_dir/%cpu_arch_flavor/Makefile
     fi
 fi
 
@@ -1033,8 +1064,12 @@
        echo "/lib/firmware/%kernelrelease-%build_flavor"
     fi
 } > %my_builddir/kernel-main.files
+
 %if %split_extra
     add_dirs_to_filelist %my_builddir/unsupported-modules > 
%my_builddir/kernel-extra.files
+%if %split_extra && %split_optional
+    add_dirs_to_filelist %my_builddir/optional-modules > 
%my_builddir/kernel-optional.files
+%endif
 
 %if 0%{?sle_version} >= 150000
     # By default, loading unsupported modules is disabled on SLE through
@@ -1102,6 +1137,7 @@
 %obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SLED):%{name}_%_target_cpu)
 Supplements:    packageand(product(sle-we):%{name}_%_target_cpu)
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1128,6 +1164,43 @@
 %defattr(-, root, root)
 %endif
 
+%if %split_extra && %split_optional
+%package optional
+Summary:        Kernel for LPAE enabled systems - Optional kernel modules
+Group:          System/Kernel
+Url:            http://www.kernel.org/
+Provides:       %name-optional_%_target_cpu = %version-%source_rel
+Provides:       kernel-optional = %version-%source_rel
+Provides:       multiversion(kernel)
+Requires:       %name-extra_%_target_cpu = %version-%source_rel
+Requires(pre):  coreutils awk
+Requires(post): modutils
+Requires(post): perl-Bootloader
+Requires(post): mkinitrd
+%obsolete_rebuilds %name-optional
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
+%ifarch %ix86
+Conflicts:      libc.so.6()(64bit)
+%endif
+
+%description optional
+The kernel for all 32-bit ARM platforms that support LPAE. This includes all
+Cortex A15 based SoCs, like the Exynos5, OMAP5 or Calxeda ECX-2000.
+
+This package contains optional modules only for openSUSE Leap.
+
+
+%source_timestamp
+
+%preun optional -f preun-optional.sh
+%postun optional -f postun-optional.sh
+%pre optional -f pre-optional.sh
+%post optional -f post-optional.sh
+
+%files optional -f kernel-optional.files
+%defattr(-, root, root)
+%endif
+
 %if "%CONFIG_KMSG_IDS" == "y"
 
 %package man

++++++ kernel-obs-build.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.806637487 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.810637492 +0200
@@ -19,7 +19,7 @@
 
 #!BuildIgnore: post-build-checks
 
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -45,7 +45,7 @@
 %endif
 %endif
 %endif
-BuildRequires:  
kernel%kernel_flavor-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+BuildRequires:  
kernel%kernel_flavor-srchash-0e46a2c644754074b091f728831994304f5dbff0
 
 %if 0%{?rhel_version}
 BuildRequires:  kernel
@@ -64,9 +64,9 @@
 Summary:        package kernel and initrd for OBS VM builds
 License:        GPL-2.0
 Group:          SLES
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif

++++++ kernel-obs-qa.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.830637517 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.834637522 +0200
@@ -17,7 +17,7 @@
 # needsrootforbuild
 
 
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -36,9 +36,9 @@
 Summary:        Basic QA tests for the kernel
 License:        GPL-2.0
 Group:          SLES
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif

++++++ kernel-pae.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.854637547 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.858637553 +0200
@@ -18,7 +18,7 @@
 
 
 %define srcversion 5.12
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 %define vanilla_only 0
 %define compress_modules xz
@@ -54,6 +54,10 @@
 %define config_vars CONFIG_MODULES CONFIG_MODULE_SIG CONFIG_KMSG_IDS 
CONFIG_SUSE_KERNEL_SUPPORTED CONFIG_EFI_STUB CONFIG_LIVEPATCH_IPA_CLONES
 %{expand:%(eval "$(test -n "%cpu_arch_flavor" && tar -xjf 
%_sourcedir/config.tar.bz2 --to-stdout config/%cpu_arch_flavor)"; for config in 
%config_vars; do echo "%%global $config ${!config:-n}"; done)}
 %define split_extra ("%CONFIG_MODULES" == "y" && 
"%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
+
+# Split Leap-only modules to kernel-*-optional subpackage?
+%define split_optional 0
+
 %if "%CONFIG_MODULES" != "y"
        %define klp_symbols 0
 %endif
@@ -68,9 +72,9 @@
 Summary:        Kernel with PAE Support
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif
@@ -181,10 +185,10 @@
 Conflicts:      libc.so.6()(64bit)
 %endif
 Provides:       kernel = %version-%source_rel
-Provides:       
kernel-%build_flavor-base-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
-Provides:       kernel-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       
kernel-%build_flavor-base-srchash-0e46a2c644754074b091f728831994304f5dbff0
+Provides:       kernel-srchash-0e46a2c644754074b091f728831994304f5dbff0
 # END COMMON DEPS
-Provides:       %name-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       %name-srchash-0e46a2c644754074b091f728831994304f5dbff0
 %ifarch %ix86
 Provides:       kernel-bigsmp = 2.6.17
 Obsoletes:      kernel-bigsmp <= 2.6.17
@@ -404,20 +408,25 @@
 mkdir -p %kernel_build_dir
 
 # Generate a list of modules with their support status marking
+# The first marker is supposed to be either "+external", "-" or "-!optional",
+# where "+external" is for an externally supported module, "-" is for an
+# unsuppored module, "-!optional" is for Leap-only unsupported module.
+# There can be an optional arch-specific second marker with "+arch" (e.g.
+# +arm64), which enforces the module to be supported on the specific arch.
 %_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
-awk '
-       /\+external / {
-               print $(NF) " external";
-               next;
-       }
-       /^-/ {
-               print $(NF) " no";
-               next;
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+external") {
+               t = " external";
+       } else if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = " no";
        }
-       {
-               print $(NF);
        }
-' >%kernel_build_dir/Module.supported
+    print $(NF) t;
+}' >%kernel_build_dir/Module.supported
 subpackages=(
        base
 %if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
@@ -429,6 +438,22 @@
                <%_sourcedir/supported.conf | sed 's,.*/,,; s,\.ko$,,' | \
                sort -u >%kernel_build_dir/Module."$package"
 done
+%if %split_extra && %split_optional
+# Module.optional is in a special form, containing guard markers for
+# both extra and optional modules, which is processed by split-modules
+%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = $i
+       }
+    }
+    if (t != "") {print t,$(NF);}
+}' >%kernel_build_dir/Module.optional
+%endif
 
 cd linux-%srcversion
 
@@ -558,7 +583,7 @@
 make clean $MAKE_ARGS
 
 rm -f source
-find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' -printf '%%P\n' \
+find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' ! -name 
'Module.optional' -printf '%%P\n' \
        > %my_builddir/obj-files
 
 %build
@@ -746,7 +771,11 @@
     done
 fi
 
-for sub in '' '-extra'; do
+for sub in '' '-extra' \
+%if %split_extra && %split_optional
+    '-optional' \
+%endif
+; do
     case "$sub" in
     '') base_package=1 ;;
     *) base_package=0 ;;
@@ -848,7 +877,7 @@
         echo %obj_install_dir/%cpu_arch/%build_flavor/Symbols.list > 
%my_builddir/livepatch-files.no_dir
 
         %if "%CONFIG_LIVEPATCH_IPA_CLONES" == "y"
-            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' > ipa-clones.list
+            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' | sort > ipa-clones.list
             cp ipa-clones.list %rpm_install_dir/%cpu_arch/%build_flavor
             echo %obj_install_dir/%cpu_arch/%build_flavor/ipa-clones.list >> 
%my_builddir/livepatch-files.no_dir
             tar -C %kernel_build_dir --verbatim-files-from -T ipa-clones.list 
-cf- | tar -C %rpm_install_dir/%cpu_arch/%build_flavor -xvf-
@@ -967,6 +996,8 @@
         sh ../scripts/mkmakefile ../../../%{basename:%src_install_dir} \
             %rpm_install_dir/%cpu_arch_flavor \
             $(echo %srcversion | sed -r 's/^([0-9]+)\.([0-9]+).*/\1 \2/')
+    else
+       echo include ../../../%{basename:%src_install_dir}/Makefile > 
%rpm_install_dir/%cpu_arch_flavor/Makefile
     fi
 fi
 
@@ -1061,8 +1092,12 @@
        echo "/lib/firmware/%kernelrelease-%build_flavor"
     fi
 } > %my_builddir/kernel-main.files
+
 %if %split_extra
     add_dirs_to_filelist %my_builddir/unsupported-modules > 
%my_builddir/kernel-extra.files
+%if %split_extra && %split_optional
+    add_dirs_to_filelist %my_builddir/optional-modules > 
%my_builddir/kernel-optional.files
+%endif
 
 %if 0%{?sle_version} >= 150000
     # By default, loading unsupported modules is disabled on SLE through
@@ -1140,6 +1175,7 @@
 %obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SLED):%{name}_%_target_cpu)
 Supplements:    packageand(product(sle-we):%{name}_%_target_cpu)
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1172,6 +1208,59 @@
 %defattr(-, root, root)
 %endif
 
+%if %split_extra && %split_optional
+%package optional
+Summary:        Kernel with PAE Support - Optional kernel modules
+Group:          System/Kernel
+Url:            http://www.kernel.org/
+Provides:       %name-optional_%_target_cpu = %version-%source_rel
+Provides:       kernel-optional = %version-%source_rel
+Provides:       multiversion(kernel)
+Requires:       %name-extra_%_target_cpu = %version-%source_rel
+Requires(pre):  coreutils awk
+Requires(post): modutils
+Requires(post): perl-Bootloader
+Requires(post): mkinitrd
+%ifarch %ix86
+Provides:       kernel-vmi-optional = 2.6.38
+Obsoletes:      kernel-vmi-optional <= 2.6.38
+Provides:       kernel-desktop-optional = 4.3
+Obsoletes:      kernel-desktop-optional <= 4.3
+Provides:       kernel-xen-optional = 4.4
+Obsoletes:      kernel-xen-optional <= 4.4
+Provides:       kernel-ec2-optional = 4.4
+Obsoletes:      kernel-ec2-optional <= 4.4
+%endif
+%obsolete_rebuilds %name-optional
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
+%ifarch %ix86
+Conflicts:      libc.so.6()(64bit)
+%endif
+
+%description optional
+This kernel supports up to 64GB of main memory. It requires Physical
+Addressing Extensions (PAE), which were introduced with the Pentium Pro
+processor.
+
+PAE is not only more physical address space but also important for the
+"no execute" feature which disables execution of code that is marked as
+non-executable. Therefore, the PAE kernel should be used on any systems
+that support it, regardless of the amount of main memory.
+
+This package contains optional modules only for openSUSE Leap.
+
+
+%source_timestamp
+
+%preun optional -f preun-optional.sh
+%postun optional -f postun-optional.sh
+%pre optional -f pre-optional.sh
+%post optional -f post-optional.sh
+
+%files optional -f kernel-optional.files
+%defattr(-, root, root)
+%endif
+
 %if "%CONFIG_KMSG_IDS" == "y"
 
 %package man

++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.902637609 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.906637614 +0200
@@ -18,7 +18,7 @@
 
 
 %define srcversion 5.12
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -30,9 +30,9 @@
 Summary:        The Linux Kernel Sources
 License:        GPL-2.0
 Group:          Development/Sources
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif
@@ -43,7 +43,7 @@
 BuildRequires:  sed
 Requires(post): coreutils sed
 Provides:       %name = %version-%source_rel
-Provides:       %name-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       %name-srchash-0e46a2c644754074b091f728831994304f5dbff0
 Provides:       linux
 Provides:       multiversion(kernel)
 Source0:        
http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz

++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.930637644 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.934637649 +0200
@@ -24,10 +24,10 @@
 Summary:        Kernel Symbol Versions (modversions)
 License:        GPL-2.0
 Group:          Development/Sources
-Version:        5.12.10
+Version:        5.12.12
 %if %using_buildservice
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif
@@ -52,7 +52,7 @@
 %endif
 Requires:       pesign-obs-integration
 Provides:       %name = %version-%source_rel
-Provides:       %name-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       %name-srchash-0e46a2c644754074b091f728831994304f5dbff0
 Provides:       multiversion(kernel)
 Source:         README.KSYMS
 Requires:       kernel-devel%variant = %version-%source_rel

++++++ kernel-vanilla.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.954637674 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.958637680 +0200
@@ -18,7 +18,7 @@
 
 
 %define srcversion 5.12
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 %define vanilla_only 0
 %define compress_modules xz
@@ -54,6 +54,10 @@
 %define config_vars CONFIG_MODULES CONFIG_MODULE_SIG CONFIG_KMSG_IDS 
CONFIG_SUSE_KERNEL_SUPPORTED CONFIG_EFI_STUB CONFIG_LIVEPATCH_IPA_CLONES
 %{expand:%(eval "$(test -n "%cpu_arch_flavor" && tar -xjf 
%_sourcedir/config.tar.bz2 --to-stdout config/%cpu_arch_flavor)"; for config in 
%config_vars; do echo "%%global $config ${!config:-n}"; done)}
 %define split_extra ("%CONFIG_MODULES" == "y" && 
"%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
+
+# Split Leap-only modules to kernel-*-optional subpackage?
+%define split_optional 0
+
 %if "%CONFIG_MODULES" != "y"
        %define klp_symbols 0
 %endif
@@ -68,9 +72,9 @@
 Summary:        The Standard Kernel - without any SUSE patches
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif
@@ -181,10 +185,10 @@
 Conflicts:      libc.so.6()(64bit)
 %endif
 Provides:       kernel = %version-%source_rel
-Provides:       
kernel-%build_flavor-base-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
-Provides:       kernel-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       
kernel-%build_flavor-base-srchash-0e46a2c644754074b091f728831994304f5dbff0
+Provides:       kernel-srchash-0e46a2c644754074b091f728831994304f5dbff0
 # END COMMON DEPS
-Provides:       %name-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       %name-srchash-0e46a2c644754074b091f728831994304f5dbff0
 %obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
@@ -375,20 +379,25 @@
 mkdir -p %kernel_build_dir
 
 # Generate a list of modules with their support status marking
+# The first marker is supposed to be either "+external", "-" or "-!optional",
+# where "+external" is for an externally supported module, "-" is for an
+# unsuppored module, "-!optional" is for Leap-only unsupported module.
+# There can be an optional arch-specific second marker with "+arch" (e.g.
+# +arm64), which enforces the module to be supported on the specific arch.
 %_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
-awk '
-       /\+external / {
-               print $(NF) " external";
-               next;
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+external") {
+               t = " external";
+       } else if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = " no";
        }
-       /^-/ {
-               print $(NF) " no";
-               next;
        }
-       {
-               print $(NF);
-       }
-' >%kernel_build_dir/Module.supported
+    print $(NF) t;
+}' >%kernel_build_dir/Module.supported
 subpackages=(
        base
 %if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
@@ -400,6 +409,22 @@
                <%_sourcedir/supported.conf | sed 's,.*/,,; s,\.ko$,,' | \
                sort -u >%kernel_build_dir/Module."$package"
 done
+%if %split_extra && %split_optional
+# Module.optional is in a special form, containing guard markers for
+# both extra and optional modules, which is processed by split-modules
+%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = $i
+       }
+    }
+    if (t != "") {print t,$(NF);}
+}' >%kernel_build_dir/Module.optional
+%endif
 
 cd linux-%srcversion
 
@@ -529,7 +554,7 @@
 make clean $MAKE_ARGS
 
 rm -f source
-find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' -printf '%%P\n' \
+find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' ! -name 
'Module.optional' -printf '%%P\n' \
        > %my_builddir/obj-files
 
 %build
@@ -717,7 +742,11 @@
     done
 fi
 
-for sub in '' '-extra'; do
+for sub in '' '-extra' \
+%if %split_extra && %split_optional
+    '-optional' \
+%endif
+; do
     case "$sub" in
     '') base_package=1 ;;
     *) base_package=0 ;;
@@ -819,7 +848,7 @@
         echo %obj_install_dir/%cpu_arch/%build_flavor/Symbols.list > 
%my_builddir/livepatch-files.no_dir
 
         %if "%CONFIG_LIVEPATCH_IPA_CLONES" == "y"
-            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' > ipa-clones.list
+            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' | sort > ipa-clones.list
             cp ipa-clones.list %rpm_install_dir/%cpu_arch/%build_flavor
             echo %obj_install_dir/%cpu_arch/%build_flavor/ipa-clones.list >> 
%my_builddir/livepatch-files.no_dir
             tar -C %kernel_build_dir --verbatim-files-from -T ipa-clones.list 
-cf- | tar -C %rpm_install_dir/%cpu_arch/%build_flavor -xvf-
@@ -938,6 +967,8 @@
         sh ../scripts/mkmakefile ../../../%{basename:%src_install_dir} \
             %rpm_install_dir/%cpu_arch_flavor \
             $(echo %srcversion | sed -r 's/^([0-9]+)\.([0-9]+).*/\1 \2/')
+    else
+       echo include ../../../%{basename:%src_install_dir}/Makefile > 
%rpm_install_dir/%cpu_arch_flavor/Makefile
     fi
 fi
 
@@ -1032,8 +1063,12 @@
        echo "/lib/firmware/%kernelrelease-%build_flavor"
     fi
 } > %my_builddir/kernel-main.files
+
 %if %split_extra
     add_dirs_to_filelist %my_builddir/unsupported-modules > 
%my_builddir/kernel-extra.files
+%if %split_extra && %split_optional
+    add_dirs_to_filelist %my_builddir/optional-modules > 
%my_builddir/kernel-optional.files
+%endif
 
 %if 0%{?sle_version} >= 150000
     # By default, loading unsupported modules is disabled on SLE through
@@ -1101,6 +1136,7 @@
 %obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SLED):%{name}_%_target_cpu)
 Supplements:    packageand(product(sle-we):%{name}_%_target_cpu)
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1126,6 +1162,42 @@
 %defattr(-, root, root)
 %endif
 
+%if %split_extra && %split_optional
+%package optional
+Summary:        The Standard Kernel - without any SUSE patches - Optional 
kernel modules
+Group:          System/Kernel
+Url:            http://www.kernel.org/
+Provides:       %name-optional_%_target_cpu = %version-%source_rel
+Provides:       kernel-optional = %version-%source_rel
+Provides:       multiversion(kernel)
+Requires:       %name-extra_%_target_cpu = %version-%source_rel
+Requires(pre):  coreutils awk
+Requires(post): modutils
+Requires(post): perl-Bootloader
+Requires(post): mkinitrd
+%obsolete_rebuilds %name-optional
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
+%ifarch %ix86
+Conflicts:      libc.so.6()(64bit)
+%endif
+
+%description optional
+The standard kernel - without any SUSE patches
+
+This package contains optional modules only for openSUSE Leap.
+
+
+%source_timestamp
+
+%preun optional -f preun-optional.sh
+%postun optional -f postun-optional.sh
+%pre optional -f pre-optional.sh
+%post optional -f post-optional.sh
+
+%files optional -f kernel-optional.files
+%defattr(-, root, root)
+%endif
+
 %if "%CONFIG_KMSG_IDS" == "y"
 
 %package man

++++++ kernel-zfcpdump.spec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:51.986637715 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:51.990637720 +0200
@@ -18,7 +18,7 @@
 
 
 %define srcversion 5.12
-%define patchversion 5.12.10
+%define patchversion 5.12.12
 %define variant %{nil}
 %define vanilla_only 0
 %define compress_modules xz
@@ -54,6 +54,10 @@
 %define config_vars CONFIG_MODULES CONFIG_MODULE_SIG CONFIG_KMSG_IDS 
CONFIG_SUSE_KERNEL_SUPPORTED CONFIG_EFI_STUB CONFIG_LIVEPATCH_IPA_CLONES
 %{expand:%(eval "$(test -n "%cpu_arch_flavor" && tar -xjf 
%_sourcedir/config.tar.bz2 --to-stdout config/%cpu_arch_flavor)"; for config in 
%config_vars; do echo "%%global $config ${!config:-n}"; done)}
 %define split_extra ("%CONFIG_MODULES" == "y" && 
"%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
+
+# Split Leap-only modules to kernel-*-optional subpackage?
+%define split_optional 0
+
 %if "%CONFIG_MODULES" != "y"
        %define klp_symbols 0
 %endif
@@ -68,9 +72,9 @@
 Summary:        The IBM System Z zfcpdump Kernel
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        5.12.10
+Version:        5.12.12
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb92eaf7
+Release:        <RELEASE>.g0e46a2c
 %else
 Release:        0
 %endif
@@ -181,10 +185,10 @@
 Conflicts:      libc.so.6()(64bit)
 %endif
 Provides:       kernel = %version-%source_rel
-Provides:       
kernel-%build_flavor-base-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
-Provides:       kernel-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       
kernel-%build_flavor-base-srchash-0e46a2c644754074b091f728831994304f5dbff0
+Provides:       kernel-srchash-0e46a2c644754074b091f728831994304f5dbff0
 # END COMMON DEPS
-Provides:       %name-srchash-b92eaf7cf30a84428cfe019308359a10f12d8e4c
+Provides:       %name-srchash-0e46a2c644754074b091f728831994304f5dbff0
 %obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
@@ -378,20 +382,25 @@
 mkdir -p %kernel_build_dir
 
 # Generate a list of modules with their support status marking
+# The first marker is supposed to be either "+external", "-" or "-!optional",
+# where "+external" is for an externally supported module, "-" is for an
+# unsuppored module, "-!optional" is for Leap-only unsupported module.
+# There can be an optional arch-specific second marker with "+arch" (e.g.
+# +arm64), which enforces the module to be supported on the specific arch.
 %_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
-awk '
-       /\+external / {
-               print $(NF) " external";
-               next;
-       }
-       /^-/ {
-               print $(NF) " no";
-               next;
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+external") {
+               t = " external";
+       } else if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = " no";
        }
-       {
-               print $(NF);
        }
-' >%kernel_build_dir/Module.supported
+    print $(NF) t;
+}' >%kernel_build_dir/Module.supported
 subpackages=(
        base
 %if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
@@ -403,6 +412,22 @@
                <%_sourcedir/supported.conf | sed 's,.*/,,; s,\.ko$,,' | \
                sort -u >%kernel_build_dir/Module."$package"
 done
+%if %split_extra && %split_optional
+# Module.optional is in a special form, containing guard markers for
+# both extra and optional modules, which is processed by split-modules
+%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = $i
+       }
+    }
+    if (t != "") {print t,$(NF);}
+}' >%kernel_build_dir/Module.optional
+%endif
 
 cd linux-%srcversion
 
@@ -532,7 +557,7 @@
 make clean $MAKE_ARGS
 
 rm -f source
-find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' -printf '%%P\n' \
+find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' ! -name 
'Module.optional' -printf '%%P\n' \
        > %my_builddir/obj-files
 
 %build
@@ -720,7 +745,11 @@
     done
 fi
 
-for sub in '' '-extra'; do
+for sub in '' '-extra' \
+%if %split_extra && %split_optional
+    '-optional' \
+%endif
+; do
     case "$sub" in
     '') base_package=1 ;;
     *) base_package=0 ;;
@@ -822,7 +851,7 @@
         echo %obj_install_dir/%cpu_arch/%build_flavor/Symbols.list > 
%my_builddir/livepatch-files.no_dir
 
         %if "%CONFIG_LIVEPATCH_IPA_CLONES" == "y"
-            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' > ipa-clones.list
+            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' | sort > ipa-clones.list
             cp ipa-clones.list %rpm_install_dir/%cpu_arch/%build_flavor
             echo %obj_install_dir/%cpu_arch/%build_flavor/ipa-clones.list >> 
%my_builddir/livepatch-files.no_dir
             tar -C %kernel_build_dir --verbatim-files-from -T ipa-clones.list 
-cf- | tar -C %rpm_install_dir/%cpu_arch/%build_flavor -xvf-
@@ -941,6 +970,8 @@
         sh ../scripts/mkmakefile ../../../%{basename:%src_install_dir} \
             %rpm_install_dir/%cpu_arch_flavor \
             $(echo %srcversion | sed -r 's/^([0-9]+)\.([0-9]+).*/\1 \2/')
+    else
+       echo include ../../../%{basename:%src_install_dir}/Makefile > 
%rpm_install_dir/%cpu_arch_flavor/Makefile
     fi
 fi
 
@@ -1035,8 +1066,12 @@
        echo "/lib/firmware/%kernelrelease-%build_flavor"
     fi
 } > %my_builddir/kernel-main.files
+
 %if %split_extra
     add_dirs_to_filelist %my_builddir/unsupported-modules > 
%my_builddir/kernel-extra.files
+%if %split_extra && %split_optional
+    add_dirs_to_filelist %my_builddir/optional-modules > 
%my_builddir/kernel-optional.files
+%endif
 
 %if 0%{?sle_version} >= 150000
     # By default, loading unsupported modules is disabled on SLE through
@@ -1104,6 +1139,7 @@
 %obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SLED):%{name}_%_target_cpu)
 Supplements:    packageand(product(sle-we):%{name}_%_target_cpu)
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1132,6 +1168,45 @@
 %defattr(-, root, root)
 %endif
 
+%if %split_extra && %split_optional
+%package optional
+Summary:        The IBM System Z zfcpdump Kernel - Optional kernel modules
+Group:          System/Kernel
+Url:            http://www.kernel.org/
+Provides:       %name-optional_%_target_cpu = %version-%source_rel
+Provides:       kernel-optional = %version-%source_rel
+Provides:       multiversion(kernel)
+Requires:       %name-extra_%_target_cpu = %version-%source_rel
+Requires(pre):  coreutils awk
+Requires(post): modutils
+Requires(post): perl-Bootloader
+Requires(post): mkinitrd
+%obsolete_rebuilds %name-optional
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
+%ifarch %ix86
+Conflicts:      libc.so.6()(64bit)
+%endif
+
+%description optional
+The Linux kernel for booting the zfcpdump process on IBM System Z.
+
+This kernel should only be used by the s390-tools package. This kernel
+should not be installed as a regular booting kernel.
+
+This package contains optional modules only for openSUSE Leap.
+
+
+%source_timestamp
+
+%preun optional -f preun-optional.sh
+%postun optional -f postun-optional.sh
+%pre optional -f pre-optional.sh
+%post optional -f post-optional.sh
+
+%files optional -f kernel-optional.files
+%defattr(-, root, root)
+%endif
+
 %if "%CONFIG_KMSG_IDS" == "y"
 
 %package man

++++++ 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    2021-05-15 08:30:43.000000000 +0200
+++ new/config/arm64/default    2021-06-16 13:02:31.000000000 +0200
@@ -11397,7 +11397,7 @@
 #
 # Certificates for signature checking
 #
-CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+CONFIG_MODULE_SIG_KEY=""
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
 # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/armv6hl/default new/config/armv6hl/default
--- old/config/armv6hl/default  2021-05-15 08:30:43.000000000 +0200
+++ new/config/armv6hl/default  2021-06-16 13:02:31.000000000 +0200
@@ -8087,7 +8087,7 @@
 #
 # Certificates for signature checking
 #
-CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+CONFIG_MODULE_SIG_KEY=""
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
 # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/armv7hl/default new/config/armv7hl/default
--- old/config/armv7hl/default  2021-05-15 08:30:43.000000000 +0200
+++ new/config/armv7hl/default  2021-06-16 13:02:31.000000000 +0200
@@ -7235,7 +7235,7 @@
 #
 CONFIG_SND_HDA=m
 CONFIG_SND_HDA_GENERIC_LEDS=y
-# CONFIG_SND_HDA_INTEL is not set
+CONFIG_SND_HDA_INTEL=m
 CONFIG_SND_HDA_TEGRA=m
 CONFIG_SND_HDA_HWDEP=y
 CONFIG_SND_HDA_RECONFIG=y
@@ -7256,6 +7256,7 @@
 CONFIG_SND_HDA_CODEC_SI3054=m
 CONFIG_SND_HDA_GENERIC=m
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
+# CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM is not set
 # end of HD-Audio
 
 CONFIG_SND_HDA_CORE=m
@@ -7263,6 +7264,7 @@
 CONFIG_SND_HDA_ALIGNED_MMIO=y
 CONFIG_SND_HDA_COMPONENT=y
 CONFIG_SND_HDA_PREALLOC_SIZE=1024
+CONFIG_SND_INTEL_DSP_CONFIG=m
 CONFIG_SND_ARM=y
 CONFIG_SND_ARMAACI=m
 CONFIG_SND_SPI=y
@@ -11290,7 +11292,7 @@
 #
 # Certificates for signature checking
 #
-CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+CONFIG_MODULE_SIG_KEY=""
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
 # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/armv7hl/lpae new/config/armv7hl/lpae
--- old/config/armv7hl/lpae     2021-05-15 08:30:43.000000000 +0200
+++ new/config/armv7hl/lpae     2021-06-16 13:02:31.000000000 +0200
@@ -7004,7 +7004,7 @@
 #
 CONFIG_SND_HDA=m
 CONFIG_SND_HDA_GENERIC_LEDS=y
-# CONFIG_SND_HDA_INTEL is not set
+CONFIG_SND_HDA_INTEL=m
 CONFIG_SND_HDA_TEGRA=m
 CONFIG_SND_HDA_HWDEP=y
 CONFIG_SND_HDA_RECONFIG=y
@@ -7025,6 +7025,7 @@
 CONFIG_SND_HDA_CODEC_SI3054=m
 CONFIG_SND_HDA_GENERIC=m
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
+# CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM is not set
 # end of HD-Audio
 
 CONFIG_SND_HDA_CORE=m
@@ -7032,6 +7033,7 @@
 CONFIG_SND_HDA_ALIGNED_MMIO=y
 CONFIG_SND_HDA_COMPONENT=y
 CONFIG_SND_HDA_PREALLOC_SIZE=1024
+CONFIG_SND_INTEL_DSP_CONFIG=m
 CONFIG_SND_ARM=y
 CONFIG_SND_ARMAACI=m
 CONFIG_SND_SPI=y
@@ -10903,7 +10905,7 @@
 #
 # Certificates for signature checking
 #
-CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+CONFIG_MODULE_SIG_KEY=""
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
 # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/i386/pae new/config/i386/pae
--- old/config/i386/pae 2021-05-15 08:30:43.000000000 +0200
+++ new/config/i386/pae 2021-06-16 13:02:31.000000000 +0200
@@ -9991,6 +9991,7 @@
 #
 # Certificates for signature checking
 #
+CONFIG_MODULE_SIG_KEY=""
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
 # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/ppc64/default new/config/ppc64/default
--- old/config/ppc64/default    2021-05-15 08:30:43.000000000 +0200
+++ new/config/ppc64/default    2021-06-16 13:02:31.000000000 +0200
@@ -7994,7 +7994,7 @@
 #
 # Certificates for signature checking
 #
-CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+CONFIG_MODULE_SIG_KEY=""
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
 # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/ppc64le/default new/config/ppc64le/default
--- old/config/ppc64le/default  2021-05-15 08:30:43.000000000 +0200
+++ new/config/ppc64le/default  2021-06-16 13:02:31.000000000 +0200
@@ -7845,7 +7845,7 @@
 #
 # Certificates for signature checking
 #
-CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+CONFIG_MODULE_SIG_KEY=""
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
 # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/riscv64/default new/config/riscv64/default
--- old/config/riscv64/default  2021-05-15 08:30:43.000000000 +0200
+++ new/config/riscv64/default  2021-06-16 13:02:31.000000000 +0200
@@ -2850,7 +2850,10 @@
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
 # CONFIG_STMMAC_SELFTESTS is not set
-# CONFIG_STMMAC_PLATFORM is not set
+CONFIG_STMMAC_PLATFORM=m
+CONFIG_DWMAC_DWC_QOS_ETH=m
+CONFIG_DWMAC_GENERIC=m
+CONFIG_DWMAC_INTEL_PLAT=m
 CONFIG_STMMAC_PCI=m
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_HAPPYMEAL=m
@@ -8706,7 +8709,7 @@
 #
 # Certificates for signature checking
 #
-CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+CONFIG_MODULE_SIG_KEY=""
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
 # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/s390x/default new/config/s390x/default
--- old/config/s390x/default    2021-05-15 08:30:43.000000000 +0200
+++ new/config/s390x/default    2021-06-16 13:02:31.000000000 +0200
@@ -4074,7 +4074,7 @@
 #
 # Certificates for signature checking
 #
-CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+CONFIG_MODULE_SIG_KEY=""
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
 # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
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   2021-05-15 08:30:43.000000000 +0200
+++ new/config/x86_64/default   2021-06-16 13:02:31.000000000 +0200
@@ -9945,7 +9945,7 @@
 #
 # Certificates for signature checking
 #
-CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+CONFIG_MODULE_SIG_KEY=""
 CONFIG_SYSTEM_TRUSTED_KEYRING=y
 CONFIG_SYSTEM_TRUSTED_KEYS=""
 # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set

++++++ kernel-binary.spec.in ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:52.746638679 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:52.750638684 +0200
@@ -54,6 +54,10 @@
 %define config_vars CONFIG_MODULES CONFIG_MODULE_SIG CONFIG_KMSG_IDS 
CONFIG_SUSE_KERNEL_SUPPORTED CONFIG_EFI_STUB CONFIG_LIVEPATCH_IPA_CLONES
 %{expand:%(eval "$(test -n "%cpu_arch_flavor" && tar -xjf 
%_sourcedir/config.tar.bz2 --to-stdout config/%cpu_arch_flavor)"; for config in 
%config_vars; do echo "%%global $config ${!config:-n}"; done)}
 %define split_extra ("%CONFIG_MODULES" == "y" && 
"%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
+
+# Split Leap-only modules to kernel-*-optional subpackage?
+%define split_optional 0
+
 %if "%CONFIG_MODULES" != "y"
        %define klp_symbols 0
 %endif
@@ -233,20 +237,25 @@
 mkdir -p %kernel_build_dir
 
 # Generate a list of modules with their support status marking
+# The first marker is supposed to be either "+external", "-" or "-!optional",
+# where "+external" is for an externally supported module, "-" is for an
+# unsuppored module, "-!optional" is for Leap-only unsupported module.
+# There can be an optional arch-specific second marker with "+arch" (e.g.
+# +arm64), which enforces the module to be supported on the specific arch.
 %_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
-awk '
-       /\+external / {
-               print $(NF) " external";
-               next;
-       }
-       /^-/ {
-               print $(NF) " no";
-               next;
-       }
-       {
-               print $(NF);
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+external") {
+               t = " external";
+       } else if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = " no";
        }
-' >%kernel_build_dir/Module.supported
+    }
+    print $(NF) t;
+}' >%kernel_build_dir/Module.supported
 subpackages=(
        base
 %if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
@@ -258,6 +267,22 @@
                <%_sourcedir/supported.conf | sed 's,.*/,,; s,\.ko$,,' | \
                sort -u >%kernel_build_dir/Module."$package"
 done
+%if %split_extra && %split_optional
+# Module.optional is in a special form, containing guard markers for
+# both extra and optional modules, which is processed by split-modules
+%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
+awk '{
+    t = "";
+    for (i = 1; i < NF; i++) {
+       if ($i == "+'%cpu_arch'") {
+               t = "";
+       } else if ($i ~ "^-") {
+               t = $i
+       }
+    }
+    if (t != "") {print t,$(NF);}
+}' >%kernel_build_dir/Module.optional
+%endif
 
 cd linux-%srcversion
 
@@ -387,7 +412,7 @@
 make clean $MAKE_ARGS
 
 rm -f source
-find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' -printf '%%P\n' \
+find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' ! -name 
'Module.optional' -printf '%%P\n' \
        > %my_builddir/obj-files
 
 %build
@@ -575,7 +600,11 @@
     done
 fi
 
-for sub in '' '-extra'; do
+for sub in '' '-extra' \
+%if %split_extra && %split_optional
+    '-optional' \
+%endif
+; do
     case "$sub" in
     '') base_package=1 ;;
     *) base_package=0 ;;
@@ -677,7 +706,7 @@
         echo %obj_install_dir/%cpu_arch/%build_flavor/Symbols.list > 
%my_builddir/livepatch-files.no_dir
 
         %if "%CONFIG_LIVEPATCH_IPA_CLONES" == "y"
-            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' > ipa-clones.list
+            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 
's|^%kernel_build_dir/||' | sort > ipa-clones.list
             cp ipa-clones.list %rpm_install_dir/%cpu_arch/%build_flavor
             echo %obj_install_dir/%cpu_arch/%build_flavor/ipa-clones.list >> 
%my_builddir/livepatch-files.no_dir
             tar -C %kernel_build_dir --verbatim-files-from -T ipa-clones.list 
-cf- | tar -C %rpm_install_dir/%cpu_arch/%build_flavor -xvf-
@@ -796,6 +825,8 @@
         sh ../scripts/mkmakefile ../../../%{basename:%src_install_dir} \
             %rpm_install_dir/%cpu_arch_flavor \
             $(echo %srcversion | sed -r 's/^([0-9]+)\.([0-9]+).*/\1 \2/')
+    else
+       echo include ../../../%{basename:%src_install_dir}/Makefile > 
%rpm_install_dir/%cpu_arch_flavor/Makefile
     fi
 fi
 
@@ -890,8 +921,12 @@
        echo "/lib/firmware/%kernelrelease-%build_flavor"
     fi
 } > %my_builddir/kernel-main.files
+
 %if %split_extra
     add_dirs_to_filelist %my_builddir/unsupported-modules > 
%my_builddir/kernel-extra.files
+%if %split_extra && %split_optional
+    add_dirs_to_filelist %my_builddir/optional-modules > 
%my_builddir/kernel-optional.files
+%endif
 
 %if 0%{?sle_version} >= 150000
     # By default, loading unsupported modules is disabled on SLE through
@@ -960,6 +995,7 @@
 %obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SLED):%{name}_%_target_cpu)
 Supplements:    packageand(product(sle-we):%{name}_%_target_cpu)
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -985,6 +1021,43 @@
 %defattr(-, root, root)
 %endif
 
+%if %split_extra && %split_optional
+%package optional
+Summary:        @SUMMARY@ - Optional kernel modules
+Group:          System/Kernel
+Url:            http://www.kernel.org/
+Provides:       %name-optional_%_target_cpu = %version-%source_rel
+Provides:       kernel-optional = %version-%source_rel
+Provides:       multiversion(kernel)
+Requires:       %name-extra_%_target_cpu = %version-%source_rel
+Requires(pre):  coreutils awk
+Requires(post): modutils
+Requires(post): perl-Bootloader
+Requires(post): mkinitrd
+@PROVIDES_OBSOLETES_OPTIONAL@
+%obsolete_rebuilds %name-optional
+Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
+%ifarch %ix86
+Conflicts:      libc.so.6()(64bit)
+%endif
+
+%description optional
+@DESCRIPTION@
+
+This package contains optional modules only for openSUSE Leap.
+
+
+%source_timestamp
+
+%preun optional -f preun-optional.sh
+%postun optional -f postun-optional.sh
+%pre optional -f pre-optional.sh
+%post optional -f post-optional.sh
+
+%files optional -f kernel-optional.files
+%defattr(-, root, root)
+%endif
+
 %if "%CONFIG_KMSG_IDS" == "y"
 
 %package man

++++++ klp-symbols ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:52.970638963 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:52.970638963 +0200
@@ -48,7 +48,7 @@
 echo "*vmlinux" >> "$KLP_SYMBOLS"
 get_symbols "$VMLINUX" >> "$KLP_SYMBOLS"
 
-find "$MODVER_DIR" -iname '*.mod' | while read KMOD ; do
+find "$MODVER_DIR" -iname '*.mod' | sort | while read KMOD ; do
     if [ "$MODVER_DIR" = "$KERNEL_BUILD_DIR" ]; then
         # kernel >= 5.3, just replace the suffix
         KO_FILE="${KMOD%.mod}.ko"

++++++ mkspec ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:53.014639019 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:53.014639019 +0200
@@ -160,7 +160,7 @@
        }
 
        my %obsolete_macros;
-       for my $subpac ("", "-base", "-extra", "-devel", "-hmac") {
+       for my $subpac ("", "-base", "-extra", "-devel", "-hmac", "-optional") {
                (my $macro = "PROVIDES_OBSOLETES" . uc($subpac)) =~ s/-/_/;
                $obsolete_macros{$macro} =
                        provides_obsoletes($flavor, $subpac, 
@{$flavor_archs{$flavor}});

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

++++++ patches.suse.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/brcmfmac-Add-clm_blob-firmware-files-to-modinfo.patch 
new/patches.suse/brcmfmac-Add-clm_blob-firmware-files-to-modinfo.patch
--- old/patches.suse/brcmfmac-Add-clm_blob-firmware-files-to-modinfo.patch      
2021-06-11 07:05:06.000000000 +0200
+++ new/patches.suse/brcmfmac-Add-clm_blob-firmware-files-to-modinfo.patch      
2021-06-16 14:34:37.000000000 +0200
@@ -1,7 +1,9 @@
 From: Matthias Brugger <mbrug...@suse.com>
-Date: Fri, 4 Jun 2021 15:59:08 +0200
+Date: Mon, 7 Jun 2021 12:34:33 +0200
 Subject: brcmfmac: Add clm_blob firmware files to modinfo
-Patch-mainline: Submitted, 20210607103433.21022-1-matthias....@kernel.org
+Git-commit: 885f256f61f958d494ffdf5084a292808f08daee
+Patch-mainline: Queued
+Git-repo: 
git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git#master
 References: bsc#1186857
 
 Cypress Wi-Fi chipsets include information regarding regulatory
@@ -14,6 +16,9 @@
 modinfo of the driver.
 
 Signed-off-by: Matthias Brugger <mbrug...@suse.com>
+Reviewed-by: Hans de Goede <hdego...@redhat.com>
+Signed-off-by: Kalle Valo <kv...@codeaurora.org>
+Link: https://lore.kernel.org/r/20210607103433.21022-1-matthias....@kernel.org
 ---
  .../wireless/broadcom/brcm80211/brcmfmac/firmware.h  |  7 +++++++
  .../net/wireless/broadcom/brcm80211/brcmfmac/pcie.c  |  4 ++--
@@ -54,7 +59,7 @@
  BRCMF_FW_DEF(4359, "brcmfmac4359-pcie");
  BRCMF_FW_DEF(4364, "brcmfmac4364-pcie");
 diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c 
b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
-index b8788d7090a4..69cbe38f05ce 100644
+index bb77a5987faf..97ee9e2e2e35 100644
 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
 @@ -616,14 +616,14 @@ BRCMF_FW_DEF(43362, "brcmfmac43362-sdio");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/brcmfmac-Delete-second-brcm-folder-hierarchy.patch 
new/patches.suse/brcmfmac-Delete-second-brcm-folder-hierarchy.patch
--- old/patches.suse/brcmfmac-Delete-second-brcm-folder-hierarchy.patch 
2021-06-11 07:05:06.000000000 +0200
+++ new/patches.suse/brcmfmac-Delete-second-brcm-folder-hierarchy.patch 
2021-06-16 14:34:37.000000000 +0200
@@ -1,7 +1,9 @@
 From: Matthias Brugger <mbrug...@suse.com>
-Date: Wed, 2 Jun 2021 16:16:52 +0200
+Date: Wed, 2 Jun 2021 16:43:05 +0200
 Subject: brcmfmac: Delete second brcm folder hierarchy
-Patch-mainline: Submitted, 20210602144305.4481-1-matthias....@kernel.org
+Git-commit: 4a26aafe4886a4ec9965171c280ce16df30dc362
+Patch-mainline: Queued
+Git-repo: 
git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git#master
 References: bsc#1186857
 
 BRCMF_FW_DEFAULT_PATH already defines the brcm folder, delete the second
@@ -10,12 +12,14 @@
 Fixes: 75729e110e68 ("brcmfmac: expose firmware config files through modinfo")
 Signed-off-by: Matthias Brugger <mbrug...@suse.com>
 Reviewed-by: Hans de Goede <hdego...@redhat.com>
+Signed-off-by: Kalle Valo <kv...@codeaurora.org>
+Link: https://lore.kernel.org/r/20210602144305.4481-1-matthias....@kernel.org
 ---
  drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c 
b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
-index 16ed325795a8..b8788d7090a4 100644
+index 27eb83ee2dc9..bb77a5987faf 100644
 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
 @@ -626,8 +626,8 @@ BRCMF_FW_DEF(4373, "brcmfmac4373-sdio");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/usb-pci-quirks-disable-D3cold-on-xhci-suspend-for-s2.patch 
new/patches.suse/usb-pci-quirks-disable-D3cold-on-xhci-suspend-for-s2.patch
--- old/patches.suse/usb-pci-quirks-disable-D3cold-on-xhci-suspend-for-s2.patch 
2021-06-11 07:05:06.000000000 +0200
+++ new/patches.suse/usb-pci-quirks-disable-D3cold-on-xhci-suspend-for-s2.patch 
1970-01-01 01:00:00.000000000 +0100
@@ -1,74 +0,0 @@
-From: Mario Limonciello <mario.limoncie...@amd.com>
-Subject: [PATCH v4] usb: pci-quirks: disable D3cold on xhci suspend for s2idle
- on AMD Renoire
-Date: Wed,  5 May 2021 01:16:06 -0500
-Message-id: <20210505061606.22716-1-mario.limoncie...@amd.com>
-Patch-mainline: Submitted, linux-usb ML
-References: bsc#1185840
-
-The XHCI controller is required to enter D3hot rather than D3cold for AMD
-s2idle on this hardware generation.
-
-Otherwise, the 'Controller Not Ready' (CNR) bit is not being cleared by host
-in resume and eventually this results in xhci resume failures during the
-s2idle wakeup.
-
-Suggested-by: Prike Liang <prike.li...@amd.com>
-Link: 
https://lore.kernel.org/linux-usb/1612527609-7053-1-git-send-email-prike.li...@amd.com/
-Signed-off-by: Mario Limonciello <mario.limoncie...@amd.com>
-Acked-by: Takashi Iwai <ti...@suse.de>
-
----
- drivers/usb/host/xhci-pci.c |    7 ++++++-
- drivers/usb/host/xhci.h     |    1 +
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-v1 -> v2: drop the XHCI_COMP_MODE_QUIRK quirk and create a new one for handling
-XHCI D3cold.
-
-v2 -> v3: correct the quirk name typo XHCI_AMD_S2IDL_SUPPORT_QUIRK -> 
XHCI_AMD_S2IDLE_SUPPORT_QUIRK
-
-v3 -> v4: Fix commit message to clarify and reference HW
-          Rename quirk to describe problem, not hardware
-          Add definition for the hardware to source
-
---- a/drivers/usb/host/xhci-pci.c
-+++ b/drivers/usb/host/xhci-pci.c
-@@ -59,6 +59,7 @@
- #define PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI          0x1138
- #define PCI_DEVICE_ID_INTEL_ALDER_LAKE_XHCI           0x461e
- 
-+#define PCI_DEVICE_ID_AMD_RENOIRE_XHCI                        0x1639
- #define PCI_DEVICE_ID_AMD_PROMONTORYA_4                       0x43b9
- #define PCI_DEVICE_ID_AMD_PROMONTORYA_3                       0x43ba
- #define PCI_DEVICE_ID_AMD_PROMONTORYA_2                       0x43bb
-@@ -182,6 +183,10 @@ static void xhci_pci_quirks(struct devic
-               (pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_1)))
-               xhci->quirks |= XHCI_U2_DISABLE_WAKE;
- 
-+      if (pdev->vendor == PCI_VENDOR_ID_AMD &&
-+              pdev->device == PCI_DEVICE_ID_AMD_RENOIRE_XHCI)
-+              xhci->quirks |= XHCI_BROKEN_D3COLD;
-+
-       if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
-               xhci->quirks |= XHCI_LPM_SUPPORT;
-               xhci->quirks |= XHCI_INTEL_HOST;
-@@ -539,7 +544,7 @@ static int xhci_pci_suspend(struct usb_h
-        * Systems with the TI redriver that loses port status change events
-        * need to have the registers polled during D3, so avoid D3cold.
-        */
--      if (xhci->quirks & XHCI_COMP_MODE_QUIRK)
-+      if (xhci->quirks & (XHCI_COMP_MODE_QUIRK | XHCI_BROKEN_D3COLD))
-               pci_d3cold_disable(pdev);
- 
-       if (xhci->quirks & XHCI_PME_STUCK_QUIRK)
---- a/drivers/usb/host/xhci.h
-+++ b/drivers/usb/host/xhci.h
-@@ -1892,6 +1892,7 @@ struct xhci_hcd {
- #define XHCI_DISABLE_SPARSE   BIT_ULL(38)
- #define XHCI_SG_TRB_CACHE_SIZE_QUIRK  BIT_ULL(39)
- #define XHCI_NO_SOFT_RETRY    BIT_ULL(40)
-+#define XHCI_BROKEN_D3COLD    BIT_ULL(41)
- 
-       unsigned int            num_active_eps;
-       unsigned int            limit_active_eps;

++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:54.310640662 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:54.314640667 +0200
@@ -2111,6 +2111,228 @@
        
patches.kernel.org/5.12.10-159-xen-netback-take-a-reference-to-the-RX-task-t.patch
        
patches.kernel.org/5.12.10-160-neighbour-allow-NUD_NOARP-entries-to-be-force.patch
        patches.kernel.org/5.12.10-161-Linux-5.12.10.patch
+       
patches.kernel.org/5.12.11-001-proc-Track-proc-pid-attr-opener-mm_struct.patch
+       
patches.kernel.org/5.12.11-002-ASoC-max98088-fix-ni-clock-divider-calculatio.patch
+       patches.kernel.org/5.12.11-003-ASoC-amd-fix-for-pcm_read-error.patch
+       patches.kernel.org/5.12.11-004-spi-Fix-spi-device-unregister-flow.patch
+       
patches.kernel.org/5.12.11-005-spi-spi-zynq-qspi-Fix-stack-violation-bug.patch
+       
patches.kernel.org/5.12.11-006-bpf-Forbid-trampoline-attach-for-functions-wi.patch
+       
patches.kernel.org/5.12.11-007-ASoC-codecs-lpass-rx-macro-add-missing-MODULE.patch
+       
patches.kernel.org/5.12.11-008-ASoC-codecs-lpass-tx-macro-add-missing-MODULE.patch
+       
patches.kernel.org/5.12.11-009-net-nfc-rawsock.c-fix-a-permission-check-bug.patch
+       
patches.kernel.org/5.12.11-010-usb-cdns3-Fix-runtime-PM-imbalance-on-error.patch
+       
patches.kernel.org/5.12.11-011-ASoC-Intel-bytcr_rt5640-Add-quirk-for-the-Gla.patch
+       
patches.kernel.org/5.12.11-012-ASoC-Intel-bytcr_rt5640-Add-quirk-for-the-Len.patch
+       
patches.kernel.org/5.12.11-013-bpf-Add-deny-list-of-btf-ids-check-for-tracin.patch
+       
patches.kernel.org/5.12.11-014-vfio-ccw-Reset-FSM-state-to-IDLE-inside-FSM.patch
+       
patches.kernel.org/5.12.11-015-vfio-ccw-Serialize-FSM-IDLE-state-with-I-O-co.patch
+       
patches.kernel.org/5.12.11-016-ASoC-sti-sas-add-missing-MODULE_DEVICE_TABLE.patch
+       
patches.kernel.org/5.12.11-017-spi-sprd-Add-missing-MODULE_DEVICE_TABLE.patch
+       
patches.kernel.org/5.12.11-018-usb-chipidea-udc-assign-interrupt-number-to-U.patch
+       
patches.kernel.org/5.12.11-019-isdn-mISDN-netjet-Fix-crash-in-nj_probe.patch
+       
patches.kernel.org/5.12.11-020-bonding-init-notify_work-earlier-to-avoid-uni.patch
+       
patches.kernel.org/5.12.11-021-netlink-disable-IRQs-for-netlink_lock_table.patch
+       patches.kernel.org/5.12.11-022-net-mdiobus-get-rid-of-a-BUG_ON.patch
+       
patches.kernel.org/5.12.11-023-cgroup-disable-controllers-at-parse-time.patch
+       
patches.kernel.org/5.12.11-024-wq-handle-VM-suspension-in-stall-detection.patch
+       
patches.kernel.org/5.12.11-025-net-qla3xxx-fix-schedule-while-atomic-in-ql_s.patch
+       
patches.kernel.org/5.12.11-026-RDS-tcp-loopback-connection-can-hang.patch
+       
patches.kernel.org/5.12.11-027-net-sfc-fix-non-freed-irq-in-legacy-irq-mode.patch
+       
patches.kernel.org/5.12.11-028-scsi-bnx2fc-Return-failure-if-io_req-is-alrea.patch
+       
patches.kernel.org/5.12.11-029-scsi-vmw_pvscsi-Set-correct-residual-data-len.patch
+       
patches.kernel.org/5.12.11-030-scsi-hisi_sas-Drop-free_irq-of-devm_request_i.patch
+       
patches.kernel.org/5.12.11-031-scsi-target-qla2xxx-Wait-for-stop_phase1-at-W.patch
+       
patches.kernel.org/5.12.11-032-net-macb-ensure-the-device-is-available-befor.patch
+       
patches.kernel.org/5.12.11-033-net-appletalk-cops-Fix-data-race-in-cops_prob.patch
+       
patches.kernel.org/5.12.11-034-net-dsa-microchip-enable-phy-errata-workaroun.patch
+       
patches.kernel.org/5.12.11-035-Makefile-LTO-have-linker-check-Wframe-larger-.patch
+       
patches.kernel.org/5.12.11-036-nvme-fabrics-decode-host-pathing-error-for-co.patch
+       
patches.kernel.org/5.12.11-037-MIPS-Fix-kernel-hang-under-FUNCTION_GRAPH_TRA.patch
+       
patches.kernel.org/5.12.11-038-bpf-selftests-Adjust-few-selftest-result_unpr.patch
+       
patches.kernel.org/5.12.11-039-dm-verity-fix-require_signatures-module_param.patch
+       
patches.kernel.org/5.12.11-040-bnx2x-Fix-missing-error-code-in-bnx2x_iov_ini.patch
+       
patches.kernel.org/5.12.11-041-nvme-tcp-remove-incorrect-Kconfig-dep-in-BLK_.patch
+       
patches.kernel.org/5.12.11-042-nvmet-fix-false-keep-alive-timeout-when-a-con.patch
+       
patches.kernel.org/5.12.11-043-powerpc-fsl-set-fsl-i2c-erratum-a004447-flag-.patch
+       
patches.kernel.org/5.12.11-044-powerpc-fsl-set-fsl-i2c-erratum-a004447-flag-.patch
+       
patches.kernel.org/5.12.11-045-spi-Don-t-have-controller-clean-up-spi-device.patch
+       
patches.kernel.org/5.12.11-046-spi-Cleanup-on-failure-of-initial-setup.patch
+       patches.kernel.org/5.12.11-047-i2c-mpc-Make-use-of-i2c_recover_bus.patch
+       
patches.kernel.org/5.12.11-048-i2c-mpc-implement-erratum-A-004447-workaround.patch
+       
patches.kernel.org/5.12.11-049-ALSA-seq-Fix-race-of-snd_seq_timer_open.patch
+       
patches.kernel.org/5.12.11-050-ALSA-firewire-lib-fix-the-context-to-call-snd.patch
+       
patches.kernel.org/5.12.11-051-ALSA-hda-realtek-headphone-and-mic-don-t-work.patch
+       
patches.kernel.org/5.12.11-052-ALSA-hda-realtek-fix-mute-micmute-LEDs-and-sp.patch
+       
patches.kernel.org/5.12.11-053-ALSA-hda-realtek-fix-mute-micmute-LEDs-and-sp.patch
+       
patches.kernel.org/5.12.11-054-ALSA-hda-realtek-fix-mute-micmute-LEDs-for-HP.patch
+       
patches.kernel.org/5.12.11-055-ALSA-hda-realtek-fix-mute-micmute-LEDs-for-HP.patch
+       
patches.kernel.org/5.12.11-056-spi-bcm2835-Fix-out-of-bounds-access-with-mor.patch
+       
patches.kernel.org/5.12.11-057-Revert-ACPI-sleep-Put-the-FACS-table-after-us.patch
+       
patches.kernel.org/5.12.11-058-ACPI-Pass-the-same-capabilities-to-the-_OSC-r.patch
+       
patches.kernel.org/5.12.11-059-drm-Fix-use-after-free-read-in-drm_getunique.patch
+       
patches.kernel.org/5.12.11-060-drm-Lock-pointer-access-in-drm_master_release.patch
+       
patches.kernel.org/5.12.11-061-x86-lto-Pass-stack-alignment-only-on-LLD-13.0.patch
+       
patches.kernel.org/5.12.11-062-perf-x86-intel-uncore-Fix-M2M-event-umask-for.patch
+       
patches.kernel.org/5.12.11-063-KVM-x86-Unload-MMU-on-guest-TLB-flush-if-TDP-.patch
+       
patches.kernel.org/5.12.11-064-KVM-X86-MMU-Use-the-correct-inherited-permiss.patch
+       
patches.kernel.org/5.12.11-065-kvm-avoid-speculation-based-attacks-from-out-.patch
+       
patches.kernel.org/5.12.11-066-staging-rtl8723bs-Fix-uninitialized-variables.patch
+       
patches.kernel.org/5.12.11-067-usb-misc-brcmstb-usb-pinmap-check-return-valu.patch
+       
patches.kernel.org/5.12.11-068-misc-rtsx-separate-aspm-mode-into-MODE_REG-an.patch
+       
patches.kernel.org/5.12.11-069-bus-mhi-pci_generic-Fix-possible-use-after-fr.patch
+       
patches.kernel.org/5.12.11-070-tick-nohz-Only-check-for-RCU-deferred-wakeup-.patch
+       
patches.kernel.org/5.12.11-071-bcache-remove-bcache-device-self-defined-read.patch
+       
patches.kernel.org/5.12.11-072-bcache-avoid-oversized-read-request-in-cache-.patch
+       
patches.kernel.org/5.12.11-073-async_xor-check-src_offs-is-not-NULL-before-u.patch
+       
patches.kernel.org/5.12.11-074-btrfs-do-not-write-supers-if-we-have-an-fs-er.patch
+       
patches.kernel.org/5.12.11-075-btrfs-zoned-fix-zone-number-to-sector-physica.patch
+       
patches.kernel.org/5.12.11-076-btrfs-return-value-from-btrfs_mark_extent_wri.patch
+       
patches.kernel.org/5.12.11-077-btrfs-promote-debugging-asserts-to-full-fledg.patch
+       
patches.kernel.org/5.12.11-078-coredump-Limit-what-can-interrupt-coredumps.patch
+       patches.kernel.org/5.12.11-079-cgroup1-don-t-allow-n-in-renaming.patch
+       
patches.kernel.org/5.12.11-080-ftrace-Do-not-blindly-read-the-ip-address-in-.patch
+       
patches.kernel.org/5.12.11-081-tracing-Correct-the-length-check-which-causes.patch
+       
patches.kernel.org/5.12.11-082-tools-bootconfig-Fix-a-build-error-accroding-.patch
+       
patches.kernel.org/5.12.11-083-mmc-renesas_sdhi-abort-tuning-when-timeout-de.patch
+       
patches.kernel.org/5.12.11-084-mmc-renesas_sdhi-Fix-HS400-on-R-Car-M3-W.patch
+       
patches.kernel.org/5.12.11-085-USB-f_ncm-ncm_bitrate-speed-is-unsigned.patch
+       
patches.kernel.org/5.12.11-086-usb-f_ncm-only-first-packet-of-aggregate-need.patch
+       
patches.kernel.org/5.12.11-087-usb-pd-Set-PD_T_SINK_WAIT_CAP-to-310ms.patch
+       
patches.kernel.org/5.12.11-088-usb-dwc3-meson-g12a-fix-usb2-PHY-glue-init-wh.patch
+       
patches.kernel.org/5.12.11-089-usb-dwc3-meson-g12a-Disable-the-regulator-in-.patch
+       
patches.kernel.org/5.12.11-090-usb-dwc3-gadget-Bail-from-dwc3_gadget_exit-if.patch
+       
patches.kernel.org/5.12.11-091-usb-dwc3-ep0-fix-NULL-pointer-exception.patch
+       
patches.kernel.org/5.12.11-092-usb-pci-quirks-disable-D3cold-on-xhci-suspend.patch
+       
patches.kernel.org/5.12.11-093-usb-musb-fix-MUSB_QUIRK_B_DISCONNECT_99-handl.patch
+       
patches.kernel.org/5.12.11-094-usb-typec-wcove-Use-LE-to-CPU-conversion-when.patch
+       
patches.kernel.org/5.12.11-095-usb-typec-ucsi-Clear-PPM-capability-data-in-u.patch
+       
patches.kernel.org/5.12.11-096-usb-typec-intel_pmc_mux-Put-fwnode-in-error-c.patch
+       
patches.kernel.org/5.12.11-097-usb-typec-intel_pmc_mux-Add-missed-error-chec.patch
+       
patches.kernel.org/5.12.11-098-usb-gadget-f_fs-Ensure-io_completion_wq-is-id.patch
+       
patches.kernel.org/5.12.11-099-USB-serial-ftdi_sio-add-NovaTech-OrionMX-prod.patch
+       
patches.kernel.org/5.12.11-100-USB-serial-omninet-add-device-id-for-Zyxel-Om.patch
+       
patches.kernel.org/5.12.11-101-USB-serial-quatech2-fix-control-request-direc.patch
+       
patches.kernel.org/5.12.11-102-USB-serial-cp210x-fix-alternate-function-for-.patch
+       
patches.kernel.org/5.12.11-103-USB-serial-cp210x-fix-CP2102N-A01-modem-contr.patch
+       
patches.kernel.org/5.12.11-104-usb-cdnsp-Fix-deadlock-issue-in-cdnsp_thread_.patch
+       
patches.kernel.org/5.12.11-105-usb-gadget-eem-fix-wrong-eem-header-operation.patch
+       
patches.kernel.org/5.12.11-106-usb-fix-various-gadgets-null-ptr-deref-on-10g.patch
+       
patches.kernel.org/5.12.11-107-usb-fix-various-gadget-panics-on-10gbps-cabli.patch
+       
patches.kernel.org/5.12.11-108-usb-typec-tcpm-Properly-handle-Alert-and-Stat.patch
+       
patches.kernel.org/5.12.11-109-usb-typec-tcpm-cancel-vdm-and-state-machine-h.patch
+       
patches.kernel.org/5.12.11-110-usb-typec-tcpm-cancel-frs-hrtimer-when-unregi.patch
+       
patches.kernel.org/5.12.11-111-usb-typec-tcpm-Do-not-finish-VDM-AMS-for-retr.patch
+       
patches.kernel.org/5.12.11-112-regulator-core-resolve-supply-for-boot-on-alw.patch
+       
patches.kernel.org/5.12.11-113-regulator-max77620-Use-device_set_of_node_fro.patch
+       
patches.kernel.org/5.12.11-114-regulator-bd718x7-Fix-the-BUCK7-voltage-setti.patch
+       
patches.kernel.org/5.12.11-115-regulator-da9121-Return-REGULATOR_MODE_INVALI.patch
+       
patches.kernel.org/5.12.11-116-regulator-fan53880-Fix-missing-n_voltages-set.patch
+       
patches.kernel.org/5.12.11-117-regulator-fixed-Ensure-enable_counter-is-corr.patch
+       
patches.kernel.org/5.12.11-118-regulator-scmi-Fix-off-by-one-for-linear-regu.patch
+       
patches.kernel.org/5.12.11-119-regulator-bd71828-Fix-.n_voltages-settings.patch
+       
patches.kernel.org/5.12.11-120-regulator-atc260x-Fix-n_voltages-and-min_sel-.patch
+       
patches.kernel.org/5.12.11-121-regulator-rtmv20-Fix-.set_current_limit-.get_.patch
+       patches.kernel.org/5.12.11-122-phy-usb-Fix-misuse-of-IS_ENABLED.patch
+       
patches.kernel.org/5.12.11-123-usb-cdns3-Enable-TDL_CHK-only-for-OUT-ep.patch
+       
patches.kernel.org/5.12.11-124-usb-dwc3-gadget-Disable-gadget-IRQ-during-pul.patch
+       
patches.kernel.org/5.12.11-125-usb-typec-tcpm-Correct-the-responses-in-SVDM-.patch
+       
patches.kernel.org/5.12.11-126-usb-typec-tcpm-Fix-misuses-of-AMS-invocation.patch
+       
patches.kernel.org/5.12.11-127-usb-typec-mux-Fix-copy-paste-mistake-in-typec.patch
+       
patches.kernel.org/5.12.11-128-drm-mcde-Fix-off-by-10-3-in-calculation.patch
+       
patches.kernel.org/5.12.11-129-drm-msm-a6xx-fix-incorrectly-set-uavflagprd_i.patch
+       
patches.kernel.org/5.12.11-130-drm-msm-a6xx-update-fix-CP_PROTECT-initializa.patch
+       
patches.kernel.org/5.12.11-131-drm-msm-a6xx-avoid-shadow-NULL-reference-in-f.patch
+       
patches.kernel.org/5.12.11-132-hwmon-corsair-psu-fix-suspend-behavior.patch
+       
patches.kernel.org/5.12.11-133-hwmon-tps23861-define-regmap-max-register.patch
+       
patches.kernel.org/5.12.11-134-hwmon-tps23861-set-current-shunt-value.patch
+       
patches.kernel.org/5.12.11-135-hwmon-tps23861-correct-shunt-LSB-values.patch
+       
patches.kernel.org/5.12.11-136-RDMA-ipoib-Fix-warning-caused-by-destroying-n.patch
+       
patches.kernel.org/5.12.11-137-RDMA-mlx5-Use-different-doorbell-memory-for-d.patch
+       
patches.kernel.org/5.12.11-138-RDMA-mlx4-Do-not-map-the-core_clock-page-to-u.patch
+       
patches.kernel.org/5.12.11-139-RDMA-mlx5-Block-FDB-rules-when-not-in-switchd.patch
+       
patches.kernel.org/5.12.11-140-RDMA-Verify-port-when-creating-flow-rule.patch
+       
patches.kernel.org/5.12.11-141-ARM-cpuidle-Avoid-orphan-section-warning.patch
+       
patches.kernel.org/5.12.11-142-vmlinux.lds.h-Avoid-orphan-section-with-SMP.patch
+       
patches.kernel.org/5.12.11-143-tools-bootconfig-Fix-error-return-code-in-app.patch
+       
patches.kernel.org/5.12.11-144-phy-cadence-Sierra-Fix-error-return-code-in-c.patch
+       
patches.kernel.org/5.12.11-145-ASoC-core-Fix-Null-point-dereference-in-fmt_s.patch
+       
patches.kernel.org/5.12.11-146-ASoC-meson-gx-card-fix-sound-dai-dt-schema.patch
+       
patches.kernel.org/5.12.11-147-phy-ti-Fix-an-error-code-in-wiz_probe.patch
+       
patches.kernel.org/5.12.11-148-gpio-wcd934x-Fix-shift-out-of-bounds-error.patch
+       
patches.kernel.org/5.12.11-149-pinctrl-qcom-Fix-duplication-in-gpio_groups.patch
+       
patches.kernel.org/5.12.11-150-perf-x86-intel-uncore-Fix-a-kernel-WARNING-tr.patch
+       
patches.kernel.org/5.12.11-151-perf-Fix-data-race-between-pin_count-incremen.patch
+       
patches.kernel.org/5.12.11-152-dt-bindings-connector-Replace-BIT-macro-with-.patch
+       
patches.kernel.org/5.12.11-153-sched-fair-Keep-load_avg-and-load_sum-synced.patch
+       
patches.kernel.org/5.12.11-154-sched-fair-Make-sure-to-update-tg-contrib-for.patch
+       
patches.kernel.org/5.12.11-155-ASoC-SOF-reset-enabled_cores-state-at-suspend.patch
+       
patches.kernel.org/5.12.11-156-sched-fair-Fix-util_est-UTIL_AVG_UNCHANGED-ha.patch
+       
patches.kernel.org/5.12.11-157-platform-surface-aggregator-Fix-event-disable.patch
+       
patches.kernel.org/5.12.11-158-x86-nmi_watchdog-Fix-old-style-NMI-watchdog-r.patch
+       
patches.kernel.org/5.12.11-159-KVM-x86-Ensure-liveliness-of-nested-VM-Enter-.patch
+       
patches.kernel.org/5.12.11-160-IB-mlx5-Fix-initializing-CQ-fragments-buffer.patch
+       
patches.kernel.org/5.12.11-161-NFS-Fix-a-potential-NULL-dereference-in-nfs_g.patch
+       
patches.kernel.org/5.12.11-162-NFSv4-Fix-deadlock-between-nfs4_evict_inode-a.patch
+       
patches.kernel.org/5.12.11-163-pinctrl-qcom-Make-it-possible-to-select-SC818.patch
+       
patches.kernel.org/5.12.11-164-perf-session-Correct-buffer-copying-when-peek.patch
+       
patches.kernel.org/5.12.11-165-kvm-fix-previous-commit-for-32-bit-builds.patch
+       
patches.kernel.org/5.12.11-166-NFS-Fix-use-after-free-in-nfs4_init_client.patch
+       
patches.kernel.org/5.12.11-167-NFSv4-Fix-second-deadlock-in-nfs4_evict_inode.patch
+       
patches.kernel.org/5.12.11-168-NFSv4-nfs4_proc_set_acl-needs-to-restore-NFS_.patch
+       
patches.kernel.org/5.12.11-169-scsi-core-Fix-error-handling-of-scsi_host_all.patch
+       
patches.kernel.org/5.12.11-170-scsi-core-Fix-failure-handling-of-scsi_add_ho.patch
+       
patches.kernel.org/5.12.11-171-scsi-core-Put-.shost_dev-in-failure-path-if-h.patch
+       
patches.kernel.org/5.12.11-172-scsi-core-Only-put-parent-device-if-host-stat.patch
+       
patches.kernel.org/5.12.11-173-proc-only-require-mm_struct-for-writing.patch
+       patches.kernel.org/5.12.11-174-Linux-5.12.11.patch
+       
patches.kernel.org/5.12.12-001-net-ieee802154-fix-null-deref-in-parse-dev-ad.patch
+       
patches.kernel.org/5.12.12-002-HID-asus-Filter-keyboard-EC-for-old-ROG-keybo.patch
+       
patches.kernel.org/5.12.12-003-HID-quirks-Set-INCREMENT_USAGE_ON_DUPLICATE-f.patch
+       
patches.kernel.org/5.12.12-004-HID-quirks-Add-HID_QUIRK_NO_INIT_REPORTS-quir.patch
+       
patches.kernel.org/5.12.12-005-HID-a4tech-use-A4_2WHEEL_MOUSE_HACK_B8-for-A4.patch
+       
patches.kernel.org/5.12.12-006-HID-hid-input-add-mapping-for-emoji-picker-ke.patch
+       
patches.kernel.org/5.12.12-007-HID-hid-sensor-hub-Return-error-for-hid_set_f.patch
+       
patches.kernel.org/5.12.12-008-HID-asus-filter-G713-G733-key-event-to-preven.patch
+       
patches.kernel.org/5.12.12-009-HID-quirks-Add-quirk-for-Lenovo-optical-mouse.patch
+       
patches.kernel.org/5.12.12-010-HID-multitouch-set-Stylus-suffix-for-Stylus-a.patch
+       
patches.kernel.org/5.12.12-011-HID-Add-BUS_VIRTUAL-to-hid_connect-logging.patch
+       
patches.kernel.org/5.12.12-012-HID-usbhid-fix-info-leak-in-hid_submit_ctrl.patch
+       
patches.kernel.org/5.12.12-013-mt76-mt7921-fix-max-aggregation-subframes-set.patch
+       
patches.kernel.org/5.12.12-014-drm-tegra-sor-Do-not-leak-runtime-PM-referenc.patch
+       
patches.kernel.org/5.12.12-015-gpu-host1x-Split-up-client-initalization-and-.patch
+       
patches.kernel.org/5.12.12-016-drm-tegra-sor-Fully-initialize-SOR-before-reg.patch
+       
patches.kernel.org/5.12.12-017-hwmon-pmbus-q54sj108a2-The-PMBUS_MFR_ID-is-ac.patch
+       
patches.kernel.org/5.12.12-018-ARM-OMAP1-Fix-use-of-possibly-uninitialized-i.patch
+       
patches.kernel.org/5.12.12-019-ARM-OMAP2-Fix-build-warning-when-mmc_omap-is-.patch
+       
patches.kernel.org/5.12.12-020-gfs2-Prevent-direct-I-O-write-fallback-errors.patch
+       
patches.kernel.org/5.12.12-021-gfs2-fix-a-deadlock-on-withdraw-during-mount.patch
+       
patches.kernel.org/5.12.12-022-gfs2-Clean-up-revokes-on-normal-withdraws.patch
+       
patches.kernel.org/5.12.12-023-HID-multitouch-Disable-event-reporting-on-sus.patch
+       
patches.kernel.org/5.12.12-024-HID-gt683r-add-missing-MODULE_DEVICE_TABLE.patch
+       
patches.kernel.org/5.12.12-025-HID-intel-ish-hid-ipc-Add-Alder-Lake-device-I.patch
+       
patches.kernel.org/5.12.12-026-riscv-Use-mno-relax-when-using-lld-linker.patch
+       patches.kernel.org/5.12.12-027-ALSA-hda-Add-AlderLake-M-PCI-ID.patch
+       
patches.kernel.org/5.12.12-028-mt76-mt7921-remove-leftover-80-80-HE-capabili.patch
+       
patches.kernel.org/5.12.12-029-gfs2-Fix-use-after-free-in-gfs2_glock_shrink_.patch
+       
patches.kernel.org/5.12.12-030-scsi-target-core-Fix-warning-on-realtime-kern.patch
+       
patches.kernel.org/5.12.12-031-ethernet-myri10ge-Fix-missing-error-code-in-m.patch
+       
patches.kernel.org/5.12.12-032-scsi-qedf-Do-not-put-host-in-qedf_vport_creat.patch
+       
patches.kernel.org/5.12.12-033-Bluetooth-Add-a-new-USB-ID-for-RTL8822CE.patch
+       
patches.kernel.org/5.12.12-034-scsi-scsi_devinfo-Add-blacklist-entry-for-HPE.patch
+       
patches.kernel.org/5.12.12-035-nvme-loop-reset-queue-count-to-1-in-nvme_loop.patch
+       
patches.kernel.org/5.12.12-036-nvme-loop-clear-NVME_LOOP_Q_LIVE-when-nvme_lo.patch
+       
patches.kernel.org/5.12.12-037-nvme-loop-check-for-NVME_LOOP_Q_LIVE-in-nvme_.patch
+       
patches.kernel.org/5.12.12-038-nvme-loop-do-not-warn-for-deleted-controllers.patch
+       
patches.kernel.org/5.12.12-039-net-ipconfig-Don-t-override-command-line-host.patch
+       
patches.kernel.org/5.12.12-040-drm-amd-display-Allow-bandwidth-validation-fo.patch
+       
patches.kernel.org/5.12.12-041-drm-amdgpu-refine-amdgpu_fru_get_product_info.patch
+       
patches.kernel.org/5.12.12-042-drm-amd-display-Fix-potential-memory-leak-in-.patch
+       
patches.kernel.org/5.12.12-043-drm-amd-amdgpu-save-psp-ring-wptr-to-avoid-at.patch
+       
patches.kernel.org/5.12.12-044-rtnetlink-Fix-missing-error-code-in-rtnl_brid.patch
+       
patches.kernel.org/5.12.12-045-net-x25-Return-the-correct-errno-code.patch
+       patches.kernel.org/5.12.12-046-net-Return-the-correct-errno-code.patch
+       patches.kernel.org/5.12.12-047-fib-Return-the-correct-errno-code.patch
+       patches.kernel.org/5.12.12-048-Linux-5.12.12.patch
 
        ########################################################
        # Build fixes that apply to the vanilla kernel too.
@@ -2286,7 +2508,6 @@
        ########################################################
        # USB
        ########################################################
-       patches.suse/usb-pci-quirks-disable-D3cold-on-xhci-suspend-for-s2.patch
 
        ########################################################
        # Input

++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:54.342640703 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:54.342640703 +0200
@@ -1,3 +1,3 @@
-2021-06-11 05:05:06 +0000
-GIT Revision: b92eaf7cf30a84428cfe019308359a10f12d8e4c
+2021-06-18 11:07:46 +0000
+GIT Revision: 0e46a2c644754074b091f728831994304f5dbff0
 GIT Branch: stable

++++++ split-modules ++++++
--- /var/tmp/diff_new_pack.nk2vZd/_old  2021-06-21 20:35:54.354640718 +0200
+++ /var/tmp/diff_new_pack.nk2vZd/_new  2021-06-21 20:35:54.358640723 +0200
@@ -110,7 +110,11 @@
 }
 
 # base
-sed 'y/-/_/' <"$opt_builddir/Module.base" | add_dependent_modules >"$tmp/base"
+if test -f "$opt_builddir/Module.base"; then
+    sed 'y/-/_/' <"$opt_builddir/Module.base" | add_dependent_modules 
>"$tmp/base"
+else
+    touch "$tmp/base"
+fi
 join -j 1 -o 2.2 "$tmp/base" "$tmp/all" >"$opt_out/base-modules"
 
 # base firmware
@@ -123,6 +127,7 @@
 
 # kmps
 for f in "$opt_builddir"/Module.*-kmp; do
+       test -f "$f" || continue
        kmp=${f##*/Module.}
        sed 'y/-/_/' <"$f" >"$tmp/$kmp"
        join -j 1 -o 2.2 "$tmp/$kmp" "$tmp/all" >"$opt_out/$kmp-modules"
@@ -146,8 +151,63 @@
 join -j 1 -o 2.2 "$tmp/supp-all" "$tmp/all" >"$opt_out/main-modules"
 
 # unsupported
-join -j 1 -v 2 -o 2.2 <(sort -u "$tmp/supp-all" "$tmp/kmp-all") "$tmp/all" 
>"$opt_out/unsupported-modules"
+join -j 1 -v 2 -o 2.2 <(sort -u "$tmp/supp-all" "$tmp/kmp-all") "$tmp/all" | 
sort -u > "$opt_out/unsupported-modules"
 
-exit 0
+# split again to extra and optional
+if $opt_extra && test -f "$opt_builddir/Module.optional"; then
 
+    declare -A modmarks wcmarks
+    wcpaths=()
+    while read mark path; do
+       path=${path%.xz}
+       path=${path%.ko}
+       mod=${path##*/}
+       modmarks["$mod"]="$mark"
+       # paths with wildcards need to be verified sequentially, so we keep
+       # the paths in the array wcpaths and each mark in wcmarks[]
+       case "$path" in
+           *[\*\?\[]*)
+               wcpaths[${#wcpaths[@]}]="$path"
+               wcmarks["$path"]="$mark";;
+       esac
+    done < "$opt_builddir/Module.optional"
+
+    while read xpath; do
+       path=${xpath%.xz}
+       path=${path%.ko}
+       mod=${path##*/}
+       x=${modmarks["$mod"]}
+       if [ -n "$x" ]; then
+           test x"$x" = x"-" && echo "$xpath"
+           continue
+       fi
 
+       # unmatched modules must be handled via wildcard
+       path=${path#/lib/modules/*/kernel/}
+       for m in "${wcpaths[@]}"; do
+           case "$path" in
+               ($m)
+                   test x${wcmarks["$m"]} = x"-" && echo "$xpath"
+                   break;;
+           esac
+       done
+    done < "$opt_out/unsupported-modules" | sort > "$tmp/unsupp-extra"
+
+    cat "$tmp/supp-all" "$tmp/kmp-all" "$tmp/unsupp-extra" | \
+       sed -r 's:[^ ]*/([^/]*)\.ko(.xz)?\>:\1:g; y/-/_/' | sort -u > 
"$tmp/unsupp-extra-all"
+    add_dependent_modules "$tmp/unsupp-explain" <"$tmp/unsupp-extra-all" 
>"$tmp/unsupp-extra-dep"
+    if ! cmp -s "$tmp/unsupp-extra-all" "$tmp/unsupp-extra-dep"; then
+       echo "The following optional modules are used by extra modules:" >&2
+       join -j1 -a2 <(sort "$tmp/unsupp-explain") \
+                <(join -v2 "$tmp/unsupp-extra-all" "$tmp/unsupp-extra-dep") >&2
+       echo "Please fix supported.conf." >&2
+       if ! $opt_ignore_errors; then
+               exit 1
+       fi
+    fi
+
+    join -j 1 -v 2 "$tmp/unsupp-extra" "$opt_out/unsupported-modules" > 
"$opt_out/optional-modules"
+    mv "$tmp/unsupp-extra" "$opt_out/unsupported-modules"
+fi
+
+exit 0

Reply via email to