14 Commits
Author SHA1 Message Date
Gao feng bd9623c892 Merge pull request #43 from gnawux/release-0.5
release hyper/runv 0.5
2016-02-05 15:46:51 +08:00
Xu Wang 00e65b239c release hyper/runv 0.5
Signed-off-by: Xu Wang <gnawux@gmail.com>
2016-02-05 15:42:36 +08:00
Lai Jiangshan b654a0fbd3 Merge pull request #42 from gao-feng/free
fix possible access memory after free
2016-02-01 10:56:40 +08:00
Gao feng 2f757d249d Merge pull request #41 from gnawux/resize_cbfs
new kernel is bigger, increase the cbfs rom size
2016-01-31 21:22:45 +08:00
Gao feng db33f31dc1 fix possible access memory after free
For tasks created by clone_VM, they share the memory with parent,
so when parent frees the stack, children may still access to this
stack. so don't free stack when children is still using the stack.

Signed-off-by: Gao feng <omarapazanadi@gmail.com>
2016-01-31 19:24:07 +08:00
Wang Xu 661dcdda07 new kernel is bigger, increase the cbfs rom size
Signed-off-by: Wang Xu <gnawux@gmail.com>
2016-01-30 23:42:06 +08:00
Gao feng 22a65f7666 Merge pull request #40 from laijs/hot-add-cpu-mem
enable hot adding cpu/mem
2016-01-28 15:51:17 +08:00
Lai Jiangshan 1ce35da941 enable hot adding cpu/mem
Signed-off-by: Lai Jiangshan <jiangshanlai@gmail.com>
2016-01-28 15:48:43 +08:00
Xu Wang e6cffd9add Merge pull request #39 from laijs/escape
handle all escaped character correctly
2016-01-16 08:04:50 +08:00
Lai Jiangshan 213a00ec5e handle all escaped character correctly
Signed-off-by: Lai Jiangshan <jiangshanlai@gmail.com>
2016-01-15 22:36:12 +08:00
Lai Jiangshan c03c057a42 Merge pull request #37 from gao-feng/escape
handle escaped characters
2016-01-15 21:59:44 +08:00
Gao feng 73849713e8 handle escaped characters
./hyper run --rm ubuntu echo xxxx\>\"\\aadasd\"\>\<\>\<\<\<\\\\\\\"\as
POD id is pod-nvpvjBScdB
xxxx>"\aadasd"><><<<\\\"as

echo xxxx\>\"\\aadasd\"\>\<\>\<\<\<\\\\\\\"\as
xxxx>"\aadasd"><><<<\\\"as

