summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bsp/denverton/denverton.cfg26
-rw-r--r--bsp/denverton/denverton.scc1
-rw-r--r--cfg/net/ip_nf_y.cfg6
-rw-r--r--cfg/net/ip_nf_y.scc4
-rw-r--r--features/6lowpan/6lowpan_n.cfg1
-rw-r--r--features/6lowpan/6lowpan_n.scc5
-rw-r--r--features/accelerometers/accelerometers_n.cfg30
-rw-r--r--features/accelerometers/accelerometers_n.scc4
-rw-r--r--features/acp/acp_n.cfg21
-rw-r--r--features/acp/acp_n.scc4
-rw-r--r--features/acpi/acpi_n.cfg4
-rw-r--r--features/acpi/acpi_n.scc4
-rw-r--r--features/agp/agp_n.cfg6
-rw-r--r--features/agp/agp_n.scc4
-rw-r--r--features/ata/ata_n.cfg59
-rw-r--r--features/ata/ata_n.scc4
-rw-r--r--features/backlight/backlight_n.cfg30
-rw-r--r--features/backlight/backlight_n.scc4
-rw-r--r--features/bcma/bcma_n.cfg9
-rw-r--r--features/bcma/bcma_n.scc4
-rw-r--r--features/blkdev/net_blk_dev.cfg1
-rw-r--r--features/blkdev/net_blk_dev.scc4
-rw-r--r--features/bluetooth/bluetooth_n.cfg28
-rw-r--r--features/bluetooth/bluetooth_n.scc4
-rw-r--r--features/btrfs/btrfs_m.cfg1
-rw-r--r--features/btrfs/btrfs_m.scc5
-rw-r--r--features/btrfs/btrfs_n.cfg8
-rw-r--r--features/btrfs/btrfs_n.scc4
-rw-r--r--features/bug_support/bug_support_n.cfg3
-rw-r--r--features/bug_support/bug_support_n.scc4
-rw-r--r--features/bus/pci_cnb20le_n.cfg1
-rw-r--r--features/bus/pci_cnb20le_n.scc5
-rw-r--r--features/cdrom/cdrom_m.cfg4
-rw-r--r--features/cdrom/cdrom_m.scc4
-rw-r--r--features/cdrom/cdrom_n.cfg1
-rw-r--r--features/cdrom/cdrom_n.scc4
-rw-r--r--features/cdrom/isofs_m.cfg5
-rw-r--r--features/cdrom/isofs_m.scc5
-rw-r--r--features/cdrom_fs/cdrom_fs_n.cfg2
-rw-r--r--features/cdrom_fs/cdrom_fs_n.scc4
-rw-r--r--features/cgroupdbg/cgroupdbg_n.cfg1
-rw-r--r--features/cgroupdbg/cgroupdbg_n.scc4
-rw-r--r--features/cgroups/cpusets.cfg4
-rw-r--r--features/cgroups/cpusets.scc4
-rw-r--r--features/compilechecks/compilechecks_n.cfg6
-rw-r--r--features/compilechecks/compilechecks_n.scc4
-rw-r--r--features/cpu_freq/cpu_freq_n.cfg1
-rw-r--r--features/cpu_freq/cpu_freq_n.scc5
-rw-r--r--features/dca/dca_y.cfg5
-rw-r--r--features/dca/dca_y.scc6
-rw-r--r--features/debug/debug_kernel_n.cfg7
-rw-r--r--features/debug/debug_kernel_n.scc4
-rw-r--r--features/debug/debug_kernel_y.cfg8
-rw-r--r--features/debug/debug_kernel_y.scc4
-rw-r--r--features/devcoredump/devcoredump_n.cfg2
-rw-r--r--features/devcoredump/devcoredump_n.scc4
-rw-r--r--features/devcoredump/devcoredump_y.cfg2
-rw-r--r--features/devcoredump/devcoredump_y.scc2
-rw-r--r--features/display/display_n.cfg4
-rw-r--r--features/display/display_n.scc4
-rw-r--r--features/dmiid/dmiid_n.cfg1
-rw-r--r--features/dmiid/dmiid_n.scc5
-rw-r--r--features/drm/drm_n.cfg9
-rw-r--r--features/drm/drm_n.scc4
-rw-r--r--features/elf_core_support/elf_core_support_n.cfg1
-rw-r--r--features/elf_core_support/elf_core_support_n.scc4
-rw-r--r--features/firewire/firewire_m.cfg4
-rw-r--r--features/firewire/firewire_m.scc4
-rw-r--r--features/framebuffer/framebuffer_n.cfg64
-rw-r--r--features/framebuffer/framebuffer_n.scc4
-rw-r--r--features/ftrace/ftrace_n.cfg29
-rw-r--r--features/ftrace/ftrace_n.scc4
-rw-r--r--features/ftrace/ftrace_y.cfg12
-rw-r--r--features/ftrace/ftrace_y.scc4
-rw-r--r--features/hdmi/hdmi_n.cfg1
-rw-r--r--features/hdmi/hdmi_n.scc4
-rw-r--r--features/hid/hid_n.cfg89
-rw-r--r--features/hid/hid_n.scc4
-rw-r--r--features/hid/keyboard_m.cfg161
-rw-r--r--features/hid/keyboard_m.scc4
-rw-r--r--features/hidsensor/hidsensor_n.cfg5
-rw-r--r--features/hidsensor/hidsensor_n.scc4
-rw-r--r--features/hsi/hsi_m.cfg20
-rw-r--r--features/hsi/hsi_m.scc4
-rw-r--r--features/hugetlb/thp_n.cfg1
-rw-r--r--features/hugetlb/thp_n.scc4
-rw-r--r--features/hugetlb/thp_y.cfg1
-rw-r--r--features/hugetlb/thp_y.scc4
-rw-r--r--features/hwmon/hwmon_n.cfg1
-rw-r--r--features/hwmon/hwmon_n.scc5
-rw-r--r--features/i2csupport/i2csupport_n.cfg80
-rw-r--r--features/i2csupport/i2csupport_n.scc4
-rw-r--r--features/ide/ide_m.cfg41
-rw-r--r--features/ide/ide_m.scc4
-rw-r--r--features/ieee802154/ieee802154_n.cfg6
-rw-r--r--features/ieee802154/ieee802154_n.scc4
-rw-r--r--features/inclinometer/inclinometer_n.cfg1
-rw-r--r--features/inclinometer/inclinometer_n.scc4
-rw-r--r--features/input/input_n.cfg3
-rw-r--r--features/input/input_n.scc5
-rw-r--r--features/intel-e1xxxx/e100_m.cfg1
-rw-r--r--features/intel-e1xxxx/e100_m.scc5
-rw-r--r--features/intel-e1xxxx/e100_n.cfg1
-rw-r--r--features/intel-e1xxxx/e100_n.scc5
-rw-r--r--features/intel-e1xxxx/e1xxxx_m.cfg3
-rw-r--r--features/intel-e1xxxx/e1xxxx_m.scc5
-rw-r--r--features/intel-e1xxxx/e1xxxx_n.cfg3
-rw-r--r--features/intel-e1xxxx/e1xxxx_n.scc5
-rw-r--r--features/isdn/isdn_n.cfg4
-rw-r--r--features/isdn/isdn_n.scc4
-rw-r--r--features/isofs/isofs.cfg10
-rw-r--r--features/isofs/isofs.scc4
-rw-r--r--features/ixgbe/ixgbe_m.cfg4
-rw-r--r--features/ixgbe/ixgbe_m.scc4
-rw-r--r--features/ixgbe/ixgbe_y.cfg5
-rw-r--r--features/ixgbe/ixgbe_y.scc4
-rw-r--r--features/ixgbevf/ixgbevf_y.cfg1
-rw-r--r--features/ixgbevf/ixgbevf_y.scc4
-rw-r--r--features/kernel_xz_compression/kernel_xz_compression_y.cfg1
-rw-r--r--features/kernel_xz_compression/kernel_xz_compression_y.scc4
-rw-r--r--features/keyboard/keyboard_n.cfg25
-rw-r--r--features/keyboard/keyboard_n.scc4
-rw-r--r--features/kgdb/kgdb_n.cfg1
-rw-r--r--features/kgdb/kgdb_n.scc4
-rw-r--r--features/kgdb/kgdb_y.cfg9
-rw-r--r--features/kgdb/kgdb_y.scc4
-rw-r--r--features/kprobes/kprobes_n.cfg2
-rw-r--r--features/kprobes/kprobes_n.scc4
-rw-r--r--features/ksm/ksm_n.cfg1
-rw-r--r--features/ksm/ksm_n.scc4
-rw-r--r--features/ksm/ksm_y.cfg1
-rw-r--r--features/ksm/ksm_y.scc4
-rw-r--r--features/kvm/guest_kvm_y.cfg12
-rw-r--r--features/kvm/guest_kvm_y.scc4
-rw-r--r--features/kvm/guest_n.cfg4
-rw-r--r--features/kvm/guest_n.scc5
-rw-r--r--features/kvm/host_n.cfg2
-rw-r--r--features/kvm/host_n.scc5
-rw-r--r--features/kvm/qemu-kvm_m.cfg30
-rw-r--r--features/kvm/qemu-kvm_m.scc4
-rw-r--r--features/kvm/virtFS_y.cfg4
-rw-r--r--features/kvm/virtFS_y.scc4
-rw-r--r--features/kvm/virtio_balloon_y.cfg2
-rw-r--r--features/kvm/virtio_balloon_y.scc4
-rw-r--r--features/kvm/virtio_caif_y.cfg5
-rw-r--r--features/kvm/virtio_caif_y.scc4
-rw-r--r--features/kvm/virtio_input_y.cfg2
-rw-r--r--features/kvm/virtio_input_y.scc4
-rw-r--r--features/kvm/virtio_pci_legacy_y.cfg3
-rw-r--r--features/kvm/virtio_pci_legacy_y.scc4
-rw-r--r--features/kvm/virtio_y.cfg28
-rw-r--r--features/kvm/virtio_y.scc4
-rw-r--r--features/latencytop/latencytop_y.cfg4
-rw-r--r--features/latencytop/latencytop_y.scc4
-rw-r--r--features/loopdev/loopdev_n.cfg2
-rw-r--r--features/loopdev/loopdev_n.scc4
-rw-r--r--features/lowlatency/hz_1000.cfg4
-rw-r--r--features/lowlatency/lowlatency_y.scc5
-rw-r--r--features/lowlatency/preempt.cfg5
-rw-r--r--features/lttng/lttng_y.cfg20
-rw-r--r--features/lttng/lttng_y.scc4
-rw-r--r--features/lxc/lxc_y.cfg42
-rw-r--r--features/lxc/lxc_y.scc4
-rw-r--r--features/mdio/mdio_m.cfg1
-rw-r--r--features/mdio/mdio_m.scc5
-rw-r--r--features/media/media_n.cfg592
-rw-r--r--features/media/media_n.scc4
-rw-r--r--features/memorydbg/memorydbg_n.cfg8
-rw-r--r--features/memorydbg/memorydbg_n.scc4
-rw-r--r--features/memorydbg/memorydbg_y.cfg9
-rw-r--r--features/memorydbg/memorydbg_y.scc4
-rw-r--r--features/mii/mii_m.cfg1
-rw-r--r--features/mii/mii_m.scc5
-rw-r--r--features/misc/misc_n.cfg1
-rw-r--r--features/misc/misc_n.scc4
-rw-r--r--features/mmc/mmc_n.cfg29
-rw-r--r--features/mmc/mmc_n.scc4
-rw-r--r--features/mmc/mmc_sd_m.cfg136
-rw-r--r--features/mmc/mmc_sd_m.scc4
-rw-r--r--features/mmc/mmc_sd_y.cfg136
-rw-r--r--features/mmc/mmc_sd_y.scc4
-rw-r--r--features/mouse/mouse_n.cfg22
-rw-r--r--features/mouse/mouse_n.scc4
-rw-r--r--features/mousedev/mousedev_n.cfg2
-rw-r--r--features/mousedev/mousedev_n.scc4
-rw-r--r--features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.cfg12
-rw-r--r--features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.scc4
-rw-r--r--features/mtd/mtd_y.cfg120
-rw-r--r--features/mtd/mtd_y.scc4
-rw-r--r--features/net/ipv6/sit/sit_n.cfg2
-rw-r--r--features/net/ipv6/sit/sit_n.scc4
-rw-r--r--features/netblkdev/netblkdev_n.cfg1
-rw-r--r--features/netblkdev/netblkdev_n.scc4
-rw-r--r--features/netconsole/netconsole_n.cfg3
-rw-r--r--features/netconsole/netconsole_n.scc4
-rw-r--r--features/netdevices/netdevices_n.cfg147
-rw-r--r--features/netdevices/netdevices_n.scc4
-rw-r--r--features/netfilter/ct_m.cfg11
-rw-r--r--features/netfilter/ct_m.scc4
-rw-r--r--features/netfilter/ip_vs_m.cfg4
-rw-r--r--features/netfilter/ip_vs_m.scc4
-rw-r--r--features/netfilter/ipset_m.cfg9
-rw-r--r--features/netfilter/ipset_m.scc4
-rw-r--r--features/netfilter/netfilter_n.cfg222
-rw-r--r--features/netfilter/netfilter_n.scc4
-rw-r--r--features/netfilter/netfilter_y.cfg10
-rw-r--r--features/netfilter/netfilter_y.scc4
-rw-r--r--features/netfilter/physdev_m.cfg8
-rw-r--r--features/netfilter/physdev_m.scc4
-rw-r--r--features/netfilter/raw_m.cfg3
-rw-r--r--features/netfilter/raw_m.scc4
-rw-r--r--features/nfc/nfc_n.cfg40
-rw-r--r--features/nfc/nfc_n.scc4
-rw-r--r--features/nfs/nfs_n.cfg44
-rw-r--r--features/nfs/nfs_n.scc4
-rw-r--r--features/numa/numa_x86_y.cfg6
-rw-r--r--features/numa/numa_x86_y.scc4
-rw-r--r--features/nvme/nvme.cfg30
-rw-r--r--features/nvme/nvme.scc4
-rw-r--r--features/openvswitch/ingress_policy.cfg3
-rw-r--r--features/openvswitch/kernel_ovs.scc5
-rw-r--r--features/openvswitch/openvswitch.cfg1
-rw-r--r--features/openvswitch/openvswitch_support.scc5
-rw-r--r--features/openvswitch/tun.cfg1
-rw-r--r--features/oprofile/oprofile_y.cfg4
-rw-r--r--features/oprofile/oprofile_y.scc4
-rw-r--r--features/overlayfs/overlayfs_m.cfg1
-rw-r--r--features/overlayfs/overlayfs_m.scc5
-rw-r--r--features/parport/parport_n.cfg8
-rw-r--r--features/parport/parport_n.scc4
-rw-r--r--features/pci/pci_iov_m.cfg1
-rw-r--r--features/pci/pci_iov_m.scc4
-rw-r--r--features/pci/pci_iov_y.cfg1
-rw-r--r--features/pci/pci_iov_y.scc4
-rw-r--r--features/pcimodules/pcimodules_n.cfg19
-rw-r--r--features/pcimodules/pcimodules_n.scc4
-rw-r--r--features/pcspkr/pcspkr_n.cfg1
-rw-r--r--features/pcspkr/pcspkr_n.scc4
-rw-r--r--features/perf/perf_n.cfg2
-rw-r--r--features/perf/perf_n.scc4
-rw-r--r--features/perf/perf_y.cfg2
-rw-r--r--features/perf/perf_y.scc4
-rw-r--r--features/power_supply/power_supply_n.cfg1
-rw-r--r--features/power_supply/power_supply_n.scc5
-rw-r--r--features/powermanagement/powermanagement_n.cfg15
-rw-r--r--features/powermanagement/powermanagement_n.scc4
-rw-r--r--features/ppp/ppp_n.cfg10
-rw-r--r--features/ppp/ppp_n.scc4
-rw-r--r--features/printk/printk_n.cfg3
-rw-r--r--features/printk/printk_n.scc4
-rw-r--r--features/printk/printk_y.cfg4
-rw-r--r--features/printk/printk_y.scc4
-rw-r--r--features/prockcore/prockcore_n.cfg1
-rw-r--r--features/prockcore/prockcore_n.scc4
-rw-r--r--features/rcu/rcu_nocb_y.cfg3
-rw-r--r--features/rcu/rcu_nocb_y.scc4
-rw-r--r--features/rcudbg/rcudbg_n.cfg4
-rw-r--r--features/rcudbg/rcudbg_n.scc4
-rw-r--r--features/rcudbg/rcudbg_y.cfg4
-rw-r--r--features/rcudbg/rcudbg_y.scc4
-rw-r--r--features/reduced_kernel_footprint/reduced_kernel_footprint.scc66
-rw-r--r--features/reduced_kernel_footprint_guest/reduced_kernel_footprint_guest.scc75
-rw-r--r--features/rfkill/rfkill_n.cfg3
-rw-r--r--features/rfkill/rfkill_n.scc4
-rw-r--r--features/runtimetest/runtimetest_n.cfg5
-rw-r--r--features/runtimetest/runtimetest_n.scc4
-rw-r--r--features/scsi/scsi_m.cfg5
-rw-r--r--features/scsi/scsi_m.scc5
-rw-r--r--features/scsi/scsi_y.cfg2
-rw-r--r--features/scsi/scsi_y.scc5
-rw-r--r--features/serio/serio_n.cfg15
-rw-r--r--features/serio/serio_n.scc4
-rw-r--r--features/slip/slip_n.cfg5
-rw-r--r--features/slip/slip_n.scc4
-rw-r--r--features/sound/sound_n.cfg291
-rw-r--r--features/sound/sound_n.scc4
-rw-r--r--features/staging/staging_n.cfg1
-rw-r--r--features/staging/staging_n.scc4
-rw-r--r--features/std_kernel/std_kernel_y.cfg1
-rw-r--r--features/std_kernel/std_kernel_y.scc4
-rw-r--r--features/systemtap/systemtap_y.cfg5
-rw-r--r--features/systemtap/systemtap_y.scc4
-rw-r--r--features/tablet/tablet_n.cfg1
-rw-r--r--features/tablet/tablet_n.scc4
-rw-r--r--features/thermal/thermal_n.cfg4
-rw-r--r--features/thermal/thermal_n.scc5
-rw-r--r--features/touchscreen/touchscreen_n.cfg22
-rw-r--r--features/touchscreen/touchscreen_n.scc4
-rw-r--r--features/tracing/tracing_n.cfg7
-rw-r--r--features/tracing/tracing_n.scc4
-rw-r--r--features/tracing/tracing_y.cfg7
-rw-r--r--features/tracing/tracing_y.scc4
-rw-r--r--features/udev/udev.cfg28
-rw-r--r--features/udev/udev.scc7
-rw-r--r--features/udev/udev_crypto.cfg3
-rw-r--r--features/udev/udev_crypto.scc4
-rw-r--r--features/udev/udev_n.cfg1
-rw-r--r--features/udev/udev_n.scc5
-rw-r--r--features/udev/udev_opt.cfg10
-rw-r--r--features/udev/udev_opt.scc4
-rw-r--r--features/udev/udev_uefi.cfg2
-rw-r--r--features/udev/udev_uefi.scc4
-rw-r--r--features/uio/uio_pci_m.cfg1
-rw-r--r--features/uio/uio_pci_m.scc4
-rw-r--r--features/usb/ohci_m.cfg4
-rw-r--r--features/usb/ohci_m.scc5
-rw-r--r--features/usb/usb_storage_m.cfg1
-rw-r--r--features/usb/usb_storage_m.scc5
-rw-r--r--features/usbGadget/usbgadget_m.cfg154
-rw-r--r--features/usbGadget/usbgadget_m.scc4
-rw-r--r--features/usbGadget/usbgadget_n.cfg6
-rw-r--r--features/usbGadget/usbgadget_n.scc4
-rw-r--r--features/usbnet/usb_phy_m.cfg4
-rw-r--r--features/usbnet/usb_phy_m.scc4
-rw-r--r--features/usbnet/usbnet_m.cfg88
-rw-r--r--features/usbnet/usbnet_m.scc4
-rw-r--r--features/usbnet/usbnet_n.cfg43
-rw-r--r--features/usbnet/usbnet_n.scc4
-rw-r--r--features/usbsupport/usbsupport_m.cfg270
-rw-r--r--features/usbsupport/usbsupport_m.scc4
-rw-r--r--features/usbsupport/usbsupport_n.cfg270
-rw-r--r--features/usbsupport/usbsupport_n.scc4
-rw-r--r--features/vfio/vfio.cfg20
-rw-r--r--features/vfio/vfio.scc4
-rw-r--r--features/vga/vga_n.cfg1
-rw-r--r--features/vga/vga_n.scc5
-rw-r--r--features/vga/vga_y.cfg76
-rw-r--r--features/vga/vga_y.scc4
-rw-r--r--features/vhost/vhost_m.cfg7
-rw-r--r--features/vhost/vhost_m.scc5
-rw-r--r--features/vxlan/vxlan_y.cfg1
-rw-r--r--features/vxlan/vxlan_y.scc4
-rw-r--r--features/watchdog/watchdog_n.cfg1
-rw-r--r--features/watchdog/watchdog_n.scc5
-rw-r--r--features/wireless/wireless_n.cfg12
-rw-r--r--features/wireless/wireless_n.scc4
-rw-r--r--features/wlan/wlan_n.cfg65
-rw-r--r--features/wlan/wlan_n.scc4
-rw-r--r--features/x86_platform/x86_platform_n.cfg1
-rw-r--r--features/x86_platform/x86_platform_n.scc5
-rw-r--r--features/xor_blocks/xor_blocks_m.cfg1
-rw-r--r--features/xor_blocks/xor_blocks_m.scc5
-rw-r--r--patches/boot_time_opt/0011-drm-i915-fbc-sanitize-fbc-GEN-greater-than-9.patch25
-rw-r--r--patches/boot_time_opt/0101-kvm-silence-kvm-unhandled-rdmsr.patch29
-rw-r--r--patches/boot_time_opt/0102-i8042-decrease-debug-message-level-to-info.patch65
-rw-r--r--patches/boot_time_opt/0103-init-do_mounts-recreate-dev-root.patch42
-rw-r--r--patches/boot_time_opt/0104-Increase-the-ext4-default-commit-age.patch35
-rw-r--r--patches/boot_time_opt/0105-silence-rapl.patch25
-rw-r--r--patches/boot_time_opt/0106-pci-pme-wakeups.patch27
-rw-r--r--patches/boot_time_opt/0107-ksm-wakeups.patch34
-rw-r--r--patches/boot_time_opt/0108-intel_idle-tweak-cpuidle-cstates.patch227
-rw-r--r--patches/boot_time_opt/0109-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch56
-rw-r--r--patches/boot_time_opt/0110-init_task-faster-timerslack.patch32
-rw-r--r--patches/boot_time_opt/0112-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch158
-rw-r--r--patches/boot_time_opt/0113-overload-on-wakeup.patch43
-rw-r--r--patches/boot_time_opt/0114-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch83
-rw-r--r--patches/boot_time_opt/0115-fix-initcall-timestamps.patch42
-rw-r--r--patches/boot_time_opt/0116-smpboot-reuse-timer-calibration.patch31
-rw-r--r--patches/boot_time_opt/0117-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch156
-rw-r--r--patches/boot_time_opt/0118-Initialize-ata-before-graphics.patch47
-rw-r--r--patches/boot_time_opt/0119-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch311
-rw-r--r--patches/boot_time_opt/0120-give-rdrand-some-credit.patch30
-rw-r--r--patches/boot_time_opt/0121-e1000e-change-default-policy.patch27
-rw-r--r--patches/boot_time_opt/0122-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch28
-rw-r--r--patches/boot_time_opt/0123-igb-no-runtime-pm-to-fix-reboot-oops.patch27
-rw-r--r--patches/boot_time_opt/0124-tweak-perfbias.patch32
-rw-r--r--patches/boot_time_opt/0125-e1000e-increase-pause-and-refresh-time.patch33
-rw-r--r--patches/boot_time_opt/0151-mm-Export-do_madvise.patch84
-rw-r--r--patches/boot_time_opt/0152-x86-kvm-Notify-host-to-release-pages.patch180
-rw-r--r--patches/boot_time_opt/0153-x86-Return-memory-from-guest-to-host-kernel.patch155
-rw-r--r--patches/boot_time_opt/0154-sysctl-vm-Fine-grained-cache-shrinking.patch137
-rw-r--r--patches/boot_time_opt/host_boot_time_opt.scc29
-rw-r--r--patches/boot_time_opt/raid_alg.cfg3
-rw-r--r--patches/boot_time_opt/raid_alg.scc5
-rw-r--r--patches/boot_time_opt_guest/0102-cpuidle-skip-synchronize_rcu-on-single-CPU-systems.patch34
-rw-r--r--patches/boot_time_opt_guest/0103-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch38
-rw-r--r--patches/boot_time_opt_guest/0104-fbcon-enable-no-blink-by-default.patch26
-rw-r--r--patches/boot_time_opt_guest/0105-vmstats-wakeups.patch28
-rw-r--r--patches/boot_time_opt_guest/0106-pci-probe.patch123
-rw-r--r--patches/boot_time_opt_guest/0107-cgroup.patch107
-rw-r--r--patches/boot_time_opt_guest/0108-smpboot-reuse-timer-calibration.patch45
-rw-r--r--patches/boot_time_opt_guest/0109-perf.patch28
-rw-r--r--patches/boot_time_opt_guest/0110-pci-probe-identify-known-devices.patch190
-rw-r--r--patches/boot_time_opt_guest/0111-init-no-wait-for-the-known-devices.patch39
-rw-r--r--patches/boot_time_opt_guest/0112-ksm-wakeups.patch32
-rw-r--r--patches/boot_time_opt_guest/0113-init-do_mounts-recreate-dev-root.patch42
-rw-r--r--patches/boot_time_opt_guest/0114-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch56
-rw-r--r--patches/boot_time_opt_guest/0151-mm-Export-do_madvise.patch84
-rw-r--r--patches/boot_time_opt_guest/0152-x86-kvm-Notify-host-to-release-pages.patch180
-rw-r--r--patches/boot_time_opt_guest/0153-x86-Return-memory-from-guest-to-host-kernel.patch155
-rw-r--r--patches/boot_time_opt_guest/0154-sysctl-vm-Fine-grained-cache-shrinking.patch137
-rw-r--r--patches/boot_time_opt_guest/guest_boot_time_opt.scc19
-rw-r--r--patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch44
-rw-r--r--patches/ipv4/ipv4wait.scc1
-rw-r--r--patches/kernel_startend_msg/0001-printk-add-Enea-Linux-boot-start-end-messages.patch95
-rw-r--r--patches/kernel_startend_msg/kernel_startend_msg.scc4
396 files changed, 8793 insertions, 0 deletions
diff --git a/bsp/denverton/denverton.cfg b/bsp/denverton/denverton.cfg
new file mode 100644
index 0000000..eff35e6
--- /dev/null
+++ b/bsp/denverton/denverton.cfg
@@ -0,0 +1,26 @@
1CONFIG_IRQ_REMAP=y
2CONFIG_X86_X2APIC=y
3CONFIG_HAVE_INTEL_TXT=y
4CONFIG_NUMA=y
5CONFIG_AMD_NUMA=y
6CONFIG_X86_64_ACPI_NUMA=y
7CONFIG_NODES_SPAN_OTHER_NODES=y
8CONFIG_NUMA_EMU=y
9CONFIG_NODES_SHIFT=6
10CONFIG_NEED_MULTIPLE_NODES=y
11CONFIG_USE_PERCPU_NUMA_NODE_ID=y
12CONFIG_ACPI_NUMA=y
13CONFIG_PCI_PRI=y
14CONFIG_PCI_PASID=y
15CONFIG_IOMMU_API=y
16CONFIG_IOMMU_IOVA=y
17CONFIG_AMD_IOMMU=y
18CONFIG_INTEL_IOMMU=y
19CONFIG_INTEL_IOMMU_DEFAULT_ON=n
20CONFIG_INTEL_IOMMU_FLOPPY_WA=y
21CONFIG_MEMORY=y
22CONFIG_KVM_DEVICE_ASSIGNMENT=y
23CONFIG_AMD_IOMMU_STATS=y
24CONFIG_AMD_IOMMU_V2=y
25CONFIG_CRYPTO_RSA=y
26CONFIG_SERIAL_8250_MID=y
diff --git a/bsp/denverton/denverton.scc b/bsp/denverton/denverton.scc
new file mode 100644
index 0000000..c703120
--- /dev/null
+++ b/bsp/denverton/denverton.scc
@@ -0,0 +1 @@
kconf hardware denverton.cfg
diff --git a/cfg/net/ip_nf_y.cfg b/cfg/net/ip_nf_y.cfg
new file mode 100644
index 0000000..33ea2bf
--- /dev/null
+++ b/cfg/net/ip_nf_y.cfg
@@ -0,0 +1,6 @@
1CONFIG_NF_NAT_IPV4=y
2CONFIG_IP_NF_IPTABLES=y
3CONFIG_IP_NF_NAT=y
4CONFIG_IP_NF_TARGET_MASQUERADE=y
5# CONFIG_IP_NF_TARGET_NETMAP is not set
6# CONFIG_IP_NF_TARGET_REDIRECT is not set
diff --git a/cfg/net/ip_nf_y.scc b/cfg/net/ip_nf_y.scc
new file mode 100644
index 0000000..cc32112
--- /dev/null
+++ b/cfg/net/ip_nf_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable Netfilter (IPv4) options as built-in"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware ip_nf_y.cfg
diff --git a/features/6lowpan/6lowpan_n.cfg b/features/6lowpan/6lowpan_n.cfg
new file mode 100644
index 0000000..1bf0778
--- /dev/null
+++ b/features/6lowpan/6lowpan_n.cfg
@@ -0,0 +1 @@
CONFIG_6LOWPAN=n
diff --git a/features/6lowpan/6lowpan_n.scc b/features/6lowpan/6lowpan_n.scc
new file mode 100644
index 0000000..826fdc2
--- /dev/null
+++ b/features/6lowpan/6lowpan_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable 6LoWPAN support"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware 6lowpan_n.cfg
diff --git a/features/accelerometers/accelerometers_n.cfg b/features/accelerometers/accelerometers_n.cfg
new file mode 100644
index 0000000..ed8fb8a
--- /dev/null
+++ b/features/accelerometers/accelerometers_n.cfg
@@ -0,0 +1,30 @@
1#
2# Accelerometers
3#
4CONFIG_BMA180=n
5# CONFIG_BMA220 is not set
6CONFIG_BMC150_ACCEL=n
7CONFIG_BMC150_ACCEL_I2C=n
8CONFIG_BMC150_ACCEL_SPI=n
9# CONFIG_DMARD09 is not set
10CONFIG_HID_SENSOR_ACCEL_3D=n
11CONFIG_IIO_ST_ACCEL_3AXIS=n
12CONFIG_IIO_ST_ACCEL_I2C_3AXIS=n
13CONFIG_IIO_ST_ACCEL_SPI_3AXIS=n
14CONFIG_KXSD9=n
15CONFIG_KXSD9_SPI=n
16CONFIG_KXSD9_I2C=n
17# CONFIG_KXCJK1013 is not set
18# CONFIG_MC3230 is not set
19CONFIG_MMA7455=n
20CONFIG_MMA7455_I2C=n
21# CONFIG_MMA7455_SPI is not set
22# CONFIG_MMA7660 is not set
23CONFIG_MMA8452=n
24CONFIG_MMA9551_CORE=n
25CONFIG_MMA9551=n
26CONFIG_MMA9553=n
27# CONFIG_MXC4005 is not set
28# CONFIG_MXC6255 is not set
29# CONFIG_STK8312 is not set
30# CONFIG_STK8BA50 is not set
diff --git a/features/accelerometers/accelerometers_n.scc b/features/accelerometers/accelerometers_n.scc
new file mode 100644
index 0000000..22a8b40
--- /dev/null
+++ b/features/accelerometers/accelerometers_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options required for accelerometer support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware accelerometers_n.cfg
diff --git a/features/acp/acp_n.cfg b/features/acp/acp_n.cfg
new file mode 100644
index 0000000..2310724
--- /dev/null
+++ b/features/acp/acp_n.cfg
@@ -0,0 +1,21 @@
1#
2# ACP (Audio CoProcessor) Configuration
3#
4# CONFIG_DRM_NOUVEAU is not set
5CONFIG_DRM_I915=n
6# CONFIG_DRM_I915_ALPHA_SUPPORT is not set
7CONFIG_DRM_I915_CAPTURE_ERROR=n
8CONFIG_DRM_I915_COMPRESS_ERROR=n
9CONFIG_DRM_I915_USERPTR=n
10# CONFIG_DRM_I915_GVT is not set
11# CONFIG_DRM_VGEM is not set
12# CONFIG_DRM_VMWGFX is not set
13# CONFIG_DRM_GMA500 is not set
14# CONFIG_DRM_UDL is not set
15# CONFIG_DRM_AST is not set
16# CONFIG_DRM_MGAG200 is not set
17CONFIG_DRM_CIRRUS_QEMU=n
18# CONFIG_DRM_QXL is not set
19# CONFIG_DRM_BOCHS is not set
20# CONFIG_DRM_VIRTIO_GPU is not set
21CONFIG_DRM_PANEL=n
diff --git a/features/acp/acp_n.scc b/features/acp/acp_n.scc
new file mode 100644
index 0000000..054be43
--- /dev/null
+++ b/features/acp/acp_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for Audio CoProcessor support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware acp_n.cfg
diff --git a/features/acpi/acpi_n.cfg b/features/acpi/acpi_n.cfg
new file mode 100644
index 0000000..b2271f5
--- /dev/null
+++ b/features/acpi/acpi_n.cfg
@@ -0,0 +1,4 @@
1CONFIG_ACPI_SLEEP=n
2CONFIG_ACPI_AC=n
3CONFIG_ACPI_BATTERY=n
4CONFIG_ACPI_FAN=m
diff --git a/features/acpi/acpi_n.scc b/features/acpi/acpi_n.scc
new file mode 100644
index 0000000..499cbc1
--- /dev/null
+++ b/features/acpi/acpi_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for some ACPI modules support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware acpi_n.cfg
diff --git a/features/agp/agp_n.cfg b/features/agp/agp_n.cfg
new file mode 100644
index 0000000..4d17963
--- /dev/null
+++ b/features/agp/agp_n.cfg
@@ -0,0 +1,6 @@
1CONFIG_AGP=n
2# CONFIG_AGP_AMD64 is not set
3CONFIG_AGP_INTEL=n
4# CONFIG_AGP_SIS is not set
5# CONFIG_AGP_VIA is not set
6CONFIG_INTEL_GTT=n
diff --git a/features/agp/agp_n.scc b/features/agp/agp_n.scc
new file mode 100644
index 0000000..104f4a2
--- /dev/null
+++ b/features/agp/agp_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for AGP (Accelerated Graphics Port) support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware agp_n.cfg
diff --git a/features/ata/ata_n.cfg b/features/ata/ata_n.cfg
new file mode 100644
index 0000000..6082af2
--- /dev/null
+++ b/features/ata/ata_n.cfg
@@ -0,0 +1,59 @@
1CONFIG_IDE=n
2
3#
4# Please see Documentation/ide/ide.txt for help/info on IDE drives
5#
6CONFIG_IDE_XFER_MODE=n
7CONFIG_IDE_ATAPI=n
8# CONFIG_BLK_DEV_IDE_SATA is not set
9CONFIG_IDE_GD=n
10CONFIG_IDE_GD_ATA=n
11# CONFIG_IDE_GD_ATAPI is not set
12CONFIG_BLK_DEV_IDECD=n
13CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=n
14# CONFIG_BLK_DEV_IDETAPE is not set
15# CONFIG_BLK_DEV_IDEACPI is not set
16# CONFIG_IDE_TASK_IOCTL is not set
17CONFIG_IDE_PROC_FS=n
18
19#
20# IDE chipset support/bugfixes
21#
22# CONFIG_IDE_GENERIC is not set
23# CONFIG_BLK_DEV_PLATFORM is not set
24# CONFIG_BLK_DEV_CMD640 is not set
25# CONFIG_BLK_DEV_IDEPNP is not set
26CONFIG_BLK_DEV_IDEDMA_SFF=n
27
28#
29# PCI IDE chipsets support
30#
31CONFIG_BLK_DEV_IDEPCI=n
32CONFIG_IDEPCI_PCIBUS_ORDER=n
33# CONFIG_BLK_DEV_GENERIC is not set
34# CONFIG_BLK_DEV_OPTI621 is not set
35# CONFIG_BLK_DEV_RZ1000 is not set
36CONFIG_BLK_DEV_IDEDMA_PCI=n
37# CONFIG_BLK_DEV_AEC62XX is not set
38# CONFIG_BLK_DEV_ALI15X3 is not set
39# CONFIG_BLK_DEV_AMD74XX is not set
40# CONFIG_BLK_DEV_ATIIXP is not set
41# CONFIG_BLK_DEV_CMD64X is not set
42# CONFIG_BLK_DEV_TRIFLEX is not set
43# CONFIG_BLK_DEV_HPT366 is not set
44# CONFIG_BLK_DEV_JMICRON is not set
45CONFIG_BLK_DEV_PIIX=n
46# CONFIG_BLK_DEV_IT8172 is not set
47# CONFIG_BLK_DEV_IT8213 is not set
48# CONFIG_BLK_DEV_IT821X is not set
49# CONFIG_BLK_DEV_NS87415 is not set
50# CONFIG_BLK_DEV_PDC202XX_OLD is not set
51# CONFIG_BLK_DEV_PDC202XX_NEW is not set
52# CONFIG_BLK_DEV_SVWKS is not set
53# CONFIG_BLK_DEV_SIIMAGE is not set
54# CONFIG_BLK_DEV_SIS5513 is not set
55# CONFIG_BLK_DEV_SLC90E66 is not set
56# CONFIG_BLK_DEV_TRM290 is not set
57# CONFIG_BLK_DEV_VIA82CXXX is not set
58# CONFIG_BLK_DEV_TC86C001 is not set
59CONFIG_BLK_DEV_IDEDMA=n
diff --git a/features/ata/ata_n.scc b/features/ata/ata_n.scc
new file mode 100644
index 0000000..d70f60f
--- /dev/null
+++ b/features/ata/ata_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for ATA support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware ata_n.cfg
diff --git a/features/backlight/backlight_n.cfg b/features/backlight/backlight_n.cfg
new file mode 100644
index 0000000..0358efe
--- /dev/null
+++ b/features/backlight/backlight_n.cfg
@@ -0,0 +1,30 @@
1CONFIG_BACKLIGHT_LCD_SUPPORT=n
2CONFIG_LCD_CLASS_DEVICE=n
3# CONFIG_LCD_L4F00242T03 is not set
4# CONFIG_LCD_LMS283GF05 is not set
5# CONFIG_LCD_LTV350QV is not set
6# CONFIG_LCD_ILI922X is not set
7# CONFIG_LCD_ILI9320 is not set
8# CONFIG_LCD_TDO24M is not set
9# CONFIG_LCD_VGG2432A4 is not set
10# CONFIG_LCD_PLATFORM is not set
11# CONFIG_LCD_S6E63M0 is not set
12# CONFIG_LCD_LD9040 is not set
13# CONFIG_LCD_AMS369FG06 is not set
14# CONFIG_LCD_LMS501KF03 is not set
15# CONFIG_LCD_HX8357 is not set
16CONFIG_BACKLIGHT_CLASS_DEVICE=n
17CONFIG_BACKLIGHT_GENERIC=n
18# CONFIG_BACKLIGHT_PWM is not set
19# CONFIG_BACKLIGHT_APPLE is not set
20# CONFIG_BACKLIGHT_PM8941_WLED is not set
21# CONFIG_BACKLIGHT_SAHARA is not set
22# CONFIG_BACKLIGHT_ADP8860 is not set
23# CONFIG_BACKLIGHT_ADP8870 is not set
24# CONFIG_BACKLIGHT_LM3630A is not set
25# CONFIG_BACKLIGHT_LM3639 is not set
26# CONFIG_BACKLIGHT_LP855X is not set
27# CONFIG_BACKLIGHT_GPIO is not set
28# CONFIG_BACKLIGHT_LV5207LP is not set
29# CONFIG_BACKLIGHT_BD6107 is not set
30# CONFIG_VGASTATE is not set
diff --git a/features/backlight/backlight_n.scc b/features/backlight/backlight_n.scc
new file mode 100644
index 0000000..96620d5
--- /dev/null
+++ b/features/backlight/backlight_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options required for backlight support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware backlight_n.cfg
diff --git a/features/bcma/bcma_n.cfg b/features/bcma/bcma_n.cfg
new file mode 100644
index 0000000..ad052a3
--- /dev/null
+++ b/features/bcma/bcma_n.cfg
@@ -0,0 +1,9 @@
1#
2# Broadcom specific AMBA
3#
4CONFIG_BCMA=n
5CONFIG_BCMA_HOST_PCI_POSSIBLE=n
6CONFIG_BCMA_HOST_PCI=n
7# CONFIG_BCMA_HOST_SOC is not set
8CONFIG_BCMA_DRIVER_PCI=n
9CONFIG_BCMA_DRIVER_GMAC_CMN=n
diff --git a/features/bcma/bcma_n.scc b/features/bcma/bcma_n.scc
new file mode 100644
index 0000000..9cd6a4b
--- /dev/null
+++ b/features/bcma/bcma_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable bcma support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware bcma_n.cfg
diff --git a/features/blkdev/net_blk_dev.cfg b/features/blkdev/net_blk_dev.cfg
new file mode 100644
index 0000000..af37685
--- /dev/null
+++ b/features/blkdev/net_blk_dev.cfg
@@ -0,0 +1 @@
CONFIG_BLK_DEV_NBD=y
diff --git a/features/blkdev/net_blk_dev.scc b/features/blkdev/net_blk_dev.scc
new file mode 100644
index 0000000..6dac9fa
--- /dev/null
+++ b/features/blkdev/net_blk_dev.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable network block device"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware net_blk_dev.cfg
diff --git a/features/bluetooth/bluetooth_n.cfg b/features/bluetooth/bluetooth_n.cfg
new file mode 100644
index 0000000..28995fb
--- /dev/null
+++ b/features/bluetooth/bluetooth_n.cfg
@@ -0,0 +1,28 @@
1CONFIG_BT=n
2CONFIG_BT_BREDR=n
3CONFIG_BT_RFCOMM=n
4CONFIG_BT_RFCOMM_TTY=n
5CONFIG_BT_BNEP=n
6CONFIG_BT_BNEP_MC_FILTER=n
7CONFIG_BT_BNEP_PROTO_FILTER=n
8CONFIG_BT_CMTP=n
9CONFIG_BT_HIDP=n
10CONFIG_BT_HS=n
11CONFIG_BT_LE=n
12CONFIG_BT_6LOWPAN=n
13# CONFIG_BT_LEDS is not set
14CONFIG_BT_DEBUGFS=n
15
16#
17# Bluetooth device drivers
18#
19CONFIG_BT_INTEL=n
20CONFIG_BT_BCM=n
21CONFIG_BT_RTL=n
22CONFIG_BT_HCIBTUSB=n
23CONFIG_BT_HCIBTUSB_BCM=n
24CONFIG_BT_HCIBTUSB_RTL=n
25CONFIG_BT_HCIUART=n
26CONFIG_BT_HCIUART_H4=n
27CONFIG_BT_HCIUART_INTEL=n
28
diff --git a/features/bluetooth/bluetooth_n.scc b/features/bluetooth/bluetooth_n.scc
new file mode 100644
index 0000000..5f53820
--- /dev/null
+++ b/features/bluetooth/bluetooth_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for bluetooth support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware bluetooth_n.cfg
diff --git a/features/btrfs/btrfs_m.cfg b/features/btrfs/btrfs_m.cfg
new file mode 100644
index 0000000..3b4d425
--- /dev/null
+++ b/features/btrfs/btrfs_m.cfg
@@ -0,0 +1 @@
CONFIG_BTRFS_FS=m
diff --git a/features/btrfs/btrfs_m.scc b/features/btrfs/btrfs_m.scc
new file mode 100644
index 0000000..4827556
--- /dev/null
+++ b/features/btrfs/btrfs_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Build BTRFS support as a module"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware btrfs_m.cfg
diff --git a/features/btrfs/btrfs_n.cfg b/features/btrfs/btrfs_n.cfg
new file mode 100644
index 0000000..7322f27
--- /dev/null
+++ b/features/btrfs/btrfs_n.cfg
@@ -0,0 +1,8 @@
1CONFIG_BTRFS_FS=n
2CONFIG_BTRFS_FS_POSIX_ACL=n
3# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
4# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
5# CONFIG_BTRFS_DEBUG is not set
6# CONFIG_BTRFS_ASSERT is not set
7CONFIG_XOR_BLOCKS=n
8CONFIG_RAID6_PQ=n
diff --git a/features/btrfs/btrfs_n.scc b/features/btrfs/btrfs_n.scc
new file mode 100644
index 0000000..638f87f
--- /dev/null
+++ b/features/btrfs/btrfs_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable btrfs support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware btrfs_n.cfg
diff --git a/features/bug_support/bug_support_n.cfg b/features/bug_support/bug_support_n.cfg
new file mode 100644
index 0000000..97e29f4
--- /dev/null
+++ b/features/bug_support/bug_support_n.cfg
@@ -0,0 +1,3 @@
1CONFIG_BUG=n
2CONFIG_GENERIC_BUG=n
3CONFIG_GENERIC_BUG_RELATIVE_POINTERS=n
diff --git a/features/bug_support/bug_support_n.scc b/features/bug_support/bug_support_n.scc
new file mode 100644
index 0000000..47d46ab
--- /dev/null
+++ b/features/bug_support/bug_support_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for BUG support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware bug_support_n.cfg
diff --git a/features/bus/pci_cnb20le_n.cfg b/features/bus/pci_cnb20le_n.cfg
new file mode 100644
index 0000000..a75dcef
--- /dev/null
+++ b/features/bus/pci_cnb20le_n.cfg
@@ -0,0 +1 @@
# CONFIG_PCI_CNB20LE_QUIRK is not set
diff --git a/features/bus/pci_cnb20le_n.scc b/features/bus/pci_cnb20le_n.scc
new file mode 100644
index 0000000..c5da613
--- /dev/null
+++ b/features/bus/pci_cnb20le_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable support for CNB20LE chipset"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware pci_cnb20le_n.cfg
diff --git a/features/cdrom/cdrom_m.cfg b/features/cdrom/cdrom_m.cfg
new file mode 100644
index 0000000..ed950ce
--- /dev/null
+++ b/features/cdrom/cdrom_m.cfg
@@ -0,0 +1,4 @@
1CONFIG_BLK_DEV_SR=m
2
3# Automatically set to =y by CONFIG_BLK_DEV_SR
4CONFIG_BLK_DEV_SR_VENDOR=y
diff --git a/features/cdrom/cdrom_m.scc b/features/cdrom/cdrom_m.scc
new file mode 100644
index 0000000..b744381
--- /dev/null
+++ b/features/cdrom/cdrom_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable cd-rom support as a module"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware cdrom_m.cfg
diff --git a/features/cdrom/cdrom_n.cfg b/features/cdrom/cdrom_n.cfg
new file mode 100644
index 0000000..f945aee
--- /dev/null
+++ b/features/cdrom/cdrom_n.cfg
@@ -0,0 +1 @@
CONFIG_BLK_DEV_SR=n
diff --git a/features/cdrom/cdrom_n.scc b/features/cdrom/cdrom_n.scc
new file mode 100644
index 0000000..ce2aec2
--- /dev/null
+++ b/features/cdrom/cdrom_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for cd-rom support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware cdrom_n.cfg
diff --git a/features/cdrom/isofs_m.cfg b/features/cdrom/isofs_m.cfg
new file mode 100644
index 0000000..7ca997e
--- /dev/null
+++ b/features/cdrom/isofs_m.cfg
@@ -0,0 +1,5 @@
1CONFIG_ISO9660_FS=m
2# CONFIG_JOLIET is not set
3
4# Automatically selected by CONFIG_ISO9660_FS
5CONFIG_ZISOFS=y
diff --git a/features/cdrom/isofs_m.scc b/features/cdrom/isofs_m.scc
new file mode 100644
index 0000000..a091913
--- /dev/null
+++ b/features/cdrom/isofs_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Enable ISO fs as module"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware isofs_m.cfg
diff --git a/features/cdrom_fs/cdrom_fs_n.cfg b/features/cdrom_fs/cdrom_fs_n.cfg
new file mode 100644
index 0000000..e24a54b
--- /dev/null
+++ b/features/cdrom_fs/cdrom_fs_n.cfg
@@ -0,0 +1,2 @@
1CONFIG_ISO9660_FS=n
2CONFIG_ZISOFS=n
diff --git a/features/cdrom_fs/cdrom_fs_n.scc b/features/cdrom_fs/cdrom_fs_n.scc
new file mode 100644
index 0000000..e848b5d
--- /dev/null
+++ b/features/cdrom_fs/cdrom_fs_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for cd-rom file system support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware cdrom_fs_n.cfg
diff --git a/features/cgroupdbg/cgroupdbg_n.cfg b/features/cgroupdbg/cgroupdbg_n.cfg
new file mode 100644
index 0000000..653593c
--- /dev/null
+++ b/features/cgroupdbg/cgroupdbg_n.cfg
@@ -0,0 +1 @@
CONFIG_CGROUP_DEBUG=n
diff --git a/features/cgroupdbg/cgroupdbg_n.scc b/features/cgroupdbg/cgroupdbg_n.scc
new file mode 100644
index 0000000..2fdeabe
--- /dev/null
+++ b/features/cgroupdbg/cgroupdbg_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for cgroup debug support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware cgroupdbg_n.cfg
diff --git a/features/cgroups/cpusets.cfg b/features/cgroups/cpusets.cfg
new file mode 100644
index 0000000..17e63f8
--- /dev/null
+++ b/features/cgroups/cpusets.cfg
@@ -0,0 +1,4 @@
1CONFIG_CGROUPS=y
2CONFIG_CPUSETS=y
3CONFIG_CGROUP_PERF=y
4CONFIG_RCU_NOCB_CPU=y
diff --git a/features/cgroups/cpusets.scc b/features/cgroups/cpusets.scc
new file mode 100644
index 0000000..ff0e8e8
--- /dev/null
+++ b/features/cgroups/cpusets.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable CPU isolation"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware cpusets.cfg
diff --git a/features/compilechecks/compilechecks_n.cfg b/features/compilechecks/compilechecks_n.cfg
new file mode 100644
index 0000000..87263f0
--- /dev/null
+++ b/features/compilechecks/compilechecks_n.cfg
@@ -0,0 +1,6 @@
1CONFIG_ENABLE_WARN_DEPRECATED=n
2CONFIG_ENABLE_MUST_CHECK=n
3CONFIG_UNUSED_SYMBOLS=n
4CONFIG_DEBUG_FS=n
5CONFIG_SECTION_MISMATCH_WARN_ONLY=n
6CONFIG_FRAME_POINTER=n
diff --git a/features/compilechecks/compilechecks_n.scc b/features/compilechecks/compilechecks_n.scc
new file mode 100644
index 0000000..cd3c68a
--- /dev/null
+++ b/features/compilechecks/compilechecks_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable compile checks support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware compilechecks_n.cfg
diff --git a/features/cpu_freq/cpu_freq_n.cfg b/features/cpu_freq/cpu_freq_n.cfg
new file mode 100644
index 0000000..51a9713
--- /dev/null
+++ b/features/cpu_freq/cpu_freq_n.cfg
@@ -0,0 +1 @@
CONFIG_CPU_FREQ=n
diff --git a/features/cpu_freq/cpu_freq_n.scc b/features/cpu_freq/cpu_freq_n.scc
new file mode 100644
index 0000000..b38ee5f
--- /dev/null
+++ b/features/cpu_freq/cpu_freq_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable CPU frequency scaling"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware cpu_freq_n.cfg
diff --git a/features/dca/dca_y.cfg b/features/dca/dca_y.cfg
new file mode 100644
index 0000000..85b3620
--- /dev/null
+++ b/features/dca/dca_y.cfg
@@ -0,0 +1,5 @@
1CONFIG_INTEL_IOATDMA=y
2CONFIG_DCA=y
3
4CONFIG_IGB_DCA=y
5CONFIG_IXGBE_DCA=y
diff --git a/features/dca/dca_y.scc b/features/dca/dca_y.scc
new file mode 100644
index 0000000..a73b2a4
--- /dev/null
+++ b/features/dca/dca_y.scc
@@ -0,0 +1,6 @@
1define KFEATURE_DESCRIPTION "Enable DCA for IOATDMA capable devices"
2define KFEATURE_COMPATIBILITY board
3
4kconf hardware dca_y.cfg
5
6include cfg/dmaengine.scc
diff --git a/features/debug/debug_kernel_n.cfg b/features/debug/debug_kernel_n.cfg
new file mode 100644
index 0000000..38f20a7
--- /dev/null
+++ b/features/debug/debug_kernel_n.cfg
@@ -0,0 +1,7 @@
1CONFIG_DEBUG_INFO=n
2CONFIG_PCI_DEBUG=n
3CONFIG_PCIEASPM_DEBUG=n
4CONFIG_PNP_DEBUG_MESSAGES=n
5CONFIG_SCHED_DEBUG=n
6CONFIG_DEBUG_PREEMPT=n
7CONFIG_X86_DEBUG_FPU=n
diff --git a/features/debug/debug_kernel_n.scc b/features/debug/debug_kernel_n.scc
new file mode 100644
index 0000000..5910f2e
--- /dev/null
+++ b/features/debug/debug_kernel_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for kernel debug support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware debug_kernel_n.cfg
diff --git a/features/debug/debug_kernel_y.cfg b/features/debug/debug_kernel_y.cfg
new file mode 100644
index 0000000..29399ad
--- /dev/null
+++ b/features/debug/debug_kernel_y.cfg
@@ -0,0 +1,8 @@
1CONFIG_DEBUG_KERNEL=y
2CONFIG_DEBUG_INFO=y
3CONFIG_PCI_DEBUG=y
4CONFIG_PCIEASPM_DEBUG=y
5CONFIG_PNP_DEBUG_MESSAGES=y
6CONFIG_SCHED_DEBUG=y
7CONFIG_DEBUG_PREEMPT=y
8CONFIG_X86_DEBUG_FPU=y
diff --git a/features/debug/debug_kernel_y.scc b/features/debug/debug_kernel_y.scc
new file mode 100644
index 0000000..899e2e2
--- /dev/null
+++ b/features/debug/debug_kernel_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options required for kernel debug support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware debug_kernel_y.cfg
diff --git a/features/devcoredump/devcoredump_n.cfg b/features/devcoredump/devcoredump_n.cfg
new file mode 100644
index 0000000..26c3403
--- /dev/null
+++ b/features/devcoredump/devcoredump_n.cfg
@@ -0,0 +1,2 @@
1CONFIG_WANT_DEV_COREDUMP=n
2CONFIG_DEV_COREDUMP=n
diff --git a/features/devcoredump/devcoredump_n.scc b/features/devcoredump/devcoredump_n.scc
new file mode 100644
index 0000000..8e5b6d1
--- /dev/null
+++ b/features/devcoredump/devcoredump_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for dev core dump support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware devcoredump_n.cfg
diff --git a/features/devcoredump/devcoredump_y.cfg b/features/devcoredump/devcoredump_y.cfg
new file mode 100644
index 0000000..6a3d3c2
--- /dev/null
+++ b/features/devcoredump/devcoredump_y.cfg
@@ -0,0 +1,2 @@
1CONFIG_WANT_DEV_COREDUMP=y
2CONFIG_DEV_COREDUMP=y
diff --git a/features/devcoredump/devcoredump_y.scc b/features/devcoredump/devcoredump_y.scc
new file mode 100644
index 0000000..6a3d3c2
--- /dev/null
+++ b/features/devcoredump/devcoredump_y.scc
@@ -0,0 +1,2 @@
1CONFIG_WANT_DEV_COREDUMP=y
2CONFIG_DEV_COREDUMP=y
diff --git a/features/display/display_n.cfg b/features/display/display_n.cfg
new file mode 100644
index 0000000..3061f36
--- /dev/null
+++ b/features/display/display_n.cfg
@@ -0,0 +1,4 @@
1#
2# Display Panels
3#
4CONFIG_DRM_BRIDGE=n
diff --git a/features/display/display_n.scc b/features/display/display_n.scc
new file mode 100644
index 0000000..1558d48
--- /dev/null
+++ b/features/display/display_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Diable options for display support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware display_n.cfg
diff --git a/features/dmiid/dmiid_n.cfg b/features/dmiid/dmiid_n.cfg
new file mode 100644
index 0000000..61c1980
--- /dev/null
+++ b/features/dmiid/dmiid_n.cfg
@@ -0,0 +1 @@
CONFIG_DMIID=n
diff --git a/features/dmiid/dmiid_n.scc b/features/dmiid/dmiid_n.scc
new file mode 100644
index 0000000..470d344
--- /dev/null
+++ b/features/dmiid/dmiid_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable DMIID support"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware dmiid_n.cfg
diff --git a/features/drm/drm_n.cfg b/features/drm/drm_n.cfg
new file mode 100644
index 0000000..121f26d
--- /dev/null
+++ b/features/drm/drm_n.cfg
@@ -0,0 +1,9 @@
1CONFIG_DRM=n
2CONFIG_DRM_MIPI_DSI=n
3# CONFIG_DRM_DP_AUX_CHARDEV is not set
4# CONFIG_DRM_DEBUG_MM is not set
5CONFIG_DRM_KMS_HELPER=n
6CONFIG_DRM_KMS_FB_HELPER=n
7CONFIG_DRM_FBDEV_EMULATION=n
8# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
9CONFIG_DRM_TTM=n
diff --git a/features/drm/drm_n.scc b/features/drm/drm_n.scc
new file mode 100644
index 0000000..8c7ebba
--- /dev/null
+++ b/features/drm/drm_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Diable options for Direct Rendering Manager support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware drm_n.cfg
diff --git a/features/elf_core_support/elf_core_support_n.cfg b/features/elf_core_support/elf_core_support_n.cfg
new file mode 100644
index 0000000..7225ff0
--- /dev/null
+++ b/features/elf_core_support/elf_core_support_n.cfg
@@ -0,0 +1 @@
CONFIG_ELF_CORE=n
diff --git a/features/elf_core_support/elf_core_support_n.scc b/features/elf_core_support/elf_core_support_n.scc
new file mode 100644
index 0000000..bad2ee7
--- /dev/null
+++ b/features/elf_core_support/elf_core_support_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for ELF core support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware elf_core_support_n.cfg
diff --git a/features/firewire/firewire_m.cfg b/features/firewire/firewire_m.cfg
new file mode 100644
index 0000000..5131c4d
--- /dev/null
+++ b/features/firewire/firewire_m.cfg
@@ -0,0 +1,4 @@
1CONFIG_FIREWIRE=m
2CONFIG_FIREWIRE_OHCI=m
3CONFIG_FIREWIRE_SBP2=m
4CONFIG_FIREWIRE_NET=m
diff --git a/features/firewire/firewire_m.scc b/features/firewire/firewire_m.scc
new file mode 100644
index 0000000..e4227da
--- /dev/null
+++ b/features/firewire/firewire_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable in kernel FireWire support"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware firewire_m.cfg
diff --git a/features/framebuffer/framebuffer_n.cfg b/features/framebuffer/framebuffer_n.cfg
new file mode 100644
index 0000000..6634335
--- /dev/null
+++ b/features/framebuffer/framebuffer_n.cfg
@@ -0,0 +1,64 @@
1#
2# Frame buffer Devices
3#
4CONFIG_FB=n
5# CONFIG_FIRMWARE_EDID is not set
6CONFIG_FB_CMDLINE=n
7CONFIG_FB_NOTIFY=n
8# CONFIG_FB_DDC is not set
9CONFIG_FB_BOOT_VESA_SUPPORT=n
10CONFIG_FB_CFB_FILLRECT=n
11CONFIG_FB_CFB_COPYAREA=n
12CONFIG_FB_CFB_IMAGEBLIT=n
13# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
14CONFIG_FB_SYS_FILLRECT=n
15CONFIG_FB_SYS_COPYAREA=n
16CONFIG_FB_SYS_IMAGEBLIT=n
17# CONFIG_FB_FOREIGN_ENDIAN is not set
18CONFIG_FB_SYS_FOPS=n
19CONFIG_FB_DEFERRED_IO=n
20# CONFIG_FB_SVGALIB is not set
21# CONFIG_FB_MACMODES is not set
22# CONFIG_FB_BACKLIGHT is not set
23CONFIG_FB_MODE_HELPERS=n
24# CONFIG_FB_TILEBLITTING is not set
25#
26# Frame buffer hardware drivers
27#
28# CONFIG_FB_CIRRUS is not set
29# CONFIG_FB_PM2 is not set
30# CONFIG_FB_CYBER2000 is not set
31# CONFIG_FB_ARC is not set
32# CONFIG_FB_ASILIANT is not set
33# CONFIG_FB_IMSTT is not set
34# CONFIG_FB_VGA16 is not set
35CONFIG_FB_UVESA=n
36CONFIG_FB_VESA=n
37CONFIG_FB_EFI=n
38# CONFIG_FB_N411 is not set
39# CONFIG_FB_HGA is not set
40# CONFIG_FB_OPENCORES is not set
41# CONFIG_FB_S1D13XXX is not set
42# CONFIG_FB_NVIDIA is not set
43# CONFIG_FB_RIVA is not set
44# CONFIG_FB_I740 is not set
45# CONFIG_FB_LE80578 is not set
46# CONFIG_FB_MATROX is not set
47# CONFIG_FB_RADEON is not set
48# CONFIG_FB_ATY128 is not set
49# CONFIG_FB_ATY is not set
50# CONFIG_FB_S3 is not set
51# CONFIG_FB_SAVAGE is not set
52# CONFIG_FB_SIS is not set
53# CONFIG_FB_VIA is not set
54# CONFIG_FB_NEOMAGIC is not set
55# CONFIG_FB_KYRO is not set
56# CONFIG_FB_3DFX is not set
57# CONFIG_FB_VOODOO1 is not set
58# CONFIG_FB_VT8623 is not set
59# CONFIG_FB_TRIDENT is not set
60# CONFIG_FB_ARK is not set
61# CONFIG_FB_PM3 is not set
62# CONFIG_FB_CARMINE is not set
63CONFIG_FRAMEBUFFER_CONSOLE=n
64CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=n
diff --git a/features/framebuffer/framebuffer_n.scc b/features/framebuffer/framebuffer_n.scc
new file mode 100644
index 0000000..d00ea02
--- /dev/null
+++ b/features/framebuffer/framebuffer_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for frame buffer support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware framebuffer_n.cfg
diff --git a/features/ftrace/ftrace_n.cfg b/features/ftrace/ftrace_n.cfg
new file mode 100644
index 0000000..4df86f2
--- /dev/null
+++ b/features/ftrace/ftrace_n.cfg
@@ -0,0 +1,29 @@
1CONFIG_FTRACE=n
2CONFIG_FUNCTION_TRACER=n
3CONFIG_FUNCTION_GRAPH_TRACER=n
4# CONFIG_IRQSOFF_TRACER is not set
5# CONFIG_PREEMPT_TRACER is not set
6# CONFIG_SCHED_TRACER is not set
7# CONFIG_HWLAT_TRACER is not set
8CONFIG_FTRACE_SYSCALLS=n
9# CONFIG_TRACER_SNAPSHOT is not set
10CONFIG_BRANCH_PROFILE_NONE=n
11# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
12# CONFIG_PROFILE_ALL_BRANCHES is not set
13# CONFIG_STACK_TRACER is not set
14CONFIG_BLK_DEV_IO_TRACE=n
15CONFIG_KPROBE_EVENT=n
16CONFIG_UPROBE_EVENT=n
17CONFIG_PROBE_EVENTS=n
18CONFIG_DYNAMIC_FTRACE=n
19CONFIG_DYNAMIC_FTRACE_WITH_REGS=n
20# CONFIG_FUNCTION_PROFILER is not set
21CONFIG_FTRACE_MCOUNT_RECORD=n
22# CONFIG_FTRACE_STARTUP_TEST is not set
23# CONFIG_MMIOTRACE is not set
24# CONFIG_HIST_TRIGGERS is not set
25# CONFIG_TRACEPOINT_BENCHMARK is not set
26# CONFIG_RING_BUFFER_BENCHMARK is not set
27# CONFIG_RING_BUFFER_STARTUP_TEST is not set
28# CONFIG_TRACE_ENUM_MAP_FILE is not set
29CONFIG_TRACING_EVENTS_GPIO=n
diff --git a/features/ftrace/ftrace_n.scc b/features/ftrace/ftrace_n.scc
new file mode 100644
index 0000000..a9ba75f
--- /dev/null
+++ b/features/ftrace/ftrace_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for ftrace support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware ftrace_n.cfg
diff --git a/features/ftrace/ftrace_y.cfg b/features/ftrace/ftrace_y.cfg
new file mode 100644
index 0000000..8685263
--- /dev/null
+++ b/features/ftrace/ftrace_y.cfg
@@ -0,0 +1,12 @@
1CONFIG_DYNAMIC_FTRACE=y
2CONFIG_DEBUG_FS=y
3CONFIG_FTRACE=y
4CONFIG_FUNCTION_TRACER=y
5CONFIG_FUNCTION_GRAPH_TRACER=y
6CONFIG_IRQSOFF_TRACER=y
7CONFIG_PREEMPT_TRACER=y
8CONFIG_SCHED_TRACER=y
9CONFIG_STACK_TRACER=y
10CONFIG_BLK_DEV_IO_TRACE=y
11CONFIG_FUNCTION_PROFILER=y
12CONFIG_FTRACE_MCOUNT_RECORD=y
diff --git a/features/ftrace/ftrace_y.scc b/features/ftrace/ftrace_y.scc
new file mode 100644
index 0000000..47deba6
--- /dev/null
+++ b/features/ftrace/ftrace_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options required for ftrace support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware ftrace_y.cfg
diff --git a/features/hdmi/hdmi_n.cfg b/features/hdmi/hdmi_n.cfg
new file mode 100644
index 0000000..97e7a97
--- /dev/null
+++ b/features/hdmi/hdmi_n.cfg
@@ -0,0 +1 @@
CONFIG_HDMI=n
diff --git a/features/hdmi/hdmi_n.scc b/features/hdmi/hdmi_n.scc
new file mode 100644
index 0000000..c8324d1
--- /dev/null
+++ b/features/hdmi/hdmi_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for hdmi support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware hdmi_n.cfg
diff --git a/features/hid/hid_n.cfg b/features/hid/hid_n.cfg
new file mode 100644
index 0000000..be0133e
--- /dev/null
+++ b/features/hid/hid_n.cfg
@@ -0,0 +1,89 @@
1CONFIG_HID=n
2# CONFIG_HID_BATTERY_STRENGTH is not set
3# CONFIG_HIDRAW is not set
4# CONFIG_UHID is not set
5CONFIG_HID_GENERIC=n
6
7#
8# Special HID drivers
9#
10CONFIG_HID_A4TECH=n
11# CONFIG_HID_ACRUX is not set
12CONFIG_HID_APPLE=n
13# CONFIG_HID_APPLEIR is not set
14# CONFIG_HID_AUREAL is not set
15CONFIG_HID_BELKIN=n
16# CONFIG_HID_BETOP_FF is not set
17CONFIG_HID_CHERRY=n
18CONFIG_HID_CHICONY=n
19# CONFIG_HID_CORSAIR is not set
20# CONFIG_HID_CMEDIA is not set
21# CONFIG_HID_CP2112 is not set
22CONFIG_HID_CYPRESS=n
23# CONFIG_HID_DRAGONRISE is not set
24# CONFIG_HID_EMS_FF is not set
25# CONFIG_HID_ELECOM is not set
26# CONFIG_HID_ELO is not set
27CONFIG_HID_EZKEY=n
28# CONFIG_HID_GEMBIRD is not set
29# CONFIG_HID_GFRM is not set
30# CONFIG_HID_HOLTEK is not set
31# CONFIG_HID_GT683R is not set
32# CONFIG_HID_KEYTOUCH is not set
33# CONFIG_HID_KYE is not set
34# CONFIG_HID_UCLOGIC is not set
35# CONFIG_HID_WALTOP is not set
36# CONFIG_HID_GYRATION is not set
37# CONFIG_HID_ICADE is not set
38# CONFIG_HID_TWINHAN is not set
39CONFIG_HID_KENSINGTON=n
40# CONFIG_HID_LCPOWER is not set
41# CONFIG_HID_LED is not set
42# CONFIG_HID_LENOVO is not set
43CONFIG_HID_LOGITECH=n
44# CONFIG_HID_LOGITECH_HIDPP is not set
45# CONFIG_LOGITECH_FF is not set
46# CONFIG_LOGIRUMBLEPAD2_FF is not set
47# CONFIG_LOGIG940_FF is not set
48# CONFIG_LOGIWHEELS_FF is not set
49# CONFIG_HID_MAGICMOUSE is not set
50CONFIG_HID_MICROSOFT=n
51CONFIG_HID_MONTEREY=n
52# CONFIG_HID_MULTITOUCH is not set
53# CONFIG_HID_NTRIG is not set
54# CONFIG_HID_ORTEK is not set
55# CONFIG_HID_PANTHERLORD is not set
56# CONFIG_HID_PENMOUNT is not set
57# CONFIG_HID_PETALYNX is not set
58# CONFIG_HID_PICOLCD is not set
59# CONFIG_HID_PLANTRONICS is not set
60# CONFIG_HID_PRIMAX is not set
61# CONFIG_HID_ROCCAT is not set
62# CONFIG_HID_SAITEK is not set
63# CONFIG_HID_SAMSUNG is not set
64# CONFIG_HID_SONY is not set
65# CONFIG_HID_SPEEDLINK is not set
66# CONFIG_HID_STEELSERIES is not set
67# CONFIG_HID_SUNPLUS is not set
68# CONFIG_HID_RMI is not set
69# CONFIG_HID_GREENASIA is not set
70# CONFIG_HID_SMARTJOYPLUS is not set
71# CONFIG_HID_TIVO is not set
72# CONFIG_HID_TOPSEED is not set
73# CONFIG_HID_THINGM is not set
74# CONFIG_HID_THRUSTMASTER is not set
75CONFIG_HID_WACOM=n
76# CONFIG_HID_WIIMOTE is not set
77# CONFIG_HID_XINMO is not set
78# CONFIG_HID_ZEROPLUS is not set
79# CONFIG_HID_ZYDACRON is not set
80CONFIG_HID_SENSOR_HUB=n
81# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set
82# CONFIG_HID_ALPS is not set
83
84#
85# USB HID support
86#
87CONFIG_USB_HID=n
88# CONFIG_HID_PID is not set
89CONFIG_USB_HIDDEV=n
diff --git a/features/hid/hid_n.scc b/features/hid/hid_n.scc
new file mode 100644
index 0000000..d9ea88b
--- /dev/null
+++ b/features/hid/hid_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for HID support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware hid_n.cfg
diff --git a/features/hid/keyboard_m.cfg b/features/hid/keyboard_m.cfg
new file mode 100644
index 0000000..8f2104c
--- /dev/null
+++ b/features/hid/keyboard_m.cfg
@@ -0,0 +1,161 @@
1CONFIG_INPUT_KEYBOARD=y
2# CONFIG_KEYBOARD_ADC is not set
3# CONFIG_KEYBOARD_ADP5588 is not set
4# CONFIG_KEYBOARD_ADP5589 is not set
5CONFIG_KEYBOARD_ATKBD=m
6# CONFIG_KEYBOARD_QT1070 is not set
7# CONFIG_KEYBOARD_QT2160 is not set
8# CONFIG_KEYBOARD_LKKBD is not set
9# CONFIG_KEYBOARD_GPIO is not set
10# CONFIG_KEYBOARD_GPIO_POLLED is not set
11# CONFIG_KEYBOARD_TCA6416 is not set
12# CONFIG_KEYBOARD_TCA8418 is not set
13# CONFIG_KEYBOARD_MATRIX is not set
14# CONFIG_KEYBOARD_LM8323 is not set
15# CONFIG_KEYBOARD_LM8333 is not set
16# CONFIG_KEYBOARD_MAX7359 is not set
17# CONFIG_KEYBOARD_MCS is not set
18# CONFIG_KEYBOARD_MPR121 is not set
19# CONFIG_KEYBOARD_NEWTON is not set
20# CONFIG_KEYBOARD_OPENCORES is not set
21# CONFIG_KEYBOARD_SAMSUNG is not set
22# CONFIG_KEYBOARD_STOWAWAY is not set
23# CONFIG_KEYBOARD_SUNKBD is not set
24CONFIG_KEYBOARD_XTKBD=m
25CONFIG_INPUT_MISC=y
26# CONFIG_INPUT_AD714X is not set
27# CONFIG_INPUT_BMA150 is not set
28# CONFIG_INPUT_E3X0_BUTTON is not set
29# CONFIG_INPUT_MMA8450 is not set
30# CONFIG_INPUT_MPU3050 is not set
31# CONFIG_INPUT_APANEL is not set
32# CONFIG_INPUT_GP2A is not set
33# CONFIG_INPUT_GPIO_BEEPER is not set
34# CONFIG_INPUT_GPIO_TILT_POLLED is not set
35# CONFIG_INPUT_GPIO_DECODER is not set
36# CONFIG_INPUT_ATLAS_BTNS is not set
37# CONFIG_INPUT_ATI_REMOTE2 is not set
38# CONFIG_INPUT_KEYSPAN_REMOTE is not set
39# CONFIG_INPUT_KXTJ9 is not set
40# CONFIG_INPUT_POWERMATE is not set
41# CONFIG_INPUT_YEALINK is not set
42# CONFIG_INPUT_CM109 is not set
43# CONFIG_INPUT_UINPUT is not set
44# CONFIG_INPUT_PCF8574 is not set
45# CONFIG_INPUT_PWM_BEEPER is not set
46# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
47# CONFIG_INPUT_ADXL34X is not set
48# CONFIG_INPUT_IMS_PCU is not set
49# CONFIG_INPUT_CMA3000 is not set
50# CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set
51# CONFIG_INPUT_DRV260X_HAPTICS is not set
52# CONFIG_INPUT_DRV2665_HAPTICS is not set
53# CONFIG_INPUT_DRV2667_HAPTICS is not set
54CONFIG_SERIO=m
55CONFIG_SERIO_I8042=m
56CONFIG_SERIO_SERPORT=m
57# CONFIG_SERIO_CT82C710 is not set
58# CONFIG_SERIO_PARKBD is not set
59CONFIG_SERIO_PCIPS2=m
60CONFIG_SERIO_LIBPS2=m
61# CONFIG_SERIO_RAW is not set
62# CONFIG_SERIO_ALTERA_PS2 is not set
63# CONFIG_SERIO_PS2MULT is not set
64# CONFIG_SERIO_ARC_PS2 is not set
65# CONFIG_USERIO is not set
66CONFIG_HSI=y
67CONFIG_HSI_BOARDINFO=y
68
69#
70# HSI controllers
71#
72
73#
74# HSI clients
75#
76# CONFIG_HSI_CHAR is not set
77CONFIG_HID=m
78# CONFIG_HID_BATTERY_STRENGTH is not set
79# CONFIG_HIDRAW is not set
80# CONFIG_UHID is not set
81CONFIG_HID_GENERIC=m
82
83#
84# Special HID drivers
85#
86# CONFIG_HID_A4TECH is not set
87# CONFIG_HID_ACRUX is not set
88# CONFIG_HID_APPLE is not set
89# CONFIG_HID_APPLEIR is not set
90# CONFIG_HID_ASUS is not set
91# CONFIG_HID_AUREAL is not set
92# CONFIG_HID_BELKIN is not set
93# CONFIG_HID_BETOP_FF is not set
94# CONFIG_HID_CHERRY is not set
95# CONFIG_HID_CHICONY is not set
96# CONFIG_HID_CORSAIR is not set
97# CONFIG_HID_CMEDIA is not set
98# CONFIG_HID_CP2112 is not set
99# CONFIG_HID_CYPRESS is not set
100# CONFIG_HID_DRAGONRISE is not set
101# CONFIG_HID_EMS_FF is not set
102# CONFIG_HID_ELECOM is not set
103# CONFIG_HID_ELO is not set
104# CONFIG_HID_EZKEY is not set
105# CONFIG_HID_GEMBIRD is not set
106# CONFIG_HID_GFRM is not set
107# CONFIG_HID_HOLTEK is not set
108# CONFIG_HID_GT683R is not set
109# CONFIG_HID_KEYTOUCH is not set
110# CONFIG_HID_KYE is not set
111# CONFIG_HID_UCLOGIC is not set
112# CONFIG_HID_WALTOP is not set
113# CONFIG_HID_GYRATION is not set
114# CONFIG_HID_ICADE is not set
115# CONFIG_HID_TWINHAN is not set
116# CONFIG_HID_KENSINGTON is not set
117# CONFIG_HID_LCPOWER is not set
118# CONFIG_HID_LED is not set
119# CONFIG_HID_LENOVO is not set
120# CONFIG_HID_LOGITECH is not set
121# CONFIG_HID_MAGICMOUSE is not set
122# CONFIG_HID_MICROSOFT is not set
123# CONFIG_HID_MONTEREY is not set
124# CONFIG_HID_MULTITOUCH is not set
125# CONFIG_HID_NTRIG is not set
126# CONFIG_HID_ORTEK is not set
127# CONFIG_HID_PANTHERLORD is not set
128# CONFIG_HID_PENMOUNT is not set
129# CONFIG_HID_PETALYNX is not set
130# CONFIG_HID_PICOLCD is not set
131# CONFIG_HID_PLANTRONICS is not set
132# CONFIG_HID_PRIMAX is not set
133# CONFIG_HID_ROCCAT is not set
134# CONFIG_HID_SAITEK is not set
135# CONFIG_HID_SAMSUNG is not set
136# CONFIG_HID_SONY is not set
137# CONFIG_HID_SPEEDLINK is not set
138# CONFIG_HID_STEELSERIES is not set
139# CONFIG_HID_SUNPLUS is not set
140# CONFIG_HID_RMI is not set
141# CONFIG_HID_GREENASIA is not set
142# CONFIG_HID_SMARTJOYPLUS is not set
143# CONFIG_HID_TIVO is not set
144# CONFIG_HID_TOPSEED is not set
145# CONFIG_HID_THINGM is not set
146# CONFIG_HID_THRUSTMASTER is not set
147# CONFIG_HID_WACOM is not set
148# CONFIG_HID_WIIMOTE is not set
149# CONFIG_HID_XINMO is not set
150# CONFIG_HID_ZEROPLUS is not set
151# CONFIG_HID_ZYDACRON is not set
152# CONFIG_HID_SENSOR_HUB is not set
153# CONFIG_HID_ALPS is not set
154CONFIG_USB_HID=m
155# CONFIG_USB_HIDDEV is not set
156CONFIG_USB_KBD=m
157CONFIG_I2C_HID=m
158CONFIG_INTEL_ISH_HID=m
159# CONFIG_LEDS_CLEVO_MAIL is not set
160# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
161# CONFIG_HP_ACCEL is not set
diff --git a/features/hid/keyboard_m.scc b/features/hid/keyboard_m.scc
new file mode 100644
index 0000000..9943cb7
--- /dev/null
+++ b/features/hid/keyboard_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable as module Keyboard support"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware keyboard_m.cfg
diff --git a/features/hidsensor/hidsensor_n.cfg b/features/hidsensor/hidsensor_n.cfg
new file mode 100644
index 0000000..cc5b461
--- /dev/null
+++ b/features/hidsensor/hidsensor_n.cfg
@@ -0,0 +1,5 @@
1CONFIG_HID_SENSOR_IIO_COMMON=n
2CONFIG_HID_SENSOR_IIO_TRIGGER=n
3CONFIG_HID_SENSOR_GYRO_3D=n
4CONFIG_HID_SENSOR_ALS=n
5CONFIG_HID_SENSOR_MAGNETOMETER_3D=n
diff --git a/features/hidsensor/hidsensor_n.scc b/features/hidsensor/hidsensor_n.scc
new file mode 100644
index 0000000..53a0b9d
--- /dev/null
+++ b/features/hidsensor/hidsensor_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for HID sensor support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware hidsensor_n.cfg
diff --git a/features/hsi/hsi_m.cfg b/features/hsi/hsi_m.cfg
new file mode 100644
index 0000000..16e6dd3
--- /dev/null
+++ b/features/hsi/hsi_m.cfg
@@ -0,0 +1,20 @@
1CONFIG_SPMI=m
2CONFIG_HSI=m
3CONFIG_HSI_BOARDINFO=y
4
5#
6# HSI controllers
7#
8
9#
10# HSI clients
11#
12CONFIG_HSI_CHAR=m
13# CONFIG_QCOM_SPMI_IADC is not set
14# CONFIG_QCOM_SPMI_VADC is not set
15CONFIG_LIBNVDIMM=m
16CONFIG_BLK_DEV_PMEM=m
17CONFIG_ND_BLK=m
18CONFIG_ND_CLAIM=y
19CONFIG_ND_BTT=m
20CONFIG_BTT=y
diff --git a/features/hsi/hsi_m.scc b/features/hsi/hsi_m.scc
new file mode 100644
index 0000000..304f5a0
--- /dev/null
+++ b/features/hsi/hsi_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable in kernel HSI (High Speed Synchronous Serial Interface) support"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware hsi_m.cfg
diff --git a/features/hugetlb/thp_n.cfg b/features/hugetlb/thp_n.cfg
new file mode 100644
index 0000000..81718bb
--- /dev/null
+++ b/features/hugetlb/thp_n.cfg
@@ -0,0 +1 @@
CONFIG_TRANSPARENT_HUGEPAGE=n
diff --git a/features/hugetlb/thp_n.scc b/features/hugetlb/thp_n.scc
new file mode 100644
index 0000000..49436e7
--- /dev/null
+++ b/features/hugetlb/thp_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable transparent huge pages"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware thp_y.cfg
diff --git a/features/hugetlb/thp_y.cfg b/features/hugetlb/thp_y.cfg
new file mode 100644
index 0000000..75d999c
--- /dev/null
+++ b/features/hugetlb/thp_y.cfg
@@ -0,0 +1 @@
CONFIG_TRANSPARENT_HUGEPAGE=y
diff --git a/features/hugetlb/thp_y.scc b/features/hugetlb/thp_y.scc
new file mode 100644
index 0000000..d3dc20f
--- /dev/null
+++ b/features/hugetlb/thp_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable transparent huge pages"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware thp_y.cfg
diff --git a/features/hwmon/hwmon_n.cfg b/features/hwmon/hwmon_n.cfg
new file mode 100644
index 0000000..617d8f5
--- /dev/null
+++ b/features/hwmon/hwmon_n.cfg
@@ -0,0 +1 @@
CONFIG_HWMON=n
diff --git a/features/hwmon/hwmon_n.scc b/features/hwmon/hwmon_n.scc
new file mode 100644
index 0000000..633a107
--- /dev/null
+++ b/features/hwmon/hwmon_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable hardware monitor support"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware hwmon_n.cfg
diff --git a/features/i2csupport/i2csupport_n.cfg b/features/i2csupport/i2csupport_n.cfg
new file mode 100644
index 0000000..30c4a3e
--- /dev/null
+++ b/features/i2csupport/i2csupport_n.cfg
@@ -0,0 +1,80 @@
1CONFIG_REGMAP=n
2CONFIG_REGMAP_I2C=n
3#
4# EEPROM support
5#
6CONFIG_EEPROM_AT24=n
7#
8# I2C support
9#
10CONFIG_I2C=n
11CONFIG_ACPI_I2C_OPREGION=n
12CONFIG_I2C_BOARDINFO=n
13CONFIG_I2C_COMPAT=n
14# CONFIG_I2C_CHARDEV is not set
15# CONFIG_I2C_MUX is not set
16CONFIG_I2C_HELPER_AUTO=n
17CONFIG_I2C_SMBUS=n
18
19#
20# I2C Hardware Bus support
21#
22
23#
24# PC SMBus host controller drivers
25#
26# CONFIG_I2C_ALI1535 is not set
27# CONFIG_I2C_ALI1563 is not set
28# CONFIG_I2C_ALI15X3 is not set
29# CONFIG_I2C_AMD756 is not set
30# CONFIG_I2C_AMD8111 is not set
31CONFIG_I2C_I801=n
32# CONFIG_I2C_ISCH is not set
33# CONFIG_I2C_ISMT is not set
34# CONFIG_I2C_PIIX4 is not set
35# CONFIG_I2C_NFORCE2 is not set
36# CONFIG_I2C_SIS5595 is not set
37# CONFIG_I2C_SIS630 is not set
38# CONFIG_I2C_SIS96X is not set
39# CONFIG_I2C_VIA is not set
40# CONFIG_I2C_VIAPRO is not set
41
42#
43# ACPI drivers
44#
45# CONFIG_I2C_SCMI is not set
46
47#
48# I2C system bus drivers (mostly embedded / system-on-chip)
49#
50# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
51# CONFIG_I2C_DESIGNWARE_PCI is not set
52# CONFIG_I2C_EMEV2 is not set
53# CONFIG_I2C_OCORES is not set
54# CONFIG_I2C_PCA_PLATFORM is not set
55# CONFIG_I2C_PXA_PCI is not set
56# CONFIG_I2C_SIMTEC is not set
57# CONFIG_I2C_XILINX is not set
58
59#
60# External I2C/SMBus adapter drivers
61#
62# CONFIG_I2C_DIOLAN_U2C is not set
63# CONFIG_I2C_PARPORT_LIGHT is not set
64# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
65# CONFIG_I2C_TAOS_EVM is not set
66# CONFIG_I2C_TINY_USB is not set
67
68#
69# Other I2C/SMBus bus drivers
70#
71# CONFIG_I2C_STUB is not set
72# CONFIG_I2C_SLAVE is not set
73# CONFIG_I2C_DEBUG_CORE is not set
74# CONFIG_I2C_DEBUG_ALGO is not set
75# CONFIG_I2C_DEBUG_BUS is not set
76
77#
78# SPI RTC drivers
79#
80CONFIG_RTC_I2C_AND_SPI=n
diff --git a/features/i2csupport/i2csupport_n.scc b/features/i2csupport/i2csupport_n.scc
new file mode 100644
index 0000000..ca127b1
--- /dev/null
+++ b/features/i2csupport/i2csupport_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable i2c support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware i2csupport_n.cfg
diff --git a/features/ide/ide_m.cfg b/features/ide/ide_m.cfg
new file mode 100644
index 0000000..b0236eb
--- /dev/null
+++ b/features/ide/ide_m.cfg
@@ -0,0 +1,41 @@
1#
2# Protocols
3#
4CONFIG_PARIDE=m
5
6#
7# Parallel IDE high-level drivers
8#
9CONFIG_PARIDE_PD=m
10CONFIG_PARIDE_PCD=m
11CONFIG_PARIDE_PF=m
12
13
14CONFIG_IDE=m
15
16#
17# Please see Documentation/ide/ide.txt for help/info on IDE drives
18#
19CONFIG_IDE_XFER_MODE=y
20CONFIG_IDE_ATAPI=y
21CONFIG_IDE_GD=m
22CONFIG_IDE_GD_ATA=y
23CONFIG_BLK_DEV_IDECD=m
24CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
25CONFIG_IDE_PROC_FS=y
26
27#
28# IDE chipset support/bugfixes
29#
30CONFIG_IDE_GENERIC=m
31CONFIG_BLK_DEV_PLATFORM=m
32CONFIG_BLK_DEV_IDEDMA_SFF=y
33
34#
35# PCI IDE chipsets support
36#
37CONFIG_BLK_DEV_IDEPCI=y
38CONFIG_BLK_DEV_GENERIC=m
39CONFIG_BLK_DEV_IDEDMA_PCI=y
40CONFIG_BLK_DEV_PIIX=m
41CONFIG_BLK_DEV_IDEDMA=y
diff --git a/features/ide/ide_m.scc b/features/ide/ide_m.scc
new file mode 100644
index 0000000..614e94d
--- /dev/null
+++ b/features/ide/ide_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable IDE support as modules"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware ide_m.cfg
diff --git a/features/ieee802154/ieee802154_n.cfg b/features/ieee802154/ieee802154_n.cfg
new file mode 100644
index 0000000..36f6f2b
--- /dev/null
+++ b/features/ieee802154/ieee802154_n.cfg
@@ -0,0 +1,6 @@
1CONFIG_IEEE802154=n
2# CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set
3CONFIG_IEEE802154_SOCKET=n
4CONFIG_IEEE802154_6LOWPAN=n
5# CONFIG_MAC802154 is not set
6CONFIG_IEEE802154_DRIVERS=n
diff --git a/features/ieee802154/ieee802154_n.scc b/features/ieee802154/ieee802154_n.scc
new file mode 100644
index 0000000..fc68bf8
--- /dev/null
+++ b/features/ieee802154/ieee802154_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for IEEE802154 support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware ieee802154_n.cfg
diff --git a/features/inclinometer/inclinometer_n.cfg b/features/inclinometer/inclinometer_n.cfg
new file mode 100644
index 0000000..0c8247b
--- /dev/null
+++ b/features/inclinometer/inclinometer_n.cfg
@@ -0,0 +1 @@
CONFIG_HID_SENSOR_INCLINOMETER_3D=n
diff --git a/features/inclinometer/inclinometer_n.scc b/features/inclinometer/inclinometer_n.scc
new file mode 100644
index 0000000..5898da2
--- /dev/null
+++ b/features/inclinometer/inclinometer_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for Inclinometer support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware inclinometer_n.cfg
diff --git a/features/input/input_n.cfg b/features/input/input_n.cfg
new file mode 100644
index 0000000..ee422f2
--- /dev/null
+++ b/features/input/input_n.cfg
@@ -0,0 +1,3 @@
1CONFIG_SERIO=n
2CONFIG_INPUT_LEDS=n
3CONFIG_INPUT_EVDEV=n
diff --git a/features/input/input_n.scc b/features/input/input_n.scc
new file mode 100644
index 0000000..16aaa94
--- /dev/null
+++ b/features/input/input_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable inputs"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware input_n.cfg
diff --git a/features/intel-e1xxxx/e100_m.cfg b/features/intel-e1xxxx/e100_m.cfg
new file mode 100644
index 0000000..676b909
--- /dev/null
+++ b/features/intel-e1xxxx/e100_m.cfg
@@ -0,0 +1 @@
CONFIG_E100=m
diff --git a/features/intel-e1xxxx/e100_m.scc b/features/intel-e1xxxx/e100_m.scc
new file mode 100644
index 0000000..42730b4
--- /dev/null
+++ b/features/intel-e1xxxx/e100_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Build E100 support as a module"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware e100_m.cfg
diff --git a/features/intel-e1xxxx/e100_n.cfg b/features/intel-e1xxxx/e100_n.cfg
new file mode 100644
index 0000000..dab91be
--- /dev/null
+++ b/features/intel-e1xxxx/e100_n.cfg
@@ -0,0 +1 @@
CONFIG_E100=n
diff --git a/features/intel-e1xxxx/e100_n.scc b/features/intel-e1xxxx/e100_n.scc
new file mode 100644
index 0000000..bdf9995
--- /dev/null
+++ b/features/intel-e1xxxx/e100_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Build E100 support as a module"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware e100_n.cfg
diff --git a/features/intel-e1xxxx/e1xxxx_m.cfg b/features/intel-e1xxxx/e1xxxx_m.cfg
new file mode 100644
index 0000000..c05e8c6
--- /dev/null
+++ b/features/intel-e1xxxx/e1xxxx_m.cfg
@@ -0,0 +1,3 @@
1CONFIG_E1000=m
2CONFIG_E1000E=m
3CONFIG_E1000E_HWTS=m
diff --git a/features/intel-e1xxxx/e1xxxx_m.scc b/features/intel-e1xxxx/e1xxxx_m.scc
new file mode 100644
index 0000000..d8a8f16
--- /dev/null
+++ b/features/intel-e1xxxx/e1xxxx_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Build E1xxxx drivers as modules"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware e1xxxx_m.cfg
diff --git a/features/intel-e1xxxx/e1xxxx_n.cfg b/features/intel-e1xxxx/e1xxxx_n.cfg
new file mode 100644
index 0000000..d12c714
--- /dev/null
+++ b/features/intel-e1xxxx/e1xxxx_n.cfg
@@ -0,0 +1,3 @@
1CONFIG_E1000=n
2CONFIG_E1000E=n
3CONFIG_E1000E_HWTS=n
diff --git a/features/intel-e1xxxx/e1xxxx_n.scc b/features/intel-e1xxxx/e1xxxx_n.scc
new file mode 100644
index 0000000..3d2b0f1
--- /dev/null
+++ b/features/intel-e1xxxx/e1xxxx_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Build E1xxxx drivers as modules"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware e1xxxx_n.cfg
diff --git a/features/isdn/isdn_n.cfg b/features/isdn/isdn_n.cfg
new file mode 100644
index 0000000..d17ce70
--- /dev/null
+++ b/features/isdn/isdn_n.cfg
@@ -0,0 +1,4 @@
1CONFIG_ISDN=n
2# CONFIG_ISDN_I4L is not set
3CONFIG_ISDN_CAPI=n
4CONFIG_CAPI_TRACE=n
diff --git a/features/isdn/isdn_n.scc b/features/isdn/isdn_n.scc
new file mode 100644
index 0000000..53404e7
--- /dev/null
+++ b/features/isdn/isdn_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable isdn support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware isdn_n.cfg
diff --git a/features/isofs/isofs.cfg b/features/isofs/isofs.cfg
new file mode 100644
index 0000000..c14eb11
--- /dev/null
+++ b/features/isofs/isofs.cfg
@@ -0,0 +1,10 @@
1CONFIG_ISO9660_FS=y
2CONFIG_JOLIET=y
3CONFIG_ZISOFS=y
4CONFIG_UDF_FS=y
5CONFIG_UDF_NLS=y
6CONFIG_FAT_FS=y
7CONFIG_VFAT_FS=y
8CONFIG_FAT_DEFAULT_CODEPAGE=437
9CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
10CONFIG_CRC_ITU_T=y
diff --git a/features/isofs/isofs.scc b/features/isofs/isofs.scc
new file mode 100644
index 0000000..93ca615
--- /dev/null
+++ b/features/isofs/isofs.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable ISO FS for CD-ROM support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware isofs.cfg
diff --git a/features/ixgbe/ixgbe_m.cfg b/features/ixgbe/ixgbe_m.cfg
new file mode 100644
index 0000000..88d48ce
--- /dev/null
+++ b/features/ixgbe/ixgbe_m.cfg
@@ -0,0 +1,4 @@
1CONFIG_IXGB=m
2CONFIG_IXGBE=m
3CONFIG_IXGBEVF=m
4CONFIG_DCA=y
diff --git a/features/ixgbe/ixgbe_m.scc b/features/ixgbe/ixgbe_m.scc
new file mode 100644
index 0000000..25cd537
--- /dev/null
+++ b/features/ixgbe/ixgbe_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Build IXGB and IXGBE support as a modules"
2define KFEATURE_COMPATIBILITY board
3
4kconf hardware ixgbe_m.cfg
diff --git a/features/ixgbe/ixgbe_y.cfg b/features/ixgbe/ixgbe_y.cfg
new file mode 100644
index 0000000..d3921c8
--- /dev/null
+++ b/features/ixgbe/ixgbe_y.cfg
@@ -0,0 +1,5 @@
1CONFIG_MDIO=y
2CONFIG_IXGB=y
3CONFIG_IXGBE=y
4CONFIG_IXGBEVF=y
5CONFIG_DCA=y
diff --git a/features/ixgbe/ixgbe_y.scc b/features/ixgbe/ixgbe_y.scc
new file mode 100644
index 0000000..2225085
--- /dev/null
+++ b/features/ixgbe/ixgbe_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable Intel 10g ports"
2define KFEATURE_COMPATIBILITY board
3
4kconf hardware ixgbe_y.cfg
diff --git a/features/ixgbevf/ixgbevf_y.cfg b/features/ixgbevf/ixgbevf_y.cfg
new file mode 100644
index 0000000..26ca642
--- /dev/null
+++ b/features/ixgbevf/ixgbevf_y.cfg
@@ -0,0 +1 @@
CONFIG_IXGBEVF=y
diff --git a/features/ixgbevf/ixgbevf_y.scc b/features/ixgbevf/ixgbevf_y.scc
new file mode 100644
index 0000000..4772d88
--- /dev/null
+++ b/features/ixgbevf/ixgbevf_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable virtual functions for Intel 10G ports"
2define KFEATURE_COMPATIBILITY board
3
4kconf hardware ixgbevf_y.cfg
diff --git a/features/kernel_xz_compression/kernel_xz_compression_y.cfg b/features/kernel_xz_compression/kernel_xz_compression_y.cfg
new file mode 100644
index 0000000..1179508
--- /dev/null
+++ b/features/kernel_xz_compression/kernel_xz_compression_y.cfg
@@ -0,0 +1 @@
CONFIG_KERNEL_XZ=y
diff --git a/features/kernel_xz_compression/kernel_xz_compression_y.scc b/features/kernel_xz_compression/kernel_xz_compression_y.scc
new file mode 100644
index 0000000..f695613
--- /dev/null
+++ b/features/kernel_xz_compression/kernel_xz_compression_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable XZ kernel compression"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware kernel_xz_compression_y.cfg
diff --git a/features/keyboard/keyboard_n.cfg b/features/keyboard/keyboard_n.cfg
new file mode 100644
index 0000000..fdfba5e
--- /dev/null
+++ b/features/keyboard/keyboard_n.cfg
@@ -0,0 +1,25 @@
1CONFIG_INPUT_KEYBOARD=n
2# CONFIG_KEYBOARD_ADC is not set
3# CONFIG_KEYBOARD_ADP5588 is not set
4# CONFIG_KEYBOARD_ADP5589 is not set
5CONFIG_KEYBOARD_ATKBD=n
6# CONFIG_KEYBOARD_QT1070 is not set
7# CONFIG_KEYBOARD_QT2160 is not set
8# CONFIG_KEYBOARD_LKKBD is not set
9CONFIG_KEYBOARD_GPIO=n
10# CONFIG_KEYBOARD_GPIO_POLLED is not set
11# CONFIG_KEYBOARD_TCA6416 is not set
12# CONFIG_KEYBOARD_TCA8418 is not set
13# CONFIG_KEYBOARD_MATRIX is not set
14# CONFIG_KEYBOARD_LM8323 is not set
15# CONFIG_KEYBOARD_LM8333 is not set
16# CONFIG_KEYBOARD_MAX7359 is not set
17# CONFIG_KEYBOARD_MCS is not set
18# CONFIG_KEYBOARD_MPR121 is not set
19# CONFIG_KEYBOARD_NEWTON is not set
20# CONFIG_KEYBOARD_OPENCORES is not set
21# CONFIG_KEYBOARD_SAMSUNG is not set
22# CONFIG_KEYBOARD_STOWAWAY is not set
23# CONFIG_KEYBOARD_SUNKBD is not set
24# CONFIG_KEYBOARD_XTKBD is not set
25CONFIG_SERIO_I8042=m
diff --git a/features/keyboard/keyboard_n.scc b/features/keyboard/keyboard_n.scc
new file mode 100644
index 0000000..8d2076b
--- /dev/null
+++ b/features/keyboard/keyboard_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for Input Keyboard support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware keyboard_n.cfg
diff --git a/features/kgdb/kgdb_n.cfg b/features/kgdb/kgdb_n.cfg
new file mode 100644
index 0000000..d07c288
--- /dev/null
+++ b/features/kgdb/kgdb_n.cfg
@@ -0,0 +1 @@
CONFIG_KGDB=n
diff --git a/features/kgdb/kgdb_n.scc b/features/kgdb/kgdb_n.scc
new file mode 100644
index 0000000..4b5b0a1
--- /dev/null
+++ b/features/kgdb/kgdb_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options required for kgdb support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware kgdb_n.cfg
diff --git a/features/kgdb/kgdb_y.cfg b/features/kgdb/kgdb_y.cfg
new file mode 100644
index 0000000..636ded5
--- /dev/null
+++ b/features/kgdb/kgdb_y.cfg
@@ -0,0 +1,9 @@
1# depends
2CONFIG_EXPERIMENTAL=y
3
4# configs
5CONFIG_CONSOLE_POLL=y
6CONFIG_KGDB=y
7CONFIG_KGDB_SERIAL_CONSOLE=y
8CONFIG_KGDB_KDB=y
9CONFIG_MAGIC_SYSRQ=y
diff --git a/features/kgdb/kgdb_y.scc b/features/kgdb/kgdb_y.scc
new file mode 100644
index 0000000..17cb245
--- /dev/null
+++ b/features/kgdb/kgdb_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options required for kgdb support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware kgdb_y.cfg
diff --git a/features/kprobes/kprobes_n.cfg b/features/kprobes/kprobes_n.cfg
new file mode 100644
index 0000000..c29ee6a
--- /dev/null
+++ b/features/kprobes/kprobes_n.cfg
@@ -0,0 +1,2 @@
1CONFIG_KPROBES=n
2CONFIG_KRETPROBES=n
diff --git a/features/kprobes/kprobes_n.scc b/features/kprobes/kprobes_n.scc
new file mode 100644
index 0000000..d33e96b
--- /dev/null
+++ b/features/kprobes/kprobes_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for kprobes support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware kprobes_n.cfg
diff --git a/features/ksm/ksm_n.cfg b/features/ksm/ksm_n.cfg
new file mode 100644
index 0000000..129dd85
--- /dev/null
+++ b/features/ksm/ksm_n.cfg
@@ -0,0 +1 @@
CONFIG_KSM=n
diff --git a/features/ksm/ksm_n.scc b/features/ksm/ksm_n.scc
new file mode 100644
index 0000000..dd84ae5
--- /dev/null
+++ b/features/ksm/ksm_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable Kernel Samepage Merging"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware ksm_n.cfg
diff --git a/features/ksm/ksm_y.cfg b/features/ksm/ksm_y.cfg
new file mode 100644
index 0000000..757efcb
--- /dev/null
+++ b/features/ksm/ksm_y.cfg
@@ -0,0 +1 @@
CONFIG_KSM=y
diff --git a/features/ksm/ksm_y.scc b/features/ksm/ksm_y.scc
new file mode 100644
index 0000000..dfcf60e
--- /dev/null
+++ b/features/ksm/ksm_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable Kernel Samepage Merging"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware ksm_y.cfg
diff --git a/features/kvm/guest_kvm_y.cfg b/features/kvm/guest_kvm_y.cfg
new file mode 100644
index 0000000..95dfb75
--- /dev/null
+++ b/features/kvm/guest_kvm_y.cfg
@@ -0,0 +1,12 @@
1HYPERVISOR_GUEST=y
2CONFIG_KVM_GUEST=y
3CONFIG_KVM_DEBUG_FS=n
4CONFIG_PARAVIRT_TIME_ACCOUNTING=y
5CONFIG_PARAVIRT_CLOCK=y
6CONFIG_PARAVIRT=y
7CONFIG_PARAVIRT_DEBUG=n
8CONFIG_PARAVIRT_SPINLOCKS=y
9CONFIG_QUEUED_LOCK_STAT=y
10
11CONFIG_SERIAL_8250=y
12CONFIG_SERIAL_8250_CONSOLE=y
diff --git a/features/kvm/guest_kvm_y.scc b/features/kvm/guest_kvm_y.scc
new file mode 100644
index 0000000..d95413f
--- /dev/null
+++ b/features/kvm/guest_kvm_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable KVM guest support"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware guest_kvm_y.cfg
diff --git a/features/kvm/guest_n.cfg b/features/kvm/guest_n.cfg
new file mode 100644
index 0000000..2a046f8
--- /dev/null
+++ b/features/kvm/guest_n.cfg
@@ -0,0 +1,4 @@
1HYPERVISOR_GUEST=n
2CONFIG_PARAVIRT=n
3CONFIG_KVM_GUEST=n
4CONFIG_VIRTIO=n
diff --git a/features/kvm/guest_n.scc b/features/kvm/guest_n.scc
new file mode 100644
index 0000000..71020d6
--- /dev/null
+++ b/features/kvm/guest_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable guest support"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware guest_n.cfg
5
diff --git a/features/kvm/host_n.cfg b/features/kvm/host_n.cfg
new file mode 100644
index 0000000..9c1302a
--- /dev/null
+++ b/features/kvm/host_n.cfg
@@ -0,0 +1,2 @@
1CONFIG_VIRTUALIZATION=n
2CONFIG_VHOST=n
diff --git a/features/kvm/host_n.scc b/features/kvm/host_n.scc
new file mode 100644
index 0000000..b4b3cde
--- /dev/null
+++ b/features/kvm/host_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable guest support"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware host_n.cfg
5
diff --git a/features/kvm/qemu-kvm_m.cfg b/features/kvm/qemu-kvm_m.cfg
new file mode 100644
index 0000000..14e6582
--- /dev/null
+++ b/features/kvm/qemu-kvm_m.cfg
@@ -0,0 +1,30 @@
1CONFIG_HIGH_RES_TIMERS=y
2CONFIG_HAVE_KVM=y
3CONFIG_VIRTUALIZATION=y
4CONFIG_PREEMPT_NOTIFIERS=y
5CONFIG_MMU_NOTIFIER=y
6CONFIG_ANON_INODES=y
7CONFIG_HAVE_KVM_IRQCHIP=y
8CONFIG_HAVE_KVM_IRQFD=y
9CONFIG_IRQ_BYPASS_MANAGER=y
10CONFIG_HAVE_KVM_IRQ_BYPASS=y
11CONFIG_HAVE_KVM_IRQ_ROUTING=y
12CONFIG_HAVE_KVM_EVENTFD=y
13CONFIG_KVM_ASYNC_PF=y
14CONFIG_USER_RETURN_NOTIFIER=y
15CONFIG_KVM_MMIO=y
16CONFIG_TASKSTATS=y
17CONFIG_TASK_DELAY_ACCT=y
18CONFIG_PERF_EVENTS=y
19CONFIG_HAVE_KVM_MSI=y
20CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
21CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
22CONFIG_KVM_VFIO=y
23CONFIG_SRCU=y
24
25CONFIG_KVM=m
26CONFIG_KVM_INTEL=m
27CONFIG_KVM_AMD=m
28CONFIG_KVM_MMU_AUDIT=n
29CONFIG_KVM_DEVICE_ASSIGNMENT=n
30
diff --git a/features/kvm/qemu-kvm_m.scc b/features/kvm/qemu-kvm_m.scc
new file mode 100644
index 0000000..ad21fa1
--- /dev/null
+++ b/features/kvm/qemu-kvm_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable KVM host support"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware qemu-kvm_m.cfg
diff --git a/features/kvm/virtFS_y.cfg b/features/kvm/virtFS_y.cfg
new file mode 100644
index 0000000..c9fefa1
--- /dev/null
+++ b/features/kvm/virtFS_y.cfg
@@ -0,0 +1,4 @@
1CONFIG_NET_9P=y
2CONFIG_NET_9P_VIRTIO=y
3CONFIG_9P_FS=y
4CONFIG_9P_FS_POSIX_ACL=y
diff --git a/features/kvm/virtFS_y.scc b/features/kvm/virtFS_y.scc
new file mode 100644
index 0000000..a3fd078
--- /dev/null
+++ b/features/kvm/virtFS_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable Plan 9 folder sharing over Virtio - I/O virtualization framework"
2define KFEATURE_COMPATIBILITY arch
3
4kconf non-hardware virtFS_y.cfg
diff --git a/features/kvm/virtio_balloon_y.cfg b/features/kvm/virtio_balloon_y.cfg
new file mode 100644
index 0000000..25119df
--- /dev/null
+++ b/features/kvm/virtio_balloon_y.cfg
@@ -0,0 +1,2 @@
1CONFIG_VIRTIO=y
2CONFIG_VIRTIO_BALLOON=y
diff --git a/features/kvm/virtio_balloon_y.scc b/features/kvm/virtio_balloon_y.scc
new file mode 100644
index 0000000..a4f0b97
--- /dev/null
+++ b/features/kvm/virtio_balloon_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "virtio support memory ballooning)"
2define KFEATURE_COMPATIBILITY arch
3
4kconf non-hardware virtio_balloon_y.cfg
diff --git a/features/kvm/virtio_caif_y.cfg b/features/kvm/virtio_caif_y.cfg
new file mode 100644
index 0000000..2af936b
--- /dev/null
+++ b/features/kvm/virtio_caif_y.cfg
@@ -0,0 +1,5 @@
1CONFIG_CAIF=y
2CONFIG_HAS_DMA=y
3CONFIG_VHOST_RING=y
4CONFIG_VIRTIO=y
5CONFIG_CAIF_VIRTIO=y
diff --git a/features/kvm/virtio_caif_y.scc b/features/kvm/virtio_caif_y.scc
new file mode 100644
index 0000000..04d5ac4
--- /dev/null
+++ b/features/kvm/virtio_caif_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "CAIF virtio transport driver"
2define KFEATURE_COMPATIBILITY arch
3
4kconf non-hardware guest_caif_y.cfg
diff --git a/features/kvm/virtio_input_y.cfg b/features/kvm/virtio_input_y.cfg
new file mode 100644
index 0000000..e83d993
--- /dev/null
+++ b/features/kvm/virtio_input_y.cfg
@@ -0,0 +1,2 @@
1CONFIG_VIRTIO=y
2CONFIG_VIRTIO_INPUT=y
diff --git a/features/kvm/virtio_input_y.scc b/features/kvm/virtio_input_y.scc
new file mode 100644
index 0000000..b3e3a9a
--- /dev/null
+++ b/features/kvm/virtio_input_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "virtio support for input(keyboard, mice...) devices"
2define KFEATURE_COMPATIBILITY arch
3
4kconf non-hardware virtio_input_y.cfg
diff --git a/features/kvm/virtio_pci_legacy_y.cfg b/features/kvm/virtio_pci_legacy_y.cfg
new file mode 100644
index 0000000..4df21c5
--- /dev/null
+++ b/features/kvm/virtio_pci_legacy_y.cfg
@@ -0,0 +1,3 @@
1CONFIG_VIRTIO=y
2CONFIG_VIRTIO_PCI=y
3CONFIG_VIRTIO_PCI_LEGACY=y
diff --git a/features/kvm/virtio_pci_legacy_y.scc b/features/kvm/virtio_pci_legacy_y.scc
new file mode 100644
index 0000000..fcdf9e4
--- /dev/null
+++ b/features/kvm/virtio_pci_legacy_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "virtio support for leagacy PCI devices"
2define KFEATURE_COMPATIBILITY arch
3
4kconf non-hardware virtio_pci_legacy_y.cfg
diff --git a/features/kvm/virtio_y.cfg b/features/kvm/virtio_y.cfg
new file mode 100644
index 0000000..ff97d75
--- /dev/null
+++ b/features/kvm/virtio_y.cfg
@@ -0,0 +1,28 @@
1CONFIG_VIRTIO=y
2
3CONFIG_VIRTIO_PCI=y
4CONFIG_VIRTIO_PCI_LEGACY=n
5CONFIG_MIPS_PCI_VIRTIO=n
6
7CONFIG_VIRTIO_NET=y
8CONFIG_VIRTIO_BLK=y
9CONFIG_SCSI_VIRTIO=y
10
11CONFIG_VIRTIO_CONSOLE=y
12
13CONFIG_VIRTIO_MMIO=y
14CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=n
15
16CONFIG_VIRTIO_BALLOON=n
17CONFIG_VIRTIO_INPUT=n
18
19CONFIG_HW_RANDOM_VIRTIO=m
20
21CONFIG_CAIF_VIRTIO=n
22CONFIG_RPMSG_VIRTIO=n
23
24CONFIG_VSOCKETS=m
25CONFIG_VIRTIO_VSOCKETS_COMMON=m
26CONFIG_VIRTIO_VSOCKETS=m
27
28CONFIG_DRM_VIRTIO_GPU=m
diff --git a/features/kvm/virtio_y.scc b/features/kvm/virtio_y.scc
new file mode 100644
index 0000000..a80cfa4
--- /dev/null
+++ b/features/kvm/virtio_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "virtio support (core,pci,ring,net,blk,mmio)"
2define KFEATURE_COMPATIBILITY arch
3
4kconf non-hardware virtio_y.cfg
diff --git a/features/latencytop/latencytop_y.cfg b/features/latencytop/latencytop_y.cfg
new file mode 100644
index 0000000..abf5d3b
--- /dev/null
+++ b/features/latencytop/latencytop_y.cfg
@@ -0,0 +1,4 @@
1CONFIG_KALLSYMS_ALL=y
2CONFIG_SCHED_DEBUG=y
3CONFIG_SCHEDSTATS=y
4CONFIG_LATENCYTOP=y
diff --git a/features/latencytop/latencytop_y.scc b/features/latencytop/latencytop_y.scc
new file mode 100644
index 0000000..23f8bab
--- /dev/null
+++ b/features/latencytop/latencytop_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options required for latencytop support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware latencytop_y.cfg
diff --git a/features/loopdev/loopdev_n.cfg b/features/loopdev/loopdev_n.cfg
new file mode 100644
index 0000000..c8d2992
--- /dev/null
+++ b/features/loopdev/loopdev_n.cfg
@@ -0,0 +1,2 @@
1CONFIG_BLK_DEV_LOOP=n
2CONFIG_BLK_DEV_CRYPTOLOOP=n
diff --git a/features/loopdev/loopdev_n.scc b/features/loopdev/loopdev_n.scc
new file mode 100644
index 0000000..3446f2f
--- /dev/null
+++ b/features/loopdev/loopdev_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable loopdev support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware loopdev_n.cfg
diff --git a/features/lowlatency/hz_1000.cfg b/features/lowlatency/hz_1000.cfg
new file mode 100644
index 0000000..cfe38e6
--- /dev/null
+++ b/features/lowlatency/hz_1000.cfg
@@ -0,0 +1,4 @@
1
2CONFIG_HZ_1000=y
3CONFIG_HZ=1000
4
diff --git a/features/lowlatency/lowlatency_y.scc b/features/lowlatency/lowlatency_y.scc
new file mode 100644
index 0000000..eaf745a
--- /dev/null
+++ b/features/lowlatency/lowlatency_y.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Enable low latency kernel configuration"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware preempt.cfg
5kconf non-hardware hz_1000.cfg
diff --git a/features/lowlatency/preempt.cfg b/features/lowlatency/preempt.cfg
new file mode 100644
index 0000000..a3bbe94
--- /dev/null
+++ b/features/lowlatency/preempt.cfg
@@ -0,0 +1,5 @@
1CONFIG_IRQ_FORCED_THREADING=y
2CONFIG_PREEMPT_RCU=y
3
4CONFIG_PREEMPT=y
5CONFIG_PREEMPT_COUNT=y
diff --git a/features/lttng/lttng_y.cfg b/features/lttng/lttng_y.cfg
new file mode 100644
index 0000000..1334194
--- /dev/null
+++ b/features/lttng/lttng_y.cfg
@@ -0,0 +1,20 @@
1CONFIG_MODULES=y
2CONFIG_KALLSYMS=y
3CONFIG_HIGH_RES_TIMERS=y
4CONFIG_TRACEPOINTS=y
5CONFIG_FTRACE=y
6CONFIG_PERF_EVENTS=y
7CONFIG_EVENT_TRACING=y
8CONFIG_KPROBES=y
9CONFIG_KRETPROBES=y
10CONFIG_FUNCTION_TRACER=y
11CONFIG_FUNCTION_GRAPH_TRACER=y
12CONFIG_IRQSOFF_TRACER=y
13CONFIG_PREEMPT_TRACER=y
14CONFIG_SCHED_TRACER=y
15CONFIG_NOP_TRACER=y
16CONFIG_CONTEXT_SWITCH_TRACER=y
17CONFIG_GENERIC_TRACER=y
18CONFIG_TRACER_MAX_TRACE=y
19CONFIG_TRACER_SNAPSHOT=y
20CONFIG_STACK_TRACER=n
diff --git a/features/lttng/lttng_y.scc b/features/lttng/lttng_y.scc
new file mode 100644
index 0000000..2e41b90
--- /dev/null
+++ b/features/lttng/lttng_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options required for lttng support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware lttng_y.cfg
diff --git a/features/lxc/lxc_y.cfg b/features/lxc/lxc_y.cfg
new file mode 100644
index 0000000..8710044
--- /dev/null
+++ b/features/lxc/lxc_y.cfg
@@ -0,0 +1,42 @@
1CONFIG_NAMESPACES=y
2CONFIG_UTS_NS=y
3CONFIG_IPC_NS=y
4CONFIG_PID_NS=y
5CONFIG_USER_NS=y
6CONFIG_NET_NS=y
7DEVPTS_MULTIPLE_INSTANCES=y
8
9CONFIG_CGROUPS=y
10CONFIG_CGROUP_NS=y
11CONFIG_CGROUP_DEVICE=y
12CONFIG_CGROUP_SCHED=y
13CONFIG_CGROUP_CPUACCT=y
14CONFIG_CGROUP_MEM_RES_CTLR=y
15CONFIG_CPUSETS=y
16
17CONFIG_VETH=y
18CONFIG_MACVLAN=y
19CONFIG_VLAN_8021Q=y
20CONFIG_BRIDGE=y
21CONFIG_NETFILTER_ADVANCED=y
22CONFIG_NF_NAT_IPV4=y
23CONFIG_IP_NF_TARGET_MASQUERADE=y
24CONFIG_NF_DEFRAG_IPV6=y
25CONFIG_NF_CONNTRACK_IPV6=y
26CONFIG_NF_NAT_IPV6=y
27CONFIG_NF_NAT_MASQUERADE_IPV6=y
28CONFIG_IP6_NF_IPTABLES=y
29CONFIG_IP6_NF_NAT=y
30CONFIG_IP6_NF_TARGET_MASQUERADE=y
31# CONFIG_IP6_NF_TARGET_NPT is not set
32CONFIG_NETFILTER_XT_TARGET_CHECKSUM=y
33CONFIG_FUSE_FS=y
34
35CONFIG_CHECKPOINT_RESTORE=y
36CONFIG_FHANDLE=y
37CONFIG_EVENTFD=y
38CONFIG_EPOLL=y
39CONFIG_UNIX_DIAG=y
40CONFIG_INET_DIAG=y
41CONFIG_PACKET_DIAG=y
42CONFIG_NETLINK_DIAG=y
diff --git a/features/lxc/lxc_y.scc b/features/lxc/lxc_y.scc
new file mode 100644
index 0000000..7c7930b
--- /dev/null
+++ b/features/lxc/lxc_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable LXC support as required by lxc-checkconfig"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware lxc_y.cfg
diff --git a/features/mdio/mdio_m.cfg b/features/mdio/mdio_m.cfg
new file mode 100644
index 0000000..c2915e9
--- /dev/null
+++ b/features/mdio/mdio_m.cfg
@@ -0,0 +1 @@
CONFIG_MDIO=m
diff --git a/features/mdio/mdio_m.scc b/features/mdio/mdio_m.scc
new file mode 100644
index 0000000..654555e
--- /dev/null
+++ b/features/mdio/mdio_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Build MDIO support as a module"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware mdio_m.cfg
diff --git a/features/media/media_n.cfg b/features/media/media_n.cfg
new file mode 100644
index 0000000..b84e11e
--- /dev/null
+++ b/features/media/media_n.cfg
@@ -0,0 +1,592 @@
1CONFIG_MEDIA_SUPPORT=n
2
3
4#
5# Multimedia core support
6#
7CONFIG_MEDIA_CAMERA_SUPPORT=n
8CONFIG_MEDIA_ANALOG_TV_SUPPORT=n
9CONFIG_MEDIA_DIGITAL_TV_SUPPORT=n
10CONFIG_MEDIA_RADIO_SUPPORT=n
11# CONFIG_MEDIA_SDR_SUPPORT is not set
12CONFIG_MEDIA_RC_SUPPORT=n
13CONFIG_MEDIA_CONTROLLER=n
14# CONFIG_MEDIA_CONTROLLER_DVB is not set
15CONFIG_VIDEO_DEV=n
16CONFIG_VIDEO_V4L2_SUBDEV_API=n
17CONFIG_VIDEO_V4L2=n
18# CONFIG_VIDEO_ADV_DEBUG is not set
19# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
20# CONFIG_VIDEO_PCI_SKELETON is not set
21CONFIG_VIDEO_TUNER=n
22CONFIG_V4L2_MEM2MEM_DEV=n
23CONFIG_VIDEOBUF_GEN=n
24CONFIG_VIDEOBUF_DMA_SG=n
25CONFIG_VIDEOBUF_VMALLOC=n
26CONFIG_VIDEOBUF_DVB=n
27CONFIG_VIDEOBUF2_CORE=n
28CONFIG_VIDEOBUF2_MEMOPS=n
29CONFIG_VIDEOBUF2_DMA_CONTIG=n
30CONFIG_VIDEOBUF2_VMALLOC=n
31CONFIG_VIDEOBUF2_DMA_SG=n
32CONFIG_VIDEOBUF2_DVB=n
33CONFIG_DVB_CORE=n
34CONFIG_DVB_NET=n
35CONFIG_TTPCI_EEPROM=n
36CONFIG_DVB_MAX_ADAPTERS=8
37CONFIG_DVB_DYNAMIC_MINORS=n
38
39# Media drivers
40#
41CONFIG_RC_CORE=n
42CONFIG_RC_MAP=n
43CONFIG_RC_DECODERS=n
44CONFIG_LIRC=n
45CONFIG_IR_LIRC_CODEC=n
46CONFIG_IR_NEC_DECODER=n
47CONFIG_IR_RC5_DECODER=n
48CONFIG_IR_RC6_DECODER=n
49CONFIG_IR_JVC_DECODER=n
50CONFIG_IR_SONY_DECODER=n
51CONFIG_IR_SANYO_DECODER=n
52CONFIG_IR_SHARP_DECODER=n
53CONFIG_IR_MCE_KBD_DECODER=n
54CONFIG_IR_XMP_DECODER=n
55# CONFIG_RC_DEVICES is not set
56CONFIG_MEDIA_USB_SUPPORT=n
57
58#
59# Webcam devices
60#
61CONFIG_USB_VIDEO_CLASS=n
62CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=n
63CONFIG_USB_GSPCA=n
64CONFIG_USB_M5602=n
65CONFIG_USB_STV06XX=n
66CONFIG_USB_GL860=n
67CONFIG_USB_GSPCA_BENQ=n
68CONFIG_USB_GSPCA_CONEX=n
69CONFIG_USB_GSPCA_CPIA1=n
70# CONFIG_USB_GSPCA_DTCS033 is not set
71CONFIG_USB_GSPCA_ETOMS=n
72CONFIG_USB_GSPCA_FINEPIX=n
73CONFIG_USB_GSPCA_JEILINJ=n
74CONFIG_USB_GSPCA_JL2005BCD=n
75CONFIG_USB_GSPCA_KINECT=n
76CONFIG_USB_GSPCA_KONICA=n
77CONFIG_USB_GSPCA_MARS=n
78CONFIG_USB_GSPCA_MR97310A=n
79CONFIG_USB_GSPCA_NW80X=n
80CONFIG_USB_GSPCA_OV519=n
81CONFIG_USB_GSPCA_OV534=n
82CONFIG_USB_GSPCA_OV534_9=n
83CONFIG_USB_GSPCA_PAC207=n
84CONFIG_USB_GSPCA_PAC7302=n
85CONFIG_USB_GSPCA_PAC7311=n
86CONFIG_USB_GSPCA_SE401=n
87CONFIG_USB_GSPCA_SN9C2028=n
88CONFIG_USB_GSPCA_SN9C20X=n
89CONFIG_USB_GSPCA_SONIXB=n
90CONFIG_USB_GSPCA_SONIXJ=n
91CONFIG_USB_GSPCA_SPCA500=n
92CONFIG_USB_GSPCA_SPCA501=n
93CONFIG_USB_GSPCA_SPCA505=n
94CONFIG_USB_GSPCA_SPCA506=n
95CONFIG_USB_GSPCA_SPCA508=n
96CONFIG_USB_GSPCA_SPCA561=n
97CONFIG_USB_GSPCA_SPCA1528=n
98CONFIG_USB_GSPCA_SQ905=n
99CONFIG_USB_GSPCA_SQ905C=n
100CONFIG_USB_GSPCA_SQ930X=n
101CONFIG_USB_GSPCA_STK014=n
102# CONFIG_USB_GSPCA_STK1135 is not set
103CONFIG_USB_GSPCA_STV0680=n
104CONFIG_USB_GSPCA_SUNPLUS=n
105CONFIG_USB_GSPCA_T613=n
106CONFIG_USB_GSPCA_TOPRO=n
107# CONFIG_USB_GSPCA_TOUPTEK is not set
108CONFIG_USB_GSPCA_TV8532=n
109CONFIG_USB_GSPCA_VC032X=n
110CONFIG_USB_GSPCA_VICAM=n
111CONFIG_USB_GSPCA_XIRLINK_CIT=n
112CONFIG_USB_GSPCA_ZC3XX=n
113CONFIG_USB_PWC=n
114# CONFIG_USB_PWC_DEBUG is not set
115CONFIG_USB_PWC_INPUT_EVDEV=n
116CONFIG_VIDEO_CPIA2=n
117# CONFIG_USB_ZR364XX is not set
118CONFIG_USB_STKWEBCAM=n
119CONFIG_USB_S2255=n
120# CONFIG_VIDEO_USBTV is not set
121
122#
123# Analog TV USB devices
124#
125CONFIG_VIDEO_PVRUSB2=n
126CONFIG_VIDEO_PVRUSB2_SYSFS=n
127CONFIG_VIDEO_PVRUSB2_DVB=n
128# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
129CONFIG_VIDEO_HDPVR=n
130CONFIG_VIDEO_USBVISION=n
131CONFIG_VIDEO_STK1160_COMMON=n
132# CONFIG_VIDEO_STK1160_AC97 is not set
133CONFIG_VIDEO_STK1160=n
134# CONFIG_VIDEO_GO7007 is not set
135
136#
137# Analog/digital TV USB devices
138#
139CONFIG_VIDEO_AU0828=n
140CONFIG_VIDEO_AU0828_V4L2=n
141# CONFIG_VIDEO_AU0828_RC is not set
142CONFIG_VIDEO_CX231XX=n
143CONFIG_VIDEO_CX231XX_RC=n
144CONFIG_VIDEO_CX231XX_ALSA=n
145CONFIG_VIDEO_CX231XX_DVB=n
146CONFIG_VIDEO_TM6000=n
147CONFIG_VIDEO_TM6000_ALSA=n
148CONFIG_VIDEO_TM6000_DVB=n
149
150#
151# Digital TV USB devices
152#
153CONFIG_DVB_USB=n
154# CONFIG_DVB_USB_DEBUG is not set
155CONFIG_DVB_USB_DIB3000MC=n
156CONFIG_DVB_USB_A800=n
157CONFIG_DVB_USB_DIBUSB_MB=n
158# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
159CONFIG_DVB_USB_DIBUSB_MC=n
160CONFIG_DVB_USB_DIB0700=n
161CONFIG_DVB_USB_UMT_010=n
162CONFIG_DVB_USB_CXUSB=n
163CONFIG_DVB_USB_M920X=n
164CONFIG_DVB_USB_DIGITV=n
165CONFIG_DVB_USB_VP7045=n
166CONFIG_DVB_USB_VP702X=n
167CONFIG_DVB_USB_GP8PSK=n
168CONFIG_DVB_USB_NOVA_T_USB2=n
169CONFIG_DVB_USB_TTUSB2=n
170CONFIG_DVB_USB_DTT200U=n
171CONFIG_DVB_USB_OPERA1=n
172CONFIG_DVB_USB_AF9005=n
173CONFIG_DVB_USB_AF9005_REMOTE=n
174CONFIG_DVB_USB_PCTV452E=n
175CONFIG_DVB_USB_DW2102=n
176CONFIG_DVB_USB_CINERGY_T2=n
177CONFIG_DVB_USB_DTV5100=n
178CONFIG_DVB_USB_FRIIO=n
179CONFIG_DVB_USB_AZ6027=n
180CONFIG_DVB_USB_TECHNISAT_USB2=n
181CONFIG_DVB_USB_V2=n
182CONFIG_DVB_USB_AF9015=n
183CONFIG_DVB_USB_AF9035=n
184CONFIG_DVB_USB_ANYSEE=n
185CONFIG_DVB_USB_AU6610=n
186CONFIG_DVB_USB_AZ6007=n
187CONFIG_DVB_USB_CE6230=n
188CONFIG_DVB_USB_EC168=n
189CONFIG_DVB_USB_GL861=n
190CONFIG_DVB_USB_LME2510=n
191CONFIG_DVB_USB_MXL111SF=n
192CONFIG_DVB_USB_RTL28XXU=n
193# CONFIG_DVB_USB_DVBSKY is not set
194CONFIG_DVB_TTUSB_BUDGET=n
195CONFIG_DVB_TTUSB_DEC=n
196CONFIG_SMS_USB_DRV=n
197CONFIG_DVB_B2C2_FLEXCOP_USB=n
198# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
199# CONFIG_DVB_AS102 is not set
200#
201# Webcam, TV (analog/digital) USB devices
202#
203CONFIG_VIDEO_EM28XX=n
204CONFIG_VIDEO_EM28XX_V4L2=n
205CONFIG_VIDEO_EM28XX_ALSA=n
206CONFIG_VIDEO_EM28XX_DVB=n
207CONFIG_VIDEO_EM28XX_RC=n
208CONFIG_MEDIA_PCI_SUPPORT=n
209
210#
211# Media capture support
212#
213# CONFIG_VIDEO_SOLO6X10 is not set
214# CONFIG_VIDEO_TW5864 is not set
215# CONFIG_VIDEO_TW68 is not set
216# CONFIG_VIDEO_TW686X is not set
217CONFIG_VIDEO_ZORAN=n
218CONFIG_VIDEO_ZORAN_DC30=n
219CONFIG_VIDEO_ZORAN_ZR36060=n
220# CONFIG_VIDEO_ZORAN_BUZ is not set
221CONFIG_VIDEO_ZORAN_DC10=n
222CONFIG_VIDEO_ZORAN_LML33=n
223CONFIG_VIDEO_ZORAN_LML33R10=n
224CONFIG_VIDEO_ZORAN_AVS6EYES=n
225
226#
227# Media capture/analog TV support
228#
229CONFIG_VIDEO_IVTV=n
230CONFIG_VIDEO_IVTV_ALSA=n
231CONFIG_VIDEO_FB_IVTV=n
232CONFIG_VIDEO_HEXIUM_GEMINI=n
233CONFIG_VIDEO_HEXIUM_ORION=n
234CONFIG_VIDEO_MXB=n
235# CONFIG_VIDEO_DT3155 is not set
236
237#
238# Media capture/analog/hybrid TV support
239#
240CONFIG_VIDEO_CX18=n
241CONFIG_VIDEO_CX18_ALSA=n
242CONFIG_VIDEO_CX23885=n
243CONFIG_MEDIA_ALTERA_CI=n
244CONFIG_VIDEO_CX25821=n
245CONFIG_VIDEO_CX25821_ALSA=n
246CONFIG_VIDEO_CX88=n
247CONFIG_VIDEO_CX88_ALSA=n
248CONFIG_VIDEO_CX88_BLACKBIRD=n
249CONFIG_VIDEO_CX88_DVB=n
250CONFIG_VIDEO_CX88_ENABLE_VP3054=n
251CONFIG_VIDEO_CX88_VP3054=n
252CONFIG_VIDEO_CX88_MPEG=n
253CONFIG_VIDEO_BT848=n
254CONFIG_DVB_BT8XX=n
255CONFIG_VIDEO_SAA7134=n
256CONFIG_VIDEO_SAA7134_ALSA=n
257CONFIG_VIDEO_SAA7134_RC=n
258CONFIG_VIDEO_SAA7134_DVB=n
259CONFIG_VIDEO_SAA7164=n
260
261#
262# Media digital TV PCI Adapters
263#
264CONFIG_DVB_AV7110_IR=n
265CONFIG_DVB_AV7110=n
266CONFIG_DVB_AV7110_OSD=n
267CONFIG_DVB_BUDGET_CORE=n
268CONFIG_DVB_BUDGET=n
269CONFIG_DVB_BUDGET_CI=n
270CONFIG_DVB_BUDGET_AV=n
271CONFIG_DVB_BUDGET_PATCH=n
272CONFIG_DVB_B2C2_FLEXCOP_PCI=n
273# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set
274CONFIG_DVB_PLUTO2=n
275CONFIG_DVB_DM1105=n
276CONFIG_DVB_PT1=n
277# CONFIG_DVB_PT3 is not set
278CONFIG_MANTIS_CORE=n
279CONFIG_DVB_MANTIS=n
280CONFIG_DVB_HOPPER=n
281CONFIG_DVB_NGENE=n
282CONFIG_DVB_DDBRIDGE=n
283# CONFIG_DVB_SMIPCIE is not set
284# CONFIG_DVB_NETUP_UNIDVB is not set
285# CONFIG_V4L_PLATFORM_DRIVERS is not set
286CONFIG_V4L_MEM2MEM_DRIVERS=n
287CONFIG_VIDEO_MEM2MEM_DEINTERLACE=n
288# CONFIG_VIDEO_SH_VEU is not set
289# CONFIG_V4L_TEST_DRIVERS is not set
290# CONFIG_DVB_PLATFORM_DRIVERS is not set
291
292#
293# Supported MMC/SDIO adapters
294#
295# CONFIG_SMS_SDIO_DRV is not set
296CONFIG_RADIO_ADAPTERS=n
297CONFIG_RADIO_TEA575X=n
298CONFIG_RADIO_SI470X=n
299CONFIG_USB_SI470X=n
300CONFIG_I2C_SI470X=n
301CONFIG_RADIO_SI4713=n
302# CONFIG_USB_SI4713 is not set
303# CONFIG_PLATFORM_SI4713 is not set
304CONFIG_I2C_SI4713=n
305CONFIG_USB_MR800=n
306CONFIG_USB_DSBR=n
307CONFIG_RADIO_MAXIRADIO=n
308CONFIG_RADIO_SHARK=n
309CONFIG_RADIO_SHARK2=n
310CONFIG_USB_KEENE=n
311# CONFIG_USB_RAREMONO is not set
312# CONFIG_USB_MA901 is not set
313CONFIG_RADIO_TEA5764=n
314CONFIG_RADIO_SAA7706H=n
315CONFIG_RADIO_TEF6862=n
316CONFIG_RADIO_WL1273=n
317
318#
319# Texas Instruments WL128x FM driver (ST based)
320#
321CONFIG_MEDIA_COMMON_OPTIONS=n
322
323#
324# common driver options
325#
326CONFIG_VIDEO_CX2341X=n
327CONFIG_VIDEO_TVEEPROM=n
328CONFIG_CYPRESS_FIRMWARE=n
329CONFIG_DVB_B2C2_FLEXCOP=n
330CONFIG_VIDEO_SAA7146=n
331CONFIG_VIDEO_SAA7146_VV=n
332CONFIG_SMS_SIANO_MDTV=n
333CONFIG_SMS_SIANO_RC=n
334
335#
336# Media ancillary drivers (tuners, sensors, i2c, spi, frontends)
337#
338CONFIG_MEDIA_SUBDRV_AUTOSELECT=n
339CONFIG_MEDIA_ATTACH=n
340CONFIG_VIDEO_IR_I2C=n
341
342#
343# Audio decoders, processors and mixers
344#
345CONFIG_VIDEO_TVAUDIO=n
346CONFIG_VIDEO_TDA7432=n
347CONFIG_VIDEO_TDA9840=n
348CONFIG_VIDEO_TEA6415C=n
349CONFIG_VIDEO_TEA6420=n
350CONFIG_VIDEO_MSP3400=n
351CONFIG_VIDEO_CS3308=n
352CONFIG_VIDEO_CS5345=n
353CONFIG_VIDEO_CS53L32A=n
354CONFIG_VIDEO_WM8775=n
355CONFIG_VIDEO_WM8739=n
356CONFIG_VIDEO_VP27SMPX=n
357
358#
359# RDS decoders
360#
361CONFIG_VIDEO_SAA6588=n
362
363#
364# Video decoders
365#
366CONFIG_VIDEO_BT819=n
367CONFIG_VIDEO_BT856=n
368CONFIG_VIDEO_BT866=n
369CONFIG_VIDEO_KS0127=n
370CONFIG_VIDEO_SAA7110=n
371CONFIG_VIDEO_SAA711X=n
372CONFIG_VIDEO_TVP5150=n
373CONFIG_VIDEO_VPX3220=n
374
375#
376# Video and audio decoders
377#
378CONFIG_VIDEO_SAA717X=n
379CONFIG_VIDEO_CX25840=n
380
381#
382# Video encoders
383#
384CONFIG_VIDEO_SAA7127=n
385CONFIG_VIDEO_ADV7170=n
386CONFIG_VIDEO_ADV7175=n
387
388#
389# Camera sensor devices
390#
391CONFIG_VIDEO_MT9V011=n
392
393#
394# Flash devices
395#
396
397#
398# Video improvement chips
399#
400CONFIG_VIDEO_UPD64031A=n
401CONFIG_VIDEO_UPD64083=n
402
403#
404# Audio/Video compression chips
405#
406CONFIG_VIDEO_SAA6752HS=n
407
408#
409# Miscellaneous helper chips
410#
411CONFIG_VIDEO_M52790=n
412
413#
414# Sensors used on soc_camera driver
415#
416CONFIG_MEDIA_TUNER=n
417CONFIG_MEDIA_TUNER_SIMPLE=n
418CONFIG_MEDIA_TUNER_TDA8290=n
419CONFIG_MEDIA_TUNER_TDA827X=n
420CONFIG_MEDIA_TUNER_TDA18271=n
421CONFIG_MEDIA_TUNER_TDA9887=n
422CONFIG_MEDIA_TUNER_TEA5761=n
423CONFIG_MEDIA_TUNER_TEA5767=n
424CONFIG_MEDIA_TUNER_MT20XX=n
425CONFIG_MEDIA_TUNER_MT2060=n
426CONFIG_MEDIA_TUNER_MT2063=n
427CONFIG_MEDIA_TUNER_MT2266=n
428CONFIG_MEDIA_TUNER_MT2131=n
429CONFIG_MEDIA_TUNER_QT1010=n
430CONFIG_MEDIA_TUNER_XC2028=n
431CONFIG_MEDIA_TUNER_XC5000=n
432CONFIG_MEDIA_TUNER_XC4000=n
433CONFIG_MEDIA_TUNER_MXL5005S=n
434CONFIG_MEDIA_TUNER_MXL5007T=n
435CONFIG_MEDIA_TUNER_MC44S803=n
436CONFIG_MEDIA_TUNER_MAX2165=n
437CONFIG_MEDIA_TUNER_TDA18218=n
438CONFIG_MEDIA_TUNER_FC0011=n
439CONFIG_MEDIA_TUNER_FC0012=n
440CONFIG_MEDIA_TUNER_FC0013=n
441CONFIG_MEDIA_TUNER_TDA18212=n
442CONFIG_MEDIA_TUNER_E4000=n
443CONFIG_MEDIA_TUNER_FC2580=n
444CONFIG_MEDIA_TUNER_M88RS6000T=n
445CONFIG_MEDIA_TUNER_TUA9001=n
446CONFIG_MEDIA_TUNER_SI2157=n
447CONFIG_MEDIA_TUNER_IT913X=n
448CONFIG_MEDIA_TUNER_R820T=n
449CONFIG_MEDIA_TUNER_QM1D1C0042=n
450
451#
452# Multistandard (satellite) frontends
453#
454CONFIG_DVB_STB0899=n
455CONFIG_DVB_STB6100=n
456CONFIG_DVB_STV090x=n
457CONFIG_DVB_STV6110x=n
458CONFIG_DVB_M88DS3103=n
459
460#
461# Multistandard (cable + terrestrial) frontends
462#
463CONFIG_DVB_DRXK=n
464CONFIG_DVB_TDA18271C2DD=n
465CONFIG_DVB_SI2165=n
466CONFIG_DVB_MN88472=n
467CONFIG_DVB_MN88473=n
468
469#
470# DVB-S (satellite) frontends
471#
472CONFIG_DVB_CX24110=n
473CONFIG_DVB_CX24123=n
474CONFIG_DVB_MT312=n
475CONFIG_DVB_ZL10036=n
476CONFIG_DVB_ZL10039=n
477CONFIG_DVB_S5H1420=n
478CONFIG_DVB_STV0288=n
479CONFIG_DVB_STB6000=n
480CONFIG_DVB_STV0299=n
481CONFIG_DVB_STV6110=n
482CONFIG_DVB_STV0900=n
483CONFIG_DVB_TDA8083=n
484CONFIG_DVB_TDA10086=n
485CONFIG_DVB_TDA8261=n
486CONFIG_DVB_VES1X93=n
487CONFIG_DVB_TUNER_ITD1000=n
488CONFIG_DVB_TUNER_CX24113=n
489CONFIG_DVB_TDA826X=n
490CONFIG_DVB_TUA6100=n
491CONFIG_DVB_CX24116=n
492CONFIG_DVB_CX24117=n
493CONFIG_DVB_CX24120=n
494CONFIG_DVB_SI21XX=n
495CONFIG_DVB_TS2020=n
496CONFIG_DVB_DS3000=n
497CONFIG_DVB_MB86A16=n
498CONFIG_DVB_TDA10071=n
499
500#
501# DVB-T (terrestrial) frontends
502#
503CONFIG_DVB_SP8870=n
504CONFIG_DVB_SP887X=n
505CONFIG_DVB_CX22700=n
506CONFIG_DVB_CX22702=n
507CONFIG_DVB_DRXD=n
508CONFIG_DVB_L64781=n
509CONFIG_DVB_TDA1004X=n
510CONFIG_DVB_NXT6000=n
511CONFIG_DVB_MT352=n
512CONFIG_DVB_ZL10353=n
513CONFIG_DVB_DIB3000MB=n
514CONFIG_DVB_DIB3000MC=n
515CONFIG_DVB_DIB7000M=n
516CONFIG_DVB_DIB7000P=n
517CONFIG_DVB_TDA10048=n
518CONFIG_DVB_AF9013=n
519CONFIG_DVB_EC100=n
520CONFIG_DVB_STV0367=n
521CONFIG_DVB_CXD2820R=n
522CONFIG_DVB_RTL2830=n
523CONFIG_DVB_RTL2832=n
524CONFIG_DVB_SI2168=n
525# CONFIG_DVB_AS102_FE is not set
526CONFIG_DVB_GP8PSK_FE=n
527
528#
529# DVB-C (cable) frontends
530#
531CONFIG_DVB_VES1820=n
532CONFIG_DVB_TDA10021=n
533CONFIG_DVB_TDA10023=n
534CONFIG_DVB_STV0297=n
535
536#
537# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
538#
539CONFIG_DVB_NXT200X=n
540CONFIG_DVB_OR51211=n
541CONFIG_DVB_OR51132=n
542CONFIG_DVB_BCM3510=n
543CONFIG_DVB_LGDT330X=n
544CONFIG_DVB_LGDT3305=n
545CONFIG_DVB_LGDT3306A=n
546CONFIG_DVB_LG2160=n
547CONFIG_DVB_S5H1409=n
548CONFIG_DVB_AU8522=n
549CONFIG_DVB_AU8522_DTV=n
550CONFIG_DVB_AU8522_V4L=n
551CONFIG_DVB_S5H1411=n
552
553#
554# ISDB-T (terrestrial) frontends
555#
556CONFIG_DVB_S921=n
557CONFIG_DVB_DIB8000=n
558CONFIG_DVB_MB86A20S=n
559
560#
561# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
562#
563CONFIG_DVB_TC90522=n
564
565#
566# Digital terrestrial only tuners/PLL
567#
568CONFIG_DVB_PLL=n
569CONFIG_DVB_TUNER_DIB0070=n
570CONFIG_DVB_TUNER_DIB0090=n
571
572#
573# SEC control devices for DVB-S
574#
575CONFIG_DVB_DRX39XYJ=n
576CONFIG_DVB_LNBP21=n
577CONFIG_DVB_LNBP22=n
578CONFIG_DVB_ISL6405=n
579CONFIG_DVB_ISL6421=n
580CONFIG_DVB_ISL6423=n
581CONFIG_DVB_A8293=n
582CONFIG_DVB_LGS8GXX=n
583CONFIG_DVB_ATBM8830=n
584CONFIG_DVB_TDA665x=n
585CONFIG_DVB_IX2505V=n
586CONFIG_DVB_M88RS2000=n
587CONFIG_DVB_AF9033=n
588
589#
590# Tools to develop new frontends
591#
592CONFIG_DVB_DUMMY_FE=n
diff --git a/features/media/media_n.scc b/features/media/media_n.scc
new file mode 100644
index 0000000..8e9b66e
--- /dev/null
+++ b/features/media/media_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for media support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware media_n.cfg
diff --git a/features/memorydbg/memorydbg_n.cfg b/features/memorydbg/memorydbg_n.cfg
new file mode 100644
index 0000000..fb92cde
--- /dev/null
+++ b/features/memorydbg/memorydbg_n.cfg
@@ -0,0 +1,8 @@
1CONFIG_DEBUG_KMEMLEAK=n
2CONFIG_DEBUG_STACK_USAGE=n
3CONFIG_DEBUG_VM=n
4CONFIG_DEBUG_VIRTUAL=n
5CONFIG_DEBUG_MEMORY_INIT=n
6CONFIG_DEBUG_PER_CPU_MAPS=n
7CONFIG_DEBUG_STACKOVERFLOW=n
8CONFIG_KMEMCHECK=n
diff --git a/features/memorydbg/memorydbg_n.scc b/features/memorydbg/memorydbg_n.scc
new file mode 100644
index 0000000..1e960c3
--- /dev/null
+++ b/features/memorydbg/memorydbg_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for memory debug support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware memorydbg_n.cfg
diff --git a/features/memorydbg/memorydbg_y.cfg b/features/memorydbg/memorydbg_y.cfg
new file mode 100644
index 0000000..b92e7d4
--- /dev/null
+++ b/features/memorydbg/memorydbg_y.cfg
@@ -0,0 +1,9 @@
1CONFIG_DEBUG_KMEMLEAK=y
2CONFIG_DEBUG_STACK_USAGE=y
3CONFIG_DEBUG_VM=y
4CONFIG_DEBUG_VIRTUAL=y
5CONFIG_DEBUG_MEMORY_INIT=y
6CONFIG_DEBUG_PER_CPU_MAPS=y
7CONFIG_DEBUG_STACKOVERFLOW=y
8CONFIG_KMEMCHECK=y
9
diff --git a/features/memorydbg/memorydbg_y.scc b/features/memorydbg/memorydbg_y.scc
new file mode 100644
index 0000000..88ce3bf
--- /dev/null
+++ b/features/memorydbg/memorydbg_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options for memory debug support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware memorydbg_y.cfg
diff --git a/features/mii/mii_m.cfg b/features/mii/mii_m.cfg
new file mode 100644
index 0000000..b7d4f65
--- /dev/null
+++ b/features/mii/mii_m.cfg
@@ -0,0 +1 @@
CONFIG_MII=m
diff --git a/features/mii/mii_m.scc b/features/mii/mii_m.scc
new file mode 100644
index 0000000..4899cc5
--- /dev/null
+++ b/features/mii/mii_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Build MII support as a module"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware mii_m.cfg
diff --git a/features/misc/misc_n.cfg b/features/misc/misc_n.cfg
new file mode 100644
index 0000000..998643a
--- /dev/null
+++ b/features/misc/misc_n.cfg
@@ -0,0 +1 @@
CONFIG_INPUT_MISC=n
diff --git a/features/misc/misc_n.scc b/features/misc/misc_n.scc
new file mode 100644
index 0000000..5bd65fe
--- /dev/null
+++ b/features/misc/misc_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for misc support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware misc_n.cfg
diff --git a/features/mmc/mmc_n.cfg b/features/mmc/mmc_n.cfg
new file mode 100644
index 0000000..552d5f8
--- /dev/null
+++ b/features/mmc/mmc_n.cfg
@@ -0,0 +1,29 @@
1CONFIG_MMC=n
2#
3# MMC/SD/SDIO Card Drivers
4#
5CONFIG_MMC_BLOCK=n
6CONFIG_MMC_BLOCK_MINORS=8
7CONFIG_MMC_BLOCK_BOUNCE=n
8# CONFIG_SDIO_UART is not set
9# CONFIG_MMC_TEST is not set
10
11#
12# MMC/SD/SDIO Host Controller Drivers
13#
14CONFIG_MMC_SDHCI=n
15CONFIG_MMC_SDHCI_PCI=n
16CONFIG_MMC_RICOH_MMC=n
17CONFIG_MMC_SDHCI_ACPI=n
18CONFIG_MMC_SDHCI_PLTFM=n
19# CONFIG_MMC_WBSD is not set
20# CONFIG_MMC_TIFM_SD is not set
21# CONFIG_MMC_SPI is not set
22# CONFIG_MMC_CB710 is not set
23# CONFIG_MMC_VIA_SDMMC is not set
24# CONFIG_MMC_VUB300 is not set
25# CONFIG_MMC_USHC is not set
26# CONFIG_MMC_USDHI6ROL0 is not set
27# CONFIG_MMC_TOSHIBA_PCI is not set
28# CONFIG_MMC_MTK is not set
29# CONFIG_MEMSTICK is not set
diff --git a/features/mmc/mmc_n.scc b/features/mmc/mmc_n.scc
new file mode 100644
index 0000000..16442ec
--- /dev/null
+++ b/features/mmc/mmc_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for mmc/sd-card support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware mmc_n.cfg
diff --git a/features/mmc/mmc_sd_m.cfg b/features/mmc/mmc_sd_m.cfg
new file mode 100644
index 0000000..706c2ad
--- /dev/null
+++ b/features/mmc/mmc_sd_m.cfg
@@ -0,0 +1,136 @@
1CONFIG_MTD=m
2# CONFIG_MTD_TESTS is not set
3# CONFIG_MTD_REDBOOT_PARTS is not set
4# CONFIG_MTD_CMDLINE_PARTS is not set
5# CONFIG_MTD_AR7_PARTS is not set
6
7#
8# User Modules And Translation Layers
9#
10# CONFIG_MTD_BLOCK is not set
11# CONFIG_MTD_BLOCK_RO is not set
12# CONFIG_FTL is not set
13# CONFIG_NFTL is not set
14# CONFIG_INFTL is not set
15# CONFIG_RFD_FTL is not set
16# CONFIG_SSFDC is not set
17# CONFIG_SM_FTL is not set
18# CONFIG_MTD_OOPS is not set
19# CONFIG_MTD_SWAP is not set
20# CONFIG_MTD_PARTITIONED_MASTER is not set
21
22#
23# RAM/ROM/Flash chip drivers
24#
25# CONFIG_MTD_CFI is not set
26# CONFIG_MTD_JEDECPROBE is not set
27CONFIG_MTD_MAP_BANK_WIDTH_1=y
28CONFIG_MTD_MAP_BANK_WIDTH_2=y
29CONFIG_MTD_MAP_BANK_WIDTH_4=y
30# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
31# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
32# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
33CONFIG_MTD_CFI_I1=y
34CONFIG_MTD_CFI_I2=y
35# CONFIG_MTD_CFI_I4 is not set
36# CONFIG_MTD_CFI_I8 is not set
37# CONFIG_MTD_RAM is not set
38# CONFIG_MTD_ROM is not set
39# CONFIG_MTD_ABSENT is not set
40
41#
42# Mapping drivers for chip access
43#
44# CONFIG_MTD_COMPLEX_MAPPINGS is not set
45# CONFIG_MTD_INTEL_VR_NOR is not set
46# CONFIG_MTD_PLATRAM is not set
47
48#
49# Self-contained MTD device drivers
50#
51# CONFIG_MTD_PMC551 is not set
52# CONFIG_MTD_DATAFLASH is not set
53# CONFIG_MTD_SST25L is not set
54# CONFIG_MTD_SLRAM is not set
55# CONFIG_MTD_PHRAM is not set
56# CONFIG_MTD_MTDRAM is not set
57# CONFIG_MTD_BLOCK2MTD is not set
58
59#
60# Disk-On-Chip Device Drivers
61#
62# CONFIG_MTD_DOCG3 is not set
63# CONFIG_MTD_NAND is not set
64# CONFIG_MTD_ONENAND is not set
65
66#
67# LPDDR & LPDDR2 PCM memory drivers
68#
69# CONFIG_MTD_LPDDR is not set
70# CONFIG_MTD_SPI_NOR is not set
71# CONFIG_MTD_UBI is not set
72CONFIG_TIFM_CORE=m
73CONFIG_TIFM_7XX1=m
74CONFIG_CB710_CORE=m
75# CONFIG_CB710_DEBUG is not set
76CONFIG_CB710_DEBUG_ASSUMPTIONS=y
77# CONFIG_INTEL_MEI_SPD is not set
78CONFIG_RPMB=m
79# CONFIG_RPMB_INTF_DEV is not set
80CONFIG_MMC=m
81# CONFIG_MMC_DEBUG is not set
82
83#
84# MMC/SD/SDIO Card Drivers
85#
86CONFIG_MMC_BLOCK=m
87CONFIG_MMC_BLOCK_MINORS=8
88CONFIG_MMC_BLOCK_BOUNCE=y
89CONFIG_SDIO_UART=m
90# CONFIG_MMC_TEST is not set
91
92#
93# MMC/SD/SDIO Host Controller Drivers
94#
95CONFIG_MMC_SDHCI=m
96CONFIG_MMC_SDHCI_PCI=m
97# CONFIG_MMC_RICOH_MMC is not set
98CONFIG_MMC_SDHCI_ACPI=m
99CONFIG_MMC_SDHCI_PLTFM=m
100CONFIG_MMC_WBSD=m
101CONFIG_MMC_TIFM_SD=m
102CONFIG_MMC_SPI=m
103CONFIG_MMC_CB710=m
104CONFIG_MMC_VIA_SDMMC=m
105CONFIG_MMC_VUB300=m
106CONFIG_MMC_USHC=m
107CONFIG_MMC_USDHI6ROL0=m
108CONFIG_MMC_TOSHIBA_PCI=m
109CONFIG_MMC_MTK=m
110CONFIG_MEMSTICK=m
111# CONFIG_MEMSTICK_DEBUG is not set
112
113#
114# MemoryStick drivers
115#
116# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
117CONFIG_MSPRO_BLOCK=m
118CONFIG_MS_BLOCK=m
119
120#
121# MemoryStick Host Controller Drivers
122#
123CONFIG_MEMSTICK_TIFM_MS=m
124CONFIG_MEMSTICK_JMICRON_38X=m
125CONFIG_MEMSTICK_R592=m
126# CONFIG_LEDS_TRIGGER_MTD is not set
127CONFIG_LIBNVDIMM=m
128CONFIG_BLK_DEV_PMEM=m
129CONFIG_ND_BLK=m
130CONFIG_ND_CLAIM=y
131CONFIG_ND_BTT=m
132CONFIG_BTT=y
133# CONFIG_JFFS2_FS is not set
134# CONFIG_ROMFS_BACKED_BY_MTD is not set
135# CONFIG_ROMFS_BACKED_BY_BOTH is not set
136CONFIG_CRC7=m
diff --git a/features/mmc/mmc_sd_m.scc b/features/mmc/mmc_sd_m.scc
new file mode 100644
index 0000000..95d54a7
--- /dev/null
+++ b/features/mmc/mmc_sd_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable MMC/SD support as modules"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware mmc_sd_m.cfg
diff --git a/features/mmc/mmc_sd_y.cfg b/features/mmc/mmc_sd_y.cfg
new file mode 100644
index 0000000..79bb712
--- /dev/null
+++ b/features/mmc/mmc_sd_y.cfg
@@ -0,0 +1,136 @@
1CONFIG_MTD=y
2# CONFIG_MTD_TESTS is not set
3# CONFIG_MTD_REDBOOT_PARTS is not set
4# CONFIG_MTD_CMDLINE_PARTS is not set
5# CONFIG_MTD_AR7_PARTS is not set
6
7#
8# User Modules And Translation Layers
9#
10# CONFIG_MTD_BLOCK is not set
11# CONFIG_MTD_BLOCK_RO is not set
12# CONFIG_FTL is not set
13# CONFIG_NFTL is not set
14# CONFIG_INFTL is not set
15# CONFIG_RFD_FTL is not set
16# CONFIG_SSFDC is not set
17# CONFIG_SM_FTL is not set
18# CONFIG_MTD_OOPS is not set
19# CONFIG_MTD_SWAP is not set
20# CONFIG_MTD_PARTITIONED_MASTER is not set
21
22#
23# RAM/ROM/Flash chip drivers
24#
25# CONFIG_MTD_CFI is not set
26# CONFIG_MTD_JEDECPROBE is not set
27CONFIG_MTD_MAP_BANK_WIDTH_1=y
28CONFIG_MTD_MAP_BANK_WIDTH_2=y
29CONFIG_MTD_MAP_BANK_WIDTH_4=y
30# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
31# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
32# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
33CONFIG_MTD_CFI_I1=y
34CONFIG_MTD_CFI_I2=y
35# CONFIG_MTD_CFI_I4 is not set
36# CONFIG_MTD_CFI_I8 is not set
37# CONFIG_MTD_RAM is not set
38# CONFIG_MTD_ROM is not set
39# CONFIG_MTD_ABSENT is not set
40
41#
42# Mapping drivers for chip access
43#
44# CONFIG_MTD_COMPLEX_MAPPINGS is not set
45# CONFIG_MTD_INTEL_VR_NOR is not set
46# CONFIG_MTD_PLATRAM is not set
47
48#
49# Self-contained MTD device drivers
50#
51# CONFIG_MTD_PMC551 is not set
52# CONFIG_MTD_DATAFLASH is not set
53# CONFIG_MTD_SST25L is not set
54# CONFIG_MTD_SLRAM is not set
55# CONFIG_MTD_PHRAM is not set
56# CONFIG_MTD_MTDRAM is not set
57# CONFIG_MTD_BLOCK2MTD is not set
58
59#
60# Disk-On-Chip Device Drivers
61#
62# CONFIG_MTD_DOCG3 is not set
63# CONFIG_MTD_NAND is not set
64# CONFIG_MTD_ONENAND is not set
65
66#
67# LPDDR & LPDDR2 PCM memory drivers
68#
69# CONFIG_MTD_LPDDR is not set
70# CONFIG_MTD_SPI_NOR is not set
71# CONFIG_MTD_UBI is not set
72CONFIG_TIFM_CORE=y
73CONFIG_TIFM_7XX1=y
74CONFIG_CB710_CORE=y
75# CONFIG_CB710_DEBUG is not set
76CONFIG_CB710_DEBUG_ASSUMPTIONS=y
77# CONFIG_INTEL_MEI_SPD is not set
78CONFIG_RPMB=y
79# CONFIG_RPMB_INTF_DEV is not set
80CONFIG_MMC=y
81# CONFIG_MMC_DEBUG is not set
82
83#
84# MMC/SD/SDIO Card Drivers
85#
86CONFIG_MMC_BLOCK=y
87CONFIG_MMC_BLOCK_MINORS=8
88CONFIG_MMC_BLOCK_BOUNCE=y
89CONFIG_SDIO_UART=y
90# CONFIG_MMC_TEST is not set
91
92#
93# MMC/SD/SDIO Host Controller Drivers
94#
95CONFIG_MMC_SDHCI=y
96CONFIG_MMC_SDHCI_PCI=y
97# CONFIG_MMC_RICOH_MMC is not set
98CONFIG_MMC_SDHCI_ACPI=y
99CONFIG_MMC_SDHCI_PLTFM=y
100CONFIG_MMC_WBSD=y
101CONFIG_MMC_TIFM_SD=y
102CONFIG_MMC_SPI=y
103CONFIG_MMC_CB710=y
104CONFIG_MMC_VIA_SDMMC=y
105CONFIG_MMC_VUB300=y
106CONFIG_MMC_USHC=y
107CONFIG_MMC_USDHI6ROL0=y
108CONFIG_MMC_TOSHIBA_PCI=y
109CONFIG_MMC_MTK=y
110CONFIG_MEMSTICK=y
111# CONFIG_MEMSTICK_DEBUG is not set
112
113#
114# MemoryStick drivers
115#
116# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
117CONFIG_MSPRO_BLOCK=y
118CONFIG_MS_BLOCK=y
119
120#
121# MemoryStick Host Controller Drivers
122#
123CONFIG_MEMSTICK_TIFM_MS=y
124CONFIG_MEMSTICK_JMICRON_38X=y
125CONFIG_MEMSTICK_R592=y
126# CONFIG_LEDS_TRIGGER_MTD is not set
127CONFIG_LIBNVDIMM=y
128CONFIG_BLK_DEV_PMEM=y
129CONFIG_ND_BLK=y
130CONFIG_ND_CLAIM=y
131CONFIG_ND_BTT=y
132CONFIG_BTT=y
133# CONFIG_JFFS2_FS is not set
134# CONFIG_ROMFS_BACKED_BY_MTD is not set
135# CONFIG_ROMFS_BACKED_BY_BOTH is not set
136CONFIG_CRC7=y
diff --git a/features/mmc/mmc_sd_y.scc b/features/mmc/mmc_sd_y.scc
new file mode 100644
index 0000000..bf345d4
--- /dev/null
+++ b/features/mmc/mmc_sd_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable MMC/SD support in kernel"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware mmc_sd_y.cfg
diff --git a/features/mouse/mouse_n.cfg b/features/mouse/mouse_n.cfg
new file mode 100644
index 0000000..8e25ad8
--- /dev/null
+++ b/features/mouse/mouse_n.cfg
@@ -0,0 +1,22 @@
1CONFIG_INPUT_MOUSE=n
2CONFIG_MOUSE_PS2=n
3CONFIG_MOUSE_PS2_ALPS=n
4CONFIG_MOUSE_PS2_BYD=n
5CONFIG_MOUSE_PS2_LOGIPS2PP=n
6CONFIG_MOUSE_PS2_SYNAPTICS=n
7CONFIG_MOUSE_PS2_CYPRESS=n
8CONFIG_MOUSE_PS2_LIFEBOOK=n
9CONFIG_MOUSE_PS2_TRACKPOINT=n
10# CONFIG_MOUSE_PS2_ELANTECH is not set
11# CONFIG_MOUSE_PS2_SENTELIC is not set
12# CONFIG_MOUSE_PS2_TOUCHKIT is not set
13CONFIG_MOUSE_PS2_FOCALTECH=n
14# CONFIG_MOUSE_SERIAL is not set
15# CONFIG_MOUSE_APPLETOUCH is not set
16# CONFIG_MOUSE_BCM5974 is not set
17# CONFIG_MOUSE_CYAPA is not set
18# CONFIG_MOUSE_ELAN_I2C is not set
19# CONFIG_MOUSE_VSXXXAA is not set
20# CONFIG_MOUSE_GPIO is not set
21# CONFIG_MOUSE_SYNAPTICS_I2C is not set
22# CONFIG_MOUSE_SYNAPTICS_USB is not set
diff --git a/features/mouse/mouse_n.scc b/features/mouse/mouse_n.scc
new file mode 100644
index 0000000..cda210e
--- /dev/null
+++ b/features/mouse/mouse_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for mouse support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware mouse_n.cfg
diff --git a/features/mousedev/mousedev_n.cfg b/features/mousedev/mousedev_n.cfg
new file mode 100644
index 0000000..40bcfc7
--- /dev/null
+++ b/features/mousedev/mousedev_n.cfg
@@ -0,0 +1,2 @@
1CONFIG_INPUT_MOUSEDEV=n
2CONFIG_INPUT_MOUSEDEV_PSAUX=n
diff --git a/features/mousedev/mousedev_n.scc b/features/mousedev/mousedev_n.scc
new file mode 100644
index 0000000..f18e410
--- /dev/null
+++ b/features/mousedev/mousedev_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for mouse device support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware mousedev_n.cfg
diff --git a/features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.cfg b/features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.cfg
new file mode 100644
index 0000000..0b5ca51
--- /dev/null
+++ b/features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.cfg
@@ -0,0 +1,12 @@
1#
2# DOS/FAT/NT Filesystems
3#
4CONFIG_FAT_FS=n
5CONFIG_MSDOS_FS=n
6CONFIG_VFAT_FS=n
7# CONFIG_VFAT_FS_NO_DUALNAMES is not set
8#CONFIG_FAT_DEFAULT_CODEPAGE=437
9#CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
10# CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES is not set
11# CONFIG_FAT_DEFAULT_UTF8 is not set
12# CONFIG_NTFS_FS is not set
diff --git a/features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.scc b/features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.scc
new file mode 100644
index 0000000..49aecac
--- /dev/null
+++ b/features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable msdos_fat_nt_fs support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware msdos_fat_nt_fs_n.cfg
diff --git a/features/mtd/mtd_y.cfg b/features/mtd/mtd_y.cfg
new file mode 100644
index 0000000..c817fb1
--- /dev/null
+++ b/features/mtd/mtd_y.cfg
@@ -0,0 +1,120 @@
1CONFIG_MTD=y
2# CONFIG_MTD_TESTS is not set
3# CONFIG_MTD_REDBOOT_PARTS is not set
4# CONFIG_MTD_CMDLINE_PARTS is not set
5# CONFIG_MTD_AR7_PARTS is not set
6
7#
8# User Modules And Translation Layers
9#
10CONFIG_MTD_BLKDEVS=y
11# CONFIG_MTD_BLOCK is not set
12# CONFIG_MTD_BLOCK_RO is not set
13CONFIG_FTL=y
14CONFIG_NFTL=y
15CONFIG_NFTL_RW=y
16CONFIG_INFTL=y
17CONFIG_RFD_FTL=y
18CONFIG_SSFDC=y
19CONFIG_SM_FTL=y
20# CONFIG_MTD_OOPS is not set
21# CONFIG_MTD_SWAP is not set
22# CONFIG_MTD_PARTITIONED_MASTER is not set
23
24#
25# RAM/ROM/Flash chip drivers
26#
27CONFIG_MTD_CFI=y
28CONFIG_MTD_JEDECPROBE=y
29CONFIG_MTD_GEN_PROBE=y
30# CONFIG_MTD_CFI_ADV_OPTIONS is not set
31CONFIG_MTD_MAP_BANK_WIDTH_1=y
32CONFIG_MTD_MAP_BANK_WIDTH_2=y
33CONFIG_MTD_MAP_BANK_WIDTH_4=y
34# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
35# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
36# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
37CONFIG_MTD_CFI_I1=y
38CONFIG_MTD_CFI_I2=y
39# CONFIG_MTD_CFI_I4 is not set
40# CONFIG_MTD_CFI_I8 is not set
41# CONFIG_MTD_CFI_INTELEXT is not set
42# CONFIG_MTD_CFI_AMDSTD is not set
43# CONFIG_MTD_CFI_STAA is not set
44CONFIG_MTD_CFI_UTIL=y
45# CONFIG_MTD_RAM is not set
46# CONFIG_MTD_ROM is not set
47# CONFIG_MTD_ABSENT is not set
48
49#
50# Mapping drivers for chip access
51#
52# CONFIG_MTD_COMPLEX_MAPPINGS is not set
53# CONFIG_MTD_PHYSMAP is not set
54# CONFIG_MTD_AMD76XROM is not set
55# CONFIG_MTD_ICHXROM is not set
56# CONFIG_MTD_ESB2ROM is not set
57# CONFIG_MTD_CK804XROM is not set
58# CONFIG_MTD_SCB2_FLASH is not set
59# CONFIG_MTD_NETtel is not set
60# CONFIG_MTD_L440GX is not set
61# CONFIG_MTD_INTEL_VR_NOR is not set
62# CONFIG_MTD_PLATRAM is not set
63
64#
65# Self-contained MTD device drivers
66#
67# CONFIG_MTD_PMC551 is not set
68# CONFIG_MTD_DATAFLASH is not set
69# CONFIG_MTD_M25P80 is not set
70# CONFIG_MTD_SST25L is not set
71# CONFIG_MTD_SLRAM is not set
72# CONFIG_MTD_PHRAM is not set
73# CONFIG_MTD_MTDRAM is not set
74# CONFIG_MTD_BLOCK2MTD is not set
75
76#
77# Disk-On-Chip Device Drivers
78#
79# CONFIG_MTD_DOCG3 is not set
80CONFIG_MTD_NAND_ECC=y
81CONFIG_MTD_NAND_ECC_SMC=y
82CONFIG_MTD_NAND=y
83# CONFIG_MTD_NAND_ECC_BCH is not set
84# CONFIG_MTD_SM_COMMON is not set
85# CONFIG_MTD_NAND_DENALI_PCI is not set
86# CONFIG_MTD_NAND_GPIO is not set
87# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set
88CONFIG_MTD_NAND_IDS=y
89# CONFIG_MTD_NAND_RICOH is not set
90# CONFIG_MTD_NAND_DISKONCHIP is not set
91# CONFIG_MTD_NAND_DOCG4 is not set
92# CONFIG_MTD_NAND_CAFE is not set
93# CONFIG_MTD_NAND_NANDSIM is not set
94# CONFIG_MTD_NAND_PLATFORM is not set
95# CONFIG_MTD_NAND_HISI504 is not set
96# CONFIG_MTD_NAND_MTK is not set
97CONFIG_MTD_ONENAND=y
98# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
99# CONFIG_MTD_ONENAND_GENERIC is not set
100# CONFIG_MTD_ONENAND_OTP is not set
101# CONFIG_MTD_ONENAND_2X_PROGRAM is not set
102
103#
104# LPDDR & LPDDR2 PCM memory drivers
105#
106# CONFIG_MTD_LPDDR is not set
107CONFIG_MTD_SPI_NOR=y
108# CONFIG_MTD_MT81xx_NOR is not set
109CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
110CONFIG_MTD_UBI=y
111CONFIG_MTD_UBI_WL_THRESHOLD=4096
112CONFIG_MTD_UBI_BEB_LIMIT=20
113# CONFIG_MTD_UBI_FASTMAP is not set
114# CONFIG_MTD_UBI_GLUEBI is not set
115# CONFIG_MTD_UBI_BLOCK is not set
116# CONFIG_LEDS_TRIGGER_MTD is not set
117# CONFIG_JFFS2_FS is not set
118# CONFIG_UBIFS_FS is not set
119# CONFIG_ROMFS_BACKED_BY_MTD is not set
120# CONFIG_ROMFS_BACKED_BY_BOTH is not set
diff --git a/features/mtd/mtd_y.scc b/features/mtd/mtd_y.scc
new file mode 100644
index 0000000..306de3f
--- /dev/null
+++ b/features/mtd/mtd_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable in kernel MTD support"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware mtd_y.cfg
diff --git a/features/net/ipv6/sit/sit_n.cfg b/features/net/ipv6/sit/sit_n.cfg
new file mode 100644
index 0000000..65e2141
--- /dev/null
+++ b/features/net/ipv6/sit/sit_n.cfg
@@ -0,0 +1,2 @@
1CONFIG_INET_TUNNEL=m
2# CONFIG_IPV6_SIT is not set
diff --git a/features/net/ipv6/sit/sit_n.scc b/features/net/ipv6/sit/sit_n.scc
new file mode 100644
index 0000000..82a6890
--- /dev/null
+++ b/features/net/ipv6/sit/sit_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable SIT interface"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware sit_n.cfg
diff --git a/features/netblkdev/netblkdev_n.cfg b/features/netblkdev/netblkdev_n.cfg
new file mode 100644
index 0000000..fb81129
--- /dev/null
+++ b/features/netblkdev/netblkdev_n.cfg
@@ -0,0 +1 @@
CONFIG_BLK_DEV_NBD=n
diff --git a/features/netblkdev/netblkdev_n.scc b/features/netblkdev/netblkdev_n.scc
new file mode 100644
index 0000000..e2efac9
--- /dev/null
+++ b/features/netblkdev/netblkdev_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable netblkdev support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware netblkdev_n.cfg
diff --git a/features/netconsole/netconsole_n.cfg b/features/netconsole/netconsole_n.cfg
new file mode 100644
index 0000000..f74f073
--- /dev/null
+++ b/features/netconsole/netconsole_n.cfg
@@ -0,0 +1,3 @@
1CONFIG_NETCONSOLE=n
2CONFIG_NETPOLL=n
3CONFIG_NET_POLL_CONTROLLER=n
diff --git a/features/netconsole/netconsole_n.scc b/features/netconsole/netconsole_n.scc
new file mode 100644
index 0000000..b6c54da
--- /dev/null
+++ b/features/netconsole/netconsole_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable netconsole support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware netconsole_n.cfg
diff --git a/features/netdevices/netdevices_n.cfg b/features/netdevices/netdevices_n.cfg
new file mode 100644
index 0000000..9413d2a
--- /dev/null
+++ b/features/netdevices/netdevices_n.cfg
@@ -0,0 +1,147 @@
1CONFIG_NET_VENDOR_3COM=n
2# CONFIG_VORTEX is not set
3CONFIG_TYPHOON=n
4CONFIG_NET_VENDOR_ADAPTEC=n
5# CONFIG_ADAPTEC_STARFIRE is not set
6CONFIG_NET_VENDOR_AGERE=n
7# CONFIG_ET131X is not set
8CONFIG_NET_VENDOR_ALTEON=n
9# CONFIG_ACENIC is not set
10CONFIG_NET_VENDOR_AMAZON=n
11# CONFIG_ENA_ETHERNET is not set
12CONFIG_NET_VENDOR_AMD=n
13# CONFIG_AMD8111_ETH is not set
14CONFIG_PCNET32=n
15CONFIG_NET_VENDOR_ARC=n
16CONFIG_NET_VENDOR_ATHEROS=n
17CONFIG_ATL2=n
18CONFIG_ATL1=n
19CONFIG_ATL1E=n
20CONFIG_ATL1C=n
21CONFIG_ALX=n
22CONFIG_NET_CADENCE=n
23# CONFIG_MACB is not set
24CONFIG_NET_VENDOR_BROADCOM=n
25# CONFIG_B44 is not set
26# CONFIG_BCMGENET is not set
27# CONFIG_BNX2 is not set
28# CONFIG_CNIC is not set
29CONFIG_TIGON3=n
30CONFIG_BNX2X=n
31CONFIG_BNX2X_SRIOV=n
32CONFIG_BNXT=n
33CONFIG_BNXT_SRIOV=n
34CONFIG_NET_VENDOR_BROCADE=n
35# CONFIG_BNA is not set
36CONFIG_NET_VENDOR_CAVIUM=n
37# CONFIG_THUNDER_NIC_PF is not set
38# CONFIG_THUNDER_NIC_VF is not set
39# CONFIG_THUNDER_NIC_BGX is not set
40# CONFIG_THUNDER_NIC_RGX is not set
41# CONFIG_LIQUIDIO is not set
42CONFIG_NET_VENDOR_CHELSIO=n
43# CONFIG_CHELSIO_T1 is not set
44# CONFIG_CHELSIO_T3 is not set
45# CONFIG_CHELSIO_T4 is not set
46# CONFIG_CHELSIO_T4VF is not set
47CONFIG_NET_VENDOR_CISCO=n
48# CONFIG_ENIC is not set
49CONFIG_NET_VENDOR_DEC=n
50# CONFIG_NET_TULIP is not set
51CONFIG_NET_VENDOR_DLINK=n
52CONFIG_DL2K=n
53# CONFIG_SUNDANCE is not set
54CONFIG_NET_VENDOR_EMULEX=n
55# CONFIG_BE2NET is not set
56CONFIG_NET_VENDOR_EZCHIP=n
57CONFIG_NET_VENDOR_EXAR=n
58# CONFIG_S2IO is not set
59# CONFIG_VXGE is not set
60CONFIG_NET_VENDOR_HP=n
61# CONFIG_HP100 is not set
62CONFIG_NET_VENDOR_MARVELL=n
63# CONFIG_MVMDIO is not set
64# CONFIG_MVNETA_BM is not set
65CONFIG_SKGE=n
66# CONFIG_SKGE_DEBUG is not set
67# CONFIG_SKGE_GENESIS is not set
68CONFIG_SKY2=n
69# CONFIG_SKY2_DEBUG is not set
70CONFIG_NET_VENDOR_MELLANOX=n
71# CONFIG_MLX4_EN is not set
72# CONFIG_MLX4_CORE is not set
73# CONFIG_MLX5_CORE is not set
74# CONFIG_MLXSW_CORE is not set
75CONFIG_NET_VENDOR_MICREL=n
76# CONFIG_KS8842 is not set
77# CONFIG_KS8851 is not set
78# CONFIG_KS8851_MLL is not set
79# CONFIG_KSZ884X_PCI is not set
80CONFIG_NET_VENDOR_MICROCHIP=n
81# CONFIG_ENC28J60 is not set
82# CONFIG_ENCX24J600 is not set
83CONFIG_NET_VENDOR_MYRI=n
84# CONFIG_MYRI10GE is not set
85CONFIG_NET_VENDOR_NATSEMI=n
86# CONFIG_NATSEMI is not set
87# CONFIG_NS83820 is not set
88CONFIG_NET_VENDOR_NETRONOME=n
89# CONFIG_NFP_NETVF is not set
90CONFIG_NET_VENDOR_8390=n
91# CONFIG_NE2K_PCI is not set
92CONFIG_NET_VENDOR_NVIDIA=n
93# CONFIG_FORCEDETH is not set
94CONFIG_NET_VENDOR_OKI=n
95CONFIG_NET_VENDOR_QLOGIC=n
96# CONFIG_QLA3XXX is not set
97# CONFIG_QLCNIC is not set
98# CONFIG_QLGE is not set
99# CONFIG_NETXEN_NIC is not set
100# CONFIG_QED is not set
101CONFIG_NET_VENDOR_QUALCOMM=n
102# CONFIG_QCOM_EMAC is not set
103CONFIG_NET_VENDOR_REALTEK=n
104# CONFIG_ATP is not set
105CONFIG_8139CP=n
106CONFIG_8139TOO=n
107CONFIG_8139TOO_PIO=n
108# CONFIG_8139TOO_TUNE_TWISTER is not set
109# CONFIG_8139TOO_8129 is not set
110# CONFIG_8139_OLD_RX_RESET is not set
111CONFIG_R8169=n
112CONFIG_NET_VENDOR_RENESAS=n
113CONFIG_NET_VENDOR_RDC=n
114# CONFIG_R6040 is not set
115CONFIG_NET_VENDOR_ROCKER=n
116CONFIG_NET_VENDOR_SAMSUNG=n
117# CONFIG_SXGBE_ETH is not set
118CONFIG_NET_VENDOR_SEEQ=n
119CONFIG_NET_VENDOR_SILAN=n
120# CONFIG_SC92031 is not set
121CONFIG_NET_VENDOR_SIS=n
122# CONFIG_SIS900 is not set
123# CONFIG_SIS190 is not set
124CONFIG_NET_VENDOR_SMSC=n
125# CONFIG_EPIC100 is not set
126# CONFIG_SMSC911X is not set
127# CONFIG_SMSC9420 is not set
128CONFIG_NET_VENDOR_STMICRO=n
129# CONFIG_STMMAC_ETH is not set
130CONFIG_NET_VENDOR_SUN=n
131# CONFIG_HAPPYMEAL is not set
132# CONFIG_SUNGEM is not set
133# CONFIG_CASSINI is not set
134# CONFIG_NIU is not set
135CONFIG_NET_PACKET_ENGINE=n
136CONFIG_NET_VENDOR_SYNOPSYS=n
137CONFIG_NET_VENDOR_TEHUTI=n
138# CONFIG_TEHUTI is not set
139CONFIG_NET_VENDOR_TI=n
140# CONFIG_TI_CPSW_ALE is not set
141# CONFIG_TLAN is not set
142CONFIG_NET_VENDOR_VIA=n
143# CONFIG_VIA_RHINE is not set
144# CONFIG_VIA_VELOCITY is not set
145CONFIG_NET_VENDOR_WIZNET=n
146# CONFIG_WIZNET_W5100 is not set
147# CONFIG_WIZNET_W5300 is not set
diff --git a/features/netdevices/netdevices_n.scc b/features/netdevices/netdevices_n.scc
new file mode 100644
index 0000000..b0af6aa
--- /dev/null
+++ b/features/netdevices/netdevices_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for NET devices support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware netdevices_n.cfg
diff --git a/features/netfilter/ct_m.cfg b/features/netfilter/ct_m.cfg
new file mode 100644
index 0000000..9b469c0
--- /dev/null
+++ b/features/netfilter/ct_m.cfg
@@ -0,0 +1,11 @@
1CONFIG_NETFILTER=y
2CONFIG_NETFILTER_ADVANCED=y
3CONFIG_NF_CONNTRACK=y
4
5CONFIG_NETFILTER_XTABLES=y
6
7CONFIG_IP_NF_IPTABLES=y
8CONFIG_IP_NF_RAW=m
9CONFIG_NETFILTER_XT_TARGET_CT=m
10
11CONFIG_NF_CONNTRACK_ZONES=y
diff --git a/features/netfilter/ct_m.scc b/features/netfilter/ct_m.scc
new file mode 100644
index 0000000..3eadf1f
--- /dev/null
+++ b/features/netfilter/ct_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Support for CT target in iptables"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware ct_m.cfg
diff --git a/features/netfilter/ip_vs_m.cfg b/features/netfilter/ip_vs_m.cfg
new file mode 100644
index 0000000..a4ae33d
--- /dev/null
+++ b/features/netfilter/ip_vs_m.cfg
@@ -0,0 +1,4 @@
1CONFIG_NF_CONNTRACK=y
2CONFIG_IP_VS=m
3
4
diff --git a/features/netfilter/ip_vs_m.scc b/features/netfilter/ip_vs_m.scc
new file mode 100644
index 0000000..8be3313
--- /dev/null
+++ b/features/netfilter/ip_vs_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "IP Virtual Server support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware ip_vs_m.cfg
diff --git a/features/netfilter/ipset_m.cfg b/features/netfilter/ipset_m.cfg
new file mode 100644
index 0000000..830a880
--- /dev/null
+++ b/features/netfilter/ipset_m.cfg
@@ -0,0 +1,9 @@
1CONFIG_NETFILTER=y
2
3CONFIG_IP_SET=m
4CONFIG_IP_SET_HASH_NET=m
5
6CONFIG_NETFILTER_ADVANCED=y
7CONFIG_NETFILTER_XTABLES=y
8
9CONFIG_NETFILTER_XT_SET=m
diff --git a/features/netfilter/ipset_m.scc b/features/netfilter/ipset_m.scc
new file mode 100644
index 0000000..eb2a52b
--- /dev/null
+++ b/features/netfilter/ipset_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Support for IP sets"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware ipset_m.cfg
diff --git a/features/netfilter/netfilter_n.cfg b/features/netfilter/netfilter_n.cfg
new file mode 100644
index 0000000..aebe7a9
--- /dev/null
+++ b/features/netfilter/netfilter_n.cfg
@@ -0,0 +1,222 @@
1CONFIG_IP_ROUTE_CLASSID=n
2CONFIG_NETFILTER=n
3# CONFIG_NETFILTER_DEBUG is not set
4CONFIG_NETFILTER_ADVANCED=n
5CONFIG_BRIDGE_NETFILTER=n
6
7#
8# Core Netfilter Configuration
9#
10CONFIG_NETFILTER_INGRESS=n
11CONFIG_NETFILTER_NETLINK=n
12# CONFIG_NETFILTER_NETLINK_ACCT is not set
13CONFIG_NETFILTER_NETLINK_QUEUE=n
14CONFIG_NETFILTER_NETLINK_LOG=n
15CONFIG_NF_CONNTRACK=n
16CONFIG_NF_CONNTRACK_MARK=n
17# CONFIG_NF_CONNTRACK_ZONES is not set
18CONFIG_NF_CONNTRACK_PROCFS=n
19# CONFIG_NF_CONNTRACK_EVENTS is not set
20# CONFIG_NF_CONNTRACK_TIMEOUT is not set
21# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
22# CONFIG_NF_CT_PROTO_DCCP is not set
23CONFIG_NF_CT_PROTO_GRE=n
24CONFIG_NF_CT_PROTO_SCTP=n
25CONFIG_NF_CT_PROTO_UDPLITE=n
26CONFIG_NF_CONNTRACK_AMANDA=n
27CONFIG_NF_CONNTRACK_FTP=n
28CONFIG_NF_CONNTRACK_H323=n
29CONFIG_NF_CONNTRACK_IRC=n
30CONFIG_NF_CONNTRACK_BROADCAST=n
31CONFIG_NF_CONNTRACK_NETBIOS_NS=n
32# CONFIG_NF_CONNTRACK_SNMP is not set
33CONFIG_NF_CONNTRACK_PPTP=n
34CONFIG_NF_CONNTRACK_SANE=n
35CONFIG_NF_CONNTRACK_SIP=n
36CONFIG_NF_CONNTRACK_TFTP=n
37CONFIG_NF_CT_NETLINK=n
38# CONFIG_NF_CT_NETLINK_TIMEOUT is not set
39# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set
40CONFIG_NF_NAT=n
41CONFIG_NF_NAT_NEEDED=n
42CONFIG_NF_NAT_PROTO_UDPLITE=n
43CONFIG_NF_NAT_PROTO_SCTP=n
44CONFIG_NF_NAT_AMANDA=n
45CONFIG_NF_NAT_FTP=n
46CONFIG_NF_NAT_IRC=n
47CONFIG_NF_NAT_SIP=n
48CONFIG_NF_NAT_TFTP=n
49# CONFIG_NF_NAT_REDIRECT is not set
50# CONFIG_NF_TABLES is not set
51CONFIG_NETFILTER_XTABLES=n
52
53#
54# Xtables combined modules
55#
56CONFIG_NETFILTER_XT_MARK=n
57CONFIG_NETFILTER_XT_CONNMARK=n
58
59#
60# Xtables targets
61#
62CONFIG_NETFILTER_XT_TARGET_CHECKSUM=n
63CONFIG_NETFILTER_XT_TARGET_CLASSIFY=n
64CONFIG_NETFILTER_XT_TARGET_CONNMARK=n
65CONFIG_NETFILTER_XT_TARGET_CT=n
66CONFIG_NETFILTER_XT_TARGET_DSCP=n
67CONFIG_NETFILTER_XT_TARGET_HL=n
68# CONFIG_NETFILTER_XT_TARGET_HMARK is not set
69# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
70# CONFIG_NETFILTER_XT_TARGET_LOG is not set
71CONFIG_NETFILTER_XT_TARGET_MARK=n
72CONFIG_NETFILTER_XT_NAT=n
73# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set
74CONFIG_NETFILTER_XT_TARGET_NFLOG=n
75CONFIG_NETFILTER_XT_TARGET_NFQUEUE=n
76CONFIG_NETFILTER_XT_TARGET_NOTRACK=n
77# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
78# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set
79# CONFIG_NETFILTER_XT_TARGET_TEE is not set
80# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set
81CONFIG_NETFILTER_XT_TARGET_TRACE=n
82CONFIG_NETFILTER_XT_TARGET_TCPMSS=n
83# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
84
85#
86# Xtables matches
87#
88CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=n
89# CONFIG_NETFILTER_XT_MATCH_BPF is not set
90# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set
91# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
92CONFIG_NETFILTER_XT_MATCH_COMMENT=n
93CONFIG_NETFILTER_XT_MATCH_CONNBYTES=n
94# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set
95CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=n
96CONFIG_NETFILTER_XT_MATCH_CONNMARK=n
97CONFIG_NETFILTER_XT_MATCH_CONNTRACK=n
98# CONFIG_NETFILTER_XT_MATCH_CPU is not set
99CONFIG_NETFILTER_XT_MATCH_DCCP=n
100# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
101CONFIG_NETFILTER_XT_MATCH_DSCP=n
102CONFIG_NETFILTER_XT_MATCH_ECN=n
103CONFIG_NETFILTER_XT_MATCH_ESP=n
104CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=n
105CONFIG_NETFILTER_XT_MATCH_HELPER=n
106CONFIG_NETFILTER_XT_MATCH_HL=n
107# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set
108# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
109# CONFIG_NETFILTER_XT_MATCH_L2TP is not set
110CONFIG_NETFILTER_XT_MATCH_LENGTH=n
111CONFIG_NETFILTER_XT_MATCH_LIMIT=n
112CONFIG_NETFILTER_XT_MATCH_MAC=n
113CONFIG_NETFILTER_XT_MATCH_MARK=n
114CONFIG_NETFILTER_XT_MATCH_MULTIPORT=n
115# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set
116# CONFIG_NETFILTER_XT_MATCH_OSF is not set
117# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
118CONFIG_NETFILTER_XT_MATCH_POLICY=n
119# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
120CONFIG_NETFILTER_XT_MATCH_PKTTYPE=n
121CONFIG_NETFILTER_XT_MATCH_QUOTA=n
122# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
123CONFIG_NETFILTER_XT_MATCH_REALM=n
124# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
125CONFIG_NETFILTER_XT_MATCH_SCTP=n
126# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
127CONFIG_NETFILTER_XT_MATCH_STATE=n
128CONFIG_NETFILTER_XT_MATCH_STATISTIC=n
129CONFIG_NETFILTER_XT_MATCH_STRING=n
130CONFIG_NETFILTER_XT_MATCH_TCPMSS=n
131# CONFIG_NETFILTER_XT_MATCH_TIME is not set
132CONFIG_NETFILTER_XT_MATCH_U32=n
133# CONFIG_IP_SET is not set
134# CONFIG_IP_VS is not set
135
136#
137# IP: Netfilter Configuration
138#
139CONFIG_NF_DEFRAG_IPV4=n
140CONFIG_NF_CONNTRACK_IPV4=n
141# CONFIG_NF_DUP_IPV4 is not set
142# CONFIG_NF_LOG_ARP is not set
143# CONFIG_NF_LOG_IPV4 is not set
144CONFIG_NF_REJECT_IPV4=n
145CONFIG_NF_NAT_IPV4=n
146CONFIG_NF_NAT_MASQUERADE_IPV4=n
147CONFIG_NF_NAT_PROTO_GRE=n
148CONFIG_NF_NAT_PPTP=n
149CONFIG_NF_NAT_H323=n
150CONFIG_IP_NF_IPTABLES=n
151CONFIG_IP_NF_MATCH_AH=n
152CONFIG_IP_NF_MATCH_ECN=n
153# CONFIG_IP_NF_MATCH_RPFILTER is not set
154CONFIG_IP_NF_MATCH_TTL=n
155CONFIG_IP_NF_FILTER=n
156CONFIG_IP_NF_TARGET_REJECT=n
157# CONFIG_IP_NF_TARGET_SYNPROXY is not set
158CONFIG_IP_NF_NAT=n
159CONFIG_IP_NF_TARGET_MASQUERADE=n
160# CONFIG_IP_NF_TARGET_NETMAP is not set
161# CONFIG_IP_NF_TARGET_REDIRECT is not set
162CONFIG_IP_NF_MANGLE=n
163CONFIG_IP_NF_TARGET_CLUSTERIP=n
164CONFIG_IP_NF_TARGET_ECN=n
165CONFIG_IP_NF_TARGET_TTL=n
166CONFIG_IP_NF_RAW=n
167# CONFIG_IP_NF_SECURITY is not set
168CONFIG_IP_NF_ARPTABLES=n
169CONFIG_IP_NF_ARPFILTER=n
170CONFIG_IP_NF_ARP_MANGLE=n
171
172#
173# IPv6: Netfilter Configuration
174#
175CONFIG_NF_DEFRAG_IPV6=n
176CONFIG_NF_CONNTRACK_IPV6=n
177# CONFIG_NF_DUP_IPV6 is not set
178# CONFIG_NF_REJECT_IPV6 is not set
179# CONFIG_NF_LOG_IPV6 is not set
180CONFIG_NF_NAT_IPV6=n
181CONFIG_NF_NAT_MASQUERADE_IPV6=n
182CONFIG_IP6_NF_IPTABLES=n
183# CONFIG_IP6_NF_MATCH_AH is not set
184CONFIG_IP6_NF_MATCH_EUI64=n
185CONFIG_IP6_NF_MATCH_FRAG=n
186CONFIG_IP6_NF_MATCH_OPTS=n
187CONFIG_IP6_NF_MATCH_HL=n
188CONFIG_IP6_NF_MATCH_IPV6HEADER=n
189# CONFIG_IP6_NF_MATCH_MH is not set
190# CONFIG_IP6_NF_MATCH_RPFILTER is not set
191CONFIG_IP6_NF_MATCH_RT=n
192# CONFIG_IP6_NF_TARGET_HL is not set
193CONFIG_IP6_NF_FILTER=n
194# CONFIG_IP6_NF_TARGET_REJECT is not set
195# CONFIG_IP6_NF_TARGET_SYNPROXY is not set
196CONFIG_IP6_NF_MANGLE=n
197CONFIG_IP6_NF_RAW=n
198# CONFIG_IP6_NF_SECURITY is not set
199CONFIG_IP6_NF_NAT=n
200CONFIG_IP6_NF_TARGET_MASQUERADE=n
201# CONFIG_IP6_NF_TARGET_NPT is not set
202CONFIG_BRIDGE_NF_EBTABLES=n
203CONFIG_BRIDGE_EBT_BROUTE=n
204CONFIG_BRIDGE_EBT_T_FILTER=n
205CONFIG_BRIDGE_EBT_T_NAT=n
206CONFIG_BRIDGE_EBT_802_3=n
207CONFIG_BRIDGE_EBT_AMONG=n
208CONFIG_BRIDGE_EBT_ARP=n
209CONFIG_BRIDGE_EBT_IP=n
210CONFIG_BRIDGE_EBT_IP6=n
211CONFIG_BRIDGE_EBT_LIMIT=n
212CONFIG_BRIDGE_EBT_MARK=n
213CONFIG_BRIDGE_EBT_PKTTYPE=n
214CONFIG_BRIDGE_EBT_STP=n
215CONFIG_BRIDGE_EBT_VLAN=n
216CONFIG_BRIDGE_EBT_ARPREPLY=n
217CONFIG_BRIDGE_EBT_DNAT=n
218CONFIG_BRIDGE_EBT_MARK_T=n
219CONFIG_BRIDGE_EBT_REDIRECT=n
220CONFIG_BRIDGE_EBT_SNAT=n
221CONFIG_BRIDGE_EBT_LOG=n
222CONFIG_BRIDGE_EBT_NFLOG=n
diff --git a/features/netfilter/netfilter_n.scc b/features/netfilter/netfilter_n.scc
new file mode 100644
index 0000000..279aa21
--- /dev/null
+++ b/features/netfilter/netfilter_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable netfilter and conn tracking"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware netfilter_n.cfg
diff --git a/features/netfilter/netfilter_y.cfg b/features/netfilter/netfilter_y.cfg
new file mode 100644
index 0000000..b1c310e
--- /dev/null
+++ b/features/netfilter/netfilter_y.cfg
@@ -0,0 +1,10 @@
1CONFIG_NF_CONNTRACK=y
2CONFIG_NF_CONNTRACK_IPV4=y
3CONFIG_NF_NAT=y
4CONFIG_NETFILTER_XTABLES=y
5CONFIG_NETFILTER_XT_NAT=y
6CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
7CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
8CONFIG_NF_DEFRAG_IPV4=y
9CONFIG_NF_CONNTRACK_IPV4=y
10CONFIG_NF_NAT_IPV4=y
diff --git a/features/netfilter/netfilter_y.scc b/features/netfilter/netfilter_y.scc
new file mode 100644
index 0000000..f0e2e01
--- /dev/null
+++ b/features/netfilter/netfilter_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable netfilter + conn tracking as built-in modules"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware netfilter_y.cfg
diff --git a/features/netfilter/physdev_m.cfg b/features/netfilter/physdev_m.cfg
new file mode 100644
index 0000000..fb42ad0
--- /dev/null
+++ b/features/netfilter/physdev_m.cfg
@@ -0,0 +1,8 @@
1CONFIG_NETFILTER=y
2CONFIG_NETFILTER_ADVANCED=y
3
4CONFIG_BRIDGE=y
5CONFIG_BRIDGE_NETFILTER=y
6
7CONFIG_NETFILTER_XTABLES=y
8CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
diff --git a/features/netfilter/physdev_m.scc b/features/netfilter/physdev_m.scc
new file mode 100644
index 0000000..31f207b
--- /dev/null
+++ b/features/netfilter/physdev_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Support for physdev packet matching"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware physdev_m.cfg
diff --git a/features/netfilter/raw_m.cfg b/features/netfilter/raw_m.cfg
new file mode 100644
index 0000000..221a7bf
--- /dev/null
+++ b/features/netfilter/raw_m.cfg
@@ -0,0 +1,3 @@
1CONFIG_NETFILTER=y
2CONFIG_IP_NF_IPTABLES=y
3CONFIG_IP_NF_RAW=m
diff --git a/features/netfilter/raw_m.scc b/features/netfilter/raw_m.scc
new file mode 100644
index 0000000..3daf6a8
--- /dev/null
+++ b/features/netfilter/raw_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Support for iptables raw table"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware raw_m.cfg
diff --git a/features/nfc/nfc_n.cfg b/features/nfc/nfc_n.cfg
new file mode 100644
index 0000000..428d0eb
--- /dev/null
+++ b/features/nfc/nfc_n.cfg
@@ -0,0 +1,40 @@
1CONFIG_NFC=n
2CONFIG_NFC_DIGITAL=n
3CONFIG_NFC_NCI=n
4CONFIG_NFC_NCI_SPI=n
5# CONFIG_NFC_NCI_UART is not set
6CONFIG_NFC_HCI=n
7CONFIG_NFC_SHDLC=n
8
9#
10# Near Field Communication (NFC) devices
11#
12CONFIG_NFC_TRF7970A=n
13CONFIG_NFC_MEI_PHY=n
14# CONFIG_NFC_SIM is not set
15CONFIG_NFC_PORT100=n
16CONFIG_NFC_FDP=n
17CONFIG_NFC_FDP_I2C=n
18CONFIG_NFC_PN544=n
19CONFIG_NFC_PN544_I2C=n
20CONFIG_NFC_PN544_MEI=n
21CONFIG_NFC_PN533=n
22CONFIG_NFC_PN533_USB=n
23CONFIG_NFC_PN533_I2C=n
24CONFIG_NFC_MICROREAD=n
25CONFIG_NFC_MICROREAD_I2C=n
26CONFIG_NFC_MICROREAD_MEI=n
27CONFIG_NFC_MRVL=n
28CONFIG_NFC_MRVL_USB=n
29CONFIG_NFC_MRVL_I2C=n
30CONFIG_NFC_MRVL_SPI=n
31CONFIG_NFC_ST21NFCA=n
32CONFIG_NFC_ST21NFCA_I2C=n
33CONFIG_NFC_ST_NCI=n
34CONFIG_NFC_ST_NCI_I2C=n
35CONFIG_NFC_ST_NCI_SPI=n
36CONFIG_NFC_NXP_NCI=n
37CONFIG_NFC_NXP_NCI_I2C=n
38CONFIG_NFC_S3FWRN5=n
39CONFIG_NFC_S3FWRN5_I2C=n
40CONFIG_NFC_ST95HF=n
diff --git a/features/nfc/nfc_n.scc b/features/nfc/nfc_n.scc
new file mode 100644
index 0000000..f957501
--- /dev/null
+++ b/features/nfc/nfc_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for nfc support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware nfc_n.cfg
diff --git a/features/nfs/nfs_n.cfg b/features/nfs/nfs_n.cfg
new file mode 100644
index 0000000..a8e60a3
--- /dev/null
+++ b/features/nfs/nfs_n.cfg
@@ -0,0 +1,44 @@
1CONFIG_NETWORK_FILESYSTEMS=n
2CONFIG_NFS_FS=n
3CONFIG_NFS_V2=n
4#CONFIG_NFS_DEF_FILE_IO_SIZE=4096
5CONFIG_NFS_V3=n
6# CONFIG_NFS_V3_ACL is not set
7CONFIG_NFS_V4=n
8# CONFIG_NFS_SWAP is not set
9# CONFIG_NFS_V4_1 is not set
10CONFIG_ROOT_NFS=n
11# CONFIG_NFS_USE_LEGACY_DNS is not set
12CONFIG_NFS_USE_KERNEL_DNS=n
13CONFIG_NFSD=n
14CONFIG_NFSD_V3=n
15# CONFIG_NFSD_V3_ACL is not set
16CONFIG_NFSD_V4=n
17# CONFIG_NFSD_BLOCKLAYOUT is not set
18# CONFIG_NFSD_SCSILAYOUT is not set
19# CONFIG_NFSD_FLEXFILELAYOUT is not set
20# CONFIG_NFSD_V4_SECURITY_LABEL is not set
21# CONFIG_NFSD_FAULT_INJECTION is not set
22CONFIG_GRACE_PERIOD=n
23CONFIG_LOCKD=n
24CONFIG_LOCKD_V4=n
25CONFIG_NFS_COMMON=n
26CONFIG_SUNRPC=n
27CONFIG_SUNRPC_GSS=n
28CONFIG_RPCSEC_GSS_KRB5=n
29# CONFIG_SUNRPC_DEBUG is not set
30# CONFIG_CEPH_FS is not set
31CONFIG_CIFS=n
32# CONFIG_CIFS_STATS is not set
33# CONFIG_CIFS_WEAK_PW_HASH is not set
34# CONFIG_CIFS_UPCALL is not set
35CONFIG_CIFS_XATTR=n
36CONFIG_CIFS_POSIX=n
37# CONFIG_CIFS_ACL is not set
38CONFIG_CIFS_DEBUG=n
39# CONFIG_CIFS_DEBUG2 is not set
40# CONFIG_CIFS_DFS_UPCALL is not set
41# CONFIG_CIFS_SMB2 is not set
42# CONFIG_NCP_FS is not set
43# CONFIG_CODA_FS is not set
44# CONFIG_AFS_FS is not set
diff --git a/features/nfs/nfs_n.scc b/features/nfs/nfs_n.scc
new file mode 100644
index 0000000..4cec9a7
--- /dev/null
+++ b/features/nfs/nfs_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable nfs support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware nfs_n.cfg
diff --git a/features/numa/numa_x86_y.cfg b/features/numa/numa_x86_y.cfg
new file mode 100644
index 0000000..2c26323
--- /dev/null
+++ b/features/numa/numa_x86_y.cfg
@@ -0,0 +1,6 @@
1CONFIG_NUMA=y
2CONFIG_AMD_NUMA=y
3CONFIG_X86_64_ACPI_NUMA=y
4CONFIG_NUMA_EMU=y
5CONFIG_USE_PERCPU_NUMA_NODE_ID=y
6CONFIG_ACPI_NUMA=y
diff --git a/features/numa/numa_x86_y.scc b/features/numa/numa_x86_y.scc
new file mode 100644
index 0000000..a5d3587
--- /dev/null
+++ b/features/numa/numa_x86_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable in kernel NUMA support - x86 specific"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware numa_x86_y.cfg
diff --git a/features/nvme/nvme.cfg b/features/nvme/nvme.cfg
new file mode 100644
index 0000000..4dca776
--- /dev/null
+++ b/features/nvme/nvme.cfg
@@ -0,0 +1,30 @@
1CONFIG_NVME_CORE=y
2CONFIG_BLK_DEV_NVME=y
3# CONFIG_BLK_DEV_NVME_SCSI is not set
4
5
6
7CONFIG_PCI_CNB20LE_QUIRK=y
8CONFIG_HOTPLUG_PCI_PCIE=y
9CONFIG_PCIE_ECRC=y
10CONFIG_PCIEAER_INJECT=y
11CONFIG_PCIEASPM_DEBUG=y
12CONFIG_PCIE_DPC=y
13CONFIG_PCI_DEBUG=y
14CONFIG_PCI_REALLOC_ENABLE_AUTO=y
15CONFIG_PCI_STUB=y
16CONFIG_PCI_PRI=y
17CONFIG_HOTPLUG_PCI_ACPI=y
18# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
19CONFIG_HOTPLUG_PCI_CPCI=y
20# CONFIG_HOTPLUG_PCI_CPCI_ZT5550 is not set
21# CONFIG_HOTPLUG_PCI_CPCI_GENERIC is not set
22CONFIG_PCIE_DW_PLAT=y
23CONFIG_PCIE_DW=y
24CONFIG_BLK_DEV_PCIESSD_MTIP32XX=y
25CONFIG_SATA_AHCI_PLATFORM=y
26CONFIG_SATA_ACARD_AHCI=y
27CONFIG_NVM=y
28CONFIG_NVM_DEBUG=y
29CONFIG_NVM_GENNVM=y
30CONFIG_NVM_RRPC=y
diff --git a/features/nvme/nvme.scc b/features/nvme/nvme.scc
new file mode 100644
index 0000000..b9c7115
--- /dev/null
+++ b/features/nvme/nvme.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable NVMe"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware nvme.cfg
diff --git a/features/openvswitch/ingress_policy.cfg b/features/openvswitch/ingress_policy.cfg
new file mode 100644
index 0000000..e0e09a5
--- /dev/null
+++ b/features/openvswitch/ingress_policy.cfg
@@ -0,0 +1,3 @@
1NET_CLS_BASIC=m
2NET_ACT_POLICE=m
3CONFIG_NET_SCH_INGRESS=m
diff --git a/features/openvswitch/kernel_ovs.scc b/features/openvswitch/kernel_ovs.scc
new file mode 100644
index 0000000..2e3c131
--- /dev/null
+++ b/features/openvswitch/kernel_ovs.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Enable in kernel OpenvSwitch module"
2define KFEATURE_COMPATIBILITY board
3
4include features/openvswitch/openvswitch_support.scc
5kconf non-hardware openvswitch.cfg
diff --git a/features/openvswitch/openvswitch.cfg b/features/openvswitch/openvswitch.cfg
new file mode 100644
index 0000000..82b61f8
--- /dev/null
+++ b/features/openvswitch/openvswitch.cfg
@@ -0,0 +1 @@
CONFIG_OPENVSWITCH=m
diff --git a/features/openvswitch/openvswitch_support.scc b/features/openvswitch/openvswitch_support.scc
new file mode 100644
index 0000000..59d5f36
--- /dev/null
+++ b/features/openvswitch/openvswitch_support.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Enable OpenvSwitch support dependencies in kernel"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware ingress_policy.cfg
5kconf non-hardware tun.cfg
diff --git a/features/openvswitch/tun.cfg b/features/openvswitch/tun.cfg
new file mode 100644
index 0000000..12009e3
--- /dev/null
+++ b/features/openvswitch/tun.cfg
@@ -0,0 +1 @@
CONFIG_TUN=m
diff --git a/features/oprofile/oprofile_y.cfg b/features/oprofile/oprofile_y.cfg
new file mode 100644
index 0000000..4dc6de9
--- /dev/null
+++ b/features/oprofile/oprofile_y.cfg
@@ -0,0 +1,4 @@
1CONFIG_PROFILING=y
2CONFIG_OPROFILE=y
3CONFIG_RING_BUFFER_ALLOW_SWAP=y
4CONFIG_PROFILE_ALL_BRANCHES=y
diff --git a/features/oprofile/oprofile_y.scc b/features/oprofile/oprofile_y.scc
new file mode 100644
index 0000000..8e1b9ed
--- /dev/null
+++ b/features/oprofile/oprofile_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options required for oprofile support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware oprofile_y.cfg
diff --git a/features/overlayfs/overlayfs_m.cfg b/features/overlayfs/overlayfs_m.cfg
new file mode 100644
index 0000000..b30428d
--- /dev/null
+++ b/features/overlayfs/overlayfs_m.cfg
@@ -0,0 +1 @@
CONFIG_OVERLAY_FS=m
diff --git a/features/overlayfs/overlayfs_m.scc b/features/overlayfs/overlayfs_m.scc
new file mode 100644
index 0000000..7d4491c
--- /dev/null
+++ b/features/overlayfs/overlayfs_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Build overlay FS support as a module"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware overlayfs_m.cfg
diff --git a/features/parport/parport_n.cfg b/features/parport/parport_n.cfg
new file mode 100644
index 0000000..1e35578
--- /dev/null
+++ b/features/parport/parport_n.cfg
@@ -0,0 +1,8 @@
1CONFIG_PARPORT=n
2CONFIG_PARPORT_PC=n
3# CONFIG_PARPORT_SERIAL is not set
4# CONFIG_PARPORT_PC_FIFO is not set
5# CONFIG_PARPORT_PC_SUPERIO is not set
6# CONFIG_PARPORT_GSC is not set
7# CONFIG_PARPORT_AX88796 is not set
8# CONFIG_PARPORT_1284 is not set
diff --git a/features/parport/parport_n.scc b/features/parport/parport_n.scc
new file mode 100644
index 0000000..bed7632
--- /dev/null
+++ b/features/parport/parport_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable parport support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware parport_n.cfg
diff --git a/features/pci/pci_iov_m.cfg b/features/pci/pci_iov_m.cfg
new file mode 100644
index 0000000..c52af46
--- /dev/null
+++ b/features/pci/pci_iov_m.cfg
@@ -0,0 +1 @@
CONFIG_PCI_IOV=y
diff --git a/features/pci/pci_iov_m.scc b/features/pci/pci_iov_m.scc
new file mode 100644
index 0000000..1612c3c
--- /dev/null
+++ b/features/pci/pci_iov_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable PCI I/O access"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware pci_iov_m.cfg
diff --git a/features/pci/pci_iov_y.cfg b/features/pci/pci_iov_y.cfg
new file mode 100644
index 0000000..c52af46
--- /dev/null
+++ b/features/pci/pci_iov_y.cfg
@@ -0,0 +1 @@
CONFIG_PCI_IOV=y
diff --git a/features/pci/pci_iov_y.scc b/features/pci/pci_iov_y.scc
new file mode 100644
index 0000000..685f058
--- /dev/null
+++ b/features/pci/pci_iov_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable PCI I/O access"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware pci_iov_y.cfg
diff --git a/features/pcimodules/pcimodules_n.cfg b/features/pcimodules/pcimodules_n.cfg
new file mode 100644
index 0000000..48fa2a1
--- /dev/null
+++ b/features/pcimodules/pcimodules_n.cfg
@@ -0,0 +1,19 @@
1CONFIG_PCI_CNB20LE_QUIRK=n
2CONFIG_HOTPLUG_PCI_PCIE=n
3CONFIG_PCIEASPM_DEBUG=n
4CONFIG_PCI_DEBUG=n
5CONFIG_PCI_REALLOC_ENABLE_AUTO=n
6CONFIG_PCI_STUB=m
7CONFIG_PCI_PRI=n
8CONFIG_HOTPLUG_PCI=n
9CONFIG_HOTPLUG_PCI_ACPI=n
10# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
11CONFIG_HOTPLUG_PCI_CPCI=n
12# CONFIG_HOTPLUG_PCI_CPCI_ZT5550 is not set
13# CONFIG_HOTPLUG_PCI_CPCI_GENERIC is not set
14# CONFIG_HOTPLUG_PCI_SHPC is not set
15#
16# PCI host controller drivers
17#
18CONFIG_PCIE_DW_PLAT=n
19CONFIG_PCIE_DW=n
diff --git a/features/pcimodules/pcimodules_n.scc b/features/pcimodules/pcimodules_n.scc
new file mode 100644
index 0000000..6cad0c5
--- /dev/null
+++ b/features/pcimodules/pcimodules_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable pcimodules support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware pcimodules_n.cfg
diff --git a/features/pcspkr/pcspkr_n.cfg b/features/pcspkr/pcspkr_n.cfg
new file mode 100644
index 0000000..abd7e6f
--- /dev/null
+++ b/features/pcspkr/pcspkr_n.cfg
@@ -0,0 +1 @@
CONFIG_PCSPKR_PLATFORM=n
diff --git a/features/pcspkr/pcspkr_n.scc b/features/pcspkr/pcspkr_n.scc
new file mode 100644
index 0000000..5cab151
--- /dev/null
+++ b/features/pcspkr/pcspkr_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for PC speaker support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware pcspkr_n.cfg
diff --git a/features/perf/perf_n.cfg b/features/perf/perf_n.cfg
new file mode 100644
index 0000000..8392495
--- /dev/null
+++ b/features/perf/perf_n.cfg
@@ -0,0 +1,2 @@
1CONFIG_CGROUP_PERF=n
2CONFIG_PERF_EVENTS=n
diff --git a/features/perf/perf_n.scc b/features/perf/perf_n.scc
new file mode 100644
index 0000000..4c5ebaf
--- /dev/null
+++ b/features/perf/perf_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options required for perf support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware perf_n.cfg
diff --git a/features/perf/perf_y.cfg b/features/perf/perf_y.cfg
new file mode 100644
index 0000000..5fddec0
--- /dev/null
+++ b/features/perf/perf_y.cfg
@@ -0,0 +1,2 @@
1CONFIG_CGROUP_PERF=y
2CONFIG_PERF_EVENTS=y
diff --git a/features/perf/perf_y.scc b/features/perf/perf_y.scc
new file mode 100644
index 0000000..173baf5
--- /dev/null
+++ b/features/perf/perf_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options required for perf support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware perf_y.cfg
diff --git a/features/power_supply/power_supply_n.cfg b/features/power_supply/power_supply_n.cfg
new file mode 100644
index 0000000..92dec05
--- /dev/null
+++ b/features/power_supply/power_supply_n.cfg
@@ -0,0 +1 @@
ONFIG_POWER_SUPPLY=n
diff --git a/features/power_supply/power_supply_n.scc b/features/power_supply/power_supply_n.scc
new file mode 100644
index 0000000..81bce6b
--- /dev/null
+++ b/features/power_supply/power_supply_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable power supply support"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware power_supply_n.cfg
diff --git a/features/powermanagement/powermanagement_n.cfg b/features/powermanagement/powermanagement_n.cfg
new file mode 100644
index 0000000..6248144
--- /dev/null
+++ b/features/powermanagement/powermanagement_n.cfg
@@ -0,0 +1,15 @@
1CONFIG_PM=n
2CONFIG_SUSPEND=n
3CONFIG_SUSPEND_FREEZER=n
4CONFIG_PM_SLEEP=n
5CONFIG_PM_SLEEP_SMP=n
6# CONFIG_PM_AUTOSLEEP is not set
7# CONFIG_PM_WAKELOCKS is not set
8CONFIG_PM_DEBUG=n
9CONFIG_PM_ADVANCED_DEBUG=n
10# CONFIG_PM_TEST_SUSPEND is not set
11CONFIG_PM_SLEEP_DEBUG=n
12# CONFIG_PM_TRACE_RTC is not set
13# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
14CONFIG_ACPI_SLEEP=n
15CONFIG_VT_CONSOLE_SLEEP=n
diff --git a/features/powermanagement/powermanagement_n.scc b/features/powermanagement/powermanagement_n.scc
new file mode 100644
index 0000000..23a2be8
--- /dev/null
+++ b/features/powermanagement/powermanagement_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for power management support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware powermanagement_n.cfg
diff --git a/features/ppp/ppp_n.cfg b/features/ppp/ppp_n.cfg
new file mode 100644
index 0000000..04d84a8
--- /dev/null
+++ b/features/ppp/ppp_n.cfg
@@ -0,0 +1,10 @@
1CONFIG_PPP=n
2CONFIG_PPP_BSDCOMP=n
3CONFIG_PPP_DEFLATE=n
4CONFIG_PPP_FILTER=n
5# CONFIG_PPP_MPPE is not set
6CONFIG_PPP_MULTILINK=n
7CONFIG_PPPOE=n
8# CONFIG_PPTP is not set
9CONFIG_PPP_ASYNC=n
10CONFIG_PPP_SYNC_TTY=n
diff --git a/features/ppp/ppp_n.scc b/features/ppp/ppp_n.scc
new file mode 100644
index 0000000..3d6a8db
--- /dev/null
+++ b/features/ppp/ppp_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable ppp support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware ppp_n.cfg
diff --git a/features/printk/printk_n.cfg b/features/printk/printk_n.cfg
new file mode 100644
index 0000000..7f0df22
--- /dev/null
+++ b/features/printk/printk_n.cfg
@@ -0,0 +1,3 @@
1CONFIG_PRINTK=n
2CONFIG_PRINTK_NMI=n
3CONFIG_X86_VERBOSE_BOOTUP=n
diff --git a/features/printk/printk_n.scc b/features/printk/printk_n.scc
new file mode 100644
index 0000000..3068ffe
--- /dev/null
+++ b/features/printk/printk_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for printk support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware printk_n.cfg
diff --git a/features/printk/printk_y.cfg b/features/printk/printk_y.cfg
new file mode 100644
index 0000000..0fcc9f0
--- /dev/null
+++ b/features/printk/printk_y.cfg
@@ -0,0 +1,4 @@
1CONFIG_PRINTK=y
2CONFIG_PRINTK_NMI=y
3CONFIG_EARLY_PRINTK=y
4CONFIG_X86_VERBOSE_BOOTUP=y
diff --git a/features/printk/printk_y.scc b/features/printk/printk_y.scc
new file mode 100644
index 0000000..7274316
--- /dev/null
+++ b/features/printk/printk_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options for printk support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware printk_y.cfg
diff --git a/features/prockcore/prockcore_n.cfg b/features/prockcore/prockcore_n.cfg
new file mode 100644
index 0000000..aa9e6a4
--- /dev/null
+++ b/features/prockcore/prockcore_n.cfg
@@ -0,0 +1 @@
CONFIG_PROC_KCORE=n
diff --git a/features/prockcore/prockcore_n.scc b/features/prockcore/prockcore_n.scc
new file mode 100644
index 0000000..a2651b5
--- /dev/null
+++ b/features/prockcore/prockcore_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable prockcore support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware prockcore_n.cfg
diff --git a/features/rcu/rcu_nocb_y.cfg b/features/rcu/rcu_nocb_y.cfg
new file mode 100644
index 0000000..8a00738
--- /dev/null
+++ b/features/rcu/rcu_nocb_y.cfg
@@ -0,0 +1,3 @@
1CONFIG_NO_HZ_FULL=y
2CONFIG_RCU_EXPERT=y
3CONFIG_RCU_NOCB_CPU=y
diff --git a/features/rcu/rcu_nocb_y.scc b/features/rcu/rcu_nocb_y.scc
new file mode 100644
index 0000000..dd99a93
--- /dev/null
+++ b/features/rcu/rcu_nocb_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable offloading RCU callback processing on specified CPUs"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware rcu_nocb_y.cfg
diff --git a/features/rcudbg/rcudbg_n.cfg b/features/rcudbg/rcudbg_n.cfg
new file mode 100644
index 0000000..6d122fd
--- /dev/null
+++ b/features/rcudbg/rcudbg_n.cfg
@@ -0,0 +1,4 @@
1CONFIG_RCU_PERF_TEST=n
2CONFIG_RCU_TORTURE_TEST=n
3CONFIG_RCU_TRACE=n
4CONFIG_RCU_EQS_DEBUG=n
diff --git a/features/rcudbg/rcudbg_n.scc b/features/rcudbg/rcudbg_n.scc
new file mode 100644
index 0000000..4d29d10
--- /dev/null
+++ b/features/rcudbg/rcudbg_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for RCU debug support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware rcudbg_n.cfg
diff --git a/features/rcudbg/rcudbg_y.cfg b/features/rcudbg/rcudbg_y.cfg
new file mode 100644
index 0000000..5a12884
--- /dev/null
+++ b/features/rcudbg/rcudbg_y.cfg
@@ -0,0 +1,4 @@
1CONFIG_RCU_PERF_TEST=y
2CONFIG_RCU_TORTURE_TEST=y
3CONFIG_RCU_TRACE=y
4CONFIG_RCU_EQS_DEBUG=y
diff --git a/features/rcudbg/rcudbg_y.scc b/features/rcudbg/rcudbg_y.scc
new file mode 100644
index 0000000..06c8f66
--- /dev/null
+++ b/features/rcudbg/rcudbg_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options for RCU debug support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware rcudbg_y.cfg
diff --git a/features/reduced_kernel_footprint/reduced_kernel_footprint.scc b/features/reduced_kernel_footprint/reduced_kernel_footprint.scc
new file mode 100644
index 0000000..b1c7e4b
--- /dev/null
+++ b/features/reduced_kernel_footprint/reduced_kernel_footprint.scc
@@ -0,0 +1,66 @@
1# Add standard kernel configuration and XZ kernel compression
2include features/std_kernel/std_kernel_y.scc
3
4# Remove all unnecessary kernel feature
5include features/accelerometers/accelerometers_n.scc
6include features/acp/acp_n.scc
7include features/acpi/acpi_n.scc
8include features/agp/agp_n.scc
9include features/ata/ata_n.scc
10include features/backlight/backlight_n.scc
11include features/bug_support/bug_support_n.scc
12include features/bluetooth/bluetooth_n.scc
13include features/bus/pci_cnb20le_n.scc
14include features/cdrom/cdrom_n.scc
15include features/cdrom_fs/cdrom_fs_n.scc
16include features/cgroupdbg/cgroupdbg_n.scc
17include features/debug/debug_kernel_n.scc
18include features/devcoredump/devcoredump_n.scc
19include features/display/display_n.scc
20include features/drm/drm_n.scc
21include features/elf_core_support/elf_core_support_n.scc
22include features/framebuffer/framebuffer_n.scc
23include features/ftrace/ftrace_n.scc
24include features/hdmi/hdmi_n.scc
25include features/hid/hid_n.scc
26include features/hidsensor/hidsensor_n.scc
27include features/ieee802154/ieee802154_n.scc
28include features/inclinometer/inclinometer_n.scc
29include features/input/input_n.scc
30include features/keyboard/keyboard_n.scc
31include features/kgdb/kgdb_n.scc
32include features/kprobes/kprobes_n.scc
33include features/media/media_n.scc
34include features/memorydbg/memorydbg_n.scc
35include features/misc/misc_n.scc
36include features/mmc/mmc_n.scc
37include features/mouse/mouse_n.scc
38include features/mousedev/mousedev_n.scc
39include features/netdevices/netdevices_n.scc
40include features/net/ipv6/sit/sit_n.scc
41include features/nfc/nfc_n.scc
42include features/powermanagement/powermanagement_n.scc
43include features/pcspkr/pcspkr_n.scc
44include features/rcudbg/rcudbg_n.scc
45include features/rfkill/rfkill_n.scc
46include features/runtimetest/runtimetest_n.scc
47include features/sound/sound_n.scc
48include features/staging/staging_n.scc
49include features/tablet/tablet_n.scc
50include features/touchscreen/touchscreen_n.scc
51include features/tracing/tracing_n.scc
52include features/usbGadget/usbgadget_n.scc
53include features/wireless/wireless_n.scc
54include features/wlan/wlan_n.scc
55
56# Added as loadable module
57include features/btrfs/btrfs_m.scc
58include features/intel-e1xxxx/e100_m.scc
59include features/intel-e1xxxx/e1xxxx_m.scc
60include features/ixgbe/ixgbe_m.scc
61include features/mdio/mdio_m.scc
62include features/mii/mii_m.scc
63include features/overlayfs/overlayfs_m.scc
64include features/usbnet/usbnet_m.scc
65include features/usbsupport/usbsupport_m.scc
66include features/xor_blocks/xor_blocks_m.scc
diff --git a/features/reduced_kernel_footprint_guest/reduced_kernel_footprint_guest.scc b/features/reduced_kernel_footprint_guest/reduced_kernel_footprint_guest.scc
new file mode 100644
index 0000000..7fae6cd
--- /dev/null
+++ b/features/reduced_kernel_footprint_guest/reduced_kernel_footprint_guest.scc
@@ -0,0 +1,75 @@
1# Add standard kernel configuration and XZ kernel compression
2include features/std_kernel/std_kernel_y.scc
3
4# Disable unnecessary modules
5include features/bcma/bcma_n.scc
6include features/btrfs/btrfs_n.scc
7include features/compilechecks/compilechecks_n.scc
8include features/i2csupport/i2csupport_n.scc
9include features/isdn/isdn_n.scc
10include features/loopdev/loopdev_n.scc
11include features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.scc
12include features/netblkdev/netblkdev_n.scc
13include features/netconsole/netconsole_n.scc
14include features/netfilter/netfilter_n.scc
15include features/nfs/nfs_n.scc
16include features/parport/parport_n.scc
17include features/pcimodules/pcimodules_n.scc
18include features/ppp/ppp_n.scc
19include features/prockcore/prockcore_n.scc
20include features/serio/serio_n.scc
21include features/slip/slip_n.scc
22include features/bug_support/bug_support_n.scc
23include features/powermanagement/powermanagement_n.scc
24include features/acpi/acpi_n.scc
25include features/cpu_freq/cpu_freq_n.scc
26include features/bluetooth/bluetooth_n.scc
27include features/wireless/wireless_n.scc
28include features/rfkill/rfkill_n.scc
29include features/6lowpan/6lowpan_n.scc
30include features/netdevices/netdevices_n.scc
31include features/media/media_n.scc
32include features/nfc/nfc_n.scc
33include features/sound/sound_n.scc
34include features/usbnet/usbnet_n.scc
35include features/i2csupport/i2csupport_n.scc
36include features/serio/serio_n.scc
37include features/tablet/tablet_n.scc
38include features/mouse/mouse_n.scc
39include features/mousedev/mousedev_n.scc
40include features/keyboard/keyboard_n.scc
41include features/input/input_n.scc
42include features/wlan/wlan_n.scc
43include features/ftrace/ftrace_n.scc
44include features/debug/debug_kernel_n.scc
45include features/ata/ata_n.scc
46include features/cdrom/cdrom_n.scc
47include features/power_supply/power_supply_n.scc
48include features/hwmon/hwmon_n.scc
49include features/thermal/thermal_n.scc
50include features/usbsupport/usbsupport_n.scc
51include features/touchscreen/touchscreen_n.scc
52include features/udev/udev_n.scc
53include features/kprobes/kprobes_n.scc
54include features/acp/acp_n.scc
55include features/agp/agp_n.scc
56include features/backlight/backlight_n.scc
57include features/cdrom_fs/cdrom_fs_n.scc
58include features/cgroupdbg/cgroupdbg_n.scc
59include features/display/display_n.scc
60include features/drm/drm_n.scc
61include features/elf_core_support/elf_core_support_n.scc
62include features/framebuffer/framebuffer_n.scc
63include features/hdmi/hdmi_n.scc
64include features/hid/hid_n.scc
65include features/kprobes/kprobes_n.scc
66include features/mmc/mmc_n.scc
67include features/pcspkr/pcspkr_n.scc
68include features/watchdog/watchdog_n.scc
69include features/vga/vga_n.scc
70include features/intel-e1xxxx/e100_n.scc
71include features/x86_platform/x86_platform_n.scc
72include features/memorydbg/memorydbg_n.scc
73include features/perf/perf_n.cfg
74include features/kgdb/kgdb_n.cfg
75include features/dmiid/dmiid_n.cfg
diff --git a/features/rfkill/rfkill_n.cfg b/features/rfkill/rfkill_n.cfg
new file mode 100644
index 0000000..b8de3ec
--- /dev/null
+++ b/features/rfkill/rfkill_n.cfg
@@ -0,0 +1,3 @@
1CONFIG_RFKILL=n
2CONFIG_RFKILL_LEDS=n
3CONFIG_RFKILL_INPUT=n
diff --git a/features/rfkill/rfkill_n.scc b/features/rfkill/rfkill_n.scc
new file mode 100644
index 0000000..b432c9f
--- /dev/null
+++ b/features/rfkill/rfkill_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for rfkill support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware rfkill_n.cfg
diff --git a/features/runtimetest/runtimetest_n.cfg b/features/runtimetest/runtimetest_n.cfg
new file mode 100644
index 0000000..35ef82b
--- /dev/null
+++ b/features/runtimetest/runtimetest_n.cfg
@@ -0,0 +1,5 @@
1CONFIG_TEST_LIST_SORT=n
2CONFIG_BACKTRACE_SELF_TEST=n
3CONFIG_RBTREE_TEST=n
4CONFIG_INTERVAL_TREE_TEST=n
5CONFIG_PERCPU_TEST=n
diff --git a/features/runtimetest/runtimetest_n.scc b/features/runtimetest/runtimetest_n.scc
new file mode 100644
index 0000000..cc25b0b
--- /dev/null
+++ b/features/runtimetest/runtimetest_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for runtime test support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware runtimetest_n.cfg
diff --git a/features/scsi/scsi_m.cfg b/features/scsi/scsi_m.cfg
new file mode 100644
index 0000000..bb7a9a2
--- /dev/null
+++ b/features/scsi/scsi_m.cfg
@@ -0,0 +1,5 @@
1CONFIG_BLK_DEV_SD=m
2CONFIG_BLK_DEV_SR=m
3
4# Automatically set to =y by CONFIG_BLK_DEV_SR
5CONFIG_BLK_DEV_SR_VENDOR=y
diff --git a/features/scsi/scsi_m.scc b/features/scsi/scsi_m.scc
new file mode 100644
index 0000000..5c64d79
--- /dev/null
+++ b/features/scsi/scsi_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Enable SCSI support as module"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware scsi_m.cfg
diff --git a/features/scsi/scsi_y.cfg b/features/scsi/scsi_y.cfg
new file mode 100644
index 0000000..e52d277
--- /dev/null
+++ b/features/scsi/scsi_y.cfg
@@ -0,0 +1,2 @@
1CONFIG_SCSI=y
2CONFIG_BLK_DEV_SD=y
diff --git a/features/scsi/scsi_y.scc b/features/scsi/scsi_y.scc
new file mode 100644
index 0000000..aca2e19
--- /dev/null
+++ b/features/scsi/scsi_y.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Set SCSI block device support as built in"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware scsi_y.cfg
diff --git a/features/serio/serio_n.cfg b/features/serio/serio_n.cfg
new file mode 100644
index 0000000..c505fdd
--- /dev/null
+++ b/features/serio/serio_n.cfg
@@ -0,0 +1,15 @@
1#
2# Hardware I/O ports
3#
4CONFIG_SERIO=n
5CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=n
6CONFIG_SERIO_I8042=n
7CONFIG_SERIO_SERPORT=n
8# CONFIG_SERIO_CT82C710 is not set
9# CONFIG_SERIO_PCIPS2 is not set
10# CONFIG_SERIO_LIBPS2 is not set
11# CONFIG_SERIO_RAW is not set
12# CONFIG_SERIO_ALTERA_PS2 is not set
13# CONFIG_SERIO_PS2MULT is not set
14# CONFIG_SERIO_ARC_PS2 is not set
15# CONFIG_USERIO is not set
diff --git a/features/serio/serio_n.scc b/features/serio/serio_n.scc
new file mode 100644
index 0000000..389bf1e
--- /dev/null
+++ b/features/serio/serio_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable serio support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware serio_n.cfg
diff --git a/features/slip/slip_n.cfg b/features/slip/slip_n.cfg
new file mode 100644
index 0000000..b5cbd33
--- /dev/null
+++ b/features/slip/slip_n.cfg
@@ -0,0 +1,5 @@
1CONFIG_SLIP=n
2CONFIG_SLHC=n
3CONFIG_SLIP_COMPRESSED=n
4CONFIG_SLIP_SMART=n
5CONFIG_SLIP_MODE_SLIP6=n
diff --git a/features/slip/slip_n.scc b/features/slip/slip_n.scc
new file mode 100644
index 0000000..27b54c8
--- /dev/null
+++ b/features/slip/slip_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable slip support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware slip_n.cfg
diff --git a/features/sound/sound_n.cfg b/features/sound/sound_n.cfg
new file mode 100644
index 0000000..1b78ce9
--- /dev/null
+++ b/features/sound/sound_n.cfg
@@ -0,0 +1,291 @@
1CONFIG_SOUND=n
2# CONFIG_SOUND_OSS_CORE is not set
3CONFIG_SND=n
4CONFIG_SND_TIMER=n
5CONFIG_SND_PCM=n
6CONFIG_SND_PCM_ELD=n
7CONFIG_SND_HWDEP=n
8CONFIG_SND_RAWMIDI=n
9CONFIG_SND_COMPRESS_OFFLOAD=n
10CONFIG_SND_JACK=n
11CONFIG_SND_JACK_INPUT_DEV=n
12CONFIG_SND_SEQUENCER=n
13# CONFIG_SND_SEQ_DUMMY is not set
14# CONFIG_SND_MIXER_OSS is not set
15# CONFIG_SND_PCM_OSS is not set
16CONFIG_SND_PCM_TIMER=n
17# CONFIG_SND_SEQUENCER_OSS is not set
18CONFIG_SND_HRTIMER=n
19CONFIG_SND_SEQ_HRTIMER_DEFAULT=n
20CONFIG_SND_DYNAMIC_MINORS=n
21CONFIG_SND_MAX_CARDS=32
22# CONFIG_SND_SUPPORT_OLD_API is not set
23CONFIG_SND_PROC_FS=n
24CONFIG_SND_VERBOSE_PROCFS=n
25# CONFIG_SND_VERBOSE_PRINTK is not set
26# CONFIG_SND_DEBUG is not set
27CONFIG_SND_VMASTER=n
28CONFIG_SND_DMA_SGBUF=n
29CONFIG_SND_RAWMIDI_SEQ=n
30CONFIG_SND_OPL3_LIB_SEQ=n
31# CONFIG_SND_OPL4_LIB_SEQ is not set
32# CONFIG_SND_SBAWE_SEQ is not set
33CONFIG_SND_EMU10K1_SEQ=n
34CONFIG_SND_MPU401_UART=n
35CONFIG_SND_OPL3_LIB=n
36CONFIG_SND_AC97_CODEC=n
37CONFIG_SND_DRIVERS=n
38# CONFIG_SND_PCSP is not set
39# CONFIG_SND_DUMMY is not set
40CONFIG_SND_ALOOP=n
41# CONFIG_SND_VIRMIDI is not set
42# CONFIG_SND_MTPAV is not set
43# CONFIG_SND_MTS64 is not set
44# CONFIG_SND_SERIAL_U16550 is not set
45# CONFIG_SND_MPU401 is not set
46# CONFIG_SND_PORTMAN2X4 is not set
47CONFIG_SND_AC97_POWER_SAVE=n
48CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
49CONFIG_SND_PCI=n
50# CONFIG_SND_AD1889 is not set
51# CONFIG_SND_ALS300 is not set
52# CONFIG_SND_ALS4000 is not set
53# CONFIG_SND_ALI5451 is not set
54# CONFIG_SND_ASIHPI is not set
55CONFIG_SND_ATIIXP=n
56CONFIG_SND_ATIIXP_MODEM=n
57# CONFIG_SND_AU8810 is not set
58# CONFIG_SND_AU8820 is not set
59# CONFIG_SND_AU8830 is not set
60# CONFIG_SND_AW2 is not set
61# CONFIG_SND_AZT3328 is not set
62# CONFIG_SND_BT87X is not set
63CONFIG_SND_CA0106=n
64CONFIG_SND_CMIPCI=n
65CONFIG_SND_OXYGEN_LIB=n
66CONFIG_SND_OXYGEN=n
67# CONFIG_SND_CS4281 is not set
68# CONFIG_SND_CS46XX is not set
69CONFIG_SND_CTXFI=n
70# CONFIG_SND_DARLA20 is not set
71# CONFIG_SND_GINA20 is not set
72# CONFIG_SND_LAYLA20 is not set
73
74# CONFIG_SND_INDIGODJ is not set
75# CONFIG_SND_INDIGOIOX is not set
76# CONFIG_SND_INDIGODJX is not set
77CONFIG_SND_EMU10K1=n
78CONFIG_SND_EMU10K1X=n
79# CONFIG_SND_ENS1370 is not set
80# CONFIG_SND_ENS1371 is not set
81# CONFIG_SND_ES1938 is not set
82# CONFIG_SND_ES1968 is not set
83# CONFIG_SND_FM801 is not set
84CONFIG_SND_HDSP=n
85CONFIG_SND_HDSPM=n
86CONFIG_SND_ICE1712=n
87CONFIG_SND_ICE1724=n
88CONFIG_SND_INTEL8X0=n
89# CONFIG_SND_INTEL8X0M is not set
90# CONFIG_SND_KORG1212 is not set
91# CONFIG_SND_LOLA is not set
92# CONFIG_SND_LX6464ES is not set
93# CONFIG_SND_MAESTRO3 is not set
94# CONFIG_SND_MIXART is not set
95# CONFIG_SND_NM256 is not set
96# CONFIG_SND_PCXHR is not set
97
98# HD-Audio
99#
100CONFIG_SND_HDA=n
101CONFIG_SND_HDA_INTEL=n
102# CONFIG_SND_HDA_HWDEP is not set
103# CONFIG_SND_HDA_RECONFIG is not set
104# CONFIG_SND_HDA_INPUT_BEEP is not set
105# CONFIG_SND_HDA_PATCH_LOADER is not set
106CONFIG_SND_HDA_CODEC_REALTEK=n
107CONFIG_SND_HDA_CODEC_ANALOG=n
108CONFIG_SND_HDA_CODEC_SIGMATEL=n
109CONFIG_SND_HDA_CODEC_VIA=n
110CONFIG_SND_HDA_CODEC_HDMI=n
111CONFIG_SND_HDA_CODEC_CIRRUS=n
112CONFIG_SND_HDA_CODEC_CONEXANT=n
113CONFIG_SND_HDA_CODEC_CA0110=n
114CONFIG_SND_HDA_CODEC_CA0132=n
115# CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
116CONFIG_SND_HDA_CODEC_CMEDIA=n
117CONFIG_SND_HDA_CODEC_SI3054=n
118CONFIG_SND_HDA_GENERIC=n
119CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
120CONFIG_SND_HDA_CORE=n
121CONFIG_SND_HDA_DSP_LOADER=n
122CONFIG_SND_HDA_I915=n
123CONFIG_SND_HDA_EXT_CORE=n
124CONFIG_SND_HDA_PREALLOC_SIZE=64
125CONFIG_SND_SPI=n
126CONFIG_SND_USB=n
127CONFIG_SND_USB_AUDIO=n
128# CONFIG_SND_USB_UA101 is not set
129CONFIG_SND_USB_USX2Y=n
130# CONFIG_SND_USB_CAIAQ is not set
131CONFIG_SND_USB_US122L=n
132# CONFIG_SND_USB_6FIRE is not set
133CONFIG_SND_USB_HIFACE=n
134# CONFIG_SND_BCD2000 is not set
135# CONFIG_SND_USB_POD is not set
136# CONFIG_SND_USB_PODHD is not set
137# CONFIG_SND_USB_TONEPORT is not set
138# CONFIG_SND_USB_VARIAX is not set
139CONFIG_SND_SOC=n
140CONFIG_SND_SOC_AC97_BUS=n
141CONFIG_SND_SOC_COMPRESS=n
142CONFIG_SND_SOC_TOPOLOGY=n
143CONFIG_SND_SOC_AMD_ACP=n
144# CONFIG_SND_ATMEL_SOC is not set
145# CONFIG_SND_DESIGNWARE_I2S is not set
146
147#
148# Common SoC Audio options for Freescale CPUs:
149#
150# CONFIG_SND_SOC_FSL_ASRC is not set
151# CONFIG_SND_SOC_FSL_SAI is not set
152# CONFIG_SND_SOC_FSL_SSI is not set
153# CONFIG_SND_SOC_FSL_SPDIF is not set
154# CONFIG_SND_SOC_FSL_ESAI is not set
155# CONFIG_SND_SOC_IMX_AUDMUX is not set
156# CONFIG_SND_SOC_IMG is not set
157CONFIG_SND_SST_MFLD_PLATFORM=n
158CONFIG_SND_SST_IPC=n
159CONFIG_SND_SST_IPC_ACPI=n
160CONFIG_SND_SOC_INTEL_SST=n
161CONFIG_SND_SOC_INTEL_SST_FIRMWARE=n
162CONFIG_SND_SOC_INTEL_SST_ACPI=n
163CONFIG_SND_SOC_INTEL_SST_MATCH=n
164CONFIG_SND_SOC_INTEL_HASWELL=n
165CONFIG_SND_SOC_INTEL_HASWELL_MACH=n
166CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH=n
167# CONFIG_SND_SOC_INTEL_BXT_FLORIDA_MACH is not set
168CONFIG_SND_SOC_INTEL_BXT_RT298_MACH=n
169# CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH is not set
170CONFIG_SND_SOC_INTEL_BROADWELL_MACH=n
171CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=n
172CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH=n
173CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=n
174CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=n
175CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=n
176CONFIG_SND_SOC_INTEL_SKYLAKE=n
177CONFIG_SND_SOC_INTEL_SKL_RT286_MACH=n
178CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH=n
179CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH=n
180# CONFIG_SND_SOC_XTFPGA_I2S is not set
181CONFIG_SND_SOC_I2C_AND_SPI=n
182
183#
184# CODEC drivers
185#
186CONFIG_SND_SOC_AC97_CODEC=n
187# CONFIG_SND_SOC_ADAU1701 is not set
188# CONFIG_SND_SOC_ADAU7002 is not set
189CONFIG_SND_SOC_AK4104=n
190CONFIG_SND_SOC_AK4554=n
191CONFIG_SND_SOC_AK4613=n
192CONFIG_SND_SOC_AK4642=n
193CONFIG_SND_SOC_AK5386=n
194CONFIG_SND_SOC_ALC5623=n
195# CONFIG_SND_SOC_BT_SCO is not set
196CONFIG_SND_SOC_CS35L32=n
197CONFIG_SND_SOC_CS35L33=n
198CONFIG_SND_SOC_CS42L51=n
199CONFIG_SND_SOC_CS42L51_I2C=n
200CONFIG_SND_SOC_CS42L52=n
201CONFIG_SND_SOC_CS42L56=n
202CONFIG_SND_SOC_CS42L73=n
203CONFIG_SND_SOC_CS4265=n
204CONFIG_SND_SOC_CS4270=n
205CONFIG_SND_SOC_CS4271=n
206CONFIG_SND_SOC_CS4271_I2C=n
207CONFIG_SND_SOC_CS4271_SPI=n
208CONFIG_SND_SOC_CS42XX8=n
209CONFIG_SND_SOC_CS42XX8_I2C=n
210CONFIG_SND_SOC_CS4349=n
211CONFIG_SND_SOC_CS53L30=n
212CONFIG_SND_SOC_DA7219=n
213CONFIG_SND_SOC_DMIC=n
214# CONFIG_SND_SOC_ES8328 is not set
215# CONFIG_SND_SOC_GTM601 is not set
216CONFIG_SND_SOC_HDAC_HDMI=n
217# CONFIG_SND_SOC_INNO_RK3036 is not set
218CONFIG_SND_SOC_MAX98090=n
219CONFIG_SND_SOC_MAX98357A=n
220# CONFIG_SND_SOC_MAX98504 is not set
221# CONFIG_SND_SOC_MAX9860 is not set
222CONFIG_SND_SOC_PCM1681=n
223CONFIG_SND_SOC_PCM179X=n
224CONFIG_SND_SOC_PCM179X_I2C=n
225CONFIG_SND_SOC_PCM179X_SPI=n
226CONFIG_SND_SOC_PCM3168A=n
227CONFIG_SND_SOC_PCM3168A_I2C=n
228CONFIG_SND_SOC_PCM3168A_SPI=n
229CONFIG_SND_SOC_PCM512x=n
230CONFIG_SND_SOC_PCM512x_I2C=n
231CONFIG_SND_SOC_PCM512x_SPI=n
232CONFIG_SND_SOC_RL6231=n
233CONFIG_SND_SOC_RL6347A=n
234CONFIG_SND_SOC_RT286=n
235CONFIG_SND_SOC_RT298=n
236CONFIG_SND_SOC_RT5616=n
237CONFIG_SND_SOC_RT5631=n
238CONFIG_SND_SOC_RT5640=n
239CONFIG_SND_SOC_RT5645=n
240CONFIG_SND_SOC_RT5651=n
241CONFIG_SND_SOC_RT5663=n
242CONFIG_SND_SOC_RT5670=n
243# CONFIG_SND_SOC_RT5677_SPI is not set
244# CONFIG_SND_SOC_SGTL5000 is not set
245# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
246CONFIG_SND_SOC_SPDIF=n
247# CONFIG_SND_SOC_SSM2602_SPI is not set
248# CONFIG_SND_SOC_SSM2602_I2C is not set
249CONFIG_SND_SOC_SSM4567=n
250# CONFIG_SND_SOC_STA32X is not set
251# CONFIG_SND_SOC_STA350 is not set
252# CONFIG_SND_SOC_STI_SAS is not set
253# CONFIG_SND_SOC_TAS2552 is not set
254# CONFIG_SND_SOC_TAS5086 is not set
255# CONFIG_SND_SOC_TAS571X is not set
256# CONFIG_SND_SOC_TAS5720 is not set
257# CONFIG_SND_SOC_TFA9879 is not set
258# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
259# CONFIG_SND_SOC_TLV320AIC23_SPI is not set
260CONFIG_SND_SOC_TLV320AIC31XX=n
261CONFIG_SND_SOC_TLV320AIC3X=n
262CONFIG_SND_SOC_TS3A227E=n
263CONFIG_SND_SOC_WM8510=n
264CONFIG_SND_SOC_WM8523=n
265CONFIG_SND_SOC_WM8580=n
266CONFIG_SND_SOC_WM8711=n
267CONFIG_SND_SOC_WM8728=n
268CONFIG_SND_SOC_WM8731=n
269CONFIG_SND_SOC_WM8737=n
270CONFIG_SND_SOC_WM8741=n
271CONFIG_SND_SOC_WM8750=n
272CONFIG_SND_SOC_WM8753=n
273CONFIG_SND_SOC_WM8770=n
274CONFIG_SND_SOC_WM8776=n
275CONFIG_SND_SOC_WM8804=n
276CONFIG_SND_SOC_WM8804_I2C=n
277CONFIG_SND_SOC_WM8804_SPI=n
278CONFIG_SND_SOC_WM8903=n
279CONFIG_SND_SOC_WM8960=n
280CONFIG_SND_SOC_WM8962=n
281CONFIG_SND_SOC_WM8974=n
282CONFIG_SND_SOC_WM8978=n
283CONFIG_SND_SOC_WM8985=n
284# CONFIG_SND_SOC_NAU8810 is not set
285CONFIG_SND_SOC_NAU8825=n
286CONFIG_SND_SOC_TPA6130A2=n
287CONFIG_SND_SIMPLE_CARD_UTILS=n
288CONFIG_SND_SIMPLE_CARD=n
289# CONFIG_SOUND_PRIME is not set
290CONFIG_AC97_BUS=n
291
diff --git a/features/sound/sound_n.scc b/features/sound/sound_n.scc
new file mode 100644
index 0000000..492c5f1
--- /dev/null
+++ b/features/sound/sound_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for sound support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware sound_n.cfg
diff --git a/features/staging/staging_n.cfg b/features/staging/staging_n.cfg
new file mode 100644
index 0000000..953cb8e
--- /dev/null
+++ b/features/staging/staging_n.cfg
@@ -0,0 +1 @@
CONFIG_STAGING=n
diff --git a/features/staging/staging_n.scc b/features/staging/staging_n.scc
new file mode 100644
index 0000000..68bb566
--- /dev/null
+++ b/features/staging/staging_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for staging driver support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware staging_n.cfg
diff --git a/features/std_kernel/std_kernel_y.cfg b/features/std_kernel/std_kernel_y.cfg
new file mode 100644
index 0000000..ffb9dca
--- /dev/null
+++ b/features/std_kernel/std_kernel_y.cfg
@@ -0,0 +1 @@
CONFIG_EXPERT=y
diff --git a/features/std_kernel/std_kernel_y.scc b/features/std_kernel/std_kernel_y.scc
new file mode 100644
index 0000000..6e1806b
--- /dev/null
+++ b/features/std_kernel/std_kernel_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable expert options for kernel configuration"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware std_kernel_y.cfg
diff --git a/features/systemtap/systemtap_y.cfg b/features/systemtap/systemtap_y.cfg
new file mode 100644
index 0000000..c858a5c
--- /dev/null
+++ b/features/systemtap/systemtap_y.cfg
@@ -0,0 +1,5 @@
1CONFIG_KPROBES=y
2CONFIG_RELAY=y
3CONFIG_DEBUG_FS=y
4CONFIG_MODULES=y
5CONFIG_MODULE_UNLOAD=y
diff --git a/features/systemtap/systemtap_y.scc b/features/systemtap/systemtap_y.scc
new file mode 100644
index 0000000..ab4e758
--- /dev/null
+++ b/features/systemtap/systemtap_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options required for systemtap support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware systemtap_y.cfg
diff --git a/features/tablet/tablet_n.cfg b/features/tablet/tablet_n.cfg
new file mode 100644
index 0000000..84855db
--- /dev/null
+++ b/features/tablet/tablet_n.cfg
@@ -0,0 +1 @@
CONFIG_INPUT_TABLET=n
diff --git a/features/tablet/tablet_n.scc b/features/tablet/tablet_n.scc
new file mode 100644
index 0000000..5f0f5a2
--- /dev/null
+++ b/features/tablet/tablet_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for tablet input support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware tablet_n.cfg
diff --git a/features/thermal/thermal_n.cfg b/features/thermal/thermal_n.cfg
new file mode 100644
index 0000000..faa4970
--- /dev/null
+++ b/features/thermal/thermal_n.cfg
@@ -0,0 +1,4 @@
1CONFIG_THERMAL=n
2CONFIG_THERMAL_WRITABLE_TRIPS=n
3CONFIG_THERMAL_GOV_USER_SPACE=n
4CONFIG_X86_PKG_TEMP_THERMAL=n
diff --git a/features/thermal/thermal_n.scc b/features/thermal/thermal_n.scc
new file mode 100644
index 0000000..cccc945
--- /dev/null
+++ b/features/thermal/thermal_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable thermal sysfs support"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware thermal_n.cfg
diff --git a/features/touchscreen/touchscreen_n.cfg b/features/touchscreen/touchscreen_n.cfg
new file mode 100644
index 0000000..1630480
--- /dev/null
+++ b/features/touchscreen/touchscreen_n.cfg
@@ -0,0 +1,22 @@
1CONFIG_INPUT_TOUCHSCREEN=n
2CONFIG_TOUCHSCREEN_PROPERTIES=n
3
4CONFIG_TOUCHSCREEN_USB_COMPOSITE=n
5CONFIG_TOUCHSCREEN_USB_EGALAX=n
6CONFIG_TOUCHSCREEN_USB_PANJIT=n
7CONFIG_TOUCHSCREEN_USB_3M=n
8CONFIG_TOUCHSCREEN_USB_ITM=n
9CONFIG_TOUCHSCREEN_USB_ETURBO=n
10CONFIG_TOUCHSCREEN_USB_GUNZE=n
11CONFIG_TOUCHSCREEN_USB_DMC_TSC10=n
12CONFIG_TOUCHSCREEN_USB_IRTOUCH=n
13CONFIG_TOUCHSCREEN_USB_IDEALTEK=n
14CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=n
15CONFIG_TOUCHSCREEN_USB_GOTOP=n
16CONFIG_TOUCHSCREEN_USB_JASTEC=n
17CONFIG_TOUCHSCREEN_USB_ELO=n
18CONFIG_TOUCHSCREEN_USB_E2I=n
19CONFIG_TOUCHSCREEN_USB_ZYTRONIC=n
20CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=n
21CONFIG_TOUCHSCREEN_USB_NEXIO=n
22CONFIG_TOUCHSCREEN_USB_EASYTOUCH=n
diff --git a/features/touchscreen/touchscreen_n.scc b/features/touchscreen/touchscreen_n.scc
new file mode 100644
index 0000000..f03252b
--- /dev/null
+++ b/features/touchscreen/touchscreen_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for touchscreen input support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware touchscreen_n.cfg
diff --git a/features/tracing/tracing_n.cfg b/features/tracing/tracing_n.cfg
new file mode 100644
index 0000000..3f020a8
--- /dev/null
+++ b/features/tracing/tracing_n.cfg
@@ -0,0 +1,7 @@
1CONFIG_NOP_TRACER=n
2CONFIG_TRACE_CLOCK=n
3CONFIG_RING_BUFFER=n
4CONFIG_EVENT_TRACING=n
5CONFIG_CONTEXT_SWITCH_TRACER=n
6CONFIG_TRACING=n
7CONFIG_GENERIC_TRACER=n
diff --git a/features/tracing/tracing_n.scc b/features/tracing/tracing_n.scc
new file mode 100644
index 0000000..1a6657a
--- /dev/null
+++ b/features/tracing/tracing_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for tracing support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware tracing_n.cfg
diff --git a/features/tracing/tracing_y.cfg b/features/tracing/tracing_y.cfg
new file mode 100644
index 0000000..5fad689
--- /dev/null
+++ b/features/tracing/tracing_y.cfg
@@ -0,0 +1,7 @@
1CONFIG_NOP_TRACER=y
2CONFIG_TRACE_CLOCK=y
3CONFIG_RING_BUFFER=y
4CONFIG_EVENT_TRACING=y
5CONFIG_CONTEXT_SWITCH_TRACER=y
6CONFIG_TRACING=y
7CONFIG_GENERIC_TRACER=y
diff --git a/features/tracing/tracing_y.scc b/features/tracing/tracing_y.scc
new file mode 100644
index 0000000..be15540
--- /dev/null
+++ b/features/tracing/tracing_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable options for tracing support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware tracing_n.cfg
diff --git a/features/udev/udev.cfg b/features/udev/udev.cfg
new file mode 100644
index 0000000..08dc3b0
--- /dev/null
+++ b/features/udev/udev.cfg
@@ -0,0 +1,28 @@
1CONFIG_DEVTMPFS=y
2CONFIG_CGROUPS=y
3CONFIG_INOTIFY_USER=y
4CONFIG_SIGNALFD=y
5CONFIG_TIMERFD=y
6CONFIG_EPOLL=y
7CONFIG_NET=y
8CONFIG_SYSFS=y
9CONFIG_PROC_FS=y
10CONFIG_FHANDLE=y
11
12CONFIG_SYSFS_DEPRECATED=n
13
14CONFIG_UEVENT_HELPER_PATH=""
15
16CONFIG_FW_LOADER_USER_HELPER=n
17
18CONFIG_DMIID=y
19
20CONFIG_BLK_DEV_BSG=y
21
22CONFIG_NET_NS=y
23CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
24CONFIG_USER_NS=y
25
26CONFIG_CGROUP_SCHED=y
27CONFIG_FAIR_GROUP_SCHED=y
28CONFIG_CFS_BANDWIDTH=y
diff --git a/features/udev/udev.scc b/features/udev/udev.scc
new file mode 100644
index 0000000..089ca2e
--- /dev/null
+++ b/features/udev/udev.scc
@@ -0,0 +1,7 @@
1define KFEATURE_DESCRIPTION "UDEV specific kernel configs: https://github.com/systemd/systemd/blob/master/README"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware udev.cfg
5kconf non-hardware udev_crypto.cfg
6kconf non-hardware udev_uefi.cfg
7kconf non-hardware udev_opt.cfg
diff --git a/features/udev/udev_crypto.cfg b/features/udev/udev_crypto.cfg
new file mode 100644
index 0000000..1e0be79
--- /dev/null
+++ b/features/udev/udev_crypto.cfg
@@ -0,0 +1,3 @@
1CONFIG_CRYPTO_USER_API_HASH=y
2CONFIG_CRYPTO_HMAC=y
3CONFIG_CRYPTO_SHA256=y
diff --git a/features/udev/udev_crypto.scc b/features/udev/udev_crypto.scc
new file mode 100644
index 0000000..9c019a6
--- /dev/null
+++ b/features/udev/udev_crypto.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "UDEV kernels config to support crypto"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware udev_crypto.cfg
diff --git a/features/udev/udev_n.cfg b/features/udev/udev_n.cfg
new file mode 100644
index 0000000..ef9e6d4
--- /dev/null
+++ b/features/udev/udev_n.cfg
@@ -0,0 +1 @@
CONFIG_UEVENT_HELPER=n
diff --git a/features/udev/udev_n.scc b/features/udev/udev_n.scc
new file mode 100644
index 0000000..bfaa194
--- /dev/null
+++ b/features/udev/udev_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable udev support"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware udev_n.cfg
diff --git a/features/udev/udev_opt.cfg b/features/udev/udev_opt.cfg
new file mode 100644
index 0000000..d08e36a
--- /dev/null
+++ b/features/udev/udev_opt.cfg
@@ -0,0 +1,10 @@
1CONFIG_IPV6=y
2CONFIG_AUTOFS4_FS=y
3CONFIG_TMPFS_XATTR=y
4CONFIG_TMPFS_POSIX_ACL=y
5CONFIG_EXT4_POSIX_ACL=y
6CONFIG_XFS_ACL=y
7CONFIG_BTRFS_FS_POSIX_ACL=y
8CONFIG_SECCOMP=y
9CONFIG_SECCOMP_FILTER=y
10CONFIG_CHECKPOINT_RESTORE=y
diff --git a/features/udev/udev_opt.scc b/features/udev/udev_opt.scc
new file mode 100644
index 0000000..dc1b86a
--- /dev/null
+++ b/features/udev/udev_opt.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Optional UDEV kernel configs"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware udev_opt.cfg
diff --git a/features/udev/udev_uefi.cfg b/features/udev/udev_uefi.cfg
new file mode 100644
index 0000000..ec2aa3e
--- /dev/null
+++ b/features/udev/udev_uefi.cfg
@@ -0,0 +1,2 @@
1CONFIG_EFIVAR_FS=y
2CONFIG_EFI_PARTITION=y
diff --git a/features/udev/udev_uefi.scc b/features/udev/udev_uefi.scc
new file mode 100644
index 0000000..bda289e
--- /dev/null
+++ b/features/udev/udev_uefi.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "kernel configs for UDEV with UEFI support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware udev_uefi.cfg
diff --git a/features/uio/uio_pci_m.cfg b/features/uio/uio_pci_m.cfg
new file mode 100644
index 0000000..46f7ab7
--- /dev/null
+++ b/features/uio/uio_pci_m.cfg
@@ -0,0 +1 @@
CONFIG_UIO_PCI_GENERIC=m
diff --git a/features/uio/uio_pci_m.scc b/features/uio/uio_pci_m.scc
new file mode 100644
index 0000000..5103637
--- /dev/null
+++ b/features/uio/uio_pci_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable user space I/O access"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware uio_pci_m.cfg
diff --git a/features/usb/ohci_m.cfg b/features/usb/ohci_m.cfg
new file mode 100644
index 0000000..4b21a91
--- /dev/null
+++ b/features/usb/ohci_m.cfg
@@ -0,0 +1,4 @@
1CONFIG_USB_OHCI_HCD=m
2CONFIG_USB_OHCI_HCD_PCI=m
3CONFIG_USB_OHCI_HCD_PLATFORM=m
4CONFIG_USB_UHCI_HCD=m
diff --git a/features/usb/ohci_m.scc b/features/usb/ohci_m.scc
new file mode 100644
index 0000000..43544cb
--- /dev/null
+++ b/features/usb/ohci_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Enable OHCI as module"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware ohci_m.cfg
diff --git a/features/usb/usb_storage_m.cfg b/features/usb/usb_storage_m.cfg
new file mode 100644
index 0000000..c99c095
--- /dev/null
+++ b/features/usb/usb_storage_m.cfg
@@ -0,0 +1 @@
CONFIG_USB_STORAGE=m
diff --git a/features/usb/usb_storage_m.scc b/features/usb/usb_storage_m.scc
new file mode 100644
index 0000000..c4c0ebf
--- /dev/null
+++ b/features/usb/usb_storage_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Enable USB storage as module"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware usb_storage_m.cfg
diff --git a/features/usbGadget/usbgadget_m.cfg b/features/usbGadget/usbgadget_m.cfg
new file mode 100644
index 0000000..d777248
--- /dev/null
+++ b/features/usbGadget/usbgadget_m.cfg
@@ -0,0 +1,154 @@
1CONFIG_PARPORT_NOT_PC=y
2CONFIG_USB_C67X00_HCD=m
3CONFIG_USB_OXU210HP_HCD=m
4CONFIG_USB_ISP116X_HCD=m
5CONFIG_USB_ISP1362_HCD=m
6CONFIG_USB_FOTG210_HCD=m
7CONFIG_USB_MAX3421_HCD=m
8CONFIG_USB_SL811_HCD=m
9# CONFIG_USB_SL811_HCD_ISO is not set
10CONFIG_USB_R8A66597_HCD=m
11CONFIG_USB_ACM=m
12CONFIG_USB_WDM=m
13CONFIG_USB_STORAGE_REALTEK=m
14CONFIG_USB_STORAGE_DATAFAB=m
15CONFIG_USB_STORAGE_FREECOM=m
16CONFIG_USB_STORAGE_ISD200=m
17CONFIG_USB_STORAGE_USBAT=m
18CONFIG_USB_STORAGE_SDDR09=m
19CONFIG_USB_STORAGE_SDDR55=m
20CONFIG_USB_STORAGE_JUMPSHOT=m
21CONFIG_USB_STORAGE_ALAUDA=m
22CONFIG_USB_STORAGE_ONETOUCH=m
23CONFIG_USB_STORAGE_KARMA=m
24CONFIG_USB_STORAGE_CYPRESS_ATACB=m
25CONFIG_USB_STORAGE_ENE_UB6250=m
26CONFIG_USB_UAS=m
27CONFIG_USB_USS720=m
28CONFIG_USB_SERIAL=m
29# CONFIG_USB_SERIAL_GENERIC is not set
30# CONFIG_USB_SERIAL_SIMPLE is not set
31# CONFIG_USB_SERIAL_AIRCABLE is not set
32# CONFIG_USB_SERIAL_ARK3116 is not set
33# CONFIG_USB_SERIAL_BELKIN is not set
34# CONFIG_USB_SERIAL_CH341 is not set
35# CONFIG_USB_SERIAL_WHITEHEAT is not set
36# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
37# CONFIG_USB_SERIAL_CP210X is not set
38# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
39# CONFIG_USB_SERIAL_EMPEG is not set
40# CONFIG_USB_SERIAL_FTDI_SIO is not set
41# CONFIG_USB_SERIAL_VISOR is not set
42# CONFIG_USB_SERIAL_IPAQ is not set
43# CONFIG_USB_SERIAL_IR is not set
44# CONFIG_USB_SERIAL_EDGEPORT is not set
45# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
46# CONFIG_USB_SERIAL_F81232 is not set
47# CONFIG_USB_SERIAL_GARMIN is not set
48# CONFIG_USB_SERIAL_IPW is not set
49# CONFIG_USB_SERIAL_IUU is not set
50# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
51# CONFIG_USB_SERIAL_KEYSPAN is not set
52# CONFIG_USB_SERIAL_KLSI is not set
53# CONFIG_USB_SERIAL_KOBIL_SCT is not set
54# CONFIG_USB_SERIAL_MCT_U232 is not set
55# CONFIG_USB_SERIAL_METRO is not set
56# CONFIG_USB_SERIAL_MOS7720 is not set
57# CONFIG_USB_SERIAL_MOS7840 is not set
58# CONFIG_USB_SERIAL_MXUPORT is not set
59# CONFIG_USB_SERIAL_NAVMAN is not set
60# CONFIG_USB_SERIAL_PL2303 is not set
61# CONFIG_USB_SERIAL_OTI6858 is not set
62# CONFIG_USB_SERIAL_QCAUX is not set
63# CONFIG_USB_SERIAL_QUALCOMM is not set
64# CONFIG_USB_SERIAL_SPCP8X5 is not set
65# CONFIG_USB_SERIAL_SAFE is not set
66# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
67# CONFIG_USB_SERIAL_SYMBOL is not set
68# CONFIG_USB_SERIAL_TI is not set
69# CONFIG_USB_SERIAL_CYBERJACK is not set
70# CONFIG_USB_SERIAL_XIRCOM is not set
71# CONFIG_USB_SERIAL_OPTION is not set
72# CONFIG_USB_SERIAL_OMNINET is not set
73# CONFIG_USB_SERIAL_OPTICON is not set
74# CONFIG_USB_SERIAL_XSENS_MT is not set
75# CONFIG_USB_SERIAL_WISHBONE is not set
76# CONFIG_USB_SERIAL_SSU100 is not set
77# CONFIG_USB_SERIAL_QT2 is not set
78# CONFIG_USB_SERIAL_DEBUG is not set
79CONFIG_USB_LCD=m
80CONFIG_USB_SISUSBVGA=m
81# CONFIG_USB_SISUSBVGA_CON is not set
82CONFIG_USB_LD=m
83CONFIG_USB_IOWARRIOR=m
84CONFIG_USB_HSIC_USB3503=m
85CONFIG_USB_HSIC_USB4604=m
86CONFIG_UCSI=m
87CONFIG_USB_GADGET=m
88# CONFIG_USB_GADGET_DEBUG is not set
89# CONFIG_USB_GADGET_DEBUG_FILES is not set
90# CONFIG_USB_GADGET_DEBUG_FS is not set
91CONFIG_USB_GADGET_VBUS_DRAW=2
92CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
93# CONFIG_U_SERIAL_CONSOLE is not set
94
95#
96# USB Peripheral Controller
97#
98CONFIG_USB_FOTG210_UDC=m
99CONFIG_USB_GR_UDC=m
100CONFIG_USB_R8A66597=m
101CONFIG_USB_PXA27X=m
102CONFIG_USB_MV_UDC=m
103CONFIG_USB_MV_U3D=m
104CONFIG_USB_M66592=m
105CONFIG_USB_BDC_UDC=m
106
107#
108# Platform Support
109#
110CONFIG_USB_BDC_PCI=m
111CONFIG_USB_AMD5536UDC=m
112CONFIG_USB_NET2272=m
113# CONFIG_USB_NET2272_DMA is not set
114CONFIG_USB_NET2280=m
115CONFIG_USB_GOKU=m
116CONFIG_USB_EG20T=m
117# CONFIG_USB_DUMMY_HCD is not set
118CONFIG_USB_LIBCOMPOSITE=m
119CONFIG_USB_F_ACM=m
120CONFIG_USB_U_SERIAL=m
121CONFIG_USB_U_ETHER=m
122CONFIG_USB_F_SERIAL=m
123CONFIG_USB_F_OBEX=m
124CONFIG_USB_F_NCM=m
125CONFIG_USB_F_ECM=m
126CONFIG_USB_F_EEM=m
127CONFIG_USB_F_SUBSET=m
128CONFIG_USB_F_RNDIS=m
129CONFIG_USB_F_MASS_STORAGE=m
130CONFIG_USB_F_FS=m
131CONFIG_USB_F_HID=m
132# CONFIG_USB_CONFIGFS is not set
133# CONFIG_USB_ZERO is not set
134CONFIG_USB_ETH=m
135CONFIG_USB_ETH_RNDIS=y
136CONFIG_USB_ETH_EEM=y
137CONFIG_USB_G_NCM=m
138CONFIG_USB_GADGETFS=m
139CONFIG_USB_FUNCTIONFS=m
140CONFIG_USB_FUNCTIONFS_ETH=y
141CONFIG_USB_FUNCTIONFS_RNDIS=y
142CONFIG_USB_FUNCTIONFS_GENERIC=y
143CONFIG_USB_MASS_STORAGE=m
144CONFIG_USB_G_SERIAL=m
145# CONFIG_USB_G_PRINTER is not set
146CONFIG_USB_CDC_COMPOSITE=m
147CONFIG_USB_G_ACM_MS=m
148CONFIG_USB_G_MULTI=m
149CONFIG_USB_G_MULTI_RNDIS=y
150CONFIG_USB_G_MULTI_CDC=y
151CONFIG_USB_G_HID=m
152# CONFIG_USB_G_DBGP is not set
153CONFIG_USB_ULPI_BUS=m
154# CONFIG_PHY_TUSB1210 is not set
diff --git a/features/usbGadget/usbgadget_m.scc b/features/usbGadget/usbgadget_m.scc
new file mode 100644
index 0000000..dbe157b
--- /dev/null
+++ b/features/usbGadget/usbgadget_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable USB devices support as modules"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware usbgadget_m.cfg
diff --git a/features/usbGadget/usbgadget_n.cfg b/features/usbGadget/usbgadget_n.cfg
new file mode 100644
index 0000000..76364be
--- /dev/null
+++ b/features/usbGadget/usbgadget_n.cfg
@@ -0,0 +1,6 @@
1CONFIG_USB_F_UAC2=n
2CONFIG_USB_F_UVC=n
3CONFIG_USB_F_MIDI=n
4CONFIG_USB_AUDIO=n
5CONFIG_USB_MIDI_GADGET=n
6CONFIG_USB_G_WEBCAM=n
diff --git a/features/usbGadget/usbgadget_n.scc b/features/usbGadget/usbgadget_n.scc
new file mode 100644
index 0000000..8a47594
--- /dev/null
+++ b/features/usbGadget/usbgadget_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for usb gadget support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware usbgadget_n.cfg
diff --git a/features/usbnet/usb_phy_m.cfg b/features/usbnet/usb_phy_m.cfg
new file mode 100644
index 0000000..b00f83b
--- /dev/null
+++ b/features/usbnet/usb_phy_m.cfg
@@ -0,0 +1,4 @@
1CONFIG_GENERIC_PHY=y
2CONFIG_PHY_PXA_28NM_HSIC=m
3CONFIG_PHY_PXA_28NM_USB2=m
4CONFIG_BCM_KONA_USB2_PHY=m
diff --git a/features/usbnet/usb_phy_m.scc b/features/usbnet/usb_phy_m.scc
new file mode 100644
index 0000000..592d750
--- /dev/null
+++ b/features/usbnet/usb_phy_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable support for USB PHY"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware usb_phy_m.cfg
diff --git a/features/usbnet/usbnet_m.cfg b/features/usbnet/usbnet_m.cfg
new file mode 100644
index 0000000..a62deff
--- /dev/null
+++ b/features/usbnet/usbnet_m.cfg
@@ -0,0 +1,88 @@
1CONFIG_USB_USBNET=m
2CONFIG_USB_NET_DRIVERS=m
3CONFIG_MICROCHIP_PHY=m
4CONFIG_USB_CATC=m
5CONFIG_USB_KAWETH=m
6CONFIG_USB_PEGASUS=m
7CONFIG_USB_RTL8150=m
8CONFIG_USB_RTL8152=m
9CONFIG_USB_LAN78XX=m
10CONFIG_USB_NET_AX8817X=m
11CONFIG_USB_NET_AX88179_178A=m
12CONFIG_USB_NET_CDCETHER=m
13CONFIG_USB_NET_CDC_EEM=m
14CONFIG_USB_NET_CDC_NCM=m
15CONFIG_USB_NET_HUAWEI_CDC_NCM=m
16CONFIG_USB_NET_CDC_MBIM=m
17CONFIG_USB_NET_DM9601=m
18CONFIG_USB_NET_SR9700=m
19CONFIG_USB_NET_SR9800=m
20CONFIG_USB_NET_SMSC75XX=m
21CONFIG_USB_NET_SMSC95XX=m
22CONFIG_USB_NET_GL620A=m
23CONFIG_USB_NET_NET1080=m
24CONFIG_USB_NET_PLUSB=m
25CONFIG_USB_NET_MCS7830=m
26CONFIG_USB_NET_RNDIS_HOST=m
27CONFIG_USB_NET_ZAURUS=m
28CONFIG_USB_NET_CX82310_ETH=m
29CONFIG_USB_NET_KALMIA=m
30CONFIG_USB_NET_QMI_WWAN=m
31CONFIG_USB_NET_INT51X1=m
32CONFIG_USB_SIERRA_NET=m
33CONFIG_USB_VL600=m
34CONFIG_USB_NET_CH9200=m
35CONFIG_USB_ACM=m
36CONFIG_USB_WDM=m
37CONFIG_USB_GADGET=m
38# CONFIG_USB_GADGET_DEBUG is not set
39# CONFIG_USB_GADGET_DEBUG_FILES is not set
40# CONFIG_USB_GADGET_DEBUG_FS is not set
41CONFIG_USB_GADGET_VBUS_DRAW=2
42CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
43#
44# USB Peripheral Controller
45#
46# CONFIG_USB_FOTG210_UDC is not set
47# CONFIG_USB_GR_UDC is not set
48# CONFIG_USB_R8A66597 is not set
49# CONFIG_USB_PXA27X is not set
50# CONFIG_USB_MV_UDC is not set
51# CONFIG_USB_MV_U3D is not set
52# CONFIG_USB_M66592 is not set
53# CONFIG_USB_BDC_UDC is not set
54# CONFIG_USB_AMD5536UDC is not set
55# CONFIG_USB_NET2272 is not set
56# CONFIG_USB_NET2280 is not set
57# CONFIG_USB_GOKU is not set
58# CONFIG_USB_EG20T is not set
59# CONFIG_USB_DUMMY_HCD is not set
60CONFIG_USB_LIBCOMPOSITE=m
61CONFIG_USB_F_ACM=m
62CONFIG_USB_U_SERIAL=m
63CONFIG_USB_U_ETHER=m
64CONFIG_USB_F_SERIAL=m
65CONFIG_USB_F_OBEX=m
66CONFIG_USB_F_NCM=m
67CONFIG_USB_F_ECM=m
68CONFIG_USB_F_EEM=m
69CONFIG_USB_F_SUBSET=m
70CONFIG_USB_F_RNDIS=m
71CONFIG_USB_F_MASS_STORAGE=m
72# CONFIG_USB_CONFIGFS is not set
73# CONFIG_USB_ZERO is not set
74CONFIG_USB_ETH=m
75CONFIG_USB_ETH_RNDIS=y
76CONFIG_USB_ETH_EEM=y
77CONFIG_USB_G_NCM=m
78# CONFIG_USB_GADGETFS is not set
79# CONFIG_USB_FUNCTIONFS is not set
80# CONFIG_USB_MASS_STORAGE is not set
81CONFIG_USB_G_SERIAL=m
82# CONFIG_USB_G_PRINTER is not set
83CONFIG_USB_CDC_COMPOSITE=m
84CONFIG_USB_G_ACM_MS=m
85# CONFIG_USB_G_MULTI is not set
86# CONFIG_USB_G_HID is not set
87# CONFIG_USB_G_DBGP is not set
88# CONFIG_USB_CATC is not set
diff --git a/features/usbnet/usbnet_m.scc b/features/usbnet/usbnet_m.scc
new file mode 100644
index 0000000..62749f3
--- /dev/null
+++ b/features/usbnet/usbnet_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Add usb network device support as module"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware usbnet_m.cfg
diff --git a/features/usbnet/usbnet_n.cfg b/features/usbnet/usbnet_n.cfg
new file mode 100644
index 0000000..ad9eb03
--- /dev/null
+++ b/features/usbnet/usbnet_n.cfg
@@ -0,0 +1,43 @@
1CONFIG_USB_NET_DRIVERS=n
2# CONFIG_USB_CATC is not set
3CONFIG_USB_KAWETH=n
4CONFIG_USB_PEGASUS=n
5CONFIG_USB_RTL8150=n
6CONFIG_USB_RTL8152=n
7# CONFIG_USB_LAN78XX is not set
8CONFIG_USB_USBNET=n
9CONFIG_USB_NET_AX8817X=n
10CONFIG_USB_NET_AX88179_178A=n
11CONFIG_USB_NET_CDCETHER=n
12CONFIG_USB_NET_CDC_EEM=n
13CONFIG_USB_NET_CDC_NCM=n
14# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
15# CONFIG_USB_NET_CDC_MBIM is not set
16CONFIG_USB_NET_DM9601=n
17# CONFIG_USB_NET_SR9700 is not set
18# CONFIG_USB_NET_SR9800 is not set
19CONFIG_USB_NET_SMSC75XX=n
20CONFIG_USB_NET_SMSC95XX=n
21# CONFIG_USB_NET_GL620A is not set
22CONFIG_USB_NET_NET1080=n
23# CONFIG_USB_NET_PLUSB is not set
24CONFIG_USB_NET_MCS7830=n
25# CONFIG_USB_NET_RNDIS_HOST is no set
26CONFIG_USB_NET_CDC_SUBSET_ENABLE=n
27CONFIG_USB_NET_CDC_SUBSET=n
28CONFIG_USB_ALI_M5632=n
29CONFIG_USB_AN2720=n
30CONFIG_USB_BELKIN=n
31CONFIG_USB_ARMLINUX=n
32# CONFIG_USB_EPSON2888 is not set
33CONFIG_USB_KC2190=n
34CONFIG_USB_NET_ZAURUS=n
35# CONFIG_USB_NET_CX82310_ETH is not set
36# CONFIG_USB_NET_KALMIA is not set
37# CONFIG_USB_NET_QMI_WWAN is not set
38# CONFIG_USB_HSO is not set
39# CONFIG_USB_NET_INT51X1 is not set
40# CONFIG_USB_IPHETH is not set
41# CONFIG_USB_SIERRA_NET is not set
42# CONFIG_USB_VL600 is not set
43# CONFIG_USB_NET_CH9200 is not set
diff --git a/features/usbnet/usbnet_n.scc b/features/usbnet/usbnet_n.scc
new file mode 100644
index 0000000..7adb0a1
--- /dev/null
+++ b/features/usbnet/usbnet_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for usb network device support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware usbnet_n.cfg
diff --git a/features/usbsupport/usbsupport_m.cfg b/features/usbsupport/usbsupport_m.cfg
new file mode 100644
index 0000000..6a19564
--- /dev/null
+++ b/features/usbsupport/usbsupport_m.cfg
@@ -0,0 +1,270 @@
1CONFIG_USB_SUPPORT=y
2CONFIG_USB_COMMON=m
3CONFIG_USB_ARCH_HAS_HCD=y
4CONFIG_USB=m
5# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
6
7#
8# Miscellaneous USB options
9#
10CONFIG_USB_DEFAULT_PERSIST=y
11# CONFIG_USB_DYNAMIC_MINORS is not set
12# CONFIG_USB_OTG is not set
13# CONFIG_USB_OTG_WHITELIST is not set
14# CONFIG_USB_OTG_BLACKLIST_HUB is not set
15# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set
16# CONFIG_USB_MON is not set
17# CONFIG_USB_WUSB_CBAF is not set
18
19#
20# USB Host Controller Drivers
21#
22# CONFIG_USB_C67X00_HCD is not set
23CONFIG_USB_XHCI_HCD=m
24CONFIG_USB_XHCI_PCI=m
25CONFIG_USB_XHCI_PLATFORM=m
26CONFIG_USB_EHCI_HCD=m
27CONFIG_USB_EHCI_ROOT_HUB_TT=n
28CONFIG_USB_EHCI_TT_NEWSCHED=y
29CONFIG_USB_EHCI_PCI=m
30CONFIG_USB_EHCI_HCD_PLATFORM=m
31# CONFIG_USB_OXU210HP_HCD is not set
32# CONFIG_USB_ISP116X_HCD is not set
33# CONFIG_USB_ISP1362_HCD is not set
34# CONFIG_USB_FOTG210_HCD is not set
35# CONFIG_USB_MAX3421_HCD is not set
36CONFIG_USB_OHCI_HCD=n
37CONFIG_USB_OHCI_HCD_PCI=n
38# CONFIG_USB_OHCI_HCD_PLATFORM is not set
39CONFIG_USB_UHCI_HCD=n
40# CONFIG_USB_SL811_HCD is not set
41# CONFIG_USB_R8A66597_HCD is not set
42# CONFIG_USB_HCD_BCMA is not set
43# CONFIG_USB_HCD_TEST_MODE is not set
44
45#
46# USB Device Class drivers
47#
48CONFIG_USB_ACM=n
49# CONFIG_USB_PRINTER is not set
50CONFIG_USB_WDM=n
51# CONFIG_USB_TMC is not set
52
53#
54# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
55#
56
57#
58# also be needed; see USB_STORAGE Help for more info
59#
60CONFIG_USB_STORAGE=n
61# CONFIG_USB_STORAGE_DEBUG is not set
62# CONFIG_USB_STORAGE_REALTEK is not set
63# CONFIG_USB_STORAGE_DATAFAB is not set
64# CONFIG_USB_STORAGE_FREECOM is not set
65# CONFIG_USB_STORAGE_ISD200 is not set
66# CONFIG_USB_STORAGE_USBAT is not set
67# CONFIG_USB_STORAGE_SDDR09 is not set
68# CONFIG_USB_STORAGE_SDDR55 is not set
69# CONFIG_USB_STORAGE_JUMPSHOT is not set
70# CONFIG_USB_STORAGE_ALAUDA is not set
71# CONFIG_USB_STORAGE_ONETOUCH is not set
72# CONFIG_USB_STORAGE_KARMA is not set
73# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
74# CONFIG_USB_STORAGE_ENE_UB6250 is not set
75# CONFIG_USB_UAS is not set
76
77#
78# USB Imaging devices
79#
80# CONFIG_USB_MDC800 is not set
81# CONFIG_USB_MICROTEK is not set
82# CONFIG_USBIP_CORE is not set
83# CONFIG_USB_MUSB_HDRC is not set
84CONFIG_USB_DWC3=n
85# CONFIG_USB_DWC3_HOST is not set
86CONFIG_USB_DWC3_GADGET=n
87# CONFIG_USB_DWC3_DUAL_ROLE is not set
88
89#
90# Platform Glue Driver Support
91#
92CONFIG_USB_DWC3_PCI=n
93CONFIG_USB_DWC2=n
94# CONFIG_USB_DWC2_HOST is not set
95
96#
97# Gadget/Dual-role mode requires USB Gadget support to be enabled
98#
99# CONFIG_USB_DWC2_PERIPHERAL is not set
100CONFIG_USB_DWC2_DUAL_ROLE=n
101CONFIG_USB_DWC2_PCI=n
102# CONFIG_USB_DWC2_DEBUG is not set
103# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
104# CONFIG_USB_CHIPIDEA is not set
105# CONFIG_USB_ISP1760 is not set
106
107#
108# USB port drivers
109#
110# CONFIG_USB_USS720 is not set
111CONFIG_USB_SERIAL=n
112CONFIG_USB_SERIAL_CONSOLE=n
113CONFIG_USB_SERIAL_GENERIC=n
114# CONFIG_USB_SERIAL_SIMPLE is not set
115# CONFIG_USB_SERIAL_AIRCABLE is not set
116# CONFIG_USB_SERIAL_ARK3116 is not set
117# CONFIG_USB_SERIAL_BELKIN is not set
118# CONFIG_USB_SERIAL_CH341 is not set
119# CONFIG_USB_SERIAL_WHITEHEAT is not set
120# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
121# CONFIG_USB_SERIAL_CP210X is not set
122# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
123# CONFIG_USB_SERIAL_EMPEG is not set
124CONFIG_USB_SERIAL_FTDI_SIO=n
125# CONFIG_USB_SERIAL_VISOR is not set
126# CONFIG_USB_SERIAL_IPAQ is not set
127# CONFIG_USB_SERIAL_IR is not set
128# CONFIG_USB_SERIAL_EDGEPORT is not set
129# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
130# CONFIG_USB_SERIAL_F81232 is not set
131# CONFIG_USB_SERIAL_GARMIN is not set
132# CONFIG_USB_SERIAL_IPW is not set
133# CONFIG_USB_SERIAL_IUU is not set
134# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
135# CONFIG_USB_SERIAL_KEYSPAN is not set
136# CONFIG_USB_SERIAL_KLSI is not set
137# CONFIG_USB_SERIAL_KOBIL_SCT is not set
138# CONFIG_USB_SERIAL_MCT_U232 is not set
139# CONFIG_USB_SERIAL_METRO is not set
140# CONFIG_USB_SERIAL_MOS7720 is not set
141# CONFIG_USB_SERIAL_MOS7840 is not set
142# CONFIG_USB_SERIAL_MXUPORT is not set
143# CONFIG_USB_SERIAL_NAVMAN is not set
144CONFIG_USB_SERIAL_PL2303=n
145# CONFIG_USB_SERIAL_OTI6858 is not set
146# CONFIG_USB_SERIAL_QCAUX is not set
147# CONFIG_USB_SERIAL_QUALCOMM is not set
148# CONFIG_USB_SERIAL_SPCP8X5 is not set
149# CONFIG_USB_SERIAL_SAFE is not set
150# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
151# CONFIG_USB_SERIAL_SYMBOL is not set
152# CONFIG_USB_SERIAL_TI is not set
153# CONFIG_USB_SERIAL_CYBERJACK is not set
154# CONFIG_USB_SERIAL_XIRCOM is not set
155# CONFIG_USB_SERIAL_OPTION is not set
156# CONFIG_USB_SERIAL_OMNINET is not set
157# CONFIG_USB_SERIAL_OPTICON is not set
158# CONFIG_USB_SERIAL_XSENS_MT is not set
159# CONFIG_USB_SERIAL_WISHBONE is not set
160# CONFIG_USB_SERIAL_SSU100 is not set
161# CONFIG_USB_SERIAL_QT2 is not set
162# CONFIG_USB_SERIAL_DEBUG is not set
163
164#
165# USB Miscellaneous drivers
166#
167# CONFIG_USB_EMI62 is not set
168# CONFIG_USB_EMI26 is not set
169# CONFIG_USB_ADUTUX is not set
170# CONFIG_USB_SEVSEG is not set
171# CONFIG_USB_RIO500 is not set
172# CONFIG_USB_LEGOTOWER is not set
173# CONFIG_USB_LCD is not set
174# CONFIG_USB_CYPRESS_CY7C63 is not set
175# CONFIG_USB_CYTHERM is not set
176# CONFIG_USB_IDMOUSE is not set
177# CONFIG_USB_FTDI_ELAN is not set
178# CONFIG_USB_APPLEDISPLAY is not set
179# CONFIG_USB_SISUSBVGA is not set
180# CONFIG_USB_LD is not set
181# CONFIG_USB_TRANCEVIBRATOR is not set
182# CONFIG_USB_IOWARRIOR is not set
183# CONFIG_USB_TEST is not set
184# CONFIG_USB_EHSET_TEST_FIXTURE is not set
185# CONFIG_USB_ISIGHTFW is not set
186# CONFIG_USB_YUREX is not set
187CONFIG_USB_EZUSB_FX2=n
188# CONFIG_USB_HSIC_USB3503 is not set
189# CONFIG_USB_HSIC_USB4604 is not set
190# CONFIG_USB_LINK_LAYER_TEST is not set
191# CONFIG_USB_CHAOSKEY is not set
192# CONFIG_UCSI is not set
193
194#
195# USB Physical Layer drivers
196#
197CONFIG_USB_PHY=n
198CONFIG_NOP_USB_XCEIV=n
199# CONFIG_USB_GPIO_VBUS is not set
200# CONFIG_USB_ISP1301 is not set
201CONFIG_USB_GADGET=n
202# CONFIG_USB_GADGET_DEBUG is not set
203# CONFIG_USB_GADGET_DEBUG_FILES is not set
204# CONFIG_USB_GADGET_DEBUG_FS is not set
205CONFIG_USB_GADGET_VBUS_DRAW=2
206CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
207# CONFIG_U_SERIAL_CONSOLE is not set
208
209#
210# USB Peripheral Controller
211#
212# CONFIG_USB_FOTG210_UDC is not set
213# CONFIG_USB_GR_UDC is not set
214# CONFIG_USB_R8A66597 is not set
215# CONFIG_USB_PXA27X is not set
216# CONFIG_USB_MV_UDC is not set
217# CONFIG_USB_MV_U3D is not set
218# CONFIG_USB_M66592 is not set
219# CONFIG_USB_BDC_UDC is not set
220# CONFIG_USB_AMD5536UDC is not set
221# CONFIG_USB_NET2272 is not set
222# CONFIG_USB_NET2280 is not set
223# CONFIG_USB_GOKU is not set
224# CONFIG_USB_EG20T is not set
225# CONFIG_USB_DUMMY_HCD is not set
226CONFIG_USB_LIBCOMPOSITE=n
227CONFIG_USB_F_ACM=n
228CONFIG_USB_F_SS_LB=n
229CONFIG_USB_U_SERIAL=n
230CONFIG_USB_U_ETHER=n
231CONFIG_USB_F_SERIAL=n
232CONFIG_USB_F_OBEX=n
233CONFIG_USB_F_NCM=n
234CONFIG_USB_F_ECM=n
235CONFIG_USB_F_SUBSET=n
236CONFIG_USB_F_RNDIS=n
237CONFIG_USB_F_MASS_STORAGE=n
238CONFIG_USB_F_FS=n
239CONFIG_USB_F_HID=n
240CONFIG_USB_F_PRINTER=n
241# CONFIG_USB_CONFIGFS is not set
242CONFIG_USB_ZERO=n
243CONFIG_USB_ETH=n
244CONFIG_USB_ETH_RNDIS=n
245# CONFIG_USB_ETH_EEM is not set
246CONFIG_USB_G_NCM=n
247CONFIG_USB_GADGETFS=n
248CONFIG_USB_FUNCTIONFS=n
249# CONFIG_USB_FUNCTIONFS_ETH is not set
250# CONFIG_USB_FUNCTIONFS_RNDIS is not set
251CONFIG_USB_FUNCTIONFS_GENERIC=n
252CONFIG_USB_MASS_STORAGE=n
253CONFIG_USB_G_SERIAL=n
254CONFIG_USB_G_PRINTER=n
255CONFIG_USB_CDC_COMPOSITE=n
256CONFIG_USB_G_ACM_MS=n
257CONFIG_USB_G_MULTI=n
258CONFIG_USB_G_MULTI_RNDIS=n
259# CONFIG_USB_G_MULTI_CDC is not set
260CONFIG_USB_G_HID=n
261CONFIG_USB_G_DBGP=n
262# CONFIG_USB_G_DBGP_PRINTK is not set
263CONFIG_USB_G_DBGP_SERIAL=n
264
265#
266# USB PD and Type-C drivers
267#
268CONFIG_TYPEC=n
269CONFIG_USB_PD_SINK=n
270CONFIG_TYPEC_WCOVE=n
diff --git a/features/usbsupport/usbsupport_m.scc b/features/usbsupport/usbsupport_m.scc
new file mode 100644
index 0000000..d5ed566
--- /dev/null
+++ b/features/usbsupport/usbsupport_m.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Add usb support as module"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware usbsupport_m.cfg
diff --git a/features/usbsupport/usbsupport_n.cfg b/features/usbsupport/usbsupport_n.cfg
new file mode 100644
index 0000000..1324c55
--- /dev/null
+++ b/features/usbsupport/usbsupport_n.cfg
@@ -0,0 +1,270 @@
1CONFIG_USB_SUPPORT=n
2CONFIG_USB_COMMON=n
3CONFIG_USB_ARCH_HAS_HCD=n
4CONFIG_USB=n
5# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
6
7#
8# Miscellaneous USB options
9#
10CONFIG_USB_DEFAULT_PERSIST=n
11# CONFIG_USB_DYNAMIC_MINORS is not set
12# CONFIG_USB_OTG is not set
13# CONFIG_USB_OTG_WHITELIST is not set
14# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set
15# CONFIG_USB_MON is not set
16# CONFIG_USB_WUSB_CBAF is not set
17
18#
19# USB Host Controller Drivers
20#
21# CONFIG_USB_C67X00_HCD is not set
22CONFIG_USB_XHCI_HCD=n
23CONFIG_USB_XHCI_PCI=n
24CONFIG_USB_XHCI_PLATFORM=n
25CONFIG_USB_EHCI_HCD=n
26CONFIG_USB_EHCI_ROOT_HUB_TT=n
27CONFIG_USB_EHCI_TT_NEWSCHED=n
28CONFIG_USB_EHCI_PCI=n
29# CONFIG_USB_EHCI_HCD_PLATFORM is not set
30# CONFIG_USB_OXU210HP_HCD is not set
31# CONFIG_USB_ISP116X_HCD is not set
32# CONFIG_USB_ISP1362_HCD is not set
33# CONFIG_USB_FOTG210_HCD is not set
34# CONFIG_USB_MAX3421_HCD is not set
35CONFIG_USB_OHCI_HCD=n
36CONFIG_USB_OHCI_HCD_PCI=n
37# CONFIG_USB_OHCI_HCD_PLATFORM is not set
38CONFIG_USB_UHCI_HCD=n
39# CONFIG_USB_SL811_HCD is not set
40# CONFIG_USB_R8A66597_HCD is not set
41# CONFIG_USB_HCD_BCMA is not set
42# CONFIG_USB_HCD_TEST_MODE is not set
43
44#
45# USB Device Class drivers
46#
47CONFIG_USB_ACM=n
48# CONFIG_USB_PRINTER is not set
49CONFIG_USB_WDM=n
50# CONFIG_USB_TMC is not set
51
52#
53# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
54#
55
56#
57# also be needed; see USB_STORAGE Help for more info
58#
59CONFIG_USB_STORAGE=n
60# CONFIG_USB_STORAGE_DEBUG is not set
61# CONFIG_USB_STORAGE_REALTEK is not set
62# CONFIG_USB_STORAGE_DATAFAB is not set
63# CONFIG_USB_STORAGE_FREECOM is not set
64# CONFIG_USB_STORAGE_ISD200 is not set
65# CONFIG_USB_STORAGE_USBAT is not set
66# CONFIG_USB_STORAGE_SDDR09 is not set
67# CONFIG_USB_STORAGE_SDDR55 is not set
68# CONFIG_USB_STORAGE_JUMPSHOT is not set
69# CONFIG_USB_STORAGE_ALAUDA is not set
70# CONFIG_USB_STORAGE_ONETOUCH is not set
71# CONFIG_USB_STORAGE_KARMA is not set
72# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
73# CONFIG_USB_STORAGE_ENE_UB6250 is not set
74# CONFIG_USB_UAS is not set
75
76#
77# USB Imaging devices
78#
79# CONFIG_USB_MDC800 is not set
80# CONFIG_USB_MICROTEK is not set
81# CONFIG_USBIP_CORE is not set
82# CONFIG_USB_MUSB_HDRC is not set
83CONFIG_USB_DWC3=n
84# CONFIG_USB_DWC3_HOST is not set
85CONFIG_USB_DWC3_GADGET=n
86# CONFIG_USB_DWC3_DUAL_ROLE is not set
87
88#
89# Platform Glue Driver Support
90#
91CONFIG_USB_DWC3_PCI=n
92CONFIG_USB_DWC2=n
93# CONFIG_USB_DWC2_HOST is not set
94
95#
96# Gadget/Dual-role mode requires USB Gadget support to be enabled
97#
98# CONFIG_USB_DWC2_PERIPHERAL is not set
99CONFIG_USB_DWC2_DUAL_ROLE=n
100CONFIG_USB_DWC2_PCI=n
101# CONFIG_USB_DWC2_DEBUG is not set
102# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
103# CONFIG_USB_CHIPIDEA is not set
104# CONFIG_USB_ISP1760 is not set
105
106#
107# USB port drivers
108#
109# CONFIG_USB_USS720 is not set
110CONFIG_USB_SERIAL=n
111CONFIG_USB_SERIAL_CONSOLE=n
112CONFIG_USB_SERIAL_GENERIC=n
113# CONFIG_USB_SERIAL_SIMPLE is not set
114# CONFIG_USB_SERIAL_AIRCABLE is not set
115# CONFIG_USB_SERIAL_ARK3116 is not set
116# CONFIG_USB_SERIAL_BELKIN is not set
117# CONFIG_USB_SERIAL_CH341 is not set
118# CONFIG_USB_SERIAL_WHITEHEAT is not set
119# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
120# CONFIG_USB_SERIAL_CP210X is not set
121# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
122# CONFIG_USB_SERIAL_EMPEG is not set
123CONFIG_USB_SERIAL_FTDI_SIO=n
124# CONFIG_USB_SERIAL_VISOR is not set
125# CONFIG_USB_SERIAL_IPAQ is not set
126# CONFIG_USB_SERIAL_IR is not set
127# CONFIG_USB_SERIAL_EDGEPORT is not set
128# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
129# CONFIG_USB_SERIAL_F81232 is not set
130# CONFIG_USB_SERIAL_GARMIN is not set
131# CONFIG_USB_SERIAL_IPW is not set
132# CONFIG_USB_SERIAL_IUU is not set
133# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
134# CONFIG_USB_SERIAL_KEYSPAN is not set
135# CONFIG_USB_SERIAL_KLSI is not set
136# CONFIG_USB_SERIAL_KOBIL_SCT is not set
137# CONFIG_USB_SERIAL_MCT_U232 is not set
138# CONFIG_USB_SERIAL_METRO is not set
139# CONFIG_USB_SERIAL_MOS7720 is not set
140# CONFIG_USB_SERIAL_MOS7840 is not set
141# CONFIG_USB_SERIAL_MXUPORT is not set
142# CONFIG_USB_SERIAL_NAVMAN is not set
143CONFIG_USB_SERIAL_PL2303=n
144# CONFIG_USB_SERIAL_OTI6858 is not set
145# CONFIG_USB_SERIAL_QCAUX is not set
146# CONFIG_USB_SERIAL_QUALCOMM is not set
147# CONFIG_USB_SERIAL_SPCP8X5 is not set
148# CONFIG_USB_SERIAL_SAFE is not set
149# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
150# CONFIG_USB_SERIAL_SYMBOL is not set
151# CONFIG_USB_SERIAL_TI is not set
152# CONFIG_USB_SERIAL_CYBERJACK is not set
153# CONFIG_USB_SERIAL_XIRCOM is not set
154# CONFIG_USB_SERIAL_OPTION is not set
155# CONFIG_USB_SERIAL_OMNINET is not set
156# CONFIG_USB_SERIAL_OPTICON is not set
157# CONFIG_USB_SERIAL_XSENS_MT is not set
158# CONFIG_USB_SERIAL_WISHBONE is not set
159# CONFIG_USB_SERIAL_SSU100 is not set
160# CONFIG_USB_SERIAL_QT2 is not set
161# CONFIG_USB_SERIAL_DEBUG is not set
162
163#
164# USB Miscellaneous drivers
165#
166# CONFIG_USB_EMI62 is not set
167# CONFIG_USB_EMI26 is not set
168# CONFIG_USB_ADUTUX is not set
169# CONFIG_USB_SEVSEG is not set
170# CONFIG_USB_RIO500 is not set
171# CONFIG_USB_LEGOTOWER is not set
172# CONFIG_USB_LCD is not set
173# CONFIG_USB_CYPRESS_CY7C63 is not set
174# CONFIG_USB_CYTHERM is not set
175# CONFIG_USB_IDMOUSE is not set
176# CONFIG_USB_FTDI_ELAN is not set
177# CONFIG_USB_APPLEDISPLAY is not set
178# CONFIG_USB_SISUSBVGA is not set
179# CONFIG_USB_LD is not set
180# CONFIG_USB_TRANCEVIBRATOR is not set
181# CONFIG_USB_IOWARRIOR is not set
182# CONFIG_USB_TEST is not set
183# CONFIG_USB_EHSET_TEST_FIXTURE is not set
184# CONFIG_USB_ISIGHTFW is not set
185# CONFIG_USB_YUREX is not set
186CONFIG_USB_EZUSB_FX2=n
187# CONFIG_USB_HSIC_USB3503 is not set
188# CONFIG_USB_HSIC_USB4604 is not set
189# CONFIG_USB_LINK_LAYER_TEST is not set
190# CONFIG_USB_CHAOSKEY is not set
191# CONFIG_UCSI is not set
192
193#
194# USB Physical Layer drivers
195#
196CONFIG_USB_PHY=n
197CONFIG_NOP_USB_XCEIV=n
198# CONFIG_USB_GPIO_VBUS is not set
199# CONFIG_USB_ISP1301 is not set
200CONFIG_USB_GADGET=n
201# CONFIG_USB_GADGET_DEBUG_FILES is not set
202# CONFIG_USB_GADGET_DEBUG_FS is not set
203CONFIG_USB_GADGET_VBUS_DRAW=2
204CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
205# CONFIG_U_SERIAL_CONSOLE is not set
206
207#
208# USB Peripheral Controller
209#
210# CONFIG_USB_FOTG210_UDC is not set
211# CONFIG_USB_GR_UDC is not set
212# CONFIG_USB_R8A66597 is not set
213# CONFIG_USB_PXA27X is not set
214# CONFIG_USB_MV_UDC is not set
215# CONFIG_USB_MV_U3D is not set
216# CONFIG_USB_M66592 is not set
217# CONFIG_USB_BDC_UDC is not set
218# CONFIG_USB_AMD5536UDC is not set
219# CONFIG_USB_NET2272 is not set
220# CONFIG_USB_NET2280 is not set
221# CONFIG_USB_GOKU is not set
222# CONFIG_USB_EG20T is not set
223# CONFIG_USB_DUMMY_HCD is not set
224CONFIG_USB_LIBCOMPOSITE=n
225CONFIG_USB_F_ACM=n
226CONFIG_USB_F_SS_LB=n
227CONFIG_USB_U_SERIAL=n
228CONFIG_USB_U_ETHER=n
229CONFIG_USB_F_SERIAL=n
230CONFIG_USB_F_OBEX=n
231CONFIG_USB_F_NCM=n
232CONFIG_USB_F_ECM=n
233CONFIG_USB_F_SUBSET=n
234CONFIG_USB_F_RNDIS=n
235CONFIG_USB_F_MASS_STORAGE=n
236CONFIG_USB_F_FS=n
237CONFIG_USB_F_HID=n
238CONFIG_USB_F_PRINTER=n
239# CONFIG_USB_CONFIGFS is not set
240CONFIG_USB_ZERO=n
241CONFIG_USB_ETH=n
242CONFIG_USB_ETH_RNDIS=n
243# CONFIG_USB_ETH_EEM is not set
244CONFIG_USB_G_NCM=n
245CONFIG_USB_GADGETFS=n
246CONFIG_USB_FUNCTIONFS=n
247# CONFIG_USB_FUNCTIONFS_ETH is not set
248# CONFIG_USB_FUNCTIONFS_RNDIS is not set
249CONFIG_USB_FUNCTIONFS_GENERIC=n
250CONFIG_USB_MASS_STORAGE=n
251CONFIG_USB_G_SERIAL=n
252CONFIG_USB_G_PRINTER=n
253CONFIG_USB_CDC_COMPOSITE=n
254CONFIG_USB_G_ACM_MS=n
255CONFIG_USB_G_MULTI=n
256CONFIG_USB_G_MULTI_RNDIS=n
257# CONFIG_USB_G_MULTI_CDC is not set
258CONFIG_USB_G_HID=n
259CONFIG_USB_G_DBGP=n
260# CONFIG_USB_G_DBGP_PRINTK is not set
261CONFIG_USB_G_DBGP_SERIAL=n
262
263#
264# USB PD and Type-C drivers
265#
266CONFIG_TYPEC=n
267CONFIG_USB_PD_SINK=n
268CONFIG_TYPEC_WCOVE=n
269# CONFIG_USB_LED_TRIG is not set
270# CONFIG_USB_ULPI_BUS is not set
diff --git a/features/usbsupport/usbsupport_n.scc b/features/usbsupport/usbsupport_n.scc
new file mode 100644
index 0000000..5e93a9a
--- /dev/null
+++ b/features/usbsupport/usbsupport_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for usb support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware usbsupport_n.cfg
diff --git a/features/vfio/vfio.cfg b/features/vfio/vfio.cfg
new file mode 100644
index 0000000..f42b937
--- /dev/null
+++ b/features/vfio/vfio.cfg
@@ -0,0 +1,20 @@
1CONFIG_HAVE_INTEL_TXT=y
2CONFIG_PCI_PASID=y
3CONFIG_VFIO_IOMMU_TYPE1=y
4CONFIG_VFIO_VIRQFD=m
5CONFIG_VFIO=y
6# CONFIG_VFIO_NOIOMMU is not set
7CONFIG_VFIO_PCI=m
8# CONFIG_VFIO_PCI_VGA is not set
9CONFIG_VFIO_PCI_MMAP=y
10CONFIG_VFIO_PCI_INTX=y
11CONFIG_VFIO_PCI_IGD=y
12CONFIG_IOMMU_API=y
13CONFIG_IOMMU_IOVA=y
14CONFIG_DMAR_TABLE=y
15CONFIG_INTEL_IOMMU=y
16CONFIG_INTEL_IOMMU_SVM=y
17CONFIG_INTEL_IOMMU_DEFAULT_ON=y
18CONFIG_INTEL_IOMMU_FLOPPY_WA=y
19# CONFIG_INTEL_TXT is not set
20# CONFIG_KVM_DEVICE_ASSIGNMENT is not set
diff --git a/features/vfio/vfio.scc b/features/vfio/vfio.scc
new file mode 100644
index 0000000..c9369cb
--- /dev/null
+++ b/features/vfio/vfio.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable VFIO"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware vfio.cfg
diff --git a/features/vga/vga_n.cfg b/features/vga/vga_n.cfg
new file mode 100644
index 0000000..cc679da
--- /dev/null
+++ b/features/vga/vga_n.cfg
@@ -0,0 +1 @@
CONFIG_VGA_ARB=n
diff --git a/features/vga/vga_n.scc b/features/vga/vga_n.scc
new file mode 100644
index 0000000..2b9e2c1
--- /dev/null
+++ b/features/vga/vga_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable VGA"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware vga_n.cfg
diff --git a/features/vga/vga_y.cfg b/features/vga/vga_y.cfg
new file mode 100644
index 0000000..6c086b1
--- /dev/null
+++ b/features/vga/vga_y.cfg
@@ -0,0 +1,76 @@
1CONFIG_X86_SYSFB=y
2CONFIG_VT_HW_CONSOLE_BINDING=y
3CONFIG_FB=y
4# CONFIG_FIRMWARE_EDID is not set
5CONFIG_FB_CMDLINE=y
6CONFIG_FB_NOTIFY=y
7# CONFIG_FB_DDC is not set
8# CONFIG_FB_BOOT_VESA_SUPPORT is not set
9CONFIG_FB_CFB_FILLRECT=y
10CONFIG_FB_CFB_COPYAREA=y
11CONFIG_FB_CFB_IMAGEBLIT=y
12# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
13# CONFIG_FB_SYS_FILLRECT is not set
14# CONFIG_FB_SYS_COPYAREA is not set
15# CONFIG_FB_SYS_IMAGEBLIT is not set
16# CONFIG_FB_FOREIGN_ENDIAN is not set
17# CONFIG_FB_SYS_FOPS is not set
18# CONFIG_FB_SVGALIB is not set
19# CONFIG_FB_MACMODES is not set
20# CONFIG_FB_BACKLIGHT is not set
21CONFIG_FB_MODE_HELPERS=y
22CONFIG_FB_TILEBLITTING=y
23
24#
25# Frame buffer hardware drivers
26#
27# CONFIG_FB_CIRRUS is not set
28# CONFIG_FB_PM2 is not set
29# CONFIG_FB_CYBER2000 is not set
30# CONFIG_FB_ARC is not set
31CONFIG_FB_VGA16=y
32CONFIG_FB_VESA=y
33CONFIG_FB_EFI=y
34# CONFIG_FB_N411 is not set
35# CONFIG_FB_HGA is not set
36# CONFIG_FB_OPENCORES is not set
37# CONFIG_FB_S1D13XXX is not set
38# CONFIG_FB_NVIDIA is not set
39# CONFIG_FB_RIVA is not set
40# CONFIG_FB_I740 is not set
41# CONFIG_FB_LE80578 is not set
42# CONFIG_FB_MATROX is not set
43# CONFIG_FB_RADEON is not set
44# CONFIG_FB_ATY128 is not set
45# CONFIG_FB_ATY is not set
46# CONFIG_FB_S3 is not set
47# CONFIG_FB_SAVAGE is not set
48# CONFIG_FB_SIS is not set
49# CONFIG_FB_VIA is not set
50# CONFIG_FB_NEOMAGIC is not set
51# CONFIG_FB_KYRO is not set
52# CONFIG_FB_3DFX is not set
53# CONFIG_FB_VOODOO1 is not set
54# CONFIG_FB_VT8623 is not set
55# CONFIG_FB_TRIDENT is not set
56# CONFIG_FB_ARK is not set
57# CONFIG_FB_PM3 is not set
58# CONFIG_FB_CARMINE is not set
59# CONFIG_FB_SMSCUFX is not set
60# CONFIG_FB_UDL is not set
61# CONFIG_FB_IBM_GXT4500 is not set
62# CONFIG_FB_VIRTUAL is not set
63# CONFIG_FB_METRONOME is not set
64# CONFIG_FB_MB862XX is not set
65# CONFIG_FB_BROADSHEET is not set
66# CONFIG_FB_AUO_K190X is not set
67# CONFIG_FB_SM712 is not set
68CONFIG_VGASTATE=y
69CONFIG_FRAMEBUFFER_CONSOLE=y
70# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
71# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
72# CONFIG_LOGO is not set
73CONFIG_FONT_SUPPORT=y
74# CONFIG_FONTS is not set
75CONFIG_FONT_8x8=y
76CONFIG_FONT_8x16=y
diff --git a/features/vga/vga_y.scc b/features/vga/vga_y.scc
new file mode 100644
index 0000000..0fc91a4
--- /dev/null
+++ b/features/vga/vga_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable basic support for VGA in kernel"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware vga_y.cfg
diff --git a/features/vhost/vhost_m.cfg b/features/vhost/vhost_m.cfg
new file mode 100644
index 0000000..4561a7d
--- /dev/null
+++ b/features/vhost/vhost_m.cfg
@@ -0,0 +1,7 @@
1CONFIG_VHOST=m
2CONFIG_VHOST_NET=m
3CONFIG_VHOST_SCSI=m
4CONFIG_VHOST_VSOCK=m
5CONFIG_VHOST_CROSS_ENDIAN_LEGACY=n
6
7
diff --git a/features/vhost/vhost_m.scc b/features/vhost/vhost_m.scc
new file mode 100644
index 0000000..e5bbe46
--- /dev/null
+++ b/features/vhost/vhost_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Enable vhost support as a module"
2define KFEATURE_COMPATIBILITY board
3
4kconf non-hardware vhost_m.cfg
5
diff --git a/features/vxlan/vxlan_y.cfg b/features/vxlan/vxlan_y.cfg
new file mode 100644
index 0000000..ab1a1b8
--- /dev/null
+++ b/features/vxlan/vxlan_y.cfg
@@ -0,0 +1 @@
CONFIG_VXLAN=y
diff --git a/features/vxlan/vxlan_y.scc b/features/vxlan/vxlan_y.scc
new file mode 100644
index 0000000..7998147
--- /dev/null
+++ b/features/vxlan/vxlan_y.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable vxlan support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware vxlan_y.cfg
diff --git a/features/watchdog/watchdog_n.cfg b/features/watchdog/watchdog_n.cfg
new file mode 100644
index 0000000..3d103ce
--- /dev/null
+++ b/features/watchdog/watchdog_n.cfg
@@ -0,0 +1 @@
CONFIG_WATCHDOG=n
diff --git a/features/watchdog/watchdog_n.scc b/features/watchdog/watchdog_n.scc
new file mode 100644
index 0000000..d394a3d
--- /dev/null
+++ b/features/watchdog/watchdog_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable watchdog support"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware watchdog_n.cfg
diff --git a/features/wireless/wireless_n.cfg b/features/wireless/wireless_n.cfg
new file mode 100644
index 0000000..c9c6944
--- /dev/null
+++ b/features/wireless/wireless_n.cfg
@@ -0,0 +1,12 @@
1CONFIG_WIRELESS=n
2CONFIG_WEXT_CORE=n
3CONFIG_WEXT_PROC=n
4CONFIG_CFG80211=n
5CONFIG_CFG80211_DEFAULT_PS=n
6CONFIG_CFG80211_WEXT=n
7CONFIG_MAC80211=n
8CONFIG_MAC80211_HAS_RC=n
9CONFIG_MAC80211_RC_MINSTREL=n
10CONFIG_MAC80211_RC_MINSTREL_HT=n
11CONFIG_MAC80211_RC_DEFAULT_MINSTREL=n
12CONFIG_MAC80211_LEDS=n
diff --git a/features/wireless/wireless_n.scc b/features/wireless/wireless_n.scc
new file mode 100644
index 0000000..e072d44
--- /dev/null
+++ b/features/wireless/wireless_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for wireless support"
2define KFEATURE_COMPATIBILITY all
3
4kconf hardware wireless_n.cfg
diff --git a/features/wlan/wlan_n.cfg b/features/wlan/wlan_n.cfg
new file mode 100644
index 0000000..59dd7d2
--- /dev/null
+++ b/features/wlan/wlan_n.cfg
@@ -0,0 +1,65 @@
1CONFIG_WLAN=n
2CONFIG_WLAN_VENDOR_ADMTEK=n
3CONFIG_ATH_COMMON=n
4CONFIG_WLAN_VENDOR_ATH=n
5CONFIG_ATH5K=n
6CONFIG_ATH5K_PCI=n
7CONFIG_ATH9K_HW=n
8CONFIG_ATH9K_COMMON=n
9CONFIG_ATH9K_BTCOEX_SUPPORT=n
10CONFIG_ATH9K=n
11CONFIG_ATH9K_PCI=n
12CONFIG_ATH9K_RFKILL=n
13CONFIG_ATH9K_PCOEM=n
14CONFIG_WLAN_VENDOR_ATMEL=n
15CONFIG_WLAN_VENDOR_BROADCOM=n
16CONFIG_BRCMUTIL=n
17CONFIG_BRCMSMAC=n
18CONFIG_BRCMFMAC=n
19CONFIG_BRCMFMAC_PROTO_BCDC=n
20CONFIG_BRCMFMAC_SDIO=n
21CONFIG_BRCMFMAC_USB=n
22CONFIG_WLAN_VENDOR_CISCO=n
23CONFIG_WLAN_VENDOR_INTEL=n
24CONFIG_IWLEGACY=n
25CONFIG_IWL4965=n
26CONFIG_IWL3945=n
27
28#
29# iwl3945 / iwl4965 Debugging Options
30#
31CONFIG_IWLWIFI=n
32CONFIG_IWLWIFI_LEDS=n
33CONFIG_IWLDVM=n
34CONFIG_IWLMVM=n
35CONFIG_IWLWIFI_OPMODE_MODULAR=n
36
37#
38# Debugging Options
39#
40CONFIG_IWLWIFI_DEVICE_TRACING=n
41CONFIG_WLAN_VENDOR_INTERSIL=n
42CONFIG_WLAN_VENDOR_MARVELL=n
43CONFIG_WLAN_VENDOR_MEDIATEK=n
44CONFIG_WLAN_VENDOR_RALINK=n
45CONFIG_RT2X00=n
46CONFIG_RT2800PCI=n
47CONFIG_RT2800PCI_RT33XX=n
48CONFIG_RT2800PCI_RT35XX=n
49CONFIG_RT2800PCI_RT53XX=n
50CONFIG_RT2800PCI_RT3290=n
51CONFIG_RT2800_LIB=n
52CONFIG_RT2800_LIB_MMIO=n
53CONFIG_RT2X00_LIB_MMIO=n
54CONFIG_RT2X00_LIB_PCI=n
55CONFIG_RT2X00_LIB=n
56CONFIG_RT2X00_LIB_FIRMWARE=n
57CONFIG_RT2X00_LIB_CRYPTO=n
58CONFIG_RT2X00_LIB_LEDS=n
59CONFIG_WLAN_VENDOR_REALTEK=n
60CONFIG_RTL_CARDS=n
61CONFIG_RTL_CARDS=n
62CONFIG_WLAN_VENDOR_RSI=n
63CONFIG_WLAN_VENDOR_ST=n
64CONFIG_WLAN_VENDOR_TI=n
65CONFIG_WLAN_VENDOR_ZYDAS=n
diff --git a/features/wlan/wlan_n.scc b/features/wlan/wlan_n.scc
new file mode 100644
index 0000000..9861bf1
--- /dev/null
+++ b/features/wlan/wlan_n.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Disable options for wlan support"
2define KFEATURE_COMPATIBILITY all
3
4kconf non-hardware wlan_n.cfg
diff --git a/features/x86_platform/x86_platform_n.cfg b/features/x86_platform/x86_platform_n.cfg
new file mode 100644
index 0000000..2a96aa9
--- /dev/null
+++ b/features/x86_platform/x86_platform_n.cfg
@@ -0,0 +1 @@
CONFIG_X86_PLATFORM_DEVICES=n
diff --git a/features/x86_platform/x86_platform_n.scc b/features/x86_platform/x86_platform_n.scc
new file mode 100644
index 0000000..a224808
--- /dev/null
+++ b/features/x86_platform/x86_platform_n.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Disable x86 platform devices"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware x86_platform_n.cfg
diff --git a/features/xor_blocks/xor_blocks_m.cfg b/features/xor_blocks/xor_blocks_m.cfg
new file mode 100644
index 0000000..584c49c
--- /dev/null
+++ b/features/xor_blocks/xor_blocks_m.cfg
@@ -0,0 +1 @@
CONFIG_XOR_BLOCKS=m
diff --git a/features/xor_blocks/xor_blocks_m.scc b/features/xor_blocks/xor_blocks_m.scc
new file mode 100644
index 0000000..3ef6b9d
--- /dev/null
+++ b/features/xor_blocks/xor_blocks_m.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Build XOR blocks as a module"
2
3define KFEATURE_COMPATIBILITY all
4
5kconf hardware xor_blocks_m.cfg
diff --git a/patches/boot_time_opt/0011-drm-i915-fbc-sanitize-fbc-GEN-greater-than-9.patch b/patches/boot_time_opt/0011-drm-i915-fbc-sanitize-fbc-GEN-greater-than-9.patch
new file mode 100644
index 0000000..33debcd
--- /dev/null
+++ b/patches/boot_time_opt/0011-drm-i915-fbc-sanitize-fbc-GEN-greater-than-9.patch
@@ -0,0 +1,25 @@
1From 07639791f247ae7a807444106b9b7611f070d02b Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Fri, 6 Jan 2017 13:28:29 +0000
4Subject: [PATCH] drm/i915/fbc: sanitize fbc GEN greater than 9
5
6---
7 drivers/gpu/drm/i915/intel_fbc.c | 2 +-
8 1 file changed, 1 insertion(+), 1 deletion(-)
9
10diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c
11index c43dd9abce79..f5a2560840f3 100644
12--- a/drivers/gpu/drm/i915/intel_fbc.c
13+++ b/drivers/gpu/drm/i915/intel_fbc.c
14@@ -1262,7 +1262,7 @@ static int intel_sanitize_fbc_option(struct drm_i915_private *dev_priv)
15 if (!HAS_FBC(dev_priv))
16 return 0;
17
18- if (IS_BROADWELL(dev_priv))
19+ if (IS_BROADWELL(dev_priv) || INTEL_GEN(dev_priv) >= 9)
20 return 1;
21
22 return 0;
23--
242.11.1
25
diff --git a/patches/boot_time_opt/0101-kvm-silence-kvm-unhandled-rdmsr.patch b/patches/boot_time_opt/0101-kvm-silence-kvm-unhandled-rdmsr.patch
new file mode 100644
index 0000000..aeb3abf
--- /dev/null
+++ b/patches/boot_time_opt/0101-kvm-silence-kvm-unhandled-rdmsr.patch
@@ -0,0 +1,29 @@
1From f45c353859fc0ceb75fef3a2f4a2c179dfa378d7 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Tue, 23 Jun 2015 01:16:45 -0500
4Subject: [PATCH 101/124] kvm: silence kvm unhandled rdmsr
5
6Author: Arjan van de Ven <arjan@linux.intel.com>
7
8Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
9Signed-off-by: Jose Carlos Venegas Munoz <jos.c.venegas.munoz@intel.com>
10---
11 arch/x86/kvm/x86.c | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
15index 731044efb195..582c75311f95 100644
16--- a/arch/x86/kvm/x86.c
17+++ b/arch/x86/kvm/x86.c
18@@ -2506,7 +2506,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
19 if (kvm_pmu_is_valid_msr(vcpu, msr_info->index))
20 return kvm_pmu_get_msr(vcpu, msr_info->index, &msr_info->data);
21 if (!ignore_msrs) {
22- vcpu_unimpl(vcpu, "unhandled rdmsr: 0x%x\n", msr_info->index);
23+// vcpu_unimpl(vcpu, "unhandled rdmsr: 0x%x\n", msr_info->index);
24 return 1;
25 } else {
26 vcpu_unimpl(vcpu, "ignored rdmsr: 0x%x\n", msr_info->index);
27--
282.11.1
29
diff --git a/patches/boot_time_opt/0102-i8042-decrease-debug-message-level-to-info.patch b/patches/boot_time_opt/0102-i8042-decrease-debug-message-level-to-info.patch
new file mode 100644
index 0000000..96fd92b
--- /dev/null
+++ b/patches/boot_time_opt/0102-i8042-decrease-debug-message-level-to-info.patch
@@ -0,0 +1,65 @@
1From 7e847b13b753ec632fef2f1ffa0d8f5b444c967b Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Tue, 23 Jun 2015 01:26:52 -0500
4Subject: [PATCH 102/124] i8042: decrease debug message level to info
5
6Author: Arjan van de Ven <arjan@linux.intel.com>
7
8Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
9Signed-off-by: Jose Carlos Venegas Munoz <jos.c.venegas.munoz@intel.com>
10---
11 drivers/input/serio/i8042.c | 10 +++++-----
12 1 file changed, 5 insertions(+), 5 deletions(-)
13
14diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
15index 89abfdb539ac..5317c41b049e 100644
16--- a/drivers/input/serio/i8042.c
17+++ b/drivers/input/serio/i8042.c
18@@ -593,7 +593,7 @@ static int i8042_enable_kbd_port(void)
19 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
20 i8042_ctr &= ~I8042_CTR_KBDINT;
21 i8042_ctr |= I8042_CTR_KBDDIS;
22- pr_err("Failed to enable KBD port\n");
23+ pr_info("Failed to enable KBD port\n");
24 return -EIO;
25 }
26
27@@ -612,7 +612,7 @@ static int i8042_enable_aux_port(void)
28 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
29 i8042_ctr &= ~I8042_CTR_AUXINT;
30 i8042_ctr |= I8042_CTR_AUXDIS;
31- pr_err("Failed to enable AUX port\n");
32+ pr_info("Failed to enable AUX port\n");
33 return -EIO;
34 }
35
36@@ -704,7 +704,7 @@ static int __init i8042_check_mux(void)
37 i8042_ctr &= ~I8042_CTR_AUXINT;
38
39 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
40- pr_err("Failed to disable AUX port, can't use MUX\n");
41+ pr_info("Failed to disable AUX port, can't use MUX\n");
42 return -EIO;
43 }
44
45@@ -927,7 +927,7 @@ static int i8042_controller_selftest(void)
46 do {
47
48 if (i8042_command(&param, I8042_CMD_CTL_TEST)) {
49- pr_err("i8042 controller selftest timeout\n");
50+ pr_info("i8042 controller selftest timeout\n");
51 return -ENODEV;
52 }
53
54@@ -949,7 +949,7 @@ static int i8042_controller_selftest(void)
55 pr_info("giving up on controller selftest, continuing anyway...\n");
56 return 0;
57 #else
58- pr_err("i8042 controller selftest failed\n");
59+ pr_info("i8042 controller selftest failed\n");
60 return -EIO;
61 #endif
62 }
63--
642.11.1
65
diff --git a/patches/boot_time_opt/0103-init-do_mounts-recreate-dev-root.patch b/patches/boot_time_opt/0103-init-do_mounts-recreate-dev-root.patch
new file mode 100644
index 0000000..bb7bb9f
--- /dev/null
+++ b/patches/boot_time_opt/0103-init-do_mounts-recreate-dev-root.patch
@@ -0,0 +1,42 @@
1From 838abc7e5f43ea40a2cc05ebd6c7321b6d84b057 Mon Sep 17 00:00:00 2001
2From: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
3Date: Fri, 20 Nov 2015 14:01:26 -0600
4Subject: [PATCH 103/124] init: do_mounts: recreate /dev/root
5
6Rootfs shows as is mounted in /dev/root, but this devices is not present in
7/dev directory.
8
9Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
10---
11 init/do_mounts.c | 8 ++++++++
12 1 file changed, 8 insertions(+)
13
14diff --git a/init/do_mounts.c b/init/do_mounts.c
15index dea5de95c2dd..d74a346b2dfa 100644
16--- a/init/do_mounts.c
17+++ b/init/do_mounts.c
18@@ -549,6 +549,7 @@ void __init mount_root(void)
19 void __init prepare_namespace(void)
20 {
21 int is_floppy;
22+ int err;
23
24 if (root_delay) {
25 printk(KERN_INFO "Waiting %d sec before mounting root device...\n",
26@@ -602,6 +603,13 @@ void __init prepare_namespace(void)
27 devtmpfs_mount("dev");
28 sys_mount(".", "/", NULL, MS_MOVE, NULL);
29 sys_chroot(".");
30+#ifdef CONFIG_BLOCK
31+ /* recreate the /dev/root */
32+ err = create_dev("/dev/root", ROOT_DEV);
33+
34+ if (err < 0)
35+ pr_emerg("Failed to create /dev/root: %d\n", err);
36+#endif
37 }
38
39 static bool is_tmpfs;
40--
412.11.1
42
diff --git a/patches/boot_time_opt/0104-Increase-the-ext4-default-commit-age.patch b/patches/boot_time_opt/0104-Increase-the-ext4-default-commit-age.patch
new file mode 100644
index 0000000..fb709b4
--- /dev/null
+++ b/patches/boot_time_opt/0104-Increase-the-ext4-default-commit-age.patch
@@ -0,0 +1,35 @@
1From b6970d43f97325c9acc7bd942dcd192586d8d407 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 11 Jan 2016 10:01:44 -0600
4Subject: [PATCH 104/124] Increase the ext4 default commit age
5
6Both the VM and EXT4 have a "commit to disk after X seconds" time.
7Currently the EXT4 time is shorter than our VM time, which is a bit
8suboptional,
9it's better for performance to let the VM do the writeouts in bulk
10rather than something deep in the journalling layer.
11
12(DISTRO TWEAK -- NOT FOR UPSTREAM)
13
14Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
15Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
16---
17 include/linux/jbd2.h | 2 +-
18 1 file changed, 1 insertion(+), 1 deletion(-)
19
20diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
21index dfaa1f4dcb0c..9955fd6c6159 100644
22--- a/include/linux/jbd2.h
23+++ b/include/linux/jbd2.h
24@@ -47,7 +47,7 @@
25 /*
26 * The default maximum commit age, in seconds.
27 */
28-#define JBD2_DEFAULT_MAX_COMMIT_AGE 5
29+#define JBD2_DEFAULT_MAX_COMMIT_AGE 30
30
31 #ifdef CONFIG_JBD2_DEBUG
32 /*
33--
342.11.1
35
diff --git a/patches/boot_time_opt/0105-silence-rapl.patch b/patches/boot_time_opt/0105-silence-rapl.patch
new file mode 100644
index 0000000..4dd78fc
--- /dev/null
+++ b/patches/boot_time_opt/0105-silence-rapl.patch
@@ -0,0 +1,25 @@
1From 558d32869c8d8e302dd3810610d62e1c69a8ebce Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 14 Mar 2016 11:22:09 -0600
4Subject: [PATCH 105/124] silence rapl
5
6---
7 drivers/powercap/intel_rapl.c | 2 +-
8 1 file changed, 1 insertion(+), 1 deletion(-)
9
10diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c
11index 3c71f608b444..450aff027d42 100644
12--- a/drivers/powercap/intel_rapl.c
13+++ b/drivers/powercap/intel_rapl.c
14@@ -1684,7 +1684,7 @@ static int __init rapl_init(void)
15
16 id = x86_match_cpu(rapl_ids);
17 if (!id) {
18- pr_err("driver does not support CPU family %d model %d\n",
19+ pr_info("driver does not support CPU family %d model %d\n",
20 boot_cpu_data.x86, boot_cpu_data.x86_model);
21
22 return -ENODEV;
23--
242.11.1
25
diff --git a/patches/boot_time_opt/0106-pci-pme-wakeups.patch b/patches/boot_time_opt/0106-pci-pme-wakeups.patch
new file mode 100644
index 0000000..f0a4799
--- /dev/null
+++ b/patches/boot_time_opt/0106-pci-pme-wakeups.patch
@@ -0,0 +1,27 @@
1From 1f44219cd74f5c3b97e2c85af87141e1bddf0555 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 14 Mar 2016 11:10:58 -0600
4Subject: [PATCH 106/124] pci pme wakeups
5
6Reduce wakeups for PME checks, which are a workaround for miswired
7boards (sadly, too many of them) in laptops.
8---
9 drivers/pci/pci.c | 2 +-
10 1 file changed, 1 insertion(+), 1 deletion(-)
11
12diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
13index eda6a7cf0e54..82a623255059 100644
14--- a/drivers/pci/pci.c
15+++ b/drivers/pci/pci.c
16@@ -57,7 +57,7 @@ struct pci_pme_device {
17 struct pci_dev *dev;
18 };
19
20-#define PME_TIMEOUT 1000 /* How long between PME checks */
21+#define PME_TIMEOUT 4000 /* How long between PME checks */
22
23 static void pci_dev_d3_sleep(struct pci_dev *dev)
24 {
25--
262.11.1
27
diff --git a/patches/boot_time_opt/0107-ksm-wakeups.patch b/patches/boot_time_opt/0107-ksm-wakeups.patch
new file mode 100644
index 0000000..2b25625
--- /dev/null
+++ b/patches/boot_time_opt/0107-ksm-wakeups.patch
@@ -0,0 +1,34 @@
1From a5de04044d428bf54472365e7dc07958aa184daf Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 14 Mar 2016 11:06:46 -0600
4Subject: [PATCH 107/124] ksm-wakeups
5
6reduce wakeups in ksm by adding rounding (aligning) when the sleep times are 1 second or longer
7
8Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
9---
10 mm/ksm.c | 8 ++++++--
11 1 file changed, 6 insertions(+), 2 deletions(-)
12
13diff --git a/mm/ksm.c b/mm/ksm.c
14index 9ae6011a41f8..eecd3ff669e2 100644
15--- a/mm/ksm.c
16+++ b/mm/ksm.c
17@@ -1725,8 +1725,12 @@ static int ksm_scan_thread(void *nothing)
18 try_to_freeze();
19
20 if (ksmd_should_run()) {
21- schedule_timeout_interruptible(
22- msecs_to_jiffies(ksm_thread_sleep_millisecs));
23+ if (ksm_thread_sleep_millisecs >= 1000)
24+ schedule_timeout_interruptible(
25+ msecs_to_jiffies(round_jiffies_relative(ksm_thread_sleep_millisecs)));
26+ else
27+ schedule_timeout_interruptible(
28+ msecs_to_jiffies(ksm_thread_sleep_millisecs));
29 } else {
30 wait_event_freezable(ksm_thread_wait,
31 ksmd_should_run() || kthread_should_stop());
32--
332.11.1
34
diff --git a/patches/boot_time_opt/0108-intel_idle-tweak-cpuidle-cstates.patch b/patches/boot_time_opt/0108-intel_idle-tweak-cpuidle-cstates.patch
new file mode 100644
index 0000000..da5396c
--- /dev/null
+++ b/patches/boot_time_opt/0108-intel_idle-tweak-cpuidle-cstates.patch
@@ -0,0 +1,227 @@
1From bf7e0cebaafe790f62cbc5815648d556847b7d27 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Sat, 19 Mar 2016 21:32:19 -0400
4Subject: [PATCH 108/124] intel_idle: tweak cpuidle cstates
5
6Increase target_residency in cpuidle cstate
7
8Tune intel_idle to be a bit less agressive;
9Clear linux is cleaner in hygiene (wakupes) than the average linux,
10so we can afford changing these in a way that increases
11performance while keeping power efficiency
12---
13 drivers/idle/intel_idle.c | 74 +++++++++++------------------------------------
14 1 file changed, 17 insertions(+), 57 deletions(-)
15
16diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
17index 4466a2f969d7..cbab050b83f0 100644
18--- a/drivers/idle/intel_idle.c
19+++ b/drivers/idle/intel_idle.c
20@@ -475,7 +475,7 @@ static struct cpuidle_state hsw_cstates[] = {
21 .desc = "MWAIT 0x10",
22 .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
23 .exit_latency = 33,
24- .target_residency = 100,
25+ .target_residency = 1000,
26 .enter = &intel_idle,
27 .enter_freeze = intel_idle_freeze, },
28 {
29@@ -483,7 +483,7 @@ static struct cpuidle_state hsw_cstates[] = {
30 .desc = "MWAIT 0x20",
31 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
32 .exit_latency = 133,
33- .target_residency = 400,
34+ .target_residency = 4000,
35 .enter = &intel_idle,
36 .enter_freeze = intel_idle_freeze, },
37 {
38@@ -491,7 +491,7 @@ static struct cpuidle_state hsw_cstates[] = {
39 .desc = "MWAIT 0x32",
40 .flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
41 .exit_latency = 166,
42- .target_residency = 500,
43+ .target_residency = 5000,
44 .enter = &intel_idle,
45 .enter_freeze = intel_idle_freeze, },
46 {
47@@ -499,7 +499,7 @@ static struct cpuidle_state hsw_cstates[] = {
48 .desc = "MWAIT 0x40",
49 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
50 .exit_latency = 300,
51- .target_residency = 900,
52+ .target_residency = 9000,
53 .enter = &intel_idle,
54 .enter_freeze = intel_idle_freeze, },
55 {
56@@ -507,7 +507,7 @@ static struct cpuidle_state hsw_cstates[] = {
57 .desc = "MWAIT 0x50",
58 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
59 .exit_latency = 600,
60- .target_residency = 1800,
61+ .target_residency = 18000,
62 .enter = &intel_idle,
63 .enter_freeze = intel_idle_freeze, },
64 {
65@@ -515,7 +515,7 @@ static struct cpuidle_state hsw_cstates[] = {
66 .desc = "MWAIT 0x60",
67 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
68 .exit_latency = 2600,
69- .target_residency = 7700,
70+ .target_residency = 77000,
71 .enter = &intel_idle,
72 .enter_freeze = intel_idle_freeze, },
73 {
74@@ -531,27 +531,11 @@ static struct cpuidle_state bdw_cstates[] = {
75 .enter = &intel_idle,
76 .enter_freeze = intel_idle_freeze, },
77 {
78- .name = "C1E-BDW",
79- .desc = "MWAIT 0x01",
80- .flags = MWAIT2flg(0x01),
81- .exit_latency = 10,
82- .target_residency = 20,
83- .enter = &intel_idle,
84- .enter_freeze = intel_idle_freeze, },
85- {
86- .name = "C3-BDW",
87- .desc = "MWAIT 0x10",
88- .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
89- .exit_latency = 40,
90- .target_residency = 100,
91- .enter = &intel_idle,
92- .enter_freeze = intel_idle_freeze, },
93- {
94 .name = "C6-BDW",
95 .desc = "MWAIT 0x20",
96 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
97 .exit_latency = 133,
98- .target_residency = 400,
99+ .target_residency = 4000,
100 .enter = &intel_idle,
101 .enter_freeze = intel_idle_freeze, },
102 {
103@@ -559,7 +543,7 @@ static struct cpuidle_state bdw_cstates[] = {
104 .desc = "MWAIT 0x32",
105 .flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
106 .exit_latency = 166,
107- .target_residency = 500,
108+ .target_residency = 5000,
109 .enter = &intel_idle,
110 .enter_freeze = intel_idle_freeze, },
111 {
112@@ -567,7 +551,7 @@ static struct cpuidle_state bdw_cstates[] = {
113 .desc = "MWAIT 0x40",
114 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
115 .exit_latency = 300,
116- .target_residency = 900,
117+ .target_residency = 9000,
118 .enter = &intel_idle,
119 .enter_freeze = intel_idle_freeze, },
120 {
121@@ -575,7 +559,7 @@ static struct cpuidle_state bdw_cstates[] = {
122 .desc = "MWAIT 0x50",
123 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
124 .exit_latency = 600,
125- .target_residency = 1800,
126+ .target_residency = 18000,
127 .enter = &intel_idle,
128 .enter_freeze = intel_idle_freeze, },
129 {
130@@ -583,7 +567,7 @@ static struct cpuidle_state bdw_cstates[] = {
131 .desc = "MWAIT 0x60",
132 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
133 .exit_latency = 2600,
134- .target_residency = 7700,
135+ .target_residency = 77000,
136 .enter = &intel_idle,
137 .enter_freeze = intel_idle_freeze, },
138 {
139@@ -600,27 +584,11 @@ static struct cpuidle_state skl_cstates[] = {
140 .enter = &intel_idle,
141 .enter_freeze = intel_idle_freeze, },
142 {
143- .name = "C1E-SKL",
144- .desc = "MWAIT 0x01",
145- .flags = MWAIT2flg(0x01),
146- .exit_latency = 10,
147- .target_residency = 20,
148- .enter = &intel_idle,
149- .enter_freeze = intel_idle_freeze, },
150- {
151- .name = "C3-SKL",
152- .desc = "MWAIT 0x10",
153- .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
154- .exit_latency = 70,
155- .target_residency = 100,
156- .enter = &intel_idle,
157- .enter_freeze = intel_idle_freeze, },
158- {
159 .name = "C6-SKL",
160 .desc = "MWAIT 0x20",
161 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
162 .exit_latency = 85,
163- .target_residency = 200,
164+ .target_residency = 2000,
165 .enter = &intel_idle,
166 .enter_freeze = intel_idle_freeze, },
167 {
168@@ -628,7 +596,7 @@ static struct cpuidle_state skl_cstates[] = {
169 .desc = "MWAIT 0x33",
170 .flags = MWAIT2flg(0x33) | CPUIDLE_FLAG_TLB_FLUSHED,
171 .exit_latency = 124,
172- .target_residency = 800,
173+ .target_residency = 8000,
174 .enter = &intel_idle,
175 .enter_freeze = intel_idle_freeze, },
176 {
177@@ -636,7 +604,7 @@ static struct cpuidle_state skl_cstates[] = {
178 .desc = "MWAIT 0x40",
179 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
180 .exit_latency = 200,
181- .target_residency = 800,
182+ .target_residency = 8000,
183 .enter = &intel_idle,
184 .enter_freeze = intel_idle_freeze, },
185 {
186@@ -644,7 +612,7 @@ static struct cpuidle_state skl_cstates[] = {
187 .desc = "MWAIT 0x50",
188 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
189 .exit_latency = 480,
190- .target_residency = 5000,
191+ .target_residency = 50000,
192 .enter = &intel_idle,
193 .enter_freeze = intel_idle_freeze, },
194 {
195@@ -652,7 +620,7 @@ static struct cpuidle_state skl_cstates[] = {
196 .desc = "MWAIT 0x60",
197 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
198 .exit_latency = 890,
199- .target_residency = 5000,
200+ .target_residency = 50000,
201 .enter = &intel_idle,
202 .enter_freeze = intel_idle_freeze, },
203 {
204@@ -669,19 +637,11 @@ static struct cpuidle_state skx_cstates[] = {
205 .enter = &intel_idle,
206 .enter_freeze = intel_idle_freeze, },
207 {
208- .name = "C1E-SKX",
209- .desc = "MWAIT 0x01",
210- .flags = MWAIT2flg(0x01),
211- .exit_latency = 10,
212- .target_residency = 20,
213- .enter = &intel_idle,
214- .enter_freeze = intel_idle_freeze, },
215- {
216 .name = "C6-SKX",
217 .desc = "MWAIT 0x20",
218 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
219 .exit_latency = 133,
220- .target_residency = 600,
221+ .target_residency = 1600,
222 .enter = &intel_idle,
223 .enter_freeze = intel_idle_freeze, },
224 {
225--
2262.11.1
227
diff --git a/patches/boot_time_opt/0109-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch b/patches/boot_time_opt/0109-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch
new file mode 100644
index 0000000..70247a0
--- /dev/null
+++ b/patches/boot_time_opt/0109-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch
@@ -0,0 +1,56 @@
1From 4170571f7bb0897c90e13b2fcf3ee06990a9e774 Mon Sep 17 00:00:00 2001
2From: Alan Cox <alan@linux.intel.com>
3Date: Thu, 10 Mar 2016 15:11:28 +0000
4Subject: [PATCH 109/124] xattr: allow setting user.* attributes on symlinks by
5 owner
6
7Kvmtool and clear containers supports using user attributes to label host
8files with the virtual uid/guid of the file in the container. This allows an
9end user to manage their files and a complete uid space without all the ugly
10namespace stuff.
11
12The one gap in the support is symlinks because an end user can change the
13ownership of a symbolic link. We support attributes on these files as you
14can already (as root) set security attributes on them.
15
16The current rules seem slightly over-paranoid and as we have a use case this
17patch enables updating the attributes on a symbolic link IFF you are the
18owner of the synlink (as permissions are not usually meaningful on the link
19itself).
20
21Signed-off-by: Alan Cox <alan@linux.intel.com>
22---
23 fs/xattr.c | 14 ++++++++------
24 1 file changed, 8 insertions(+), 6 deletions(-)
25
26diff --git a/fs/xattr.c b/fs/xattr.c
27index 2d13b4e62fae..580a5aeddfd2 100644
28--- a/fs/xattr.c
29+++ b/fs/xattr.c
30@@ -118,15 +118,17 @@ xattr_permission(struct inode *inode, const char *name, int mask)
31 }
32
33 /*
34- * In the user.* namespace, only regular files and directories can have
35- * extended attributes. For sticky directories, only the owner and
36- * privileged users can write attributes.
37+ * In the user.* namespace, only regular files, symbolic links, and
38+ * directories can have extended attributes. For symbolic links and
39+ * sticky directories, only the owner and privileged users can write
40+ * attributes.
41 */
42 if (!strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN)) {
43- if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode))
44+ if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode) && !S_ISLNK(inode->i_mode))
45 return (mask & MAY_WRITE) ? -EPERM : -ENODATA;
46- if (S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX) &&
47- (mask & MAY_WRITE) && !inode_owner_or_capable(inode))
48+ if (((S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX))
49+ || S_ISLNK(inode->i_mode)) && (mask & MAY_WRITE)
50+ && !inode_owner_or_capable(inode))
51 return -EPERM;
52 }
53
54--
552.11.1
56
diff --git a/patches/boot_time_opt/0110-init_task-faster-timerslack.patch b/patches/boot_time_opt/0110-init_task-faster-timerslack.patch
new file mode 100644
index 0000000..b0075ff
--- /dev/null
+++ b/patches/boot_time_opt/0110-init_task-faster-timerslack.patch
@@ -0,0 +1,32 @@
1From 42c2cb32259b76fb1f6713d99c4f0922e97bcc8d Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 23 Mar 2016 14:52:41 +0000
4Subject: [PATCH 110/124] init_task: faster timerslack
5
6the default tuning is a compromise between client power and server performance;
7for a server distro like Clear Linux, we don't need to compromise.
8(for non-server usages we have different kernel binaries)
9
10in principle this can be done as a patch to systemd as well, but we have a shared
11systemd between usages while we have different kernels, so the logistics
12for where the patch goes work out better here
13---
14 include/linux/init_task.h | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/include/linux/init_task.h b/include/linux/init_task.h
18index 325f649d77ff..e0eb261e17cb 100644
19--- a/include/linux/init_task.h
20+++ b/include/linux/init_task.h
21@@ -249,7 +249,7 @@ extern struct task_group root_task_group;
22 .journal_info = NULL, \
23 .cpu_timers = INIT_CPU_TIMERS(tsk.cpu_timers), \
24 .pi_lock = __RAW_SPIN_LOCK_UNLOCKED(tsk.pi_lock), \
25- .timer_slack_ns = 50000, /* 50 usec default slack */ \
26+ .timer_slack_ns = 1000, /* 1 usec default slack */ \
27 .pids = { \
28 [PIDTYPE_PID] = INIT_PID_LINK(PIDTYPE_PID), \
29 [PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \
30--
312.11.1
32
diff --git a/patches/boot_time_opt/0112-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch b/patches/boot_time_opt/0112-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch
new file mode 100644
index 0000000..7d0def8
--- /dev/null
+++ b/patches/boot_time_opt/0112-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch
@@ -0,0 +1,158 @@
1From 3152053ea1ea3aa77bcc7e990d48ef84621ff6c9 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Sat, 9 Apr 2016 22:41:37 +0000
4Subject: [PATCH 112/124] fs: ext4: fsync: optimize double-fsync() a bunch
5
6There are cases where EXT4 is a bit too conservative sending barriers down to the disk;
7there are cases where the transaction in progress is not the one that sent the barrier
8(in other words: the fsync is for a file for which the IO happened more time ago
9and all data was already sent to the disk). For that case, a more performing tradeoff
10can be made on SSD devices (which have the ability to flush their dram caches in a hurry
11on a power fail event) where the barrier gets sent to the disk, but we don't need to wait
12for the barrier to complete. Any consecutive IO will block on the barrier correctly.
13---
14 block/bio.c | 20 ++++++++++++++++++++
15 block/blk-flush.c | 41 +++++++++++++++++++++++++++++++++++++++++
16 fs/ext4/fsync.c | 6 +++++-
17 include/linux/bio.h | 1 +
18 include/linux/blkdev.h | 5 +++++
19 5 files changed, 72 insertions(+), 1 deletion(-)
20
21diff --git a/block/bio.c b/block/bio.c
22index db85c5753a76..80f5ab6b536a 100644
23--- a/block/bio.c
24+++ b/block/bio.c
25@@ -882,6 +882,26 @@ int submit_bio_wait(struct bio *bio)
26 }
27 EXPORT_SYMBOL(submit_bio_wait);
28
29+static void submit_bio_nowait_endio(struct bio *bio)
30+{
31+ bio_put(bio);
32+}
33+
34+/**
35+ * submit_bio_nowait - submit a bio for fire-and-forget
36+ * @rw: whether to %READ or %WRITE, or maybe to %READA (read ahead)
37+ * @bio: The &struct bio which describes the I/O
38+ *
39+ * Simple wrapper around submit_bio() that takes care of bio_put() on completion
40+ */
41+void submit_bio_nowait(struct bio *bio)
42+{
43+ bio->bi_end_io = submit_bio_nowait_endio;
44+ bio->bi_opf |= REQ_SYNC;
45+ submit_bio(bio);
46+}
47+EXPORT_SYMBOL(submit_bio_nowait);
48+
49 /**
50 * bio_advance - increment/complete a bio by some number of bytes
51 * @bio: bio to advance
52diff --git a/block/blk-flush.c b/block/blk-flush.c
53index 3c882cbc7541..b2dfcfe01ed7 100644
54--- a/block/blk-flush.c
55+++ b/block/blk-flush.c
56@@ -530,6 +530,47 @@ int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask,
57 }
58 EXPORT_SYMBOL(blkdev_issue_flush);
59
60+/**
61+ * blkdev_issue_flush_nowait - queue a flush
62+ * @bdev: blockdev to issue flush for
63+ * @gfp_mask: memory allocation flags (for bio_alloc)
64+ * @error_sector: error sector
65+ *
66+ * Description:
67+ * Issue a flush for the block device in question. Caller can supply
68+ * room for storing the error offset in case of a flush error, if they
69+ * wish to. If WAIT flag is not passed then caller may check only what
70+ * request was pushed in some internal queue for later handling.
71+ */
72+void blkdev_issue_flush_nowait(struct block_device *bdev, gfp_t gfp_mask)
73+{
74+ struct request_queue *q;
75+ struct bio *bio;
76+
77+ if (bdev->bd_disk == NULL)
78+ return;
79+
80+ q = bdev_get_queue(bdev);
81+ if (!q)
82+ return;
83+
84+ /*
85+ * some block devices may not have their queue correctly set up here
86+ * (e.g. loop device without a backing file) and so issuing a flush
87+ * here will panic. Ensure there is a request function before issuing
88+ * the flush.
89+ */
90+ if (!q->make_request_fn)
91+ return;
92+
93+ bio = bio_alloc(gfp_mask, 0);
94+ bio->bi_bdev = bdev;
95+ bio_set_op_attrs(bio, REQ_OP_WRITE, WRITE_FLUSH);
96+
97+ submit_bio_nowait(bio);
98+}
99+EXPORT_SYMBOL(blkdev_issue_flush_nowait);
100+
101 struct blk_flush_queue *blk_alloc_flush_queue(struct request_queue *q,
102 int node, int cmd_size)
103 {
104diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c
105index 88effb1053c7..a58966c18172 100644
106--- a/fs/ext4/fsync.c
107+++ b/fs/ext4/fsync.c
108@@ -150,7 +150,11 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
109 ret = jbd2_complete_transaction(journal, commit_tid);
110 if (needs_barrier) {
111 issue_flush:
112- err = blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
113+ err = 0;
114+ if (!blk_queue_nonrot(bdev_get_queue(inode->i_sb->s_bdev)))
115+ err = blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
116+ else
117+ blkdev_issue_flush_nowait(inode->i_sb->s_bdev, GFP_KERNEL);
118 if (!ret)
119 ret = err;
120 }
121diff --git a/include/linux/bio.h b/include/linux/bio.h
122index 97cb48f03dc7..3f055e6541e0 100644
123--- a/include/linux/bio.h
124+++ b/include/linux/bio.h
125@@ -421,6 +421,7 @@ struct request_queue;
126 extern int bio_phys_segments(struct request_queue *, struct bio *);
127
128 extern int submit_bio_wait(struct bio *bio);
129+extern void submit_bio_nowait(struct bio *bio);
130 extern void bio_advance(struct bio *, unsigned);
131
132 extern void bio_init(struct bio *);
133diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
134index f6a816129856..727684abf21e 100644
135--- a/include/linux/blkdev.h
136+++ b/include/linux/blkdev.h
137@@ -1144,6 +1144,7 @@ static inline struct request *blk_map_queue_find_tag(struct blk_queue_tag *bqt,
138 #define BLKDEV_DISCARD_ZERO (1 << 1) /* must reliably zero data */
139
140 extern int blkdev_issue_flush(struct block_device *, gfp_t, sector_t *);
141+extern void blkdev_issue_flush_nowait(struct block_device *, gfp_t);
142 extern int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
143 sector_t nr_sects, gfp_t gfp_mask, unsigned long flags);
144 extern int __blkdev_issue_discard(struct block_device *bdev, sector_t sector,
145@@ -1745,6 +1746,10 @@ static inline int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask,
146 return 0;
147 }
148
149+static inline void blkdev_issue_flush_nowait(struct block_device *bdev, gfp_t gfp_mask)
150+{
151+}
152+
153 #endif /* CONFIG_BLOCK */
154
155 #endif
156--
1572.11.1
158
diff --git a/patches/boot_time_opt/0113-overload-on-wakeup.patch b/patches/boot_time_opt/0113-overload-on-wakeup.patch
new file mode 100644
index 0000000..a3a6bce
--- /dev/null
+++ b/patches/boot_time_opt/0113-overload-on-wakeup.patch
@@ -0,0 +1,43 @@
1From 9f25d18f45a8391488feb9783404f2f79b7090f4 Mon Sep 17 00:00:00 2001
2From: jplozi <jplozi@unice.fr>
3Date: Fri, 11 Mar 2016 15:18:06 +0100
4Subject: [PATCH 113/124] overload on wakeup
5
6source https://github.com/jplozi/wastedcores
7
8as an experiment, apply the learnings from the wasted-cores paper
9and see how the performance works out. With the data from this we should
10be able to work with Peter and the rest of the scheduler folks on
11a more permanent/elegant solution.
12---
13 kernel/sched/fair.c | 14 ++++++++++++++
14 1 file changed, 14 insertions(+)
15
16diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
17index c242944f5cbd..5132c828161e 100644
18--- a/kernel/sched/fair.c
19+++ b/kernel/sched/fair.c
20@@ -5638,6 +5638,20 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_f
21 }
22
23 rcu_read_lock();
24+
25+ if (cpu_rq(prev_cpu)->nr_running) {
26+ int _cpu;
27+
28+ for_each_online_cpu(_cpu) {
29+ if (!cpumask_test_cpu(_cpu, tsk_cpus_allowed(p)) ||
30+ cpu_rq(_cpu)->nr_running)
31+ continue;
32+
33+ rcu_read_unlock();
34+ return _cpu;
35+ }
36+ }
37+
38 for_each_domain(cpu, tmp) {
39 if (!(tmp->flags & SD_LOAD_BALANCE))
40 break;
41--
422.11.1
43
diff --git a/patches/boot_time_opt/0114-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch b/patches/boot_time_opt/0114-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch
new file mode 100644
index 0000000..c6bf036
--- /dev/null
+++ b/patches/boot_time_opt/0114-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch
@@ -0,0 +1,83 @@
1From 3a1512b4ed3922f88936b95731aaff706e7286a9 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 11 Feb 2015 16:05:23 -0600
4Subject: [PATCH 114/124] bootstats: add printk's to measure boot time in more
5 detail
6
7Few distro-tweaks to add printk's to visualize boot time better
8
9Author: Arjan van de Ven <arjan@linux.intel.com>
10
11Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
12---
13 arch/x86/kernel/alternative.c | 4 ++++
14 drivers/base/firmware_class.c | 2 ++
15 init/main.c | 2 +-
16 kernel/kmod.c | 2 ++
17 4 files changed, 9 insertions(+), 1 deletion(-)
18
19diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
20index 5cb272a7a5a3..d28fb7aae4ce 100644
21--- a/arch/x86/kernel/alternative.c
22+++ b/arch/x86/kernel/alternative.c
23@@ -626,7 +626,9 @@ void __init alternative_instructions(void)
24 * patching.
25 */
26
27+ printk("clr: Applying alternatives\n");
28 apply_alternatives(__alt_instructions, __alt_instructions_end);
29+ printk("clr: Applying alternatives done\n");
30
31 #ifdef CONFIG_SMP
32 /* Patch to UP if other cpus not imminent. */
33@@ -637,6 +639,8 @@ void __init alternative_instructions(void)
34 _text, _etext);
35 }
36
37+ printk("clr: Applying alternatives smp done\n");
38+
39 if (!uniproc_patched || num_possible_cpus() == 1)
40 free_init_pages("SMP alternatives",
41 (unsigned long)__smp_locks,
42diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
43index a95e1e572697..b29467031be6 100644
44--- a/drivers/base/firmware_class.c
45+++ b/drivers/base/firmware_class.c
46@@ -1224,6 +1224,8 @@ request_firmware(const struct firmware **firmware_p, const char *name,
47 {
48 int ret;
49
50+ printk("clr: request_firmware: %s\n", name);
51+
52 /* Need to pin this module until return */
53 __module_get(THIS_MODULE);
54 ret = _request_firmware(firmware_p, name, device, NULL, 0,
55diff --git a/init/main.c b/init/main.c
56index 2858be732f6d..f1d8c3fdbf05 100644
57--- a/init/main.c
58+++ b/init/main.c
59@@ -751,7 +751,7 @@ static int __init_or_module do_one_initcall_debug(initcall_t fn)
60 unsigned long long duration;
61 int ret;
62
63- printk(KERN_DEBUG "calling %pF @ %i\n", fn, task_pid_nr(current));
64+ printk(KERN_DEBUG "calling %pF @ %i\n", fn, raw_smp_processor_id());
65 calltime = ktime_get();
66 ret = fn();
67 rettime = ktime_get();
68diff --git a/kernel/kmod.c b/kernel/kmod.c
69index 0277d1216f80..dc5a6edd3895 100644
70--- a/kernel/kmod.c
71+++ b/kernel/kmod.c
72@@ -76,6 +76,8 @@ static int call_modprobe(char *module_name, int wait)
73 NULL
74 };
75
76+ printk("clr: call_modprobe: %s %i \n", module_name, wait);
77+
78 char **argv = kmalloc(sizeof(char *[5]), GFP_KERNEL);
79 if (!argv)
80 goto out;
81--
822.11.1
83
diff --git a/patches/boot_time_opt/0115-fix-initcall-timestamps.patch b/patches/boot_time_opt/0115-fix-initcall-timestamps.patch
new file mode 100644
index 0000000..cdf2af1
--- /dev/null
+++ b/patches/boot_time_opt/0115-fix-initcall-timestamps.patch
@@ -0,0 +1,42 @@
1From 5b5ad2c9b9b555d20aeba1f895d0c9d1c2a77776 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Thu, 2 Jun 2016 23:36:32 -0500
4Subject: [PATCH 115/124] fix initcall timestamps
5
6Print more finegrained initcall timings
7
8use the tsc instead of the jiffies clock for initcall_debug
9---
10 init/main.c | 12 ++++++------
11 1 file changed, 6 insertions(+), 6 deletions(-)
12
13diff --git a/init/main.c b/init/main.c
14index f1d8c3fdbf05..8358cbe6ab13 100644
15--- a/init/main.c
16+++ b/init/main.c
17@@ -747,16 +747,16 @@ __setup("initcall_blacklist=", initcall_blacklist);
18
19 static int __init_or_module do_one_initcall_debug(initcall_t fn)
20 {
21- ktime_t calltime, delta, rettime;
22+ unsigned long long calltime, delta, rettime;
23 unsigned long long duration;
24 int ret;
25
26- printk(KERN_DEBUG "calling %pF @ %i\n", fn, raw_smp_processor_id());
27- calltime = ktime_get();
28+ printk(KERN_DEBUG "calling %pF @ %i\n", fn, task_pid_nr(current));
29+ calltime = local_clock();
30 ret = fn();
31- rettime = ktime_get();
32- delta = ktime_sub(rettime, calltime);
33- duration = (unsigned long long) ktime_to_ns(delta) >> 10;
34+ rettime = local_clock();
35+ delta = rettime - calltime;
36+ duration = delta >> 10;
37 printk(KERN_DEBUG "initcall %pF returned %d after %lld usecs\n",
38 fn, ret, duration);
39
40--
412.11.1
42
diff --git a/patches/boot_time_opt/0116-smpboot-reuse-timer-calibration.patch b/patches/boot_time_opt/0116-smpboot-reuse-timer-calibration.patch
new file mode 100644
index 0000000..d1f71b5
--- /dev/null
+++ b/patches/boot_time_opt/0116-smpboot-reuse-timer-calibration.patch
@@ -0,0 +1,31 @@
1From 16104411cc5a7b20f310e3ecede85343ee6ce6b9 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 11 Feb 2015 17:28:14 -0600
4Subject: [PATCH 116/124] smpboot: reuse timer calibration
5
6NO point recalibrating for known-constant tsc... saves 200ms+ of boot time.
7
8Author: Arjan van de Ven <arjan@linux.intel.com>
9
10Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
11---
12 arch/x86/kernel/tsc.c | 3 +++
13 1 file changed, 3 insertions(+)
14
15diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
16index 46b2f41f8b05..88553c1f21f1 100644
17--- a/arch/x86/kernel/tsc.c
18+++ b/arch/x86/kernel/tsc.c
19@@ -1384,6 +1384,9 @@ unsigned long calibrate_delay_is_known(void)
20 if (!tsc_disabled && !cpu_has(&cpu_data(cpu), X86_FEATURE_CONSTANT_TSC))
21 return 0;
22
23+ if (cpu != 0)
24+ return cpu_data(0).loops_per_jiffy;
25+
26 if (!mask)
27 return 0;
28
29--
302.11.1
31
diff --git a/patches/boot_time_opt/0117-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch b/patches/boot_time_opt/0117-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
new file mode 100644
index 0000000..978e09f
--- /dev/null
+++ b/patches/boot_time_opt/0117-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
@@ -0,0 +1,156 @@
1From fd1f55138c242bd9aeec374ff611064bdc89b359 Mon Sep 17 00:00:00 2001
2From: Jim Kukunas <james.t.kukunas@linux.intel.com>
3Date: Fri, 27 May 2016 09:26:51 -0400
4Subject: [PATCH 117/124] raid6: add Kconfig option to skip raid6 benchmarking
5
6Adds CONFIG_RAID6_FORCE_ALGO, which causes the kernel to not benchmark
7each raid recovery and syndrome generation algorithm, and instead use
8the version selected via Kconfig (CONFIG_RAID6_FORCE_{INT,SSSE3,AVX2}).
9In the case, the selected algorithm is not supported by the processor at
10runtime, a fallback is used.
11
12Signed-off-by: Jim Kukunas <james.t.kukunas@linux.intel.com>
13---
14 lib/Kconfig | 3 +--
15 lib/raid6/Kconfig | 38 ++++++++++++++++++++++++++++++++++++
16 lib/raid6/algos.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
17 3 files changed, 97 insertions(+), 2 deletions(-)
18 create mode 100644 lib/raid6/Kconfig
19
20diff --git a/lib/Kconfig b/lib/Kconfig
21index 260a80e313b9..b3efd21db2fd 100644
22--- a/lib/Kconfig
23+++ b/lib/Kconfig
24@@ -7,8 +7,7 @@ config BINARY_PRINTF
25
26 menu "Library routines"
27
28-config RAID6_PQ
29- tristate
30+source "lib/raid6/Kconfig"
31
32 config BITREVERSE
33 tristate
34diff --git a/lib/raid6/Kconfig b/lib/raid6/Kconfig
35new file mode 100644
36index 000000000000..d881d6be89bb
37--- /dev/null
38+++ b/lib/raid6/Kconfig
39@@ -0,0 +1,38 @@
40+menu "RAID 6"
41+
42+config RAID6_PQ
43+ tristate
44+
45+config RAID6_FORCE_ALGO
46+ bool "Always use specified recovery algorithm"
47+ default n
48+ depends on RAID6_PQ
49+ help
50+ If this option is not set, on every boot the kernel will
51+ benchmark each optimized version of the RAID6 recovery and
52+ syndrome generation algorithms and will select the one that
53+ performs best. Microbenchmarking each version negatively
54+ affects boot time.
55+
56+ Enabling this option skips the benchmark at boot, and
57+ instead always uses the algorithm selected. The only exception
58+ is if the selected algorithm relies on a cpu feature not
59+ supported at runtime. In this case, one of the lower performance
60+ fallbacks are used.
61+
62+choice
63+ prompt "RAID6 Recovery Algorithm"
64+ default RAID6_FORCE_INT
65+ depends on RAID6_FORCE_ALGO
66+ ---help---
67+ Select the RAID6 recovery algorithm to unconditionally use
68+
69+ config RAID6_FORCE_INT
70+ bool "Reference Implementation"
71+ config RAID6_FORCE_SSSE3
72+ bool "SSSE3"
73+ config RAID6_FORCE_AVX2
74+ bool "AVX2"
75+endchoice
76+
77+endmenu
78diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c
79index 7857049fd7d3..29332d2a04a5 100644
80--- a/lib/raid6/algos.c
81+++ b/lib/raid6/algos.c
82@@ -125,6 +125,63 @@ const struct raid6_recov_calls *const raid6_recov_algos[] = {
83 #define time_before(x, y) ((x) < (y))
84 #endif
85
86+#ifdef CONFIG_RAID6_FORCE_ALGO
87+/* TODO don't compile in algos that will never be used */
88+int __init raid6_select_algo(void)
89+{
90+ const struct raid6_recov_calls *recov_fallback = &raid6_recov_intx1;
91+ const struct raid6_recov_calls *recov_algo;
92+ const struct raid6_calls *gen_fallback;
93+ const struct raid6_calls *gen_algo;
94+
95+#if defined(__i386__)
96+ gen_fallback = &raid6_intx32;
97+#elif defined(__x86_64__)
98+ gen_fallback = &raid6_sse2x2;
99+#else
100+# error "TODO"
101+#endif
102+
103+#if defined(CONFIG_RAID6_FORCE_INT)
104+ recov_algo = &raid6_recov_intx1;
105+ gen_algo = &raid6_intx32;
106+
107+#elif defined(CONFIG_RAID6_FORCE_SSSE3)
108+ recov_algo = &raid6_recov_ssse3;
109+#if defined(__i386__)
110+ gen_algo = &raid6_sse2x2;
111+#else
112+ gen_algo = &raid6_sse2x4;
113+#endif
114+
115+#elif defined(CONFIG_RAID6_FORCE_AVX2)
116+ recov_algo = &raid6_recov_avx2;
117+
118+#if defined(__i386__)
119+ gen_algo = &raid6_avx2x2;
120+#else
121+ gen_algo = &raid6_avx2x4;
122+#endif
123+
124+#else
125+#error "RAID6 Forced Recov Algo: Unsupported selection"
126+#endif
127+
128+ if (recov_algo->valid != NULL && recov_algo->valid() == 0)
129+ recov_algo = recov_fallback;
130+
131+ pr_info("raid6: Forced to use recovery algorithm %s\n", recov_algo->name);
132+
133+ raid6_2data_recov = recov_algo->data2;
134+ raid6_datap_recov = recov_algo->datap;
135+
136+ pr_info("raid6: Forced gen() algo %s\n", gen_algo->name);
137+
138+ raid6_call = *gen_algo;
139+
140+ return gen_algo && recov_algo ? 0 : -EINVAL;
141+}
142+#else
143 static inline const struct raid6_recov_calls *raid6_choose_recov(void)
144 {
145 const struct raid6_recov_calls *const *algo;
146@@ -256,6 +313,7 @@ int __init raid6_select_algo(void)
147
148 return gen_best && rec_best ? 0 : -EINVAL;
149 }
150+#endif
151
152 static void raid6_exit(void)
153 {
154--
1552.11.1
156
diff --git a/patches/boot_time_opt/0118-Initialize-ata-before-graphics.patch b/patches/boot_time_opt/0118-Initialize-ata-before-graphics.patch
new file mode 100644
index 0000000..70e07c8
--- /dev/null
+++ b/patches/boot_time_opt/0118-Initialize-ata-before-graphics.patch
@@ -0,0 +1,47 @@
1From fbc1ab7c18a9c960a0bff293a93620d581658f8d Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Thu, 2 Jun 2016 23:36:32 -0500
4Subject: [PATCH 118/124] Initialize ata before graphics
5
6ATA init is the long pole in the boot process, and its asynchronous.
7move the graphics init after it so that ata and graphics initialize
8in parallel
9---
10 drivers/Makefile | 11 ++++++-----
11 1 file changed, 6 insertions(+), 5 deletions(-)
12
13diff --git a/drivers/Makefile b/drivers/Makefile
14index 194d20bee7dc..2785e4c6b30f 100644
15--- a/drivers/Makefile
16+++ b/drivers/Makefile
17@@ -55,14 +55,9 @@ obj-y += char/
18 # iommu/ comes before gpu as gpu are using iommu controllers
19 obj-$(CONFIG_IOMMU_SUPPORT) += iommu/
20
21-# gpu/ comes after char for AGP vs DRM startup and after iommu
22-obj-y += gpu/
23
24 obj-$(CONFIG_CONNECTOR) += connector/
25
26-# i810fb and intelfb depend on char/agp/
27-obj-$(CONFIG_FB_I810) += video/fbdev/i810/
28-obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/
29
30 obj-$(CONFIG_PARPORT) += parport/
31 obj-$(CONFIG_NVM) += lightnvm/
32@@ -76,6 +71,12 @@ obj-$(CONFIG_IDE) += ide/
33 obj-$(CONFIG_SCSI) += scsi/
34 obj-y += nvme/
35 obj-$(CONFIG_ATA) += ata/
36+
37+# gpu/ comes after char for AGP vs DRM startup and after iommu
38+obj-y += gpu/
39+# i810fb and intelfb depend on char/agp/
40+obj-$(CONFIG_FB_I810) += video/fbdev/i810/
41+obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/
42 obj-$(CONFIG_TARGET_CORE) += target/
43 obj-$(CONFIG_MTD) += mtd/
44 obj-$(CONFIG_SPI) += spi/
45--
462.11.1
47
diff --git a/patches/boot_time_opt/0119-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch b/patches/boot_time_opt/0119-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch
new file mode 100644
index 0000000..a068afb
--- /dev/null
+++ b/patches/boot_time_opt/0119-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch
@@ -0,0 +1,311 @@
1From d9390cb702de5cbef64f893efd2344c4f58dae82 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 25 Jul 2016 06:44:34 -0500
4Subject: [PATCH 119/124] reduce e1000e boot time by tightening sleep ranges
5
6The e1000e driver is a great user of the usleep_range() API,
7and has any nice ranges that in principle help power management.
8
9However the ranges that are used only during system startup are
10very long (and can add easily 100 msec to the boot time) while
11the power savings of such long ranges is irrelevant due to the
12one-off, boot only, nature of these functions.
13
14This patch shrinks some of the longest ranges to be shorter
15(while still using a power friendly 1 msec range); this saves
16100msec+ of boot time on my BDW NUCs
17
18Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
19---
20 drivers/net/ethernet/intel/e1000e/80003es2lan.c | 2 +-
21 drivers/net/ethernet/intel/e1000e/82571.c | 2 +-
22 drivers/net/ethernet/intel/e1000e/ethtool.c | 14 +++++++-------
23 drivers/net/ethernet/intel/e1000e/ich8lan.c | 20 ++++++++++----------
24 drivers/net/ethernet/intel/e1000e/mac.c | 2 +-
25 drivers/net/ethernet/intel/e1000e/netdev.c | 14 +++++++-------
26 drivers/net/ethernet/intel/e1000e/nvm.c | 2 +-
27 7 files changed, 28 insertions(+), 28 deletions(-)
28
29diff --git a/drivers/net/ethernet/intel/e1000e/80003es2lan.c b/drivers/net/ethernet/intel/e1000e/80003es2lan.c
30index cd391376036c..b5759899eeb8 100644
31--- a/drivers/net/ethernet/intel/e1000e/80003es2lan.c
32+++ b/drivers/net/ethernet/intel/e1000e/80003es2lan.c
33@@ -698,7 +698,7 @@ static s32 e1000_reset_hw_80003es2lan(struct e1000_hw *hw)
34 ew32(TCTL, E1000_TCTL_PSP);
35 e1e_flush();
36
37- usleep_range(10000, 20000);
38+ usleep_range(10000, 11000);
39
40 ctrl = er32(CTRL);
41
42diff --git a/drivers/net/ethernet/intel/e1000e/82571.c b/drivers/net/ethernet/intel/e1000e/82571.c
43index 6b03c8553e59..d31145269dd9 100644
44--- a/drivers/net/ethernet/intel/e1000e/82571.c
45+++ b/drivers/net/ethernet/intel/e1000e/82571.c
46@@ -977,7 +977,7 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw)
47 ew32(TCTL, tctl);
48 e1e_flush();
49
50- usleep_range(10000, 20000);
51+ usleep_range(10000, 11000);
52
53 /* Must acquire the MDIO ownership before MAC reset.
54 * Ownership defaults to firmware after a reset.
55diff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c
56index 7aff68a4a4df..7cb689bd41f8 100644
57--- a/drivers/net/ethernet/intel/e1000e/ethtool.c
58+++ b/drivers/net/ethernet/intel/e1000e/ethtool.c
59@@ -1023,7 +1023,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
60 /* Disable all the interrupts */
61 ew32(IMC, 0xFFFFFFFF);
62 e1e_flush();
63- usleep_range(10000, 20000);
64+ usleep_range(10000, 11000);
65
66 /* Test each interrupt */
67 for (i = 0; i < 10; i++) {
68@@ -1055,7 +1055,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
69 ew32(IMC, mask);
70 ew32(ICS, mask);
71 e1e_flush();
72- usleep_range(10000, 20000);
73+ usleep_range(10000, 11000);
74
75 if (adapter->test_icr & mask) {
76 *data = 3;
77@@ -1073,7 +1073,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
78 ew32(IMS, mask);
79 ew32(ICS, mask);
80 e1e_flush();
81- usleep_range(10000, 20000);
82+ usleep_range(10000, 11000);
83
84 if (!(adapter->test_icr & mask)) {
85 *data = 4;
86@@ -1091,7 +1091,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
87 ew32(IMC, ~mask & 0x00007FFF);
88 ew32(ICS, ~mask & 0x00007FFF);
89 e1e_flush();
90- usleep_range(10000, 20000);
91+ usleep_range(10000, 11000);
92
93 if (adapter->test_icr) {
94 *data = 5;
95@@ -1103,7 +1103,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
96 /* Disable all the interrupts */
97 ew32(IMC, 0xFFFFFFFF);
98 e1e_flush();
99- usleep_range(10000, 20000);
100+ usleep_range(10000, 11000);
101
102 /* Unhook test interrupt handler */
103 free_irq(irq, netdev);
104@@ -1479,7 +1479,7 @@ static int e1000_set_82571_fiber_loopback(struct e1000_adapter *adapter)
105 */
106 ew32(SCTL, E1000_SCTL_ENABLE_SERDES_LOOPBACK);
107 e1e_flush();
108- usleep_range(10000, 20000);
109+ usleep_range(10000, 11000);
110
111 return 0;
112 }
113@@ -1592,7 +1592,7 @@ static void e1000_loopback_cleanup(struct e1000_adapter *adapter)
114 hw->phy.media_type == e1000_media_type_internal_serdes) {
115 ew32(SCTL, E1000_SCTL_DISABLE_SERDES_LOOPBACK);
116 e1e_flush();
117- usleep_range(10000, 20000);
118+ usleep_range(10000, 11000);
119 break;
120 }
121 /* Fall Through */
122diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
123index f3aaca743ea3..bef75cec259f 100644
124--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
125+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
126@@ -289,7 +289,7 @@ static void e1000_toggle_lanphypc_pch_lpt(struct e1000_hw *hw)
127 u16 count = 20;
128
129 do {
130- usleep_range(5000, 10000);
131+ usleep_range(5000, 6000);
132 } while (!(er32(CTRL_EXT) & E1000_CTRL_EXT_LPCD) && count--);
133
134 msleep(30);
135@@ -422,7 +422,7 @@ static s32 e1000_init_phy_workarounds_pchlan(struct e1000_hw *hw)
136 /* Ungate automatic PHY configuration on non-managed 82579 */
137 if ((hw->mac.type == e1000_pch2lan) &&
138 !(fwsm & E1000_ICH_FWSM_FW_VALID)) {
139- usleep_range(10000, 20000);
140+ usleep_range(10000, 11000);
141 e1000_gate_hw_phy_config_ich8lan(hw, false);
142 }
143
144@@ -547,7 +547,7 @@ static s32 e1000_init_phy_params_ich8lan(struct e1000_hw *hw)
145 phy->id = 0;
146 while ((e1000_phy_unknown == e1000e_get_phy_type_from_id(phy->id)) &&
147 (i++ < 100)) {
148- usleep_range(1000, 2000);
149+ usleep_range(1000, 1100);
150 ret_val = e1000e_get_phy_id(hw);
151 if (ret_val)
152 return ret_val;
153@@ -1259,7 +1259,7 @@ static s32 e1000_disable_ulp_lpt_lp(struct e1000_hw *hw, bool force)
154 goto out;
155 }
156
157- usleep_range(10000, 20000);
158+ usleep_range(10000, 11000);
159 }
160 e_dbg("ULP_CONFIG_DONE cleared after %dmsec\n", i * 10);
161
162@@ -2011,7 +2011,7 @@ static s32 e1000_check_reset_block_ich8lan(struct e1000_hw *hw)
163
164 while ((blocked = !(er32(FWSM) & E1000_ICH_FWSM_RSPCIPHY)) &&
165 (i++ < 30))
166- usleep_range(10000, 20000);
167+ usleep_range(10000, 11000);
168 return blocked ? E1000_BLK_PHY_RESET : 0;
169 }
170
171@@ -2827,7 +2827,7 @@ static s32 e1000_post_phy_reset_ich8lan(struct e1000_hw *hw)
172 return 0;
173
174 /* Allow time for h/w to get to quiescent state after reset */
175- usleep_range(10000, 20000);
176+ usleep_range(10000, 11000);
177
178 /* Perform any necessary post-reset workarounds */
179 switch (hw->mac.type) {
180@@ -2863,7 +2863,7 @@ static s32 e1000_post_phy_reset_ich8lan(struct e1000_hw *hw)
181 if (hw->mac.type == e1000_pch2lan) {
182 /* Ungate automatic PHY configuration on non-managed 82579 */
183 if (!(er32(FWSM) & E1000_ICH_FWSM_FW_VALID)) {
184- usleep_range(10000, 20000);
185+ usleep_range(10000, 11000);
186 e1000_gate_hw_phy_config_ich8lan(hw, false);
187 }
188
189@@ -3884,7 +3884,7 @@ static s32 e1000_update_nvm_checksum_spt(struct e1000_hw *hw)
190 */
191 if (!ret_val) {
192 nvm->ops.reload(hw);
193- usleep_range(10000, 20000);
194+ usleep_range(10000, 11000);
195 }
196
197 out:
198@@ -4035,7 +4035,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
199 */
200 if (!ret_val) {
201 nvm->ops.reload(hw);
202- usleep_range(10000, 20000);
203+ usleep_range(10000, 11000);
204 }
205
206 out:
207@@ -4658,7 +4658,7 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
208 ew32(TCTL, E1000_TCTL_PSP);
209 e1e_flush();
210
211- usleep_range(10000, 20000);
212+ usleep_range(10000, 11000);
213
214 /* Workaround for ICH8 bit corruption issue in FIFO memory */
215 if (hw->mac.type == e1000_ich8lan) {
216diff --git a/drivers/net/ethernet/intel/e1000e/mac.c b/drivers/net/ethernet/intel/e1000e/mac.c
217index b322011ec282..eecbf7a12735 100644
218--- a/drivers/net/ethernet/intel/e1000e/mac.c
219+++ b/drivers/net/ethernet/intel/e1000e/mac.c
220@@ -815,7 +815,7 @@ static s32 e1000_poll_fiber_serdes_link_generic(struct e1000_hw *hw)
221 * milliseconds even if the other end is doing it in SW).
222 */
223 for (i = 0; i < FIBER_LINK_UP_LIMIT; i++) {
224- usleep_range(10000, 20000);
225+ usleep_range(10000, 11000);
226 status = er32(STATUS);
227 if (status & E1000_STATUS_LU)
228 break;
229diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
230index 7017281ba2dc..7d68d694ed9e 100644
231--- a/drivers/net/ethernet/intel/e1000e/netdev.c
232+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
233@@ -3206,7 +3206,7 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)
234 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX))
235 ew32(RCTL, rctl & ~E1000_RCTL_EN);
236 e1e_flush();
237- usleep_range(10000, 20000);
238+ usleep_range(10000, 11000);
239
240 if (adapter->flags2 & FLAG2_DMA_BURST) {
241 /* set the writeback threshold (only takes effect if the RDTR
242@@ -4258,7 +4258,7 @@ void e1000e_down(struct e1000_adapter *adapter, bool reset)
243
244 /* flush both disables and wait for them to finish */
245 e1e_flush();
246- usleep_range(10000, 20000);
247+ usleep_range(10000, 11000);
248
249 e1000_irq_disable(adapter);
250
251@@ -4296,7 +4296,7 @@ void e1000e_reinit_locked(struct e1000_adapter *adapter)
252 {
253 might_sleep();
254 while (test_and_set_bit(__E1000_RESETTING, &adapter->state))
255- usleep_range(1000, 2000);
256+ usleep_range(1000, 1100);
257 e1000e_down(adapter, true);
258 e1000e_up(adapter);
259 clear_bit(__E1000_RESETTING, &adapter->state);
260@@ -4671,7 +4671,7 @@ int e1000e_close(struct net_device *netdev)
261 int count = E1000_CHECK_RESET_COUNT;
262
263 while (test_bit(__E1000_RESETTING, &adapter->state) && count--)
264- usleep_range(10000, 20000);
265+ usleep_range(10000, 11000);
266
267 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state));
268
269@@ -5996,7 +5996,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
270 }
271
272 while (test_and_set_bit(__E1000_RESETTING, &adapter->state))
273- usleep_range(1000, 2000);
274+ usleep_range(1000, 1100);
275 /* e1000e_down -> e1000e_reset dependent on max_frame_size & mtu */
276 adapter->max_frame_size = max_frame;
277 e_info("changing MTU from %d to %d\n", netdev->mtu, new_mtu);
278@@ -6276,7 +6276,7 @@ static int e1000e_pm_freeze(struct device *dev)
279 int count = E1000_CHECK_RESET_COUNT;
280
281 while (test_bit(__E1000_RESETTING, &adapter->state) && count--)
282- usleep_range(10000, 20000);
283+ usleep_range(10000, 11000);
284
285 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state));
286
287@@ -6687,7 +6687,7 @@ static int e1000e_pm_runtime_suspend(struct device *dev)
288 int count = E1000_CHECK_RESET_COUNT;
289
290 while (test_bit(__E1000_RESETTING, &adapter->state) && count--)
291- usleep_range(10000, 20000);
292+ usleep_range(10000, 11000);
293
294 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state));
295
296diff --git a/drivers/net/ethernet/intel/e1000e/nvm.c b/drivers/net/ethernet/intel/e1000e/nvm.c
297index 2efd80dfd88e..38f7c8fb3061 100644
298--- a/drivers/net/ethernet/intel/e1000e/nvm.c
299+++ b/drivers/net/ethernet/intel/e1000e/nvm.c
300@@ -410,7 +410,7 @@ s32 e1000e_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
301 break;
302 }
303 }
304- usleep_range(10000, 20000);
305+ usleep_range(10000, 11000);
306 nvm->ops.release(hw);
307 }
308
309--
3102.11.1
311
diff --git a/patches/boot_time_opt/0120-give-rdrand-some-credit.patch b/patches/boot_time_opt/0120-give-rdrand-some-credit.patch
new file mode 100644
index 0000000..4b1669c
--- /dev/null
+++ b/patches/boot_time_opt/0120-give-rdrand-some-credit.patch
@@ -0,0 +1,30 @@
1From 5cc978db25b2c92707f68b15098ac39901fb5aac Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Fri, 29 Jul 2016 19:10:52 +0000
4Subject: [PATCH 120/124] give rdrand some credit
5
6try to credit rdrand/rdseed with some entropy
7
8In VMs but even modern hardware, we're super starved for entropy, and while we can
9and do wear a tin foil hat, it's very hard to argue that
10rdrand and rdtsc add zero entropy.
11---
12 drivers/char/random.c | 2 ++
13 1 file changed, 2 insertions(+)
14
15diff --git a/drivers/char/random.c b/drivers/char/random.c
16index d6876d506220..fca09af81b2c 100644
17--- a/drivers/char/random.c
18+++ b/drivers/char/random.c
19@@ -1638,6 +1638,8 @@ static void init_std_data(struct entropy_store *r)
20 if (!arch_get_random_seed_long(&rv) &&
21 !arch_get_random_long(&rv))
22 rv = random_get_entropy();
23+ else
24+ credit_entropy_bits(r, 1);
25 mix_pool_bytes(r, &rv, sizeof(rv));
26 }
27 mix_pool_bytes(r, utsname(), sizeof(*(utsname())));
28--
292.11.1
30
diff --git a/patches/boot_time_opt/0121-e1000e-change-default-policy.patch b/patches/boot_time_opt/0121-e1000e-change-default-policy.patch
new file mode 100644
index 0000000..bf3e13d
--- /dev/null
+++ b/patches/boot_time_opt/0121-e1000e-change-default-policy.patch
@@ -0,0 +1,27 @@
1From 5b4707fc2aa8c49aa18a60136880bf05a3e29071 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Sat, 10 Dec 2016 14:29:52 +0000
4Subject: [PATCH 121/124] e1000e: change default policy
5
6change the default irq mitigation policy for e1000e to be
7more HPC/cluster friendly
8---
9 drivers/net/ethernet/intel/e1000e/param.c | 2 +-
10 1 file changed, 1 insertion(+), 1 deletion(-)
11
12diff --git a/drivers/net/ethernet/intel/e1000e/param.c b/drivers/net/ethernet/intel/e1000e/param.c
13index 6d8c39abee16..ef1122ad3b98 100644
14--- a/drivers/net/ethernet/intel/e1000e/param.c
15+++ b/drivers/net/ethernet/intel/e1000e/param.c
16@@ -92,7 +92,7 @@ E1000_PARAM(RxAbsIntDelay, "Receive Absolute Interrupt Delay");
17 * Valid Range: 100-100000 or one of: 0=off, 1=dynamic, 3=dynamic conservative
18 */
19 E1000_PARAM(InterruptThrottleRate, "Interrupt Throttling Rate");
20-#define DEFAULT_ITR 3
21+#define DEFAULT_ITR 1
22 #define MAX_ITR 100000
23 #define MIN_ITR 100
24
25--
262.11.1
27
diff --git a/patches/boot_time_opt/0122-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch b/patches/boot_time_opt/0122-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch
new file mode 100644
index 0000000..eb44cec
--- /dev/null
+++ b/patches/boot_time_opt/0122-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch
@@ -0,0 +1,28 @@
1From 5cf7ba4ba9c9d770aad9e52deaa3730f259df9f1 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Fri, 6 Jan 2017 15:34:09 +0000
4Subject: [PATCH 122/124] ipv4/tcp: allow the memory tuning for tcp to go a
5 little bigger than default
6
7---
8 net/ipv4/tcp.c | 4 ++--
9 1 file changed, 2 insertions(+), 2 deletions(-)
10
11diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
12index 6a90a0e130dc..32e43ce7c60e 100644
13--- a/net/ipv4/tcp.c
14+++ b/net/ipv4/tcp.c
15@@ -3341,8 +3341,8 @@ void __init tcp_init(void)
16 tcp_init_mem();
17 /* Set per-socket limits to no more than 1/128 the pressure threshold */
18 limit = nr_free_buffer_pages() << (PAGE_SHIFT - 7);
19- max_wshare = min(4UL*1024*1024, limit);
20- max_rshare = min(6UL*1024*1024, limit);
21+ max_wshare = min(16UL*1024*1024, limit);
22+ max_rshare = min(16UL*1024*1024, limit);
23
24 sysctl_tcp_wmem[0] = SK_MEM_QUANTUM;
25 sysctl_tcp_wmem[1] = 16*1024;
26--
272.11.1
28
diff --git a/patches/boot_time_opt/0123-igb-no-runtime-pm-to-fix-reboot-oops.patch b/patches/boot_time_opt/0123-igb-no-runtime-pm-to-fix-reboot-oops.patch
new file mode 100644
index 0000000..ce4964e
--- /dev/null
+++ b/patches/boot_time_opt/0123-igb-no-runtime-pm-to-fix-reboot-oops.patch
@@ -0,0 +1,27 @@
1From 10f0c995ce6aaf6b3ffa78377f1a12ad0477057a Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Thu, 12 Jan 2017 18:17:14 +0000
4Subject: [PATCH 123/124] igb: no runtime pm to fix reboot oops
5
6Causes oops on reboot due to a race between runtime resume and shutdown
7---
8 drivers/net/ethernet/intel/igb/igb_main.c | 3 ---
9 1 file changed, 3 deletions(-)
10
11diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
12index 9affd7c198bd..8ade77e75b36 100644
13--- a/drivers/net/ethernet/intel/igb/igb_main.c
14+++ b/drivers/net/ethernet/intel/igb/igb_main.c
15@@ -238,9 +238,6 @@ static struct pci_driver igb_driver = {
16 .id_table = igb_pci_tbl,
17 .probe = igb_probe,
18 .remove = igb_remove,
19-#ifdef CONFIG_PM
20- .driver.pm = &igb_pm_ops,
21-#endif
22 .shutdown = igb_shutdown,
23 .sriov_configure = igb_pci_sriov_configure,
24 .err_handler = &igb_err_handler
25--
262.11.1
27
diff --git a/patches/boot_time_opt/0124-tweak-perfbias.patch b/patches/boot_time_opt/0124-tweak-perfbias.patch
new file mode 100644
index 0000000..56a2865
--- /dev/null
+++ b/patches/boot_time_opt/0124-tweak-perfbias.patch
@@ -0,0 +1,32 @@
1From 03e2c414a860264511dae5bbfc6d7e62b8b94f0f Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Sun, 22 Jan 2017 18:51:13 +0000
4Subject: [PATCH 124/124] tweak perfbias
5
6---
7 arch/x86/kernel/cpu/intel.c | 6 +++---
8 1 file changed, 3 insertions(+), 3 deletions(-)
9
10diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
11index fcd484d2bb03..13ae40f10bd4 100644
12--- a/arch/x86/kernel/cpu/intel.c
13+++ b/arch/x86/kernel/cpu/intel.c
14@@ -434,12 +434,12 @@ static void init_intel_energy_perf(struct cpuinfo_x86 *c)
15 return;
16
17 rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
18- if ((epb & 0xF) != ENERGY_PERF_BIAS_PERFORMANCE)
19+ if ((epb & 0xF) >= ENERGY_PERF_BIAS_NORMAL)
20 return;
21
22- pr_warn_once("ENERGY_PERF_BIAS: Set to 'normal', was 'performance'\n");
23+ pr_warn_once("ENERGY_PERF_BIAS: Set to 'performance', was 'normal'\n");
24 pr_warn_once("ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)\n");
25- epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
26+ epb = (epb & ~0xF) | ENERGY_PERF_BIAS_PERFORMANCE;
27 wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
28 }
29
30--
312.11.1
32
diff --git a/patches/boot_time_opt/0125-e1000e-increase-pause-and-refresh-time.patch b/patches/boot_time_opt/0125-e1000e-increase-pause-and-refresh-time.patch
new file mode 100644
index 0000000..1c50e74
--- /dev/null
+++ b/patches/boot_time_opt/0125-e1000e-increase-pause-and-refresh-time.patch
@@ -0,0 +1,33 @@
1From 6730c1ae12a567d56092d15540d2f971be95b936 Mon Sep 17 00:00:00 2001
2From: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
3Date: Mon, 27 Mar 2017 16:01:56 -0600
4Subject: [PATCH] e1000e: increase pause and refresh time
5
6Suggested-by: Tim Pepper <timothy.c.pepper@linux.intel.com>
7Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
8---
9 drivers/net/ethernet/intel/e1000e/netdev.c | 4 ++--
10 1 file changed, 2 insertions(+), 2 deletions(-)
11
12diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
13index 7d68d694ed9e..1db390a52656 100644
14--- a/drivers/net/ethernet/intel/e1000e/netdev.c
15+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
16@@ -4032,12 +4032,12 @@ void e1000e_reset(struct e1000_adapter *adapter)
17 case e1000_pch2lan:
18 case e1000_pch_lpt:
19 case e1000_pch_spt:
20- fc->refresh_time = 0x0400;
21+ fc->refresh_time = 0xFFFF;
22+ fc->pause_time = 0xFFFF;
23
24 if (adapter->netdev->mtu <= ETH_DATA_LEN) {
25 fc->high_water = 0x05C20;
26 fc->low_water = 0x05048;
27- fc->pause_time = 0x0650;
28 break;
29 }
30
31--
322.12.2
33
diff --git a/patches/boot_time_opt/0151-mm-Export-do_madvise.patch b/patches/boot_time_opt/0151-mm-Export-do_madvise.patch
new file mode 100644
index 0000000..a6dbff7
--- /dev/null
+++ b/patches/boot_time_opt/0151-mm-Export-do_madvise.patch
@@ -0,0 +1,84 @@
1From 99b4cdcce43ad0f706120bef26fef8c628c572cf Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:03:52 -0800
4Subject: [PATCH 151/154] mm: Export do_madvise()
5
6Combined with some interesting flags madvise() system call
7allows to free memory more smartly and more efficiently than
8we could do with a simple free(). The issue is that is not
9available for kernel modules that could need it.
10
11In order to solve this lack of support, this patch exports
12do_madvise() so as to make it available to the entire kernel.
13The already existing madvise() system call is unchanged and
14now relies on this new do_madvise() function.
15
16Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com>
17Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
18---
19 include/linux/mm.h | 2 ++
20 mm/madvise.c | 25 +++++++++++++++++++++----
21 2 files changed, 23 insertions(+), 4 deletions(-)
22
23diff --git a/include/linux/mm.h b/include/linux/mm.h
24index 0b5b2e4df14e..925ec25f99a8 100644
25--- a/include/linux/mm.h
26+++ b/include/linux/mm.h
27@@ -2450,5 +2450,7 @@ void __init setup_nr_node_ids(void);
28 static inline void setup_nr_node_ids(void) {}
29 #endif
30
31+extern int do_madvise(unsigned long start, size_t len_in, int behavior);
32+
33 #endif /* __KERNEL__ */
34 #endif /* _LINUX_MM_H */
35diff --git a/mm/madvise.c b/mm/madvise.c
36index 93fb63e88b5e..c8bbf93d4978 100644
37--- a/mm/madvise.c
38+++ b/mm/madvise.c
39@@ -618,9 +618,7 @@ madvise_behavior_valid(int behavior)
40 }
41
42 /*
43- * The madvise(2) system call.
44- *
45- * Applications can use madvise() to advise the kernel how it should
46+ * Kernel modules can use do_madvise() to advise the kernel how it should
47 * handle paging I/O in this VM area. The idea is to help the kernel
48 * use appropriate read-ahead and caching techniques. The information
49 * provided is advisory only, and can be safely disregarded by the
50@@ -673,7 +671,7 @@ madvise_behavior_valid(int behavior)
51 * -EBADF - map exists, but area maps something that isn't a file.
52 * -EAGAIN - a kernel resource was temporarily unavailable.
53 */
54-SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
55+int do_madvise(unsigned long start, size_t len_in, int behavior)
56 {
57 unsigned long end, tmp;
58 struct vm_area_struct *vma, *prev;
59@@ -767,3 +765,22 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
60
61 return error;
62 }
63+EXPORT_SYMBOL_GPL(do_madvise);
64+
65+/*
66+ * The madvise(2) system call.
67+ *
68+ * Applications can use madvise() system call to advise the kernel how
69+ * it should handle paging I/O in this VM area. The idea is to help
70+ * the kernel use appropriate read-ahead and caching techniques. The
71+ * information provided is advisory only, and can be safely disregarded
72+ * by the kernel without affecting the correct operation of the application.
73+ *
74+ * behavior values are the same than the ones defined in madvise()
75+ *
76+ * return values are the same than the ones defined in madvise()
77+ */
78+SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
79+{
80+ return do_madvise(start, len_in, behavior);
81+}
82--
832.12.1
84
diff --git a/patches/boot_time_opt/0152-x86-kvm-Notify-host-to-release-pages.patch b/patches/boot_time_opt/0152-x86-kvm-Notify-host-to-release-pages.patch
new file mode 100644
index 0000000..5f44930
--- /dev/null
+++ b/patches/boot_time_opt/0152-x86-kvm-Notify-host-to-release-pages.patch
@@ -0,0 +1,180 @@
1From d28921b5f797829e4e676f7968ae688ef96b7992 Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:08:55 -0800
4Subject: [PATCH 152/154] x86: kvm: Notify host to release pages
5
6In context of hypervisors managing several virtual machines, we
7want those virtual machines to give the memory they used back to
8the host when they don't need it anymore.
9
10This patch introduces a new hypercall KVM_HC_RETURN_MEM, allowing
11the guest kernel to notify the host kernel when such event occurs.
12And relying on do_madvise() function that we have previously exported,
13it issues a call to this function when it receives the new hypercall.
14
15Use of do_madvise() with MADV_DONTNEED flag will allow the guest to
16ask for a new page without going through a new hypercall. Instead,
17it will be able to start using that memory again as it will get
18faulted back in as a fresh new page. That's why do_madvise() is more
19efficient than doing vm_unmap() to return some memory to the host.
20
21This patch introduces also a new sysctl kvm_madv_instant_free,
22allowing user to set MADV_FREE advice instead of MADV_DONTNEED.
23Indeed, MADV_FREE saves more performances than using MADV_DONTNEED
24because it does not zero the pages in case the memory has not been
25freed by the kernel. This can happen when there was no need for the
26kernel to get this memory back, meaning it was keeping those pages
27in the right state to be re-used by the same application.
28MADV_FREE being a very recent advice introduced in kernel 4.5, we
29only want to enable it through a sysctl in case the user want to
30use it.
31
32Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com>
33Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
34---
35 arch/x86/kvm/x86.c | 17 +++++++++++++++++
36 include/linux/mm.h | 5 +++++
37 include/uapi/linux/kvm_para.h | 3 +++
38 kernel/sysctl.c | 7 +++++++
39 mm/Makefile | 2 +-
40 mm/kvm.c | 25 +++++++++++++++++++++++++
41 6 files changed, 58 insertions(+), 1 deletion(-)
42 create mode 100644 mm/kvm.c
43
44diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
45index 582c75311f95..683a94dd5f03 100644
46--- a/arch/x86/kvm/x86.c
47+++ b/arch/x86/kvm/x86.c
48@@ -46,6 +46,7 @@
49 #include <linux/user-return-notifier.h>
50 #include <linux/srcu.h>
51 #include <linux/slab.h>
52+#include <linux/mm.h>
53 #include <linux/perf_event.h>
54 #include <linux/uaccess.h>
55 #include <linux/hash.h>
56@@ -6019,6 +6020,19 @@ static void kvm_pv_kick_cpu_op(struct kvm *kvm, unsigned long flags, int apicid)
57 kvm_irq_delivery_to_apic(kvm, NULL, &lapic_irq, NULL);
58 }
59
60+static int kvm_pv_return_mem_op(struct kvm *kvm, gpa_t gpa, size_t len)
61+{
62+ unsigned long start = gfn_to_hva(kvm, gpa_to_gfn(gpa));
63+
64+ if (len > KVM_MAX_RET_MEM_SIZE)
65+ return KVM_EPERM;
66+
67+ if (kvm_is_error_hva(start + len))
68+ return KVM_EFAULT;
69+
70+ return do_madvise(start, len, kvm_ret_mem_advice);
71+}
72+
73 void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu)
74 {
75 vcpu->arch.apicv_active = false;
76@@ -6065,6 +6079,9 @@ int kvm_emulate_hypercall(struct kvm_vcpu *vcpu)
77 kvm_pv_kick_cpu_op(vcpu->kvm, a0, a1);
78 ret = 0;
79 break;
80+ case KVM_HC_RETURN_MEM:
81+ ret = kvm_pv_return_mem_op(vcpu->kvm, a0, a1);
82+ break;
83 default:
84 ret = -KVM_ENOSYS;
85 break;
86diff --git a/include/linux/mm.h b/include/linux/mm.h
87index 925ec25f99a8..833f23d98baa 100644
88--- a/include/linux/mm.h
89+++ b/include/linux/mm.h
90@@ -2303,6 +2303,11 @@ extern bool process_shares_mm(struct task_struct *p, struct mm_struct *mm);
91 extern int sysctl_drop_caches;
92 int drop_caches_sysctl_handler(struct ctl_table *, int,
93 void __user *, size_t *, loff_t *);
94+extern int sysctl_kvm_madv_instant_free;
95+extern int kvm_ret_mem_advice;
96+int kvm_madv_instant_free_sysctl_handler(struct ctl_table *table, int write,
97+ void __user *buffer, size_t *length,
98+ loff_t *ppos);
99 #endif
100
101 void drop_slab(void);
102diff --git a/include/uapi/linux/kvm_para.h b/include/uapi/linux/kvm_para.h
103index bf6cd7d5cac2..7d90f77d87d0 100644
104--- a/include/uapi/linux/kvm_para.h
105+++ b/include/uapi/linux/kvm_para.h
106@@ -23,6 +23,9 @@
107 #define KVM_HC_MIPS_GET_CLOCK_FREQ 6
108 #define KVM_HC_MIPS_EXIT_VM 7
109 #define KVM_HC_MIPS_CONSOLE_OUTPUT 8
110+#define KVM_HC_RETURN_MEM 10
111+
112+#define KVM_MAX_RET_MEM_SIZE (1 << 22) // 4MiB
113
114 /*
115 * hypercalls use architecture specific
116diff --git a/kernel/sysctl.c b/kernel/sysctl.c
117index c1095cdc0fe2..d8ae774fa042 100644
118--- a/kernel/sysctl.c
119+++ b/kernel/sysctl.c
120@@ -1398,6 +1398,13 @@ static struct ctl_table vm_table[] = {
121 .extra1 = &one,
122 .extra2 = &four,
123 },
124+ {
125+ .procname = "kvm_madv_instant_free",
126+ .data = &sysctl_kvm_madv_instant_free,
127+ .maxlen = sizeof(int),
128+ .mode = 0644,
129+ .proc_handler = kvm_madv_instant_free_sysctl_handler,
130+ },
131 #ifdef CONFIG_COMPACTION
132 {
133 .procname = "compact_memory",
134diff --git a/mm/Makefile b/mm/Makefile
135index 295bd7a..6455723 100644
136--- a/mm/Makefile
137+++ b/mm/Makefile
138@@ -47,6 +47,8 @@ else
139 obj-y += bootmem.o
140 endif
141
142+obj-y += kvm.o
143+
144 obj-$(CONFIG_ADVISE_SYSCALLS) += fadvise.o
145 ifdef CONFIG_MMU
146 obj-$(CONFIG_ADVISE_SYSCALLS) += madvise.o
147diff --git a/mm/kvm.c b/mm/kvm.c
148new file mode 100644
149index 000000000000..8945f6a311b9
150--- /dev/null
151+++ b/mm/kvm.c
152@@ -0,0 +1,25 @@
153+#include <linux/mman.h>
154+
155+int sysctl_kvm_madv_instant_free;
156+
157+int kvm_ret_mem_advice = MADV_DONTNEED;
158+EXPORT_SYMBOL_GPL(kvm_ret_mem_advice);
159+
160+int kvm_madv_instant_free_sysctl_handler(struct ctl_table *table, int write,
161+ void __user *buffer, size_t *length, loff_t *ppos)
162+{
163+ int ret;
164+
165+ ret = proc_dointvec(table, write, buffer, length, ppos);
166+ if (ret)
167+ return ret;
168+
169+#ifdef MADV_FREE
170+ if (sysctl_kvm_madv_instant_free > 0)
171+ kvm_ret_mem_advice = MADV_FREE;
172+ else
173+ kvm_ret_mem_advice = MADV_DONTNEED;
174+#endif
175+
176+ return 0;
177+}
178--
1792.12.1
180
diff --git a/patches/boot_time_opt/0153-x86-Return-memory-from-guest-to-host-kernel.patch b/patches/boot_time_opt/0153-x86-Return-memory-from-guest-to-host-kernel.patch
new file mode 100644
index 0000000..cdb876a
--- /dev/null
+++ b/patches/boot_time_opt/0153-x86-Return-memory-from-guest-to-host-kernel.patch
@@ -0,0 +1,155 @@
1From 855ef164854307839c08c60688eaeac14f9a649e Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:26:13 -0800
4Subject: [PATCH 153/154] x86: Return memory from guest to host kernel
5
6All virtual machines need memory to perform various tasks, but this
7memory is not released to the host after it is not used anymore. We
8have to wait for the termination of the virtual machine to get this
9memory back into the host.
10
11Ballooning mechanism is close but not designed for the same purpose.
12In case we hit memory limits of the system, the host predicts how much
13memory can be asked back from a guest, and it issues an hypercall to
14retrieve this memory.
15
16The solution proposed is different because it does not wait for host
17needs before to return memory, and it knows precisely how much memory
18it can return.
19
20The way to notify the host side about such a return is to rely on
21the new hypercall KVM_HC_RETURN_MEM. In order to avoid the CPU to be
22overloaded with too many hypercalls, we only return memory blocks of
23order 7 (512k blocks) and higher. This value has been found running
24memory tests using multiple threads allocating/freeing high amount
25of memory. Those tests were run for different order values, and 7 was
26the best tradeoff between the number of hypercalls issued and the
27amount of memory returned to the host.
28
29In order to limit performances impact related to this code addition,
30we check for blocks of order 7 or higher. This means it only costs an
31additional function call and a branch to perform this check.
32
33Furthermore, this code has been added to the "merge" codepath of the
34buddy allocator, which is not as sensitive as the "free" codepath.
35Not all blocks going through the "free" codepath will end up in the
36"merge" codepath because some of them won't find their free buddy.
37But this is a negligible amount since the kernel does not use many
38high order blocks directly. Instead, those bigger blocks are often
39broken into smaller chunks used as low order blocks. At the time
40those small blocks are released, they go through the merge path.
41
42Benchmarks such as ebizzy and will-it-scale have been run in order
43to make sure this patch does not affect kernel performances and no
44significant differences were observed.
45
46Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com>
47Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
48---
49 arch/x86/include/asm/kvm_para.h | 22 ++++++++++++++++++++++
50 arch/x86/kernel/kvm.c | 10 ++++++++++
51 include/linux/mm-arch-hooks.h | 8 ++++++++
52 mm/page_alloc.c | 2 ++
53 4 files changed, 42 insertions(+)
54
55diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h
56index bc62e7cbf1b1..4a2f6d1adbd2 100644
57--- a/arch/x86/include/asm/kvm_para.h
58+++ b/arch/x86/include/asm/kvm_para.h
59@@ -92,6 +92,28 @@ void kvm_async_pf_task_wait(u32 token);
60 void kvm_async_pf_task_wake(u32 token);
61 u32 kvm_read_and_reset_pf_reason(void);
62 extern void kvm_disable_steal_time(void);
63+void kvm_arch_return_memory(struct page *page, unsigned int order);
64+
65+/*
66+ * This order has been found in an empirical way, running memory tests
67+ * through many iterations to assess the number of hypercalls issued
68+ * and the amount of memory returned. In case you change this order to
69+ * 6 or 8, it should not impact your performances significantly.
70+ *
71+ * Smaller values lead to less memory waste, but consume more CPU on
72+ * hypercalls. Larger values use less CPU, but do not as precisely
73+ * inform the hypervisor of which memory is free.
74+ */
75+#define RET_MEM_BUDDY_ORDER 7
76+
77+static inline void arch_buddy_merge(struct page *page, unsigned int order)
78+{
79+ if (order < RET_MEM_BUDDY_ORDER)
80+ return;
81+
82+ kvm_arch_return_memory(page, order);
83+}
84+#define arch_buddy_merge arch_buddy_merge
85
86 #ifdef CONFIG_PARAVIRT_SPINLOCKS
87 void __init kvm_spinlock_init(void);
88diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
89index edbbfc854e39..14167b3f6514 100644
90--- a/arch/x86/kernel/kvm.c
91+++ b/arch/x86/kernel/kvm.c
92@@ -552,6 +552,16 @@ static __init int activate_jump_labels(void)
93 }
94 arch_initcall(activate_jump_labels);
95
96+void kvm_arch_return_memory(struct page *page, unsigned int order)
97+{
98+ if (!kvm_para_available())
99+ return;
100+
101+ kvm_hypercall2(KVM_HC_RETURN_MEM,
102+ page_to_phys(page),
103+ PAGE_SIZE << order);
104+}
105+
106 #ifdef CONFIG_PARAVIRT_SPINLOCKS
107
108 /* Kick a cpu by its apicid. Used to wake up a halted vcpu */
109diff --git a/include/linux/mm-arch-hooks.h b/include/linux/mm-arch-hooks.h
110index 4efc3f56e6df..26eb3a05a8a3 100644
111--- a/include/linux/mm-arch-hooks.h
112+++ b/include/linux/mm-arch-hooks.h
113@@ -12,6 +12,7 @@
114 #define _LINUX_MM_ARCH_HOOKS_H
115
116 #include <asm/mm-arch-hooks.h>
117+#include <asm/kvm_para.h>
118
119 #ifndef arch_remap
120 static inline void arch_remap(struct mm_struct *mm,
121@@ -22,4 +23,11 @@ static inline void arch_remap(struct mm_struct *mm,
122 #define arch_remap arch_remap
123 #endif
124
125+#ifndef arch_buddy_merge
126+static inline void arch_buddy_merge(struct page *page, unsigned int order)
127+{
128+}
129+#define arch_buddy_merge arch_buddy_merge
130+#endif
131+
132 #endif /* _LINUX_MM_ARCH_HOOKS_H */
133diff --git a/mm/page_alloc.c b/mm/page_alloc.c
134index 1460e6ad5e14..5f6e6371bc6f 100644
135--- a/mm/page_alloc.c
136+++ b/mm/page_alloc.c
137@@ -64,6 +64,7 @@
138 #include <linux/page_owner.h>
139 #include <linux/kthread.h>
140 #include <linux/memcontrol.h>
141+#include <linux/mm-arch-hooks.h>
142
143 #include <asm/sections.h>
144 #include <asm/tlbflush.h>
145@@ -855,6 +856,7 @@ static inline void __free_one_page(struct page *page,
146 }
147
148 done_merging:
149+ arch_buddy_merge(page, order);
150 set_page_order(page, order);
151
152 /*
153--
1542.12.1
155
diff --git a/patches/boot_time_opt/0154-sysctl-vm-Fine-grained-cache-shrinking.patch b/patches/boot_time_opt/0154-sysctl-vm-Fine-grained-cache-shrinking.patch
new file mode 100644
index 0000000..07d4a83
--- /dev/null
+++ b/patches/boot_time_opt/0154-sysctl-vm-Fine-grained-cache-shrinking.patch
@@ -0,0 +1,137 @@
1From 2c145b5233b504f5226a0f4bc44baeef33b444d8 Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:32:39 -0800
4Subject: [PATCH 154/154] sysctl: vm: Fine-grained cache shrinking
5
6Lots of virtual machines are let in idle state for days until they
7are terminated, and they can keep a large amount of memory in their
8cache, meaning this memory cannot be used by other processes.
9
10We tried to release this memory using existing drop_caches sysctl,
11but it led to the complete cache loss while it could have been used
12whether the idle process wakes up. Indeed, the process can't find any
13available cached data and it directly affects performances to rebuild
14it from scratch.
15
16Instead, the solution we want is based on shrinking gradually system
17cache over time. This patch adds a new sysctl shrink_caches_mb so as
18to allow userspace applications indicating the kernel it should shrink
19system cache up to the amount (in MiB) specified.
20
21There is an application called "memshrinker" which uses this new
22mechanism. It runs in the background and periodically releases a
23specified amount of cache. This amount is based on the remaining
24cache on the system, and period is computed to follow a shrinking
25model. It results in saving a lot of memory for other processes
26running on the system.
27
28Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com>
29Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
30---
31 fs/drop_caches.c | 25 +++++++++++++++++++++++++
32 include/linux/mm.h | 4 ++++
33 kernel/sysctl.c | 8 ++++++++
34 mm/vmscan.c | 2 --
35 4 files changed, 37 insertions(+), 2 deletions(-)
36
37diff --git a/fs/drop_caches.c b/fs/drop_caches.c
38index d72d52b90433..f564dfcc13a4 100644
39--- a/fs/drop_caches.c
40+++ b/fs/drop_caches.c
41@@ -8,10 +8,12 @@
42 #include <linux/writeback.h>
43 #include <linux/sysctl.h>
44 #include <linux/gfp.h>
45+#include <linux/swap.h>
46 #include "internal.h"
47
48 /* A global variable is a bit ugly, but it keeps the code simple */
49 int sysctl_drop_caches;
50+int sysctl_shrink_caches_mb;
51
52 static void drop_pagecache_sb(struct super_block *sb, void *unused)
53 {
54@@ -67,3 +69,26 @@ int drop_caches_sysctl_handler(struct ctl_table *table, int write,
55 }
56 return 0;
57 }
58+
59+int shrink_caches_sysctl_handler(struct ctl_table *table, int write,
60+ void __user *buffer, size_t *length, loff_t *ppos)
61+{
62+ int ret;
63+ unsigned long nr_to_reclaim, page_reclaimed;
64+
65+ ret = proc_dointvec_minmax(table, write, buffer, length, ppos);
66+ if (ret)
67+ return ret;
68+
69+ nr_to_reclaim = sysctl_shrink_caches_mb * (1 << 20) / PAGE_SIZE;
70+ if (write) {
71+ page_reclaimed = shrink_all_memory(nr_to_reclaim);
72+ if (page_reclaimed > 0)
73+ lru_add_drain_all();
74+
75+ if (page_reclaimed != nr_to_reclaim)
76+ return page_reclaimed;
77+ }
78+
79+ return 0;
80+}
81diff --git a/include/linux/mm.h b/include/linux/mm.h
82index 833f23d98baa..0bb66c1c31c9 100644
83--- a/include/linux/mm.h
84+++ b/include/linux/mm.h
85@@ -2308,6 +2308,10 @@ extern int kvm_ret_mem_advice;
86 int kvm_madv_instant_free_sysctl_handler(struct ctl_table *table, int write,
87 void __user *buffer, size_t *length,
88 loff_t *ppos);
89+extern int sysctl_shrink_caches_mb;
90+int shrink_caches_sysctl_handler(struct ctl_table *table, int write,
91+ void __user *buffer, size_t *length,
92+ loff_t *ppos);
93 #endif
94
95 void drop_slab(void);
96diff --git a/kernel/sysctl.c b/kernel/sysctl.c
97index d8ae774fa042..5dc9a46ae212 100644
98--- a/kernel/sysctl.c
99+++ b/kernel/sysctl.c
100@@ -1405,6 +1405,14 @@ static struct ctl_table vm_table[] = {
101 .mode = 0644,
102 .proc_handler = kvm_madv_instant_free_sysctl_handler,
103 },
104+ {
105+ .procname = "shrink_caches_mb",
106+ .data = &sysctl_shrink_caches_mb,
107+ .maxlen = sizeof(int),
108+ .mode = 0644,
109+ .proc_handler = shrink_caches_sysctl_handler,
110+ .extra1 = &one,
111+ },
112 #ifdef CONFIG_COMPACTION
113 {
114 .procname = "compact_memory",
115diff --git a/mm/vmscan.c b/mm/vmscan.c
116index 30a88b945a44..1198e74d1860 100644
117--- a/mm/vmscan.c
118+++ b/mm/vmscan.c
119@@ -3525,7 +3525,6 @@ void wakeup_kswapd(struct zone *zone, int order, enum zone_type classzone_idx)
120 wake_up_interruptible(&pgdat->kswapd_wait);
121 }
122
123-#ifdef CONFIG_HIBERNATION
124 /*
125 * Try to free `nr_to_reclaim' of memory, system-wide, and return the number of
126 * freed pages.
127@@ -3564,7 +3563,6 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim)
128
129 return nr_reclaimed;
130 }
131-#endif /* CONFIG_HIBERNATION */
132
133 /* It's optimal to keep kswapds on the same CPUs as their memory, but
134 not required for correctness. So if the last cpu in a node goes
135--
1362.12.1
137
diff --git a/patches/boot_time_opt/host_boot_time_opt.scc b/patches/boot_time_opt/host_boot_time_opt.scc
new file mode 100644
index 0000000..ec93999
--- /dev/null
+++ b/patches/boot_time_opt/host_boot_time_opt.scc
@@ -0,0 +1,29 @@
1define KFEATURE_DESCRIPTION "Boot time optimization changes ported from ClearLinux, https://github.com/clearlinux-pkgs/linux-lts and https://github.com/clearlinux-pkgs/linux-kvm"
2define KFEATURE_COMPATIBILITY all
3
4patch 0101-kvm-silence-kvm-unhandled-rdmsr.patch
5patch 0102-i8042-decrease-debug-message-level-to-info.patch
6patch 0104-Increase-the-ext4-default-commit-age.patch
7patch 0105-silence-rapl.patch
8patch 0106-pci-pme-wakeups.patch
9patch 0107-ksm-wakeups.patch
10patch 0108-intel_idle-tweak-cpuidle-cstates.patch
11patch 0110-init_task-faster-timerslack.patch
12patch 0112-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch
13patch 0113-overload-on-wakeup.patch
14patch 0114-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch
15patch 0115-fix-initcall-timestamps.patch
16patch 0116-smpboot-reuse-timer-calibration.patch
17patch 0118-Initialize-ata-before-graphics.patch
18patch 0119-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch
19patch 0120-give-rdrand-some-credit.patch
20patch 0121-e1000e-change-default-policy.patch
21patch 0122-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch
22patch 0123-igb-no-runtime-pm-to-fix-reboot-oops.patch
23patch 0124-tweak-perfbias.patch
24patch 0125-e1000e-increase-pause-and-refresh-time.patch
25
26patch 0151-mm-Export-do_madvise.patch
27patch 0152-x86-kvm-Notify-host-to-release-pages.patch
28patch 0153-x86-Return-memory-from-guest-to-host-kernel.patch
29patch 0154-sysctl-vm-Fine-grained-cache-shrinking.patch
diff --git a/patches/boot_time_opt/raid_alg.cfg b/patches/boot_time_opt/raid_alg.cfg
new file mode 100644
index 0000000..6df4a7c
--- /dev/null
+++ b/patches/boot_time_opt/raid_alg.cfg
@@ -0,0 +1,3 @@
1CONFIG_RAID6_FORCE_ALGO=y
2CONFIG_RAID6_FORCE_INT=y
3CONFIG_RAID6_FORCE_AVX2=y
diff --git a/patches/boot_time_opt/raid_alg.scc b/patches/boot_time_opt/raid_alg.scc
new file mode 100644
index 0000000..98dd713
--- /dev/null
+++ b/patches/boot_time_opt/raid_alg.scc
@@ -0,0 +1,5 @@
1define KFEATURE_DESCRIPTION "Use AVX2 for RAID recovery algorithm"
2define KFEATURE_COMPATIBILITY all
3
4patch 0117-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
5kconf non-hardware raid_alg.cfg
diff --git a/patches/boot_time_opt_guest/0102-cpuidle-skip-synchronize_rcu-on-single-CPU-systems.patch b/patches/boot_time_opt_guest/0102-cpuidle-skip-synchronize_rcu-on-single-CPU-systems.patch
new file mode 100644
index 0000000..1de2a6b
--- /dev/null
+++ b/patches/boot_time_opt_guest/0102-cpuidle-skip-synchronize_rcu-on-single-CPU-systems.patch
@@ -0,0 +1,34 @@
1From 6b0fb5b2a7a157c04d8ab6ad71b092034d0048bf Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 11 Feb 2015 16:19:26 -0600
4Subject: [PATCH 102/114] cpuidle: skip synchronize_rcu() on single CPU systems
5
6synchronize_rcu() is pretty expensive, and on single CPU systems we don't need
7it in this specific case, so skip it.
8
9Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
10Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
11---
12 drivers/cpuidle/cpuidle.c | 5 ++++-
13 1 file changed, 4 insertions(+), 1 deletion(-)
14
15diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
16index 62810ff3b00f..f1d110411098 100644
17--- a/drivers/cpuidle/cpuidle.c
18+++ b/drivers/cpuidle/cpuidle.c
19@@ -324,8 +324,11 @@ void cpuidle_uninstall_idle_handler(void)
20 /*
21 * Make sure external observers (such as the scheduler)
22 * are done looking at pointed idle states.
23+ * This is only relevant if there is more than one cpu,
24+ * if there is only one CPU, that is us... and we're
25+ * coherent to ourselves.
26 */
27- synchronize_rcu();
28+
29 }
30
31 /**
32--
332.11.1
34
diff --git a/patches/boot_time_opt_guest/0103-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch b/patches/boot_time_opt_guest/0103-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch
new file mode 100644
index 0000000..d3a20fb
--- /dev/null
+++ b/patches/boot_time_opt_guest/0103-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch
@@ -0,0 +1,38 @@
1From 7be707833bb35c295eb702d13cf73ac9390e4b31 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 11 Feb 2015 16:25:16 -0600
4Subject: [PATCH 103/114] sysrq: skip synchronize_rcu() if there is no old op
5
6synchronize_rcu() is expensive. Currently it is called as part of the sysrq
7registration/unregistration, which happens during boot several times.
8Now, the reason for the synchronize_rcu() is to allow an old registered
9operation to expire properly... which is pointless if the old operation
10is NULL...
11So we can save the common case of the old operation being NULL a lot of time
12by just checking for non-NULL prior to the synchronize_rcu()
13
14Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
15Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
16---
17 drivers/tty/sysrq.c | 4 +++-
18 1 file changed, 3 insertions(+), 1 deletion(-)
19
20diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
21index 701c085bb19b..c60c7ba57ad9 100644
22--- a/drivers/tty/sysrq.c
23+++ b/drivers/tty/sysrq.c
24@@ -1065,8 +1065,10 @@ static int __sysrq_swap_key_ops(int key, struct sysrq_key_op *insert_op_p,
25 * A concurrent __handle_sysrq either got the old op or the new op.
26 * Wait for it to go away before returning, so the code for an old
27 * op is not freed (eg. on module unload) while it is in use.
28+ * This is only relevant if the old op is not NULL of course.
29 */
30- synchronize_rcu();
31+ if (remove_op_p)
32+ synchronize_rcu();
33
34 return retval;
35 }
36--
372.11.1
38
diff --git a/patches/boot_time_opt_guest/0104-fbcon-enable-no-blink-by-default.patch b/patches/boot_time_opt_guest/0104-fbcon-enable-no-blink-by-default.patch
new file mode 100644
index 0000000..715c195
--- /dev/null
+++ b/patches/boot_time_opt_guest/0104-fbcon-enable-no-blink-by-default.patch
@@ -0,0 +1,26 @@
1From 5899ff79ed4e3514420e1530a3588a922832dae5 Mon Sep 17 00:00:00 2001
2From: Jose Carlos Venegas Munoz <jos.c.venegas.munoz@intel.com>
3Date: Mon, 13 Apr 2015 11:26:36 -0500
4Subject: [PATCH 104/114] fbcon: enable no blink by default
5
6Author: Arjan van de Ven <arjan@linux.intel.com>
7---
8 drivers/video/console/fbcon.c | 2 +-
9 1 file changed, 1 insertion(+), 1 deletion(-)
10
11diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
12index a44f5627b82a..95b73366b86f 100644
13--- a/drivers/video/console/fbcon.c
14+++ b/drivers/video/console/fbcon.c
15@@ -146,7 +146,7 @@ static const struct consw fb_con;
16
17 static int fbcon_set_origin(struct vc_data *);
18
19-static int fbcon_cursor_noblink;
20+static int fbcon_cursor_noblink = 1;
21
22 #define divides(a, b) ((!(a) || (b)%(a)) ? 0 : 1)
23
24--
252.11.1
26
diff --git a/patches/boot_time_opt_guest/0105-vmstats-wakeups.patch b/patches/boot_time_opt_guest/0105-vmstats-wakeups.patch
new file mode 100644
index 0000000..09b109a
--- /dev/null
+++ b/patches/boot_time_opt_guest/0105-vmstats-wakeups.patch
@@ -0,0 +1,28 @@
1From ff47b4e9be8113b4ba05d6f2afee3db6904bc10f Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 11 Feb 2015 16:47:20 -0600
4Subject: [PATCH 105/114] vmstats: wakeups
5
6Author: Arjan van de Ven <arjan@linux.intel.com>
7
8Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
9---
10 mm/vmstat.c | 2 +-
11 1 file changed, 1 insertion(+), 1 deletion(-)
12
13diff --git a/mm/vmstat.c b/mm/vmstat.c
14index 7c28df36f50f..efe1b6797139 100644
15--- a/mm/vmstat.c
16+++ b/mm/vmstat.c
17@@ -1549,7 +1549,7 @@ static const struct file_operations proc_vmstat_file_operations = {
18 #ifdef CONFIG_SMP
19 static struct workqueue_struct *vmstat_wq;
20 static DEFINE_PER_CPU(struct delayed_work, vmstat_work);
21-int sysctl_stat_interval __read_mostly = HZ;
22+int sysctl_stat_interval __read_mostly = 8 * HZ;
23
24 #ifdef CONFIG_PROC_FS
25 static void refresh_vm_stats(struct work_struct *work)
26--
272.11.1
28
diff --git a/patches/boot_time_opt_guest/0106-pci-probe.patch b/patches/boot_time_opt_guest/0106-pci-probe.patch
new file mode 100644
index 0000000..5045926
--- /dev/null
+++ b/patches/boot_time_opt_guest/0106-pci-probe.patch
@@ -0,0 +1,123 @@
1From b225caf8f743b9f5f9e84d0df711ee0c17e049ae Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 11 Feb 2015 16:53:08 -0600
4Subject: [PATCH 106/114] pci: probe
5
6Author: Arjan van de Ven <arjan@linux.intel.com>
7
8Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
9---
10 drivers/pci/probe.c | 43 ++++++++++++++++++++++++++++++++++++++++---
11 1 file changed, 40 insertions(+), 3 deletions(-)
12
13diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
14index 204960e70333..7399a06698da 100644
15--- a/drivers/pci/probe.c
16+++ b/drivers/pci/probe.c
17@@ -182,6 +182,10 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
18
19 mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
20
21+ res->name = pci_name(dev);
22+
23+ printk("clr: Starting probe for %s\n", res->name);
24+
25 /* No printks while decoding is disabled! */
26 if (!dev->mmio_always_on) {
27 pci_read_config_word(dev, PCI_COMMAND, &orig_cmd);
28@@ -191,8 +195,6 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
29 }
30 }
31
32- res->name = pci_name(dev);
33-
34 pci_read_config_dword(dev, pos, &l);
35 pci_write_config_dword(dev, pos, l | mask);
36 pci_read_config_dword(dev, pos, &sz);
37@@ -324,6 +326,8 @@ static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
38 if (dev->non_compliant_bars)
39 return;
40
41+ printk("clr: pci_read_bases start\n");
42+
43 for (pos = 0; pos < howmany; pos++) {
44 struct resource *res = &dev->resource[pos];
45 reg = PCI_BASE_ADDRESS_0 + (pos << 2);
46@@ -332,11 +336,13 @@ static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
47
48 if (rom) {
49 struct resource *res = &dev->resource[PCI_ROM_RESOURCE];
50+ printk("clr: rom path\n");
51 dev->rom_base_reg = rom;
52 res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH |
53 IORESOURCE_READONLY | IORESOURCE_SIZEALIGN;
54 __pci_read_base(dev, pci_bar_mem32, res, rom);
55 }
56+ printk("clr: pci_read_bases end\n");
57 }
58
59 static void pci_read_bridge_io(struct pci_bus *child)
60@@ -1311,6 +1317,28 @@ static void pci_msi_setup_pci_dev(struct pci_dev *dev)
61 pci_msix_clear_and_set_ctrl(dev, PCI_MSIX_FLAGS_ENABLE, 0);
62 }
63
64+static int guess_bar_count(int class)
65+{
66+ if (class == 0x068000)
67+ return 0;
68+ if (class == 0x020000)
69+ return 2;
70+ if (class == 0x010000)
71+ return 2;
72+ if (class == 0x00ff00)
73+ return 1;
74+ return 6;
75+}
76+
77+static int has_rom(int class, int rom)
78+{
79+ if (class == 0x020000)
80+ return 0;
81+ if (class == 0x010000 || class == 0x00ff00)
82+ return 0;
83+ return rom;
84+}
85+
86 /**
87 * pci_setup_device - fill in class and map information of a device
88 * @dev: the device structure to fill
89@@ -1329,6 +1357,9 @@ int pci_setup_device(struct pci_dev *dev)
90 int pos = 0;
91 struct pci_bus_region region;
92 struct resource *res;
93+ int maxbar;
94+
95+ printk("clr: pci_setup_device start\n");
96
97 if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type))
98 return -EIO;
99@@ -1383,7 +1414,11 @@ int pci_setup_device(struct pci_dev *dev)
100 if (class == PCI_CLASS_BRIDGE_PCI)
101 goto bad;
102 pci_read_irq(dev);
103- pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
104+
105+ maxbar = guess_bar_count(dev->class);
106+
107+ if (class != PCI_CLASS_STORAGE_IDE)
108+ pci_read_bases(dev, maxbar, has_rom(dev->class, PCI_ROM_ADDRESS));
109 pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
110 pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
111
112@@ -1468,6 +1503,8 @@ int pci_setup_device(struct pci_dev *dev)
113 dev->class = PCI_CLASS_NOT_DEFINED << 8;
114 }
115
116+ printk("clr: pci_setup_device end\n");
117+
118 /* We found a fine healthy device, go go go... */
119 return 0;
120 }
121--
1222.11.1
123
diff --git a/patches/boot_time_opt_guest/0107-cgroup.patch b/patches/boot_time_opt_guest/0107-cgroup.patch
new file mode 100644
index 0000000..d68c686
--- /dev/null
+++ b/patches/boot_time_opt_guest/0107-cgroup.patch
@@ -0,0 +1,107 @@
1From 0adc5bfd84939d11d3c172eab0a00bfab4aadb46 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Fri, 28 Aug 2015 11:00:36 -0500
4Subject: [PATCH 107/114] cgroup
5
6Author: Arjan van de Ven <arjan@linux.intel.com>
7
8Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
9Signed-off-by: Jose Carlos Venegas Munoz <jos.c.venegas.munoz@intel.com>
10---
11 include/linux/cgroup-defs.h | 2 +-
12 kernel/cgroup.c | 24 ++++++++++++++----------
13 2 files changed, 15 insertions(+), 11 deletions(-)
14
15diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h
16index 861b4677fc5b..5d3c345ee60c 100644
17--- a/include/linux/cgroup-defs.h
18+++ b/include/linux/cgroup-defs.h
19@@ -137,7 +137,7 @@ struct cgroup_subsys_state {
20
21 /* percpu_ref killing and RCU release */
22 struct rcu_head rcu_head;
23- struct work_struct destroy_work;
24+ struct delayed_work destroy_work;
25 };
26
27 /*
28diff --git a/kernel/cgroup.c b/kernel/cgroup.c
29index 53bbca7c4859..6de39d8213ed 100644
30--- a/kernel/cgroup.c
31+++ b/kernel/cgroup.c
32@@ -73,7 +73,7 @@
33 * Expiring in the middle is a performance problem not a correctness one.
34 * 1 sec should be enough.
35 */
36-#define CGROUP_PIDLIST_DESTROY_DELAY HZ
37+#define CGROUP_PIDLIST_DESTROY_DELAY round_jiffies_relative(HZ)
38
39 #define CGROUP_FILE_NAME_MAX (MAX_CGROUP_TYPE_NAMELEN + \
40 MAX_CFTYPE_NAME + 2)
41@@ -4986,8 +4986,9 @@ static struct cftype cgroup_legacy_base_files[] = {
42 */
43 static void css_free_work_fn(struct work_struct *work)
44 {
45+ struct delayed_work *dwork = to_delayed_work(work);
46 struct cgroup_subsys_state *css =
47- container_of(work, struct cgroup_subsys_state, destroy_work);
48+ container_of(dwork, struct cgroup_subsys_state, destroy_work);
49 struct cgroup_subsys *ss = css->ss;
50 struct cgroup *cgrp = css->cgroup;
51
52@@ -5036,14 +5037,15 @@ static void css_free_rcu_fn(struct rcu_head *rcu_head)
53 struct cgroup_subsys_state *css =
54 container_of(rcu_head, struct cgroup_subsys_state, rcu_head);
55
56- INIT_WORK(&css->destroy_work, css_free_work_fn);
57- queue_work(cgroup_destroy_wq, &css->destroy_work);
58+ INIT_DELAYED_WORK(&css->destroy_work, css_free_work_fn);
59+ queue_delayed_work(cgroup_destroy_wq, &css->destroy_work, CGROUP_PIDLIST_DESTROY_DELAY);
60 }
61
62 static void css_release_work_fn(struct work_struct *work)
63 {
64+ struct delayed_work *dwork = to_delayed_work(work);
65 struct cgroup_subsys_state *css =
66- container_of(work, struct cgroup_subsys_state, destroy_work);
67+ container_of(dwork, struct cgroup_subsys_state, destroy_work);
68 struct cgroup_subsys *ss = css->ss;
69 struct cgroup *cgrp = css->cgroup;
70
71@@ -5088,8 +5090,9 @@ static void css_release(struct percpu_ref *ref)
72 struct cgroup_subsys_state *css =
73 container_of(ref, struct cgroup_subsys_state, refcnt);
74
75- INIT_WORK(&css->destroy_work, css_release_work_fn);
76- queue_work(cgroup_destroy_wq, &css->destroy_work);
77+ INIT_DELAYED_WORK(&css->destroy_work, css_release_work_fn);
78+ queue_delayed_work(cgroup_destroy_wq, &css->destroy_work, CGROUP_PIDLIST_DESTROY_DELAY);
79+
80 }
81
82 static void init_and_link_css(struct cgroup_subsys_state *css,
83@@ -5371,8 +5374,9 @@ static int cgroup_mkdir(struct kernfs_node *parent_kn, const char *name,
84 */
85 static void css_killed_work_fn(struct work_struct *work)
86 {
87+ struct delayed_work *dwork = to_delayed_work(work);
88 struct cgroup_subsys_state *css =
89- container_of(work, struct cgroup_subsys_state, destroy_work);
90+ container_of(dwork, struct cgroup_subsys_state, destroy_work);
91
92 mutex_lock(&cgroup_mutex);
93
94@@ -5393,8 +5397,8 @@ static void css_killed_ref_fn(struct percpu_ref *ref)
95 container_of(ref, struct cgroup_subsys_state, refcnt);
96
97 if (atomic_dec_and_test(&css->online_cnt)) {
98- INIT_WORK(&css->destroy_work, css_killed_work_fn);
99- queue_work(cgroup_destroy_wq, &css->destroy_work);
100+ INIT_DELAYED_WORK(&css->destroy_work, css_killed_work_fn);
101+ queue_delayed_work(cgroup_destroy_wq, &css->destroy_work, CGROUP_PIDLIST_DESTROY_DELAY);
102 }
103 }
104
105--
1062.11.1
107
diff --git a/patches/boot_time_opt_guest/0108-smpboot-reuse-timer-calibration.patch b/patches/boot_time_opt_guest/0108-smpboot-reuse-timer-calibration.patch
new file mode 100644
index 0000000..48be94a
--- /dev/null
+++ b/patches/boot_time_opt_guest/0108-smpboot-reuse-timer-calibration.patch
@@ -0,0 +1,45 @@
1From 634947be6c24d844af5f6ecf59453f2ddc09e032 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 11 Feb 2015 17:28:14 -0600
4Subject: [PATCH 108/114] smpboot: reuse timer calibration
5
6NO point recalibrating for known-constant tsc... saves 200ms+ of boot time.
7
8Author: Arjan van de Ven <arjan@linux.intel.com>
9
10Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
11---
12 arch/x86/kernel/smpboot.c | 2 +-
13 arch/x86/kernel/tsc.c | 3 +++
14 2 files changed, 4 insertions(+), 1 deletion(-)
15
16diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
17index 99b920d0e516..e17bb425bb52 100644
18--- a/arch/x86/kernel/smpboot.c
19+++ b/arch/x86/kernel/smpboot.c
20@@ -761,7 +761,7 @@ wakeup_secondary_cpu_via_init(int phys_apicid, unsigned long start_eip)
21 pr_debug("Waiting for send to finish...\n");
22 send_status = safe_apic_wait_icr_idle();
23
24- udelay(init_udelay);
25+ udelay(100);
26
27 pr_debug("Deasserting INIT\n");
28
29diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
30index 37e7cf544e51..e99be8a6a132 100644
31--- a/arch/x86/kernel/tsc.c
32+++ b/arch/x86/kernel/tsc.c
33@@ -1413,6 +1413,9 @@ unsigned long calibrate_delay_is_known(void)
34 if (!mask)
35 return 0;
36
37+ if (cpu !=0)
38+ return cpu_data(0).loops_per_jiffy;
39+
40 sibling = cpumask_any_but(mask, cpu);
41 if (sibling < nr_cpu_ids)
42 return cpu_data(sibling).loops_per_jiffy;
43--
442.11.1
45
diff --git a/patches/boot_time_opt_guest/0109-perf.patch b/patches/boot_time_opt_guest/0109-perf.patch
new file mode 100644
index 0000000..75f50f6
--- /dev/null
+++ b/patches/boot_time_opt_guest/0109-perf.patch
@@ -0,0 +1,28 @@
1From cce700dfbd5fdbf72b96e6479ca539ab4d880ce2 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 4 Nov 2015 15:17:10 -0600
4Subject: [PATCH 109/114] perf
5
6Author: Arjan van de Ven <arjan@linux.intel.com>
7
8Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
9---
10 arch/x86/events/intel/core.c | 2 +-
11 1 file changed, 1 insertion(+), 1 deletion(-)
12
13diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
14index eb1484c86bb4..c13ea26ac066 100644
15--- a/arch/x86/events/intel/core.c
16+++ b/arch/x86/events/intel/core.c
17@@ -4040,7 +4040,7 @@ __init int intel_pmu_init(void)
18 */
19 if (x86_pmu.extra_regs) {
20 for (er = x86_pmu.extra_regs; er->msr; er++) {
21- er->extra_msr_access = check_msr(er->msr, 0x11UL);
22+ er->extra_msr_access = false;
23 /* Disable LBR select mapping */
24 if ((er->idx == EXTRA_REG_LBR) && !er->extra_msr_access)
25 x86_pmu.lbr_sel_map = NULL;
26--
272.11.1
28
diff --git a/patches/boot_time_opt_guest/0110-pci-probe-identify-known-devices.patch b/patches/boot_time_opt_guest/0110-pci-probe-identify-known-devices.patch
new file mode 100644
index 0000000..742a045
--- /dev/null
+++ b/patches/boot_time_opt_guest/0110-pci-probe-identify-known-devices.patch
@@ -0,0 +1,190 @@
1From c662d99134b67c58e63ecc17c2531588a3a51596 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Sat, 14 Feb 2015 09:49:41 -0600
4Subject: [PATCH 110/114] pci: probe: identify known devices
5
6Author: Arjan van de Ven <arjan@linux.intel.com>
7Modify-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
8
9Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
10---
11 drivers/pci/probe.c | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++
12 1 file changed, 156 insertions(+)
13
14diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
15index 7399a06698da..4fb2d7fed4c5 100644
16--- a/drivers/pci/probe.c
17+++ b/drivers/pci/probe.c
18@@ -163,6 +163,159 @@ static inline unsigned long decode_bar(struct pci_dev *dev, u32 bar)
19
20 #define PCI_COMMAND_DECODE_ENABLE (PCI_COMMAND_MEMORY | PCI_COMMAND_IO)
21
22+/* shortcut version of __pci_read_base where we know the sizes already */
23+int __pci_read_base_shortcut(struct pci_dev *dev, enum pci_bar_type type,
24+ struct resource *res, unsigned int pos, u32 sz_in, u32 sz2_in)
25+{
26+ u32 l, sz;
27+ u64 l64, sz64, mask64;
28+ struct pci_bus_region region, inverted_region;
29+
30+ res->name = pci_name(dev);
31+
32+ pci_read_config_dword(dev, pos, &l);
33+
34+ sz = sz_in;
35+
36+ /*
37+ * All bits set in sz means the device isn't working properly.
38+ * If the BAR isn't implemented, all bits must be 0. If it's a
39+ * memory BAR or a ROM, bit 0 must be clear; if it's an io BAR, bit
40+ * 1 must be clear.
41+ * Here we set the size and is not 0xffffffff
42+ */
43+
44+ /*
45+ * I don't know how l can have all bits set. Copied from old code.
46+ * Maybe it fixes a bug on some ancient platform.
47+ */
48+ if (l == 0xffffffff)
49+ l = 0;
50+
51+ if (type == pci_bar_unknown) {
52+ res->flags = decode_bar(dev, l);
53+ res->flags |= IORESOURCE_SIZEALIGN;
54+ if (res->flags & IORESOURCE_IO) {
55+ l64 = l & PCI_BASE_ADDRESS_IO_MASK;
56+ sz64 = sz & PCI_BASE_ADDRESS_IO_MASK;
57+ mask64 = PCI_BASE_ADDRESS_IO_MASK & (u32)IO_SPACE_LIMIT;
58+ } else {
59+ l64 = l & PCI_BASE_ADDRESS_MEM_MASK;
60+ sz64 = sz & PCI_BASE_ADDRESS_MEM_MASK;
61+ mask64 = (u32)PCI_BASE_ADDRESS_MEM_MASK;
62+ }
63+ } else {
64+ res->flags |= (l & IORESOURCE_ROM_ENABLE);
65+ l64 = l & PCI_ROM_ADDRESS_MASK;
66+ sz64 = sz & PCI_ROM_ADDRESS_MASK;
67+ mask64 = (u32)PCI_ROM_ADDRESS_MASK;
68+ }
69+
70+ if (res->flags & IORESOURCE_MEM_64) {
71+ pci_read_config_dword(dev, pos + 4, &l);
72+ sz = sz2_in;
73+
74+ l64 |= ((u64)l << 32);
75+ sz64 |= ((u64)sz << 32);
76+ mask64 |= ((u64)~0 << 32);
77+ }
78+
79+ if (!sz64)
80+ goto fail;
81+
82+ sz64 = pci_size(l64, sz64, mask64);
83+ if (!sz64) {
84+ dev_info(&dev->dev, FW_BUG "reg 0x%x: invalid BAR (can't size)\n",
85+ pos);
86+ goto fail;
87+ }
88+
89+ if (res->flags & IORESOURCE_MEM_64) {
90+ if ((sizeof(dma_addr_t) < 8 || sizeof(resource_size_t) < 8) &&
91+ sz64 > 0x100000000ULL) {
92+ res->flags |= IORESOURCE_UNSET | IORESOURCE_DISABLED;
93+ res->start = 0;
94+ res->end = 0;
95+ dev_err(&dev->dev, "reg 0x%x: can't handle BAR larger than 4GB (size %#010llx)\n",
96+ pos, (unsigned long long)sz64);
97+ goto out;
98+ }
99+
100+ if ((sizeof(dma_addr_t) < 8) && l) {
101+ /* Above 32-bit boundary; try to reallocate */
102+ res->flags |= IORESOURCE_UNSET;
103+ res->start = 0;
104+ res->end = sz64;
105+ dev_info(&dev->dev, "reg 0x%x: can't handle BAR above 4GB (bus address %#010llx)\n",
106+ pos, (unsigned long long)l64);
107+ goto out;
108+ }
109+ }
110+
111+ region.start = l64;
112+ region.end = l64 + sz64;
113+
114+ pcibios_bus_to_resource(dev->bus, res, &region);
115+ pcibios_resource_to_bus(dev->bus, &inverted_region, res);
116+
117+ /*
118+ * If "A" is a BAR value (a bus address), "bus_to_resource(A)" is
119+ * the corresponding resource address (the physical address used by
120+ * the CPU. Converting that resource address back to a bus address
121+ * should yield the original BAR value:
122+ *
123+ * resource_to_bus(bus_to_resource(A)) == A
124+ *
125+ * If it doesn't, CPU accesses to "bus_to_resource(A)" will not
126+ * be claimed by the device.
127+ */
128+ if (inverted_region.start != region.start) {
129+ res->flags |= IORESOURCE_UNSET;
130+ res->start = 0;
131+ res->end = region.end - region.start;
132+ dev_info(&dev->dev, "reg 0x%x: initial BAR value %#010llx invalid\n",
133+ pos, (unsigned long long)region.start);
134+ }
135+
136+ goto out;
137+
138+
139+fail:
140+ res->flags = 0;
141+out:
142+ if (res->flags)
143+ dev_printk(KERN_DEBUG, &dev->dev, "reg 0x%x: %pR\n", pos, res);
144+
145+ return (res->flags & IORESOURCE_MEM_64) ? 1 : 0;
146+}
147+
148+static int is_known_device(struct pci_dev *dev, int pos, int *sz)
149+{
150+ /* Red Hat, Inc : Virtio network device */
151+ if (dev->vendor == 0x1af4 && dev->device == 0x1000) {
152+ if (pos == 0x10) {
153+ *sz = 0xffffffe1;
154+ return 1;
155+ }
156+ if (pos == 0x14) {
157+ *sz = 0xfffff000;
158+ return 1;
159+ }
160+ }
161+ /* Red Hat, Inc : Virtio block device */
162+ if (dev->vendor == 0x1af4 && dev->device == 0x1001) {
163+ if (pos == 0x10) {
164+ *sz = 0xffffffc1;
165+ return 1;
166+ }
167+ if (pos == 0x14) {
168+ *sz = 0xfffff000;
169+ return 1;
170+ }
171+ }
172+ return 0;
173+}
174+
175 /**
176 * pci_read_base - read a PCI BAR
177 * @dev: the PCI device
178@@ -182,6 +335,9 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
179
180 mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
181
182+ if (is_known_device(dev, pos, &sz))
183+ return __pci_read_base_shortcut(dev, type, res, pos, sz, 0);
184+
185 res->name = pci_name(dev);
186
187 printk("clr: Starting probe for %s\n", res->name);
188--
1892.11.1
190
diff --git a/patches/boot_time_opt_guest/0111-init-no-wait-for-the-known-devices.patch b/patches/boot_time_opt_guest/0111-init-no-wait-for-the-known-devices.patch
new file mode 100644
index 0000000..701a18d
--- /dev/null
+++ b/patches/boot_time_opt_guest/0111-init-no-wait-for-the-known-devices.patch
@@ -0,0 +1,39 @@
1From be2ab4809c6b5058fbf3cd54c0f59c56416e572c Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 22 Jun 2015 09:33:33 -0500
4Subject: [PATCH 111/114] init: no wait for the known devices
5
6No wait for the known devices to complete their probing
7
8Author: Arjan van de Ven <arjan@linux.intel.com>
9
10Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
11---
12 init/do_mounts.c | 4 +++-
13 1 file changed, 3 insertions(+), 1 deletion(-)
14
15diff --git a/init/do_mounts.c b/init/do_mounts.c
16index c2de5104aad2..40725f0f5fb3 100644
17--- a/init/do_mounts.c
18+++ b/init/do_mounts.c
19@@ -28,6 +28,7 @@
20 #include <linux/slab.h>
21 #include <linux/ramfs.h>
22 #include <linux/shmem_fs.h>
23+#include <linux/async.h>
24
25 #include <linux/nfs_fs.h>
26 #include <linux/nfs_fs_sb.h>
27@@ -563,7 +564,8 @@ void __init prepare_namespace(void)
28 * For example, it is not atypical to wait 5 seconds here
29 * for the touchpad of a laptop to initialize.
30 */
31- wait_for_device_probe();
32+ //wait_for_device_probe();
33+ async_synchronize_full();
34
35 md_run_setup();
36
37--
382.11.1
39
diff --git a/patches/boot_time_opt_guest/0112-ksm-wakeups.patch b/patches/boot_time_opt_guest/0112-ksm-wakeups.patch
new file mode 100644
index 0000000..b131e3f
--- /dev/null
+++ b/patches/boot_time_opt_guest/0112-ksm-wakeups.patch
@@ -0,0 +1,32 @@
1From 2dc48e4b5c651691b7028991b64c935047b41b19 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 14 Mar 2016 11:06:46 -0600
4Subject: [PATCH 112/114] ksm-wakeups
5
6reduce wakeups in ksm
7---
8 mm/ksm.c | 8 ++++++--
9 1 file changed, 6 insertions(+), 2 deletions(-)
10
11diff --git a/mm/ksm.c b/mm/ksm.c
12index 9ae6011a41f8..eecd3ff669e2 100644
13--- a/mm/ksm.c
14+++ b/mm/ksm.c
15@@ -1725,8 +1725,12 @@ static int ksm_scan_thread(void *nothing)
16 try_to_freeze();
17
18 if (ksmd_should_run()) {
19- schedule_timeout_interruptible(
20- msecs_to_jiffies(ksm_thread_sleep_millisecs));
21+ if (ksm_thread_sleep_millisecs >= 1000)
22+ schedule_timeout_interruptible(
23+ msecs_to_jiffies(round_jiffies_relative(ksm_thread_sleep_millisecs)));
24+ else
25+ schedule_timeout_interruptible(
26+ msecs_to_jiffies(ksm_thread_sleep_millisecs));
27 } else {
28 wait_event_freezable(ksm_thread_wait,
29 ksmd_should_run() || kthread_should_stop());
30--
312.11.1
32
diff --git a/patches/boot_time_opt_guest/0113-init-do_mounts-recreate-dev-root.patch b/patches/boot_time_opt_guest/0113-init-do_mounts-recreate-dev-root.patch
new file mode 100644
index 0000000..047eddb
--- /dev/null
+++ b/patches/boot_time_opt_guest/0113-init-do_mounts-recreate-dev-root.patch
@@ -0,0 +1,42 @@
1From 179b7f41d5509f93cd297cc81c5d8da4a3123d9d Mon Sep 17 00:00:00 2001
2From: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
3Date: Fri, 20 Nov 2015 14:01:26 -0600
4Subject: [PATCH 113/114] init: do_mounts: recreate /dev/root
5
6Rootfs shows as is mounted in /dev/root, but this devices is not present in
7/dev directory.
8
9Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
10---
11 init/do_mounts.c | 8 ++++++++
12 1 file changed, 8 insertions(+)
13
14diff --git a/init/do_mounts.c b/init/do_mounts.c
15index 40725f0f5fb3..78b5b1dba8ca 100644
16--- a/init/do_mounts.c
17+++ b/init/do_mounts.c
18@@ -550,6 +550,7 @@ void __init mount_root(void)
19 void __init prepare_namespace(void)
20 {
21 int is_floppy;
22+ int err;
23
24 if (root_delay) {
25 printk(KERN_INFO "Waiting %d sec before mounting root device...\n",
26@@ -604,6 +605,13 @@ void __init prepare_namespace(void)
27 devtmpfs_mount("dev");
28 sys_mount(".", "/", NULL, MS_MOVE, NULL);
29 sys_chroot(".");
30+#ifdef CONFIG_BLOCK
31+ /* recreate the /dev/root */
32+ err = create_dev("/dev/root", ROOT_DEV);
33+
34+ if (err < 0)
35+ pr_emerg("Failed to create /dev/root: %d\n", err);
36+#endif
37 }
38
39 static bool is_tmpfs;
40--
412.11.1
42
diff --git a/patches/boot_time_opt_guest/0114-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch b/patches/boot_time_opt_guest/0114-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch
new file mode 100644
index 0000000..dee9058
--- /dev/null
+++ b/patches/boot_time_opt_guest/0114-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch
@@ -0,0 +1,56 @@
1From 02fd2e6a7c708bf973209f9b238c5c61cbf15239 Mon Sep 17 00:00:00 2001
2From: Alan Cox <alan@linux.intel.com>
3Date: Thu, 10 Mar 2016 15:11:28 +0000
4Subject: [PATCH 114/114] xattr: allow setting user.* attributes on symlinks by
5 owner
6
7Kvmtool and clear containers supports using user attributes to label host
8files with the virtual uid/guid of the file in the container. This allows an
9end user to manage their files and a complete uid space without all the ugly
10namespace stuff.
11
12The one gap in the support is symlinks because an end user can change the
13ownership of a symbolic link. We support attributes on these files as you
14can already (as root) set security attributes on them.
15
16The current rules seem slightly over-paranoid and as we have a use case this
17patch enables updating the attributes on a symbolic link IFF you are the
18owner of the synlink (as permissions are not usually meaningful on the link
19itself).
20
21Signed-off-by: Alan Cox <alan@linux.intel.com>
22---
23 fs/xattr.c | 14 ++++++++------
24 1 file changed, 8 insertions(+), 6 deletions(-)
25
26diff --git a/fs/xattr.c b/fs/xattr.c
27index 7e3317cf4045..e005c30acb2c 100644
28--- a/fs/xattr.c
29+++ b/fs/xattr.c
30@@ -118,15 +118,17 @@ xattr_permission(struct inode *inode, const char *name, int mask)
31 }
32
33 /*
34- * In the user.* namespace, only regular files and directories can have
35- * extended attributes. For sticky directories, only the owner and
36- * privileged users can write attributes.
37+ * In the user.* namespace, only regular files, symbolic links, and
38+ * directories can have extended attributes. For symbolic links and
39+ * sticky directories, only the owner and privileged users can write
40+ * attributes.
41 */
42 if (!strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN)) {
43- if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode))
44+ if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode) && !S_ISLNK(inode->i_mode))
45 return (mask & MAY_WRITE) ? -EPERM : -ENODATA;
46- if (S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX) &&
47- (mask & MAY_WRITE) && !inode_owner_or_capable(inode))
48+ if (((S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX))
49+ || S_ISLNK(inode->i_mode)) && (mask & MAY_WRITE)
50+ && !inode_owner_or_capable(inode))
51 return -EPERM;
52 }
53
54--
552.11.1
56
diff --git a/patches/boot_time_opt_guest/0151-mm-Export-do_madvise.patch b/patches/boot_time_opt_guest/0151-mm-Export-do_madvise.patch
new file mode 100644
index 0000000..a6dbff7
--- /dev/null
+++ b/patches/boot_time_opt_guest/0151-mm-Export-do_madvise.patch
@@ -0,0 +1,84 @@
1From 99b4cdcce43ad0f706120bef26fef8c628c572cf Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:03:52 -0800
4Subject: [PATCH 151/154] mm: Export do_madvise()
5
6Combined with some interesting flags madvise() system call
7allows to free memory more smartly and more efficiently than
8we could do with a simple free(). The issue is that is not
9available for kernel modules that could need it.
10
11In order to solve this lack of support, this patch exports
12do_madvise() so as to make it available to the entire kernel.
13The already existing madvise() system call is unchanged and
14now relies on this new do_madvise() function.
15
16Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com>
17Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
18---
19 include/linux/mm.h | 2 ++
20 mm/madvise.c | 25 +++++++++++++++++++++----
21 2 files changed, 23 insertions(+), 4 deletions(-)
22
23diff --git a/include/linux/mm.h b/include/linux/mm.h
24index 0b5b2e4df14e..925ec25f99a8 100644
25--- a/include/linux/mm.h
26+++ b/include/linux/mm.h
27@@ -2450,5 +2450,7 @@ void __init setup_nr_node_ids(void);
28 static inline void setup_nr_node_ids(void) {}
29 #endif
30
31+extern int do_madvise(unsigned long start, size_t len_in, int behavior);
32+
33 #endif /* __KERNEL__ */
34 #endif /* _LINUX_MM_H */
35diff --git a/mm/madvise.c b/mm/madvise.c
36index 93fb63e88b5e..c8bbf93d4978 100644
37--- a/mm/madvise.c
38+++ b/mm/madvise.c
39@@ -618,9 +618,7 @@ madvise_behavior_valid(int behavior)
40 }
41
42 /*
43- * The madvise(2) system call.
44- *
45- * Applications can use madvise() to advise the kernel how it should
46+ * Kernel modules can use do_madvise() to advise the kernel how it should
47 * handle paging I/O in this VM area. The idea is to help the kernel
48 * use appropriate read-ahead and caching techniques. The information
49 * provided is advisory only, and can be safely disregarded by the
50@@ -673,7 +671,7 @@ madvise_behavior_valid(int behavior)
51 * -EBADF - map exists, but area maps something that isn't a file.
52 * -EAGAIN - a kernel resource was temporarily unavailable.
53 */
54-SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
55+int do_madvise(unsigned long start, size_t len_in, int behavior)
56 {
57 unsigned long end, tmp;
58 struct vm_area_struct *vma, *prev;
59@@ -767,3 +765,22 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
60
61 return error;
62 }
63+EXPORT_SYMBOL_GPL(do_madvise);
64+
65+/*
66+ * The madvise(2) system call.
67+ *
68+ * Applications can use madvise() system call to advise the kernel how
69+ * it should handle paging I/O in this VM area. The idea is to help
70+ * the kernel use appropriate read-ahead and caching techniques. The
71+ * information provided is advisory only, and can be safely disregarded
72+ * by the kernel without affecting the correct operation of the application.
73+ *
74+ * behavior values are the same than the ones defined in madvise()
75+ *
76+ * return values are the same than the ones defined in madvise()
77+ */
78+SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
79+{
80+ return do_madvise(start, len_in, behavior);
81+}
82--
832.12.1
84
diff --git a/patches/boot_time_opt_guest/0152-x86-kvm-Notify-host-to-release-pages.patch b/patches/boot_time_opt_guest/0152-x86-kvm-Notify-host-to-release-pages.patch
new file mode 100644
index 0000000..5f44930
--- /dev/null
+++ b/patches/boot_time_opt_guest/0152-x86-kvm-Notify-host-to-release-pages.patch
@@ -0,0 +1,180 @@
1From d28921b5f797829e4e676f7968ae688ef96b7992 Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:08:55 -0800
4Subject: [PATCH 152/154] x86: kvm: Notify host to release pages
5
6In context of hypervisors managing several virtual machines, we
7want those virtual machines to give the memory they used back to
8the host when they don't need it anymore.
9
10This patch introduces a new hypercall KVM_HC_RETURN_MEM, allowing
11the guest kernel to notify the host kernel when such event occurs.
12And relying on do_madvise() function that we have previously exported,
13it issues a call to this function when it receives the new hypercall.
14
15Use of do_madvise() with MADV_DONTNEED flag will allow the guest to
16ask for a new page without going through a new hypercall. Instead,
17it will be able to start using that memory again as it will get
18faulted back in as a fresh new page. That's why do_madvise() is more
19efficient than doing vm_unmap() to return some memory to the host.
20
21This patch introduces also a new sysctl kvm_madv_instant_free,
22allowing user to set MADV_FREE advice instead of MADV_DONTNEED.
23Indeed, MADV_FREE saves more performances than using MADV_DONTNEED
24because it does not zero the pages in case the memory has not been
25freed by the kernel. This can happen when there was no need for the
26kernel to get this memory back, meaning it was keeping those pages
27in the right state to be re-used by the same application.
28MADV_FREE being a very recent advice introduced in kernel 4.5, we
29only want to enable it through a sysctl in case the user want to
30use it.
31
32Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com>
33Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
34---
35 arch/x86/kvm/x86.c | 17 +++++++++++++++++
36 include/linux/mm.h | 5 +++++
37 include/uapi/linux/kvm_para.h | 3 +++
38 kernel/sysctl.c | 7 +++++++
39 mm/Makefile | 2 +-
40 mm/kvm.c | 25 +++++++++++++++++++++++++
41 6 files changed, 58 insertions(+), 1 deletion(-)
42 create mode 100644 mm/kvm.c
43
44diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
45index 582c75311f95..683a94dd5f03 100644
46--- a/arch/x86/kvm/x86.c
47+++ b/arch/x86/kvm/x86.c
48@@ -46,6 +46,7 @@
49 #include <linux/user-return-notifier.h>
50 #include <linux/srcu.h>
51 #include <linux/slab.h>
52+#include <linux/mm.h>
53 #include <linux/perf_event.h>
54 #include <linux/uaccess.h>
55 #include <linux/hash.h>
56@@ -6019,6 +6020,19 @@ static void kvm_pv_kick_cpu_op(struct kvm *kvm, unsigned long flags, int apicid)
57 kvm_irq_delivery_to_apic(kvm, NULL, &lapic_irq, NULL);
58 }
59
60+static int kvm_pv_return_mem_op(struct kvm *kvm, gpa_t gpa, size_t len)
61+{
62+ unsigned long start = gfn_to_hva(kvm, gpa_to_gfn(gpa));
63+
64+ if (len > KVM_MAX_RET_MEM_SIZE)
65+ return KVM_EPERM;
66+
67+ if (kvm_is_error_hva(start + len))
68+ return KVM_EFAULT;
69+
70+ return do_madvise(start, len, kvm_ret_mem_advice);
71+}
72+
73 void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu)
74 {
75 vcpu->arch.apicv_active = false;
76@@ -6065,6 +6079,9 @@ int kvm_emulate_hypercall(struct kvm_vcpu *vcpu)
77 kvm_pv_kick_cpu_op(vcpu->kvm, a0, a1);
78 ret = 0;
79 break;
80+ case KVM_HC_RETURN_MEM:
81+ ret = kvm_pv_return_mem_op(vcpu->kvm, a0, a1);
82+ break;
83 default:
84 ret = -KVM_ENOSYS;
85 break;
86diff --git a/include/linux/mm.h b/include/linux/mm.h
87index 925ec25f99a8..833f23d98baa 100644
88--- a/include/linux/mm.h
89+++ b/include/linux/mm.h
90@@ -2303,6 +2303,11 @@ extern bool process_shares_mm(struct task_struct *p, struct mm_struct *mm);
91 extern int sysctl_drop_caches;
92 int drop_caches_sysctl_handler(struct ctl_table *, int,
93 void __user *, size_t *, loff_t *);
94+extern int sysctl_kvm_madv_instant_free;
95+extern int kvm_ret_mem_advice;
96+int kvm_madv_instant_free_sysctl_handler(struct ctl_table *table, int write,
97+ void __user *buffer, size_t *length,
98+ loff_t *ppos);
99 #endif
100
101 void drop_slab(void);
102diff --git a/include/uapi/linux/kvm_para.h b/include/uapi/linux/kvm_para.h
103index bf6cd7d5cac2..7d90f77d87d0 100644
104--- a/include/uapi/linux/kvm_para.h
105+++ b/include/uapi/linux/kvm_para.h
106@@ -23,6 +23,9 @@
107 #define KVM_HC_MIPS_GET_CLOCK_FREQ 6
108 #define KVM_HC_MIPS_EXIT_VM 7
109 #define KVM_HC_MIPS_CONSOLE_OUTPUT 8
110+#define KVM_HC_RETURN_MEM 10
111+
112+#define KVM_MAX_RET_MEM_SIZE (1 << 22) // 4MiB
113
114 /*
115 * hypercalls use architecture specific
116diff --git a/kernel/sysctl.c b/kernel/sysctl.c
117index c1095cdc0fe2..d8ae774fa042 100644
118--- a/kernel/sysctl.c
119+++ b/kernel/sysctl.c
120@@ -1398,6 +1398,13 @@ static struct ctl_table vm_table[] = {
121 .extra1 = &one,
122 .extra2 = &four,
123 },
124+ {
125+ .procname = "kvm_madv_instant_free",
126+ .data = &sysctl_kvm_madv_instant_free,
127+ .maxlen = sizeof(int),
128+ .mode = 0644,
129+ .proc_handler = kvm_madv_instant_free_sysctl_handler,
130+ },
131 #ifdef CONFIG_COMPACTION
132 {
133 .procname = "compact_memory",
134diff --git a/mm/Makefile b/mm/Makefile
135index 295bd7a..6455723 100644
136--- a/mm/Makefile
137+++ b/mm/Makefile
138@@ -47,6 +47,8 @@ else
139 obj-y += bootmem.o
140 endif
141
142+obj-y += kvm.o
143+
144 obj-$(CONFIG_ADVISE_SYSCALLS) += fadvise.o
145 ifdef CONFIG_MMU
146 obj-$(CONFIG_ADVISE_SYSCALLS) += madvise.o
147diff --git a/mm/kvm.c b/mm/kvm.c
148new file mode 100644
149index 000000000000..8945f6a311b9
150--- /dev/null
151+++ b/mm/kvm.c
152@@ -0,0 +1,25 @@
153+#include <linux/mman.h>
154+
155+int sysctl_kvm_madv_instant_free;
156+
157+int kvm_ret_mem_advice = MADV_DONTNEED;
158+EXPORT_SYMBOL_GPL(kvm_ret_mem_advice);
159+
160+int kvm_madv_instant_free_sysctl_handler(struct ctl_table *table, int write,
161+ void __user *buffer, size_t *length, loff_t *ppos)
162+{
163+ int ret;
164+
165+ ret = proc_dointvec(table, write, buffer, length, ppos);
166+ if (ret)
167+ return ret;
168+
169+#ifdef MADV_FREE
170+ if (sysctl_kvm_madv_instant_free > 0)
171+ kvm_ret_mem_advice = MADV_FREE;
172+ else
173+ kvm_ret_mem_advice = MADV_DONTNEED;
174+#endif
175+
176+ return 0;
177+}
178--
1792.12.1
180
diff --git a/patches/boot_time_opt_guest/0153-x86-Return-memory-from-guest-to-host-kernel.patch b/patches/boot_time_opt_guest/0153-x86-Return-memory-from-guest-to-host-kernel.patch
new file mode 100644
index 0000000..cdb876a
--- /dev/null
+++ b/patches/boot_time_opt_guest/0153-x86-Return-memory-from-guest-to-host-kernel.patch
@@ -0,0 +1,155 @@
1From 855ef164854307839c08c60688eaeac14f9a649e Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:26:13 -0800
4Subject: [PATCH 153/154] x86: Return memory from guest to host kernel
5
6All virtual machines need memory to perform various tasks, but this
7memory is not released to the host after it is not used anymore. We
8have to wait for the termination of the virtual machine to get this
9memory back into the host.
10
11Ballooning mechanism is close but not designed for the same purpose.
12In case we hit memory limits of the system, the host predicts how much
13memory can be asked back from a guest, and it issues an hypercall to
14retrieve this memory.
15
16The solution proposed is different because it does not wait for host
17needs before to return memory, and it knows precisely how much memory
18it can return.
19
20The way to notify the host side about such a return is to rely on
21the new hypercall KVM_HC_RETURN_MEM. In order to avoid the CPU to be
22overloaded with too many hypercalls, we only return memory blocks of
23order 7 (512k blocks) and higher. This value has been found running
24memory tests using multiple threads allocating/freeing high amount
25of memory. Those tests were run for different order values, and 7 was
26the best tradeoff between the number of hypercalls issued and the
27amount of memory returned to the host.
28
29In order to limit performances impact related to this code addition,
30we check for blocks of order 7 or higher. This means it only costs an
31additional function call and a branch to perform this check.
32
33Furthermore, this code has been added to the "merge" codepath of the
34buddy allocator, which is not as sensitive as the "free" codepath.
35Not all blocks going through the "free" codepath will end up in the
36"merge" codepath because some of them won't find their free buddy.
37But this is a negligible amount since the kernel does not use many
38high order blocks directly. Instead, those bigger blocks are often
39broken into smaller chunks used as low order blocks. At the time
40those small blocks are released, they go through the merge path.
41
42Benchmarks such as ebizzy and will-it-scale have been run in order
43to make sure this patch does not affect kernel performances and no
44significant differences were observed.
45
46Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com>
47Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
48---
49 arch/x86/include/asm/kvm_para.h | 22 ++++++++++++++++++++++
50 arch/x86/kernel/kvm.c | 10 ++++++++++
51 include/linux/mm-arch-hooks.h | 8 ++++++++
52 mm/page_alloc.c | 2 ++
53 4 files changed, 42 insertions(+)
54
55diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h
56index bc62e7cbf1b1..4a2f6d1adbd2 100644
57--- a/arch/x86/include/asm/kvm_para.h
58+++ b/arch/x86/include/asm/kvm_para.h
59@@ -92,6 +92,28 @@ void kvm_async_pf_task_wait(u32 token);
60 void kvm_async_pf_task_wake(u32 token);
61 u32 kvm_read_and_reset_pf_reason(void);
62 extern void kvm_disable_steal_time(void);
63+void kvm_arch_return_memory(struct page *page, unsigned int order);
64+
65+/*
66+ * This order has been found in an empirical way, running memory tests
67+ * through many iterations to assess the number of hypercalls issued
68+ * and the amount of memory returned. In case you change this order to
69+ * 6 or 8, it should not impact your performances significantly.
70+ *
71+ * Smaller values lead to less memory waste, but consume more CPU on
72+ * hypercalls. Larger values use less CPU, but do not as precisely
73+ * inform the hypervisor of which memory is free.
74+ */
75+#define RET_MEM_BUDDY_ORDER 7
76+
77+static inline void arch_buddy_merge(struct page *page, unsigned int order)
78+{
79+ if (order < RET_MEM_BUDDY_ORDER)
80+ return;
81+
82+ kvm_arch_return_memory(page, order);
83+}
84+#define arch_buddy_merge arch_buddy_merge
85
86 #ifdef CONFIG_PARAVIRT_SPINLOCKS
87 void __init kvm_spinlock_init(void);
88diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
89index edbbfc854e39..14167b3f6514 100644
90--- a/arch/x86/kernel/kvm.c
91+++ b/arch/x86/kernel/kvm.c
92@@ -552,6 +552,16 @@ static __init int activate_jump_labels(void)
93 }
94 arch_initcall(activate_jump_labels);
95
96+void kvm_arch_return_memory(struct page *page, unsigned int order)
97+{
98+ if (!kvm_para_available())
99+ return;
100+
101+ kvm_hypercall2(KVM_HC_RETURN_MEM,
102+ page_to_phys(page),
103+ PAGE_SIZE << order);
104+}
105+
106 #ifdef CONFIG_PARAVIRT_SPINLOCKS
107
108 /* Kick a cpu by its apicid. Used to wake up a halted vcpu */
109diff --git a/include/linux/mm-arch-hooks.h b/include/linux/mm-arch-hooks.h
110index 4efc3f56e6df..26eb3a05a8a3 100644
111--- a/include/linux/mm-arch-hooks.h
112+++ b/include/linux/mm-arch-hooks.h
113@@ -12,6 +12,7 @@
114 #define _LINUX_MM_ARCH_HOOKS_H
115
116 #include <asm/mm-arch-hooks.h>
117+#include <asm/kvm_para.h>
118
119 #ifndef arch_remap
120 static inline void arch_remap(struct mm_struct *mm,
121@@ -22,4 +23,11 @@ static inline void arch_remap(struct mm_struct *mm,
122 #define arch_remap arch_remap
123 #endif
124
125+#ifndef arch_buddy_merge
126+static inline void arch_buddy_merge(struct page *page, unsigned int order)
127+{
128+}
129+#define arch_buddy_merge arch_buddy_merge
130+#endif
131+
132 #endif /* _LINUX_MM_ARCH_HOOKS_H */
133diff --git a/mm/page_alloc.c b/mm/page_alloc.c
134index 1460e6ad5e14..5f6e6371bc6f 100644
135--- a/mm/page_alloc.c
136+++ b/mm/page_alloc.c
137@@ -64,6 +64,7 @@
138 #include <linux/page_owner.h>
139 #include <linux/kthread.h>
140 #include <linux/memcontrol.h>
141+#include <linux/mm-arch-hooks.h>
142
143 #include <asm/sections.h>
144 #include <asm/tlbflush.h>
145@@ -855,6 +856,7 @@ static inline void __free_one_page(struct page *page,
146 }
147
148 done_merging:
149+ arch_buddy_merge(page, order);
150 set_page_order(page, order);
151
152 /*
153--
1542.12.1
155
diff --git a/patches/boot_time_opt_guest/0154-sysctl-vm-Fine-grained-cache-shrinking.patch b/patches/boot_time_opt_guest/0154-sysctl-vm-Fine-grained-cache-shrinking.patch
new file mode 100644
index 0000000..07d4a83
--- /dev/null
+++ b/patches/boot_time_opt_guest/0154-sysctl-vm-Fine-grained-cache-shrinking.patch
@@ -0,0 +1,137 @@
1From 2c145b5233b504f5226a0f4bc44baeef33b444d8 Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:32:39 -0800
4Subject: [PATCH 154/154] sysctl: vm: Fine-grained cache shrinking
5
6Lots of virtual machines are let in idle state for days until they
7are terminated, and they can keep a large amount of memory in their
8cache, meaning this memory cannot be used by other processes.
9
10We tried to release this memory using existing drop_caches sysctl,
11but it led to the complete cache loss while it could have been used
12whether the idle process wakes up. Indeed, the process can't find any
13available cached data and it directly affects performances to rebuild
14it from scratch.
15
16Instead, the solution we want is based on shrinking gradually system
17cache over time. This patch adds a new sysctl shrink_caches_mb so as
18to allow userspace applications indicating the kernel it should shrink
19system cache up to the amount (in MiB) specified.
20
21There is an application called "memshrinker" which uses this new
22mechanism. It runs in the background and periodically releases a
23specified amount of cache. This amount is based on the remaining
24cache on the system, and period is computed to follow a shrinking
25model. It results in saving a lot of memory for other processes
26running on the system.
27
28Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com>
29Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
30---
31 fs/drop_caches.c | 25 +++++++++++++++++++++++++
32 include/linux/mm.h | 4 ++++
33 kernel/sysctl.c | 8 ++++++++
34 mm/vmscan.c | 2 --
35 4 files changed, 37 insertions(+), 2 deletions(-)
36
37diff --git a/fs/drop_caches.c b/fs/drop_caches.c
38index d72d52b90433..f564dfcc13a4 100644
39--- a/fs/drop_caches.c
40+++ b/fs/drop_caches.c
41@@ -8,10 +8,12 @@
42 #include <linux/writeback.h>
43 #include <linux/sysctl.h>
44 #include <linux/gfp.h>
45+#include <linux/swap.h>
46 #include "internal.h"
47
48 /* A global variable is a bit ugly, but it keeps the code simple */
49 int sysctl_drop_caches;
50+int sysctl_shrink_caches_mb;
51
52 static void drop_pagecache_sb(struct super_block *sb, void *unused)
53 {
54@@ -67,3 +69,26 @@ int drop_caches_sysctl_handler(struct ctl_table *table, int write,
55 }
56 return 0;
57 }
58+
59+int shrink_caches_sysctl_handler(struct ctl_table *table, int write,
60+ void __user *buffer, size_t *length, loff_t *ppos)
61+{
62+ int ret;
63+ unsigned long nr_to_reclaim, page_reclaimed;
64+
65+ ret = proc_dointvec_minmax(table, write, buffer, length, ppos);
66+ if (ret)
67+ return ret;
68+
69+ nr_to_reclaim = sysctl_shrink_caches_mb * (1 << 20) / PAGE_SIZE;
70+ if (write) {
71+ page_reclaimed = shrink_all_memory(nr_to_reclaim);
72+ if (page_reclaimed > 0)
73+ lru_add_drain_all();
74+
75+ if (page_reclaimed != nr_to_reclaim)
76+ return page_reclaimed;
77+ }
78+
79+ return 0;
80+}
81diff --git a/include/linux/mm.h b/include/linux/mm.h
82index 833f23d98baa..0bb66c1c31c9 100644
83--- a/include/linux/mm.h
84+++ b/include/linux/mm.h
85@@ -2308,6 +2308,10 @@ extern int kvm_ret_mem_advice;
86 int kvm_madv_instant_free_sysctl_handler(struct ctl_table *table, int write,
87 void __user *buffer, size_t *length,
88 loff_t *ppos);
89+extern int sysctl_shrink_caches_mb;
90+int shrink_caches_sysctl_handler(struct ctl_table *table, int write,
91+ void __user *buffer, size_t *length,
92+ loff_t *ppos);
93 #endif
94
95 void drop_slab(void);
96diff --git a/kernel/sysctl.c b/kernel/sysctl.c
97index d8ae774fa042..5dc9a46ae212 100644
98--- a/kernel/sysctl.c
99+++ b/kernel/sysctl.c
100@@ -1405,6 +1405,14 @@ static struct ctl_table vm_table[] = {
101 .mode = 0644,
102 .proc_handler = kvm_madv_instant_free_sysctl_handler,
103 },
104+ {
105+ .procname = "shrink_caches_mb",
106+ .data = &sysctl_shrink_caches_mb,
107+ .maxlen = sizeof(int),
108+ .mode = 0644,
109+ .proc_handler = shrink_caches_sysctl_handler,
110+ .extra1 = &one,
111+ },
112 #ifdef CONFIG_COMPACTION
113 {
114 .procname = "compact_memory",
115diff --git a/mm/vmscan.c b/mm/vmscan.c
116index 30a88b945a44..1198e74d1860 100644
117--- a/mm/vmscan.c
118+++ b/mm/vmscan.c
119@@ -3525,7 +3525,6 @@ void wakeup_kswapd(struct zone *zone, int order, enum zone_type classzone_idx)
120 wake_up_interruptible(&pgdat->kswapd_wait);
121 }
122
123-#ifdef CONFIG_HIBERNATION
124 /*
125 * Try to free `nr_to_reclaim' of memory, system-wide, and return the number of
126 * freed pages.
127@@ -3564,7 +3563,6 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim)
128
129 return nr_reclaimed;
130 }
131-#endif /* CONFIG_HIBERNATION */
132
133 /* It's optimal to keep kswapds on the same CPUs as their memory, but
134 not required for correctness. So if the last cpu in a node goes
135--
1362.12.1
137
diff --git a/patches/boot_time_opt_guest/guest_boot_time_opt.scc b/patches/boot_time_opt_guest/guest_boot_time_opt.scc
new file mode 100644
index 0000000..3636c01
--- /dev/null
+++ b/patches/boot_time_opt_guest/guest_boot_time_opt.scc
@@ -0,0 +1,19 @@
1define KFEATURE_DESCRIPTION "Boot time optimization changes ported from ClearLinux , https://github.com/clearlinux-pkgs/linux-kvm"
2define KFEATURE_COMPATIBILITY all
3
4patch 0103-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch
5patch 0104-fbcon-enable-no-blink-by-default.patch
6patch 0105-vmstats-wakeups.patch
7# Remove patch because it causes ixgvbevf to not initialize correctly in the guest
8#patch 0106-pci-probe.patch
9patch 0107-cgroup.patch
10patch 0108-smpboot-reuse-timer-calibration.patch
11patch 0109-perf.patch
12patch 0110-pci-probe-identify-known-devices.patch
13patch 0111-init-no-wait-for-the-known-devices.patch
14patch 0112-ksm-wakeups.patch
15
16patch 0151-mm-Export-do_madvise.patch
17patch 0152-x86-kvm-Notify-host-to-release-pages.patch
18patch 0153-x86-Return-memory-from-guest-to-host-kernel.patch
19patch 0154-sysctl-vm-Fine-grained-cache-shrinking.patch
diff --git a/patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch b/patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch
new file mode 100644
index 0000000..5133075
--- /dev/null
+++ b/patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch
@@ -0,0 +1,44 @@
1From 1828e68d8f0b99dbe388de4b6703afd90fdd7493 Mon Sep 17 00:00:00 2001
2From: Dragos Motrea <Dragos.Motrea@enea.com>
3Date: Thu, 16 Mar 2017 14:04:17 +0100
4Subject: [PATCH] IPV4: unlock rtnl_mutex before waiting for carrier on
5
6There is a race condition between ip auto configuration and the ethernet
7driver. The ip configuration is taking the rtnl_mutex in the ic_open_devs()
8function and then is waiting 120 seconds for a carrier on at least
9one network device. The driver is locked in the mutex and the carrier on
10is not sent. After 120 seconds, the mutex is unlocked and the driver is
11continuing its task execution.
12
13The mutex should be unlocked in the ip auto configuration before waiting the
14carrier on from the ethernet driver.
15
16Signed-off-by: Dragos Motrea <Dragos.Motrea@enea.com>
17---
18 net/ipv4/ipconfig.c | 3 +--
19 1 file changed, 1 insertion(+), 2 deletions(-)
20
21diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
22index 071a785..55c95cc 100644
23--- a/net/ipv4/ipconfig.c
24+++ b/net/ipv4/ipconfig.c
25@@ -254,6 +254,7 @@ static int __init ic_open_devs(void)
26 dev->name, able, d->xid);
27 }
28 }
29+ rtnl_unlock();
30
31 /* no point in waiting if we could not bring up at least one device */
32 if (!ic_first_dev)
33@@ -281,8 +282,6 @@ static int __init ic_open_devs(void)
34 next_msg = jiffies + msecs_to_jiffies(CONF_CARRIER_TIMEOUT/12);
35 }
36 have_carrier:
37- rtnl_unlock();
38-
39 *last = NULL;
40
41 if (!ic_first_dev) {
42--
432.7.4
44
diff --git a/patches/ipv4/ipv4wait.scc b/patches/ipv4/ipv4wait.scc
new file mode 100644
index 0000000..93e8cdc
--- /dev/null
+++ b/patches/ipv4/ipv4wait.scc
@@ -0,0 +1 @@
patch 0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch
diff --git a/patches/kernel_startend_msg/0001-printk-add-Enea-Linux-boot-start-end-messages.patch b/patches/kernel_startend_msg/0001-printk-add-Enea-Linux-boot-start-end-messages.patch
new file mode 100644
index 0000000..0fa8756
--- /dev/null
+++ b/patches/kernel_startend_msg/0001-printk-add-Enea-Linux-boot-start-end-messages.patch
@@ -0,0 +1,95 @@
1From b91730ba705d151577974d5fb9f5371a4569b467 Mon Sep 17 00:00:00 2001
2From: Adrian Calianu <adrian.calianu@enea.com>
3Date: Tue, 6 Jun 2017 15:47:54 +0200
4Subject: [PATCH 1/1] printk: add Enea Linux boot start/end messages
5
6Signed-off-by: Adrian Calianu <adrian.calianu@enea.com>
7---
8 arch/x86/boot/compressed/misc.c | 23 ++++++++++++-----------
9 init/main.c | 4 +++-
10 2 files changed, 15 insertions(+), 12 deletions(-)
11
12diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
13index b3c5a5f0..9fdf3c6 100644
14--- a/arch/x86/boot/compressed/misc.c
15+++ b/arch/x86/boot/compressed/misc.c
16@@ -202,10 +202,10 @@ static void handle_relocations(void *output, unsigned long output_len,
17 delta = virt_addr - LOAD_PHYSICAL_ADDR;
18
19 if (!delta) {
20- debug_putstr("No relocation needed... ");
21+ /* debug_putstr("No relocation needed... "); */
22 return;
23 }
24- debug_putstr("Performing relocations... ");
25+ /* debug_putstr("Performing relocations... "); */
26
27 /*
28 * Process relocations: 32 bit relocations first then 64 bit after.
29@@ -286,7 +286,7 @@ static void parse_elf(void *output)
30 return;
31 }
32
33- debug_putstr("Parsing ELF... ");
34+ /* debug_putstr("Parsing ELF... ");*/
35
36 phdrs = malloc(sizeof(*phdrs) * ehdr.e_phnum);
37 if (!phdrs)
38@@ -360,17 +360,18 @@ asmlinkage __visible void *extract_kernel(void *rmode, memptr heap,
39 cols = boot_params->screen_info.orig_video_cols;
40
41 console_init();
42- debug_putstr("early console in extract_kernel\n");
43+ /* debug_putstr("early console in extract_kernel\n");*/
44+ debug_putstr("\n");debug_putstr("Enea Linux kernel boot start\n");
45
46 free_mem_ptr = heap; /* Heap */
47 free_mem_end_ptr = heap + BOOT_HEAP_SIZE;
48
49 /* Report initial kernel position details. */
50- debug_putaddr(input_data);
51- debug_putaddr(input_len);
52- debug_putaddr(output);
53- debug_putaddr(output_len);
54- debug_putaddr(kernel_total_size);
55+ /*debug_putaddr(input_data); */
56+ /*debug_putaddr(input_len); */
57+ /*debug_putaddr(output); */
58+ /*debug_putaddr(output_len); */
59+ /*debug_putaddr(kernel_total_size);*/
60
61 /*
62 * The memory hole needed for the kernel is the larger of either
63@@ -401,11 +402,11 @@ asmlinkage __visible void *extract_kernel(void *rmode, memptr heap,
64 error("Destination virtual address changed when not relocatable");
65 #endif
66
67- debug_putstr("\nDecompressing Linux... ");
68+ /*debug_putstr("\nDecompressing Linux... ");*/
69 __decompress(input_data, input_len, NULL, NULL, output, output_len,
70 NULL, error);
71 parse_elf(output);
72 handle_relocations(output, output_len, virt_addr);
73- debug_putstr("done.\nBooting the kernel.\n");
74+ /*debug_putstr("done.\nBooting the kernel.\n");*/
75 return output;
76 }
77diff --git a/init/main.c b/init/main.c
78index 8358cbe..613caa1 100644
79--- a/init/main.c
80+++ b/init/main.c
81@@ -976,8 +976,10 @@ static int __ref kernel_init(void *unused)
82 if (!try_to_run_init_process("/sbin/init") ||
83 !try_to_run_init_process("/etc/init") ||
84 !try_to_run_init_process("/bin/init") ||
85- !try_to_run_init_process("/bin/sh"))
86+ !try_to_run_init_process("/bin/sh")) {
87+ printk(KERN_EMERG "Enea Linux kernel boot end\n");
88 return 0;
89+ }
90
91 panic("No working init found. Try passing init= option to kernel. "
92 "See Linux Documentation/init.txt for guidance.");
93--
942.7.4
95
diff --git a/patches/kernel_startend_msg/kernel_startend_msg.scc b/patches/kernel_startend_msg/kernel_startend_msg.scc
new file mode 100644
index 0000000..e6da49c
--- /dev/null
+++ b/patches/kernel_startend_msg/kernel_startend_msg.scc
@@ -0,0 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable the kernel to output messages when it starts and ends booting"
2define KFEATURE_COMPATIBILITY all
3
4patch 0001-printk-add-Enea-Linux-boot-start-end-messages.patch