From 5213bceb71c93f7a5c1a36c9346d7370d769553e Mon Sep 17 00:00:00 2001 From: Patrick Talbert Date: Thu, 11 Apr 2024 14:51:53 +0200 Subject: [PATCH] kernel-6.9.0-0.rc3.20240411gite8c39d0f57f3.33 * Thu Apr 11 2024 Fedora Kernel Team [6.9.0-0.rc3.e8c39d0f57f3.33] - redhat: sanity check yaml files (Jan Stancek) - spec: rework filter-mods and mod-denylist (Jan Stancek) - Linux v6.9.0-0.rc3.e8c39d0f57f3 Resolves: Signed-off-by: Patrick Talbert --- Makefile.rhelver | 2 +- def_variants.yaml.fedora | 504 +++++++++++ def_variants.yaml.rhel | 519 ++++++++++++ filter-aarch64.sh.fedora | 20 - filter-aarch64.sh.rhel | 18 - filter-modules.sh.fedora | 201 ----- filter-modules.sh.rhel | 177 ---- filter-ppc64le.sh.fedora | 14 - filter-ppc64le.sh.rhel | 14 - filter-s390x.sh.fedora | 12 - filter-s390x.sh.rhel | 12 - filter-x86_64.sh.fedora | 12 - filter-x86_64.sh.rhel | 12 - filtermods.py | 1084 ++++++++++++++++++++++++ kernel-aarch64-16k-debug-fedora.config | 2 + kernel-aarch64-16k-fedora.config | 2 + kernel-aarch64-64k-debug-rhel.config | 2 + kernel-aarch64-64k-rhel.config | 2 + kernel-aarch64-debug-fedora.config | 2 + kernel-aarch64-debug-rhel.config | 2 + kernel-aarch64-fedora.config | 2 + kernel-aarch64-rhel.config | 2 + kernel-aarch64-rt-debug-rhel.config | 2 + kernel-aarch64-rt-rhel.config | 2 + kernel-ppc64le-debug-fedora.config | 2 + kernel-ppc64le-debug-rhel.config | 2 + kernel-ppc64le-fedora.config | 2 + kernel-ppc64le-rhel.config | 2 + kernel-s390x-debug-fedora.config | 2 + kernel-s390x-debug-rhel.config | 2 + kernel-s390x-fedora.config | 2 + kernel-s390x-rhel.config | 2 + kernel-s390x-zfcpdump-rhel.config | 2 + kernel-x86_64-debug-fedora.config | 2 + kernel-x86_64-debug-rhel.config | 2 + kernel-x86_64-fedora.config | 2 + kernel-x86_64-rhel.config | 2 + kernel-x86_64-rt-debug-rhel.config | 2 + kernel-x86_64-rt-rhel.config | 2 + kernel.changelog | 10 + kernel.spec | 288 +++---- mod-denylist.sh | 112 +-- mod-extra.list.fedora | 200 ----- mod-extra.list.rhel | 326 ------- mod-internal.list | 105 --- mod-kvm.list | 5 - mod-partner.list | 2 - patch-6.9-redhat.patch | 12 +- sources | 6 +- 49 files changed, 2326 insertions(+), 1391 deletions(-) create mode 100644 def_variants.yaml.fedora create mode 100644 def_variants.yaml.rhel delete mode 100644 filter-aarch64.sh.fedora delete mode 100644 filter-aarch64.sh.rhel delete mode 100755 filter-modules.sh.fedora delete mode 100755 filter-modules.sh.rhel delete mode 100644 filter-ppc64le.sh.fedora delete mode 100644 filter-ppc64le.sh.rhel delete mode 100644 filter-s390x.sh.fedora delete mode 100644 filter-s390x.sh.rhel delete mode 100644 filter-x86_64.sh.fedora delete mode 100644 filter-x86_64.sh.rhel create mode 100755 filtermods.py delete mode 100644 mod-extra.list.fedora delete mode 100644 mod-extra.list.rhel delete mode 100644 mod-internal.list delete mode 100644 mod-kvm.list delete mode 100644 mod-partner.list diff --git a/Makefile.rhelver b/Makefile.rhelver index 1232f7a10..66dd6c7e7 100644 --- a/Makefile.rhelver +++ b/Makefile.rhelver @@ -12,7 +12,7 @@ RHEL_MINOR = 99 # # Use this spot to avoid future merge conflicts. # Do not trim this comment. -RHEL_RELEASE = 31 +RHEL_RELEASE = 33 # # RHEL_REBASE_NUM diff --git a/def_variants.yaml.fedora b/def_variants.yaml.fedora new file mode 100644 index 000000000..ecac2ae82 --- /dev/null +++ b/def_variants.yaml.fedora @@ -0,0 +1,504 @@ +packages: + - name: modules-core + depends-on: [] + - name: modules + depends-on: + - modules-core + - name: modules-internal + depends-on: + - modules-core + - modules + - name: modules-extra + depends-on: + - modules-core + - modules + - name: modules-rt-kvm + if_variant_in: ["rt"] + depends-on: + - modules-core + + +rules: + - arch/x86/kvm/kvm(-amd|-intel|\.).*: modules-rt-kvm + if_variant_in: ["rt"] + + - arch/.*: modules-core + - crypto/.*: modules-core + + - drivers/accel/.*: modules-core + - drivers/accessibility/.*: modules-core + - drivers/acpi/video.*: modules + - drivers/acpi/.*: modules-core + - drivers/ata/.*: modules-core + + - drivers/base/.*(kunit|test).*: modules-internal + - drivers/base/regmap/regmap-sdw.*: modules + - drivers/base/.*: modules-core + - drivers/block/floppy.*: modules-extra + - drivers/block/rnbd.*: modules + - drivers/block/.*: modules-core + - drivers/bus/.*: modules-core + + - drivers/cdx/.*: modules-core + - drivers/char/mwave.*: modules + - drivers/char/.*: modules-core + - drivers/clk/.*test.*: modules-internal + - drivers/clk/.*: modules-core + - drivers/counter/.*: modules-core + - drivers/cpufreq/.*: modules-core + - drivers/crypto/caam/.*: modules + - drivers/crypto/cavium/.*: modules + - drivers/crypto/chelsio/.*: modules + - drivers/crypto/hisilicon/.*: modules + - drivers/crypto/marvell/.*: modules + - drivers/crypto/.*: modules-core + - drivers/cxl/.*: modules-core + + - drivers/dax/.*: modules-core + - drivers/dca/.*: modules-core + - drivers/devfreq/.*: modules-core + - drivers/dma/dmatest.*: modules-internal + - drivers/dma/.*: modules-core + + - drivers/edac/.*: modules-core + - drivers/extcon/.*: modules-core + + - drivers/firmware/iscsi_ibft.*: modules + - drivers/firmware/.*: modules-core + - drivers/fsi/.*: modules-core + + - drivers/gnss/.*: modules-core + - drivers/gpio/gpio-dln2.*: modules-extra + - drivers/gpio/gpio-ljca.*: modules + - drivers/gpio/.*: modules-core + - drivers/gpu/drm/i915/kvmgt.*: modules-rt-kvm + if_variant_in: ["rt"] + - drivers/gpu/drm/display/drm_.*: modules-core + - drivers/gpu/drm/drm.*: modules-core + - drivers/gpu/drm/etnaviv/.*: modules-core + - drivers/gpu/drm/gud/.*: modules-core + - drivers/gpu/drm/hyperv/.*: modules-core + - drivers/gpu/drm/imagination/.*: modules-core + - drivers/gpu/drm/lima/.*: modules-core + - drivers/gpu/drm/mxsfb/.*: modules-core + - drivers/gpu/drm/panfrost/.*: modules-core + - drivers/gpu/drm/qxl/.*: modules-core + - drivers/gpu/drm/scheduler/.*: modules-core + - drivers/gpu/drm/solomon/.*: modules-core + - drivers/gpu/drm/tests/.*: modules-internal + - drivers/gpu/drm/tidss/.*: modules-core + - drivers/gpu/drm/tiny/.*: modules-core + - drivers/gpu/drm/ttm/.*: modules-core + - drivers/gpu/drm/udl/.*: modules-core + - drivers/gpu/drm/v3d/.*: modules-core + - drivers/gpu/drm/vgem/.*: modules-core + - drivers/gpu/drm/virtio/.*: modules-core + - drivers/gpu/drm/vkms/.*: modules-core + - drivers/gpu/drm/vmwgfx/.*: modules-core + - drivers/gpu/drm/xlnx/.*: modules-core + - drivers/gpu/host1x/.*: modules-core + + - drivers/hid/.*test.*: modules-internal + - drivers/hid/hid-asus.*: modules + - drivers/hid/hid-nintendo.*: modules + - drivers/hid/hid-picolcd.*: modules + - drivers/hid/hid-playstation.*: modules + - drivers/hid/surface-hid.*: modules + - drivers/hid/hid-prodikeys.*: modules + - drivers/hid/.*: modules-core + - drivers/hte/.*: modules-core + - drivers/hv/.*: modules-core + - drivers/hwmon/asus_wmi_sensors.*: modules + - drivers/hwmon/dell-smm-hwmon.*: modules + - drivers/hwmon/hp-wmi-sensors.*: modules + - drivers/hwmon/intel-m10-bmc-hwmon.*: modules + - drivers/hwmon/nct6775.*: modules + - drivers/hwmon/.*: modules-core + - drivers/hwspinlock/.*: modules-core + - drivers/hwtracing/.*: modules-core + + - drivers/i2c/busses/i2c-dln2.*: modules-extra + - drivers/i2c/busses/i2c-ljca.*: modules + - drivers/i2c/.*: modules-core + - drivers/i3c/.*: modules-core + - drivers/iio/adc/dln2-adc.*: modules-extra + - drivers/iio/accel/.*: modules + - drivers/iio/common/cros_ec_sensors/.*: modules + - drivers/iio/light/.*: modules + - drivers/iio/pressure/.*: modules + - drivers/iio/proximity/.*: modules + - drivers/iio/test/.*: modules-internal + - drivers/iio/.*: modules-core + - drivers/input/gameport/.*: modules + - drivers/input/joystick/.*: modules-extra + - drivers/input/misc/pcspkr.*: modules-extra + - drivers/input/tablet/.*: modules + - drivers/input/tests/.*: modules-internal + - drivers/input/touchscreen/.*: modules + - drivers/input/.*: modules-core + - drivers/interconnect/.*: modules-core + - drivers/iommu/.*: modules-core + - drivers/irqchip/.*: modules-core + + - drivers/mailbox/.*: modules-core + - drivers/md/.*: modules-core + - drivers/memory/dfl-emif.*: modules + - drivers/memory/.*: modules-core + - drivers/message/fusion/mptctl.*: modules-extra + - drivers/message/fusion/mptfc.*: modules-extra + - drivers/message/fusion/.*: modules + - drivers/message/.*: modules-core + - drivers/mfd/dln2.*: modules-extra + - drivers/misc/.*: modules-core + - drivers/mux/.*: modules-core + + - drivers/net/amt.ko: modules-core + - drivers/net/bareudp.ko: modules-core + - drivers/net/bonding/.*: modules-core + - drivers/net/can/slcan/slcan.*: modules-extra + - drivers/net/can/usb/ems_usb.*: modules-extra + - drivers/net/can/vcan.*: modules-extra + - drivers/net/dummy.ko: modules-core + - drivers/net/eql.ko: modules-core + + - drivers/net/ethernet/8390/.*: modules-core + - drivers/net/ethernet/adi/.*: modules-core + - drivers/net/ethernet/agere/.*: modules-core + - drivers/net/ethernet/altera/.*: modules-core + - drivers/net/ethernet/amazon/.*: modules-core + - drivers/net/ethernet/amd/.*: modules-core + - drivers/net/ethernet/apm/.*: modules-core + - drivers/net/ethernet/asix/.*: modules-core + - drivers/net/ethernet/brocade/.*: modules-core + - drivers/net/ethernet/cavium/.*: modules-core + - drivers/net/ethernet/dnet.ko: modules-core + - drivers/net/ethernet/engleder/.*: modules-core + - drivers/net/ethernet/ethoc.ko: modules-core + - drivers/net/ethernet/fealnx.ko: modules-core + - drivers/net/ethernet/freescale/.*: modules-core + - drivers/net/ethernet/fungible/.*: modules-core + - drivers/net/ethernet/google/.*: modules-core + - drivers/net/ethernet/hisilicon/.*: modules-core + - drivers/net/ethernet/ibm/.*: modules-core + - drivers/net/ethernet/intel/.*: modules-core + - drivers/net/ethernet/jme.ko: modules-core + - drivers/net/ethernet/litex/.*: modules-core + - drivers/net/ethernet/mellanox/.*: modules-core + - drivers/net/ethernet/microsoft/.*: modules-core + - drivers/net/ethernet/natsemi/.*: modules-core + - drivers/net/ethernet/netronome/.*: modules-core + - drivers/net/ethernet/pensando/.*: modules-core + - drivers/net/ethernet/rocker/rocker.*: modules-internal + - drivers/net/ethernet/qualcomm/.*: modules-core + - drivers/net/ethernet/realtek/.*: modules-core + - drivers/net/ethernet/renesas/.*: modules-core + - drivers/net/ethernet/socionext/.*: modules-core + - drivers/net/ethernet/vertexcom/.*: modules-core + - drivers/net/ethernet/wangxun/.*: modules-core + - drivers/net/ethernet/xilinx/.*: modules-core + + - drivers/net/fjes/.*: modules-core + - drivers/net/geneve.ko: modules-core + - drivers/net/gtp.ko: modules-core + - drivers/net/hamradio/.*: modules-extra + - drivers/net/hyperv/.*: modules-core + - drivers/net/ifb.ko: modules-core + - drivers/net/ipa/.*: modules-core + - drivers/net/ipvlan/.*: modules-core + - drivers/net/macsec.ko: modules-core + - drivers/net/macvlan.ko: modules-core + - drivers/net/macvtap.ko: modules-core + - drivers/net/mctp/.*: modules-core + - drivers/net/mdio.*: modules-core + - drivers/net/mhi_net.ko: modules-core + - drivers/net/mii.ko: modules-core + - drivers/net/net_failover.ko: modules-core + - drivers/net/netdevsim/netdevsim.*: modules-internal + - drivers/net/netconsole.ko: modules-core + - drivers/net/nlmon.ko: modules-core + - drivers/net/pcs/.*: modules-core + - drivers/net/phy/.*: modules-core + - drivers/net/rionet.ko: modules-core + - drivers/net/slip/slip.*: modules-extra + - drivers/net/sungem_phy.ko: modules-core + - drivers/net/tap.ko: modules-core + - drivers/net/team/.*: modules-core + - drivers/net/thunderbolt/.*: modules-core + - drivers/net/tun.ko: modules-core + - drivers/net/veth.ko: modules-core + - drivers/net/virtio_net.ko: modules-core + - drivers/net/vmxnet3/.*: modules-core + - drivers/net/vrf.ko: modules-core + - drivers/net/vsockmon.ko: modules-core + - drivers/net/vxlan/.*: modules-core + - drivers/net/wireguard/.*: modules-core + - drivers/net/wireless/virtual/mac80211_hwsim.*: modules-internal + - drivers/net/wwan/wwan_hwsim.*: modules-internal + - drivers/net/wwan/.*: modules-core + - drivers/net/xen.*: modules-core + + - drivers/nvdimm/.*: modules-core + - drivers/nvme/host/nvme-rdma.*: modules + - drivers/nvme/target/nvmet-rdma.*: modules + - drivers/nvme/.*: modules-core + - drivers/nvmem/nvmem_u-boot-env.*: modules + - drivers/nvmem/.*: modules-core + + - drivers/parport/parport_serial.*: modules + - drivers/parport/.*: modules-core + - drivers/pci/pcie/aer_inject.*: modules-extra + - drivers/pci/.*: modules-core + - drivers/perf/.*: modules-core + - drivers/phy/.*: modules-core + - drivers/pinctrl/.*: modules-core + - drivers/platform/chrome/.*test.*: modules-internal + - drivers/pmdomain/.*: modules-core + - drivers/powercap/intel_rapl_tpmi.*: modules + - drivers/powercap/.*: modules-core + - drivers/pps/.*: modules-core + - drivers/ptp/ptp_kvm.*: modules-rt-kvm + if_variant_in: ["rt"] + - drivers/ptp/ptp_dfl_tod.*: modules + - drivers/ptp/.*: modules-core + - drivers/pwm/.*: modules-core + + - drivers/rapidio/.*: modules-core + - drivers/regulator/arizona-micsupp.*: modules + - drivers/regulator/.*: modules-core + - drivers/remoteproc/.*: modules-core + - drivers/reset/.*: modules-core + - drivers/rpmsg/.*: modules-core + - drivers/rtc/.*test.*: modules-internal + - drivers/rtc/.*: modules-core + + - drivers/s390/.*: modules-core + + - drivers/scsi/3w.*: modules-core + - drivers/scsi/BusLogic.ko: modules-core + - drivers/scsi/a100u2w.ko: modules-core + - drivers/scsi/advansys.ko: modules-core + - drivers/scsi/am53c974.ko: modules-core + - drivers/scsi/arcmsr.*: modules-core + - drivers/scsi/atp870u.ko: modules-core + - drivers/scsi/ch.ko: modules-core + - drivers/scsi/cxlflash/.*: modules-core + - drivers/scsi/dc395x.ko: modules-core + - drivers/scsi/device_handler/.*: modules-core + - drivers/scsi/dmx3191d.ko: modules-core + - drivers/scsi/elx/.*: modules-core + - drivers/scsi/esp_scsi.ko: modules-core + - drivers/scsi/fdomain.*: modules-core + - drivers/scsi/hpsa.ko: modules-core + - drivers/scsi/hptiop.ko: modules-core + - drivers/scsi/hv_storvsc.ko: modules-core + - drivers/scsi/ibmvscsi.*: modules-core + - drivers/scsi/initio.ko: modules-core + - drivers/scsi/ipr.ko: modules-core + - drivers/scsi/ips.ko: modules-core + - drivers/scsi/iscsi_tcp.ko: modules-core + - drivers/scsi/libfc/.*: modules-core + - drivers/scsi/libiscsi.*: modules-core + - drivers/scsi/mpi3mr/.*: modules-core + - drivers/scsi/mvumi.ko: modules-core + - drivers/scsi/myrb.ko: modules-core + - drivers/scsi/myrs.ko: modules-core + - drivers/scsi/raid_class.ko: modules-core + - drivers/scsi/scsi_debug.ko: modules-core + - drivers/scsi/scsi_transport_.*: modules-core + - drivers/scsi/ses.ko: modules-core + - drivers/scsi/smartpqi/.*: modules-core + - drivers/scsi/snic/.*: modules-core + - drivers/scsi/st.ko: modules-core + - drivers/scsi/stex.ko: modules-core + - drivers/scsi/virtio_scsi.ko: modules-core + - drivers/scsi/vmw_pvscsi.ko: modules-core + - drivers/scsi/wd719x.ko: modules-core + - drivers/scsi/xen-scsifront.ko: modules-core + + - drivers/slimbus/.*: modules-core + - drivers/soc/.*: modules-core + - drivers/spi/spi-altera-dfl.*: modules + - drivers/spi/spi-dln2.*: modules-extra + - drivers/spi/spi-ljca.*: modules + - drivers/spi/.*: modules-core + - drivers/spmi/.*: modules-core + + - drivers/target/iscsi/cxgbit/cxgbit.*: modules + - drivers/target/sbp/sbp_target.*: modules + - drivers/target/target_core_user.*: modules + - drivers/target/.*: modules-core + - drivers/tee/.*: modules-core + - drivers/thermal/intel/int340x_thermal/int3406_thermal.*: modules + - drivers/thermal/.*: modules-core + - drivers/thunderbolt/.*: modules-core + + - drivers/ufs/.*: modules-core + - drivers/usb/atm/.*: modules + - drivers/usb/gadget/function/usb_f_midi2.*: modules + - drivers/usb/image/.*: modules + - drivers/usb/misc/trancevibrator.*: modules-extra + - drivers/usb/misc/.*: modules + - drivers/usb/serial/.*: modules + - drivers/usb/typec/mux/nb7vpq904m.*: modules + - drivers/usb/usbip/.*: modules-extra + - drivers/usb/.*: modules-core + + - drivers/vdpa/mlx5/mlx5_vdpa.*: modules + - drivers/vdpa/pds/pds_vdpa.*: modules + - drivers/vdpa/.*: modules-core + - drivers/vfio/pci/mlx5/mlx5-vfio-pci.*: modules + - drivers/vfio/pci/pds/pds-vfio-pc.*: modules + - drivers/vfio/.*: modules-core + - drivers/vhost/.*: modules-core + - drivers/video/backlight/apple_bl.*: modules + - drivers/video/.*: modules-core + - drivers/virt/.*: modules-core + - drivers/virtio/.*: modules-core + + - drivers/watchdog/iTCO_wdt.*: modules + - drivers/watchdog/.*: modules-core + + - drivers/xen/.*: modules-core + + - drivers/w1/masters/ds2482.*: modules-extra + - drivers/w1/masters/ds2490.*: modules-extra + - drivers/w1/slaves/w1_ds2408.*: modules-extra + - drivers/w1/slaves/w1_ds2423.*: modules-extra + - drivers/w1/slaves/w1_ds2431.*: modules-extra + - drivers/w1/slaves/w1_ds2433.*: modules-extra + - drivers/w1/slaves/w1_ds2780.*: modules-extra + - drivers/w1/slaves/w1_ds2781.*: modules-extra + - drivers/w1/slaves/w1_ds28e04.*: modules-extra + - drivers/w1/slaves/w1_smem.*: modules-extra + - drivers/w1/slaves/w1_therm.*: modules-extra + + - fs/.*test.*: modules-internal + - fs/9p/.*: modules-core + - fs/afs/.*: modules-core + - fs/affs/affs.*: modules-extra + - fs/bcachefs/.*: modules-core + - fs/befs/befs.*: modules-extra + - fs/binfmt_misc.ko: modules-core + - fs/cachefiles/.*: modules-core + - fs/ceph/.*: modules-core + - fs/coda/coda.*: modules-extra + - fs/dlm/.*: modules-extra + - fs/erofs/.*: modules-core + - fs/exfat/.*: modules-core + - fs/f2fs/.*: modules-core + - fs/fat/.*: modules-core + - fs/fuse/cuse.*: modules-extra + - fs/fuse/.*: modules-core + - fs/gfs2/.*: modules-extra + - fs/isofs/.*: modules-core + - fs/lockd/.*: modules-core + - fs/netfs/.*: modules-core + - fs/nfs.*: modules-core + - fs/nilfs2/nilfs2.*: modules-extra + - fs/nls/.*: modules-core + - fs/ntfs3/.*: modules-core + - fs/ocfs2/.*: modules-extra + - fs/orangefs/.*: modules-core + - fs/overlayfs/.*: modules-core + - fs/pstore/.*: modules-core + - fs/smb/.*: modules-core + - fs/squashfs/.*: modules-core + - fs/sysv/.*: modules-extra + - fs/ubifs/.*: modules-extra + - fs/udf/.*: modules-core + - fs/ufs/.*: modules-extra + - fs/vboxsf/.*: modules-core + - fs/xfs/.*: modules-core + - fs/zonefs/.*: modules-core + + - kernel/.*test.*: modules-internal + - kernel/locking/locktorture.*: modules-internal + - kernel/rcu/rcuscale.*: modules-internal + - kernel/rcu/rcutorture.*: modules-internal + - kernel/rcu/refscale.*: modules-internal + - kernel/resource_kunit.*: modules-internal + - kernel/scftorture.*: modules-internal + - kernel/torture.*: modules-internal + - kernel/.*: modules-core + + - lib/.*(test|kunit).*: modules-internal + - lib/.*: modules-core + + - mm/kasan/kasan_test: modules-internal + - mm/kfence/.*test.*: modules-internal + + - net/.*test.*: modules-internal + - net/802/.*: modules-core + - net/8021q/.*: modules-core + - net/9p/9pnet_rdma.ko: modules + - net/9p/.*: modules-core + - net/appletalk/appletalk.*: modules-extra + - net/atm/br2684.*: modules-extra + - net/atm/clip.*: modules-extra + - net/atm/lec.*: modules-extra + - net/atm/pppoatm.*: modules-extra + - net/ax25/ax25.*: modules-extra + - net/batman-adv/batman-adv.*: modules-extra + - net/bridge/.*: modules-core + - net/ceph/.*: modules-core + - net/core/pktgen.*: modules-internal + - net/core/.*: modules-core + - net/dns_resolver/.*: modules-core + - net/hsr/.*: modules-core + - net/ife/.*: modules-core + - net/ipv4/tcp_bic.*: modules-extra + - net/ipv4/tcp_highspeed.*: modules-extra + - net/ipv4/tcp_htcp.*: modules-extra + - net/ipv4/tcp_hybla.*: modules-extra + - net/ipv4/tcp_illinois.*: modules-extra + - net/ipv4/tcp_lp.*: modules-extra + - net/ipv4/tcp_scalable.*: modules-extra + - net/ipv4/tcp_vegas.*: modules-extra + - net/ipv4/tcp_veno.*: modules-extra + - net/ipv4/tcp_westwood.*: modules-extra + - net/ipv4/tcp_yeah.*: modules-extra + - net/ipv4/.*: modules-core + - net/ipv6/.*: modules-core + - net/iucv/.*: modules-core + - net/kcm/.*: modules-core + - net/key/.*: modules-core + - net/l2tp/l2tp_debugfs.*: modules-extra + - net/l2tp/l2tp_eth.*: modules-extra + - net/l2tp/l2tp_netlink.*: modules-extra + - net/l2tp/l2tp_ppp.*: modules-extra + - net/llc/.*: modules-core + - net/netfilter/.*: modules-core + - net/netrom/netrom.*: modules-extra + - net/nsh/.*: modules-core + - net/openvswitch/.*: modules-core + - net/psample/.*: modules-core + - net/qrtr/.*: modules-core + - net/rds/rds.*: modules-extra + - net/rose/rose.*: modules-extra + - net/rxrpc/.*: modules-core + - net/sched/sch_choke.*: modules-extra + - net/sched/sch_drr.*: modules-extra + - net/sched/sch_etf.*: modules-extra + - net/sched/sch_gred.*: modules-extra + - net/sched/sch_mqprio.ko: modules-extra + - net/sched/sch_multiq.*: modules-extra + - net/sched/sch_netem.*: modules-extra + - net/sched/sch_qfq.*: modules-extra + - net/sched/sch_red.*: modules-extra + - net/sched/sch_sfb.*: modules-extra + - net/sched/sch_teql.*: modules-extra + - net/sched/.*: modules-core + - net/sunrpc/xprtrdma/rpcrdma.*: modules + - net/sunrpc/.*: modules-core + - net/tipc/.*: modules-core + - net/tls/.*: modules-core + - net/vmw_vsock/.*: modules-core + - net/xdp/.*: modules-core + - net/xfrm/.*: modules-core + + - sound/pci/.*test.*: modules-internal + - sound/soc/.*test.*: modules-internal + + - virt/.*: modules-core + + - default: modules diff --git a/def_variants.yaml.rhel b/def_variants.yaml.rhel new file mode 100644 index 000000000..6c3d06039 --- /dev/null +++ b/def_variants.yaml.rhel @@ -0,0 +1,519 @@ +packages: + - name: modules-core + depends-on: [] + - name: modules + depends-on: + - modules-core + - name: modules-internal + depends-on: + - modules-core + - modules + - name: modules-extra + depends-on: + - modules-core + - modules + - name: modules-rt-kvm + if_variant_in: ["rt"] + depends-on: + - modules-core + - name: modules-partner + depends-on: + - modules-core + - modules + +rules: + - arch/x86/kvm/kvm(-amd|-intel|\.).*: modules-rt-kvm + if_variant_in: ["rt"] + + - arch/.*: modules-core + - block/t10-pi.ko: modules-core + - crypto/.*: modules-core + + - drivers/accel/.*: modules-core + - drivers/accessibility/.*: modules-core + - drivers/acpi/video.*: modules + - drivers/acpi/.*: modules-core + - drivers/ata/.*: modules-core + + - drivers/base/.*(kunit|test).*: modules-internal + - drivers/base/regmap/regmap-sdw.*: modules + - drivers/base/.*: modules-core + - drivers/block/floppy.*: modules-extra + - drivers/block/rnbd.*: modules + - drivers/block/.*: modules-core + - drivers/bus/.*: modules-core + + - drivers/cdrom/.*: modules-core + - drivers/cdx/.*: modules-core + - drivers/char/mwave.*: modules + - drivers/char/.*: modules-core + - drivers/clk/.*test.*: modules-internal + - drivers/clk/.*: modules-core + - drivers/counter/.*: modules-core + - drivers/cpufreq/.*: modules-core + - drivers/crypto/caam/.*: modules + - drivers/crypto/cavium/.*: modules + - drivers/crypto/chelsio/.*: modules + - drivers/crypto/hisilicon/.*: modules + - drivers/crypto/marvell/.*: modules + - drivers/crypto/.*: modules-core + - drivers/cxl/.*: modules-core + + - drivers/dax/.*: modules-core + - drivers/dca/.*: modules-core + - drivers/devfreq/.*: modules-core + - drivers/dma/dmatest.*: modules-internal + - drivers/dma/.*: modules-core + + - drivers/edac/.*: modules-core + - drivers/extcon/.*: modules-core + + - drivers/firmware/iscsi_ibft.*: modules + - drivers/firmware/.*: modules-core + - drivers/fsi/.*: modules-core + + - drivers/gnss/.*: modules-core + - drivers/gpio/gpio-dln2.*: modules-extra + - drivers/gpio/gpio-ljca.*: modules + - drivers/gpio/.*: modules-core + - drivers/gpu/drm/i915/kvmgt.*: modules-rt-kvm + if_variant_in: ["rt"] + - drivers/gpu/drm/display/drm_.*: modules-core + - drivers/gpu/drm/drm.*: modules-core + - drivers/gpu/drm/etnaviv/.*: modules-core + - drivers/gpu/drm/gud/.*: modules-core + - drivers/gpu/drm/hyperv/.*: modules-core + - drivers/gpu/drm/imagination/.*: modules-core + - drivers/gpu/drm/lima/.*: modules-core + - drivers/gpu/drm/mxsfb/.*: modules-core + - drivers/gpu/drm/panfrost/.*: modules-core + - drivers/gpu/drm/qxl/.*: modules-core + - drivers/gpu/drm/scheduler/.*: modules-core + - drivers/gpu/drm/solomon/.*: modules-core + - drivers/gpu/drm/tests/.*: modules-internal + - drivers/gpu/drm/tidss/.*: modules-core + - drivers/gpu/drm/tiny/.*: modules-core + - drivers/gpu/drm/ttm/.*: modules-core + - drivers/gpu/drm/udl/.*: modules-core + - drivers/gpu/drm/v3d/.*: modules-core + - drivers/gpu/drm/vgem/.*: modules-core + - drivers/gpu/drm/virtio/.*: modules-core + - drivers/gpu/drm/vkms/.*: modules-core + - drivers/gpu/drm/vmwgfx/.*: modules-core + - drivers/gpu/drm/xlnx/.*: modules-core + - drivers/gpu/host1x/.*: modules-core + + - drivers/hid/.*test.*: modules-internal + - drivers/hid/hid-asus.*: modules + - drivers/hid/hid-nintendo.*: modules + - drivers/hid/hid-picolcd.*: modules + - drivers/hid/hid-playstation.*: modules + - drivers/hid/surface-hid.*: modules + - drivers/hid/hid-prodikeys.*: modules + - drivers/hid/.*: modules-core + - drivers/hte/.*: modules-core + - drivers/hv/.*: modules-core + - drivers/hwmon/asus_wmi_sensors.*: modules + - drivers/hwmon/dell-smm-hwmon.*: modules + - drivers/hwmon/hp-wmi-sensors.*: modules + - drivers/hwmon/intel-m10-bmc-hwmon.*: modules + - drivers/hwmon/nct6775.*: modules + - drivers/hwmon/ntc_thermistor.*: modules + - drivers/hwmon/.*: modules-core + - drivers/hwspinlock/.*: modules-core + - drivers/hwtracing/.*: modules-core + + - drivers/i2c/busses/i2c-dln2.*: modules-extra + - drivers/i2c/busses/i2c-ljca.*: modules + - drivers/i2c/.*: modules-core + - drivers/i3c/.*: modules-core + - drivers/iio/adc/dln2-adc.*: modules-extra + - drivers/iio/test/.*: modules-internal + - drivers/input/gameport/.*: modules + - drivers/input/joystick/.*: modules-extra + - drivers/input/tablet/.*: modules + - drivers/input/tests/.*: modules-internal + - drivers/input/touchscreen/.*: modules + - drivers/input/.*: modules-core + - drivers/interconnect/.*: modules-core + - drivers/iommu/.*: modules-core + - drivers/irqchip/.*: modules-core + + - drivers/mailbox/.*: modules-core + - drivers/md/.*: modules-core + - drivers/memory/dfl-emif.*: modules + - drivers/memory/.*: modules-core + - drivers/message/fusion/mptctl.*: modules-extra + - drivers/message/fusion/mptfc.*: modules-extra + - drivers/message/fusion/.*: modules + - drivers/message/.*: modules-core + - drivers/mfd/dln2.*: modules-extra + - drivers/misc/.*: modules-core + - drivers/mux/.*: modules-core + + - drivers/net/amt.ko: modules-core + - drivers/net/bareudp.ko: modules-core + - drivers/net/bonding/.*: modules-core + - drivers/net/can/slcan/slcan.*: modules-extra + - drivers/net/can/usb/ems_usb.*: modules-extra + - drivers/net/can/vcan.*: modules-extra + - drivers/net/dummy.ko: modules-core + - drivers/net/eql.ko: modules-core + + - drivers/net/ethernet/8390/.*: modules-core + - drivers/net/ethernet/adi/.*: modules-core + - drivers/net/ethernet/agere/.*: modules-core + - drivers/net/ethernet/altera/.*: modules-core + - drivers/net/ethernet/amazon/.*: modules-core + - drivers/net/ethernet/amd/.*: modules-core + - drivers/net/ethernet/apm/.*: modules-core + - drivers/net/ethernet/asix/.*: modules-core + - drivers/net/ethernet/brocade/.*: modules-core + - drivers/net/ethernet/cavium/.*: modules-core + - drivers/net/ethernet/dnet.ko: modules-core + - drivers/net/ethernet/engleder/.*: modules-core + - drivers/net/ethernet/ethoc.ko: modules-core + - drivers/net/ethernet/fealnx.ko: modules-core + - drivers/net/ethernet/freescale/.*: modules-core + - drivers/net/ethernet/fungible/.*: modules-core + - drivers/net/ethernet/google/.*: modules-core + - drivers/net/ethernet/hisilicon/.*: modules-core + - drivers/net/ethernet/huawei/.*: modules-core + - drivers/net/ethernet/ibm/.*: modules-core + - drivers/net/ethernet/intel/.*: modules-core + - drivers/net/ethernet/jme.ko: modules-core + - drivers/net/ethernet/litex/.*: modules-core + - drivers/net/ethernet/mellanox/.*: modules-core + - drivers/net/ethernet/microsoft/.*: modules-core + - drivers/net/ethernet/myricom/.*: modules-core + - drivers/net/ethernet/natsemi/.*: modules-core + - drivers/net/ethernet/netronome/.*: modules-core + - drivers/net/ethernet/pensando/.*: modules-core + - drivers/net/ethernet/rocker/rocker.*: modules-internal + - drivers/net/ethernet/qualcomm/.*: modules-core + - drivers/net/ethernet/realtek/.*: modules-core + - drivers/net/ethernet/renesas/.*: modules-core + - drivers/net/ethernet/socionext/.*: modules-core + - drivers/net/ethernet/vertexcom/.*: modules-core + - drivers/net/ethernet/wangxun/.*: modules-core + - drivers/net/ethernet/xilinx/.*: modules-core + + - drivers/net/fjes/.*: modules-core + - drivers/net/geneve.ko: modules-core + - drivers/net/gtp.ko: modules-core + - drivers/net/hamradio/.*: modules-extra + - drivers/net/hyperv/.*: modules-core + - drivers/net/ifb.ko: modules-core + - drivers/net/ipa/.*: modules-core + - drivers/net/ipvlan/.*: modules-core + - drivers/net/macsec.ko: modules-core + - drivers/net/macvlan.ko: modules-core + - drivers/net/macvtap.ko: modules-core + - drivers/net/mctp/.*: modules-core + - drivers/net/mdio.*: modules-core + - drivers/net/mhi_net.ko: modules-core + - drivers/net/mii.ko: modules-core + - drivers/net/net_failover.ko: modules-core + - drivers/net/netdevsim/netdevsim.*: modules-internal + - drivers/net/netconsole.ko: modules-core + - drivers/net/nlmon.ko: modules-core + - drivers/net/pcs/.*: modules-core + - drivers/net/phy/.*: modules-core + - drivers/net/rionet.ko: modules-core + - drivers/net/slip/slip.*: modules-extra + - drivers/net/sungem_phy.ko: modules-core + - drivers/net/tap.ko: modules-core + - drivers/net/team/.*: modules-core + - drivers/net/thunderbolt/.*: modules-core + - drivers/net/tun.ko: modules-core + - drivers/net/veth.ko: modules-core + - drivers/net/virtio_net.ko: modules-core + - drivers/net/vmxnet3/.*: modules-core + - drivers/net/vrf.ko: modules-core + - drivers/net/vsockmon.ko: modules-core + - drivers/net/vxlan/.*: modules-core + - drivers/net/wan/hdlc.*: modules-core + - drivers/net/wireguard/.*: modules-core + - drivers/net/wireless/virtual/mac80211_hwsim.*: modules-internal + - drivers/net/wwan/wwan_hwsim.*: modules-internal + - drivers/net/wwan/.*: modules-core + - drivers/net/xen.*: modules-core + + - drivers/nvdimm/.*: modules-core + - drivers/nvme/host/nvme-rdma.*: modules + - drivers/nvme/target/nvmet-rdma.*: modules + - drivers/nvme/.*: modules-core + - drivers/nvmem/nvmem_u-boot-env.*: modules + - drivers/nvmem/.*: modules-core + + - drivers/parport/parport_serial.*: modules + - drivers/parport/.*: modules-core + - drivers/pci/pcie/aer_inject.*: modules-extra + - drivers/pci/.*: modules-core + - drivers/perf/.*: modules-core + - drivers/phy/.*: modules-core + - drivers/pinctrl/.*: modules-core + - drivers/platform/chrome/.*test.*: modules-internal + - drivers/platform/x86/intel/intel_vsec.*: modules-core + - drivers/pmdomain/.*: modules-core + - drivers/powercap/intel_rapl_tpmi.*: modules + - drivers/powercap/.*: modules-core + - drivers/pps/.*: modules-core + - drivers/ptp/ptp_kvm.*: modules-rt-kvm + if_variant_in: ["rt"] + - drivers/ptp/ptp_dfl_tod.*: modules + - drivers/ptp/.*: modules-core + - drivers/pwm/.*: modules-core + + - drivers/rapidio/.*: modules-core + - drivers/regulator/arizona-micsupp.*: modules + - drivers/regulator/.*: modules-core + - drivers/remoteproc/.*: modules-core + - drivers/reset/.*: modules-core + - drivers/rpmsg/.*: modules-core + - drivers/rtc/.*test.*: modules-internal + - drivers/rtc/.*: modules-core + + - drivers/s390/net/ism.*: modules + - drivers/s390/.*: modules-core + + - drivers/scsi/3w.*: modules-core + - drivers/scsi/BusLogic.ko: modules-core + - drivers/scsi/a100u2w.ko: modules-core + - drivers/scsi/advansys.ko: modules-core + - drivers/scsi/am53c974.ko: modules-core + - drivers/scsi/arcmsr.*: modules-core + - drivers/scsi/atp870u.ko: modules-core + - drivers/scsi/ch.ko: modules-core + - drivers/scsi/cxlflash/.*: modules-core + - drivers/scsi/dc395x.ko: modules-core + - drivers/scsi/device_handler/.*: modules-core + - drivers/scsi/dmx3191d.ko: modules-core + - drivers/scsi/elx/.*: modules-core + - drivers/scsi/esp_scsi.ko: modules-core + - drivers/scsi/fdomain.*: modules-core + - drivers/scsi/hpsa.ko: modules-core + - drivers/scsi/hptiop.ko: modules-core + - drivers/scsi/hv_storvsc.ko: modules-core + - drivers/scsi/ibmvscsi.*: modules-core + - drivers/scsi/initio.ko: modules-core + - drivers/scsi/ipr.ko: modules-core + - drivers/scsi/ips.ko: modules-core + - drivers/scsi/iscsi_tcp.ko: modules-core + - drivers/scsi/libfc/.*: modules-core + - drivers/scsi/libiscsi.*: modules-core + - drivers/scsi/mpi3mr/.*: modules-core + - drivers/scsi/mvumi.ko: modules-core + - drivers/scsi/myrb.ko: modules-core + - drivers/scsi/myrs.ko: modules-core + - drivers/scsi/raid_class.ko: modules-core + - drivers/scsi/scsi_debug.ko: modules-core + - drivers/scsi/scsi_transport_.*: modules-core + - drivers/scsi/sd_mod.ko: modules-core + - drivers/scsi/ses.ko: modules-core + - drivers/scsi/sg.ko: modules-core + - drivers/scsi/smartpqi/.*: modules-core + - drivers/scsi/snic/.*: modules-core + - drivers/scsi/sr_mod.ko: modules-core + - drivers/scsi/st.ko: modules-core + - drivers/scsi/stex.ko: modules-core + - drivers/scsi/virtio_scsi.ko: modules-core + - drivers/scsi/vmw_pvscsi.ko: modules-core + - drivers/scsi/wd719x.ko: modules-core + - drivers/scsi/xen-scsifront.ko: modules-core + + - drivers/slimbus/.*: modules-core + - drivers/soc/.*: modules-core + - drivers/spi/spi-altera-dfl.*: modules + - drivers/spi/spi-dln2.*: modules-extra + - drivers/spi/spi-ljca.*: modules + - drivers/spi/.*: modules-core + - drivers/spmi/.*: modules-core + + - drivers/target/iscsi/cxgbit/cxgbit.*: modules + - drivers/target/sbp/sbp_target.*: modules + - drivers/target/target_core_user.*: modules + - drivers/target/.*: modules-core + - drivers/tee/.*: modules-core + - drivers/thermal/intel/int340x_thermal/int3406_thermal.*: modules + - drivers/thermal/.*: modules-core + - drivers/thunderbolt/.*: modules-core + + - drivers/ufs/.*: modules-core + - drivers/usb/atm/.*: modules + - drivers/usb/gadget/function/usb_f_midi2.*: modules + - drivers/usb/image/.*: modules + - drivers/usb/misc/trancevibrator.*: modules-extra + - drivers/usb/misc/.*: modules + - drivers/usb/serial/.*: modules + - drivers/usb/typec/mux/nb7vpq904m.*: modules + - drivers/usb/usbip/.*: modules-extra + - drivers/usb/.*: modules-core + + - drivers/vdpa/mlx5/mlx5_vdpa.*: modules + - drivers/vdpa/pds/pds_vdpa.*: modules + - drivers/vdpa/.*: modules-core + - drivers/vfio/pci/mlx5/mlx5-vfio-pci.*: modules + - drivers/vfio/pci/pds/pds-vfio-pc.*: modules + - drivers/vfio/.*: modules-core + - drivers/vhost/.*: modules-core + - drivers/video/backlight/apple_bl.*: modules + - drivers/video/.*: modules-core + - drivers/virt/.*: modules-core + - drivers/virtio/.*: modules-core + + - drivers/watchdog/.*: modules-core + + - drivers/xen/.*: modules-core + + - drivers/w1/masters/ds2482.*: modules-extra + - drivers/w1/masters/ds2490.*: modules-extra + - drivers/w1/slaves/w1_ds2408.*: modules-extra + - drivers/w1/slaves/w1_ds2423.*: modules-extra + - drivers/w1/slaves/w1_ds2431.*: modules-extra + - drivers/w1/slaves/w1_ds2433.*: modules-extra + - drivers/w1/slaves/w1_ds2780.*: modules-extra + - drivers/w1/slaves/w1_ds2781.*: modules-extra + - drivers/w1/slaves/w1_ds28e04.*: modules-extra + - drivers/w1/slaves/w1_smem.*: modules-extra + - drivers/w1/slaves/w1_therm.*: modules-extra + + - fs/.*test.*: modules-internal + - fs/9p/.*: modules-core + - fs/afs/.*: modules-partner + - fs/affs/affs.*: modules-extra + - fs/bcachefs/.*: modules-core + - fs/befs/befs.*: modules-extra + - fs/binfmt_misc.ko: modules-core + - fs/cachefiles/.*: modules-core + - fs/ceph/.*: modules-core + - fs/coda/coda.*: modules-extra + - fs/dlm/.*: modules-core + - fs/erofs/.*: modules-core + - fs/exfat/.*: modules-core + - fs/ext4/.*: modules-core + - fs/f2fs/.*: modules-core + - fs/fat/.*: modules-core + - fs/fuse/cuse.*: modules-extra + - fs/fuse/.*: modules-core + - fs/gfs2/.*: modules-core + - fs/isofs/.*: modules-core + - fs/jbd2/.*: modules-core + - fs/lockd/.*: modules-core + - fs/mbcache.ko: modules-core + - fs/netfs/.*: modules-core + - fs/nfs.*: modules-core + - fs/nilfs2/nilfs2.*: modules-extra + - fs/nls/.*: modules-core + - fs/ntfs3/.*: modules-core + - fs/ocfs2/.*: modules-extra + - fs/orangefs/.*: modules-core + - fs/overlayfs/.*: modules-core + - fs/pstore/.*: modules-core + - fs/sysv/.*: modules-extra + - fs/ubifs/.*: modules-extra + - fs/udf/.*: modules-core + - fs/ufs/.*: modules-extra + - fs/vboxsf/.*: modules-core + - fs/xfs/.*: modules-core + - fs/zonefs/.*: modules-core + + - kernel/.*test.*: modules-internal + - kernel/locking/locktorture.*: modules-internal + - kernel/rcu/rcuscale.*: modules-internal + - kernel/rcu/rcutorture.*: modules-internal + - kernel/rcu/refscale.*: modules-internal + - kernel/resource_kunit.*: modules-internal + - kernel/scftorture.*: modules-internal + - kernel/torture.*: modules-internal + - kernel/.*: modules-core + + - lib/.*(test|kunit).*: modules-internal + - lib/.*: modules-core + + - mm/kasan/kasan_test: modules-internal + - mm/kfence/.*test.*: modules-internal + - mm/zsmalloc.ko: modules-core + + - net/.*test.*: modules-internal + - net/802/.*: modules-core + - net/8021q/.*: modules-core + - net/9p/9pnet_rdma.ko: modules + - net/9p/.*: modules-core + - net/appletalk/appletalk.*: modules-extra + - net/atm/br2684.*: modules-extra + - net/atm/clip.*: modules-extra + - net/atm/lec.*: modules-extra + - net/atm/pppoatm.*: modules-extra + - net/ax25/ax25.*: modules-extra + - net/batman-adv/batman-adv.*: modules-extra + - net/bridge/br_netfilter.*: modules-extra + - net/bridge/netfilter/ebt.*: modules-extra + - net/bridge/.*: modules-core + - net/ceph/.*: modules-core + - net/core/pktgen.*: modules-internal + - net/core/.*: modules-core + - net/dns_resolver/.*: modules-core + - net/hsr/.*: modules-core + - net/ife/.*: modules-core + - net/ipv4/netfilter/arp.*: modules-extra + - net/ipv4/netfilter/ip[_t].*: modules-extra + - net/ipv4/tcp_bic.*: modules-extra + - net/ipv4/tcp_highspeed.*: modules-extra + - net/ipv4/tcp_htcp.*: modules-extra + - net/ipv4/tcp_hybla.*: modules-extra + - net/ipv4/tcp_illinois.*: modules-extra + - net/ipv4/tcp_lp.*: modules-extra + - net/ipv4/tcp_scalable.*: modules-extra + - net/ipv4/tcp_vegas.*: modules-extra + - net/ipv4/tcp_veno.*: modules-extra + - net/ipv4/tcp_westwood.*: modules-extra + - net/ipv4/tcp_yeah.*: modules-extra + - net/ipv4/.*: modules-core + - net/ipv6/netfilter/ebt.*: modules-extra + - net/ipv6/netfilter/ip6[_t].*: modules-extra + - net/ipv6/.*: modules-core + - net/iucv/.*: modules-core + - net/kcm/.*: modules-core + - net/key/.*: modules-core + - net/l2tp/.*: modules-extra + - net/llc/.*: modules-core + - net/netfilter/ipset/.*: modules-extra + - net/netfilter/nft_compat.*: modules-extra + - net/netfilter/xt_.*: modules-extra + - net/netfilter/.*: modules-core + - net/netrom/netrom.*: modules-extra + - net/nsh/.*: modules-core + - net/openvswitch/.*: modules-core + - net/psample/.*: modules-core + - net/qrtr/.*: modules-core + - net/rds/rds.*: modules-extra + - net/rose/rose.*: modules-extra + - net/rxrpc/.*: modules-partner + - net/sched/sch_choke.*: modules-extra + - net/sched/sch_drr.*: modules-extra + - net/sched/sch_gred.*: modules-extra + - net/sched/sch_mqprio.ko: modules-extra + - net/sched/sch_multiq.*: modules-extra + - net/sched/sch_netem.*: modules-extra + - net/sched/sch_qfq.*: modules-extra + - net/sched/sch_red.*: modules-extra + - net/sched/sch_sfb.*: modules-extra + - net/sched/sch_teql.*: modules-extra + - net/sched/.*: modules-core + - net/sctp/.*: modules-extra + - net/sunrpc/xprtrdma/rpcrdma.*: modules + - net/sunrpc/.*: modules-core + - net/tipc/.*: modules-core + - net/tls/.*: modules-core + - net/vmw_vsock/.*: modules-core + - net/xdp/.*: modules-core + - net/xfrm/.*: modules-core + + - samples/.*: modules-internal + - sound/pci/.*test.*: modules-internal + - sound/soc/.*test.*: modules-internal + + - virt/.*: modules-core + + - default: modules diff --git a/filter-aarch64.sh.fedora b/filter-aarch64.sh.fedora deleted file mode 100644 index ce8e7df49..000000000 --- a/filter-aarch64.sh.fedora +++ /dev/null @@ -1,20 +0,0 @@ -#! /bin/bash - -# This is the aarch64 override file for the core/drivers package split. The -# module directories listed here and in the generic list in filter-modules.sh -# will be moved to the resulting kernel-modules package for this arch. -# Anything not listed in those files will be in the kernel-core package. -# -# Please review the default list in filter-modules.sh before making -# modifications to the overrides below. If something should be removed across -# all arches, remove it in the default instead of per-arch. - -overrides="aux-bridge aux-hpd-bridge cec" - -driverdirs="atm auxdisplay bcma bluetooth firewire fpga infiniband leds media memstick message mmc mtd nfc ntb pcmcia power ssb soundwire staging tty uio w1" - -ethdrvs="3com adaptec arc alteon atheros broadcom cadence calxeda chelsio cisco dec dlink emulex marvell micrel myricom neterion nvidia packetengines qlogic rdc sfc silan sis smsc stmicro sun tehuti ti via wiznet xircom" - -drmdrvs="amd arm bridge ast exynos hisilicon i2c imx mgag200 meson msm nouveau panel pl111 radeon rockchip tegra sun4i tiny vc4" - -singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qedi qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwpoison-inject target_core_user sbp_target cxgbit chcr rnbd-client rnbd-server mlx5_vdpa dfl-emif octeontx2-cpt octeontx2-cptvf spi-altera-dfl rvu_cptpf rvu_cptvf regmap-sdw regmap-sdw-mbq hid-playstation hid-nintendo nvmem_u-boot-env intel-m10-bmc-pmci intel-m10-bmc-hwmon ptp_dfl_tod pds_vdpa usb_f_midi2 cs42l43-sdw" diff --git a/filter-aarch64.sh.rhel b/filter-aarch64.sh.rhel deleted file mode 100644 index e088c8e9f..000000000 --- a/filter-aarch64.sh.rhel +++ /dev/null @@ -1,18 +0,0 @@ -#! /bin/bash - -# This is the aarch64 override file for the core/drivers package split. The -# module directories listed here and in the generic list in filter-modules.sh -# will be moved to the resulting kernel-modules package for this arch. -# Anything not listed in those files will be in the kernel-core package. -# -# Please review the default list in filter-modules.sh before making -# modifications to the overrides below. If something should be removed across -# all arches, remove it in the default instead of per-arch. - -driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick message mmc mtd mwave nfc ntb pcmcia platform power ssb staging tty uio uwb w1" - -ethdrvs="3com adaptec arc alteon atheros broadcom cadence calxeda chelsio cisco dec dlink emulex icplus marvell micrel myricom neterion nvidia oki-semi packetengines qlogic rdc renesas sfc silan sis smsc stmicro sun tehuti ti via wiznet xircom" - -drmdrvs="amd arm bridge ast exynos hisilicon i2c imx mgag200 meson msm nouveau panel radeon rockchip tegra sun4i tinydrm vc4" - -singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qedi qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr chtls" diff --git a/filter-modules.sh.fedora b/filter-modules.sh.fedora deleted file mode 100755 index 25abd8e38..000000000 --- a/filter-modules.sh.fedora +++ /dev/null @@ -1,201 +0,0 @@ -#! /bin/bash -# -# Called as filter-modules.sh list-of-modules Arch - -# This script filters the modules into the kernel-core and kernel-modules -# subpackages. We list out subsystems/subdirs to prune from the installed -# module directory. What is left is put into the kernel-core package. What is -# pruned is contained in the kernel-modules package. -# -# This file contains the default subsys/subdirs to prune from all architectures. -# If an architecture needs to differ, we source a per-arch filter-.sh file -# that contains the set of override lists to be used instead. If a module or -# subsys should be in kernel-modules on all arches, please change the defaults -# listed here. - -# Overrides is individual modules which need to remain in kernel-core due to deps. -overrides="cec" - -# Set the default dirs/modules to filter out -driverdirs="atm auxdisplay bcma bluetooth firewire fpga infiniband leds media memstick mfd mmc mtd nfc ntb pcmcia platform power ssb soundwire staging tty uio w1" - -chardrvs="mwave pcmcia" - -netdrvs="appletalk can dsa hamradio ieee802154 ppp slip usb wireless" - -ethdrvs="3com adaptec alteon amd aquantia atheros broadcom cadence calxeda chelsio cisco dec dlink emulex marvell mellanox neterion nvidia packetengines qlogic rdc sfc silan sis smsc stmicro sun tehuti ti wiznet xircom" - -cryptdrvs="bcm caam cavium chelsio hisilicon marvell qat" - -iiodrvs="accel light pressure proximity" - -iiocommondrvs="cros_ec_sensors" - -inputdrvs="gameport tablet touchscreen" - -hiddrvs="surface-hid" - -scsidrvs="aacraid aic7xxx be2iscsi bfa bnx2i bnx2fc csiostor cxgbi esas2r fcoe fnic isci libsas lpfc megaraid mpt3sas mvsas pm8001 qla2xxx qla4xxx sym53c8xx_2 ufs qedf" - -usbdrvs="atm image misc serial" - -fsdrvs="affs befs coda cramfs dlm ecryptfs hfs hfsplus jfs jffs2 minix nilfs2 ocfs2 reiserfs romfs sysv ubifs ufs" - -netprots="6lowpan appletalk atm ax25 batman-adv bluetooth can dsa ieee802154 l2tp mac80211 mac802154 mpls netrom nfc rds rfkill rose sctp smc wireless" - -drmdrvs="amd ast bridge gma500 i2c i915 mgag200 nouveau panel radeon xe" - -singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qedi qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwpoison-inject target_core_user sbp_target cxgbit chcr parport_serial regmap-sdw regmap-sdw-mbq arizona-micsupp hid-asus iTCO_wdt rnbd-client rnbd-server mlx5_vdpa spi-altera-dfl nct6775 hid-playstation hid-nintendo asus_wmi_sensors asus_wmi_ec_sensors mlx5-vfio-pci video int3406_thermal apple_bl ptp_dfl_tod intel-m10-bmc-hwmon intel_rapl_tpmi pds_vdpa hp-wmi-sensors pds-vfio-pci gpio-ljca spi-ljca i2c-ljca dell-smm-hwmon" - -# Grab the arch-specific filter list overrides -source ./filter-$2.sh - -filter_dir() { - filelist=$1 - dir=$2 - - grep -v -e "${dir}/" ${filelist} > ${filelist}.tmp - - if [ $? -ne 0 ] - then - echo "Couldn't remove ${dir}. Skipping." - else - grep -e "${dir}/" ${filelist} >> k-d.list - mv ${filelist}.tmp $filelist - fi - - return 0 -} - -filter_ko() { - filelist=$1 - mod=$2 - - grep -v -e "${mod}.ko" ${filelist} > ${filelist}.tmp - - if [ $? -ne 0 ] - then - echo "Couldn't remove ${mod}.ko Skipping." - else - grep -e "${mod}.ko" ${filelist} >> k-d.list - mv ${filelist}.tmp $filelist - fi - - return 0 -} - -# Filter the drivers/ subsystems -for subsys in ${driverdirs} -do - filter_dir $1 drivers/${subsys} -done - -# Filter the networking drivers -for netdrv in ${netdrvs} -do - filter_dir $1 drivers/net/${netdrv} -done - -# Filter the char drivers -for char in ${chardrvs} -do - filter_dir $1 drivers/char/${char} -done - -# Filter the ethernet drivers -for eth in ${ethdrvs} -do - filter_dir $1 drivers/net/ethernet/${eth} -done - -# Filter the crypto drivers -for crypt in ${cryptdrvs} -do - filter_dir $1 drivers/crypto/${crypt} -done - -# SCSI -for scsi in ${scsidrvs} -do - filter_dir $1 drivers/scsi/${scsi} -done - -# IIO -for iio in ${iiodrvs} -do - filter_dir $1 drivers/iio/${iio} -done - -# IIO Common -for iio in ${iiocommondrvs} -do - filter_dir $1 drivers/iio/common/${iio} -done - -# Input -for input in ${inputdrvs} -do - filter_dir $1 drivers/input/${input} -done - -# hid -for hid in ${hiddrvs} -do - filter_dir $1 drivers/hid/${hid} -done - -# USB -for usb in ${usbdrvs} -do - filter_dir $1 drivers/usb/${usb} -done - -# Filesystems -for fs in ${fsdrvs} -do - filter_dir $1 fs/${fs} -done - -# Network protocols -for prot in ${netprots} -do - filter_dir $1 kernel/net/${prot} -done - -# DRM -for drm in ${drmdrvs} -do - filter_dir $1 drivers/gpu/drm/${drm} -done - -# Just kill sound. -filter_dir $1 kernel/sound -filter_dir $1 kernel/drivers/soundwire - -# Now go through and filter any single .ko files that might have deps on the -# things we filtered above -for mod in ${singlemods} -do - filter_ko $1 ${mod} -done - -# Now process the override list to bring those modules back into core -for mod in ${overrides} -do - grep -v -e "/${mod}.ko" k-d.list > k-d.list.tmp - if [ $? -ne 0 ] - then - echo "Couldn't save ${mod}.ko Skipping." - else - grep -e "/${mod}.ko" k-d.list >> $filelist - mv k-d.list.tmp k-d.list - fi - -done - -# Go through our generated drivers list and remove the .ko files. We'll -# restore them later. -for mod in `cat k-d.list` -do - rm -rf $mod -done diff --git a/filter-modules.sh.rhel b/filter-modules.sh.rhel deleted file mode 100755 index b899ad62c..000000000 --- a/filter-modules.sh.rhel +++ /dev/null @@ -1,177 +0,0 @@ -#! /bin/bash -# -# Called as filter-modules.sh list-of-modules Arch - -# This script filters the modules into the kernel-core and kernel-modules -# subpackages. We list out subsystems/subdirs to prune from the installed -# module directory. What is left is put into the kernel-core package. What is -# pruned is contained in the kernel-modules package. -# -# This file contains the default subsys/subdirs to prune from all architectures. -# If an architecture needs to differ, we source a per-arch filter-.sh file -# that contains the set of override lists to be used instead. If a module or -# subsys should be in kernel-modules on all arches, please change the defaults -# listed here. - -# Overrides is individual modules which need to remain in kernel-core due to deps. -overrides="cec isst_if_common isst_tpmi_core isst_tpmi intel_vsec intel_vsec_tpmi" - -# Set the default dirs/modules to filter out -driverdirs="atm auxdisplay bcma bluetooth firewire fmc iio infiniband isdn leds media memstick mfd mmc mtd nfc ntb pcmcia platform power ssb staging tty uio uwb w1" - -chardrvs="mwave pcmcia" - -netdrvs="appletalk can dsa hamradio ieee802154 irda ppp slip usb wireless" - -ethdrvs="3com adaptec alteon amd aquantia atheros broadcom cadence calxeda chelsio cisco dec dlink emulex icplus marvell neterion nvidia oki-semi packetengines qlogic rdc renesas sfc silan sis smsc stmicro sun tehuti ti wiznet xircom" - -cryptdrvs="bcm caam cavium chelsio hisilicon marvell qat" - -inputdrvs="gameport tablet touchscreen" - -scsidrvs="aacraid aic7xxx aic94xx be2iscsi bfa bnx2i bnx2fc csiostor cxgbi esas2r fcoe fnic hisi_sas isci libsas lpfc megaraid mpt2sas mpt3sas mvsas pm8001 qla2xxx qla4xxx sym53c8xx_2 ufs qedf" - -usbdrvs="atm image misc serial wusbcore" - -fsdrvs="affs befs coda cramfs ecryptfs hfs hfsplus jfs minix ncpfs nilfs2 ocfs2 reiserfs romfs smb squashfs sysv ubifs ufs" - -netprots="6lowpan appletalk atm ax25 batman-adv bluetooth can dccp dsa ieee802154 irda l2tp mac80211 mac802154 mpls netrom nfc rds rfkill rose sctp smc wireless" - -drmdrvs="amd ast gma500 i2c i915 mgag200 nouveau radeon via " - -singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qedi qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr chtls parport_serial ism regmap-sdw regmap-sdw-mbq arizona-micsupp hid-asus nct6775 ntc_thermistor video apple_bl kasan_test intel-m10-bmc-hwmon dell-smm-hwmon" - -# Grab the arch-specific filter list overrides -source ./filter-$2.sh - -filter_dir() { - filelist=$1 - dir=$2 - - grep -v -e "${dir}/" ${filelist} > ${filelist}.tmp - - if [ $? -ne 0 ] - then - echo "Couldn't remove ${dir}. Skipping." - else - grep -e "${dir}/" ${filelist} >> k-d.list - mv ${filelist}.tmp $filelist - fi - - return 0 -} - -filter_ko() { - filelist=$1 - mod=$2 - - grep -v -e "${mod}.ko" ${filelist} > ${filelist}.tmp - - if [ $? -ne 0 ] - then - echo "Couldn't remove ${mod}.ko Skipping." - else - grep -e "${mod}.ko" ${filelist} >> k-d.list - mv ${filelist}.tmp $filelist - fi - - return 0 -} - -# Filter the drivers/ subsystems -for subsys in ${driverdirs} -do - filter_dir $1 drivers/${subsys} -done - -# Filter the networking drivers -for netdrv in ${netdrvs} -do - filter_dir $1 drivers/net/${netdrv} -done - -# Filter the char drivers -for char in ${chardrvs} -do - filter_dir $1 drivers/char/${char} -done - -# Filter the ethernet drivers -for eth in ${ethdrvs} -do - filter_dir $1 drivers/net/ethernet/${eth} -done - -# Filter the crypto drivers -for crypt in ${cryptdrvs} -do - filter_dir $1 drivers/crypto/${crypt} -done - -# SCSI -for scsi in ${scsidrvs} -do - filter_dir $1 drivers/scsi/${scsi} -done - -# Input -for input in ${inputdrvs} -do - filter_dir $1 drivers/input/${input} -done - -# USB -for usb in ${usbdrvs} -do - filter_dir $1 drivers/usb/${usb} -done - -# Filesystems -for fs in ${fsdrvs} -do - filter_dir $1 fs/${fs} -done - -# Network protocols -for prot in ${netprots} -do - filter_dir $1 kernel/net/${prot} -done - -# DRM -for drm in ${drmdrvs} -do - filter_dir $1 drivers/gpu/drm/${drm} -done - -# Just kill sound. -filter_dir $1 kernel/sound -filter_dir $1 kernel/drivers/soundwire - -# Now go through and filter any single .ko files that might have deps on the -# things we filtered above -for mod in ${singlemods} -do - filter_ko $1 ${mod} -done - -# Now process the override list to bring those modules back into core -for mod in ${overrides} -do - grep -v -e "/${mod}.ko" k-d.list > k-d.list.tmp - if [ $? -ne 0 ] - then - echo "Couldn't save ${mod}.ko Skipping." - else - grep -e "/${mod}.ko" k-d.list >> $filelist - mv k-d.list.tmp k-d.list - fi - -done - -# Go through our generated drivers list and remove the .ko files. We'll -# restore them later. -for mod in `cat k-d.list` -do - rm -rf $mod -done diff --git a/filter-ppc64le.sh.fedora b/filter-ppc64le.sh.fedora deleted file mode 100644 index 6e4a99997..000000000 --- a/filter-ppc64le.sh.fedora +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/bash - -# This is the ppc64le override file for the core/drivers package split. The -# module directories listed here and in the generic list in filter-modules.sh -# will be moved to the resulting kernel-modules package for this arch. -# Anything not listed in those files will be in the kernel-core package. -# -# Please review the default list in filter-modules.sh before making -# modifications to the overrides below. If something should be removed across -# all arches, remove it in the default instead of per-arch. - -driverdirs="atm auxdisplay bcma bluetooth firewire fpga infiniband leds media memstick message mmc mtd nfc ntb pcmcia platform power ssb staging tty uio w1" - -singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qedi qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwpoison-inject target_core_user sbp_target cxgbit chcr rnbd-client rnbd-server mlx5_vdpa hid-playstation hid-nintendo mlx5-vfio-pci nvmem_u-boot-env intel-m10-bmc-pmci intel-m10-bmc-hwmon ptp_dfl_tod pds_vdpa pds-vfio-pci nb7vpq904m" diff --git a/filter-ppc64le.sh.rhel b/filter-ppc64le.sh.rhel deleted file mode 100644 index d80956d2a..000000000 --- a/filter-ppc64le.sh.rhel +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/bash - -# This is the ppc64le override file for the core/drivers package split. The -# module directories listed here and in the generic list in filter-modules.sh -# will be moved to the resulting kernel-modules package for this arch. -# Anything not listed in those files will be in the kernel-core package. -# -# Please review the default list in filter-modules.sh before making -# modifications to the overrides below. If something should be removed across -# all arches, remove it in the default instead of per-arch. - -driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick message mmc mtd mwave nfc ntb pcmcia platform power ssb staging tty uio uwb w1" - -singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qedi qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr chtls" diff --git a/filter-s390x.sh.fedora b/filter-s390x.sh.fedora deleted file mode 100644 index 04f7110ad..000000000 --- a/filter-s390x.sh.fedora +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/bash - -# This is the s390x override file for the core/drivers package split. The -# module directories listed here and in the generic list in filter-modules.sh -# will be moved to the resulting kernel-modules package for this arch. -# Anything not listed in those files will be in the kernel-core package. -# -# Please review the default list in filter-modules.sh before making -# modifications to the overrides below. If something should be removed across -# all arches, remove it in the default instead of per-arch. - -# Defaults work so no need to override diff --git a/filter-s390x.sh.rhel b/filter-s390x.sh.rhel deleted file mode 100644 index 04f7110ad..000000000 --- a/filter-s390x.sh.rhel +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/bash - -# This is the s390x override file for the core/drivers package split. The -# module directories listed here and in the generic list in filter-modules.sh -# will be moved to the resulting kernel-modules package for this arch. -# Anything not listed in those files will be in the kernel-core package. -# -# Please review the default list in filter-modules.sh before making -# modifications to the overrides below. If something should be removed across -# all arches, remove it in the default instead of per-arch. - -# Defaults work so no need to override diff --git a/filter-x86_64.sh.fedora b/filter-x86_64.sh.fedora deleted file mode 100644 index 1aa80f2e0..000000000 --- a/filter-x86_64.sh.fedora +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/bash - -# This is the x86_64 override file for the core/drivers package split. The -# module directories listed here and in the generic list in filter-modules.sh -# will be moved to the resulting kernel-modules package for this arch. -# Anything not listed in those files will be in the kernel-core package. -# -# Please review the default list in filter-modules.sh before making -# modifications to the overrides below. If something should be removed across -# all arches, remove it in the default instead of per-arch. - -# Defaults work so no need to override diff --git a/filter-x86_64.sh.rhel b/filter-x86_64.sh.rhel deleted file mode 100644 index 1aa80f2e0..000000000 --- a/filter-x86_64.sh.rhel +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/bash - -# This is the x86_64 override file for the core/drivers package split. The -# module directories listed here and in the generic list in filter-modules.sh -# will be moved to the resulting kernel-modules package for this arch. -# Anything not listed in those files will be in the kernel-core package. -# -# Please review the default list in filter-modules.sh before making -# modifications to the overrides below. If something should be removed across -# all arches, remove it in the default instead of per-arch. - -# Defaults work so no need to override diff --git a/filtermods.py b/filtermods.py new file mode 100755 index 000000000..3500cde88 --- /dev/null +++ b/filtermods.py @@ -0,0 +1,1084 @@ +#!/usr/bin/env python3 +""" +filter kmods into groups for packaging, see filtermods.adoc +""" + +import argparse +import os +import re +import subprocess +import sys +import yaml +import unittest + +from logging import getLogger, DEBUG, INFO, WARN, ERROR, CRITICAL, NOTSET, StreamHandler, Formatter, Logger +from typing import Optional + +log = getLogger('filtermods') + + +def get_td(filename): + script_dir = os.path.dirname(os.path.realpath(__file__)) + return os.path.join(script_dir, 'filtermods-testdata', filename) + + +def run_command(cmd, cwddir=None): + p = subprocess.Popen(cmd, cwd=cwddir, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) + out, err = p.communicate() + out_str = out.decode('utf-8') + err_str = err.decode('utf-8') + return p.returncode, out_str, err_str + + +def safe_run_command(cmd, cwddir=None): + log.info('%s', cmd) + retcode, out, err = run_command(cmd, cwddir) + if retcode != 0: + log.warning('Command failed: %s, ret_code: %d', cmd, retcode) + log.warning(out) + log.warning(err) + raise Exception(err) + log.info(' ^^[OK]') + return retcode, out, err + + +def setup_logging(): + log_format = '%(asctime)s %(levelname)7.7s %(funcName)20.20s:%(lineno)4s %(message)s' + log = getLogger('filtermods') + handler = StreamHandler(sys.stdout) + formatter = Formatter(log_format, '%H:%M:%S') + handler.setFormatter(formatter) + log.addHandler(handler) + log.debug('Logging on') + return log + + +def canon_modname(kmod_pathname: str) -> str: + name = os.path.basename(kmod_pathname) + if name.endswith('.xz'): + name = name[:-3] + return name + + +class HierarchyObject: + def __init__(self): + self.depends_on = set() + + +def get_topo_order(obj_list: list[HierarchyObject], func_get_linked_objs=lambda x: x.depends_on) -> list[HierarchyObject]: + topo_order = [] + objs_to_sort = set(obj_list) + objs_sorted = set() + + while len(objs_to_sort) > 0: + no_deps = set() + for obj in objs_to_sort: + linked = func_get_linked_objs(obj) + if not linked: + no_deps.add(obj) + else: + all_deps_sorted = True + for dep in linked: + if dep not in objs_sorted: + all_deps_sorted = False + break + if all_deps_sorted: + no_deps.add(obj) + + for obj in no_deps: + topo_order.append(obj) + objs_sorted.add(obj) + objs_to_sort.remove(obj) + + return topo_order + + +class KMod(HierarchyObject): + def __init__(self, kmod_pathname: str) -> None: + super(KMod, self).__init__() + self.name: str = canon_modname(kmod_pathname) + self.kmod_pathname: str = kmod_pathname + self.is_dependency_for: set[KMod] = set() + self.assigned_to_pkg: Optional[KModPackage] = None + self.preferred_pkg: Optional[KModPackage] = None + self.rule_specifity: int = 0 + self.allowed_list: Optional[set[KModPackage]] = None + self.err = 0 + + def __str__(self): + depends_on = '' + for kmod in self.depends_on: + depends_on = depends_on + ' ' + kmod.name + return '%s {%s}' % (self.name, depends_on) + + +class KModList(): + def __init__(self) -> None: + self.name_to_kmod_map: dict[str, KMod] = {} + self.topo_order: Optional[list[KMod]] = None + + def get(self, kmod_pathname, create_if_missing=False): + kmod_name = canon_modname(kmod_pathname) + if kmod_name in self.name_to_kmod_map: + return self.name_to_kmod_map[kmod_name] + if not create_if_missing: + return None + + kmod = KMod(kmod_pathname) + # log.debug('Adding kmod %s (%s) to list', kmod.name, kmod.kmod_pathname) + if kmod.kmod_pathname != kmod_pathname: + raise Exception('Already have %s, but path changed? %s', kmod_name, kmod_pathname) + if not kmod.name: + raise Exception('Each kmod needs a name') + self.name_to_kmod_map[kmod_name] = kmod + return kmod + + def process_depmod_line(self, line): + tmp = line.split(':') + if len(tmp) != 2: + raise Exception('Depmod line has unexpected format: %s', line) + kmod_pathname = tmp[0].strip() + dependencies_pathnames = tmp[1].strip() + kmod = self.get(kmod_pathname, create_if_missing=True) + + if dependencies_pathnames: + for dep_pathname in dependencies_pathnames.split(' '): + dep_kmod = self.get(dep_pathname, create_if_missing=True) + kmod.depends_on.add(dep_kmod) + dep_kmod.is_dependency_for.add(kmod) + + def load_depmod_file(self, filepath): + with open(filepath) as f: + lines = f.readlines() + for line in lines: + if not line or line.startswith('#'): + continue + self.process_depmod_line(line) + log.info('depmod %s loaded, number of kmods: %s', filepath, len(self.name_to_kmod_map)) + + def dump(self): + for kmod in self.name_to_kmod_map.values(): + print(kmod) + + def get_topo_order(self): + if self.topo_order is None: + self.topo_order = get_topo_order(self.name_to_kmod_map.values()) + # TODO: what if we add something after? + return self.topo_order + + def get_alphabetical_order(self): + kmods = list(self.name_to_kmod_map.values()) + kmods.sort(key=lambda k: k.kmod_pathname) + return kmods + + def load_kmods_from_dir(self, topdir): + ret = [] + for root, dirs, files in os.walk(topdir): + for filename in files: + if filename.endswith('.xz'): + filename = filename[:-3] + if filename.endswith('.ko'): + kmod_pathname = os.path.join(root, filename) + ret.append(kmod_pathname) + + return ret + + def check_depmod_has_all_kmods(self, dirpath): + ret = self.load_kmods_from_dir(dirpath) + for kmod_pathname in ret: + kmod = self.get(kmod_pathname) + if not kmod: + raise Exception('Could not find kmod %s in depmod', kmod_pathname) + log.debug('OK: all (%s) kmods from %s are known', len(ret), dirpath) + + +class KModPackage(HierarchyObject): + def _get_depends_on(pkg): + return pkg.depends_on + + def _get_deps_for(pkg): + return pkg.is_dependency_for + + def __init__(self, name: str, depends_on=[]) -> None: + self.name: str = name + self.depends_on: set[KModPackage] = set(depends_on) + self.is_dependency_for: set[KModPackage] = set() + + for pkg in self.depends_on: + pkg.is_dependency_for.add(self) + self.all_depends_on_list: list[KModPackage] = self._get_all_linked(KModPackage._get_depends_on) + self.all_depends_on: set[KModPackage] = set(self.all_depends_on_list) + self.all_deps_for: Optional[set[KModPackage]] = None + self.default = False + log.debug('KModPackage created %s, depends_on: %s', name, [pkg.name for pkg in depends_on]) + + def __repr__(self): + return self.name + + def get_all_deps_for(self): + if self.all_deps_for is None: + self.all_deps_for = set(self._get_all_linked(KModPackage._get_deps_for)) + return self.all_deps_for + + def _get_all_linked(self, func_get_links): + ret = [] + explore = func_get_links(self) + + while len(explore) > 0: + new_explore = set() + for pkg in explore: + if pkg not in ret: + ret.append(pkg) + for dep in func_get_links(pkg): + new_explore.add(dep) + explore = new_explore + return ret + + +class KModPackageList(HierarchyObject): + def __init__(self) -> None: + self.name_to_obj: dict[str, KModPackage] = {} + self.kmod_pkg_list: list[KModPackage] = [] + self.rules: list[tuple[str, str, str]] = [] + + def get(self, pkgname): + if pkgname in self.name_to_obj: + return self.name_to_obj[pkgname] + return None + + def add_kmod_pkg(self, pkg): + self.name_to_obj[pkg.name] = pkg + self.kmod_pkg_list.append(pkg) + + def __iter__(self): + return iter(self.kmod_pkg_list) + + +def get_kmods_matching_re(kmod_list: KModList, param_re: str) -> list[KMod]: + ret = [] + # first subdir can be anything - this is because during build everything + # goes to kernel, but subpackages can move it (e.g. to extra) + param_re = '[^/]+/' + param_re + pattern = re.compile(param_re) + + for kmod in kmod_list.get_topo_order(): + m = pattern.match(kmod.kmod_pathname) + if m: + ret.append(kmod) + return ret + + +def walk_kmod_chain(kmod, myfunc): + visited = set() + + def visit_kmod(kmod, parent_kmod, func_to_call): + func_to_call(kmod, parent_kmod) + visited.add(kmod) + for dep in kmod.depends_on: + if dep not in visited: + visit_kmod(dep, kmod, func_to_call) + + visit_kmod(kmod, None, myfunc) + return visited + + +# is pkg a parent to any pkg from "alist" +def is_pkg_parent_to_any(pkg: KModPackage, alist: set[KModPackage]) -> bool: + if pkg in alist: + return True + + for some_pkg in alist: + if some_pkg in pkg.all_depends_on: + return True + return False + + +# is pkg a child to any pkg from "alist" +def is_pkg_child_to_any(pkg: KModPackage, alist: set[KModPackage]) -> bool: + if pkg in alist: + return True + + for some_pkg in alist: + if pkg in some_pkg.all_depends_on: + return True + return False + + +def update_allowed(kmod: KMod, visited: set[KMod], update_linked: bool = False) -> int: + num_updated = 0 + init = False + to_remove = set() + + if kmod in visited: + return num_updated + visited.add(kmod) + + # if we have nothing, try to initialise based on parents and children + if kmod.allowed_list is None: + init_allowed_list: set[KModPackage] = set() + + # init from children + for kmod_dep in kmod.depends_on: + if kmod_dep.allowed_list: + init_allowed_list.update(kmod_dep.allowed_list) + init = True + + if init: + # also add any pkgs that pkgs from list could depend on + deps_for = set() + for pkg in init_allowed_list: + deps_for.update(pkg.get_all_deps_for()) + init_allowed_list.update(deps_for) + + # init from parents + if not init: + for kmod_par in kmod.is_dependency_for: + if kmod_par.allowed_list: + init_allowed_list.update(kmod_par.allowed_list) + # also add any pkgs that depend on pkgs from list + for pkg in kmod_par.allowed_list: + init_allowed_list.update(pkg.all_depends_on) + init = True + + if init: + kmod.allowed_list = init_allowed_list + log.info('%s: init to %s', kmod.name, [x.name for x in kmod.allowed_list]) + + kmod_allowed_list = kmod.allowed_list or set() + # log.debug('%s: update to %s', kmod.name, [x.name for x in kmod_allowed_list]) + + # each allowed is parent to at least one child allowed [for _all_ children] + for pkg in kmod_allowed_list: + for kmod_dep in kmod.depends_on: + if kmod_dep.allowed_list is None or kmod_dep.err: + continue + if not is_pkg_parent_to_any(pkg, kmod_dep.allowed_list): + to_remove.add(pkg) + log.info('%s: remove %s from allowed, child: %s [%s]', + kmod.name, [pkg.name], kmod_dep.name, [x.name for x in kmod_dep.allowed_list]) + + # each allowed is child to at least one parent allowed [for _all_ parents] + for pkg in kmod_allowed_list: + for kmod_par in kmod.is_dependency_for: + if kmod_par.allowed_list is None or kmod_par.err: + continue + + if not is_pkg_child_to_any(pkg, kmod_par.allowed_list): + to_remove.add(pkg) + log.info('%s: remove %s from allowed, parent: %s %s', + kmod.name, [pkg.name], kmod_par.name, [x.name for x in kmod_par.allowed_list]) + + for pkg in to_remove: + kmod_allowed_list.remove(pkg) + num_updated = num_updated + 1 + if len(kmod_allowed_list) == 0: + log.error('%s: cleared entire allow list', kmod.name) + kmod.err = 1 + + if init or to_remove or update_linked: + if to_remove: + log.info('%s: updated to %s', kmod.name, [x.name for x in kmod_allowed_list]) + + for kmod_dep in kmod.depends_on: + num_updated = num_updated + update_allowed(kmod_dep, visited) + + for kmod_dep in kmod.is_dependency_for: + num_updated = num_updated + update_allowed(kmod_dep, visited) + + return num_updated + + +def apply_initial_labels(pkg_list: KModPackageList, kmod_list: KModList, treat_default_as_wants=False): + log.debug('') + for cur_rule in ['needs', 'wants', 'default']: + for package_name, rule_type, rule in pkg_list.rules: + pkg_obj = pkg_list.get(package_name) + + if not pkg_obj: + log.error('no package with name %s', package_name) + + if cur_rule != rule_type: + continue + + if rule_type == 'default' and treat_default_as_wants: + rule_type = 'wants' + + if 'needs' == rule_type: + # kmod_matching is already in topo_order + kmod_matching = get_kmods_matching_re(kmod_list, rule) + for kmod in kmod_matching: + if kmod.assigned_to_pkg and kmod.assigned_to_pkg != pkg_obj: + log.error('%s: can not be required by 2 pkgs %s %s', kmod.name, kmod.assigned_to_pkg, pkg_obj.name) + else: + kmod.assigned_to_pkg = pkg_obj + kmod.allowed_list = set([pkg_obj]) + kmod.rule_specifity = len(kmod_matching) + log.debug('%s: needed by %s', kmod.name, [pkg_obj.name]) + + if 'wants' == rule_type: + # kmod_matching is already in topo_order + kmod_matching = get_kmods_matching_re(kmod_list, rule) + for kmod in kmod_matching: + if kmod.allowed_list is None: + kmod.allowed_list = set(pkg_obj.all_depends_on) + kmod.allowed_list.add(pkg_obj) + kmod.preferred_pkg = pkg_obj + kmod.rule_specifity = len(kmod_matching) + log.debug('%s: wanted by %s, init allowed to %s', kmod.name, [pkg_obj.name], [pkg.name for pkg in kmod.allowed_list]) + else: + if kmod.assigned_to_pkg: + log.debug('%s: ignoring wants by %s, already assigned to %s', kmod.name, pkg_obj.name, kmod.assigned_to_pkg.name) + else: + # rule specifity may not be good idea, so just log it + # e.g. .*test.* may not be more specific than arch/x86/.* + log.debug('already have wants for %s %s, new rule: %s', kmod.name, kmod.preferred_pkg, rule) + + if 'default' == rule_type: + pkg_obj.default = True + + +def settle(kmod_list: KModList) -> None: + kmod_topo_order = list(kmod_list.get_topo_order()) + + for i in range(0, 25): + log.debug('settle start %s', i) + + ret = 0 + for kmod in kmod_topo_order: + visited: set[KMod] = set() + ret = ret + update_allowed(kmod, visited) + log.debug('settle %s updated nodes: %s', i, ret) + + if ret == 0: + break + + kmod_topo_order.reverse() + + +# phase 1 - propagate initial labels +def propagate_labels_1(pkg_list: KModPackageList, kmod_list: KModList): + log.info('') + settle(kmod_list) + + +def pick_closest_to_preffered(preferred_pkg: KModPackage, allowed_set: set[KModPackage]): + for child in preferred_pkg.all_depends_on_list: + if child in allowed_set: + return child + return None + + +# phase 2 - if some kmods allow more than one pkg, pick wanted package +def propagate_labels_2(pkg_list: KModPackageList, kmod_list: KModList): + log.info('') + ret = 0 + for kmod in kmod_list.get_topo_order(): + update_linked = False + + if kmod.allowed_list is None and kmod.preferred_pkg: + log.error('%s: has no allowed list but has preferred_pkg %s', kmod.name, kmod.preferred_pkg.name) + kmod.err = 1 + + if kmod.allowed_list and kmod.preferred_pkg: + chosen_pkg = None + if kmod.preferred_pkg in kmod.allowed_list: + chosen_pkg = kmod.preferred_pkg + else: + chosen_pkg = pick_closest_to_preffered(kmod.preferred_pkg, kmod.allowed_list) + + if chosen_pkg is not None: + kmod.allowed_list = set([chosen_pkg]) + log.info('%s: making to prefer %s (preffered is %s), allowed: %s', kmod.name, chosen_pkg.name, + kmod.preferred_pkg.name, [pkg.name for pkg in kmod.allowed_list]) + update_linked = True + + visited: set[KMod] = set() + ret = ret + update_allowed(kmod, visited, update_linked) + + log.debug('updated nodes: %s', ret) + settle(kmod_list) + + +# Is this the best pick? ¯\_(ツ)_/¯ +def pick_topmost_allowed(allowed_set: set[KModPackage]) -> KModPackage: + topmost = next(iter(allowed_set)) + for pkg in allowed_set: + if len(pkg.all_depends_on) > len(topmost.all_depends_on): + topmost = pkg + + return topmost + + +# phase 3 - assign everything else that remained +def propagate_labels_3(pkg_list: KModPackageList, kmod_list: KModList): + log.info('') + ret = 0 + kmod_topo_order = list(kmod_list.get_topo_order()) + # do reverse topo order to cover children faster + kmod_topo_order.reverse() + + default_pkg = None + default_name = '' + for pkg_obj in pkg_list: + if pkg_obj.default: + if default_pkg: + log.error('Already have default pkg: %s / %s', default_pkg.name, pkg_obj.name) + else: + default_pkg = pkg_obj + default_name = default_pkg.name + + for kmod in kmod_topo_order: + update_linked = False + chosen_pkg = None + + if kmod.allowed_list is None: + if default_pkg: + chosen_pkg = default_pkg + else: + log.error('%s not assigned and there is no default', kmod.name) + elif len(kmod.allowed_list) > 1: + if default_pkg: + if default_pkg in kmod.allowed_list: + chosen_pkg = default_pkg + else: + chosen_pkg = pick_closest_to_preffered(default_pkg, kmod.allowed_list) + if chosen_pkg: + log.debug('closest is %s', chosen_pkg.name) + if not chosen_pkg: + # multiple pkgs are allowed, but none is preferred or default + chosen_pkg = pick_topmost_allowed(kmod.allowed_list) + log.debug('topmost is %s', chosen_pkg.name) + + if chosen_pkg: + kmod.allowed_list = set([chosen_pkg]) + log.info('%s: making to prefer %s (default: %s)', kmod.name, [chosen_pkg.name], default_name) + update_linked = True + + visited: set[KMod] = set() + ret = ret + update_allowed(kmod, visited, update_linked) + + log.debug('updated nodes: %s', ret) + settle(kmod_list) + + +def load_config(config_pathname: str, kmod_list: KModList, variants=[]): + kmod_pkg_list = KModPackageList() + + with open(config_pathname, 'r') as file: + yobj = yaml.safe_load(file) + + for pkg_dict in yobj['packages']: + pkg_name = pkg_dict['name'] + depends_on = pkg_dict.get('depends-on', []) + if_variant_in = pkg_dict.get('if_variant_in') + + if if_variant_in is not None: + if not (set(variants) & set(if_variant_in)): + log.debug('Skipping %s for variants %s', pkg_name, variants) + continue + + pkg_dep_list = [] + for pkg_dep_name in depends_on: + pkg_dep = kmod_pkg_list.get(pkg_dep_name) + pkg_dep_list.append(pkg_dep) + + pkg_obj = kmod_pkg_list.get(pkg_name) + if not pkg_obj: + pkg_obj = KModPackage(pkg_name, pkg_dep_list) + kmod_pkg_list.add_kmod_pkg(pkg_obj) + else: + log.error('package %s already exists?', pkg_name) + + rules_list = yobj.get('rules', []) + for rule_dict in rules_list: + if_variant_in = rule_dict.get('if_variant_in') + exact_pkg = rule_dict.get('exact_pkg') + + for key, value in rule_dict.items(): + if key in ['if_variant_in', 'exact_pkg']: + continue + + if if_variant_in is not None: + if not (set(variants) & set(if_variant_in)): + continue + + rule = key + package_name = value + + if not kmod_pkg_list.get(package_name): + raise Exception('Unknown package ' + package_name) + + rule_type = 'wants' + if exact_pkg is True: + rule_type = 'needs' + elif key == 'default': + rule_type = 'default' + rule = '.*' + + log.debug('found rule: %s', (package_name, rule_type, rule)) + kmod_pkg_list.rules.append((package_name, rule_type, rule)) + + log.info('loaded config, rules: %s', len(kmod_pkg_list.rules)) + return kmod_pkg_list + + +def make_pictures(pkg_list: KModPackageList, kmod_list: KModList, filename: str, print_allowed=True): + f = open(filename + '.dot', 'w') + + f.write('digraph {\n') + f.write('node [style=filled fillcolor="#f8f8f8"]\n') + f.write(' subgraph kmods {\n') + f.write(' "Legend" [shape=note label="kmod name\\n{desired package}\\nresulting package(s)"]\n') + + for kmod in kmod_list.get_topo_order(): + pkg_name = '' + attr = '' + if kmod.assigned_to_pkg: + attr = 'fillcolor="#eddad5" color="#b22800"' + pkg_name = kmod.assigned_to_pkg.name + "!" + if kmod.preferred_pkg: + attr = 'fillcolor="#ddddf5" color="#b268fe"' + pkg_name = kmod.preferred_pkg.name + "?" + allowed = '' + if kmod.allowed_list and print_allowed: + allowed = '=' + ' '.join([pkg.name for pkg in kmod.allowed_list]) + f.write(' "%s" [label="%s\\n%s\\n%s" shape=box %s] \n' % (kmod.name, kmod.name, pkg_name, allowed, attr)) + + for kmod in kmod_list.get_topo_order(): + for kmod_dep in kmod.depends_on: + f.write(' "%s" -> "%s";\n' % (kmod.name, kmod_dep.name)) + f.write(' }\n') + + f.write(' subgraph packages {\n') + for pkg in pkg_list: + desc = '' + if pkg.default: + desc = '/default' + f.write(' "%s" [label="%s\\n%s"] \n' % (pkg.name, pkg.name, desc)) + for pkg_dep in pkg.depends_on: + f.write(' "%s" -> "%s";\n' % (pkg.name, pkg_dep.name)) + f.write(' }\n') + f.write('}\n') + + f.close() + + # safe_run_command('dot -Tpng -Gdpi=150 %s.dot > %s.png' % (filename, filename)) + safe_run_command('dot -Tsvg %s.dot > %s.svg' % (filename, filename)) + + +def sort_kmods(depmod_pathname: str, config_str: str, variants=[], do_pictures=''): + log.info('%s %s', depmod_pathname, config_str) + kmod_list = KModList() + kmod_list.load_depmod_file(depmod_pathname) + + pkg_list = load_config(config_str, kmod_list, variants) + + basename = os.path.splitext(config_str)[0] + + apply_initial_labels(pkg_list, kmod_list) + if '0' in do_pictures: + make_pictures(pkg_list, kmod_list, basename + "_0", print_allowed=False) + + try: + + propagate_labels_1(pkg_list, kmod_list) + if '1' in do_pictures: + make_pictures(pkg_list, kmod_list, basename + "_1") + propagate_labels_2(pkg_list, kmod_list) + propagate_labels_3(pkg_list, kmod_list) + finally: + if 'f' in do_pictures: + make_pictures(pkg_list, kmod_list, basename + "_f") + + return pkg_list, kmod_list + + +def abbrev_list_for_report(alist: list[KMod]) -> str: + tmp_str = [] + for kmod in alist[:2]: + if kmod.allowed_list: + tmp_str.append('%s(%s)' % (kmod.name, ' '.join([x.name for x in kmod.allowed_list]))) + ret = ', '.join(tmp_str) + other_len = len(alist[2:]) + if other_len > 0: + ret = ret + ' and %s other(s)' % (other_len) + return ret + + +def print_report(pkg_list: KModPackageList, kmod_list: KModList): + log.info('*'*26 + ' REPORT ' + '*'*26) + + kmods_err = 0 + kmods_moved = 0 + kmods_good = 0 + for kmod in kmod_list.get_topo_order(): + if not kmod.allowed_list: + log.error('%s: not assigned to any package! Please check the full log for details', kmod.name) + kmods_err = kmods_err + 1 + continue + + if len(kmod.allowed_list) > 1: + log.error('%s: assigned to more than one package! Please check the full log for details', kmod.name) + kmods_err = kmods_err + 1 + continue + + if not kmod.preferred_pkg: + # config doesn't care where it ended up + kmods_good = kmods_good + 1 + continue + + if kmod.preferred_pkg in kmod.allowed_list: + # it ended up where it needs to be + kmods_good = kmods_good + 1 + continue + + bad_parent_list = [] + for kmod_parent in kmod.is_dependency_for: + if not is_pkg_child_to_any(kmod.preferred_pkg, kmod_parent.allowed_list): + bad_parent_list.append(kmod_parent) + + bad_child_list = [] + for kmod_child in kmod.depends_on: + if not is_pkg_parent_to_any(kmod.preferred_pkg, kmod_child.allowed_list): + bad_child_list.append(kmod_parent) + + log.info('%s: wanted by %s but ended up in %s', kmod.name, [kmod.preferred_pkg.name], [pkg.name for pkg in kmod.allowed_list]) + if bad_parent_list: + log.info('\thas conflicting parent: %s', abbrev_list_for_report(bad_parent_list)) + if bad_child_list: + log.info('\thas conflicting children: %s', abbrev_list_for_report(bad_child_list)) + + kmods_moved = kmods_moved + 1 + + log.info('No. of kmod(s) assigned to preferred package: %s', kmods_good) + log.info('No. of kmod(s) moved to a related package: %s', kmods_moved) + log.info('No. of kmod(s) which could not be assigned: %s', kmods_err) + log.info('*'*60) + + return kmods_err + + +def write_modules_lists(path_prefix: str, pkg_list: KModPackageList, kmod_list: KModList): + kmod_list_alphabetical = sorted(kmod_list.get_topo_order(), key=lambda x: x.kmod_pathname) + for pkg in pkg_list: + output_path = os.path.join(path_prefix, pkg.name + '.list') + i = 0 + with open(output_path, "w") as file: + for kmod in kmod_list_alphabetical: + if kmod.allowed_list and pkg in kmod.allowed_list: + file.write(kmod.kmod_pathname) + file.write('\n') + i = i + 1 + log.info('Module list %s created with %s kmods', output_path, i) + + +class FiltermodTests(unittest.TestCase): + do_pictures = '' + + def setUp(self): + self.pkg_list = None + self.kmod_list = None + + def _is_kmod_pkg(self, kmodname, pkgnames): + self.assertIsNotNone(self.pkg_list) + self.assertIsNotNone(self.kmod_list) + + if type(pkgnames) is str: + pkgnames = [pkgnames] + + expected_pkgs = [] + for pkgname in pkgnames: + pkg = self.pkg_list.get(pkgname) + self.assertIsNotNone(pkg) + expected_pkgs.append(pkg) + + kmod = self.kmod_list.get(kmodname) + self.assertIsNotNone(kmod) + + if expected_pkgs: + self.assertTrue(len(kmod.allowed_list) == 1) + self.assertIn(next(iter(kmod.allowed_list)), expected_pkgs) + else: + self.assertEqual(kmod.allowed_list, set()) + + def test1a(self): + self.pkg_list, self.kmod_list = sort_kmods(get_td('test1.dep'), get_td('test1.yaml'), + do_pictures=FiltermodTests.do_pictures) + + self._is_kmod_pkg('kmod1', 'modules-core') + self._is_kmod_pkg('kmod2', 'modules-core') + self._is_kmod_pkg('kmod3', 'modules') + self._is_kmod_pkg('kmod4', 'modules') + + def test1b(self): + self.pkg_list, self.kmod_list = sort_kmods(get_td('test1.dep'), get_td('test1.yaml'), + do_pictures=FiltermodTests.do_pictures, + variants=['rt']) + + self.assertIsNotNone(self.pkg_list.get('rt-kvm')) + self._is_kmod_pkg('kmod1', 'modules-core') + self._is_kmod_pkg('kmod2', 'modules-core') + self._is_kmod_pkg('kmod3', 'modules') + self._is_kmod_pkg('kmod4', 'rt-kvm') + + def test2(self): + self.pkg_list, self.kmod_list = sort_kmods(get_td('test2.dep'), get_td('test2.yaml'), + do_pictures=FiltermodTests.do_pictures) + + self._is_kmod_pkg('kmod1', 'modules-extra') + self._is_kmod_pkg('kmod2', 'modules') + self._is_kmod_pkg('kmod3', 'modules-core') + self._is_kmod_pkg('kmod4', 'modules-core') + self._is_kmod_pkg('kmod5', 'modules-core') + self._is_kmod_pkg('kmod6', 'modules-extra') + self._is_kmod_pkg('kmod8', 'modules') + + def test3(self): + self.pkg_list, self.kmod_list = sort_kmods(get_td('test3.dep'), get_td('test3.yaml'), + do_pictures=FiltermodTests.do_pictures) + + self._is_kmod_pkg('kmod2', ['modules-core', 'modules']) + self._is_kmod_pkg('kmod4', ['modules-core', 'modules-extra']) + self._is_kmod_pkg('kmod5', 'modules-core') + self._is_kmod_pkg('kmod6', 'modules-core') + + def test4(self): + self.pkg_list, self.kmod_list = sort_kmods(get_td('test4.dep'), get_td('test4.yaml'), + do_pictures=FiltermodTests.do_pictures) + + self._is_kmod_pkg('kmod0', 'modules') + self._is_kmod_pkg('kmod1', 'modules') + self._is_kmod_pkg('kmod2', 'modules') + self._is_kmod_pkg('kmod3', 'modules') + self._is_kmod_pkg('kmod4', 'modules') + self._is_kmod_pkg('kmod5', 'modules') + self._is_kmod_pkg('kmod6', 'modules') + self._is_kmod_pkg('kmod7', 'modules-partner2') + self._is_kmod_pkg('kmod8', 'modules-partner') + self._is_kmod_pkg('kmod9', 'modules-partner') + + def _check_preffered_pkg(self, kmodname, pkgname): + kmod = self.kmod_list.get(kmodname) + self.assertIsNotNone(kmod) + self.assertEqual(kmod.preferred_pkg.name, pkgname) + + def test5(self): + self.pkg_list, self.kmod_list = sort_kmods(get_td('test5.dep'), get_td('test5.yaml'), + do_pictures=FiltermodTests.do_pictures) + + self._check_preffered_pkg('kmod2', 'modules') + self._check_preffered_pkg('kmod3', 'modules-partner') + self._check_preffered_pkg('kmod4', 'modules-partner') + + def test6(self): + self.pkg_list, self.kmod_list = sort_kmods(get_td('test6.dep'), get_td('test6.yaml'), + do_pictures=FiltermodTests.do_pictures) + + self._is_kmod_pkg('kmod2', 'modules-core') + self._is_kmod_pkg('kmod3', 'modules') + self._is_kmod_pkg('kmod4', 'modules') + self._is_kmod_pkg('kmod1', []) + + def test7(self): + self.pkg_list, self.kmod_list = sort_kmods(get_td('test7.dep'), get_td('test7.yaml'), + do_pictures=FiltermodTests.do_pictures) + + self._is_kmod_pkg('kmod1', 'modules-core') + self._is_kmod_pkg('kmod2', 'modules-core') + self._is_kmod_pkg('kmod3', 'modules-other') + self._is_kmod_pkg('kmod4', 'modules') + + +def do_rpm_mapping_test(config_pathname, kmod_rpms): + kmod_dict = {} + + def get_kmods_matching_re(pkgname, param_re): + matched = [] + param_re = '^kernel/' + param_re + pattern = re.compile(param_re) + + for kmod_pathname, kmod_rec in kmod_dict.items(): + m = pattern.match(kmod_pathname) + if m: + matched.append(kmod_pathname) + + return matched + + for kmod_rpm in kmod_rpms.split(): + filename = os.path.basename(kmod_rpm) + + m = re.match(r'.*-modules-([^-]+)', filename) + if not m: + raise Exception('Unrecognized rpm ' + kmod_rpm + ', expected a kernel-modules* rpm') + pkgname = 'modules-' + m.group(1) + m = re.match(r'modules-([0-9.]+)', pkgname) + if m: + pkgname = 'modules' + + tmpdir = os.path.join('tmp.filtermods', filename, pkgname) + if not os.path.exists(tmpdir): + log.info('creating tmp dir %s', tmpdir) + os.makedirs(tmpdir) + safe_run_command('rpm2cpio %s | cpio -id' % (os.path.abspath(kmod_rpm)), cwddir=tmpdir) + else: + log.info('using cached content of tmp dir: %s', tmpdir) + + for path, subdirs, files in os.walk(tmpdir): + for name in files: + ret = re.match(r'.*/'+pkgname+'/lib/modules/[^/]+/[^/]+/(.*)', os.path.join(path, name)) + if not ret: + continue + + kmod_pathname = 'kernel/' + ret.group(1) + if not kmod_pathname.endswith('.xz') and not kmod_pathname.endswith('.ko'): + continue + if kmod_pathname in kmod_dict: + if pkgname not in kmod_dict[kmod_pathname]['target_pkgs']: + kmod_dict[kmod_pathname]['target_pkgs'].append(pkgname) + else: + kmod_dict[kmod_pathname] = {} + kmod_dict[kmod_pathname]['target_pkgs'] = [pkgname] + kmod_dict[kmod_pathname]['pkg'] = None + kmod_dict[kmod_pathname]['matched'] = False + + kmod_pkg_list = load_config(config_pathname, None) + + for package_name, rule_type, rule in kmod_pkg_list.rules: + kmod_names = get_kmods_matching_re(package_name, rule) + + for kmod_pathname in kmod_names: + kmod_rec = kmod_dict[kmod_pathname] + + if not kmod_rec['matched']: + kmod_rec['matched'] = True + kmod_rec['pkg'] = package_name + for kmod_pathname, kmod_rec in kmod_dict.items(): + if kmod_rec['pkg'] not in kmod_rec['target_pkgs']: + log.warning('kmod %s wanted by config in %s, in tree it is: %s', kmod_pathname, [kmod_rec['pkg']], kmod_rec['target_pkgs']) + elif len(kmod_rec['target_pkgs']) > 1: + # if set(kmod_rec['target_pkgs']) != set(['modules', 'modules-core']): + log.warning('kmod %s multiple matches in tree: %s/%s', kmod_pathname, [kmod_rec['pkg']], kmod_rec['target_pkgs']) + + +def cmd_sort(options): + do_pictures = '' + if options.graphviz: + do_pictures = '0f' + + pkg_list, kmod_list = sort_kmods(options.depmod, options.config, + options.variants, do_pictures) + ret = print_report(pkg_list, kmod_list) + if options.output: + write_modules_lists(options.output, pkg_list, kmod_list) + + return ret + + +def cmd_print_rule_map(options): + kmod_list = KModList() + kmod_list.load_depmod_file(options.depmod) + pkg_list = load_config(options.config, kmod_list, options.variants) + apply_initial_labels(pkg_list, kmod_list, treat_default_as_wants=True) + + for kmod in kmod_list.get_alphabetical_order(): + print('%-20s %s' % (kmod.preferred_pkg, kmod.kmod_pathname)) + + +def cmd_selftest(options): + if options.graphviz: + FiltermodTests.do_pictures = '0f' + + for arg in ['selftest', '-g', '--graphviz']: + if arg in sys.argv: + sys.argv.remove(arg) + + unittest.main() + sys.exit(0) + + +def cmd_cmp2rpm(options): + do_rpm_mapping_test(options.config, options.kmod_rpms) + + +def main(): + global log + log = setup_logging() + + parser = argparse.ArgumentParser() + parser.add_argument('-v', '--verbose', dest='verbose', + help='be more verbose', action='count', default=4) + parser.add_argument('-q', '--quiet', dest='quiet', + help='be more quiet', action='count', default=0) + subparsers = parser.add_subparsers(dest='cmd') + + def add_graphviz_arg(p): + p.add_argument('-g', '--graphviz', dest='graphviz', + help='generate graphviz visualizations', + action='store_true', default=False) + + def add_config_arg(p): + p.add_argument('-c', '--config', dest='config', required=True, + help='path to yaml config with rules') + + def add_depmod_arg(p): + p.add_argument('-d', '--depmod', dest='depmod', required=True, + help='path to modules.dep file') + + def add_output_arg(p): + p.add_argument('-o', '--output', dest='output', default=None, + help='output $module_name.list files to directory specified by this parameter') + + def add_variants_arg(p): + p.add_argument('-r', '--variants', dest='variants', action='append', default=[], + help='variants to enable in config') + + def add_kmod_rpms_arg(p): + p.add_argument('-k', '--kmod-rpms', dest='kmod_rpms', required=True, + help='compare content of specified rpm(s) against yaml config rules') + + parser_sort = subparsers.add_parser('sort', help='assign kmods specified by modules.dep using rules from yaml config') + add_config_arg(parser_sort) + add_depmod_arg(parser_sort) + add_output_arg(parser_sort) + add_variants_arg(parser_sort) + add_graphviz_arg(parser_sort) + + parser_rule_map = subparsers.add_parser('rulemap', help='print how yaml config maps to kmods') + add_config_arg(parser_rule_map) + add_depmod_arg(parser_rule_map) + add_variants_arg(parser_rule_map) + + parser_test = subparsers.add_parser('selftest', help='runs a self-test') + add_graphviz_arg(parser_test) + + parser_cmp2rpm = subparsers.add_parser('cmp2rpm', help='compare ruleset against RPM(s)') + add_config_arg(parser_cmp2rpm) + add_kmod_rpms_arg(parser_cmp2rpm) + + options = parser.parse_args() + + if options.cmd == "selftest": + options.verbose = options.verbose - 2 + options.verbose = max(options.verbose - options.quiet, 0) + levels = [NOTSET, CRITICAL, ERROR, WARN, INFO, DEBUG] + log.setLevel(levels[min(options.verbose, len(levels) - 1)]) + + ret = 0 + if options.cmd == "sort": + ret = cmd_sort(options) + elif options.cmd == "rulemap": + cmd_print_rule_map(options) + elif options.cmd == "selftest": + cmd_selftest(options) + elif options.cmd == "cmp2rpm": + cmd_cmp2rpm(options) + else: + parser.print_help() + + return ret + + +if __name__ == '__main__': + # import profile + # profile.run('main()', sort=1) + sys.exit(main()) diff --git a/kernel-aarch64-16k-debug-fedora.config b/kernel-aarch64-16k-debug-fedora.config index 8c484bae5..782aa1df8 100644 --- a/kernel-aarch64-16k-debug-fedora.config +++ b/kernel-aarch64-16k-debug-fedora.config @@ -8302,6 +8302,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPI_ALTERA_CORE=m CONFIG_SPI_ALTERA_DFL=m # CONFIG_SPI_ALTERA is not set diff --git a/kernel-aarch64-16k-fedora.config b/kernel-aarch64-16k-fedora.config index 8a68b5463..d8ca90d5b 100644 --- a/kernel-aarch64-16k-fedora.config +++ b/kernel-aarch64-16k-fedora.config @@ -8273,6 +8273,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPI_ALTERA_CORE=m CONFIG_SPI_ALTERA_DFL=m # CONFIG_SPI_ALTERA is not set diff --git a/kernel-aarch64-64k-debug-rhel.config b/kernel-aarch64-64k-debug-rhel.config index bf89da291..85d8628a8 100644 --- a/kernel-aarch64-64k-debug-rhel.config +++ b/kernel-aarch64-64k-debug-rhel.config @@ -6776,6 +6776,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set CONFIG_SPI_AMD=y diff --git a/kernel-aarch64-64k-rhel.config b/kernel-aarch64-64k-rhel.config index 0abc2177f..a47e52abd 100644 --- a/kernel-aarch64-64k-rhel.config +++ b/kernel-aarch64-64k-rhel.config @@ -6751,6 +6751,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set CONFIG_SPI_AMD=y diff --git a/kernel-aarch64-debug-fedora.config b/kernel-aarch64-debug-fedora.config index e4ea0678e..39dc4c44e 100644 --- a/kernel-aarch64-debug-fedora.config +++ b/kernel-aarch64-debug-fedora.config @@ -8301,6 +8301,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPI_ALTERA_CORE=m CONFIG_SPI_ALTERA_DFL=m # CONFIG_SPI_ALTERA is not set diff --git a/kernel-aarch64-debug-rhel.config b/kernel-aarch64-debug-rhel.config index dd0a74e68..b7bc78f3b 100644 --- a/kernel-aarch64-debug-rhel.config +++ b/kernel-aarch64-debug-rhel.config @@ -6772,6 +6772,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set CONFIG_SPI_AMD=y diff --git a/kernel-aarch64-fedora.config b/kernel-aarch64-fedora.config index 3c298dca4..a84798cbf 100644 --- a/kernel-aarch64-fedora.config +++ b/kernel-aarch64-fedora.config @@ -8272,6 +8272,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPI_ALTERA_CORE=m CONFIG_SPI_ALTERA_DFL=m # CONFIG_SPI_ALTERA is not set diff --git a/kernel-aarch64-rhel.config b/kernel-aarch64-rhel.config index 9f81f7824..54224dd75 100644 --- a/kernel-aarch64-rhel.config +++ b/kernel-aarch64-rhel.config @@ -6747,6 +6747,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set CONFIG_SPI_AMD=y diff --git a/kernel-aarch64-rt-debug-rhel.config b/kernel-aarch64-rt-debug-rhel.config index c5c64b0f2..9dec125a8 100644 --- a/kernel-aarch64-rt-debug-rhel.config +++ b/kernel-aarch64-rt-debug-rhel.config @@ -6825,6 +6825,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set CONFIG_SPI_AMD=y diff --git a/kernel-aarch64-rt-rhel.config b/kernel-aarch64-rt-rhel.config index 94dec4325..bb6324c63 100644 --- a/kernel-aarch64-rt-rhel.config +++ b/kernel-aarch64-rt-rhel.config @@ -6800,6 +6800,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set CONFIG_SPI_AMD=y diff --git a/kernel-ppc64le-debug-fedora.config b/kernel-ppc64le-debug-fedora.config index 5abd3d969..61d385de4 100644 --- a/kernel-ppc64le-debug-fedora.config +++ b/kernel-ppc64le-debug-fedora.config @@ -6867,6 +6867,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPI_ALTERA_CORE=m CONFIG_SPI_ALTERA_DFL=m # CONFIG_SPI_ALTERA is not set diff --git a/kernel-ppc64le-debug-rhel.config b/kernel-ppc64le-debug-rhel.config index bb71faf27..1aa95b19d 100644 --- a/kernel-ppc64le-debug-rhel.config +++ b/kernel-ppc64le-debug-rhel.config @@ -6305,6 +6305,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set CONFIG_SPI_AMD=y diff --git a/kernel-ppc64le-fedora.config b/kernel-ppc64le-fedora.config index bf44a2793..4e4240a07 100644 --- a/kernel-ppc64le-fedora.config +++ b/kernel-ppc64le-fedora.config @@ -6836,6 +6836,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPI_ALTERA_CORE=m CONFIG_SPI_ALTERA_DFL=m # CONFIG_SPI_ALTERA is not set diff --git a/kernel-ppc64le-rhel.config b/kernel-ppc64le-rhel.config index 26e68135f..aee798486 100644 --- a/kernel-ppc64le-rhel.config +++ b/kernel-ppc64le-rhel.config @@ -6282,6 +6282,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set CONFIG_SPI_AMD=y diff --git a/kernel-s390x-debug-fedora.config b/kernel-s390x-debug-fedora.config index a86983a7b..9fbf7578d 100644 --- a/kernel-s390x-debug-fedora.config +++ b/kernel-s390x-debug-fedora.config @@ -6792,6 +6792,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPI_ALTERA_CORE=m CONFIG_SPI_ALTERA_DFL=m # CONFIG_SPI_ALTERA is not set diff --git a/kernel-s390x-debug-rhel.config b/kernel-s390x-debug-rhel.config index a9f294fe8..52c77b6ab 100644 --- a/kernel-s390x-debug-rhel.config +++ b/kernel-s390x-debug-rhel.config @@ -6275,6 +6275,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set CONFIG_SPI_AMD=y diff --git a/kernel-s390x-fedora.config b/kernel-s390x-fedora.config index d0aecd30c..2886ccb97 100644 --- a/kernel-s390x-fedora.config +++ b/kernel-s390x-fedora.config @@ -6761,6 +6761,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPI_ALTERA_CORE=m CONFIG_SPI_ALTERA_DFL=m # CONFIG_SPI_ALTERA is not set diff --git a/kernel-s390x-rhel.config b/kernel-s390x-rhel.config index 29c702103..4cd76675c 100644 --- a/kernel-s390x-rhel.config +++ b/kernel-s390x-rhel.config @@ -6252,6 +6252,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set CONFIG_SPI_AMD=y diff --git a/kernel-s390x-zfcpdump-rhel.config b/kernel-s390x-zfcpdump-rhel.config index 296182473..f1283230f 100644 --- a/kernel-s390x-zfcpdump-rhel.config +++ b/kernel-s390x-zfcpdump-rhel.config @@ -6269,6 +6269,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set CONFIG_SPI_AMD=y diff --git a/kernel-x86_64-debug-fedora.config b/kernel-x86_64-debug-fedora.config index b8da51c9b..a76fc8f6a 100644 --- a/kernel-x86_64-debug-fedora.config +++ b/kernel-x86_64-debug-fedora.config @@ -7356,6 +7356,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPECULATION_MITIGATIONS=y CONFIG_SPI_ALTERA_CORE=m CONFIG_SPI_ALTERA_DFL=m diff --git a/kernel-x86_64-debug-rhel.config b/kernel-x86_64-debug-rhel.config index 94db56e64..a3e264666 100644 --- a/kernel-x86_64-debug-rhel.config +++ b/kernel-x86_64-debug-rhel.config @@ -6565,6 +6565,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPECULATION_MITIGATIONS=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set diff --git a/kernel-x86_64-fedora.config b/kernel-x86_64-fedora.config index 6346289c1..26154cd5e 100644 --- a/kernel-x86_64-fedora.config +++ b/kernel-x86_64-fedora.config @@ -7326,6 +7326,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPECULATION_MITIGATIONS=y CONFIG_SPI_ALTERA_CORE=m CONFIG_SPI_ALTERA_DFL=m diff --git a/kernel-x86_64-rhel.config b/kernel-x86_64-rhel.config index 29214138e..f74d833bd 100644 --- a/kernel-x86_64-rhel.config +++ b/kernel-x86_64-rhel.config @@ -6541,6 +6541,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPECULATION_MITIGATIONS=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set diff --git a/kernel-x86_64-rt-debug-rhel.config b/kernel-x86_64-rt-debug-rhel.config index 298185d50..20a03f3f1 100644 --- a/kernel-x86_64-rt-debug-rhel.config +++ b/kernel-x86_64-rt-debug-rhel.config @@ -6618,6 +6618,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPECULATION_MITIGATIONS=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set diff --git a/kernel-x86_64-rt-rhel.config b/kernel-x86_64-rt-rhel.config index 3384937db..5aec710ae 100644 --- a/kernel-x86_64-rt-rhel.config +++ b/kernel-x86_64-rt-rhel.config @@ -6594,6 +6594,8 @@ CONFIG_SPEAKUP_SYNTH_LTLK=m CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m +# CONFIG_SPECTRE_BHI_OFF is not set +CONFIG_SPECTRE_BHI_ON=y CONFIG_SPECULATION_MITIGATIONS=y # CONFIG_SPI_ALTERA_CORE is not set # CONFIG_SPI_ALTERA is not set diff --git a/kernel.changelog b/kernel.changelog index 5fed09eb4..1bb470f6c 100644 --- a/kernel.changelog +++ b/kernel.changelog @@ -1,3 +1,13 @@ +* Thu Apr 11 2024 Fedora Kernel Team [6.9.0-0.rc3.e8c39d0f57f3.33] +- redhat: sanity check yaml files (Jan Stancek) +- spec: rework filter-mods and mod-denylist (Jan Stancek) +- Linux v6.9.0-0.rc3.e8c39d0f57f3 +Resolves: + +* Wed Apr 10 2024 Fedora Kernel Team [6.9.0-0.rc3.2c71fdf02a95.32] +- Linux v6.9.0-0.rc3.2c71fdf02a95 +Resolves: + * Tue Apr 09 2024 Fedora Kernel Team [6.9.0-0.rc3.20cb38a7af88.31] - Linux v6.9.0-0.rc3.20cb38a7af88 Resolves: diff --git a/kernel.spec b/kernel.spec index 7e86a0549..3ceac9304 100644 --- a/kernel.spec +++ b/kernel.spec @@ -163,13 +163,13 @@ Summary: The Linux kernel %define specrpmversion 6.9.0 %define specversion 6.9.0 %define patchversion 6.9 -%define pkgrelease 0.rc3.20240409git20cb38a7af88.31 +%define pkgrelease 0.rc3.20240411gite8c39d0f57f3.33 %define kversion 6 -%define tarfile_release 6.9-rc3-11-g20cb38a7af88 +%define tarfile_release 6.9-rc3-73-ge8c39d0f57f3 # This is needed to do merge window version magic %define patchlevel 9 # This allows pkg_release to have configurable %%{?dist} tag -%define specrelease 0.rc3.20240409git20cb38a7af88.31%{?buildid}%{?dist} +%define specrelease 0.rc3.20240411gite8c39d0f57f3.33%{?buildid}%{?dist} # This defines the kabi tarball version %define kabiversion 6.9.0 @@ -660,7 +660,9 @@ BuildRequires: bzip2, xz, findutils, m4, perl-interpreter, perl-Carp, perl-devel BuildRequires: gcc, binutils, redhat-rpm-config, hmaccalc, bison, flex, gcc-c++ BuildRequires: net-tools, hostname, bc, elfutils-devel BuildRequires: dwarves +BuildRequires: python3 BuildRequires: python3-devel +BuildRequires: python3-pyyaml BuildRequires: kernel-rpm-macros # glibc-static is required for a consistent build environment (specifically # CONFIG_CC_CAN_LINK_STATIC=y). @@ -669,7 +671,7 @@ BuildRequires: glibc-static BuildRequires: rsync %endif %if %{with_doc} -BuildRequires: xmlto, asciidoc, python3-sphinx, python3-sphinx_rtd_theme, python3-pyyaml +BuildRequires: xmlto, asciidoc, python3-sphinx, python3-sphinx_rtd_theme %endif %if %{with_sparse} BuildRequires: sparse @@ -858,6 +860,7 @@ Source13: redhatsecureboot003.cer Source20: mod-denylist.sh Source21: mod-sign.sh +Source22: filtermods.py %define modsign_cmd %{SOURCE21} @@ -866,7 +869,6 @@ Source23: x509.genkey.rhel Source24: %{name}-aarch64-rhel.config Source25: %{name}-aarch64-debug-rhel.config -Source26: mod-extra.list.rhel Source27: %{name}-ppc64le-rhel.config Source28: %{name}-ppc64le-debug-rhel.config @@ -876,11 +878,7 @@ Source31: %{name}-s390x-zfcpdump-rhel.config Source32: %{name}-x86_64-rhel.config Source33: %{name}-x86_64-debug-rhel.config -Source34: filter-x86_64.sh.rhel -Source35: filter-aarch64.sh.rhel -Source36: filter-ppc64le.sh.rhel -Source37: filter-s390x.sh.rhel -Source38: filter-modules.sh.rhel +Source34: def_variants.yaml.rhel Source41: x509.genkey.centos # ARM64 64K page-size kernel config @@ -891,7 +889,6 @@ Source43: %{name}-aarch64-64k-debug-rhel.config %if 0%{?include_fedora} Source50: x509.genkey.fedora -Source51: mod-extra.list.fedora Source52: %{name}-aarch64-fedora.config Source53: %{name}-aarch64-debug-fedora.config @@ -904,11 +901,7 @@ Source59: %{name}-s390x-debug-fedora.config Source60: %{name}-x86_64-fedora.config Source61: %{name}-x86_64-debug-fedora.config -Source62: filter-x86_64.sh.fedora -Source63: filter-aarch64.sh.fedora -Source64: filter-ppc64le.sh.fedora -Source65: filter-s390x.sh.fedora -Source66: filter-modules.sh.fedora +Source62: def_variants.yaml.fedora %endif Source70: partial-kgcov-snip.config @@ -922,9 +915,6 @@ Source77: partial-clang_lto-aarch64-debug-snip.config Source80: generate_all_configs.sh Source81: process_configs.sh -Source84: mod-internal.list -Source85: mod-partner.list - Source86: dracut-virt.conf Source87: flavors @@ -948,9 +938,6 @@ Source213: Module.kabi_dup_x86_64 Source300: kernel-abi-stablelists-%{kabiversion}.tar.xz Source301: kernel-kabi-dw-%{kabiversion}.tar.xz -# RT specific virt module -Source400: mod-kvm.list - %if %{include_rt} # realtime config files Source474: %{name}-aarch64-rt-rhel.config @@ -1502,6 +1489,7 @@ The meta-package for the %{1} kernel\ Summary: KVM modules for package kernel%{?1:-%{1}}\ Group: System Environment/Kernel\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:%{1}}}\ +Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-kvm-%{_target_cpu} = %{version}-%{release}\ AutoReq: no\ @@ -2522,97 +2510,30 @@ BuildKernel() { ( find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name '*.ko' | xargs /sbin/modinfo -l | \ grep -E -v 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' ) && exit 1 - remove_depmod_files() - { - # remove files that will be auto generated by depmod at rpm -i time - pushd $RPM_BUILD_ROOT/lib/modules/$KernelVer/ - # in case below list needs to be extended, remember to add a - # matching ghost entry in the files section as well - rm -f modules.{alias,alias.bin,builtin.alias.bin,builtin.bin} \ - modules.{dep,dep.bin,devname,softdep,symbols,symbols.bin} - popd - } - %{log_msg "Remove depmod files"} - remove_depmod_files - - %{log_msg "Identify modules in kenrel-modules-* packages"} - # Identify modules in the kernel-modules-extras package - %{SOURCE20} $RPM_BUILD_ROOT lib/modules/$KernelVer $(realpath configs/mod-extra.list) - # Identify modules in the kernel-modules-internal package - %{SOURCE20} $RPM_BUILD_ROOT lib/modules/$KernelVer %{SOURCE84} internal -%if 0%{!?fedora:1} - # Identify modules in the kernel-modules-partner package - %{SOURCE20} $RPM_BUILD_ROOT lib/modules/$KernelVer %{SOURCE85} partner -%endif - if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then - # Identify modules in the kernel-rt-kvm package - %{SOURCE20} $RPM_BUILD_ROOT lib/modules/$KernelVer %{SOURCE400} kvm + if [ $DoModules -eq 0 ]; then + %{log_msg "Create empty files for RPM packaging"} + # Ensure important files/directories exist to let the packaging succeed + echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-core.list + echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules.list + echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-extra.list + echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-internal.list + echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-partner.list + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/kernel + # Add files usually created by make modules, needed to prevent errors + # thrown by depmod during package installation + touch $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.order + touch $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.builtin fi - # - # Generate the kernel-core and kernel-modules files lists - # - %{log_msg "Gemerate the kernel-core and kernel-modules files lists"} - - # Copy the System.map file for depmod to use, and create a backup of the - # full module tree so we can restore it after we're done filtering + # Copy the System.map file for depmod to use cp System.map $RPM_BUILD_ROOT/. - cp configs/filter-*.sh $RPM_BUILD_ROOT/. - pushd $RPM_BUILD_ROOT - mkdir restore - cp -r lib/modules/$KernelVer/* restore/. - - %{log_msg "Remove files in the kernel-modules-* file lists"} - # don't include anything going into kernel-modules-extra in the file lists - xargs rm -rf < mod-extra.list - # don't include anything going into kernel-modules-internal in the file lists - xargs rm -rf < mod-internal.list -%if 0%{!?fedora:1} - # don't include anything going into kernel-modules-partner in the file lists - xargs rm -rf < mod-partner.list -%endif - if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then - # don't include anything going into kernel-rt-kvm in the file lists - xargs rm -rf < mod-kvm.list - fi - - if [ $DoModules -eq 1 ]; then - %{log_msg "Filter files into core and modules lists"} - # Find all the module files and filter them out into the core and - # modules lists. This actually removes anything going into -modules - # from the dir. - find lib/modules/$KernelVer/kernel -name *.ko | sort -n > modules.list - ./filter-modules.sh modules.list %{_target_cpu} - rm filter-*.sh - - # Run depmod on the resulting module tree and make sure it isn't broken - depmod -b . -aeF ./System.map $KernelVer &> depmod.out - if [ -s depmod.out ]; then - %{log_msg "Depmod failure"} - cat depmod.out - exit 1 - else - rm depmod.out - fi - else - %{log_msg "Create empty files for RPM packaging"} - # Ensure important files/directories exist to let the packaging succeed - echo '%%defattr(-,-,-)' > modules.list - echo '%%defattr(-,-,-)' > k-d.list - mkdir -p lib/modules/$KernelVer/kernel - # Add files usually created by make modules, needed to prevent errors - # thrown by depmod during package installation - touch lib/modules/$KernelVer/modules.order - touch lib/modules/$KernelVer/modules.builtin - fi if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then %{log_msg "Skipping efiuki build"} else %if %{with_efiuki} - %{log_msg "Setup the EFI UKI kernel"} - popd + %{log_msg "Setup the EFI UKI kernel"} KernelUnifiedImageDir="$RPM_BUILD_ROOT/lib/modules/$KernelVer" KernelUnifiedImage="$KernelUnifiedImageDir/$InstallName-virt.efi" @@ -2645,57 +2566,116 @@ BuildKernel() { # signkernel %endif - pushd $RPM_BUILD_ROOT # with_efiuki %endif : # in case of empty block fi # "$Variant" == "rt" || "$Variant" == "rt-debug" - remove_depmod_files - # Go back and find all of the various directories in the tree. We use this - # for the dir lists in kernel-core - find lib/modules/$KernelVer/kernel -mindepth 1 -type d | sort -n > module-dirs.list + # + # Generate the modules files lists + # + move_kmod_list() + { + local module_list="$1" + local subdir_name="$2" + + mkdir -p "$RPM_BUILD_ROOT/lib/modules/$KernelVer/$subdirname" + + set +x + while read -r kmod; do + local target_file="$RPM_BUILD_ROOT/lib/modules/$KernelVer/$subdir_name/$kmod" + local target_dir="${target_file%/*}" + mkdir -p "$target_dir" + mv "$RPM_BUILD_ROOT/lib/modules/$KernelVer/kernel/$kmod" "$target_dir" + done < <(sed -e 's|^kernel/||' "$module_list") + set -x + } + + create_module_file_list() + { + # subdirectory within /lib/modules/$KernelVer where kmods should go + local module_subdir="$1" + # kmod list with relative paths produced by filtermods.py + local relative_kmod_list="$2" + # list with absolute paths to kmods and other files to be included + local absolute_file_list="$3" + # if 1, this adds also all kmod directories to absolute_file_list + local add_all_dirs="$4" + + if [ "$module_subdir" == "kernel" ]; then + # make kmod paths absolute + sed -e 's|^kernel/|/lib/modules/'$KernelVer'/kernel/|' %{?zipsed} $relative_kmod_list > $absolute_file_list + else + # move kmods into subdirs if needed (internal, partner, extra,..) + move_kmod_list $relative_kmod_list $module_subdir + # make kmod paths absolute + sed -e 's|^kernel/|/lib/modules/'$KernelVer'/'$module_subdir'/|' $relative_kmod_list > $absolute_file_list + # run deny-mod script, this adds blacklist-* files to absolute_file_list + %{SOURCE20} "$RPM_BUILD_ROOT" lib/modules/$KernelVer $absolute_file_list +%if %{zipmodules} + # deny-mod script works with kmods as they are now (not compressed), + # but if they will be we need to add compext to all + sed -i %{?zipsed} $absolute_file_list +%endif + # add also dir for the case when there are no kmods + echo "%dir /lib/modules/$KernelVer/$module_subdir" >> $absolute_file_list + fi + + if [ "$add_all_dirs" -eq 1 ]; then + (cd $RPM_BUILD_ROOT; find lib/modules/$KernelVer/kernel -mindepth 1 -type d | sort -n) > ../module-dirs.list + sed -e 's|^lib|%dir /lib|' ../module-dirs.list >> $absolute_file_list + fi + } + + if [ $DoModules -eq 1 ]; then + # save modules.dep for debugging + cp $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.dep ../ + + %{log_msg "Create module list files for all kernel variants"} + variants_param="" + if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then + variants_param="-r rt" + fi + # this creates ../modules-*.list output, where each kmod path is as it + # appears in modules.dep (relative to lib/modules/$KernelVer) + %{SOURCE22} sort -d $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.dep -c configs/def_variants.yaml $variants_param -o .. + if [ $? -ne 0 ]; then + echo "8< --- modules.dep ---" + cat $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.dep + echo "--- modules.dep --- >8" + exit 1 + fi + + create_module_file_list "kernel" ../modules-core.list ../kernel${Variant:+-${Variant}}-modules-core.list 1 + create_module_file_list "kernel" ../modules.list ../kernel${Variant:+-${Variant}}-modules.list 0 + create_module_file_list "internal" ../modules-internal.list ../kernel${Variant:+-${Variant}}-modules-internal.list 0 + create_module_file_list "extra" ../modules-extra.list ../kernel${Variant:+-${Variant}}-modules-extra.list 0 + if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then + create_module_file_list "kvm" ../modules-rt-kvm.list ../kernel${Variant:+-${Variant}}-modules-rt-kvm.list 0 + fi +%if 0%{!?fedora:1} + create_module_file_list "partner" ../modules-partner.list ../kernel${Variant:+-${Variant}}-modules-partner.list 1 0 +%endif + fi # $DoModules -eq 1 + + remove_depmod_files() + { + # remove files that will be auto generated by depmod at rpm -i time + pushd $RPM_BUILD_ROOT/lib/modules/$KernelVer/ + # in case below list needs to be extended, remember to add a + # matching ghost entry in the files section as well + rm -f modules.{alias,alias.bin,builtin.alias.bin,builtin.bin} \ + modules.{dep,dep.bin,devname,softdep,symbols,symbols.bin} + popd + } # Cleanup %{log_msg "Cleanup build files"} - rm System.map - # Just "cp -r" can be very slow: here, it rewrites _existing files_ - # with open(O_TRUNC). Many filesystems synchronously wait for metadata - # update for such file rewrites (seen in strace as final close syscall - # taking a long time). On a rotational disk, cp was observed to take - # more than 5 minutes on ext4 and more than 15 minutes (!) on xfs. - # With --remove-destination, we avoid this, and copying - # (with enough RAM to cache it) takes 5 seconds: - cp -r --remove-destination restore/* lib/modules/$KernelVer/. - rm -rf restore - popd - - # Make sure the files lists start with absolute paths or rpmbuild fails. - # Also add in the dir entries - %{log_msg "Create module list files for all kernel variants"} - sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/k-d.list > ../kernel${Variant:+-${Variant}}-modules.list - sed -e 's/^lib*/%dir \/lib/' %{?zipsed} $RPM_BUILD_ROOT/module-dirs.list > ../kernel${Variant:+-${Variant}}-modules-core.list - sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/modules.list >> ../kernel${Variant:+-${Variant}}-modules-core.list - sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/mod-extra.list >> ../kernel${Variant:+-${Variant}}-modules-extra.list - if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then - sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/mod-kvm.list >> ../kernel${Variant:+-${Variant}}-kvm.list - fi - - # Cleanup kernel variant module lists - %{log_msg "Clean up kernel variant module lists"} - rm -f $RPM_BUILD_ROOT/k-d.list - rm -f $RPM_BUILD_ROOT/modules.list - rm -f $RPM_BUILD_ROOT/module-dirs.list - rm -f $RPM_BUILD_ROOT/mod-extra.list - rm -f $RPM_BUILD_ROOT/mod-internal.list -%if 0%{!?fedora:1} - rm -f $RPM_BUILD_ROOT/mod-partner.list -%endif - if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then - rm -f $RPM_BUILD_ROOT/mod-kvm.list - fi + rm -f $RPM_BUILD_ROOT/System.map + %{log_msg "Remove depmod files"} + remove_depmod_files %if %{signmodules} if [ $DoModules -eq 1 ]; then @@ -3860,12 +3840,9 @@ fi\ /usr/src/kernels/%{KVERREL}%{?3:+%{3}}\ %{expand:%%files %{?3:%{3}-}devel-matched}\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-extra.list %{?3:%{3}-}modules-extra}\ -%config(noreplace) /etc/modprobe.d/*-blacklist.conf\ -%{expand:%%files %{?3:%{3}-}modules-internal}\ -/lib/modules/%{KVERREL}%{?3:+%{3}}/internal\ +%{expand:%%files -f kernel-%{?3:%{3}-}modules-internal.list %{?3:%{3}-}modules-internal}\ %if 0%{!?fedora:1}\ -%{expand:%%files %{?3:%{3}-}modules-partner}\ -/lib/modules/%{KVERREL}%{?3:+%{3}}/partner\ +%{expand:%%files -f kernel-%{?3:%{3}-}modules-partner.list %{?3:%{3}-}modules-partner}\ %endif\ %if %{with_debuginfo}\ %ifnarch noarch\ @@ -3873,8 +3850,7 @@ fi\ %endif\ %endif\ %if "%{3}" == "rt" || "%{3}" == "rt-debug"\ -%{expand:%%files %{?3:%{3}-}kvm}\ -/lib/modules/%{KVERREL}%{?3:+%{3}}/kvm\ +%{expand:%%files -f kernel-%{?3:%{3}-}modules-rt-kvm.list %{?3:%{3}-}kvm}\ %else\ %if %{with_efiuki}\ %{expand:%%files %{?3:%{3}-}uki-virt}\ @@ -3958,6 +3934,14 @@ fi\ # # %changelog +* Thu Apr 11 2024 Fedora Kernel Team [6.9.0-0.rc3.e8c39d0f57f3.33] +- redhat: sanity check yaml files (Jan Stancek) +- spec: rework filter-mods and mod-denylist (Jan Stancek) +- Linux v6.9.0-0.rc3.e8c39d0f57f3 + +* Wed Apr 10 2024 Fedora Kernel Team [6.9.0-0.rc3.2c71fdf02a95.32] +- Linux v6.9.0-0.rc3.2c71fdf02a95 + * Tue Apr 09 2024 Fedora Kernel Team [6.9.0-0.rc3.20cb38a7af88.31] - Linux v6.9.0-0.rc3.20cb38a7af88 diff --git a/mod-denylist.sh b/mod-denylist.sh index a143c15b6..e5e65a236 100755 --- a/mod-denylist.sh +++ b/mod-denylist.sh @@ -1,18 +1,16 @@ #! /bin/bash # shellcheck disable=SC2164 -RpmDir=$1 -ModDir=$2 -Dir="$1/$2" -# Note the list filename must have the format mod-[PACKAGE].list, for example, -# mod-internal.list or mod-extra.list. The PACKAGE is used to create a -# override directory for the modules. -List=$3 -Dest="$4" +rpm_buildroot="$1" +module_dir="$2" +module_list="$3" + +blacklist_conf_files="$(mktemp)" blacklist() { - cat > "$RpmDir/etc/modprobe.d/$1-blacklist.conf" <<-__EOF__ + mkdir -p "$rpm_buildroot/etc/modprobe.d/" + cat > "$rpm_buildroot/etc/modprobe.d/$1-blacklist.conf" <<-__EOF__ # This kernel module can be automatically loaded by non-root users. To # enhance system security, the module is blacklisted by default to ensure # system administrators make the module available for use as needed. @@ -21,11 +19,12 @@ blacklist() # Remove the blacklist by adding a comment # at the start of the line. blacklist $1 __EOF__ + echo "%config(noreplace) /etc/modprobe.d/$1-blacklist.conf" >> "$blacklist_conf_files" } check_blacklist() { - mod=$(find "$RpmDir/$ModDir" -name "$1") + mod="$rpm_buildroot/$1" [ ! "$mod" ] && return 0 if modinfo "$mod" | grep -q '^alias:\s\+net-'; then mod="${1##*/}" @@ -35,28 +34,6 @@ check_blacklist() fi } -find_depends() -{ - dep=$1 - depends=$(modinfo "$dep" | sed -n -e "/^depends/ s/^depends:[ \t]*//p") - [ -z "$depends" ] && exit - for mod in ${depends//,/ } - do - match=$(grep "^$mod.ko" "$ListName") - [ -z "$match" ] && continue - # check if the module we are looking at is in mod-* too. - # if so we do not need to mark the dep as required. - mod2=${dep##*/} # same as $(basename $dep), but faster - match2=$(grep "^$mod2" "$ListName") - if [ -n "$match2" ] - then - #echo $mod2 >> notreq.list - continue - fi - echo "$mod".ko >> req.list - done -} - foreachp() { P=$(nproc) @@ -74,80 +51,17 @@ foreachp() wait } -# Destination was specified on the command line -test -n "$4" && echo "$0: Override Destination $Dest has been specified." - -pushd "$Dir" - -OverrideDir=$(basename "$List") -OverrideDir=${OverrideDir%.*} -OverrideDir=${OverrideDir#*-} -mkdir -p "$OverrideDir" - -rm -rf modnames -find . -name "*.ko" -type f > modnames -# Look through all of the modules, and throw any that have a dependency in -# our list into the list as well. -rm -rf dep.list dep2.list -rm -rf req.list req2.list -touch dep.list req.list -cp "$List" . - -# This variable needs to be exported because it is used in sub-script -# executed by xargs -ListName=$(basename "$List") -export ListName - -foreachp find_depends < modnames - -sort -u req.list > req2.list -sort -u "$ListName" > modules2.list -join -v 1 modules2.list req2.list > modules3.list - -while IFS= read -r mod -do - # get the path for the module - modpath=$(grep /"$mod" modnames) - [ -z "$modpath" ] && continue - echo "$modpath" >> dep.list -done < modules3.list - -sort -u dep.list > dep2.list - -if [ -n "$Dest" ]; then - # now move the modules into the $Dest directory - while IFS= read -r mod - do - newpath=$(dirname "$mod" | sed -e "s/kernel\\//$Dest\//") - mkdir -p "$newpath" - mv "$mod" "$newpath" - echo "$mod" | sed -e "s/kernel\\//$Dest\//" | sed -e "s|^.|${ModDir}|g" >> "$RpmDir"/"$ListName" - done < dep2.list -fi - -popd - -if [ -z "$Dest" ]; then - sed -e "s|^.|${ModDir}|g" "$Dir"/dep2.list > "$RpmDir/$ListName" - echo "$RpmDir/$ListName created." - [ -d "$RpmDir/etc/modprobe.d/" ] || mkdir -p "$RpmDir/etc/modprobe.d/" - foreachp check_blacklist < "$List" -fi - # Many BIOS-es export a PNP-id which causes the floppy driver to autoload # even though most modern systems don't have a 3.5" floppy driver anymore # this replaces the old die_floppy_die.patch which removed the PNP-id from # the module -floppylist=("$RpmDir"/"$ModDir"/kernel/drivers/block/floppy.ko*) +floppylist=("$rpm_buildroot"/"$module_dir"/kernel/drivers/block/floppy.ko*) if [[ -n ${floppylist[0]} && -f ${floppylist[0]} ]]; then blacklist "floppy" fi -# avoid an empty kernel-extra package -echo "$ModDir/$OverrideDir" >> "$RpmDir/$ListName" +foreachp check_blacklist < "$module_list" -pushd "$Dir" -rm modnames dep.list dep2.list req.list req2.list -rm "$ListName" modules2.list modules3.list -popd +cat "$blacklist_conf_files" >> "$module_list" +rm -f "$blacklist_conf_files" diff --git a/mod-extra.list.fedora b/mod-extra.list.fedora deleted file mode 100644 index 327c7fea1..000000000 --- a/mod-extra.list.fedora +++ /dev/null @@ -1,200 +0,0 @@ -6pack.ko -a3d.ko -act200l-sir.ko -actisys-sir.ko -adi.ko -aer_inject.ko -af_802154.ko -affs.ko -ali-ircc.ko -analog.ko -appletalk.ko -atm.ko -avma1_cs.ko -avm_cs.ko -avmfritz.ko -ax25.ko -b1.ko -bas_gigaset.ko -batman-adv.ko -baycom_par.ko -baycom_ser_fdx.ko -baycom_ser_hdx.ko -befs.ko -bpqether.ko -br2684.ko -capi.ko -c_can.ko -c_can_platform.ko -clip.ko -cobra.ko -coda.ko -cuse.ko -db9.ko -dccp_diag.ko -dccp_ipv4.ko -dccp_ipv6.ko -dccp.ko -dccp_probe.ko -diva_idi.ko -divas.ko -dlm.ko -dln2-adc.ko -dln2.ko -ds1wm.ko -ds2482.ko -ds2490.ko -dss1_divert.ko -elsa_cs.ko -ems_pci.ko -ems_usb.ko -esd_usb2.ko -esi-sir.ko -floppy.ko -gamecon.ko -gf2k.ko -gfs2.ko -gigaset.ko -girbil-sir.ko -gpio-dln2.ko -grip.ko -grip_mp.ko -guillemot.ko -hdlcdrv.ko -hfc4s8s_l1.ko -hfcmulti.ko -hfcpci.ko -hisax.ko -hwa-rc.ko -hysdn.ko -i2400m.ko -i2400m-sdio.ko -i2400m-usb.ko -i2c-dln2.ko -ieee802154.ko -iforce.ko -interact.ko -ipddp.ko -ipx.ko -isdn.ko -joydump.ko -kingsun-sir.ko -ks959-sir.ko -ksdazzle-sir.ko -kvaser_pci.ko -l2tp_core.ko -l2tp_debugfs.ko -l2tp_eth.ko -l2tp_ip.ko -l2tp_netlink.ko -l2tp_ppp.ko -lec.ko -ma600-sir.ko -magellan.ko -mcp2120-sir.ko -mISDN_core.ko -mISDN_dsp.ko -mkiss.ko -mptbase.ko -mptctl.ko -mptfc.ko -nci.ko -ncpfs.ko -netjet.ko -netrom.ko -nfc.ko -nilfs2.ko -ocfs2_dlmfs.ko -ocfs2_dlm.ko -ocfs2.ko -ocfs2_nodemanager.ko -ocfs2_stackglue.ko -ocfs2_stack_o2cb.ko -ocfs2_stack_user.ko -old_belkin-sir.ko -orinoco_cs.ko -orinoco.ko -orinoco_nortel.ko -orinoco_pci.ko -orinoco_plx.ko -orinoco_usb.ko -pcspkr.ko -plx_pci.ko -pn_pep.ko -pppoatm.ko -rds.ko -rds_rdma.ko -rds_tcp.ko -rose.ko -sch_atm.ko -sch_cbq.ko -sch_choke.ko -sch_drr.ko -sch_dsmark.ko -sch_etf.ko -sch_gred.ko -sch_mqprio.ko -sch_multiq.ko -sch_netem.ko -sch_qfq.ko -sch_red.ko -sch_sfb.ko -sch_teql.ko -sctp.ko -sctp_probe.ko -sidewinder.ko -sja1000.ko -sja1000_platform.ko -slcan.ko -slip.ko -softing_cs.ko -softing.ko -spaceball.ko -spaceorb.ko -spi-dln2.ko -stinger.ko -sysv.ko -tcp_bic.ko -tcp_highspeed.ko -tcp_htcp.ko -tcp_hybla.ko -tcp_illinois.ko -tcp_lp.ko -tcp_scalable.ko -tcp_vegas.ko -tcp_veno.ko -tcp_westwood.ko -tcp_yeah.ko -tekram-sir.ko -tmdc.ko -toim3232-sir.ko -trancevibrator.ko -turbografx.ko -twidjoy.ko -ubifs.ko -ufs.ko -umc.ko -usbip-core.ko -usbip-host.ko -uwb.ko -vcan.ko -vhci-hcd.ko -w1_bq27000.ko -w1_ds2408.ko -w1_ds2423.ko -w1_ds2431.ko -w1_ds2433.ko -w1_ds2760.ko -w1_ds2780.ko -w1_ds2781.ko -w1_ds28e04.ko -w1_smem.ko -w1_therm.ko -w6692.ko -walkera0701.ko -wanrouter.ko -warrior.ko -whci.ko -wire.ko -yam.ko -zhenhua.ko diff --git a/mod-extra.list.rhel b/mod-extra.list.rhel deleted file mode 100644 index 27be547ba..000000000 --- a/mod-extra.list.rhel +++ /dev/null @@ -1,326 +0,0 @@ -6pack.ko -a3d.ko -act200l-sir.ko -actisys-sir.ko -adi.ko -aer_inject.ko -af_802154.ko -affs.ko -ali-ircc.ko -analog.ko -appletalk.ko -arptable_filter.ko -arp_tables.ko -arpt_mangle.ko -atm.ko -avma1_cs.ko -avm_cs.ko -avmfritz.ko -ax25.ko -b1.ko -bas_gigaset.ko -batman-adv.ko -baycom_par.ko -baycom_ser_fdx.ko -baycom_ser_hdx.ko -befs.ko -bpqether.ko -br2684.ko -br_netfilter.ko -capi.ko -c_can.ko -c_can_platform.ko -clip.ko -cobra.ko -coda.ko -cuse.ko -db9.ko -dccp_diag.ko -dccp_ipv4.ko -dccp_ipv6.ko -dccp.ko -dccp_probe.ko -diva_idi.ko -divas.ko -ds1wm.ko -ds2482.ko -ds2490.ko -dss1_divert.ko -ebt_802_3.ko -ebtable_broute.ko -ebtable_filter.ko -ebtable_nat.ko -ebtables.ko -ebt_among.ko -ebt_arp.ko -ebt_arpreply.ko -ebt_dnat.ko -ebt_ip6.ko -ebt_ip.ko -ebt_limit.ko -ebt_log.ko -ebt_mark.ko -ebt_mark_m.ko -ebt_nflog.ko -ebt_pkttype.ko -ebt_redirect.ko -ebt_snat.ko -ebt_stp.ko -ebt_vlan.ko -elsa_cs.ko -ems_pci.ko -ems_usb.ko -esd_usb2.ko -esi-sir.ko -gamecon.ko -gf2k.ko -gigaset.ko -girbil-sir.ko -grip.ko -grip_mp.ko -guillemot.ko -hdlcdrv.ko -hfc4s8s_l1.ko -hfcmulti.ko -hfcpci.ko -hisax.ko -hwa-rc.ko -hysdn.ko -i2400m.ko -i2400m-sdio.ko -i2400m-usb.ko -ieee802154.ko -iforce.ko -interact.ko -ip6table_filter.ko -ip6table_mangle.ko -ip6table_nat.ko -ip6table_raw.ko -ip6table_security.ko -ip6_tables.ko -ip6t_ah.ko -ip6t_eui64.ko -ip6t_frag.ko -ip6t_hbh.ko -ip6t_ipv6header.ko -ip6t_mh.ko -ip6t_NPT.ko -ip6t_REJECT.ko -ip6t_rpfilter.ko -ip6t_rt.ko -ipddp.ko -ip_set_bitmap_ip.ko -ip_set_bitmap_ipmac.ko -ip_set_bitmap_port.ko -ip_set_hash_ip.ko -ip_set_hash_ipmac.ko -ip_set_hash_ipmark.ko -ip_set_hash_ipportip.ko -ip_set_hash_ipport.ko -ip_set_hash_ipportnet.ko -ip_set_hash_mac.ko -ip_set_hash_netiface.ko -ip_set_hash_net.ko -ip_set_hash_netnet.ko -ip_set_hash_netport.ko -ip_set_hash_netportnet.ko -ip_set.ko -ip_set_list_set.ko -iptable_filter.ko -iptable_mangle.ko -iptable_nat.ko -iptable_raw.ko -iptable_security.ko -ip_tables.ko -ipt_ah.ko -ipt_ECN.ko -ipt_REJECT.ko -ipt_rpfilter.ko -ipx.ko -isdn.ko -joydump.ko -kingsun-sir.ko -ks959-sir.ko -ksdazzle-sir.ko -kvaser_pci.ko -l2tp_core.ko -l2tp_debugfs.ko -l2tp_eth.ko -l2tp_ip.ko -l2tp_ip6.ko -l2tp_netlink.ko -l2tp_ppp.ko -lec.ko -ma600-sir.ko -magellan.ko -mcp2120-sir.ko -mISDN_core.ko -mISDN_dsp.ko -mkiss.ko -mptbase.ko -mptctl.ko -mptfc.ko -nci.ko -ncpfs.ko -netjet.ko -netrom.ko -nfc.ko -nft_compat.ko -nilfs2.ko -ocfs2_dlmfs.ko -ocfs2_dlm.ko -ocfs2.ko -ocfs2_nodemanager.ko -ocfs2_stackglue.ko -ocfs2_stack_o2cb.ko -ocfs2_stack_user.ko -old_belkin-sir.ko -orinoco_cs.ko -orinoco.ko -orinoco_nortel.ko -orinoco_pci.ko -orinoco_plx.ko -orinoco_usb.ko -plx_pci.ko -pn_pep.ko -pppoatm.ko -rds.ko -rds_rdma.ko -rds_tcp.ko -rose.ko -sch_atm.ko -sch_cbq.ko -sch_choke.ko -sch_drr.ko -sch_dsmark.ko -sch_gred.ko -sch_mqprio.ko -sch_multiq.ko -sch_netem.ko -sch_qfq.ko -sch_red.ko -sch_sfb.ko -sch_teql.ko -sctp.ko -sctp_diag.ko -sctp_probe.ko -sidewinder.ko -sja1000.ko -sja1000_platform.ko -slcan.ko -slip.ko -softing_cs.ko -softing.ko -spaceball.ko -spaceorb.ko -stinger.ko -sysv.ko -tcp_bic.ko -tcp_highspeed.ko -tcp_htcp.ko -tcp_hybla.ko -tcp_illinois.ko -tcp_lp.ko -tcp_scalable.ko -tcp_vegas.ko -tcp_veno.ko -tcp_westwood.ko -tcp_yeah.ko -tekram-sir.ko -tmdc.ko -toim3232-sir.ko -trancevibrator.ko -turbografx.ko -twidjoy.ko -ubifs.ko -ufs.ko -umc.ko -usbip-core.ko -usbip-host.ko -uwb.ko -vcan.ko -vhci-hcd.ko -w1_bq27000.ko -w1_ds2408.ko -w1_ds2423.ko -w1_ds2431.ko -w1_ds2433.ko -w1_ds2760.ko -w1_ds2780.ko -w1_ds2781.ko -w1_ds28e04.ko -w1_smem.ko -w1_therm.ko -w6692.ko -walkera0701.ko -wanrouter.ko -warrior.ko -whci.ko -wire.ko -xt_addrtype.ko -xt_AUDIT.ko -xt_bpf.ko -xt_cgroup.ko -xt_CHECKSUM.ko -xt_CLASSIFY.ko -xt_cluster.ko -xt_comment.ko -xt_connbytes.ko -xt_connlabel.ko -xt_connlimit.ko -xt_connmark.ko -xt_CONNSECMARK.ko -xt_conntrack.ko -xt_cpu.ko -xt_CT.ko -xt_dccp.ko -xt_devgroup.ko -xt_dscp.ko -xt_DSCP.ko -xt_ecn.ko -xt_esp.ko -xt_hashlimit.ko -xt_helper.ko -xt_hl.ko -xt_HL.ko -xt_HMARK.ko -xt_IDLETIMER.ko -xt_iprange.ko -xt_ipvs.ko -xt_length.ko -xt_limit.ko -xt_LOG.ko -xt_mac.ko -xt_mark.ko -xt_MASQUERADE.ko -xt_multiport.ko -xt_nat.ko -xt_NETMAP.ko -xt_NFLOG.ko -xt_NFQUEUE.ko -xt_osf.ko -xt_owner.ko -xt_physdev.ko -xt_pkttype.ko -xt_policy.ko -xt_quota.ko -xt_rateest.ko -xt_RATEEST.ko -xt_realm.ko -xt_recent.ko -xt_REDIRECT.ko -xt_sctp.ko -xt_SECMARK.ko -xt_set.ko -xt_socket.ko -xt_state.ko -xt_statistic.ko -xt_string.ko -xt_tcpmss.ko -xt_TCPMSS.ko -xt_TCPOPTSTRIP.ko -xt_TEE.ko -xt_TPROXY.ko -xt_TRACE.ko -yam.ko -zhenhua.ko diff --git a/mod-internal.list b/mod-internal.list deleted file mode 100644 index aaa4d1dcf..000000000 --- a/mod-internal.list +++ /dev/null @@ -1,105 +0,0 @@ -bitfield_kunit -checksum_kunit -cfg80211-tests -clk-fractional-divider_test -clk-gate_test -clk_test -cmdline_kunit -cpumask_kunit -cros_kunit -dev_addr_lists_test -dmatest -drm_buddy_test -drm_cmdline_parser_test -drm_connector_test -drm_damage_helper_test -drm_dp_mst_helper_test -drm_exec_test -drm_format_helper_test -drm_format_test -drm_framebuffer_test -drm_gem_shmem_test -drm_kunit_helpers -drm_managed_test -drm_mm_test -drm_modes_test -drm_plane_helper_test -drm_probe_helper_test -drm_rect_test -ext4-inode-test -fat_test -fortify_kunit -gso_test -gss_krb5_test -handshake-test -hashtable_test -hid-uclogic-test -iio-test-format -iio-test-gts -iio-test-rescale -input_test -is_signed_type_kunit -iwlwifi-tests -kasan_test -kfence_test -kunit -kunit-test -lib_test -list-test -locktorture -mac80211_hwsim -mac80211-tests -mean_and_variance_test -memcpy_kunit -mptcp_crypto_test -mptcp_token_test -mtty -netdevsim -of_test -overflow_kunit -pktgen -property-entry-test -rational-test -rcuscale -rcutorture -refscale -regmap-kunit -resource_kunit -rocker -scftorture -siphash_kunit -slub_kunit -snd-hda-cirrus-scodec-test -snd-soc-cs-amp-lib-test -soc-topology-test -soc-utils-test -sound_kunit -stackinit_kunit -strcat_kunit -string_kunit -string_helpers_kunit -strscpy_kunit -sysctl-test -test_bits -test_bpf -test_hash -test_hmm -test_kasan -test_klp_atomic_replace -test_klp_callbacks_busy -test_klp_callbacks_demo -test_klp_callbacks_demo2 -test_klp_callbacks_mod -test_klp_livepatch -test_klp_shadow_vars -test_klp_state -test_klp_state2 -test_klp_state3 -test_kprobes -test_linear_ranges -test_list_sort -test_sort -test_vmalloc -time_test -torture -wwan_hwsim diff --git a/mod-kvm.list b/mod-kvm.list deleted file mode 100644 index 38f5c49de..000000000 --- a/mod-kvm.list +++ /dev/null @@ -1,5 +0,0 @@ -kvm-amd -kvm-intel -kvm -kvmgt -ptp_kvm diff --git a/mod-partner.list b/mod-partner.list deleted file mode 100644 index 9cd36e549..000000000 --- a/mod-partner.list +++ /dev/null @@ -1,2 +0,0 @@ -afs -rxrpc diff --git a/patch-6.9-redhat.patch b/patch-6.9-redhat.patch index f89f44a19..2932bb51e 100644 --- a/patch-6.9-redhat.patch +++ b/patch-6.9-redhat.patch @@ -74,10 +74,10 @@ 73 files changed, 2147 insertions(+), 207 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index 623fce7d5fcd..c412bbaf26bc 100644 +index 70046a019d42..e672fd963195 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -6880,6 +6880,15 @@ +@@ -6892,6 +6892,15 @@ unknown_nmi_panic [X86] Cause panic on unknown NMI. @@ -250,10 +250,10 @@ index 24ed33f044ec..5dd65c88310d 100644 /* boot_command_line has been already set up in early.c */ *cmdline_p = boot_command_line; diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c -index 5c1e6d6be267..aa9819032064 100644 +index 754d91857d63..6462ea617d57 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c -@@ -1582,6 +1582,7 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) +@@ -1590,6 +1590,7 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) cpu_detect(c); get_cpu_vendor(c); get_cpu_cap(c); @@ -3072,10 +3072,10 @@ index 41a8f667bdfa..e2aebf520337 100644 u32 *uctx_len, void *val, size_t val_len, u64 id, u64 flags) diff --git a/init/main.c b/init/main.c -index 2ca52474d0c3..54db73dab243 100644 +index 881f6230ee59..ba8a684d3158 100644 --- a/init/main.c +++ b/init/main.c -@@ -1153,6 +1153,9 @@ static bool __init_or_module initcall_blacklisted(initcall_t fn) +@@ -1158,6 +1158,9 @@ static bool __init_or_module initcall_blacklisted(initcall_t fn) */ strreplace(fn_name, ' ', '\0'); diff --git a/sources b/sources index 24bb6d5cb..4289a83fa 100644 --- a/sources +++ b/sources @@ -1,5 +1,5 @@ SHA512 (kernel-abi-stablelists-6.6.0.tar.bz2) = 4f917598056dee5e23814621ec96ff2e4a411c8c4ba9d56ecb01b23cb96431825bedbecfcbaac9338efbf5cb21694d85497fa0bf43e7c80d9cd10bc6dd144dbd SHA512 (kernel-kabi-dw-6.6.0.tar.bz2) = 19308cd976031d05e18ef7f5d093218acdb89446418bab0cd956ff12cf66369915b9e64bb66fa9f20939428a60e81884fec5be3529c6c7461738d6540d3cc5c6 -SHA512 (linux-6.9-rc3-11-g20cb38a7af88.tar.xz) = 68f3474b0de5ffb9b89b0ecce1fff2191e6e1061e4cf23d5b759afa4ed5eb86d1715b4310a2f7699117397e6e0d4d2a11fae7de5bc46f0614edb15a37982579d -SHA512 (kernel-abi-stablelists-6.9.0.tar.xz) = 904addb04f1508066b6b83f1a15da47f563060e3ae610dba27cea6892ecaf4079931511eaed55d50aad3bfa85b8b99069b4f5b39a2f8bdaf5fd815599e945d96 -SHA512 (kernel-kabi-dw-6.9.0.tar.xz) = 6fd50fc8bcebdaa69fad1609d91aa4edc8d53650837af84a4c7281254ef43de763ef2dfaf2e0a7d6cf4d2585641db6ddbc696203c68f0612ba43ee2b9b4a4a70 +SHA512 (linux-6.9-rc3-73-ge8c39d0f57f3.tar.xz) = 5321aef616c78b891209d73c035f9e381d7938b000ccb5dd87c9bbbca8be843fcb61736e3936d2c95e8aaf0a5134a587ae3601a671bc13c98bb82fe5ee60b7b3 +SHA512 (kernel-abi-stablelists-6.9.0.tar.xz) = bd55f3c79171d10900344327e7d5ce8d970e5fdbcd8307d6ebe2312b8aa3bd9c745d86f68dcef2b09084c31c714000dd0b36b91a37f31622151582194d9f35e4 +SHA512 (kernel-kabi-dw-6.9.0.tar.xz) = a04f8fd80138228ef1c84caa2a942c177e41dbd9c404caa3f2efac5c3b1bb882b94186dc13eb56f6426a2e02e9d0deb15f7b3f741b716199487aad0c68f05457