Signed-off-by: Gao feng <omarapazanadi@gmail.com>
2016-01-14 11:12:33 +08:00
Lai Jiangshan 0610a4e156 Merge pull request #31 from gao-feng/exit
send out exec exit code
2016-01-07 16:44:17 +08:00
Gao feng 29efaadf0a send out exec exit code
Signed-off-by: Gao feng <omarapazanadi@gmail.com>
2016-01-06 00:12:30 +08:00
10 changed files with 487 additions and 133 deletions
BIN
View File
Binary file not shown.
+202 -63
View File
@@ -1,6 +1,6 @@
# #
# Automatically generated file; DO NOT EDIT. # Automatically generated file; DO NOT EDIT.
# Linux/x86 4.0.4 Kernel Configuration # Linux/x86 4.4.0 Kernel Configuration
# #
CONFIG_64BIT=y CONFIG_64BIT=y
CONFIG_X86_64=y CONFIG_X86_64=y
@@ -36,10 +36,10 @@ CONFIG_AUDIT_ARCH=y
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_X86_64_SMP=y CONFIG_X86_64_SMP=y
CONFIG_X86_HT=y
CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11"
CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_FIX_EARLYCON_MEM=y CONFIG_FIX_EARLYCON_MEM=y
CONFIG_PGTABLE_LEVELS=4
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y CONFIG_BUILDTIME_EXTABLE_SORT=y
@@ -81,10 +81,11 @@ CONFIG_HAVE_ARCH_AUDITSYSCALL=y
# #
CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y
CONFIG_GENERIC_PENDING_IRQ=y CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_DOMAIN_HIERARCHY=y
CONFIG_GENERIC_MSI_IRQ=y CONFIG_GENERIC_MSI_IRQ=y
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
CONFIG_IRQ_FORCED_THREADING=y CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y CONFIG_SPARSE_IRQ=y
CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_CLOCKSOURCE_WATCHDOG=y
@@ -92,7 +93,6 @@ CONFIG_ARCH_CLOCKSOURCE_DATA=y
CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_GENERIC_CMOS_UPDATE=y
@@ -103,18 +103,18 @@ CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_TICK_ONESHOT=y CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set # CONFIG_HZ_PERIODIC is not set
# CONFIG_NO_HZ_IDLE is not set CONFIG_NO_HZ_IDLE=y
CONFIG_NO_HZ_FULL=y # CONFIG_NO_HZ_FULL is not set
# CONFIG_NO_HZ_FULL_ALL is not set CONFIG_NO_HZ=y
# CONFIG_NO_HZ_FULL_SYSIDLE is not set CONFIG_HIGH_RES_TIMERS=y
# CONFIG_NO_HZ is not set
# CONFIG_HIGH_RES_TIMERS is not set
# #
# CPU/Task time and stats accounting # CPU/Task time and stats accounting
# #
CONFIG_VIRT_CPU_ACCOUNTING=y CONFIG_VIRT_CPU_ACCOUNTING=y
# CONFIG_TICK_CPU_ACCOUNTING is not set
CONFIG_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_VIRT_CPU_ACCOUNTING_GEN=y
# CONFIG_IRQ_TIME_ACCOUNTING is not set
CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y CONFIG_TASKSTATS=y
@@ -126,33 +126,27 @@ CONFIG_TASK_IO_ACCOUNTING=y
# RCU Subsystem # RCU Subsystem
# #
CONFIG_TREE_RCU=y CONFIG_TREE_RCU=y
# CONFIG_RCU_EXPERT is not set
CONFIG_SRCU=y CONFIG_SRCU=y
# CONFIG_TASKS_RCU is not set # CONFIG_TASKS_RCU is not set
CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_STALL_COMMON=y
CONFIG_CONTEXT_TRACKING=y CONFIG_CONTEXT_TRACKING=y
CONFIG_RCU_USER_QS=y
# CONFIG_CONTEXT_TRACKING_FORCE is not set # CONFIG_CONTEXT_TRACKING_FORCE is not set
CONFIG_RCU_FANOUT=64
CONFIG_RCU_FANOUT_LEAF=16
# CONFIG_RCU_FANOUT_EXACT is not set
CONFIG_RCU_FAST_NO_HZ=y
# CONFIG_TREE_RCU_TRACE is not set # CONFIG_TREE_RCU_TRACE is not set
CONFIG_RCU_KTHREAD_PRIO=0 # CONFIG_RCU_EXPEDITE_BOOT is not set
CONFIG_RCU_NOCB_CPU=y
# CONFIG_RCU_NOCB_CPU_NONE is not set
# CONFIG_RCU_NOCB_CPU_ZERO is not set
CONFIG_RCU_NOCB_CPU_ALL=y
# CONFIG_BUILD_BIN2C is not set # CONFIG_BUILD_BIN2C is not set
# CONFIG_IKCONFIG is not set # CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=18 CONFIG_LOG_BUF_SHIFT=18
CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_ARCH_SUPPORTS_INT128=y
# CONFIG_NUMA_BALANCING is not set # CONFIG_NUMA_BALANCING is not set
CONFIG_CGROUPS=y CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set # CONFIG_CGROUP_DEBUG is not set
# CONFIG_CGROUP_FREEZER is not set # CONFIG_CGROUP_FREEZER is not set
# CONFIG_CGROUP_PIDS is not set
# CONFIG_CGROUP_DEVICE is not set # CONFIG_CGROUP_DEVICE is not set
# CONFIG_CPUSETS is not set # CONFIG_CPUSETS is not set
# CONFIG_CGROUP_CPUACCT is not set # CONFIG_CGROUP_CPUACCT is not set
@@ -188,6 +182,7 @@ CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_HAVE_PCSPKR_PLATFORM=y CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BPF=y CONFIG_BPF=y
# CONFIG_EXPERT is not set # CONFIG_EXPERT is not set
CONFIG_MULTIUSER=y
CONFIG_SGETMASK_SYSCALL=y CONFIG_SGETMASK_SYSCALL=y
CONFIG_SYSFS_SYSCALL=y CONFIG_SYSFS_SYSCALL=y
# CONFIG_SYSCTL_SYSCALL is not set # CONFIG_SYSCTL_SYSCALL is not set
@@ -206,7 +201,9 @@ CONFIG_EVENTFD=y
CONFIG_SHMEM=y CONFIG_SHMEM=y
CONFIG_AIO=y CONFIG_AIO=y
CONFIG_ADVISE_SYSCALLS=y CONFIG_ADVISE_SYSCALLS=y
# CONFIG_USERFAULTFD is not set
CONFIG_PCI_QUIRKS=y CONFIG_PCI_QUIRKS=y
CONFIG_MEMBARRIER=y
# CONFIG_EMBEDDED is not set # CONFIG_EMBEDDED is not set
CONFIG_HAVE_PERF_EVENTS=y CONFIG_HAVE_PERF_EVENTS=y
@@ -218,6 +215,7 @@ CONFIG_VM_EVENT_COUNTERS=y
# CONFIG_COMPAT_BRK is not set # CONFIG_COMPAT_BRK is not set
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SYSTEM_DATA_VERIFICATION is not set
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPROFILE=y
CONFIG_OPROFILE_NMI_TIMER=y CONFIG_OPROFILE_NMI_TIMER=y
@@ -236,6 +234,7 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_ATTRS=y CONFIG_HAVE_DMA_ATTRS=y
CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_DMA_API_DEBUG=y CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y CONFIG_HAVE_HW_BREAKPOINT=y
@@ -259,9 +258,12 @@ CONFIG_HAVE_CONTEXT_TRACKING=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_HAVE_ARCH_HUGE_VMAP=y
CONFIG_HAVE_ARCH_SOFT_DIRTY=y CONFIG_HAVE_ARCH_SOFT_DIRTY=y
CONFIG_MODULES_USE_ELF_RELA=y CONFIG_MODULES_USE_ELF_RELA=y
CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
CONFIG_HAVE_COPY_THREAD_TLS=y
# #
# GCOV-based kernel profiling # GCOV-based kernel profiling
@@ -278,7 +280,7 @@ CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SRCVERSION_ALL is not set
# CONFIG_MODULE_SIG is not set # CONFIG_MODULE_SIG is not set
# CONFIG_MODULE_COMPRESS is not set # CONFIG_MODULE_COMPRESS is not set
CONFIG_STOP_MACHINE=y CONFIG_MODULES_TREE_LOOKUP=y
CONFIG_BLOCK=y CONFIG_BLOCK=y
CONFIG_BLK_DEV_BSG=y CONFIG_BLK_DEV_BSG=y
CONFIG_BLK_DEV_BSGLIB=y CONFIG_BLK_DEV_BSGLIB=y
@@ -310,8 +312,10 @@ CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_RWSEM_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y
CONFIG_LOCK_SPIN_ON_OWNER=y CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_ARCH_USE_QUEUE_RWLOCK=y CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
CONFIG_QUEUE_RWLOCK=y CONFIG_QUEUED_SPINLOCKS=y
CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
CONFIG_QUEUED_RWLOCKS=y
CONFIG_FREEZER=y CONFIG_FREEZER=y
# #
@@ -320,6 +324,7 @@ CONFIG_FREEZER=y
CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA=y
CONFIG_SMP=y CONFIG_SMP=y
CONFIG_X86_FEATURE_NAMES=y CONFIG_X86_FEATURE_NAMES=y
# CONFIG_X86_X2APIC is not set
CONFIG_X86_MPPARSE=y CONFIG_X86_MPPARSE=y
# CONFIG_X86_EXTENDED_PLATFORM is not set # CONFIG_X86_EXTENDED_PLATFORM is not set
# CONFIG_X86_INTEL_LPSS is not set # CONFIG_X86_INTEL_LPSS is not set
@@ -332,14 +337,13 @@ CONFIG_PARAVIRT=y
CONFIG_XEN=y CONFIG_XEN=y
CONFIG_XEN_DOM0=y CONFIG_XEN_DOM0=y
CONFIG_XEN_PVHVM=y CONFIG_XEN_PVHVM=y
CONFIG_XEN_MAX_DOMAIN_MEMORY=500 CONFIG_XEN_512GB=y
CONFIG_XEN_SAVE_RESTORE=y CONFIG_XEN_SAVE_RESTORE=y
CONFIG_XEN_PVH=y CONFIG_XEN_PVH=y
CONFIG_KVM_GUEST=y CONFIG_KVM_GUEST=y
CONFIG_PARAVIRT_TIME_ACCOUNTING=y CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_PARAVIRT_CLOCK=y CONFIG_PARAVIRT_CLOCK=y
CONFIG_NO_BOOTMEM=y CONFIG_NO_BOOTMEM=y
# CONFIG_MEMTEST is not set
# CONFIG_MK8 is not set # CONFIG_MK8 is not set
# CONFIG_MPSC is not set # CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set # CONFIG_MCORE2 is not set
@@ -367,23 +371,21 @@ CONFIG_SCHED_MC=y
CONFIG_PREEMPT_NONE=y CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
CONFIG_X86_UP_APIC_MSI=y
CONFIG_X86_LOCAL_APIC=y CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
# CONFIG_X86_MCE is not set # CONFIG_X86_MCE is not set
# CONFIG_VM86 is not set
CONFIG_X86_16BIT=y CONFIG_X86_16BIT=y
CONFIG_X86_ESPFIX64=y CONFIG_X86_ESPFIX64=y
CONFIG_X86_VSYSCALL_EMULATION=y CONFIG_X86_VSYSCALL_EMULATION=y
# CONFIG_I8K is not set # CONFIG_I8K is not set
# CONFIG_MICROCODE is not set # CONFIG_MICROCODE is not set
# CONFIG_MICROCODE_INTEL_EARLY is not set
# CONFIG_MICROCODE_AMD_EARLY is not set
# CONFIG_X86_MSR is not set # CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set # CONFIG_X86_CPUID is not set
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_DIRECT_GBPAGES=y CONFIG_X86_DIRECT_GBPAGES=y
CONFIG_NUMA=y CONFIG_NUMA=y
# CONFIG_AMD_NUMA is not set # CONFIG_AMD_NUMA is not set
CONFIG_X86_64_ACPI_NUMA=y CONFIG_X86_64_ACPI_NUMA=y
@@ -393,6 +395,7 @@ CONFIG_NODES_SHIFT=9
CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_MEMORY_PROBE=y
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM_MANUAL=y
@@ -408,8 +411,9 @@ CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
CONFIG_ARCH_DISCARD_MEMBLOCK=y CONFIG_ARCH_DISCARD_MEMBLOCK=y
# CONFIG_MOVABLE_NODE is not set # CONFIG_MOVABLE_NODE is not set
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
# CONFIG_MEMORY_HOTPLUG is not set CONFIG_MEMORY_HOTPLUG=y
CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_MEMORY_HOTPLUG_SPARSE=y
# CONFIG_MEMORY_HOTREMOVE is not set
CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
CONFIG_MEMORY_BALLOON=y CONFIG_MEMORY_BALLOON=y
@@ -429,6 +433,10 @@ CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
# CONFIG_ZBUD is not set # CONFIG_ZBUD is not set
# CONFIG_ZSMALLOC is not set # CONFIG_ZSMALLOC is not set
CONFIG_GENERIC_EARLY_IOREMAP=y CONFIG_GENERIC_EARLY_IOREMAP=y
CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
# CONFIG_IDLE_PAGE_TRACKING is not set
# CONFIG_X86_PMEM_LEGACY is not set
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set # CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
CONFIG_X86_RESERVE_LOW=64 CONFIG_X86_RESERVE_LOW=64
CONFIG_MTRR=y CONFIG_MTRR=y
@@ -445,8 +453,9 @@ CONFIG_SECCOMP=y
# CONFIG_HZ_300 is not set # CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y CONFIG_HZ_1000=y
CONFIG_HZ=1000 CONFIG_HZ=1000
# CONFIG_SCHED_HRTICK is not set CONFIG_SCHED_HRTICK=y
# CONFIG_KEXEC is not set # CONFIG_KEXEC is not set
# CONFIG_KEXEC_FILE is not set
# CONFIG_CRASH_DUMP is not set # CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x1000000 CONFIG_PHYSICAL_START=0x1000000
CONFIG_RELOCATABLE=y CONFIG_RELOCATABLE=y
@@ -455,9 +464,14 @@ CONFIG_PHYSICAL_ALIGN=0x1000000
CONFIG_HOTPLUG_CPU=y CONFIG_HOTPLUG_CPU=y
# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set # CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set # CONFIG_DEBUG_HOTPLUG_CPU0 is not set
# CONFIG_LEGACY_VSYSCALL_NATIVE is not set
CONFIG_LEGACY_VSYSCALL_EMULATE=y
# CONFIG_LEGACY_VSYSCALL_NONE is not set
# CONFIG_CMDLINE_BOOL is not set # CONFIG_CMDLINE_BOOL is not set
CONFIG_MODIFY_LDT_SYSCALL=y
CONFIG_HAVE_LIVEPATCH=y CONFIG_HAVE_LIVEPATCH=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
CONFIG_USE_PERCPU_NUMA_NODE_ID=y CONFIG_USE_PERCPU_NUMA_NODE_ID=y
# #
@@ -476,13 +490,22 @@ CONFIG_PM=y
CONFIG_ACPI=y CONFIG_ACPI=y
CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
# CONFIG_ACPI_DEBUGGER is not set
# CONFIG_ACPI_PROCFS_POWER is not set # CONFIG_ACPI_PROCFS_POWER is not set
CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
# CONFIG_ACPI_EC_DEBUGFS is not set # CONFIG_ACPI_EC_DEBUGFS is not set
# CONFIG_ACPI_AC is not set # CONFIG_ACPI_AC is not set
# CONFIG_ACPI_BATTERY is not set # CONFIG_ACPI_BATTERY is not set
# CONFIG_ACPI_BUTTON is not set # CONFIG_ACPI_BUTTON is not set
CONFIG_ACPI_FAN=y
# CONFIG_ACPI_DOCK is not set # CONFIG_ACPI_DOCK is not set
# CONFIG_ACPI_PROCESSOR is not set CONFIG_ACPI_CPU_FREQ_PSS=y
CONFIG_ACPI_PROCESSOR_IDLE=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_HOTPLUG_CPU=y
# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set
CONFIG_ACPI_THERMAL=y
CONFIG_ACPI_NUMA=y CONFIG_ACPI_NUMA=y
CONFIG_ACPI_CUSTOM_DSDT_FILE="" CONFIG_ACPI_CUSTOM_DSDT_FILE=""
# CONFIG_ACPI_CUSTOM_DSDT is not set # CONFIG_ACPI_CUSTOM_DSDT is not set
@@ -490,11 +513,13 @@ CONFIG_ACPI_CUSTOM_DSDT_FILE=""
# CONFIG_ACPI_DEBUG is not set # CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_PCI_SLOT is not set # CONFIG_ACPI_PCI_SLOT is not set
CONFIG_X86_PM_TIMER=y CONFIG_X86_PM_TIMER=y
# CONFIG_ACPI_CONTAINER is not set CONFIG_ACPI_CONTAINER=y
CONFIG_ACPI_HOTPLUG_MEMORY=y
CONFIG_ACPI_HOTPLUG_IOAPIC=y CONFIG_ACPI_HOTPLUG_IOAPIC=y
# CONFIG_ACPI_SBS is not set # CONFIG_ACPI_SBS is not set
# CONFIG_ACPI_HED is not set # CONFIG_ACPI_HED is not set
# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set # CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set
# CONFIG_ACPI_NFIT is not set
CONFIG_HAVE_ACPI_APEI=y CONFIG_HAVE_ACPI_APEI=y
CONFIG_HAVE_ACPI_APEI_NMI=y CONFIG_HAVE_ACPI_APEI_NMI=y
# CONFIG_ACPI_APEI is not set # CONFIG_ACPI_APEI is not set
@@ -509,8 +534,11 @@ CONFIG_HAVE_ACPI_APEI_NMI=y
# #
# CPU Idle # CPU Idle
# #
# CONFIG_CPU_IDLE is not set CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set # CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
# CONFIG_INTEL_IDLE is not set
# #
# Memory power savings # Memory power savings
@@ -534,7 +562,9 @@ CONFIG_PCIEASPM_DEFAULT=y
# CONFIG_PCIEASPM_POWERSAVE is not set # CONFIG_PCIEASPM_POWERSAVE is not set
# CONFIG_PCIEASPM_PERFORMANCE is not set # CONFIG_PCIEASPM_PERFORMANCE is not set
CONFIG_PCIE_PME=y CONFIG_PCIE_PME=y
CONFIG_PCI_BUS_ADDR_T_64BIT=y
CONFIG_PCI_MSI=y CONFIG_PCI_MSI=y
CONFIG_PCI_MSI_IRQ_DOMAIN=y
CONFIG_PCI_REALLOC_ENABLE_AUTO=y CONFIG_PCI_REALLOC_ENABLE_AUTO=y
CONFIG_PCI_STUB=y CONFIG_PCI_STUB=y
CONFIG_XEN_PCIDEV_FRONTEND=y CONFIG_XEN_PCIDEV_FRONTEND=y
@@ -565,13 +595,13 @@ CONFIG_HOTPLUG_PCI_CPCI=y
# Executable file formats / Emulations # Executable file formats / Emulations
# #
CONFIG_BINFMT_ELF=y CONFIG_BINFMT_ELF=y
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_BINFMT_SCRIPT=y CONFIG_BINFMT_SCRIPT=y
# CONFIG_HAVE_AOUT is not set # CONFIG_HAVE_AOUT is not set
CONFIG_BINFMT_MISC=y CONFIG_BINFMT_MISC=y
CONFIG_COREDUMP=y CONFIG_COREDUMP=y
# CONFIG_IA32_EMULATION is not set # CONFIG_IA32_EMULATION is not set
# CONFIG_X86_X32 is not set
CONFIG_X86_DEV_DMA_OPS=y CONFIG_X86_DEV_DMA_OPS=y
CONFIG_PMC_ATOM=y CONFIG_PMC_ATOM=y
CONFIG_NET=y CONFIG_NET=y
@@ -595,7 +625,6 @@ CONFIG_INET=y
# CONFIG_SYN_COOKIES is not set # CONFIG_SYN_COOKIES is not set
# CONFIG_NET_UDP_TUNNEL is not set # CONFIG_NET_UDP_TUNNEL is not set
# CONFIG_NET_FOU is not set # CONFIG_NET_FOU is not set
# CONFIG_GENEVE is not set
# CONFIG_INET_AH is not set # CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set # CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set # CONFIG_INET_IPCOMP is not set
@@ -617,6 +646,7 @@ CONFIG_IPV6=y
# CONFIG_INET6_ESP is not set # CONFIG_INET6_ESP is not set
# CONFIG_INET6_IPCOMP is not set # CONFIG_INET6_IPCOMP is not set
# CONFIG_IPV6_MIP6 is not set # CONFIG_IPV6_MIP6 is not set
# CONFIG_IPV6_ILA is not set
# CONFIG_INET6_XFRM_TUNNEL is not set # CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set
# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
@@ -657,9 +687,10 @@ CONFIG_HAVE_NET_DSA=y
# CONFIG_VSOCKETS is not set # CONFIG_VSOCKETS is not set
# CONFIG_NETLINK_MMAP is not set # CONFIG_NETLINK_MMAP is not set
# CONFIG_NETLINK_DIAG is not set # CONFIG_NETLINK_DIAG is not set
# CONFIG_NET_MPLS_GSO is not set # CONFIG_MPLS is not set
# CONFIG_HSR is not set # CONFIG_HSR is not set
# CONFIG_NET_SWITCHDEV is not set # CONFIG_NET_SWITCHDEV is not set
# CONFIG_NET_L3_MASTER_DEV is not set
CONFIG_RPS=y CONFIG_RPS=y
CONFIG_RFS_ACCEL=y CONFIG_RFS_ACCEL=y
CONFIG_XPS=y CONFIG_XPS=y
@@ -688,6 +719,7 @@ CONFIG_NET_9P_VIRTIO=y
# CONFIG_CAIF is not set # CONFIG_CAIF is not set
# CONFIG_CEPH_LIB is not set # CONFIG_CEPH_LIB is not set
# CONFIG_NFC is not set # CONFIG_NFC is not set
# CONFIG_LWTUNNEL is not set
CONFIG_HAVE_BPF_JIT=y CONFIG_HAVE_BPF_JIT=y
# #
@@ -717,6 +749,7 @@ CONFIG_GENERIC_CPU_AUTOPROBE=y
# #
# CONFIG_CONNECTOR is not set # CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set # CONFIG_MTD is not set
# CONFIG_OF is not set
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
# CONFIG_PARPORT is not set # CONFIG_PARPORT is not set
CONFIG_PNP=y CONFIG_PNP=y
@@ -739,7 +772,6 @@ CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
# CONFIG_BLK_DEV_CRYPTOLOOP is not set # CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_DRBD is not set # CONFIG_BLK_DEV_DRBD is not set
# CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_NVME is not set
# CONFIG_BLK_DEV_SKD is not set # CONFIG_BLK_DEV_SKD is not set
# CONFIG_BLK_DEV_SX8 is not set # CONFIG_BLK_DEV_SX8 is not set
CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM=y
@@ -752,6 +784,7 @@ CONFIG_VIRTIO_BLK=y
# CONFIG_BLK_DEV_HD is not set # CONFIG_BLK_DEV_HD is not set
# CONFIG_BLK_DEV_RBD is not set # CONFIG_BLK_DEV_RBD is not set
# CONFIG_BLK_DEV_RSXX is not set # CONFIG_BLK_DEV_RSXX is not set
# CONFIG_BLK_DEV_NVME is not set
# #
# Misc devices # Misc devices
@@ -764,14 +797,13 @@ CONFIG_VIRTIO_BLK=y
# CONFIG_TIFM_CORE is not set # CONFIG_TIFM_CORE is not set
# CONFIG_ENCLOSURE_SERVICES is not set # CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_HP_ILO is not set # CONFIG_HP_ILO is not set
# CONFIG_VMWARE_BALLOON is not set
# CONFIG_SRAM is not set # CONFIG_SRAM is not set
# CONFIG_C2PORT is not set # CONFIG_C2PORT is not set
# #
# EEPROM support # EEPROM support
# #
CONFIG_EEPROM_93CX6=m CONFIG_EEPROM_93CX6=y
# CONFIG_CB710_CORE is not set # CONFIG_CB710_CORE is not set
# #
@@ -788,6 +820,11 @@ CONFIG_EEPROM_93CX6=m
# #
# CONFIG_INTEL_MIC_BUS is not set # CONFIG_INTEL_MIC_BUS is not set
#
# SCIF Bus Driver
#
# CONFIG_SCIF_BUS is not set
# #
# Intel MIC Host Driver # Intel MIC Host Driver
# #
@@ -795,9 +832,19 @@ CONFIG_EEPROM_93CX6=m
# #
# Intel MIC Card Driver # Intel MIC Card Driver
# #
#
# SCIF Driver
#
#
# Intel MIC Coprocessor State Management (COSM) Drivers
#
# CONFIG_GENWQE is not set # CONFIG_GENWQE is not set
# CONFIG_ECHO is not set # CONFIG_ECHO is not set
# CONFIG_CXL_BASE is not set # CONFIG_CXL_BASE is not set
# CONFIG_CXL_KERNEL_API is not set
# CONFIG_CXL_EEH is not set
CONFIG_HAVE_IDE=y CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set # CONFIG_IDE is not set
@@ -859,13 +906,14 @@ CONFIG_SCSI_LOWLEVEL=y
# CONFIG_MEGARAID_NEWGEN is not set # CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set # CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set # CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_MPT2SAS is not set
# CONFIG_SCSI_MPT3SAS is not set # CONFIG_SCSI_MPT3SAS is not set
# CONFIG_SCSI_MPT2SAS is not set
# CONFIG_SCSI_UFSHCD is not set # CONFIG_SCSI_UFSHCD is not set
# CONFIG_SCSI_HPTIOP is not set # CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_BUSLOGIC is not set # CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_VMWARE_PVSCSI is not set # CONFIG_VMWARE_PVSCSI is not set
# CONFIG_XEN_SCSI_FRONTEND is not set # CONFIG_XEN_SCSI_FRONTEND is not set
# CONFIG_SCSI_SNIC is not set
# CONFIG_SCSI_DMX3191D is not set # CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set # CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_FUTURE_DOMAIN is not set
@@ -912,6 +960,7 @@ CONFIG_NET_CORE=y
# CONFIG_NETPOLL is not set # CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set # CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_TUN is not set # CONFIG_TUN is not set
# CONFIG_TUN_VNET_CROSS_LE is not set
# CONFIG_VETH is not set # CONFIG_VETH is not set
CONFIG_VIRTIO_NET=y CONFIG_VIRTIO_NET=y
# CONFIG_NLMON is not set # CONFIG_NLMON is not set
@@ -925,13 +974,7 @@ CONFIG_VIRTIO_NET=y
# Distributed Switch Architecture drivers # Distributed Switch Architecture drivers
# #
# CONFIG_NET_DSA_MV88E6XXX is not set # CONFIG_NET_DSA_MV88E6XXX is not set
# CONFIG_NET_DSA_MV88E6060 is not set
# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set # CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
# CONFIG_NET_DSA_MV88E6131 is not set
# CONFIG_NET_DSA_MV88E6123_61_65 is not set
# CONFIG_NET_DSA_MV88E6171 is not set
# CONFIG_NET_DSA_MV88E6352 is not set
# CONFIG_NET_DSA_BCM_SF2 is not set
CONFIG_ETHERNET=y CONFIG_ETHERNET=y
# CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_ADAPTEC is not set # CONFIG_NET_VENDOR_ADAPTEC is not set
@@ -939,11 +982,18 @@ CONFIG_ETHERNET=y
# CONFIG_NET_VENDOR_ALTEON is not set # CONFIG_NET_VENDOR_ALTEON is not set
# CONFIG_ALTERA_TSE is not set # CONFIG_ALTERA_TSE is not set
# CONFIG_NET_VENDOR_AMD is not set # CONFIG_NET_VENDOR_AMD is not set
# CONFIG_NET_XGENE is not set
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_VENDOR_ATHEROS is not set # CONFIG_NET_VENDOR_ATHEROS is not set
# CONFIG_NET_VENDOR_AURORA is not set
CONFIG_NET_CADENCE=y
# CONFIG_MACB is not set
# CONFIG_NET_VENDOR_BROADCOM is not set # CONFIG_NET_VENDOR_BROADCOM is not set
# CONFIG_NET_VENDOR_BROCADE is not set # CONFIG_NET_VENDOR_BROCADE is not set
CONFIG_NET_VENDOR_CAVIUM=y
# CONFIG_THUNDER_NIC_PF is not set
# CONFIG_THUNDER_NIC_VF is not set
# CONFIG_THUNDER_NIC_BGX is not set
# CONFIG_LIQUIDIO is not set
# CONFIG_NET_VENDOR_CHELSIO is not set # CONFIG_NET_VENDOR_CHELSIO is not set
# CONFIG_NET_VENDOR_CISCO is not set # CONFIG_NET_VENDOR_CISCO is not set
# CONFIG_CX_ECAT is not set # CONFIG_CX_ECAT is not set
@@ -951,6 +1001,7 @@ CONFIG_ETHERNET=y
# CONFIG_NET_VENDOR_DEC is not set # CONFIG_NET_VENDOR_DEC is not set
# CONFIG_NET_VENDOR_DLINK is not set # CONFIG_NET_VENDOR_DLINK is not set
# CONFIG_NET_VENDOR_EMULEX is not set # CONFIG_NET_VENDOR_EMULEX is not set
CONFIG_NET_VENDOR_EZCHIP=y
# CONFIG_NET_VENDOR_EXAR is not set # CONFIG_NET_VENDOR_EXAR is not set
# CONFIG_NET_VENDOR_HP is not set # CONFIG_NET_VENDOR_HP is not set
CONFIG_NET_VENDOR_INTEL=y CONFIG_NET_VENDOR_INTEL=y
@@ -966,7 +1017,6 @@ CONFIG_E1000=y
# CONFIG_I40EVF is not set # CONFIG_I40EVF is not set
# CONFIG_FM10K is not set # CONFIG_FM10K is not set
# CONFIG_NET_VENDOR_I825XX is not set # CONFIG_NET_VENDOR_I825XX is not set
# CONFIG_IP1000 is not set
# CONFIG_JME is not set # CONFIG_JME is not set
# CONFIG_NET_VENDOR_MARVELL is not set # CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MELLANOX is not set # CONFIG_NET_VENDOR_MELLANOX is not set
@@ -981,6 +1031,7 @@ CONFIG_E1000=y
# CONFIG_NET_VENDOR_QLOGIC is not set # CONFIG_NET_VENDOR_QLOGIC is not set
# CONFIG_NET_VENDOR_QUALCOMM is not set # CONFIG_NET_VENDOR_QUALCOMM is not set
# CONFIG_NET_VENDOR_REALTEK is not set # CONFIG_NET_VENDOR_REALTEK is not set
CONFIG_NET_VENDOR_RENESAS=y
# CONFIG_NET_VENDOR_RDC is not set # CONFIG_NET_VENDOR_RDC is not set
# CONFIG_NET_VENDOR_ROCKER is not set # CONFIG_NET_VENDOR_ROCKER is not set
# CONFIG_NET_VENDOR_SAMSUNG is not set # CONFIG_NET_VENDOR_SAMSUNG is not set
@@ -991,6 +1042,7 @@ CONFIG_E1000=y
# CONFIG_NET_VENDOR_SMSC is not set # CONFIG_NET_VENDOR_SMSC is not set
# CONFIG_NET_VENDOR_STMICRO is not set # CONFIG_NET_VENDOR_STMICRO is not set
# CONFIG_NET_VENDOR_SUN is not set # CONFIG_NET_VENDOR_SUN is not set
CONFIG_NET_VENDOR_SYNOPSYS=y
# CONFIG_NET_VENDOR_TEHUTI is not set # CONFIG_NET_VENDOR_TEHUTI is not set
# CONFIG_NET_VENDOR_TI is not set # CONFIG_NET_VENDOR_TI is not set
# CONFIG_NET_VENDOR_VIA is not set # CONFIG_NET_VENDOR_VIA is not set
@@ -1013,7 +1065,9 @@ CONFIG_E1000=y
# CONFIG_WAN is not set # CONFIG_WAN is not set
CONFIG_XEN_NETDEV_FRONTEND=y CONFIG_XEN_NETDEV_FRONTEND=y
# CONFIG_VMXNET3 is not set # CONFIG_VMXNET3 is not set
# CONFIG_FUJITSU_ES is not set
# CONFIG_ISDN is not set # CONFIG_ISDN is not set
# CONFIG_NVM is not set
# #
# Input device support # Input device support
@@ -1085,13 +1139,16 @@ CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SERIAL_8250_SHARE_IRQ=y
# CONFIG_SERIAL_8250_DETECT_IRQ is not set # CONFIG_SERIAL_8250_DETECT_IRQ is not set
CONFIG_SERIAL_8250_RSA=y CONFIG_SERIAL_8250_RSA=y
# CONFIG_SERIAL_8250_FSL is not set
# CONFIG_SERIAL_8250_DW is not set # CONFIG_SERIAL_8250_DW is not set
# CONFIG_SERIAL_8250_RT288X is not set
# CONFIG_SERIAL_8250_FINTEK is not set # CONFIG_SERIAL_8250_FINTEK is not set
# CONFIG_SERIAL_8250_MID is not set
# #
# Non-8250 serial port support # Non-8250 serial port support
# #
# CONFIG_SERIAL_MFD_HSU is not set # CONFIG_SERIAL_UARTLITE is not set
CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set # CONFIG_SERIAL_JSM is not set
@@ -1151,7 +1208,22 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_POWER_SUPPLY is not set # CONFIG_POWER_SUPPLY is not set
# CONFIG_POWER_AVS is not set # CONFIG_POWER_AVS is not set
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
# CONFIG_THERMAL is not set CONFIG_THERMAL=y
# CONFIG_THERMAL_WRITABLE_TRIPS is not set
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
# CONFIG_THERMAL_GOV_FAIR_SHARE is not set
CONFIG_THERMAL_GOV_STEP_WISE=y
# CONFIG_THERMAL_GOV_BANG_BANG is not set
# CONFIG_THERMAL_GOV_USER_SPACE is not set
# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
# CONFIG_THERMAL_EMULATION is not set
# CONFIG_INTEL_POWERCLAMP is not set
# CONFIG_INTEL_SOC_DTS_THERMAL is not set
# CONFIG_INT340X_THERMAL is not set
# CONFIG_INTEL_PCH_THERMAL is not set
# CONFIG_WATCHDOG is not set # CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y CONFIG_SSB_POSSIBLE=y
@@ -1174,8 +1246,11 @@ CONFIG_BCMA_POSSIBLE=y
# CONFIG_HTC_PASIC3 is not set # CONFIG_HTC_PASIC3 is not set
# CONFIG_LPC_ICH is not set # CONFIG_LPC_ICH is not set
# CONFIG_LPC_SCH is not set # CONFIG_LPC_SCH is not set
# CONFIG_MFD_INTEL_LPSS_ACPI is not set
# CONFIG_MFD_INTEL_LPSS_PCI is not set
# CONFIG_MFD_JANZ_CMODIO is not set # CONFIG_MFD_JANZ_CMODIO is not set
# CONFIG_MFD_KEMPLD is not set # CONFIG_MFD_KEMPLD is not set
# CONFIG_MFD_MT6397 is not set
# CONFIG_MFD_RDC321X is not set # CONFIG_MFD_RDC321X is not set
# CONFIG_MFD_RTSX_PCI is not set # CONFIG_MFD_RTSX_PCI is not set
# CONFIG_MFD_SM501 is not set # CONFIG_MFD_SM501 is not set
@@ -1194,10 +1269,6 @@ CONFIG_BCMA_POSSIBLE=y
CONFIG_VGA_ARB=y CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16 CONFIG_VGA_ARB_MAX_GPUS=16
# CONFIG_VGA_SWITCHEROO is not set # CONFIG_VGA_SWITCHEROO is not set
#
# Direct Rendering Manager
#
# CONFIG_DRM is not set # CONFIG_DRM is not set
# #
@@ -1229,6 +1300,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# CONFIG_NEW_LEDS is not set # CONFIG_NEW_LEDS is not set
# CONFIG_ACCESSIBILITY is not set # CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not set # CONFIG_INFINIBAND is not set
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
# CONFIG_EDAC is not set # CONFIG_EDAC is not set
CONFIG_RTC_LIB=y CONFIG_RTC_LIB=y
# CONFIG_RTC_CLASS is not set # CONFIG_RTC_CLASS is not set
@@ -1244,6 +1317,7 @@ CONFIG_VIRTIO=y
CONFIG_VIRTIO_PCI=y CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_PCI_LEGACY=y CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_BALLOON=y CONFIG_VIRTIO_BALLOON=y
# CONFIG_VIRTIO_INPUT is not set
CONFIG_VIRTIO_MMIO=y CONFIG_VIRTIO_MMIO=y
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
@@ -1266,6 +1340,9 @@ CONFIG_XEN_XENBUS_FRONTEND=y
CONFIG_SWIOTLB_XEN=y CONFIG_SWIOTLB_XEN=y
CONFIG_XEN_PRIVCMD=m CONFIG_XEN_PRIVCMD=m
CONFIG_XEN_HAVE_PVMMU=y CONFIG_XEN_HAVE_PVMMU=y
CONFIG_XEN_AUTO_XLATE=y
CONFIG_XEN_ACPI=y
CONFIG_XEN_HAVE_VPMU=y
# CONFIG_STAGING is not set # CONFIG_STAGING is not set
# CONFIG_X86_PLATFORM_DEVICES is not set # CONFIG_X86_PLATFORM_DEVICES is not set
# CONFIG_CHROME_PLATFORMS is not set # CONFIG_CHROME_PLATFORMS is not set
@@ -1300,6 +1377,7 @@ CONFIG_CLKBLD_I8253=y
# #
# SOC (System On Chip) specific Drivers # SOC (System On Chip) specific Drivers
# #
# CONFIG_SUNXI_SRAM is not set
# CONFIG_SOC_TI is not set # CONFIG_SOC_TI is not set
# CONFIG_PM_DEVFREQ is not set # CONFIG_PM_DEVFREQ is not set
# CONFIG_EXTCON is not set # CONFIG_EXTCON is not set
@@ -1316,15 +1394,33 @@ CONFIG_CLKBLD_I8253=y
# PHY Subsystem # PHY Subsystem
# #
# CONFIG_GENERIC_PHY is not set # CONFIG_GENERIC_PHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_BCM_KONA_USB2_PHY is not set # CONFIG_BCM_KONA_USB2_PHY is not set
# CONFIG_POWERCAP is not set # CONFIG_POWERCAP is not set
# CONFIG_MCB is not set # CONFIG_MCB is not set
#
# Performance monitor support
#
# CONFIG_RAS is not set
# CONFIG_THUNDERBOLT is not set # CONFIG_THUNDERBOLT is not set
# #
# Android # Android
# #
# CONFIG_ANDROID is not set # CONFIG_ANDROID is not set
# CONFIG_LIBNVDIMM is not set
# CONFIG_NVMEM is not set
# CONFIG_STM is not set
# CONFIG_STM_DUMMY is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
# CONFIG_INTEL_TH is not set
#
# FPGA Configuration Support
#
# CONFIG_FPGA is not set
# #
# Firmware Drivers # Firmware Drivers
@@ -1346,9 +1442,10 @@ CONFIG_DCACHE_WORD_ACCESS=y
# CONFIG_EXT2_FS is not set # CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set # CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_POSIX_ACL=y
# CONFIG_EXT4_FS_SECURITY is not set # CONFIG_EXT4_FS_SECURITY is not set
# CONFIG_EXT4_ENCRYPTION is not set
# CONFIG_EXT4_DEBUG is not set # CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y CONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not set # CONFIG_JBD2_DEBUG is not set
@@ -1364,6 +1461,7 @@ CONFIG_XFS_POSIX_ACL=y
# CONFIG_GFS2_FS is not set # CONFIG_GFS2_FS is not set
# CONFIG_BTRFS_FS is not set # CONFIG_BTRFS_FS is not set
# CONFIG_NILFS2_FS is not set # CONFIG_NILFS2_FS is not set
# CONFIG_F2FS_FS is not set
# CONFIG_FS_DAX is not set # CONFIG_FS_DAX is not set
CONFIG_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y CONFIG_EXPORTFS=y
@@ -1403,6 +1501,7 @@ CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set # CONFIG_PROC_KCORE is not set
CONFIG_PROC_SYSCTL=y CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y CONFIG_PROC_PAGE_MONITOR=y
# CONFIG_PROC_CHILDREN is not set
CONFIG_KERNFS=y CONFIG_KERNFS=y
CONFIG_SYSFS=y CONFIG_SYSFS=y
CONFIG_TMPFS=y CONFIG_TMPFS=y
@@ -1497,6 +1596,7 @@ CONFIG_FRAME_WARN=2048
# CONFIG_DEBUG_FS is not set # CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set # CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not set # CONFIG_DEBUG_SECTION_MISMATCH is not set
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
CONFIG_ARCH_WANT_FRAME_POINTERS=y CONFIG_ARCH_WANT_FRAME_POINTERS=y
# CONFIG_FRAME_POINTER is not set # CONFIG_FRAME_POINTER is not set
# CONFIG_MAGIC_SYSRQ is not set # CONFIG_MAGIC_SYSRQ is not set
@@ -1517,6 +1617,8 @@ CONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_PANIC_ON_OOPS is not set # CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0 CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_INFO=y
# CONFIG_DEBUG_TIMEKEEPING is not set
# #
# Lock Debugging (spinlocks, mutexes, etc...) # Lock Debugging (spinlocks, mutexes, etc...)
@@ -1527,6 +1629,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
# #
# RCU Debugging # RCU Debugging
# #
# CONFIG_PROVE_RCU is not set
# CONFIG_SPARSE_RCU_POINTER is not set # CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_TORTURE_TEST is not set # CONFIG_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=60 CONFIG_RCU_CPU_STALL_TIMEOUT=60
@@ -1551,6 +1654,7 @@ CONFIG_TRACING_SUPPORT=y
# CONFIG_TEST_HEXDUMP is not set # CONFIG_TEST_HEXDUMP is not set
# CONFIG_TEST_STRING_HELPERS is not set # CONFIG_TEST_STRING_HELPERS is not set
# CONFIG_TEST_KSTRTOX is not set # CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_PRINTF is not set
# CONFIG_TEST_RHASHTABLE is not set # CONFIG_TEST_RHASHTABLE is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_DMA_API_DEBUG is not set # CONFIG_DMA_API_DEBUG is not set
@@ -1559,12 +1663,15 @@ CONFIG_TRACING_SUPPORT=y
# CONFIG_TEST_BPF is not set # CONFIG_TEST_BPF is not set
# CONFIG_TEST_FIRMWARE is not set # CONFIG_TEST_FIRMWARE is not set
# CONFIG_TEST_UDELAY is not set # CONFIG_TEST_UDELAY is not set
# CONFIG_MEMTEST is not set
# CONFIG_TEST_STATIC_KEYS is not set
# CONFIG_SAMPLES is not set # CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_STRICT_DEVMEM is not set # CONFIG_STRICT_DEVMEM is not set
# CONFIG_X86_VERBOSE_BOOTUP is not set # CONFIG_X86_VERBOSE_BOOTUP is not set
CONFIG_EARLY_PRINTK=y CONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set # CONFIG_EARLY_PRINTK_DBGP is not set
# CONFIG_X86_PTDUMP_CORE is not set
# CONFIG_DEBUG_SET_MODULE_RONX is not set # CONFIG_DEBUG_SET_MODULE_RONX is not set
CONFIG_DOUBLEFAULT=y CONFIG_DOUBLEFAULT=y
# CONFIG_IOMMU_STRESS is not set # CONFIG_IOMMU_STRESS is not set
@@ -1579,6 +1686,7 @@ CONFIG_IO_DELAY_0X80=y
# CONFIG_IO_DELAY_NONE is not set # CONFIG_IO_DELAY_NONE is not set
CONFIG_DEFAULT_IO_DELAY_TYPE=0 CONFIG_DEFAULT_IO_DELAY_TYPE=0
# CONFIG_OPTIMIZE_INLINING is not set # CONFIG_OPTIMIZE_INLINING is not set
# CONFIG_PUNIT_ATOM_DEBUG is not set
# #
# Security options # Security options
@@ -1596,14 +1704,24 @@ CONFIG_CRYPTO=y
# #
CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_HASH2=y
# CONFIG_CRYPTO_MANAGER is not set CONFIG_CRYPTO_RNG=y
# CONFIG_CRYPTO_MANAGER2 is not set CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_AKCIPHER2=y
# CONFIG_CRYPTO_RSA is not set
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
# CONFIG_CRYPTO_USER is not set # CONFIG_CRYPTO_USER is not set
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
# CONFIG_CRYPTO_GF128MUL is not set # CONFIG_CRYPTO_GF128MUL is not set
# CONFIG_CRYPTO_NULL is not set # CONFIG_CRYPTO_NULL is not set
CONFIG_CRYPTO_NULL2=y
# CONFIG_CRYPTO_PCRYPT is not set # CONFIG_CRYPTO_PCRYPT is not set
CONFIG_CRYPTO_WORKQUEUE=y
# CONFIG_CRYPTO_CRYPTD is not set # CONFIG_CRYPTO_CRYPTD is not set
# CONFIG_CRYPTO_MCRYPTD is not set # CONFIG_CRYPTO_MCRYPTD is not set
# CONFIG_CRYPTO_AUTHENC is not set # CONFIG_CRYPTO_AUTHENC is not set
@@ -1614,7 +1732,9 @@ CONFIG_CRYPTO_HASH2=y
# #
# CONFIG_CRYPTO_CCM is not set # CONFIG_CRYPTO_CCM is not set
# CONFIG_CRYPTO_GCM is not set # CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
# CONFIG_CRYPTO_SEQIV is not set # CONFIG_CRYPTO_SEQIV is not set
# CONFIG_CRYPTO_ECHAINIV is not set
# #
# Block modes # Block modes
@@ -1626,12 +1746,13 @@ CONFIG_CRYPTO_HASH2=y
# CONFIG_CRYPTO_LRW is not set # CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_PCBC is not set # CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_XTS is not set # CONFIG_CRYPTO_XTS is not set
# CONFIG_CRYPTO_KEYWRAP is not set
# #
# Hash modes # Hash modes
# #
# CONFIG_CRYPTO_CMAC is not set # CONFIG_CRYPTO_CMAC is not set
# CONFIG_CRYPTO_HMAC is not set CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_XCBC is not set # CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_VMAC is not set # CONFIG_CRYPTO_VMAC is not set
@@ -1645,6 +1766,8 @@ CONFIG_CRYPTO_CRC32C=y
CONFIG_CRYPTO_CRCT10DIF=y CONFIG_CRYPTO_CRCT10DIF=y
# CONFIG_CRYPTO_CRCT10DIF_PCLMUL is not set # CONFIG_CRYPTO_CRCT10DIF_PCLMUL is not set
# CONFIG_CRYPTO_GHASH is not set # CONFIG_CRYPTO_GHASH is not set
# CONFIG_CRYPTO_POLY1305 is not set
# CONFIG_CRYPTO_POLY1305_X86_64 is not set
# CONFIG_CRYPTO_MD4 is not set # CONFIG_CRYPTO_MD4 is not set
# CONFIG_CRYPTO_MD5 is not set # CONFIG_CRYPTO_MD5 is not set
# CONFIG_CRYPTO_MICHAEL_MIC is not set # CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1657,7 +1780,7 @@ CONFIG_CRYPTO_CRCT10DIF=y
# CONFIG_CRYPTO_SHA256_SSSE3 is not set # CONFIG_CRYPTO_SHA256_SSSE3 is not set
# CONFIG_CRYPTO_SHA512_SSSE3 is not set # CONFIG_CRYPTO_SHA512_SSSE3 is not set
# CONFIG_CRYPTO_SHA1_MB is not set # CONFIG_CRYPTO_SHA1_MB is not set
# CONFIG_CRYPTO_SHA256 is not set CONFIG_CRYPTO_SHA256=y
# CONFIG_CRYPTO_SHA512 is not set # CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_WP512 is not set
@@ -1687,6 +1810,8 @@ CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_KHAZAD is not set # CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_SALSA20 is not set # CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_SALSA20_X86_64 is not set # CONFIG_CRYPTO_SALSA20_X86_64 is not set
# CONFIG_CRYPTO_CHACHA20 is not set
# CONFIG_CRYPTO_CHACHA20_X86_64 is not set
# CONFIG_CRYPTO_SEED is not set # CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SERPENT is not set # CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set # CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set
@@ -1704,6 +1829,7 @@ CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_DEFLATE is not set # CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_ZLIB is not set # CONFIG_CRYPTO_ZLIB is not set
# CONFIG_CRYPTO_LZO is not set # CONFIG_CRYPTO_LZO is not set
# CONFIG_CRYPTO_842 is not set
# CONFIG_CRYPTO_LZ4 is not set # CONFIG_CRYPTO_LZ4 is not set
# CONFIG_CRYPTO_LZ4HC is not set # CONFIG_CRYPTO_LZ4HC is not set
@@ -1711,11 +1837,21 @@ CONFIG_CRYPTO_AES=y
# Random Number Generation # Random Number Generation
# #
# CONFIG_CRYPTO_ANSI_CPRNG is not set # CONFIG_CRYPTO_ANSI_CPRNG is not set
# CONFIG_CRYPTO_DRBG_MENU is not set CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_DRBG_HMAC=y
# CONFIG_CRYPTO_DRBG_HASH is not set
# CONFIG_CRYPTO_DRBG_CTR is not set
CONFIG_CRYPTO_DRBG=y
CONFIG_CRYPTO_JITTERENTROPY=y
# CONFIG_CRYPTO_USER_API_HASH is not set # CONFIG_CRYPTO_USER_API_HASH is not set
# CONFIG_CRYPTO_USER_API_SKCIPHER is not set # CONFIG_CRYPTO_USER_API_SKCIPHER is not set
# CONFIG_CRYPTO_USER_API_RNG is not set # CONFIG_CRYPTO_USER_API_RNG is not set
# CONFIG_CRYPTO_USER_API_AEAD is not set
# CONFIG_CRYPTO_HW is not set # CONFIG_CRYPTO_HW is not set
#
# Certificates for signature checking
#
CONFIG_HAVE_KVM=y CONFIG_HAVE_KVM=y
# CONFIG_VIRTUALIZATION is not set # CONFIG_VIRTUALIZATION is not set
# CONFIG_BINARY_PRINTF is not set # CONFIG_BINARY_PRINTF is not set
@@ -1725,6 +1861,7 @@ CONFIG_HAVE_KVM=y
# #
CONFIG_BITREVERSE=y CONFIG_BITREVERSE=y
# CONFIG_HAVE_ARCH_BITREVERSE is not set # CONFIG_HAVE_ARCH_BITREVERSE is not set
CONFIG_RATIONAL=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_NET_UTILS=y CONFIG_GENERIC_NET_UTILS=y
@@ -1760,7 +1897,9 @@ CONFIG_CPU_RMAP=y
CONFIG_DQL=y CONFIG_DQL=y
CONFIG_NLATTR=y CONFIG_NLATTR=y
CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
CONFIG_AVERAGE=y
# CONFIG_CORDIC is not set # CONFIG_CORDIC is not set
# CONFIG_DDR is not set # CONFIG_DDR is not set
# CONFIG_SG_SPLIT is not set
CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_SG_CHAIN=y
CONFIG_ARCH_HAS_PMEM_API=y
CONFIG_ARCH_HAS_MMIO_FLUSH=y
+2
View File
@@ -0,0 +1,2 @@
# v4.4
afd2ff9b7e1b367172f18ba7f693dfb62bdcb2dc
+1 -1
View File
@@ -36,7 +36,7 @@ if [ "$1"x = "cbfs"x ]; then
mkdir .cbfs mkdir .cbfs
dd if=/dev/zero of=.cbfs/boot.bin bs=4096 count=1 dd if=/dev/zero of=.cbfs/boot.bin bs=4096 count=1
cbfstool .cbfs/cbfs.rom create -s 4096k -B .cbfs/boot.bin -m x86 0x1000 cbfstool .cbfs/cbfs.rom create -s 8128k -B .cbfs/boot.bin -m x86 0x1000
cbfstool .cbfs/cbfs.rom add -f kernel -n vmlinuz -t raw cbfstool .cbfs/cbfs.rom add -f kernel -n vmlinuz -t raw
cbfstool .cbfs/cbfs.rom add -f hyper-initrd.img -n initrd -t raw cbfstool .cbfs/cbfs.rom add -f hyper-initrd.img -n initrd -t raw
echo 'console=ttyS0 panic=1 no_timer_check' > .cbfs/cmdline echo 'console=ttyS0 panic=1 no_timer_check' > .cbfs/cmdline
+1 -1
View File
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69]) AC_PREREQ([2.69])
AC_INIT([hyperstart], [0.3], [www.hyper.sh]) AC_INIT([hyperstart], [0.5.0], [www.hyper.sh])
AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects]) AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects])
AM_EXTRA_RECURSIVE_TARGETS([initrd cbfs]) AM_EXTRA_RECURSIVE_TARGETS([initrd cbfs])
AC_CONFIG_SRCDIR([src/init.c]) AC_CONFIG_SRCDIR([src/init.c])
+59 -26
View File
@@ -18,11 +18,57 @@
#include "parse.h" #include "parse.h"
#include "syscall.h" #include "syscall.h"
static int send_exec_finishing(uint64_t seq, int len, int code, int block)
{
struct hyper_buf *buf = &ctl.tty.wbuf;
if (buf->get + len > buf->size) {
uint8_t *data;
fprintf(stdout, "%s: tty buf full\n", __func__);
data = realloc(buf->data, buf->size + len);
if (data == NULL) {
perror("realloc failed");
return -1;
}
buf->data = data;
buf->size += len;
}
/* no in event, no more data, send eof */
hyper_set_be64(buf->data + buf->get, seq);
hyper_set_be32(buf->data + buf->get + 8, len);
if (len > 12)
buf->data[buf->get + 12] = code;
buf->get += len;
if (!block) {
hyper_modify_event(ctl.efd, &ctl.tty, EPOLLIN | EPOLLOUT);
return 0;
}
if (hyper_setfd_block(ctl.tty.fd) < 0 ||
hyper_send_data(ctl.tty.fd, buf->data, buf->get) < 0 ||
hyper_setfd_nonblock(ctl.tty.fd) < 0) {
fprintf(stderr, "send eof failed\n");
return -1;
}
return 0;
}
static int hyper_send_exec_eof(struct hyper_exec *exec, int block) {
return send_exec_finishing(exec->seq, 12, -1, block);
}
static int hyper_send_exec_code(struct hyper_exec *exec, int block) {
return send_exec_finishing(exec->seq, 13, exec->code, block);
}
static void pts_hup(struct hyper_event *de, int efd, int out) static void pts_hup(struct hyper_event *de, int efd, int out)
{ {
struct hyper_exec *exec; struct hyper_exec *exec;
struct hyper_pod *pod = de->ptr; struct hyper_pod *pod = de->ptr;
struct hyper_buf *buf = &ctl.tty.wbuf;
uint64_t seq; uint64_t seq;
if (out) { if (out) {
@@ -37,17 +83,7 @@ static void pts_hup(struct hyper_event *de, int efd, int out)
hyper_event_hup(de, efd); hyper_event_hup(de, efd);
if (buf->get + 12 > buf->size) { hyper_send_exec_eof(exec, 0);
fprintf(stdout, "%s: tty buf full\n", __func__);
return;
}
/* no in event, no more data, send eof */
hyper_set_be64(buf->data + buf->get, seq);
hyper_set_be32(buf->data + buf->get + 8, 12);
buf->get += 12;
hyper_modify_event(ctl.efd, &ctl.tty, EPOLLIN | EPOLLOUT);
hyper_release_exec(exec, pod); hyper_release_exec(exec, pod);
} }
@@ -394,7 +430,6 @@ static int hyper_do_exec_cmd(void *data)
if (hyper_get_type(pipe[0], &type) < 0 || type != READY) { if (hyper_get_type(pipe[0], &type) < 0 || type != READY) {
fprintf(stderr, "hyper init doesn't get execcmd ready message\n"); fprintf(stderr, "hyper init doesn't get execcmd ready message\n");
hyper_send_type(arg->pipe[1], ERROR);
goto out; goto out;
} }
@@ -425,13 +460,14 @@ static int hyper_do_exec_cmd(void *data)
ret = 0; ret = 0;
exit: exit:
hyper_send_type(pipe[1], ERROR);
_exit(ret);
out:
hyper_send_type(arg->pipe[1], ret ? ERROR : READY);
close(pipe[0]); close(pipe[0]);
close(pipe[1]); close(pipe[1]);
hyper_send_type(pipe[1], ERROR);
_exit(ret);
out:
close(pipe[0]);
close(pipe[1]);
hyper_send_type(arg->pipe[1], ret ? ERROR : READY);
_exit(ret); _exit(ret);
} }
@@ -498,7 +534,6 @@ int hyper_exec_cmd(char *json, int length)
pid = clone(hyper_do_exec_cmd, stack + stacksize, CLONE_VM| CLONE_FILES| SIGCHLD, &arg); pid = clone(hyper_do_exec_cmd, stack + stacksize, CLONE_VM| CLONE_FILES| SIGCHLD, &arg);
fprintf(stdout, "do_exec_cmd pid %d\n", pid); fprintf(stdout, "do_exec_cmd pid %d\n", pid);
free(stack);
if (pid < 0) { if (pid < 0) {
perror("clone hyper_do_exec_cmd failed"); perror("clone hyper_do_exec_cmd failed");
goto close_tty; goto close_tty;
@@ -514,6 +549,7 @@ int hyper_exec_cmd(char *json, int length)
out: out:
close(arg.pipe[0]); close(arg.pipe[0]);
close(arg.pipe[1]); close(arg.pipe[1]);
free(stack);
return ret; return ret;
close_tty: close_tty:
close(exec->ptyfd); close(exec->ptyfd);
@@ -563,6 +599,8 @@ int hyper_release_exec(struct hyper_exec *exec,
list_del_init(&exec->list); list_del_init(&exec->list);
hyper_send_exec_code(exec, 0);
fprintf(stdout, "%s exit code %" PRIu8"\n", __func__, exec->code); fprintf(stdout, "%s exit code %" PRIu8"\n", __func__, exec->code);
if (exec->init) { if (exec->init) {
fprintf(stdout, "%s container init exited, type %d, remains %d, policy %d\n", fprintf(stdout, "%s container init exited, type %d, remains %d, policy %d\n",
@@ -652,16 +690,11 @@ int hyper_handle_exec_exit(struct hyper_pod *pod, int pid, uint8_t code)
void hyper_cleanup_exec(struct hyper_pod *pod) void hyper_cleanup_exec(struct hyper_pod *pod)
{ {
struct hyper_exec *exec, *next; struct hyper_exec *exec, *next;
uint8_t buf[12];
if (hyper_setfd_block(ctl.tty.fd) < 0)
return;
hyper_set_be32(buf + 8, 12);
list_for_each_entry_safe(exec, next, &pod->exec_head, list) { list_for_each_entry_safe(exec, next, &pod->exec_head, list) {
fprintf(stdout, "send eof for exec seq %" PRIu64 "\n", exec->seq); fprintf(stdout, "send eof for exec seq %" PRIu64 "\n", exec->seq);
hyper_set_be64(buf, exec->seq); if (hyper_send_exec_eof(exec, 1) < 0 ||
if (hyper_send_data(ctl.tty.fd, buf, 12) < 0) hyper_send_exec_code(exec, 1) < 0)
fprintf(stderr, "send eof failed\n"); fprintf(stderr, "send eof failed\n");
} }
} }
+10 -6
View File
@@ -402,13 +402,14 @@ static int hyper_container_stage0(void *data)
ret = hyper_start_container(c, utsns, ipcns, pod); ret = hyper_start_container(c, utsns, ipcns, pod);
out: out:
close(pidns);
close(utsns);
close(ipcns);
if (hyper_send_type(arg->ctl_pipe[1], ret ? ERROR : READY) < 0) { if (hyper_send_type(arg->ctl_pipe[1], ret ? ERROR : READY) < 0) {
fprintf(stderr, "container init send ready message failed\n"); fprintf(stderr, "container init send ready message failed\n");
} }
close(pidns);
close(utsns);
close(ipcns);
/* hyper_container_stage0 shares fd table with init, let init closes pipe. */ /* hyper_container_stage0 shares fd table with init, let init closes pipe. */
//close(arg->ctl_pipe[0]); //close(arg->ctl_pipe[0]);
//close(arg->ctl_pipe[1]); //close(arg->ctl_pipe[1]);
@@ -440,7 +441,6 @@ int hyper_start_container_stage0(struct hyper_container *c, struct hyper_pod *po
} }
pid = clone(hyper_container_stage0, stack + stacksize, CLONE_VM| CLONE_FILES| SIGCHLD, &arg); pid = clone(hyper_container_stage0, stack + stacksize, CLONE_VM| CLONE_FILES| SIGCHLD, &arg);
free(stack);
if (pid < 0) { if (pid < 0) {
perror("enter container pid ns failed"); perror("enter container pid ns failed");
goto out; goto out;
@@ -464,6 +464,8 @@ int hyper_start_container_stage0(struct hyper_container *c, struct hyper_pod *po
out: out:
close(arg.ctl_pipe[0]); close(arg.ctl_pipe[0]);
close(arg.ctl_pipe[1]); close(arg.ctl_pipe[1]);
free(stack);
return ret; return ret;
} }
@@ -916,7 +918,7 @@ static int hyper_do_cmd_read_file(void *data)
ret = 0; ret = 0;
err: err:
hyper_send_type(arg->pipe[1], ret ? ERROR : READY); hyper_send_type(arg->pipe[1], ret ? ERROR : READY);
return ret; _exit(ret);
} }
static int hyper_cmd_read_file(char *json, int length, uint32_t *datalen, uint8_t **data) static int hyper_cmd_read_file(char *json, int length, uint32_t *datalen, uint8_t **data)
@@ -967,7 +969,6 @@ static int hyper_cmd_read_file(char *json, int length, uint32_t *datalen, uint8_
} }
pid = clone(hyper_do_cmd_read_file, stack + stacksize, CLONE_VM| SIGCHLD, &arg); pid = clone(hyper_do_cmd_read_file, stack + stacksize, CLONE_VM| SIGCHLD, &arg);
free(stack);
if (pid < 0) { if (pid < 0) {
perror("fail to fork writter process"); perror("fail to fork writter process");
goto out; goto out;
@@ -984,6 +985,7 @@ out:
close(arg.pipe[1]); close(arg.pipe[1]);
free(reader.id); free(reader.id);
free(reader.file); free(reader.file);
free(stack);
return ret; return ret;
} }
@@ -1154,6 +1156,8 @@ static int hyper_channel_handle(struct hyper_event *de, uint32_t len)
pod->type = type; pod->type = type;
switch (type) { switch (type) {
case STARTPOD: case STARTPOD:
online_cpu();
online_memory();
ret = hyper_start_pod((char *)buf->data + 8, len - 8); ret = hyper_start_pod((char *)buf->data + 8, len - 8);
hyper_print_uptime(); hyper_print_uptime();
break; break;
+138 -36
View File
@@ -6,10 +6,112 @@
#include "list.h" #include "list.h"
#include "parse.h" #include "parse.h"
/* parse_utf_16() and process_string() are copied from https://github.com/kgabis/parson */
#include <ctype.h>
#define JSONFailure (-1)
#define JSONSuccess (0)
#define parson_malloc malloc
#define parson_free free
static int is_utf16_hex(const unsigned char *s) {
return isxdigit(s[0]) && isxdigit(s[1]) && isxdigit(s[2]) && isxdigit(s[3]);
}
static int parse_utf_16(const char **unprocessed, char **processed) {
unsigned int cp, lead, trail;
char *processed_ptr = *processed;
const char *unprocessed_ptr = *unprocessed;
unprocessed_ptr++; /* skips u */
if (!is_utf16_hex((const unsigned char*)unprocessed_ptr) || sscanf(unprocessed_ptr, "%4x", &cp) == EOF)
return JSONFailure;
if (cp < 0x80) {
*processed_ptr = cp; /* 0xxxxxxx */
} else if (cp < 0x800) {
*processed_ptr++ = ((cp >> 6) & 0x1F) | 0xC0; /* 110xxxxx */
*processed_ptr = ((cp ) & 0x3F) | 0x80; /* 10xxxxxx */
} else if (cp < 0xD800 || cp > 0xDFFF) {
*processed_ptr++ = ((cp >> 12) & 0x0F) | 0xE0; /* 1110xxxx */
*processed_ptr++ = ((cp >> 6) & 0x3F) | 0x80; /* 10xxxxxx */
*processed_ptr = ((cp ) & 0x3F) | 0x80; /* 10xxxxxx */
} else if (cp >= 0xD800 && cp <= 0xDBFF) { /* lead surrogate (0xD800..0xDBFF) */
lead = cp;
unprocessed_ptr += 4; /* should always be within the buffer, otherwise previous sscanf would fail */
if (*unprocessed_ptr++ != '\\' || *unprocessed_ptr++ != 'u' || /* starts with \u? */
!is_utf16_hex((const unsigned char*)unprocessed_ptr) ||
sscanf(unprocessed_ptr, "%4x", &trail) == EOF ||
trail < 0xDC00 || trail > 0xDFFF) { /* valid trail surrogate? (0xDC00..0xDFFF) */
return JSONFailure;
}
cp = ((((lead-0xD800)&0x3FF)<<10)|((trail-0xDC00)&0x3FF))+0x010000;
*processed_ptr++ = (((cp >> 18) & 0x07) | 0xF0); /* 11110xxx */
*processed_ptr++ = (((cp >> 12) & 0x3F) | 0x80); /* 10xxxxxx */
*processed_ptr++ = (((cp >> 6) & 0x3F) | 0x80); /* 10xxxxxx */
*processed_ptr = (((cp ) & 0x3F) | 0x80); /* 10xxxxxx */
} else { /* trail surrogate before lead surrogate */
return JSONFailure;
}
unprocessed_ptr += 3;
*processed = processed_ptr;
*unprocessed = unprocessed_ptr;
return JSONSuccess;
}
/* Copies and processes passed string up to supplied length.
Example: "\u006Corem ipsum" -> lorem ipsum */
static char* process_string(const char *input, size_t len) {
const char *input_ptr = input;
size_t initial_size = (len + 1) * sizeof(char);
//size_t final_size = 0;
char *output = (char*)parson_malloc(initial_size);
char *output_ptr = output;
//char *resized_output = NULL;
while ((*input_ptr != '\0') && (size_t)(input_ptr - input) < len) {
if (*input_ptr == '\\') {
input_ptr++;
switch (*input_ptr) {
case '\"': *output_ptr = '\"'; break;
case '\\': *output_ptr = '\\'; break;
case '/': *output_ptr = '/'; break;
case 'b': *output_ptr = '\b'; break;
case 'f': *output_ptr = '\f'; break;
case 'n': *output_ptr = '\n'; break;
case 'r': *output_ptr = '\r'; break;
case 't': *output_ptr = '\t'; break;
case 'u':
if (parse_utf_16(&input_ptr, &output_ptr) == JSONFailure)
goto error;
break;
default:
goto error;
}
} else if ((unsigned char)*input_ptr < 0x20) {
goto error; /* 0x00-0x19 are invalid characters for json string (http://www.ietf.org/rfc/rfc4627.txt) */
} else {
*output_ptr = *input_ptr;
}
output_ptr++;
input_ptr++;
}
*output_ptr = '\0';
/* resize to new length */
//final_size = (size_t)(output_ptr-output) + 1;
//resized_output = (char*)parson_malloc(final_size);
//if (resized_output == NULL)
// goto error;
//memcpy(resized_output, output, final_size);
//parson_free(output);
//return resized_output;
return output;
error:
parson_free(output);
return NULL;
}
char *json_token_str(char *js, jsmntok_t *t) char *json_token_str(char *js, jsmntok_t *t)
{ {
js[t->end] = '\0'; return process_string(js+t->start, t->end - t->start);
return js + t->start;
} }
int json_token_int(char *js, jsmntok_t *t) int json_token_int(char *js, jsmntok_t *t)
@@ -48,7 +150,7 @@ static int container_parse_cmd(struct hyper_container *c, char *json, jsmntok_t
i++; i++;
for (j = 0; j < c->exec.argc; j++, i++) { for (j = 0; j < c->exec.argc; j++, i++) {
c->exec.argv[j] = strdup(json_token_str(json, &toks[i])); c->exec.argv[j] = (json_token_str(json, &toks[i]));
fprintf(stdout, "container init arg %d %s\n", j, c->exec.argv[j]); fprintf(stdout, "container init arg %d %s\n", j, c->exec.argv[j]);
} }
@@ -114,18 +216,18 @@ static int container_parse_volumes(struct hyper_container *c, char *json, jsmnto
for (i_volume = 0; i_volume < next_volume; i_volume++, i++) { for (i_volume = 0; i_volume < next_volume; i_volume++, i++) {
if (json_token_streq(json, &toks[i], "device")) { if (json_token_streq(json, &toks[i], "device")) {
c->vols[j].device = c->vols[j].device =
strdup(json_token_str(json, &toks[++i])); (json_token_str(json, &toks[++i]));
fprintf(stdout, "volume %d device %s\n", j, c->vols[j].device); fprintf(stdout, "volume %d device %s\n", j, c->vols[j].device);
} else if (json_token_streq(json, &toks[i], "addr")) { } else if (json_token_streq(json, &toks[i], "addr")) {
c->vols[j].scsiaddr = strdup(json_token_str(json, &toks[++i])); c->vols[j].scsiaddr = (json_token_str(json, &toks[++i]));
fprintf(stdout, "volume %d scsi id %s\n", j, c->vols[j].scsiaddr); fprintf(stdout, "volume %d scsi id %s\n", j, c->vols[j].scsiaddr);
} else if (json_token_streq(json, &toks[i], "mount")) { } else if (json_token_streq(json, &toks[i], "mount")) {
c->vols[j].mountpoint = c->vols[j].mountpoint =
strdup(json_token_str(json, &toks[++i])); (json_token_str(json, &toks[++i]));
fprintf(stdout, "volume %d mp %s\n", j, c->vols[j].mountpoint); fprintf(stdout, "volume %d mp %s\n", j, c->vols[j].mountpoint);
} else if (json_token_streq(json, &toks[i], "fstype")) { } else if (json_token_streq(json, &toks[i], "fstype")) {
c->vols[j].fstype = c->vols[j].fstype =
strdup(json_token_str(json, &toks[++i])); (json_token_str(json, &toks[++i]));
fprintf(stdout, "volume %d fstype %s\n", j, c->vols[j].fstype); fprintf(stdout, "volume %d fstype %s\n", j, c->vols[j].fstype);
} else if (json_token_streq(json, &toks[i], "readOnly")) { } else if (json_token_streq(json, &toks[i], "readOnly")) {
if (!json_token_streq(json, &toks[++i], "false")) if (!json_token_streq(json, &toks[++i], "false"))
@@ -186,11 +288,11 @@ static int container_parse_fsmap(struct hyper_container *c, char *json, jsmntok_
for (i_map = 0; i_map < next_map; i_map++, i++) { for (i_map = 0; i_map < next_map; i_map++, i++) {
if (json_token_streq(json, &toks[i], "source")) { if (json_token_streq(json, &toks[i], "source")) {
c->maps[j].source = c->maps[j].source =
strdup(json_token_str(json, &toks[++i])); (json_token_str(json, &toks[++i]));
fprintf(stdout, "maps %d source %s\n", j, c->maps[j].source); fprintf(stdout, "maps %d source %s\n", j, c->maps[j].source);
} else if (json_token_streq(json, &toks[i], "path")) { } else if (json_token_streq(json, &toks[i], "path")) {
c->maps[j].path = c->maps[j].path =
strdup(json_token_str(json, &toks[++i])); (json_token_str(json, &toks[++i]));
fprintf(stdout, "maps %d path %s\n", j, c->maps[j].path); fprintf(stdout, "maps %d path %s\n", j, c->maps[j].path);
} else if (json_token_streq(json, &toks[i], "readOnly")) { } else if (json_token_streq(json, &toks[i], "readOnly")) {
if (!json_token_streq(json, &toks[++i], "false")) if (!json_token_streq(json, &toks[++i], "false"))
@@ -252,11 +354,11 @@ static int container_parse_envs(struct hyper_container *c, char *json, jsmntok_t
for (i_env = 0; i_env < next_env; i_env++, i++) { for (i_env = 0; i_env < next_env; i_env++, i++) {
if (json_token_streq(json, &toks[i], "env")) { if (json_token_streq(json, &toks[i], "env")) {
c->envs[j].env = c->envs[j].env =
strdup(json_token_str(json, &toks[++i])); (json_token_str(json, &toks[++i]));
fprintf(stdout, "envs %d env %s\n", j, c->envs[j].env); fprintf(stdout, "envs %d env %s\n", j, c->envs[j].env);
} else if (json_token_streq(json, &toks[i], "value")) { } else if (json_token_streq(json, &toks[i], "value")) {
c->envs[j].value = c->envs[j].value =
strdup(json_token_str(json, &toks[++i])); (json_token_str(json, &toks[++i]));
fprintf(stdout, "envs %d value %s\n", j, c->envs[j].value); fprintf(stdout, "envs %d value %s\n", j, c->envs[j].value);
} else { } else {
fprintf(stdout, "get unknown section %s in envs\n", fprintf(stdout, "get unknown section %s in envs\n",
@@ -304,11 +406,11 @@ static int container_parse_sysctl(struct hyper_container *c, char *json, jsmntok
i++; i++;
for (j = 0; j < c->sys_num; j++) { for (j = 0; j < c->sys_num; j++) {
c->sys[j].path = strdup(json_token_str(json, &toks[++i])); c->sys[j].path = (json_token_str(json, &toks[++i]));
while((p = strchr(c->sys[j].path, '.')) != NULL) { while((p = strchr(c->sys[j].path, '.')) != NULL) {
*p = '/'; *p = '/';
} }
c->sys[j].value = strdup(json_token_str(json, &toks[++i])); c->sys[j].value = (json_token_str(json, &toks[++i]));
fprintf(stdout, "sysctl %s:%s\n", c->sys[j].path, c->sys[j].value); fprintf(stdout, "sysctl %s:%s\n", c->sys[j].path, c->sys[j].value);
} }
return i; return i;
@@ -381,7 +483,7 @@ static int hyper_parse_container(struct hyper_pod *pod, struct hyper_container *
t = &toks[i]; t = &toks[i];
fprintf(stdout, "%d name %s\n", i, json_token_str(json, t)); fprintf(stdout, "%d name %s\n", i, json_token_str(json, t));
if (json_token_streq(json, t, "id") && t->size == 1) { if (json_token_streq(json, t, "id") && t->size == 1) {
c->id = strdup(json_token_str(json, &toks[++i])); c->id = (json_token_str(json, &toks[++i]));
c->exec.id = strdup(c->id); c->exec.id = strdup(c->id);
fprintf(stdout, "container id %s\n", c->id); fprintf(stdout, "container id %s\n", c->id);
i++; i++;
@@ -391,7 +493,7 @@ static int hyper_parse_container(struct hyper_pod *pod, struct hyper_container *
goto fail; goto fail;
i += next; i += next;
} else if (json_token_streq(json, t, "rootfs") && t->size == 1) { } else if (json_token_streq(json, t, "rootfs") && t->size == 1) {
c->rootfs = strdup(json_token_str(json, &toks[++i])); c->rootfs = (json_token_str(json, &toks[++i]));
fprintf(stdout, "container rootfs %s\n", c->rootfs); fprintf(stdout, "container rootfs %s\n", c->rootfs);
i++; i++;
} else if (json_token_streq(json, t, "tty") && t->size == 1) { } else if (json_token_streq(json, t, "tty") && t->size == 1) {
@@ -403,19 +505,19 @@ static int hyper_parse_container(struct hyper_pod *pod, struct hyper_container *
fprintf(stdout, "container stderr seq %" PRIu64 "\n", c->exec.errseq); fprintf(stdout, "container stderr seq %" PRIu64 "\n", c->exec.errseq);
i++; i++;
} else if (json_token_streq(json, t, "workdir") && t->size == 1) { } else if (json_token_streq(json, t, "workdir") && t->size == 1) {
c->workdir = strdup(json_token_str(json, &toks[++i])); c->workdir = (json_token_str(json, &toks[++i]));
fprintf(stdout, "container workdir %s\n", c->workdir); fprintf(stdout, "container workdir %s\n", c->workdir);
i++; i++;
} else if (json_token_streq(json, t, "image") && t->size == 1) { } else if (json_token_streq(json, t, "image") && t->size == 1) {
c->image = strdup(json_token_str(json, &toks[++i])); c->image = (json_token_str(json, &toks[++i]));
fprintf(stdout, "container image %s\n", c->image); fprintf(stdout, "container image %s\n", c->image);
i++; i++;
} else if (json_token_streq(json, t, "addr") && t->size == 1) { } else if (json_token_streq(json, t, "addr") && t->size == 1) {
c->scsiaddr = strdup(json_token_str(json, &toks[++i])); c->scsiaddr = (json_token_str(json, &toks[++i]));
fprintf(stdout, "container image scsi id %s\n", c->scsiaddr); fprintf(stdout, "container image scsi id %s\n", c->scsiaddr);
i++; i++;
} else if (json_token_streq(json, t, "fstype") && t->size == 1) { } else if (json_token_streq(json, t, "fstype") && t->size == 1) {
c->fstype = strdup(json_token_str(json, &toks[++i])); c->fstype = (json_token_str(json, &toks[++i]));
fprintf(stdout, "container fstype %s\n", c->fstype); fprintf(stdout, "container fstype %s\n", c->fstype);
i++; i++;
} else if (json_token_streq(json, t, "volumes") && t->size == 1) { } else if (json_token_streq(json, t, "volumes") && t->size == 1) {
@@ -521,13 +623,13 @@ static int hyper_parse_interfaces(struct hyper_pod *pod, char *json, jsmntok_t *
i++; i++;
for (i_if = 0; i_if < next_if; i_if++, i++) { for (i_if = 0; i_if < next_if; i_if++, i++) {
if (json_token_streq(json, &toks[i], "device")) { if (json_token_streq(json, &toks[i], "device")) {
iface->device = strdup(json_token_str(json, &toks[++i])); iface->device = (json_token_str(json, &toks[++i]));
fprintf(stdout, "net device is %s\n", iface->device); fprintf(stdout, "net device is %s\n", iface->device);
} else if (json_token_streq(json, &toks[i], "ipAddress")) { } else if (json_token_streq(json, &toks[i], "ipAddress")) {
iface->ipaddr = strdup(json_token_str(json, &toks[++i])); iface->ipaddr = (json_token_str(json, &toks[++i]));
fprintf(stdout, "net ipaddress is %s\n", iface->ipaddr); fprintf(stdout, "net ipaddress is %s\n", iface->ipaddr);
} else if (json_token_streq(json, &toks[i], "netMask")) { } else if (json_token_streq(json, &toks[i], "netMask")) {
iface->mask = strdup(json_token_str(json, &toks[++i])); iface->mask = (json_token_str(json, &toks[++i]));
fprintf(stdout, "net mask is %s\n", iface->mask); fprintf(stdout, "net mask is %s\n", iface->mask);
} else { } else {
fprintf(stderr, "get unknown section %s in interfaces\n", fprintf(stderr, "get unknown section %s in interfaces\n",
@@ -573,13 +675,13 @@ static int hyper_parse_routes(struct hyper_pod *pod, char *json, jsmntok_t *toks
i++; i++;
for (i_rt = 0; i_rt < next_rt; i_rt++, i++) { for (i_rt = 0; i_rt < next_rt; i_rt++, i++) {
if (json_token_streq(json, &toks[i], "dest")) { if (json_token_streq(json, &toks[i], "dest")) {
rt->dst = strdup(json_token_str(json, &toks[++i])); rt->dst = (json_token_str(json, &toks[++i]));
fprintf(stdout, "route %d dest is %s\n", j, rt->dst); fprintf(stdout, "route %d dest is %s\n", j, rt->dst);
} else if (json_token_streq(json, &toks[i], "gateway")) { } else if (json_token_streq(json, &toks[i], "gateway")) {
rt->gw = strdup(json_token_str(json, &toks[++i])); rt->gw = (json_token_str(json, &toks[++i]));
fprintf(stdout, "route %d gateway is %s\n", j, rt->gw); fprintf(stdout, "route %d gateway is %s\n", j, rt->gw);
} else if (json_token_streq(json, &toks[i], "device")) { } else if (json_token_streq(json, &toks[i], "device")) {
rt->device = strdup(json_token_str(json, &toks[++i])); rt->device = (json_token_str(json, &toks[++i]));
fprintf(stdout, "route %d device is %s\n", j, rt->device); fprintf(stdout, "route %d device is %s\n", j, rt->device);
} else { } else {
fprintf(stderr, "get unknown section %s in routes\n", fprintf(stderr, "get unknown section %s in routes\n",
@@ -612,7 +714,7 @@ static int hyper_parse_dns(struct hyper_pod *pod, char *json, jsmntok_t *toks)
i++; i++;
for (j = 0; j < pod->d_num; j++, i++) { for (j = 0; j < pod->d_num; j++, i++) {
pod->dns[j] = strdup(json_token_str(json, &toks[i])); pod->dns[j] = (json_token_str(json, &toks[i]));
fprintf(stdout, "pod dns %d: %s\n", j, pod->dns[j]); fprintf(stdout, "pod dns %d: %s\n", j, pod->dns[j]);
} }
@@ -685,11 +787,11 @@ realloc:
i += next; i += next;
} else if (json_token_streq(json, t, "shareDir") && t->size == 1) { } else if (json_token_streq(json, t, "shareDir") && t->size == 1) {
pod->share_tag = strdup(json_token_str(json, &toks[++i])); pod->share_tag = (json_token_str(json, &toks[++i]));
fprintf(stdout, "share tag is %s\n", pod->share_tag); fprintf(stdout, "share tag is %s\n", pod->share_tag);
i++; i++;
} else if (json_token_streq(json, t, "hostname") && t->size == 1) { } else if (json_token_streq(json, t, "hostname") && t->size == 1) {
pod->hostname = strdup(json_token_str(json, &toks[++i])); pod->hostname = (json_token_str(json, &toks[++i]));
fprintf(stdout, "hostname is %s\n", pod->hostname); fprintf(stdout, "hostname is %s\n", pod->hostname);
i++; i++;
} else if (json_token_streq(json, t, "restartPolicy") && t->size == 1) { } else if (json_token_streq(json, t, "restartPolicy") && t->size == 1) {
@@ -791,7 +893,7 @@ realloc:
if (json_token_streq(json, t, "container")) { if (json_token_streq(json, t, "container")) {
if (toks[i].type != JSMN_STRING) if (toks[i].type != JSMN_STRING)
goto fail; goto fail;
killer->id = strdup(json_token_str(json, &toks[i])); killer->id = (json_token_str(json, &toks[i]));
} else if (json_token_streq(json, t, "signal")) { } else if (json_token_streq(json, t, "signal")) {
if (toks[i].type != JSMN_PRIMITIVE) if (toks[i].type != JSMN_PRIMITIVE)
goto fail; goto fail;
@@ -853,7 +955,7 @@ realloc:
if (json_token_streq(json, t, "tty")) { if (json_token_streq(json, t, "tty")) {
if (toks[i].type != JSMN_STRING) if (toks[i].type != JSMN_STRING)
goto fail; goto fail;
ws->tty = strdup(json_token_str(json, &toks[i])); ws->tty = (json_token_str(json, &toks[i]));
} else if (json_token_streq(json, t, "seq")) { } else if (json_token_streq(json, t, "seq")) {
if (toks[i].type != JSMN_PRIMITIVE) if (toks[i].type != JSMN_PRIMITIVE)
goto fail; goto fail;
@@ -929,7 +1031,7 @@ realloc:
continue; continue;
if (json_token_streq(json, t, "container")) { if (json_token_streq(json, t, "container")) {
exec->id = strdup(json_token_str(json, &toks[++i])); exec->id = (json_token_str(json, &toks[++i]));
fprintf(stdout, "get container %s\n", exec->id); fprintf(stdout, "get container %s\n", exec->id);
} else if (json_token_streq(json, t, "seq")) { } else if (json_token_streq(json, t, "seq")) {
has_seq = 1; has_seq = 1;
@@ -949,7 +1051,7 @@ realloc:
exec->argc = toks[i].size; exec->argc = toks[i].size;
exec->argv[exec->argc] = NULL; exec->argv[exec->argc] = NULL;
} else if (j < exec->argc) { } else if (j < exec->argc) {
exec->argv[j++] = strdup(json_token_str(json, &toks[i])); exec->argv[j++] = (json_token_str(json, &toks[i]));
fprintf(stdout, "argv %d, %s\n", j - 1, exec->argv[j - 1]); fprintf(stdout, "argv %d, %s\n", j - 1, exec->argv[j - 1]);
} else { } else {
fprintf(stderr, "get unknown section %s in exec cmd\n", fprintf(stderr, "get unknown section %s in exec cmd\n",
@@ -1023,10 +1125,10 @@ int hyper_parse_write_file(struct hyper_writter *writter, char *json, int length
goto fail; goto fail;
if (json_token_streq(json, t, "container")) { if (json_token_streq(json, t, "container")) {
writter->id = strdup(json_token_str(json, &toks[i])); writter->id = (json_token_str(json, &toks[i]));
fprintf(stdout, "writefile get container %s\n", writter->id); fprintf(stdout, "writefile get container %s\n", writter->id);
} else if (json_token_streq(json, t, "file")) { } else if (json_token_streq(json, t, "file")) {
writter->file = strdup(json_token_str(json, &toks[i])); writter->file = (json_token_str(json, &toks[i]));
fprintf(stdout, "writefile get file %s\n", writter->file); fprintf(stdout, "writefile get file %s\n", writter->file);
} else { } else {
fprintf(stderr, "get unknown section %s in writefile\n", fprintf(stderr, "get unknown section %s in writefile\n",
@@ -1086,10 +1188,10 @@ int hyper_parse_read_file(struct hyper_reader *reader, char *json, int length)
goto fail; goto fail;
if (json_token_streq(json, t, "container")) { if (json_token_streq(json, t, "container")) {
reader->id = strdup(json_token_str(json, &toks[i])); reader->id = (json_token_str(json, &toks[i]));
fprintf(stdout, "readfile get container %s\n", reader->id); fprintf(stdout, "readfile get container %s\n", reader->id);
} else if (json_token_streq(json, t, "file")) { } else if (json_token_streq(json, t, "file")) {
reader->file = strdup(json_token_str(json, &toks[i])); reader->file = (json_token_str(json, &toks[i]));
fprintf(stdout, "readfile get file %s\n", reader->file); fprintf(stdout, "readfile get file %s\n", reader->file);
} else { } else {
fprintf(stdout, "get unknown section %s in readfile\n", fprintf(stdout, "get unknown section %s in readfile\n",
+72
View File
@@ -140,6 +140,78 @@ int hyper_mkdir(char *hyper_path)
return 0; return 0;
} }
void online_cpu(void)
{
DIR *dir = opendir("/sys/devices/system/cpu");
if (dir == NULL) {
fprintf(stderr, "open dir /sys/devices/system/cpu failed\n");
return;
}
printf("online_cpu()\n");
for (;;) {
int num;
int ret;
char path[256];
int fd;
struct dirent *entry = readdir(dir);
if (entry == NULL)
break;
if (entry->d_type != DT_DIR)
continue;
ret = sscanf(entry->d_name, "cpu%d", &num);
if (ret < 1 || num == 0) /* skip none cpu%d and cpu0 */
continue;
sprintf(path, "/sys/devices/system/cpu/%s/online", entry->d_name);
fd = open(path, O_RDWR);
if (fd < 0) {
fprintf(stderr, "open %s failed\n", path);
continue;
}
printf("try to online %s\n", entry->d_name);
ret = write(fd, "1", sizeof("1"));
printf("online %s result: %s\n", entry->d_name, ret == 2 ? "success" : "failed");
close(fd);
}
closedir(dir);
}
void online_memory(void)
{
DIR *dir = opendir("/sys/devices/system/memory");
if (dir == NULL) {
fprintf(stderr, "open dir /sys/devices/system/memory failed\n");
return;
}
printf("online_memory()\n");
for (;;) {
int num;
int ret;
char path[256];
int fd;
struct dirent *entry = readdir(dir);
if (entry == NULL)
break;
if (entry->d_type != DT_DIR)
continue;
ret = sscanf(entry->d_name, "memory%d", &num);
if (ret < 1 || num == 0) /* skip none memory%d and memory0 */
continue;
sprintf(path, "/sys/devices/system/memory/%s/online", entry->d_name);
fd = open(path, O_RDWR);
if (fd < 0) {
fprintf(stderr, "open %s failed\n", path);
continue;
}
printf("try to online %s\n", entry->d_name);
ret = write(fd, "1", sizeof("1"));
printf("online %s result: %s\n", entry->d_name, ret == 2 ? "success" : "failed");
close(fd);
}
closedir(dir);
}
#if WITH_VBOX #if WITH_VBOX
#include <termios.h> #include <termios.h>
+2
View File
@@ -18,6 +18,8 @@ char *read_cmdline(void);
int hyper_setup_env(struct env *envs, int num); int hyper_setup_env(struct env *envs, int num);
int hyper_find_sd(char *prefix, char *addr, char **dev); int hyper_find_sd(char *prefix, char *addr, char **dev);
int hyper_list_dir(char *path); int hyper_list_dir(char *path);
void online_cpu(void);
void online_memory(void);
int hyper_mkdir(char *path); int hyper_mkdir(char *path);
int hyper_open_channel(char *channel, int mode); int hyper_open_channel(char *channel, int mode);
int hyper_open_serial_dev(char *tty); int hyper_open_serial_dev(char *tty);