summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrian Calianu <adrian.calianu@enea.com>2017-09-05 17:22:26 +0200
committerAdrian Calianu <adrian.calianu@enea.com>2017-09-05 17:22:26 +0200
commitc47f2bfcefee5d746dd72af26faec2b44ff553b5 (patch)
treeaa9ac21407f71af2520aec4d1dc4248217e83c11
parent85a500385477e07d144fc3fcfa4ec62e6aabc8e8 (diff)
downloadenea-kernel-cache-c47f2bfcefee5d746dd72af26faec2b44ff553b5.tar.gz
add new kernel features needed by guest
Signed-off-by: Adrian Calianu <adrian.calianu@enea.com>
-rw-r--r--bsp/intel-common/intel-corei7-64-virtualization.scc14
-rw-r--r--features/6lowpan/6lowpan_n.cfg1
-rw-r--r--features/6lowpan/6lowpan_n.scc5
-rw-r--r--features/bcma/bcma_n.cfg9
-rw-r--r--features/bcma/bcma_n.scc4
-rw-r--r--features/btrfs/btrfs_n.cfg8
-rw-r--r--features/btrfs/btrfs_n.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/debug/debug_kernel_n.cfg2
-rw-r--r--features/debug/debug_kernel_y.cfg1
-rw-r--r--features/dmiid/dmiid_n.cfg1
-rw-r--r--features/dmiid/dmiid_n.scc5
-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/intel-e1xxxx/e100_n.cfg1
-rw-r--r--features/intel-e1xxxx/e100_n.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/ixgbevf/ixgbevf_y.cfg1
-rw-r--r--features/ixgbevf/ixgbevf_y.scc4
-rw-r--r--features/kgdb/kgdb_n.scc5
-rw-r--r--features/kvm/guest_kvm_y.cfg12
-rw-r--r--features/kvm/guest_kvm_y.scc4
-rw-r--r--features/kvm/host_n.cfg2
-rw-r--r--features/kvm/host_n.scc5
-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/loopdev/loopdev_n.cfg2
-rw-r--r--features/loopdev/loopdev_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/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.cfg5
-rw-r--r--features/netfilter/netfilter_n.cfg222
-rw-r--r--features/netfilter/netfilter_n.scc4
-rw-r--r--features/nfs/nfs_n.cfg44
-rw-r--r--features/nfs/nfs_n.scc4
-rw-r--r--features/parport/parport_n.cfg8
-rw-r--r--features/parport/parport_n.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/perf/perf_n.cfg2
-rw-r--r--features/perf/perf_n.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.cfg1
-rw-r--r--features/ppp/ppp_n.cfg10
-rw-r--r--features/ppp/ppp_n.scc4
-rw-r--r--features/prockcore/prockcore_n.cfg1
-rw-r--r--features/prockcore/prockcore_n.scc4
-rw-r--r--features/reduced_kernel_footprint_guest/reduced_kernel_footprint_guest.scc75
-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/thermal/thermal_n.cfg4
-rw-r--r--features/thermal/thermal_n.scc5
-rw-r--r--features/udev/udev_n.cfg1
-rw-r--r--features/udev/udev_n.scc5
-rw-r--r--features/vga/vga_n.cfg1
-rw-r--r--features/vga/vga_n.scc5
-rw-r--r--features/watchdog/watchdog_n.cfg1
-rw-r--r--features/watchdog/watchdog_n.scc5
-rw-r--r--features/x86_platform/x86_platform_n.cfg1
-rw-r--r--features/x86_platform/x86_platform_n.scc5
-rw-r--r--ktypes/virtualization/virtualization.scc4
-rw-r--r--patches/boot_time_opt/0102-cpuidle-skip-synchronize_rcu-on-single-CPU-systems.patch34
-rw-r--r--patches/boot_time_opt/0103-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch38
-rw-r--r--patches/boot_time_opt/0104-fbcon-enable-no-blink-by-default.patch26
-rw-r--r--patches/boot_time_opt/0105-vmstats-wakeups.patch28
-rw-r--r--patches/boot_time_opt/0106-pci-probe.patch123
-rw-r--r--patches/boot_time_opt/0107-cgroup.patch107
-rw-r--r--patches/boot_time_opt/0108-smpboot-reuse-timer-calibration.patch45
-rw-r--r--patches/boot_time_opt/0109-perf.patch28
-rw-r--r--patches/boot_time_opt/0110-pci-probe-identify-known-devices.patch190
-rw-r--r--patches/boot_time_opt/0111-init-no-wait-for-the-known-devices.patch39
-rw-r--r--patches/boot_time_opt/0112-ksm-wakeups.patch32
-rw-r--r--patches/boot_time_opt/0113-init-do_mounts-recreate-dev-root.patch42
-rw-r--r--patches/boot_time_opt/0114-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch56
-rw-r--r--patches/boot_time_opt/0152-x86-kvm-Notify-host-to-release-pages.patch18
-rw-r--r--patches/boot_time_opt/guest_boot_time_opt.scc19
-rw-r--r--patches/kernel_startend_msg/0001-printk-add-Enea-Linux-guest-boot-start-end-messages.patch95
-rw-r--r--patches/kernel_startend_msg/kernel_startend_msg.scc2
105 files changed, 1718 insertions, 12 deletions
diff --git a/bsp/intel-common/intel-corei7-64-virtualization.scc b/bsp/intel-common/intel-corei7-64-virtualization.scc
new file mode 100644
index 0000000..c701698
--- /dev/null
+++ b/bsp/intel-common/intel-corei7-64-virtualization.scc
@@ -0,0 +1,14 @@
1# intel-corei7-64-virtualization.scc
2#
3# Virtualization ktype for 64 bit.
4#
5
6define KMACHINE intel-corei7-64
7define KARCH x86_64
8define KTYPE virtualization
9
10include ktypes/virtualization/virtualization.scc
11
12branch intel
13include intel-common-drivers.scc
14include intel-corei7-64.scc
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/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/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/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/debug/debug_kernel_n.cfg b/features/debug/debug_kernel_n.cfg
index 38f20a7..21a77ab 100644
--- a/features/debug/debug_kernel_n.cfg
+++ b/features/debug/debug_kernel_n.cfg
@@ -1,3 +1,4 @@
1CONFIG_DEBUG_KERNEL=n
1CONFIG_DEBUG_INFO=n 2CONFIG_DEBUG_INFO=n
2CONFIG_PCI_DEBUG=n 3CONFIG_PCI_DEBUG=n
3CONFIG_PCIEASPM_DEBUG=n 4CONFIG_PCIEASPM_DEBUG=n
@@ -5,3 +6,4 @@ CONFIG_PNP_DEBUG_MESSAGES=n
5CONFIG_SCHED_DEBUG=n 6CONFIG_SCHED_DEBUG=n
6CONFIG_DEBUG_PREEMPT=n 7CONFIG_DEBUG_PREEMPT=n
7CONFIG_X86_DEBUG_FPU=n 8CONFIG_X86_DEBUG_FPU=n
9CONFIG_DEBUG_KMEMLEAK=n
diff --git a/features/debug/debug_kernel_y.cfg b/features/debug/debug_kernel_y.cfg
index 29399ad..425e7e3 100644
--- a/features/debug/debug_kernel_y.cfg
+++ b/features/debug/debug_kernel_y.cfg
@@ -6,3 +6,4 @@ CONFIG_PNP_DEBUG_MESSAGES=y
6CONFIG_SCHED_DEBUG=y 6CONFIG_SCHED_DEBUG=y
7CONFIG_DEBUG_PREEMPT=y 7CONFIG_DEBUG_PREEMPT=y
8CONFIG_X86_DEBUG_FPU=y 8CONFIG_X86_DEBUG_FPU=y
9CONFIG_DEBUG_KMEMLEAK=y
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/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/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_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/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/kgdb/kgdb_n.scc b/features/kgdb/kgdb_n.scc
index 4b5b0a1..87d5489 100644
--- a/features/kgdb/kgdb_n.scc
+++ b/features/kgdb/kgdb_n.scc
@@ -1,4 +1,5 @@
1define KFEATURE_DESCRIPTION "Enable options required for kgdb support" 1define KFEATURE_DESCRIPTION "Disable kgdb support"
2
2define KFEATURE_COMPATIBILITY all 3define KFEATURE_COMPATIBILITY all
3 4
4kconf non-hardware kgdb_n.cfg 5kconf hardware kgdb_n.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/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/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/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/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/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
index 2b4db2b..9413d2a 100644
--- a/features/netdevices/netdevices_n.cfg
+++ b/features/netdevices/netdevices_n.cfg
@@ -33,6 +33,11 @@ CONFIG_BNXT=n
33CONFIG_BNXT_SRIOV=n 33CONFIG_BNXT_SRIOV=n
34CONFIG_NET_VENDOR_BROCADE=n 34CONFIG_NET_VENDOR_BROCADE=n
35# CONFIG_BNA is not set 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
36# CONFIG_LIQUIDIO is not set 41# CONFIG_LIQUIDIO is not set
37CONFIG_NET_VENDOR_CHELSIO=n 42CONFIG_NET_VENDOR_CHELSIO=n
38# CONFIG_CHELSIO_T1 is not set 43# CONFIG_CHELSIO_T1 is not set
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/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/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_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/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/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
index 6052f83..6248144 100644
--- a/features/powermanagement/powermanagement_n.cfg
+++ b/features/powermanagement/powermanagement_n.cfg
@@ -1,3 +1,4 @@
1CONFIG_PM=n
1CONFIG_SUSPEND=n 2CONFIG_SUSPEND=n
2CONFIG_SUSPEND_FREEZER=n 3CONFIG_SUSPEND_FREEZER=n
3CONFIG_PM_SLEEP=n 4CONFIG_PM_SLEEP=n
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/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/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/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/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/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/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/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/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/ktypes/virtualization/virtualization.scc b/ktypes/virtualization/virtualization.scc
new file mode 100644
index 0000000..16e0b62
--- /dev/null
+++ b/ktypes/virtualization/virtualization.scc
@@ -0,0 +1,4 @@
1
2include ktypes/standard/standard.scc
3
4include cfg/virtio.scc
diff --git a/patches/boot_time_opt/0102-cpuidle-skip-synchronize_rcu-on-single-CPU-systems.patch b/patches/boot_time_opt/0102-cpuidle-skip-synchronize_rcu-on-single-CPU-systems.patch
new file mode 100644
index 0000000..1de2a6b
--- /dev/null
+++ b/patches/boot_time_opt/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/0103-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch b/patches/boot_time_opt/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/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/0104-fbcon-enable-no-blink-by-default.patch b/patches/boot_time_opt/0104-fbcon-enable-no-blink-by-default.patch
new file mode 100644
index 0000000..715c195
--- /dev/null
+++ b/patches/boot_time_opt/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/0105-vmstats-wakeups.patch b/patches/boot_time_opt/0105-vmstats-wakeups.patch
new file mode 100644
index 0000000..09b109a
--- /dev/null
+++ b/patches/boot_time_opt/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/0106-pci-probe.patch b/patches/boot_time_opt/0106-pci-probe.patch
new file mode 100644
index 0000000..5045926
--- /dev/null
+++ b/patches/boot_time_opt/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/0107-cgroup.patch b/patches/boot_time_opt/0107-cgroup.patch
new file mode 100644
index 0000000..d68c686
--- /dev/null
+++ b/patches/boot_time_opt/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/0108-smpboot-reuse-timer-calibration.patch b/patches/boot_time_opt/0108-smpboot-reuse-timer-calibration.patch
new file mode 100644
index 0000000..48be94a
--- /dev/null
+++ b/patches/boot_time_opt/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/0109-perf.patch b/patches/boot_time_opt/0109-perf.patch
new file mode 100644
index 0000000..75f50f6
--- /dev/null
+++ b/patches/boot_time_opt/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/0110-pci-probe-identify-known-devices.patch b/patches/boot_time_opt/0110-pci-probe-identify-known-devices.patch
new file mode 100644
index 0000000..742a045
--- /dev/null
+++ b/patches/boot_time_opt/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/0111-init-no-wait-for-the-known-devices.patch b/patches/boot_time_opt/0111-init-no-wait-for-the-known-devices.patch
new file mode 100644
index 0000000..701a18d
--- /dev/null
+++ b/patches/boot_time_opt/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/0112-ksm-wakeups.patch b/patches/boot_time_opt/0112-ksm-wakeups.patch
new file mode 100644
index 0000000..b131e3f
--- /dev/null
+++ b/patches/boot_time_opt/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/0113-init-do_mounts-recreate-dev-root.patch b/patches/boot_time_opt/0113-init-do_mounts-recreate-dev-root.patch
new file mode 100644
index 0000000..047eddb
--- /dev/null
+++ b/patches/boot_time_opt/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/0114-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch b/patches/boot_time_opt/0114-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch
new file mode 100644
index 0000000..dee9058
--- /dev/null
+++ b/patches/boot_time_opt/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/0152-x86-kvm-Notify-host-to-release-pages.patch b/patches/boot_time_opt/0152-x86-kvm-Notify-host-to-release-pages.patch
index 5f44930..ff9d8c0 100644
--- 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
@@ -132,18 +132,18 @@ index c1095cdc0fe2..d8ae774fa042 100644
132 { 132 {
133 .procname = "compact_memory", 133 .procname = "compact_memory",
134diff --git a/mm/Makefile b/mm/Makefile 134diff --git a/mm/Makefile b/mm/Makefile
135index 295bd7a..6455723 100644 135index 295bd7a9f76b..651ce0aff140 100644
136--- a/mm/Makefile 136--- a/mm/Makefile
137+++ b/mm/Makefile 137+++ b/mm/Makefile
138@@ -47,6 +47,8 @@ else 138@@ -37,7 +37,7 @@ obj-y := filemap.o mempool.o oom_kill.o \
139 obj-y += bootmem.o 139 mm_init.o mmu_context.o percpu.o slab_common.o \
140 endif 140 compaction.o vmacache.o \
141 interval_tree.o list_lru.o workingset.o \
142- prfile.o debug.o $(mmu-y)
143+ prfile.o debug.o kvm.o $(mmu-y)
144
145 obj-y += init-mm.o
141 146
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 147diff --git a/mm/kvm.c b/mm/kvm.c
148new file mode 100644 148new file mode 100644
149index 000000000000..8945f6a311b9 149index 000000000000..8945f6a311b9
diff --git a/patches/boot_time_opt/guest_boot_time_opt.scc b/patches/boot_time_opt/guest_boot_time_opt.scc
new file mode 100644
index 0000000..3636c01
--- /dev/null
+++ b/patches/boot_time_opt/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/kernel_startend_msg/0001-printk-add-Enea-Linux-guest-boot-start-end-messages.patch b/patches/kernel_startend_msg/0001-printk-add-Enea-Linux-guest-boot-start-end-messages.patch
new file mode 100644
index 0000000..ce5fb21
--- /dev/null
+++ b/patches/kernel_startend_msg/0001-printk-add-Enea-Linux-guest-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("\nEnea Linux guest 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 guest 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
index e6da49c..ae49e89 100644
--- a/patches/kernel_startend_msg/kernel_startend_msg.scc
+++ b/patches/kernel_startend_msg/kernel_startend_msg.scc
@@ -1,4 +1,4 @@
1define KFEATURE_DESCRIPTION "Enable the kernel to output messages when it starts and ends booting" 1define KFEATURE_DESCRIPTION "Enable the kernel to output messages when it starts and ends booting"
2define KFEATURE_COMPATIBILITY all 2define KFEATURE_COMPATIBILITY all
3 3
4patch 0001-printk-add-Enea-Linux-boot-start-end-messages.patch 4patch 0001-printk-add-Enea-Linux-guest-boot-start-end-messages.patch