diff options
120 files changed, 2373 insertions, 0 deletions
diff --git a/6lowpan/6lowpan_n.cfg b/6lowpan/6lowpan_n.cfg new file mode 100644 index 0000000..1bf0778 --- /dev/null +++ b/6lowpan/6lowpan_n.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_6LOWPAN=n | |||
diff --git a/6lowpan/6lowpan_n.scc b/6lowpan/6lowpan_n.scc new file mode 100644 index 0000000..826fdc2 --- /dev/null +++ b/6lowpan/6lowpan_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable 6LoWPAN support" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware 6lowpan_n.cfg | ||
@@ -0,0 +1,96 @@ | |||
1 | A features/6lowpan/6lowpan_n.cfg | ||
2 | A features/6lowpan/6lowpan_n.scc | ||
3 | A features/bcma/bcma_n.cfg | ||
4 | A features/bcma/bcma_n.scc | ||
5 | A features/btrfs/btrfs_n.cfg | ||
6 | A features/btrfs/btrfs_n.scc | ||
7 | A features/compilechecks/compilechecks_n.cfg | ||
8 | A features/compilechecks/compilechecks_n.scc | ||
9 | A features/cpu_freq/cpu_freq_n.cfg | ||
10 | A features/cpu_freq/cpu_freq_n.scc | ||
11 | A features/dmiid/dmiid_n.cfg | ||
12 | A features/dmiid/dmiid_n.scc | ||
13 | A features/hwmon/hwmon_n.cfg | ||
14 | A features/hwmon/hwmon_n.scc | ||
15 | A features/i2csupport/i2csupport_n.cfg | ||
16 | A features/i2csupport/i2csupport_n.scc | ||
17 | A features/intel-e1xxxx/e100_n.cfg | ||
18 | A features/intel-e1xxxx/e100_n.scc | ||
19 | A features/intel-e1xxxx/e1xxxx_n.cfg | ||
20 | A features/intel-e1xxxx/e1xxxx_n.scc | ||
21 | A features/isdn/isdn_n.cfg | ||
22 | A features/isdn/isdn_n.scc | ||
23 | A features/ixgbevf/ixgbevf_y.cfg | ||
24 | A features/ixgbevf/ixgbevf_y.scc | ||
25 | A features/kvm/guest_kvm_y.cfg | ||
26 | A features/kvm/guest_kvm_y.scc | ||
27 | A features/kvm/host_n.cfg | ||
28 | A features/kvm/host_n.scc | ||
29 | A features/kvm/virtFS_y.cfg | ||
30 | A features/kvm/virtFS_y.scc | ||
31 | A features/kvm/virtio_balloon_y.cfg | ||
32 | A features/kvm/virtio_balloon_y.scc | ||
33 | A features/kvm/virtio_caif_y.cfg | ||
34 | A features/kvm/virtio_caif_y.scc | ||
35 | A features/kvm/virtio_input_y.cfg | ||
36 | A features/kvm/virtio_input_y.scc | ||
37 | A features/kvm/virtio_pci_legacy_y.cfg | ||
38 | A features/kvm/virtio_pci_legacy_y.scc | ||
39 | A features/kvm/virtio_y.cfg | ||
40 | A features/kvm/virtio_y.scc | ||
41 | A features/loopdev/loopdev_n.cfg | ||
42 | A features/loopdev/loopdev_n.scc | ||
43 | A features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.cfg | ||
44 | A features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.scc | ||
45 | A features/netblkdev/netblkdev_n.cfg | ||
46 | A features/netblkdev/netblkdev_n.scc | ||
47 | A features/netconsole/netconsole_n.cfg | ||
48 | A features/netconsole/netconsole_n.scc | ||
49 | A features/netfilter/netfilter_n.cfg | ||
50 | A features/netfilter/netfilter_n.scc | ||
51 | A features/nfs/nfs_n.cfg | ||
52 | A features/nfs/nfs_n.scc | ||
53 | A features/parport/parport_n.cfg | ||
54 | A features/parport/parport_n.scc | ||
55 | A features/pci/pci_iov_y.cfg | ||
56 | A features/pci/pci_iov_y.scc | ||
57 | A features/pcimodules/pcimodules_n.cfg | ||
58 | A features/pcimodules/pcimodules_n.scc | ||
59 | A features/perf/perf_n.cfg | ||
60 | A features/perf/perf_n.scc | ||
61 | A features/power_supply/power_supply_n.cfg | ||
62 | A features/power_supply/power_supply_n.scc | ||
63 | A features/ppp/ppp_n.cfg | ||
64 | A features/ppp/ppp_n.scc | ||
65 | A features/prockcore/prockcore_n.cfg | ||
66 | A features/prockcore/prockcore_n.scc | ||
67 | A features/reduced_kernel_footprint_guest/reduced_kernel_footprint_guest.scc | ||
68 | A features/serio/serio_n.cfg | ||
69 | A features/serio/serio_n.scc | ||
70 | A features/slip/slip_n.cfg | ||
71 | A features/slip/slip_n.scc | ||
72 | A features/thermal/thermal_n.cfg | ||
73 | A features/thermal/thermal_n.scc | ||
74 | A features/udev/udev_n.cfg | ||
75 | A features/udev/udev_n.scc | ||
76 | A features/vga/vga_n.cfg | ||
77 | A features/vga/vga_n.scc | ||
78 | A features/watchdog/watchdog_n.cfg | ||
79 | A features/watchdog/watchdog_n.scc | ||
80 | A features/x86_platform/x86_platform_n.cfg | ||
81 | A features/x86_platform/x86_platform_n.scc | ||
82 | A patches/boot_time_opt/0102-cpuidle-skip-synchronize_rcu-on-single-CPU-systems.patch | ||
83 | A patches/boot_time_opt/0103-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch | ||
84 | A patches/boot_time_opt/0104-fbcon-enable-no-blink-by-default.patch | ||
85 | A patches/boot_time_opt/0105-vmstats-wakeups.patch | ||
86 | A patches/boot_time_opt/0106-pci-probe.patch | ||
87 | A patches/boot_time_opt/0107-cgroup.patch | ||
88 | A patches/boot_time_opt/0108-smpboot-reuse-timer-calibration.patch | ||
89 | A patches/boot_time_opt/0109-perf.patch | ||
90 | A patches/boot_time_opt/0110-pci-probe-identify-known-devices.patch | ||
91 | A patches/boot_time_opt/0111-init-no-wait-for-the-known-devices.patch | ||
92 | A patches/boot_time_opt/0112-ksm-wakeups.patch | ||
93 | A patches/boot_time_opt/0113-init-do_mounts-recreate-dev-root.patch | ||
94 | A patches/boot_time_opt/0114-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch | ||
95 | A patches/boot_time_opt/guest_boot_time_opt.scc | ||
96 | A patches/kernel_startend_msg/0001-printk-add-Enea-Linux-guest-boot-start-end-messages.patch | ||
diff --git a/bcma/bcma_n.cfg b/bcma/bcma_n.cfg new file mode 100644 index 0000000..ad052a3 --- /dev/null +++ b/bcma/bcma_n.cfg | |||
@@ -0,0 +1,9 @@ | |||
1 | # | ||
2 | # Broadcom specific AMBA | ||
3 | # | ||
4 | CONFIG_BCMA=n | ||
5 | CONFIG_BCMA_HOST_PCI_POSSIBLE=n | ||
6 | CONFIG_BCMA_HOST_PCI=n | ||
7 | # CONFIG_BCMA_HOST_SOC is not set | ||
8 | CONFIG_BCMA_DRIVER_PCI=n | ||
9 | CONFIG_BCMA_DRIVER_GMAC_CMN=n | ||
diff --git a/bcma/bcma_n.scc b/bcma/bcma_n.scc new file mode 100644 index 0000000..9cd6a4b --- /dev/null +++ b/bcma/bcma_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable bcma support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware bcma_n.cfg | ||
diff --git a/btrfs/btrfs_n.cfg b/btrfs/btrfs_n.cfg new file mode 100644 index 0000000..7322f27 --- /dev/null +++ b/btrfs/btrfs_n.cfg | |||
@@ -0,0 +1,8 @@ | |||
1 | CONFIG_BTRFS_FS=n | ||
2 | CONFIG_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 | ||
7 | CONFIG_XOR_BLOCKS=n | ||
8 | CONFIG_RAID6_PQ=n | ||
diff --git a/btrfs/btrfs_n.scc b/btrfs/btrfs_n.scc new file mode 100644 index 0000000..638f87f --- /dev/null +++ b/btrfs/btrfs_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable btrfs support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware btrfs_n.cfg | ||
diff --git a/compilechecks/compilechecks_n.cfg b/compilechecks/compilechecks_n.cfg new file mode 100644 index 0000000..87263f0 --- /dev/null +++ b/compilechecks/compilechecks_n.cfg | |||
@@ -0,0 +1,6 @@ | |||
1 | CONFIG_ENABLE_WARN_DEPRECATED=n | ||
2 | CONFIG_ENABLE_MUST_CHECK=n | ||
3 | CONFIG_UNUSED_SYMBOLS=n | ||
4 | CONFIG_DEBUG_FS=n | ||
5 | CONFIG_SECTION_MISMATCH_WARN_ONLY=n | ||
6 | CONFIG_FRAME_POINTER=n | ||
diff --git a/compilechecks/compilechecks_n.scc b/compilechecks/compilechecks_n.scc new file mode 100644 index 0000000..cd3c68a --- /dev/null +++ b/compilechecks/compilechecks_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable compile checks support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware compilechecks_n.cfg | ||
diff --git a/cpu_freq/cpu_freq_n.cfg b/cpu_freq/cpu_freq_n.cfg new file mode 100644 index 0000000..51a9713 --- /dev/null +++ b/cpu_freq/cpu_freq_n.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_CPU_FREQ=n | |||
diff --git a/cpu_freq/cpu_freq_n.scc b/cpu_freq/cpu_freq_n.scc new file mode 100644 index 0000000..b38ee5f --- /dev/null +++ b/cpu_freq/cpu_freq_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable CPU frequency scaling" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware cpu_freq_n.cfg | ||
diff --git a/dmiid/dmiid_n.cfg b/dmiid/dmiid_n.cfg new file mode 100644 index 0000000..61c1980 --- /dev/null +++ b/dmiid/dmiid_n.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_DMIID=n | |||
diff --git a/dmiid/dmiid_n.scc b/dmiid/dmiid_n.scc new file mode 100644 index 0000000..470d344 --- /dev/null +++ b/dmiid/dmiid_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable DMIID support" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware dmiid_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 | |||
33 | CONFIG_BNXT_SRIOV=n | 33 | CONFIG_BNXT_SRIOV=n |
34 | CONFIG_NET_VENDOR_BROCADE=n | 34 | CONFIG_NET_VENDOR_BROCADE=n |
35 | # CONFIG_BNA is not set | 35 | # CONFIG_BNA is not set |
36 | CONFIG_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 |
37 | CONFIG_NET_VENDOR_CHELSIO=n | 42 | CONFIG_NET_VENDOR_CHELSIO=n |
38 | # CONFIG_CHELSIO_T1 is not set | 43 | # CONFIG_CHELSIO_T1 is not set |
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 @@ | |||
1 | CONFIG_PM=n | ||
1 | CONFIG_SUSPEND=n | 2 | CONFIG_SUSPEND=n |
2 | CONFIG_SUSPEND_FREEZER=n | 3 | CONFIG_SUSPEND_FREEZER=n |
3 | CONFIG_PM_SLEEP=n | 4 | CONFIG_PM_SLEEP=n |
diff --git a/hwmon/hwmon_n.cfg b/hwmon/hwmon_n.cfg new file mode 100644 index 0000000..617d8f5 --- /dev/null +++ b/hwmon/hwmon_n.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_HWMON=n | |||
diff --git a/hwmon/hwmon_n.scc b/hwmon/hwmon_n.scc new file mode 100644 index 0000000..633a107 --- /dev/null +++ b/hwmon/hwmon_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable hardware monitor support" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware hwmon_n.cfg | ||
diff --git a/i2csupport/i2csupport_n.cfg b/i2csupport/i2csupport_n.cfg new file mode 100644 index 0000000..30c4a3e --- /dev/null +++ b/i2csupport/i2csupport_n.cfg | |||
@@ -0,0 +1,80 @@ | |||
1 | CONFIG_REGMAP=n | ||
2 | CONFIG_REGMAP_I2C=n | ||
3 | # | ||
4 | # EEPROM support | ||
5 | # | ||
6 | CONFIG_EEPROM_AT24=n | ||
7 | # | ||
8 | # I2C support | ||
9 | # | ||
10 | CONFIG_I2C=n | ||
11 | CONFIG_ACPI_I2C_OPREGION=n | ||
12 | CONFIG_I2C_BOARDINFO=n | ||
13 | CONFIG_I2C_COMPAT=n | ||
14 | # CONFIG_I2C_CHARDEV is not set | ||
15 | # CONFIG_I2C_MUX is not set | ||
16 | CONFIG_I2C_HELPER_AUTO=n | ||
17 | CONFIG_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 | ||
31 | CONFIG_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 | # | ||
80 | CONFIG_RTC_I2C_AND_SPI=n | ||
diff --git a/i2csupport/i2csupport_n.scc b/i2csupport/i2csupport_n.scc new file mode 100644 index 0000000..ca127b1 --- /dev/null +++ b/i2csupport/i2csupport_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable i2c support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware i2csupport_n.cfg | ||
diff --git a/intel-e1xxxx/e100_n.cfg b/intel-e1xxxx/e100_n.cfg new file mode 100644 index 0000000..dab91be --- /dev/null +++ b/intel-e1xxxx/e100_n.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_E100=n | |||
diff --git a/intel-e1xxxx/e100_n.scc b/intel-e1xxxx/e100_n.scc new file mode 100644 index 0000000..bdf9995 --- /dev/null +++ b/intel-e1xxxx/e100_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Build E100 support as a module" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware e100_n.cfg | ||
diff --git a/intel-e1xxxx/e1xxxx_m.cfg b/intel-e1xxxx/e1xxxx_m.cfg new file mode 100644 index 0000000..c05e8c6 --- /dev/null +++ b/intel-e1xxxx/e1xxxx_m.cfg | |||
@@ -0,0 +1,3 @@ | |||
1 | CONFIG_E1000=m | ||
2 | CONFIG_E1000E=m | ||
3 | CONFIG_E1000E_HWTS=m | ||
diff --git a/intel-e1xxxx/e1xxxx_m.scc b/intel-e1xxxx/e1xxxx_m.scc new file mode 100644 index 0000000..d8a8f16 --- /dev/null +++ b/intel-e1xxxx/e1xxxx_m.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Build E1xxxx drivers as modules" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware e1xxxx_m.cfg | ||
diff --git a/intel-e1xxxx/e1xxxx_n.cfg b/intel-e1xxxx/e1xxxx_n.cfg new file mode 100644 index 0000000..d12c714 --- /dev/null +++ b/intel-e1xxxx/e1xxxx_n.cfg | |||
@@ -0,0 +1,3 @@ | |||
1 | CONFIG_E1000=n | ||
2 | CONFIG_E1000E=n | ||
3 | CONFIG_E1000E_HWTS=n | ||
diff --git a/intel-e1xxxx/e1xxxx_n.scc b/intel-e1xxxx/e1xxxx_n.scc new file mode 100644 index 0000000..3d2b0f1 --- /dev/null +++ b/intel-e1xxxx/e1xxxx_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Build E1xxxx drivers as modules" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware e1xxxx_n.cfg | ||
diff --git a/isdn/isdn_n.cfg b/isdn/isdn_n.cfg new file mode 100644 index 0000000..d17ce70 --- /dev/null +++ b/isdn/isdn_n.cfg | |||
@@ -0,0 +1,4 @@ | |||
1 | CONFIG_ISDN=n | ||
2 | # CONFIG_ISDN_I4L is not set | ||
3 | CONFIG_ISDN_CAPI=n | ||
4 | CONFIG_CAPI_TRACE=n | ||
diff --git a/isdn/isdn_n.scc b/isdn/isdn_n.scc new file mode 100644 index 0000000..53404e7 --- /dev/null +++ b/isdn/isdn_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable isdn support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware isdn_n.cfg | ||
diff --git a/ixgbevf/ixgbevf_y.cfg b/ixgbevf/ixgbevf_y.cfg new file mode 100644 index 0000000..26ca642 --- /dev/null +++ b/ixgbevf/ixgbevf_y.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_IXGBEVF=y | |||
diff --git a/ixgbevf/ixgbevf_y.scc b/ixgbevf/ixgbevf_y.scc new file mode 100644 index 0000000..4772d88 --- /dev/null +++ b/ixgbevf/ixgbevf_y.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Enable virtual functions for Intel 10G ports" | ||
2 | define KFEATURE_COMPATIBILITY board | ||
3 | |||
4 | kconf hardware ixgbevf_y.cfg | ||
diff --git a/kvm/guest_kvm_y.cfg b/kvm/guest_kvm_y.cfg new file mode 100644 index 0000000..95dfb75 --- /dev/null +++ b/kvm/guest_kvm_y.cfg | |||
@@ -0,0 +1,12 @@ | |||
1 | HYPERVISOR_GUEST=y | ||
2 | CONFIG_KVM_GUEST=y | ||
3 | CONFIG_KVM_DEBUG_FS=n | ||
4 | CONFIG_PARAVIRT_TIME_ACCOUNTING=y | ||
5 | CONFIG_PARAVIRT_CLOCK=y | ||
6 | CONFIG_PARAVIRT=y | ||
7 | CONFIG_PARAVIRT_DEBUG=n | ||
8 | CONFIG_PARAVIRT_SPINLOCKS=y | ||
9 | CONFIG_QUEUED_LOCK_STAT=y | ||
10 | |||
11 | CONFIG_SERIAL_8250=y | ||
12 | CONFIG_SERIAL_8250_CONSOLE=y | ||
diff --git a/kvm/guest_kvm_y.scc b/kvm/guest_kvm_y.scc new file mode 100644 index 0000000..d95413f --- /dev/null +++ b/kvm/guest_kvm_y.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Enable KVM guest support" | ||
2 | define KFEATURE_COMPATIBILITY board | ||
3 | |||
4 | kconf non-hardware guest_kvm_y.cfg | ||
diff --git a/kvm/guest_n.cfg b/kvm/guest_n.cfg new file mode 100644 index 0000000..2a046f8 --- /dev/null +++ b/kvm/guest_n.cfg | |||
@@ -0,0 +1,4 @@ | |||
1 | HYPERVISOR_GUEST=n | ||
2 | CONFIG_PARAVIRT=n | ||
3 | CONFIG_KVM_GUEST=n | ||
4 | CONFIG_VIRTIO=n | ||
diff --git a/kvm/guest_n.scc b/kvm/guest_n.scc new file mode 100644 index 0000000..71020d6 --- /dev/null +++ b/kvm/guest_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable guest support" | ||
2 | define KFEATURE_COMPATIBILITY board | ||
3 | |||
4 | kconf non-hardware guest_n.cfg | ||
5 | |||
diff --git a/kvm/host_n.cfg b/kvm/host_n.cfg new file mode 100644 index 0000000..9c1302a --- /dev/null +++ b/kvm/host_n.cfg | |||
@@ -0,0 +1,2 @@ | |||
1 | CONFIG_VIRTUALIZATION=n | ||
2 | CONFIG_VHOST=n | ||
diff --git a/kvm/host_n.scc b/kvm/host_n.scc new file mode 100644 index 0000000..b4b3cde --- /dev/null +++ b/kvm/host_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable guest support" | ||
2 | define KFEATURE_COMPATIBILITY board | ||
3 | |||
4 | kconf non-hardware host_n.cfg | ||
5 | |||
diff --git a/kvm/qemu-kvm_m.cfg b/kvm/qemu-kvm_m.cfg new file mode 100644 index 0000000..14e6582 --- /dev/null +++ b/kvm/qemu-kvm_m.cfg | |||
@@ -0,0 +1,30 @@ | |||
1 | CONFIG_HIGH_RES_TIMERS=y | ||
2 | CONFIG_HAVE_KVM=y | ||
3 | CONFIG_VIRTUALIZATION=y | ||
4 | CONFIG_PREEMPT_NOTIFIERS=y | ||
5 | CONFIG_MMU_NOTIFIER=y | ||
6 | CONFIG_ANON_INODES=y | ||
7 | CONFIG_HAVE_KVM_IRQCHIP=y | ||
8 | CONFIG_HAVE_KVM_IRQFD=y | ||
9 | CONFIG_IRQ_BYPASS_MANAGER=y | ||
10 | CONFIG_HAVE_KVM_IRQ_BYPASS=y | ||
11 | CONFIG_HAVE_KVM_IRQ_ROUTING=y | ||
12 | CONFIG_HAVE_KVM_EVENTFD=y | ||
13 | CONFIG_KVM_ASYNC_PF=y | ||
14 | CONFIG_USER_RETURN_NOTIFIER=y | ||
15 | CONFIG_KVM_MMIO=y | ||
16 | CONFIG_TASKSTATS=y | ||
17 | CONFIG_TASK_DELAY_ACCT=y | ||
18 | CONFIG_PERF_EVENTS=y | ||
19 | CONFIG_HAVE_KVM_MSI=y | ||
20 | CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y | ||
21 | CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y | ||
22 | CONFIG_KVM_VFIO=y | ||
23 | CONFIG_SRCU=y | ||
24 | |||
25 | CONFIG_KVM=m | ||
26 | CONFIG_KVM_INTEL=m | ||
27 | CONFIG_KVM_AMD=m | ||
28 | CONFIG_KVM_MMU_AUDIT=n | ||
29 | CONFIG_KVM_DEVICE_ASSIGNMENT=n | ||
30 | |||
diff --git a/kvm/qemu-kvm_m.scc b/kvm/qemu-kvm_m.scc new file mode 100644 index 0000000..ad21fa1 --- /dev/null +++ b/kvm/qemu-kvm_m.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Enable KVM host support" | ||
2 | define KFEATURE_COMPATIBILITY board | ||
3 | |||
4 | kconf non-hardware qemu-kvm_m.cfg | ||
diff --git a/kvm/virtFS_y.cfg b/kvm/virtFS_y.cfg new file mode 100644 index 0000000..c9fefa1 --- /dev/null +++ b/kvm/virtFS_y.cfg | |||
@@ -0,0 +1,4 @@ | |||
1 | CONFIG_NET_9P=y | ||
2 | CONFIG_NET_9P_VIRTIO=y | ||
3 | CONFIG_9P_FS=y | ||
4 | CONFIG_9P_FS_POSIX_ACL=y | ||
diff --git a/kvm/virtFS_y.scc b/kvm/virtFS_y.scc new file mode 100644 index 0000000..a3fd078 --- /dev/null +++ b/kvm/virtFS_y.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Enable Plan 9 folder sharing over Virtio - I/O virtualization framework" | ||
2 | define KFEATURE_COMPATIBILITY arch | ||
3 | |||
4 | kconf non-hardware virtFS_y.cfg | ||
diff --git a/kvm/virtio_balloon_y.cfg b/kvm/virtio_balloon_y.cfg new file mode 100644 index 0000000..25119df --- /dev/null +++ b/kvm/virtio_balloon_y.cfg | |||
@@ -0,0 +1,2 @@ | |||
1 | CONFIG_VIRTIO=y | ||
2 | CONFIG_VIRTIO_BALLOON=y | ||
diff --git a/kvm/virtio_balloon_y.scc b/kvm/virtio_balloon_y.scc new file mode 100644 index 0000000..a4f0b97 --- /dev/null +++ b/kvm/virtio_balloon_y.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "virtio support memory ballooning)" | ||
2 | define KFEATURE_COMPATIBILITY arch | ||
3 | |||
4 | kconf non-hardware virtio_balloon_y.cfg | ||
diff --git a/kvm/virtio_caif_y.cfg b/kvm/virtio_caif_y.cfg new file mode 100644 index 0000000..2af936b --- /dev/null +++ b/kvm/virtio_caif_y.cfg | |||
@@ -0,0 +1,5 @@ | |||
1 | CONFIG_CAIF=y | ||
2 | CONFIG_HAS_DMA=y | ||
3 | CONFIG_VHOST_RING=y | ||
4 | CONFIG_VIRTIO=y | ||
5 | CONFIG_CAIF_VIRTIO=y | ||
diff --git a/kvm/virtio_caif_y.scc b/kvm/virtio_caif_y.scc new file mode 100644 index 0000000..04d5ac4 --- /dev/null +++ b/kvm/virtio_caif_y.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "CAIF virtio transport driver" | ||
2 | define KFEATURE_COMPATIBILITY arch | ||
3 | |||
4 | kconf non-hardware guest_caif_y.cfg | ||
diff --git a/kvm/virtio_input_y.cfg b/kvm/virtio_input_y.cfg new file mode 100644 index 0000000..e83d993 --- /dev/null +++ b/kvm/virtio_input_y.cfg | |||
@@ -0,0 +1,2 @@ | |||
1 | CONFIG_VIRTIO=y | ||
2 | CONFIG_VIRTIO_INPUT=y | ||
diff --git a/kvm/virtio_input_y.scc b/kvm/virtio_input_y.scc new file mode 100644 index 0000000..b3e3a9a --- /dev/null +++ b/kvm/virtio_input_y.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "virtio support for input(keyboard, mice...) devices" | ||
2 | define KFEATURE_COMPATIBILITY arch | ||
3 | |||
4 | kconf non-hardware virtio_input_y.cfg | ||
diff --git a/kvm/virtio_pci_legacy_y.cfg b/kvm/virtio_pci_legacy_y.cfg new file mode 100644 index 0000000..4df21c5 --- /dev/null +++ b/kvm/virtio_pci_legacy_y.cfg | |||
@@ -0,0 +1,3 @@ | |||
1 | CONFIG_VIRTIO=y | ||
2 | CONFIG_VIRTIO_PCI=y | ||
3 | CONFIG_VIRTIO_PCI_LEGACY=y | ||
diff --git a/kvm/virtio_pci_legacy_y.scc b/kvm/virtio_pci_legacy_y.scc new file mode 100644 index 0000000..fcdf9e4 --- /dev/null +++ b/kvm/virtio_pci_legacy_y.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "virtio support for leagacy PCI devices" | ||
2 | define KFEATURE_COMPATIBILITY arch | ||
3 | |||
4 | kconf non-hardware virtio_pci_legacy_y.cfg | ||
diff --git a/kvm/virtio_y.cfg b/kvm/virtio_y.cfg new file mode 100644 index 0000000..ff97d75 --- /dev/null +++ b/kvm/virtio_y.cfg | |||
@@ -0,0 +1,28 @@ | |||
1 | CONFIG_VIRTIO=y | ||
2 | |||
3 | CONFIG_VIRTIO_PCI=y | ||
4 | CONFIG_VIRTIO_PCI_LEGACY=n | ||
5 | CONFIG_MIPS_PCI_VIRTIO=n | ||
6 | |||
7 | CONFIG_VIRTIO_NET=y | ||
8 | CONFIG_VIRTIO_BLK=y | ||
9 | CONFIG_SCSI_VIRTIO=y | ||
10 | |||
11 | CONFIG_VIRTIO_CONSOLE=y | ||
12 | |||
13 | CONFIG_VIRTIO_MMIO=y | ||
14 | CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=n | ||
15 | |||
16 | CONFIG_VIRTIO_BALLOON=n | ||
17 | CONFIG_VIRTIO_INPUT=n | ||
18 | |||
19 | CONFIG_HW_RANDOM_VIRTIO=m | ||
20 | |||
21 | CONFIG_CAIF_VIRTIO=n | ||
22 | CONFIG_RPMSG_VIRTIO=n | ||
23 | |||
24 | CONFIG_VSOCKETS=m | ||
25 | CONFIG_VIRTIO_VSOCKETS_COMMON=m | ||
26 | CONFIG_VIRTIO_VSOCKETS=m | ||
27 | |||
28 | CONFIG_DRM_VIRTIO_GPU=m | ||
diff --git a/kvm/virtio_y.scc b/kvm/virtio_y.scc new file mode 100644 index 0000000..a80cfa4 --- /dev/null +++ b/kvm/virtio_y.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "virtio support (core,pci,ring,net,blk,mmio)" | ||
2 | define KFEATURE_COMPATIBILITY arch | ||
3 | |||
4 | kconf non-hardware virtio_y.cfg | ||
diff --git a/loopdev/loopdev_n.cfg b/loopdev/loopdev_n.cfg new file mode 100644 index 0000000..c8d2992 --- /dev/null +++ b/loopdev/loopdev_n.cfg | |||
@@ -0,0 +1,2 @@ | |||
1 | CONFIG_BLK_DEV_LOOP=n | ||
2 | CONFIG_BLK_DEV_CRYPTOLOOP=n | ||
diff --git a/loopdev/loopdev_n.scc b/loopdev/loopdev_n.scc new file mode 100644 index 0000000..3446f2f --- /dev/null +++ b/loopdev/loopdev_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable loopdev support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware loopdev_n.cfg | ||
diff --git a/msdos_fat_nt_fs/msdos_fat_nt_fs_n.cfg b/msdos_fat_nt_fs/msdos_fat_nt_fs_n.cfg new file mode 100644 index 0000000..0b5ca51 --- /dev/null +++ b/msdos_fat_nt_fs/msdos_fat_nt_fs_n.cfg | |||
@@ -0,0 +1,12 @@ | |||
1 | # | ||
2 | # DOS/FAT/NT Filesystems | ||
3 | # | ||
4 | CONFIG_FAT_FS=n | ||
5 | CONFIG_MSDOS_FS=n | ||
6 | CONFIG_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/msdos_fat_nt_fs/msdos_fat_nt_fs_n.scc b/msdos_fat_nt_fs/msdos_fat_nt_fs_n.scc new file mode 100644 index 0000000..49aecac --- /dev/null +++ b/msdos_fat_nt_fs/msdos_fat_nt_fs_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable msdos_fat_nt_fs support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware msdos_fat_nt_fs_n.cfg | ||
diff --git a/netblkdev/netblkdev_n.cfg b/netblkdev/netblkdev_n.cfg new file mode 100644 index 0000000..fb81129 --- /dev/null +++ b/netblkdev/netblkdev_n.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_BLK_DEV_NBD=n | |||
diff --git a/netblkdev/netblkdev_n.scc b/netblkdev/netblkdev_n.scc new file mode 100644 index 0000000..e2efac9 --- /dev/null +++ b/netblkdev/netblkdev_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable netblkdev support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware netblkdev_n.cfg | ||
diff --git a/netconsole/netconsole_n.cfg b/netconsole/netconsole_n.cfg new file mode 100644 index 0000000..f74f073 --- /dev/null +++ b/netconsole/netconsole_n.cfg | |||
@@ -0,0 +1,3 @@ | |||
1 | CONFIG_NETCONSOLE=n | ||
2 | CONFIG_NETPOLL=n | ||
3 | CONFIG_NET_POLL_CONTROLLER=n | ||
diff --git a/netconsole/netconsole_n.scc b/netconsole/netconsole_n.scc new file mode 100644 index 0000000..b6c54da --- /dev/null +++ b/netconsole/netconsole_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable netconsole support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware netconsole_n.cfg | ||
diff --git a/netfilter/netfilter_n.cfg b/netfilter/netfilter_n.cfg new file mode 100644 index 0000000..aebe7a9 --- /dev/null +++ b/netfilter/netfilter_n.cfg | |||
@@ -0,0 +1,222 @@ | |||
1 | CONFIG_IP_ROUTE_CLASSID=n | ||
2 | CONFIG_NETFILTER=n | ||
3 | # CONFIG_NETFILTER_DEBUG is not set | ||
4 | CONFIG_NETFILTER_ADVANCED=n | ||
5 | CONFIG_BRIDGE_NETFILTER=n | ||
6 | |||
7 | # | ||
8 | # Core Netfilter Configuration | ||
9 | # | ||
10 | CONFIG_NETFILTER_INGRESS=n | ||
11 | CONFIG_NETFILTER_NETLINK=n | ||
12 | # CONFIG_NETFILTER_NETLINK_ACCT is not set | ||
13 | CONFIG_NETFILTER_NETLINK_QUEUE=n | ||
14 | CONFIG_NETFILTER_NETLINK_LOG=n | ||
15 | CONFIG_NF_CONNTRACK=n | ||
16 | CONFIG_NF_CONNTRACK_MARK=n | ||
17 | # CONFIG_NF_CONNTRACK_ZONES is not set | ||
18 | CONFIG_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 | ||
23 | CONFIG_NF_CT_PROTO_GRE=n | ||
24 | CONFIG_NF_CT_PROTO_SCTP=n | ||
25 | CONFIG_NF_CT_PROTO_UDPLITE=n | ||
26 | CONFIG_NF_CONNTRACK_AMANDA=n | ||
27 | CONFIG_NF_CONNTRACK_FTP=n | ||
28 | CONFIG_NF_CONNTRACK_H323=n | ||
29 | CONFIG_NF_CONNTRACK_IRC=n | ||
30 | CONFIG_NF_CONNTRACK_BROADCAST=n | ||
31 | CONFIG_NF_CONNTRACK_NETBIOS_NS=n | ||
32 | # CONFIG_NF_CONNTRACK_SNMP is not set | ||
33 | CONFIG_NF_CONNTRACK_PPTP=n | ||
34 | CONFIG_NF_CONNTRACK_SANE=n | ||
35 | CONFIG_NF_CONNTRACK_SIP=n | ||
36 | CONFIG_NF_CONNTRACK_TFTP=n | ||
37 | CONFIG_NF_CT_NETLINK=n | ||
38 | # CONFIG_NF_CT_NETLINK_TIMEOUT is not set | ||
39 | # CONFIG_NETFILTER_NETLINK_GLUE_CT is not set | ||
40 | CONFIG_NF_NAT=n | ||
41 | CONFIG_NF_NAT_NEEDED=n | ||
42 | CONFIG_NF_NAT_PROTO_UDPLITE=n | ||
43 | CONFIG_NF_NAT_PROTO_SCTP=n | ||
44 | CONFIG_NF_NAT_AMANDA=n | ||
45 | CONFIG_NF_NAT_FTP=n | ||
46 | CONFIG_NF_NAT_IRC=n | ||
47 | CONFIG_NF_NAT_SIP=n | ||
48 | CONFIG_NF_NAT_TFTP=n | ||
49 | # CONFIG_NF_NAT_REDIRECT is not set | ||
50 | # CONFIG_NF_TABLES is not set | ||
51 | CONFIG_NETFILTER_XTABLES=n | ||
52 | |||
53 | # | ||
54 | # Xtables combined modules | ||
55 | # | ||
56 | CONFIG_NETFILTER_XT_MARK=n | ||
57 | CONFIG_NETFILTER_XT_CONNMARK=n | ||
58 | |||
59 | # | ||
60 | # Xtables targets | ||
61 | # | ||
62 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=n | ||
63 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=n | ||
64 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=n | ||
65 | CONFIG_NETFILTER_XT_TARGET_CT=n | ||
66 | CONFIG_NETFILTER_XT_TARGET_DSCP=n | ||
67 | CONFIG_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 | ||
71 | CONFIG_NETFILTER_XT_TARGET_MARK=n | ||
72 | CONFIG_NETFILTER_XT_NAT=n | ||
73 | # CONFIG_NETFILTER_XT_TARGET_NETMAP is not set | ||
74 | CONFIG_NETFILTER_XT_TARGET_NFLOG=n | ||
75 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=n | ||
76 | CONFIG_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 | ||
81 | CONFIG_NETFILTER_XT_TARGET_TRACE=n | ||
82 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=n | ||
83 | # CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set | ||
84 | |||
85 | # | ||
86 | # Xtables matches | ||
87 | # | ||
88 | CONFIG_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 | ||
92 | CONFIG_NETFILTER_XT_MATCH_COMMENT=n | ||
93 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=n | ||
94 | # CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set | ||
95 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=n | ||
96 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=n | ||
97 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=n | ||
98 | # CONFIG_NETFILTER_XT_MATCH_CPU is not set | ||
99 | CONFIG_NETFILTER_XT_MATCH_DCCP=n | ||
100 | # CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set | ||
101 | CONFIG_NETFILTER_XT_MATCH_DSCP=n | ||
102 | CONFIG_NETFILTER_XT_MATCH_ECN=n | ||
103 | CONFIG_NETFILTER_XT_MATCH_ESP=n | ||
104 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=n | ||
105 | CONFIG_NETFILTER_XT_MATCH_HELPER=n | ||
106 | CONFIG_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 | ||
110 | CONFIG_NETFILTER_XT_MATCH_LENGTH=n | ||
111 | CONFIG_NETFILTER_XT_MATCH_LIMIT=n | ||
112 | CONFIG_NETFILTER_XT_MATCH_MAC=n | ||
113 | CONFIG_NETFILTER_XT_MATCH_MARK=n | ||
114 | CONFIG_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 | ||
118 | CONFIG_NETFILTER_XT_MATCH_POLICY=n | ||
119 | # CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set | ||
120 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=n | ||
121 | CONFIG_NETFILTER_XT_MATCH_QUOTA=n | ||
122 | # CONFIG_NETFILTER_XT_MATCH_RATEEST is not set | ||
123 | CONFIG_NETFILTER_XT_MATCH_REALM=n | ||
124 | # CONFIG_NETFILTER_XT_MATCH_RECENT is not set | ||
125 | CONFIG_NETFILTER_XT_MATCH_SCTP=n | ||
126 | # CONFIG_NETFILTER_XT_MATCH_SOCKET is not set | ||
127 | CONFIG_NETFILTER_XT_MATCH_STATE=n | ||
128 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=n | ||
129 | CONFIG_NETFILTER_XT_MATCH_STRING=n | ||
130 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=n | ||
131 | # CONFIG_NETFILTER_XT_MATCH_TIME is not set | ||
132 | CONFIG_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 | # | ||
139 | CONFIG_NF_DEFRAG_IPV4=n | ||
140 | CONFIG_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 | ||
144 | CONFIG_NF_REJECT_IPV4=n | ||
145 | CONFIG_NF_NAT_IPV4=n | ||
146 | CONFIG_NF_NAT_MASQUERADE_IPV4=n | ||
147 | CONFIG_NF_NAT_PROTO_GRE=n | ||
148 | CONFIG_NF_NAT_PPTP=n | ||
149 | CONFIG_NF_NAT_H323=n | ||
150 | CONFIG_IP_NF_IPTABLES=n | ||
151 | CONFIG_IP_NF_MATCH_AH=n | ||
152 | CONFIG_IP_NF_MATCH_ECN=n | ||
153 | # CONFIG_IP_NF_MATCH_RPFILTER is not set | ||
154 | CONFIG_IP_NF_MATCH_TTL=n | ||
155 | CONFIG_IP_NF_FILTER=n | ||
156 | CONFIG_IP_NF_TARGET_REJECT=n | ||
157 | # CONFIG_IP_NF_TARGET_SYNPROXY is not set | ||
158 | CONFIG_IP_NF_NAT=n | ||
159 | CONFIG_IP_NF_TARGET_MASQUERADE=n | ||
160 | # CONFIG_IP_NF_TARGET_NETMAP is not set | ||
161 | # CONFIG_IP_NF_TARGET_REDIRECT is not set | ||
162 | CONFIG_IP_NF_MANGLE=n | ||
163 | CONFIG_IP_NF_TARGET_CLUSTERIP=n | ||
164 | CONFIG_IP_NF_TARGET_ECN=n | ||
165 | CONFIG_IP_NF_TARGET_TTL=n | ||
166 | CONFIG_IP_NF_RAW=n | ||
167 | # CONFIG_IP_NF_SECURITY is not set | ||
168 | CONFIG_IP_NF_ARPTABLES=n | ||
169 | CONFIG_IP_NF_ARPFILTER=n | ||
170 | CONFIG_IP_NF_ARP_MANGLE=n | ||
171 | |||
172 | # | ||
173 | # IPv6: Netfilter Configuration | ||
174 | # | ||
175 | CONFIG_NF_DEFRAG_IPV6=n | ||
176 | CONFIG_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 | ||
180 | CONFIG_NF_NAT_IPV6=n | ||
181 | CONFIG_NF_NAT_MASQUERADE_IPV6=n | ||
182 | CONFIG_IP6_NF_IPTABLES=n | ||
183 | # CONFIG_IP6_NF_MATCH_AH is not set | ||
184 | CONFIG_IP6_NF_MATCH_EUI64=n | ||
185 | CONFIG_IP6_NF_MATCH_FRAG=n | ||
186 | CONFIG_IP6_NF_MATCH_OPTS=n | ||
187 | CONFIG_IP6_NF_MATCH_HL=n | ||
188 | CONFIG_IP6_NF_MATCH_IPV6HEADER=n | ||
189 | # CONFIG_IP6_NF_MATCH_MH is not set | ||
190 | # CONFIG_IP6_NF_MATCH_RPFILTER is not set | ||
191 | CONFIG_IP6_NF_MATCH_RT=n | ||
192 | # CONFIG_IP6_NF_TARGET_HL is not set | ||
193 | CONFIG_IP6_NF_FILTER=n | ||
194 | # CONFIG_IP6_NF_TARGET_REJECT is not set | ||
195 | # CONFIG_IP6_NF_TARGET_SYNPROXY is not set | ||
196 | CONFIG_IP6_NF_MANGLE=n | ||
197 | CONFIG_IP6_NF_RAW=n | ||
198 | # CONFIG_IP6_NF_SECURITY is not set | ||
199 | CONFIG_IP6_NF_NAT=n | ||
200 | CONFIG_IP6_NF_TARGET_MASQUERADE=n | ||
201 | # CONFIG_IP6_NF_TARGET_NPT is not set | ||
202 | CONFIG_BRIDGE_NF_EBTABLES=n | ||
203 | CONFIG_BRIDGE_EBT_BROUTE=n | ||
204 | CONFIG_BRIDGE_EBT_T_FILTER=n | ||
205 | CONFIG_BRIDGE_EBT_T_NAT=n | ||
206 | CONFIG_BRIDGE_EBT_802_3=n | ||
207 | CONFIG_BRIDGE_EBT_AMONG=n | ||
208 | CONFIG_BRIDGE_EBT_ARP=n | ||
209 | CONFIG_BRIDGE_EBT_IP=n | ||
210 | CONFIG_BRIDGE_EBT_IP6=n | ||
211 | CONFIG_BRIDGE_EBT_LIMIT=n | ||
212 | CONFIG_BRIDGE_EBT_MARK=n | ||
213 | CONFIG_BRIDGE_EBT_PKTTYPE=n | ||
214 | CONFIG_BRIDGE_EBT_STP=n | ||
215 | CONFIG_BRIDGE_EBT_VLAN=n | ||
216 | CONFIG_BRIDGE_EBT_ARPREPLY=n | ||
217 | CONFIG_BRIDGE_EBT_DNAT=n | ||
218 | CONFIG_BRIDGE_EBT_MARK_T=n | ||
219 | CONFIG_BRIDGE_EBT_REDIRECT=n | ||
220 | CONFIG_BRIDGE_EBT_SNAT=n | ||
221 | CONFIG_BRIDGE_EBT_LOG=n | ||
222 | CONFIG_BRIDGE_EBT_NFLOG=n | ||
diff --git a/netfilter/netfilter_n.scc b/netfilter/netfilter_n.scc new file mode 100644 index 0000000..279aa21 --- /dev/null +++ b/netfilter/netfilter_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable netfilter and conn tracking" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware netfilter_n.cfg | ||
diff --git a/netfilter/netfilter_y.cfg b/netfilter/netfilter_y.cfg new file mode 100644 index 0000000..b1c310e --- /dev/null +++ b/netfilter/netfilter_y.cfg | |||
@@ -0,0 +1,10 @@ | |||
1 | CONFIG_NF_CONNTRACK=y | ||
2 | CONFIG_NF_CONNTRACK_IPV4=y | ||
3 | CONFIG_NF_NAT=y | ||
4 | CONFIG_NETFILTER_XTABLES=y | ||
5 | CONFIG_NETFILTER_XT_NAT=y | ||
6 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y | ||
7 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y | ||
8 | CONFIG_NF_DEFRAG_IPV4=y | ||
9 | CONFIG_NF_CONNTRACK_IPV4=y | ||
10 | CONFIG_NF_NAT_IPV4=y | ||
diff --git a/netfilter/netfilter_y.scc b/netfilter/netfilter_y.scc new file mode 100644 index 0000000..f0e2e01 --- /dev/null +++ b/netfilter/netfilter_y.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Enable netfilter + conn tracking as built-in modules" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware netfilter_y.cfg | ||
diff --git a/nfs/nfs_n.cfg b/nfs/nfs_n.cfg new file mode 100644 index 0000000..a8e60a3 --- /dev/null +++ b/nfs/nfs_n.cfg | |||
@@ -0,0 +1,44 @@ | |||
1 | CONFIG_NETWORK_FILESYSTEMS=n | ||
2 | CONFIG_NFS_FS=n | ||
3 | CONFIG_NFS_V2=n | ||
4 | #CONFIG_NFS_DEF_FILE_IO_SIZE=4096 | ||
5 | CONFIG_NFS_V3=n | ||
6 | # CONFIG_NFS_V3_ACL is not set | ||
7 | CONFIG_NFS_V4=n | ||
8 | # CONFIG_NFS_SWAP is not set | ||
9 | # CONFIG_NFS_V4_1 is not set | ||
10 | CONFIG_ROOT_NFS=n | ||
11 | # CONFIG_NFS_USE_LEGACY_DNS is not set | ||
12 | CONFIG_NFS_USE_KERNEL_DNS=n | ||
13 | CONFIG_NFSD=n | ||
14 | CONFIG_NFSD_V3=n | ||
15 | # CONFIG_NFSD_V3_ACL is not set | ||
16 | CONFIG_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 | ||
22 | CONFIG_GRACE_PERIOD=n | ||
23 | CONFIG_LOCKD=n | ||
24 | CONFIG_LOCKD_V4=n | ||
25 | CONFIG_NFS_COMMON=n | ||
26 | CONFIG_SUNRPC=n | ||
27 | CONFIG_SUNRPC_GSS=n | ||
28 | CONFIG_RPCSEC_GSS_KRB5=n | ||
29 | # CONFIG_SUNRPC_DEBUG is not set | ||
30 | # CONFIG_CEPH_FS is not set | ||
31 | CONFIG_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 | ||
35 | CONFIG_CIFS_XATTR=n | ||
36 | CONFIG_CIFS_POSIX=n | ||
37 | # CONFIG_CIFS_ACL is not set | ||
38 | CONFIG_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/nfs/nfs_n.scc b/nfs/nfs_n.scc new file mode 100644 index 0000000..4cec9a7 --- /dev/null +++ b/nfs/nfs_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable nfs support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware nfs_n.cfg | ||
diff --git a/parport/parport_n.cfg b/parport/parport_n.cfg new file mode 100644 index 0000000..1e35578 --- /dev/null +++ b/parport/parport_n.cfg | |||
@@ -0,0 +1,8 @@ | |||
1 | CONFIG_PARPORT=n | ||
2 | CONFIG_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/parport/parport_n.scc b/parport/parport_n.scc new file mode 100644 index 0000000..bed7632 --- /dev/null +++ b/parport/parport_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable parport support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware parport_n.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 @@ | |||
1 | From 6b0fb5b2a7a157c04d8ab6ad71b092034d0048bf Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Wed, 11 Feb 2015 16:19:26 -0600 | ||
4 | Subject: [PATCH 102/114] cpuidle: skip synchronize_rcu() on single CPU systems | ||
5 | |||
6 | synchronize_rcu() is pretty expensive, and on single CPU systems we don't need | ||
7 | it in this specific case, so skip it. | ||
8 | |||
9 | Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> | ||
10 | Signed-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 | |||
15 | diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c | ||
16 | index 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 | -- | ||
33 | 2.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 @@ | |||
1 | From 7be707833bb35c295eb702d13cf73ac9390e4b31 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Wed, 11 Feb 2015 16:25:16 -0600 | ||
4 | Subject: [PATCH 103/114] sysrq: skip synchronize_rcu() if there is no old op | ||
5 | |||
6 | synchronize_rcu() is expensive. Currently it is called as part of the sysrq | ||
7 | registration/unregistration, which happens during boot several times. | ||
8 | Now, the reason for the synchronize_rcu() is to allow an old registered | ||
9 | operation to expire properly... which is pointless if the old operation | ||
10 | is NULL... | ||
11 | So we can save the common case of the old operation being NULL a lot of time | ||
12 | by just checking for non-NULL prior to the synchronize_rcu() | ||
13 | |||
14 | Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> | ||
15 | Signed-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 | |||
20 | diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c | ||
21 | index 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 | -- | ||
37 | 2.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 @@ | |||
1 | From 5899ff79ed4e3514420e1530a3588a922832dae5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jose Carlos Venegas Munoz <jos.c.venegas.munoz@intel.com> | ||
3 | Date: Mon, 13 Apr 2015 11:26:36 -0500 | ||
4 | Subject: [PATCH 104/114] fbcon: enable no blink by default | ||
5 | |||
6 | Author: 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 | |||
11 | diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c | ||
12 | index 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 | -- | ||
25 | 2.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 @@ | |||
1 | From ff47b4e9be8113b4ba05d6f2afee3db6904bc10f Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Wed, 11 Feb 2015 16:47:20 -0600 | ||
4 | Subject: [PATCH 105/114] vmstats: wakeups | ||
5 | |||
6 | Author: Arjan van de Ven <arjan@linux.intel.com> | ||
7 | |||
8 | Signed-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 | |||
13 | diff --git a/mm/vmstat.c b/mm/vmstat.c | ||
14 | index 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 | -- | ||
27 | 2.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 @@ | |||
1 | From b225caf8f743b9f5f9e84d0df711ee0c17e049ae Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Wed, 11 Feb 2015 16:53:08 -0600 | ||
4 | Subject: [PATCH 106/114] pci: probe | ||
5 | |||
6 | Author: Arjan van de Ven <arjan@linux.intel.com> | ||
7 | |||
8 | Signed-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 | |||
13 | diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c | ||
14 | index 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 | -- | ||
122 | 2.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 @@ | |||
1 | From 0adc5bfd84939d11d3c172eab0a00bfab4aadb46 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Fri, 28 Aug 2015 11:00:36 -0500 | ||
4 | Subject: [PATCH 107/114] cgroup | ||
5 | |||
6 | Author: Arjan van de Ven <arjan@linux.intel.com> | ||
7 | |||
8 | Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> | ||
9 | Signed-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 | |||
15 | diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h | ||
16 | index 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 | /* | ||
28 | diff --git a/kernel/cgroup.c b/kernel/cgroup.c | ||
29 | index 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 | -- | ||
106 | 2.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 @@ | |||
1 | From 634947be6c24d844af5f6ecf59453f2ddc09e032 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Wed, 11 Feb 2015 17:28:14 -0600 | ||
4 | Subject: [PATCH 108/114] smpboot: reuse timer calibration | ||
5 | |||
6 | NO point recalibrating for known-constant tsc... saves 200ms+ of boot time. | ||
7 | |||
8 | Author: Arjan van de Ven <arjan@linux.intel.com> | ||
9 | |||
10 | Signed-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 | |||
16 | diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c | ||
17 | index 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 | |||
29 | diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c | ||
30 | index 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 | -- | ||
44 | 2.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 @@ | |||
1 | From cce700dfbd5fdbf72b96e6479ca539ab4d880ce2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Wed, 4 Nov 2015 15:17:10 -0600 | ||
4 | Subject: [PATCH 109/114] perf | ||
5 | |||
6 | Author: Arjan van de Ven <arjan@linux.intel.com> | ||
7 | |||
8 | Signed-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 | |||
13 | diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c | ||
14 | index 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 | -- | ||
27 | 2.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 @@ | |||
1 | From c662d99134b67c58e63ecc17c2531588a3a51596 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Sat, 14 Feb 2015 09:49:41 -0600 | ||
4 | Subject: [PATCH 110/114] pci: probe: identify known devices | ||
5 | |||
6 | Author: Arjan van de Ven <arjan@linux.intel.com> | ||
7 | Modify-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> | ||
8 | |||
9 | Signed-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 | |||
14 | diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c | ||
15 | index 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, ®ion); | ||
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 | -- | ||
189 | 2.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 @@ | |||
1 | From be2ab4809c6b5058fbf3cd54c0f59c56416e572c Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Mon, 22 Jun 2015 09:33:33 -0500 | ||
4 | Subject: [PATCH 111/114] init: no wait for the known devices | ||
5 | |||
6 | No wait for the known devices to complete their probing | ||
7 | |||
8 | Author: Arjan van de Ven <arjan@linux.intel.com> | ||
9 | |||
10 | Signed-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 | |||
15 | diff --git a/init/do_mounts.c b/init/do_mounts.c | ||
16 | index 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 | -- | ||
38 | 2.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 @@ | |||
1 | From 2dc48e4b5c651691b7028991b64c935047b41b19 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Mon, 14 Mar 2016 11:06:46 -0600 | ||
4 | Subject: [PATCH 112/114] ksm-wakeups | ||
5 | |||
6 | reduce wakeups in ksm | ||
7 | --- | ||
8 | mm/ksm.c | 8 ++++++-- | ||
9 | 1 file changed, 6 insertions(+), 2 deletions(-) | ||
10 | |||
11 | diff --git a/mm/ksm.c b/mm/ksm.c | ||
12 | index 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 | -- | ||
31 | 2.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 @@ | |||
1 | From 179b7f41d5509f93cd297cc81c5d8da4a3123d9d Mon Sep 17 00:00:00 2001 | ||
2 | From: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> | ||
3 | Date: Fri, 20 Nov 2015 14:01:26 -0600 | ||
4 | Subject: [PATCH 113/114] init: do_mounts: recreate /dev/root | ||
5 | |||
6 | Rootfs shows as is mounted in /dev/root, but this devices is not present in | ||
7 | /dev directory. | ||
8 | |||
9 | Signed-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 | |||
14 | diff --git a/init/do_mounts.c b/init/do_mounts.c | ||
15 | index 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 | -- | ||
41 | 2.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 @@ | |||
1 | From 02fd2e6a7c708bf973209f9b238c5c61cbf15239 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alan Cox <alan@linux.intel.com> | ||
3 | Date: Thu, 10 Mar 2016 15:11:28 +0000 | ||
4 | Subject: [PATCH 114/114] xattr: allow setting user.* attributes on symlinks by | ||
5 | owner | ||
6 | |||
7 | Kvmtool and clear containers supports using user attributes to label host | ||
8 | files with the virtual uid/guid of the file in the container. This allows an | ||
9 | end user to manage their files and a complete uid space without all the ugly | ||
10 | namespace stuff. | ||
11 | |||
12 | The one gap in the support is symlinks because an end user can change the | ||
13 | ownership of a symbolic link. We support attributes on these files as you | ||
14 | can already (as root) set security attributes on them. | ||
15 | |||
16 | The current rules seem slightly over-paranoid and as we have a use case this | ||
17 | patch enables updating the attributes on a symbolic link IFF you are the | ||
18 | owner of the synlink (as permissions are not usually meaningful on the link | ||
19 | itself). | ||
20 | |||
21 | Signed-off-by: Alan Cox <alan@linux.intel.com> | ||
22 | --- | ||
23 | fs/xattr.c | 14 ++++++++------ | ||
24 | 1 file changed, 8 insertions(+), 6 deletions(-) | ||
25 | |||
26 | diff --git a/fs/xattr.c b/fs/xattr.c | ||
27 | index 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 | -- | ||
55 | 2.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 @@ | |||
1 | From 99b4cdcce43ad0f706120bef26fef8c628c572cf Mon Sep 17 00:00:00 2001 | ||
2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> | ||
3 | Date: Mon, 23 Jan 2017 15:03:52 -0800 | ||
4 | Subject: [PATCH 151/154] mm: Export do_madvise() | ||
5 | |||
6 | Combined with some interesting flags madvise() system call | ||
7 | allows to free memory more smartly and more efficiently than | ||
8 | we could do with a simple free(). The issue is that is not | ||
9 | available for kernel modules that could need it. | ||
10 | |||
11 | In order to solve this lack of support, this patch exports | ||
12 | do_madvise() so as to make it available to the entire kernel. | ||
13 | The already existing madvise() system call is unchanged and | ||
14 | now relies on this new do_madvise() function. | ||
15 | |||
16 | Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com> | ||
17 | Signed-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 | |||
23 | diff --git a/include/linux/mm.h b/include/linux/mm.h | ||
24 | index 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 */ | ||
35 | diff --git a/mm/madvise.c b/mm/madvise.c | ||
36 | index 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 | -- | ||
83 | 2.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..ff9d8c0 --- /dev/null +++ b/patches/boot_time_opt_guest/0152-x86-kvm-Notify-host-to-release-pages.patch | |||
@@ -0,0 +1,180 @@ | |||
1 | From d28921b5f797829e4e676f7968ae688ef96b7992 Mon Sep 17 00:00:00 2001 | ||
2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> | ||
3 | Date: Mon, 23 Jan 2017 15:08:55 -0800 | ||
4 | Subject: [PATCH 152/154] x86: kvm: Notify host to release pages | ||
5 | |||
6 | In context of hypervisors managing several virtual machines, we | ||
7 | want those virtual machines to give the memory they used back to | ||
8 | the host when they don't need it anymore. | ||
9 | |||
10 | This patch introduces a new hypercall KVM_HC_RETURN_MEM, allowing | ||
11 | the guest kernel to notify the host kernel when such event occurs. | ||
12 | And relying on do_madvise() function that we have previously exported, | ||
13 | it issues a call to this function when it receives the new hypercall. | ||
14 | |||
15 | Use of do_madvise() with MADV_DONTNEED flag will allow the guest to | ||
16 | ask for a new page without going through a new hypercall. Instead, | ||
17 | it will be able to start using that memory again as it will get | ||
18 | faulted back in as a fresh new page. That's why do_madvise() is more | ||
19 | efficient than doing vm_unmap() to return some memory to the host. | ||
20 | |||
21 | This patch introduces also a new sysctl kvm_madv_instant_free, | ||
22 | allowing user to set MADV_FREE advice instead of MADV_DONTNEED. | ||
23 | Indeed, MADV_FREE saves more performances than using MADV_DONTNEED | ||
24 | because it does not zero the pages in case the memory has not been | ||
25 | freed by the kernel. This can happen when there was no need for the | ||
26 | kernel to get this memory back, meaning it was keeping those pages | ||
27 | in the right state to be re-used by the same application. | ||
28 | MADV_FREE being a very recent advice introduced in kernel 4.5, we | ||
29 | only want to enable it through a sysctl in case the user want to | ||
30 | use it. | ||
31 | |||
32 | Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com> | ||
33 | Signed-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 | |||
44 | diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c | ||
45 | index 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; | ||
86 | diff --git a/include/linux/mm.h b/include/linux/mm.h | ||
87 | index 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); | ||
102 | diff --git a/include/uapi/linux/kvm_para.h b/include/uapi/linux/kvm_para.h | ||
103 | index 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 | ||
116 | diff --git a/kernel/sysctl.c b/kernel/sysctl.c | ||
117 | index 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", | ||
134 | diff --git a/mm/Makefile b/mm/Makefile | ||
135 | index 295bd7a9f76b..651ce0aff140 100644 | ||
136 | --- a/mm/Makefile | ||
137 | +++ b/mm/Makefile | ||
138 | @@ -37,7 +37,7 @@ obj-y := filemap.o mempool.o oom_kill.o \ | ||
139 | mm_init.o mmu_context.o percpu.o slab_common.o \ | ||
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 | ||
146 | |||
147 | diff --git a/mm/kvm.c b/mm/kvm.c | ||
148 | new file mode 100644 | ||
149 | index 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 | -- | ||
179 | 2.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 @@ | |||
1 | From 855ef164854307839c08c60688eaeac14f9a649e Mon Sep 17 00:00:00 2001 | ||
2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> | ||
3 | Date: Mon, 23 Jan 2017 15:26:13 -0800 | ||
4 | Subject: [PATCH 153/154] x86: Return memory from guest to host kernel | ||
5 | |||
6 | All virtual machines need memory to perform various tasks, but this | ||
7 | memory is not released to the host after it is not used anymore. We | ||
8 | have to wait for the termination of the virtual machine to get this | ||
9 | memory back into the host. | ||
10 | |||
11 | Ballooning mechanism is close but not designed for the same purpose. | ||
12 | In case we hit memory limits of the system, the host predicts how much | ||
13 | memory can be asked back from a guest, and it issues an hypercall to | ||
14 | retrieve this memory. | ||
15 | |||
16 | The solution proposed is different because it does not wait for host | ||
17 | needs before to return memory, and it knows precisely how much memory | ||
18 | it can return. | ||
19 | |||
20 | The way to notify the host side about such a return is to rely on | ||
21 | the new hypercall KVM_HC_RETURN_MEM. In order to avoid the CPU to be | ||
22 | overloaded with too many hypercalls, we only return memory blocks of | ||
23 | order 7 (512k blocks) and higher. This value has been found running | ||
24 | memory tests using multiple threads allocating/freeing high amount | ||
25 | of memory. Those tests were run for different order values, and 7 was | ||
26 | the best tradeoff between the number of hypercalls issued and the | ||
27 | amount of memory returned to the host. | ||
28 | |||
29 | In order to limit performances impact related to this code addition, | ||
30 | we check for blocks of order 7 or higher. This means it only costs an | ||
31 | additional function call and a branch to perform this check. | ||
32 | |||
33 | Furthermore, this code has been added to the "merge" codepath of the | ||
34 | buddy allocator, which is not as sensitive as the "free" codepath. | ||
35 | Not 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. | ||
37 | But this is a negligible amount since the kernel does not use many | ||
38 | high order blocks directly. Instead, those bigger blocks are often | ||
39 | broken into smaller chunks used as low order blocks. At the time | ||
40 | those small blocks are released, they go through the merge path. | ||
41 | |||
42 | Benchmarks such as ebizzy and will-it-scale have been run in order | ||
43 | to make sure this patch does not affect kernel performances and no | ||
44 | significant differences were observed. | ||
45 | |||
46 | Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com> | ||
47 | Signed-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 | |||
55 | diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h | ||
56 | index 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); | ||
88 | diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c | ||
89 | index 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 */ | ||
109 | diff --git a/include/linux/mm-arch-hooks.h b/include/linux/mm-arch-hooks.h | ||
110 | index 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 */ | ||
133 | diff --git a/mm/page_alloc.c b/mm/page_alloc.c | ||
134 | index 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 | -- | ||
154 | 2.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 @@ | |||
1 | From 2c145b5233b504f5226a0f4bc44baeef33b444d8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> | ||
3 | Date: Mon, 23 Jan 2017 15:32:39 -0800 | ||
4 | Subject: [PATCH 154/154] sysctl: vm: Fine-grained cache shrinking | ||
5 | |||
6 | Lots of virtual machines are let in idle state for days until they | ||
7 | are terminated, and they can keep a large amount of memory in their | ||
8 | cache, meaning this memory cannot be used by other processes. | ||
9 | |||
10 | We tried to release this memory using existing drop_caches sysctl, | ||
11 | but it led to the complete cache loss while it could have been used | ||
12 | whether the idle process wakes up. Indeed, the process can't find any | ||
13 | available cached data and it directly affects performances to rebuild | ||
14 | it from scratch. | ||
15 | |||
16 | Instead, the solution we want is based on shrinking gradually system | ||
17 | cache over time. This patch adds a new sysctl shrink_caches_mb so as | ||
18 | to allow userspace applications indicating the kernel it should shrink | ||
19 | system cache up to the amount (in MiB) specified. | ||
20 | |||
21 | There is an application called "memshrinker" which uses this new | ||
22 | mechanism. It runs in the background and periodically releases a | ||
23 | specified amount of cache. This amount is based on the remaining | ||
24 | cache on the system, and period is computed to follow a shrinking | ||
25 | model. It results in saving a lot of memory for other processes | ||
26 | running on the system. | ||
27 | |||
28 | Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com> | ||
29 | Signed-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 | |||
37 | diff --git a/fs/drop_caches.c b/fs/drop_caches.c | ||
38 | index 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 | +} | ||
81 | diff --git a/include/linux/mm.h b/include/linux/mm.h | ||
82 | index 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); | ||
96 | diff --git a/kernel/sysctl.c b/kernel/sysctl.c | ||
97 | index 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", | ||
115 | diff --git a/mm/vmscan.c b/mm/vmscan.c | ||
116 | index 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 | -- | ||
136 | 2.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 @@ | |||
1 | define KFEATURE_DESCRIPTION "Boot time optimization changes ported from ClearLinux , https://github.com/clearlinux-pkgs/linux-kvm" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | patch 0103-sysrq-skip-synchronize_rcu-if-there-is-no-old-op.patch | ||
5 | patch 0104-fbcon-enable-no-blink-by-default.patch | ||
6 | patch 0105-vmstats-wakeups.patch | ||
7 | # Remove patch because it causes ixgvbevf to not initialize correctly in the guest | ||
8 | #patch 0106-pci-probe.patch | ||
9 | patch 0107-cgroup.patch | ||
10 | patch 0108-smpboot-reuse-timer-calibration.patch | ||
11 | patch 0109-perf.patch | ||
12 | patch 0110-pci-probe-identify-known-devices.patch | ||
13 | patch 0111-init-no-wait-for-the-known-devices.patch | ||
14 | patch 0112-ksm-wakeups.patch | ||
15 | |||
16 | patch 0151-mm-Export-do_madvise.patch | ||
17 | patch 0152-x86-kvm-Notify-host-to-release-pages.patch | ||
18 | patch 0153-x86-Return-memory-from-guest-to-host-kernel.patch | ||
19 | patch 0154-sysctl-vm-Fine-grained-cache-shrinking.patch | ||
diff --git a/pci/pci_iov_m.cfg b/pci/pci_iov_m.cfg new file mode 100644 index 0000000..c52af46 --- /dev/null +++ b/pci/pci_iov_m.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_PCI_IOV=y | |||
diff --git a/pci/pci_iov_m.scc b/pci/pci_iov_m.scc new file mode 100644 index 0000000..1612c3c --- /dev/null +++ b/pci/pci_iov_m.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Enable PCI I/O access" | ||
2 | define KFEATURE_COMPATIBILITY board | ||
3 | |||
4 | kconf non-hardware pci_iov_m.cfg | ||
diff --git a/pci/pci_iov_y.cfg b/pci/pci_iov_y.cfg new file mode 100644 index 0000000..c52af46 --- /dev/null +++ b/pci/pci_iov_y.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_PCI_IOV=y | |||
diff --git a/pci/pci_iov_y.scc b/pci/pci_iov_y.scc new file mode 100644 index 0000000..685f058 --- /dev/null +++ b/pci/pci_iov_y.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Enable PCI I/O access" | ||
2 | define KFEATURE_COMPATIBILITY board | ||
3 | |||
4 | kconf non-hardware pci_iov_y.cfg | ||
diff --git a/pcimodules/pcimodules_n.cfg b/pcimodules/pcimodules_n.cfg new file mode 100644 index 0000000..48fa2a1 --- /dev/null +++ b/pcimodules/pcimodules_n.cfg | |||
@@ -0,0 +1,19 @@ | |||
1 | CONFIG_PCI_CNB20LE_QUIRK=n | ||
2 | CONFIG_HOTPLUG_PCI_PCIE=n | ||
3 | CONFIG_PCIEASPM_DEBUG=n | ||
4 | CONFIG_PCI_DEBUG=n | ||
5 | CONFIG_PCI_REALLOC_ENABLE_AUTO=n | ||
6 | CONFIG_PCI_STUB=m | ||
7 | CONFIG_PCI_PRI=n | ||
8 | CONFIG_HOTPLUG_PCI=n | ||
9 | CONFIG_HOTPLUG_PCI_ACPI=n | ||
10 | # CONFIG_HOTPLUG_PCI_ACPI_IBM is not set | ||
11 | CONFIG_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 | # | ||
18 | CONFIG_PCIE_DW_PLAT=n | ||
19 | CONFIG_PCIE_DW=n | ||
diff --git a/pcimodules/pcimodules_n.scc b/pcimodules/pcimodules_n.scc new file mode 100644 index 0000000..6cad0c5 --- /dev/null +++ b/pcimodules/pcimodules_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable pcimodules support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware pcimodules_n.cfg | ||
diff --git a/perf/perf_n.cfg b/perf/perf_n.cfg new file mode 100644 index 0000000..8392495 --- /dev/null +++ b/perf/perf_n.cfg | |||
@@ -0,0 +1,2 @@ | |||
1 | CONFIG_CGROUP_PERF=n | ||
2 | CONFIG_PERF_EVENTS=n | ||
diff --git a/perf/perf_n.scc b/perf/perf_n.scc new file mode 100644 index 0000000..4c5ebaf --- /dev/null +++ b/perf/perf_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable options required for perf support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware perf_n.cfg | ||
diff --git a/power_supply/power_supply_n.cfg b/power_supply/power_supply_n.cfg new file mode 100644 index 0000000..92dec05 --- /dev/null +++ b/power_supply/power_supply_n.cfg | |||
@@ -0,0 +1 @@ | |||
ONFIG_POWER_SUPPLY=n | |||
diff --git a/power_supply/power_supply_n.scc b/power_supply/power_supply_n.scc new file mode 100644 index 0000000..81bce6b --- /dev/null +++ b/power_supply/power_supply_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable power supply support" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware power_supply_n.cfg | ||
diff --git a/ppp/ppp_n.cfg b/ppp/ppp_n.cfg new file mode 100644 index 0000000..04d84a8 --- /dev/null +++ b/ppp/ppp_n.cfg | |||
@@ -0,0 +1,10 @@ | |||
1 | CONFIG_PPP=n | ||
2 | CONFIG_PPP_BSDCOMP=n | ||
3 | CONFIG_PPP_DEFLATE=n | ||
4 | CONFIG_PPP_FILTER=n | ||
5 | # CONFIG_PPP_MPPE is not set | ||
6 | CONFIG_PPP_MULTILINK=n | ||
7 | CONFIG_PPPOE=n | ||
8 | # CONFIG_PPTP is not set | ||
9 | CONFIG_PPP_ASYNC=n | ||
10 | CONFIG_PPP_SYNC_TTY=n | ||
diff --git a/ppp/ppp_n.scc b/ppp/ppp_n.scc new file mode 100644 index 0000000..3d6a8db --- /dev/null +++ b/ppp/ppp_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable ppp support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware ppp_n.cfg | ||
diff --git a/prockcore/prockcore_n.cfg b/prockcore/prockcore_n.cfg new file mode 100644 index 0000000..aa9e6a4 --- /dev/null +++ b/prockcore/prockcore_n.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_PROC_KCORE=n | |||
diff --git a/prockcore/prockcore_n.scc b/prockcore/prockcore_n.scc new file mode 100644 index 0000000..a2651b5 --- /dev/null +++ b/prockcore/prockcore_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable prockcore support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware prockcore_n.cfg | ||
diff --git a/reduced_kernel_footprint_guest/reduced_kernel_footprint_guest.scc b/reduced_kernel_footprint_guest/reduced_kernel_footprint_guest.scc new file mode 100644 index 0000000..7fae6cd --- /dev/null +++ b/reduced_kernel_footprint_guest/reduced_kernel_footprint_guest.scc | |||
@@ -0,0 +1,75 @@ | |||
1 | # Add standard kernel configuration and XZ kernel compression | ||
2 | include features/std_kernel/std_kernel_y.scc | ||
3 | |||
4 | # Disable unnecessary modules | ||
5 | include features/bcma/bcma_n.scc | ||
6 | include features/btrfs/btrfs_n.scc | ||
7 | include features/compilechecks/compilechecks_n.scc | ||
8 | include features/i2csupport/i2csupport_n.scc | ||
9 | include features/isdn/isdn_n.scc | ||
10 | include features/loopdev/loopdev_n.scc | ||
11 | include features/msdos_fat_nt_fs/msdos_fat_nt_fs_n.scc | ||
12 | include features/netblkdev/netblkdev_n.scc | ||
13 | include features/netconsole/netconsole_n.scc | ||
14 | include features/netfilter/netfilter_n.scc | ||
15 | include features/nfs/nfs_n.scc | ||
16 | include features/parport/parport_n.scc | ||
17 | include features/pcimodules/pcimodules_n.scc | ||
18 | include features/ppp/ppp_n.scc | ||
19 | include features/prockcore/prockcore_n.scc | ||
20 | include features/serio/serio_n.scc | ||
21 | include features/slip/slip_n.scc | ||
22 | include features/bug_support/bug_support_n.scc | ||
23 | include features/powermanagement/powermanagement_n.scc | ||
24 | include features/acpi/acpi_n.scc | ||
25 | include features/cpu_freq/cpu_freq_n.scc | ||
26 | include features/bluetooth/bluetooth_n.scc | ||
27 | include features/wireless/wireless_n.scc | ||
28 | include features/rfkill/rfkill_n.scc | ||
29 | include features/6lowpan/6lowpan_n.scc | ||
30 | include features/netdevices/netdevices_n.scc | ||
31 | include features/media/media_n.scc | ||
32 | include features/nfc/nfc_n.scc | ||
33 | include features/sound/sound_n.scc | ||
34 | include features/usbnet/usbnet_n.scc | ||
35 | include features/i2csupport/i2csupport_n.scc | ||
36 | include features/serio/serio_n.scc | ||
37 | include features/tablet/tablet_n.scc | ||
38 | include features/mouse/mouse_n.scc | ||
39 | include features/mousedev/mousedev_n.scc | ||
40 | include features/keyboard/keyboard_n.scc | ||
41 | include features/input/input_n.scc | ||
42 | include features/wlan/wlan_n.scc | ||
43 | include features/ftrace/ftrace_n.scc | ||
44 | include features/debug/debug_kernel_n.scc | ||
45 | include features/ata/ata_n.scc | ||
46 | include features/cdrom/cdrom_n.scc | ||
47 | include features/power_supply/power_supply_n.scc | ||
48 | include features/hwmon/hwmon_n.scc | ||
49 | include features/thermal/thermal_n.scc | ||
50 | include features/usbsupport/usbsupport_n.scc | ||
51 | include features/touchscreen/touchscreen_n.scc | ||
52 | include features/udev/udev_n.scc | ||
53 | include features/kprobes/kprobes_n.scc | ||
54 | include features/acp/acp_n.scc | ||
55 | include features/agp/agp_n.scc | ||
56 | include features/backlight/backlight_n.scc | ||
57 | include features/cdrom_fs/cdrom_fs_n.scc | ||
58 | include features/cgroupdbg/cgroupdbg_n.scc | ||
59 | include features/display/display_n.scc | ||
60 | include features/drm/drm_n.scc | ||
61 | include features/elf_core_support/elf_core_support_n.scc | ||
62 | include features/framebuffer/framebuffer_n.scc | ||
63 | include features/hdmi/hdmi_n.scc | ||
64 | include features/hid/hid_n.scc | ||
65 | include features/kprobes/kprobes_n.scc | ||
66 | include features/mmc/mmc_n.scc | ||
67 | include features/pcspkr/pcspkr_n.scc | ||
68 | include features/watchdog/watchdog_n.scc | ||
69 | include features/vga/vga_n.scc | ||
70 | include features/intel-e1xxxx/e100_n.scc | ||
71 | include features/x86_platform/x86_platform_n.scc | ||
72 | include features/memorydbg/memorydbg_n.scc | ||
73 | include features/perf/perf_n.cfg | ||
74 | include features/kgdb/kgdb_n.cfg | ||
75 | include features/dmiid/dmiid_n.cfg | ||
diff --git a/serio/serio_n.cfg b/serio/serio_n.cfg new file mode 100644 index 0000000..c505fdd --- /dev/null +++ b/serio/serio_n.cfg | |||
@@ -0,0 +1,15 @@ | |||
1 | # | ||
2 | # Hardware I/O ports | ||
3 | # | ||
4 | CONFIG_SERIO=n | ||
5 | CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=n | ||
6 | CONFIG_SERIO_I8042=n | ||
7 | CONFIG_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/serio/serio_n.scc b/serio/serio_n.scc new file mode 100644 index 0000000..389bf1e --- /dev/null +++ b/serio/serio_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable serio support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware serio_n.cfg | ||
diff --git a/slip/slip_n.cfg b/slip/slip_n.cfg new file mode 100644 index 0000000..b5cbd33 --- /dev/null +++ b/slip/slip_n.cfg | |||
@@ -0,0 +1,5 @@ | |||
1 | CONFIG_SLIP=n | ||
2 | CONFIG_SLHC=n | ||
3 | CONFIG_SLIP_COMPRESSED=n | ||
4 | CONFIG_SLIP_SMART=n | ||
5 | CONFIG_SLIP_MODE_SLIP6=n | ||
diff --git a/slip/slip_n.scc b/slip/slip_n.scc new file mode 100644 index 0000000..27b54c8 --- /dev/null +++ b/slip/slip_n.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable slip support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware slip_n.cfg | ||
diff --git a/thermal/thermal_n.cfg b/thermal/thermal_n.cfg new file mode 100644 index 0000000..faa4970 --- /dev/null +++ b/thermal/thermal_n.cfg | |||
@@ -0,0 +1,4 @@ | |||
1 | CONFIG_THERMAL=n | ||
2 | CONFIG_THERMAL_WRITABLE_TRIPS=n | ||
3 | CONFIG_THERMAL_GOV_USER_SPACE=n | ||
4 | CONFIG_X86_PKG_TEMP_THERMAL=n | ||
diff --git a/thermal/thermal_n.scc b/thermal/thermal_n.scc new file mode 100644 index 0000000..cccc945 --- /dev/null +++ b/thermal/thermal_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable thermal sysfs support" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware thermal_n.cfg | ||
diff --git a/udev/udev.cfg b/udev/udev.cfg new file mode 100644 index 0000000..08dc3b0 --- /dev/null +++ b/udev/udev.cfg | |||
@@ -0,0 +1,28 @@ | |||
1 | CONFIG_DEVTMPFS=y | ||
2 | CONFIG_CGROUPS=y | ||
3 | CONFIG_INOTIFY_USER=y | ||
4 | CONFIG_SIGNALFD=y | ||
5 | CONFIG_TIMERFD=y | ||
6 | CONFIG_EPOLL=y | ||
7 | CONFIG_NET=y | ||
8 | CONFIG_SYSFS=y | ||
9 | CONFIG_PROC_FS=y | ||
10 | CONFIG_FHANDLE=y | ||
11 | |||
12 | CONFIG_SYSFS_DEPRECATED=n | ||
13 | |||
14 | CONFIG_UEVENT_HELPER_PATH="" | ||
15 | |||
16 | CONFIG_FW_LOADER_USER_HELPER=n | ||
17 | |||
18 | CONFIG_DMIID=y | ||
19 | |||
20 | CONFIG_BLK_DEV_BSG=y | ||
21 | |||
22 | CONFIG_NET_NS=y | ||
23 | CONFIG_DEVPTS_MULTIPLE_INSTANCES=y | ||
24 | CONFIG_USER_NS=y | ||
25 | |||
26 | CONFIG_CGROUP_SCHED=y | ||
27 | CONFIG_FAIR_GROUP_SCHED=y | ||
28 | CONFIG_CFS_BANDWIDTH=y | ||
diff --git a/udev/udev.scc b/udev/udev.scc new file mode 100644 index 0000000..089ca2e --- /dev/null +++ b/udev/udev.scc | |||
@@ -0,0 +1,7 @@ | |||
1 | define KFEATURE_DESCRIPTION "UDEV specific kernel configs: https://github.com/systemd/systemd/blob/master/README" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware udev.cfg | ||
5 | kconf non-hardware udev_crypto.cfg | ||
6 | kconf non-hardware udev_uefi.cfg | ||
7 | kconf non-hardware udev_opt.cfg | ||
diff --git a/udev/udev_crypto.cfg b/udev/udev_crypto.cfg new file mode 100644 index 0000000..1e0be79 --- /dev/null +++ b/udev/udev_crypto.cfg | |||
@@ -0,0 +1,3 @@ | |||
1 | CONFIG_CRYPTO_USER_API_HASH=y | ||
2 | CONFIG_CRYPTO_HMAC=y | ||
3 | CONFIG_CRYPTO_SHA256=y | ||
diff --git a/udev/udev_crypto.scc b/udev/udev_crypto.scc new file mode 100644 index 0000000..9c019a6 --- /dev/null +++ b/udev/udev_crypto.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "UDEV kernels config to support crypto" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware udev_crypto.cfg | ||
diff --git a/udev/udev_n.cfg b/udev/udev_n.cfg new file mode 100644 index 0000000..ef9e6d4 --- /dev/null +++ b/udev/udev_n.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_UEVENT_HELPER=n | |||
diff --git a/udev/udev_n.scc b/udev/udev_n.scc new file mode 100644 index 0000000..bfaa194 --- /dev/null +++ b/udev/udev_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable udev support" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware udev_n.cfg | ||
diff --git a/udev/udev_opt.cfg b/udev/udev_opt.cfg new file mode 100644 index 0000000..d08e36a --- /dev/null +++ b/udev/udev_opt.cfg | |||
@@ -0,0 +1,10 @@ | |||
1 | CONFIG_IPV6=y | ||
2 | CONFIG_AUTOFS4_FS=y | ||
3 | CONFIG_TMPFS_XATTR=y | ||
4 | CONFIG_TMPFS_POSIX_ACL=y | ||
5 | CONFIG_EXT4_POSIX_ACL=y | ||
6 | CONFIG_XFS_ACL=y | ||
7 | CONFIG_BTRFS_FS_POSIX_ACL=y | ||
8 | CONFIG_SECCOMP=y | ||
9 | CONFIG_SECCOMP_FILTER=y | ||
10 | CONFIG_CHECKPOINT_RESTORE=y | ||
diff --git a/udev/udev_opt.scc b/udev/udev_opt.scc new file mode 100644 index 0000000..dc1b86a --- /dev/null +++ b/udev/udev_opt.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "Optional UDEV kernel configs" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware udev_opt.cfg | ||
diff --git a/udev/udev_uefi.cfg b/udev/udev_uefi.cfg new file mode 100644 index 0000000..ec2aa3e --- /dev/null +++ b/udev/udev_uefi.cfg | |||
@@ -0,0 +1,2 @@ | |||
1 | CONFIG_EFIVAR_FS=y | ||
2 | CONFIG_EFI_PARTITION=y | ||
diff --git a/udev/udev_uefi.scc b/udev/udev_uefi.scc new file mode 100644 index 0000000..bda289e --- /dev/null +++ b/udev/udev_uefi.scc | |||
@@ -0,0 +1,4 @@ | |||
1 | define KFEATURE_DESCRIPTION "kernel configs for UDEV with UEFI support" | ||
2 | define KFEATURE_COMPATIBILITY all | ||
3 | |||
4 | kconf non-hardware udev_uefi.cfg | ||
diff --git a/vga/vga_n.cfg b/vga/vga_n.cfg new file mode 100644 index 0000000..cc679da --- /dev/null +++ b/vga/vga_n.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_VGA_ARB=n | |||
diff --git a/vga/vga_n.scc b/vga/vga_n.scc new file mode 100644 index 0000000..2b9e2c1 --- /dev/null +++ b/vga/vga_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable VGA" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware vga_n.cfg | ||
diff --git a/watchdog/watchdog_n.cfg b/watchdog/watchdog_n.cfg new file mode 100644 index 0000000..3d103ce --- /dev/null +++ b/watchdog/watchdog_n.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_WATCHDOG=n | |||
diff --git a/watchdog/watchdog_n.scc b/watchdog/watchdog_n.scc new file mode 100644 index 0000000..d394a3d --- /dev/null +++ b/watchdog/watchdog_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable watchdog support" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware watchdog_n.cfg | ||
diff --git a/x86_platform/x86_platform_n.cfg b/x86_platform/x86_platform_n.cfg new file mode 100644 index 0000000..2a96aa9 --- /dev/null +++ b/x86_platform/x86_platform_n.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_X86_PLATFORM_DEVICES=n | |||
diff --git a/x86_platform/x86_platform_n.scc b/x86_platform/x86_platform_n.scc new file mode 100644 index 0000000..a224808 --- /dev/null +++ b/x86_platform/x86_platform_n.scc | |||
@@ -0,0 +1,5 @@ | |||
1 | define KFEATURE_DESCRIPTION "Disable x86 platform devices" | ||
2 | |||
3 | define KFEATURE_COMPATIBILITY all | ||
4 | |||
5 | kconf hardware x86_platform_n.cfg | ||