From e07993bedd511575ccb0802cd14690111978b50a Mon Sep 17 00:00:00 2001 From: Gabriel Ionescu Date: Thu, 8 Jun 2017 18:13:42 +0200 Subject: Kernel: Optimize boot time and add start/end messages Signed-off-by: Gabriel Ionescu Signed-off-by: Adrian Dudau --- features/btrfs/btrfs_m.cfg | 1 + features/btrfs/btrfs_m.scc | 5 ++ features/bus/pci_cnb20le_n.cfg | 1 + features/bus/pci_cnb20le_n.scc | 5 ++ features/debug/debug_kernel_n.cfg | 1 - features/debug/debug_kernel_y.cfg | 1 - features/input/input_n.cfg | 3 + features/input/input_n.scc | 5 ++ features/intel-e1xxxx/e100_m.cfg | 1 + features/intel-e1xxxx/e100_m.scc | 5 ++ features/intel-e1xxxx/e1xxxx_m.cfg | 3 + features/intel-e1xxxx/e1xxxx_m.scc | 5 ++ features/ixgbe/ixgbe_m.cfg | 4 + features/ixgbe/ixgbe_m.scc | 4 + features/mdio/mdio_m.cfg | 1 + features/mdio/mdio_m.scc | 5 ++ features/mii/mii_m.cfg | 1 + features/mii/mii_m.scc | 5 ++ features/overlayfs/overlayfs_m.cfg | 1 + features/overlayfs/overlayfs_m.scc | 5 ++ features/printk/printk_n.cfg | 1 + features/printk/printk_y.cfg | 1 + .../reduced_kernel_footprint.scc | 13 ++- features/xor_blocks/xor_blocks_m.cfg | 1 + features/xor_blocks/xor_blocks_m.scc | 5 ++ ...tk-add-Enea-Linux-boot-start-end-messages.patch | 95 ++++++++++++++++++++++ .../kernel_startend_msg/kernel_startend_msg.scc | 4 + 27 files changed, 178 insertions(+), 4 deletions(-) create mode 100644 features/btrfs/btrfs_m.cfg create mode 100644 features/btrfs/btrfs_m.scc create mode 100644 features/bus/pci_cnb20le_n.cfg create mode 100644 features/bus/pci_cnb20le_n.scc create mode 100644 features/input/input_n.cfg create mode 100644 features/input/input_n.scc create mode 100644 features/intel-e1xxxx/e100_m.cfg create mode 100644 features/intel-e1xxxx/e100_m.scc create mode 100644 features/intel-e1xxxx/e1xxxx_m.cfg create mode 100644 features/intel-e1xxxx/e1xxxx_m.scc create mode 100644 features/ixgbe/ixgbe_m.cfg create mode 100644 features/ixgbe/ixgbe_m.scc create mode 100644 features/mdio/mdio_m.cfg create mode 100644 features/mdio/mdio_m.scc create mode 100644 features/mii/mii_m.cfg create mode 100644 features/mii/mii_m.scc create mode 100644 features/overlayfs/overlayfs_m.cfg create mode 100644 features/overlayfs/overlayfs_m.scc create mode 100644 features/xor_blocks/xor_blocks_m.cfg create mode 100644 features/xor_blocks/xor_blocks_m.scc create mode 100644 patches/kernel_startend_msg/0001-printk-add-Enea-Linux-boot-start-end-messages.patch create mode 100644 patches/kernel_startend_msg/kernel_startend_msg.scc diff --git a/features/btrfs/btrfs_m.cfg b/features/btrfs/btrfs_m.cfg new file mode 100644 index 0000000..3b4d425 --- /dev/null +++ b/features/btrfs/btrfs_m.cfg @@ -0,0 +1 @@ +CONFIG_BTRFS_FS=m diff --git a/features/btrfs/btrfs_m.scc b/features/btrfs/btrfs_m.scc new file mode 100644 index 0000000..4827556 --- /dev/null +++ b/features/btrfs/btrfs_m.scc @@ -0,0 +1,5 @@ +define KFEATURE_DESCRIPTION "Build BTRFS support as a module" + +define KFEATURE_COMPATIBILITY all + +kconf hardware btrfs_m.cfg diff --git a/features/bus/pci_cnb20le_n.cfg b/features/bus/pci_cnb20le_n.cfg new file mode 100644 index 0000000..a75dcef --- /dev/null +++ b/features/bus/pci_cnb20le_n.cfg @@ -0,0 +1 @@ +# CONFIG_PCI_CNB20LE_QUIRK is not set diff --git a/features/bus/pci_cnb20le_n.scc b/features/bus/pci_cnb20le_n.scc new file mode 100644 index 0000000..c5da613 --- /dev/null +++ b/features/bus/pci_cnb20le_n.scc @@ -0,0 +1,5 @@ +define KFEATURE_DESCRIPTION "Disable support for CNB20LE chipset" + +define KFEATURE_COMPATIBILITY all + +kconf hardware pci_cnb20le_n.cfg diff --git a/features/debug/debug_kernel_n.cfg b/features/debug/debug_kernel_n.cfg index cabde95..77f41ef 100644 --- a/features/debug/debug_kernel_n.cfg +++ b/features/debug/debug_kernel_n.cfg @@ -5,5 +5,4 @@ CONFIG_PNP_DEBUG_MESSAGES=n CONFIG_SCHED_DEBUG=n CONFIG_DEBUG_PREEMPT=n CONFIG_X86_DEBUG_FPU=n -CONFIG_X86_VERBOSE_BOOTUP=n CONFIG_EARLY_PRINTK=n diff --git a/features/debug/debug_kernel_y.cfg b/features/debug/debug_kernel_y.cfg index cb7617d..29399ad 100644 --- a/features/debug/debug_kernel_y.cfg +++ b/features/debug/debug_kernel_y.cfg @@ -6,4 +6,3 @@ CONFIG_PNP_DEBUG_MESSAGES=y CONFIG_SCHED_DEBUG=y CONFIG_DEBUG_PREEMPT=y CONFIG_X86_DEBUG_FPU=y -CONFIG_X86_VERBOSE_BOOTUP=y diff --git a/features/input/input_n.cfg b/features/input/input_n.cfg new file mode 100644 index 0000000..ee422f2 --- /dev/null +++ b/features/input/input_n.cfg @@ -0,0 +1,3 @@ +CONFIG_SERIO=n +CONFIG_INPUT_LEDS=n +CONFIG_INPUT_EVDEV=n diff --git a/features/input/input_n.scc b/features/input/input_n.scc new file mode 100644 index 0000000..16aaa94 --- /dev/null +++ b/features/input/input_n.scc @@ -0,0 +1,5 @@ +define KFEATURE_DESCRIPTION "Disable inputs" + +define KFEATURE_COMPATIBILITY all + +kconf hardware input_n.cfg diff --git a/features/intel-e1xxxx/e100_m.cfg b/features/intel-e1xxxx/e100_m.cfg new file mode 100644 index 0000000..676b909 --- /dev/null +++ b/features/intel-e1xxxx/e100_m.cfg @@ -0,0 +1 @@ +CONFIG_E100=m diff --git a/features/intel-e1xxxx/e100_m.scc b/features/intel-e1xxxx/e100_m.scc new file mode 100644 index 0000000..42730b4 --- /dev/null +++ b/features/intel-e1xxxx/e100_m.scc @@ -0,0 +1,5 @@ +define KFEATURE_DESCRIPTION "Build E100 support as a module" + +define KFEATURE_COMPATIBILITY all + +kconf hardware e100_m.cfg diff --git a/features/intel-e1xxxx/e1xxxx_m.cfg b/features/intel-e1xxxx/e1xxxx_m.cfg new file mode 100644 index 0000000..c05e8c6 --- /dev/null +++ b/features/intel-e1xxxx/e1xxxx_m.cfg @@ -0,0 +1,3 @@ +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_E1000E_HWTS=m diff --git a/features/intel-e1xxxx/e1xxxx_m.scc b/features/intel-e1xxxx/e1xxxx_m.scc new file mode 100644 index 0000000..d8a8f16 --- /dev/null +++ b/features/intel-e1xxxx/e1xxxx_m.scc @@ -0,0 +1,5 @@ +define KFEATURE_DESCRIPTION "Build E1xxxx drivers as modules" + +define KFEATURE_COMPATIBILITY all + +kconf hardware e1xxxx_m.cfg diff --git a/features/ixgbe/ixgbe_m.cfg b/features/ixgbe/ixgbe_m.cfg new file mode 100644 index 0000000..88d48ce --- /dev/null +++ b/features/ixgbe/ixgbe_m.cfg @@ -0,0 +1,4 @@ +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_IXGBEVF=m +CONFIG_DCA=y diff --git a/features/ixgbe/ixgbe_m.scc b/features/ixgbe/ixgbe_m.scc new file mode 100644 index 0000000..25cd537 --- /dev/null +++ b/features/ixgbe/ixgbe_m.scc @@ -0,0 +1,4 @@ +define KFEATURE_DESCRIPTION "Build IXGB and IXGBE support as a modules" +define KFEATURE_COMPATIBILITY board + +kconf hardware ixgbe_m.cfg diff --git a/features/mdio/mdio_m.cfg b/features/mdio/mdio_m.cfg new file mode 100644 index 0000000..c2915e9 --- /dev/null +++ b/features/mdio/mdio_m.cfg @@ -0,0 +1 @@ +CONFIG_MDIO=m diff --git a/features/mdio/mdio_m.scc b/features/mdio/mdio_m.scc new file mode 100644 index 0000000..654555e --- /dev/null +++ b/features/mdio/mdio_m.scc @@ -0,0 +1,5 @@ +define KFEATURE_DESCRIPTION "Build MDIO support as a module" + +define KFEATURE_COMPATIBILITY all + +kconf hardware mdio_m.cfg diff --git a/features/mii/mii_m.cfg b/features/mii/mii_m.cfg new file mode 100644 index 0000000..b7d4f65 --- /dev/null +++ b/features/mii/mii_m.cfg @@ -0,0 +1 @@ +CONFIG_MII=m diff --git a/features/mii/mii_m.scc b/features/mii/mii_m.scc new file mode 100644 index 0000000..4899cc5 --- /dev/null +++ b/features/mii/mii_m.scc @@ -0,0 +1,5 @@ +define KFEATURE_DESCRIPTION "Build MII support as a module" + +define KFEATURE_COMPATIBILITY all + +kconf hardware mii_m.cfg diff --git a/features/overlayfs/overlayfs_m.cfg b/features/overlayfs/overlayfs_m.cfg new file mode 100644 index 0000000..b30428d --- /dev/null +++ b/features/overlayfs/overlayfs_m.cfg @@ -0,0 +1 @@ +CONFIG_OVERLAY_FS=m diff --git a/features/overlayfs/overlayfs_m.scc b/features/overlayfs/overlayfs_m.scc new file mode 100644 index 0000000..7d4491c --- /dev/null +++ b/features/overlayfs/overlayfs_m.scc @@ -0,0 +1,5 @@ +define KFEATURE_DESCRIPTION "Build overlay FS support as a module" + +define KFEATURE_COMPATIBILITY all + +kconf hardware overlayfs_m.cfg diff --git a/features/printk/printk_n.cfg b/features/printk/printk_n.cfg index d4c04cb..7f0df22 100644 --- a/features/printk/printk_n.cfg +++ b/features/printk/printk_n.cfg @@ -1,2 +1,3 @@ CONFIG_PRINTK=n CONFIG_PRINTK_NMI=n +CONFIG_X86_VERBOSE_BOOTUP=n diff --git a/features/printk/printk_y.cfg b/features/printk/printk_y.cfg index 522de7d..0fcc9f0 100644 --- a/features/printk/printk_y.cfg +++ b/features/printk/printk_y.cfg @@ -1,3 +1,4 @@ CONFIG_PRINTK=y CONFIG_PRINTK_NMI=y CONFIG_EARLY_PRINTK=y +CONFIG_X86_VERBOSE_BOOTUP=y diff --git a/features/reduced_kernel_footprint/reduced_kernel_footprint.scc b/features/reduced_kernel_footprint/reduced_kernel_footprint.scc index fe07e29..87a915f 100644 --- a/features/reduced_kernel_footprint/reduced_kernel_footprint.scc +++ b/features/reduced_kernel_footprint/reduced_kernel_footprint.scc @@ -11,10 +11,11 @@ include features/ata/ata_n.scc include features/backlight/backlight_n.scc include features/bug_support/bug_support_n.scc include features/bluetooth/bluetooth_n.scc +include features/bus/pci_cnb20le_n.scc include features/cdrom/cdrom_n.scc include features/cdrom_fs/cdrom_fs_n.scc include features/cgroupdbg/cgroupdbg_n.scc -include features/debug/debug_n.scc +include features/debug/debug_kernel_n.scc include features/devcoredump/devcoredump_n.scc include features/display/display_n.scc include features/drm/drm_n.scc @@ -26,6 +27,7 @@ include features/hid/hid_n.scc include features/hidsensor/hidsensor_n.scc include features/ieee802154/ieee802154_n.scc include features/inclinometer/inclinometer_n.scc +include features/input/input_n.scc include features/keyboard/keyboard_n.scc include features/kgdb/kgdb_n.scc include features/kprobes/kprobes_n.scc @@ -38,7 +40,6 @@ include features/mousedev/mousedev_n.scc include features/netdevices/netdevices_n.scc include features/nfc/nfc_n.scc include features/powermanagement/powermanagement_n.scc -include features/printk/printk_n.scc include features/pcspkr/pcspkr_n.scc include features/rcudbg/rcudbg_n.scc include features/rfkill/rfkill_n.scc @@ -53,5 +54,13 @@ include features/wireless/wireless_n.scc include features/wlan/wlan_n.scc # Added as loadable module +include features/btrfs/btrfs_m.scc +include features/intel-e1xxxx/e100_m.scc +include features/intel-e1xxxx/e1xxxx_m.scc +include features/ixgbe/ixgbe_m.scc +include features/mdio/mdio_m.scc +include features/mii/mii_m.scc +include features/overlayfs/overlayfs_m.scc include features/usbnet/usbnet_m.scc include features/usbsupport/usbsupport_m.scc +include features/xor_blocks/xor_blocks_m.scc diff --git a/features/xor_blocks/xor_blocks_m.cfg b/features/xor_blocks/xor_blocks_m.cfg new file mode 100644 index 0000000..584c49c --- /dev/null +++ b/features/xor_blocks/xor_blocks_m.cfg @@ -0,0 +1 @@ +CONFIG_XOR_BLOCKS=m diff --git a/features/xor_blocks/xor_blocks_m.scc b/features/xor_blocks/xor_blocks_m.scc new file mode 100644 index 0000000..3ef6b9d --- /dev/null +++ b/features/xor_blocks/xor_blocks_m.scc @@ -0,0 +1,5 @@ +define KFEATURE_DESCRIPTION "Build XOR blocks as a module" + +define KFEATURE_COMPATIBILITY all + +kconf hardware xor_blocks_m.cfg diff --git a/patches/kernel_startend_msg/0001-printk-add-Enea-Linux-boot-start-end-messages.patch b/patches/kernel_startend_msg/0001-printk-add-Enea-Linux-boot-start-end-messages.patch new file mode 100644 index 0000000..0fa8756 --- /dev/null +++ b/patches/kernel_startend_msg/0001-printk-add-Enea-Linux-boot-start-end-messages.patch @@ -0,0 +1,95 @@ +From b91730ba705d151577974d5fb9f5371a4569b467 Mon Sep 17 00:00:00 2001 +From: Adrian Calianu +Date: Tue, 6 Jun 2017 15:47:54 +0200 +Subject: [PATCH 1/1] printk: add Enea Linux boot start/end messages + +Signed-off-by: Adrian Calianu +--- + arch/x86/boot/compressed/misc.c | 23 ++++++++++++----------- + init/main.c | 4 +++- + 2 files changed, 15 insertions(+), 12 deletions(-) + +diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c +index b3c5a5f0..9fdf3c6 100644 +--- a/arch/x86/boot/compressed/misc.c ++++ b/arch/x86/boot/compressed/misc.c +@@ -202,10 +202,10 @@ static void handle_relocations(void *output, unsigned long output_len, + delta = virt_addr - LOAD_PHYSICAL_ADDR; + + if (!delta) { +- debug_putstr("No relocation needed... "); ++ /* debug_putstr("No relocation needed... "); */ + return; + } +- debug_putstr("Performing relocations... "); ++ /* debug_putstr("Performing relocations... "); */ + + /* + * Process relocations: 32 bit relocations first then 64 bit after. +@@ -286,7 +286,7 @@ static void parse_elf(void *output) + return; + } + +- debug_putstr("Parsing ELF... "); ++ /* debug_putstr("Parsing ELF... ");*/ + + phdrs = malloc(sizeof(*phdrs) * ehdr.e_phnum); + if (!phdrs) +@@ -360,17 +360,18 @@ asmlinkage __visible void *extract_kernel(void *rmode, memptr heap, + cols = boot_params->screen_info.orig_video_cols; + + console_init(); +- debug_putstr("early console in extract_kernel\n"); ++ /* debug_putstr("early console in extract_kernel\n");*/ ++ debug_putstr("\n");debug_putstr("Enea Linux kernel boot start\n"); + + free_mem_ptr = heap; /* Heap */ + free_mem_end_ptr = heap + BOOT_HEAP_SIZE; + + /* Report initial kernel position details. */ +- debug_putaddr(input_data); +- debug_putaddr(input_len); +- debug_putaddr(output); +- debug_putaddr(output_len); +- debug_putaddr(kernel_total_size); ++ /*debug_putaddr(input_data); */ ++ /*debug_putaddr(input_len); */ ++ /*debug_putaddr(output); */ ++ /*debug_putaddr(output_len); */ ++ /*debug_putaddr(kernel_total_size);*/ + + /* + * The memory hole needed for the kernel is the larger of either +@@ -401,11 +402,11 @@ asmlinkage __visible void *extract_kernel(void *rmode, memptr heap, + error("Destination virtual address changed when not relocatable"); + #endif + +- debug_putstr("\nDecompressing Linux... "); ++ /*debug_putstr("\nDecompressing Linux... ");*/ + __decompress(input_data, input_len, NULL, NULL, output, output_len, + NULL, error); + parse_elf(output); + handle_relocations(output, output_len, virt_addr); +- debug_putstr("done.\nBooting the kernel.\n"); ++ /*debug_putstr("done.\nBooting the kernel.\n");*/ + return output; + } +diff --git a/init/main.c b/init/main.c +index 8358cbe..613caa1 100644 +--- a/init/main.c ++++ b/init/main.c +@@ -976,8 +976,10 @@ static int __ref kernel_init(void *unused) + if (!try_to_run_init_process("/sbin/init") || + !try_to_run_init_process("/etc/init") || + !try_to_run_init_process("/bin/init") || +- !try_to_run_init_process("/bin/sh")) ++ !try_to_run_init_process("/bin/sh")) { ++ printk(KERN_EMERG "Enea Linux kernel boot end\n"); + return 0; ++ } + + panic("No working init found. Try passing init= option to kernel. " + "See Linux Documentation/init.txt for guidance."); +-- +2.7.4 + diff --git a/patches/kernel_startend_msg/kernel_startend_msg.scc b/patches/kernel_startend_msg/kernel_startend_msg.scc new file mode 100644 index 0000000..e6da49c --- /dev/null +++ b/patches/kernel_startend_msg/kernel_startend_msg.scc @@ -0,0 +1,4 @@ +define KFEATURE_DESCRIPTION "Enable the kernel to output messages when it starts and ends booting" +define KFEATURE_COMPATIBILITY all + +patch 0001-printk-add-Enea-Linux-boot-start-end-messages.patch -- cgit v1.2.3-54-g00ecf