* [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
@ 2015-10-21 8:42 Anton Ivanov
2015-10-25 18:46 ` Anton Ivanov
0 siblings, 1 reply; 29+ messages in thread
From: Anton Ivanov @ 2015-10-21 8:42 UTC (permalink / raw)
To: user-mode-linux-devel; +Cc: Thomas Meyer, Anton Ivanov
Background: UML is using an obsolete itimer call for
all timers and "polls" for kernel space timer firing
in its userspace portion resulting in a long list
of bugs and incorrect behaviour(s). It also uses
ITIMER_VIRTUAL for its timer which results in the
timer being dependent on it running and the cpu
load.
This patch fixes this by moving to posix high resolution
timers firing off CLOCK_MONOTONIC and relaying the timer
correctly to the UML userspace.
FIXES: crashes when hosts suspends/resumes
FIXES: broken userspace timers - effecive ~40Hz instead
of what they should be. Note - this modifies skas behavior
by no longer setting an itimer per clone(). Timer events
are relayed instead.
FIXES: kernel network packet scheduling disciplines
FIXES: tcp behaviour especially under load
FIXES: various timer related corner cases
IMPROVES: overall responsiveness of the userspace
Signed-off-by: Anton Ivanov <aivanov@brocade.com>
Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
---
arch/um/Makefile | 2 +-
arch/um/include/shared/os.h | 15 +-
arch/um/include/shared/skas/stub-data.h | 5 +-
arch/um/include/shared/timer-internal.h | 13 ++
arch/um/kernel/process.c | 6 +-
arch/um/kernel/skas/clone.c | 5 -
arch/um/kernel/skas/mmu.c | 2 +
arch/um/kernel/time.c | 71 +++++----
arch/um/os-Linux/internal.h | 1 -
arch/um/os-Linux/main.c | 6 +-
arch/um/os-Linux/process.c | 5 +
arch/um/os-Linux/signal.c | 35 +++--
arch/um/os-Linux/skas/process.c | 44 ++----
arch/um/os-Linux/time.c | 248 ++++++++++++++++----------------
14 files changed, 231 insertions(+), 227 deletions(-)
create mode 100644 arch/um/include/shared/timer-internal.h
delete mode 100644 arch/um/os-Linux/internal.h
diff --git a/arch/um/Makefile b/arch/um/Makefile
index 098ab33..eb79b4b 100644
--- a/arch/um/Makefile
+++ b/arch/um/Makefile
@@ -131,7 +131,7 @@ export LDS_ELF_FORMAT := $(ELF_FORMAT)
# The wrappers will select whether using "malloc" or the kernel allocator.
LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc
-LD_FLAGS_CMDLINE = $(foreach opt,$(LDFLAGS),-Wl,$(opt))
+LD_FLAGS_CMDLINE = $(foreach opt,$(LDFLAGS),-Wl,$(opt)) -lrt
# Used by link-vmlinux.sh which has special support for um link
export CFLAGS_vmlinux := $(LINK-y) $(LINK_WRAPS) $(LD_FLAGS_CMDLINE)
diff --git a/arch/um/include/shared/os.h b/arch/um/include/shared/os.h
index ad3fa3a..7519c98 100644
--- a/arch/um/include/shared/os.h
+++ b/arch/um/include/shared/os.h
@@ -183,6 +183,7 @@ extern int create_mem_file(unsigned long long len);
/* process.c */
extern unsigned long os_process_pc(int pid);
extern int os_process_parent(int pid);
+extern void os_alarm_process(int pid);
extern void os_stop_process(int pid);
extern void os_kill_process(int pid, int reap_child);
extern void os_kill_ptraced_process(int pid, int reap_child);
@@ -217,7 +218,7 @@ extern int set_umid(char *name);
extern char *get_umid(void);
/* signal.c */
-extern void timer_init(void);
+extern void timer_set_signal_handler(void);
extern void set_sigstack(void *sig_stack, int size);
extern void remove_sigstack(void);
extern void set_handler(int sig);
@@ -238,12 +239,16 @@ extern void um_early_printk(const char *s, unsigned int n);
extern void os_fix_helper_signals(void);
/* time.c */
-extern void idle_sleep(unsigned long long nsecs);
-extern int set_interval(void);
-extern int timer_one_shot(int ticks);
-extern long long disable_timer(void);
+extern void os_idle_sleep(unsigned long long nsecs);
+extern int os_timer_create(void* timer);
+extern int os_timer_set_interval(void* timer, void* its);
+extern int os_timer_one_shot(int ticks);
+extern long long os_timer_disable(void);
+extern long os_timer_remain(void* timer);
extern void uml_idle_timer(void);
+extern long long os_persistent_clock_emulation(void);
extern long long os_nsecs(void);
+extern long long os_vnsecs(void);
/* skas/mem.c */
extern long run_syscall_stub(struct mm_id * mm_idp,
diff --git a/arch/um/include/shared/skas/stub-data.h b/arch/um/include/shared/skas/stub-data.h
index f6ed92c..e09d8fd 100644
--- a/arch/um/include/shared/skas/stub-data.h
+++ b/arch/um/include/shared/skas/stub-data.h
@@ -6,12 +6,11 @@
#ifndef __STUB_DATA_H
#define __STUB_DATA_H
-#include <sys/time.h>
+#include <time.h>
struct stub_data {
- long offset;
+ unsigned long offset;
int fd;
- struct itimerval timer;
long err;
};
diff --git a/arch/um/include/shared/timer-internal.h b/arch/um/include/shared/timer-internal.h
new file mode 100644
index 0000000..03e6f21
--- /dev/null
+++ b/arch/um/include/shared/timer-internal.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) 2012 - 2014 Cisco Systems
+ * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
+ * Licensed under the GPL
+ */
+
+#ifndef __TIMER_INTERNAL_H__
+#define __TIMER_INTERNAL_H__
+
+#define TIMER_MULTIPLIER 256
+#define TIMER_MIN_DELTA 500
+
+#endif
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c
index a6d9226..876dcdc 100644
--- a/arch/um/kernel/process.c
+++ b/arch/um/kernel/process.c
@@ -27,6 +27,7 @@
#include <kern_util.h>
#include <os.h>
#include <skas.h>
+#include <timer-internal.h>
/*
* This is a per-cpu array. A processor only modifies its entry and it only
@@ -203,11 +204,8 @@ void initial_thread_cb(void (*proc)(void *), void *arg)
void arch_cpu_idle(void)
{
- unsigned long long nsecs;
-
cpu_tasks[current_thread_info()->cpu].pid = os_getpid();
- nsecs = disable_timer();
- idle_sleep(nsecs);
+ os_idle_sleep(UM_NSEC_PER_SEC);
local_irq_enable();
}
diff --git a/arch/um/kernel/skas/clone.c b/arch/um/kernel/skas/clone.c
index 289771d..498148b 100644
--- a/arch/um/kernel/skas/clone.c
+++ b/arch/um/kernel/skas/clone.c
@@ -35,11 +35,6 @@ stub_clone_handler(void)
if (err)
goto out;
- err = stub_syscall3(__NR_setitimer, ITIMER_VIRTUAL,
- (long) &data->timer, 0);
- if (err)
- goto out;
-
remap_stack(data->fd, data->offset);
goto done;
diff --git a/arch/um/kernel/skas/mmu.c b/arch/um/kernel/skas/mmu.c
index fda1deb..42e2988 100644
--- a/arch/um/kernel/skas/mmu.c
+++ b/arch/um/kernel/skas/mmu.c
@@ -61,10 +61,12 @@ int init_new_context(struct task_struct *task, struct mm_struct *mm)
if (current->mm != NULL && current->mm != &init_mm)
from_mm = ¤t->mm->context;
+ block_signals();
if (from_mm)
to_mm->id.u.pid = copy_context_skas0(stack,
from_mm->id.u.pid);
else to_mm->id.u.pid = start_userspace(stack);
+ unblock_signals();
if (to_mm->id.u.pid < 0) {
ret = to_mm->id.u.pid;
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index 5af441e..dfc8972 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2012-2014 Cisco Systems
* Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
* Licensed under the GPL
*/
@@ -7,11 +8,15 @@
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/jiffies.h>
+#include <linux/mm.h>
+#include <linux/sched.h>
+#include <linux/spinlock.h>
#include <linux/threads.h>
#include <asm/irq.h>
#include <asm/param.h>
#include <kern_util.h>
#include <os.h>
+#include <timer-internal.h>
void timer_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs)
{
@@ -24,81 +29,97 @@ void timer_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs)
static int itimer_shutdown(struct clock_event_device *evt)
{
- disable_timer();
+ os_timer_disable();
return 0;
}
static int itimer_set_periodic(struct clock_event_device *evt)
{
- set_interval();
+ os_timer_set_interval(NULL, NULL);
return 0;
}
static int itimer_next_event(unsigned long delta,
struct clock_event_device *evt)
{
- return timer_one_shot(delta + 1);
+ return os_timer_one_shot(delta);
}
-static struct clock_event_device itimer_clockevent = {
- .name = "itimer",
+static int itimer_one_shot(struct clock_event_device *evt)
+{
+ os_timer_one_shot(1);
+ return 0;
+}
+
+static struct clock_event_device timer_clockevent = {
+ .name = "posix-timer",
.rating = 250,
.cpumask = cpu_all_mask,
.features = CLOCK_EVT_FEAT_PERIODIC |
CLOCK_EVT_FEAT_ONESHOT,
.set_state_shutdown = itimer_shutdown,
.set_state_periodic = itimer_set_periodic,
- .set_state_oneshot = itimer_shutdown,
+ .set_state_oneshot = itimer_one_shot,
.set_next_event = itimer_next_event,
- .shift = 32,
+ .shift = 0,
+ .max_delta_ns = 0xffffffff,
+ .min_delta_ns = TIMER_MIN_DELTA, //microsecond resolution should be enough for anyone, same as 640K RAM
.irq = 0,
+ .mult = 1,
};
static irqreturn_t um_timer(int irq, void *dev)
{
- (*itimer_clockevent.event_handler)(&itimer_clockevent);
+ if (get_current()->mm != NULL)
+ {
+ /* userspace - relay signal, results in correct userspace timers */
+ os_alarm_process(get_current()->mm->context.id.u.pid);
+ }
+
+ (*timer_clockevent.event_handler)(&timer_clockevent);
return IRQ_HANDLED;
}
-static cycle_t itimer_read(struct clocksource *cs)
+static cycle_t timer_read(struct clocksource *cs)
{
- return os_nsecs() / 1000;
+ return os_nsecs() / TIMER_MULTIPLIER;
}
-static struct clocksource itimer_clocksource = {
- .name = "itimer",
+static struct clocksource timer_clocksource = {
+ .name = "timer",
.rating = 300,
- .read = itimer_read,
+ .read = timer_read,
.mask = CLOCKSOURCE_MASK(64),
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
-static void __init setup_itimer(void)
+static void __init timer_setup(void)
{
int err;
- err = request_irq(TIMER_IRQ, um_timer, 0, "timer", NULL);
+ err = request_irq(TIMER_IRQ, um_timer, IRQF_TIMER, "hr timer", NULL);
if (err != 0)
printk(KERN_ERR "register_timer : request_irq failed - "
"errno = %d\n", -err);
- itimer_clockevent.mult = div_sc(HZ, NSEC_PER_SEC, 32);
- itimer_clockevent.max_delta_ns =
- clockevent_delta2ns(60 * HZ, &itimer_clockevent);
- itimer_clockevent.min_delta_ns =
- clockevent_delta2ns(1, &itimer_clockevent);
- err = clocksource_register_hz(&itimer_clocksource, USEC_PER_SEC);
+ err = os_timer_create(NULL);
+ if (err != 0) {
+ printk(KERN_ERR "creation of timer failed - errno = %d\n", -err);
+ return;
+ }
+
+ err = clocksource_register_hz(&timer_clocksource, NSEC_PER_SEC/TIMER_MULTIPLIER);
if (err) {
printk(KERN_ERR "clocksource_register_hz returned %d\n", err);
return;
}
- clockevents_register_device(&itimer_clockevent);
+ clockevents_register_device(&timer_clockevent);
}
void read_persistent_clock(struct timespec *ts)
{
- long long nsecs = os_nsecs();
+ long long nsecs = os_persistent_clock_emulation();
set_normalized_timespec(ts, nsecs / NSEC_PER_SEC,
nsecs % NSEC_PER_SEC);
@@ -106,6 +127,6 @@ void read_persistent_clock(struct timespec *ts)
void __init time_init(void)
{
- timer_init();
- late_time_init = setup_itimer;
+ timer_set_signal_handler();
+ late_time_init = timer_setup;
}
diff --git a/arch/um/os-Linux/internal.h b/arch/um/os-Linux/internal.h
deleted file mode 100644
index 0dc2c9f..0000000
--- a/arch/um/os-Linux/internal.h
+++ /dev/null
@@ -1 +0,0 @@
-void alarm_handler(int sig, struct siginfo *unused_si, mcontext_t *mc);
diff --git a/arch/um/os-Linux/main.c b/arch/um/os-Linux/main.c
index df9191a..6e36f0f 100644
--- a/arch/um/os-Linux/main.c
+++ b/arch/um/os-Linux/main.c
@@ -163,13 +163,13 @@ int __init main(int argc, char **argv, char **envp)
/*
* This signal stuff used to be in the reboot case. However,
- * sometimes a SIGVTALRM can come in when we're halting (reproducably
+ * sometimes a timer signal can come in when we're halting (reproducably
* when writing out gcov information, presumably because that takes
* some time) and cause a segfault.
*/
- /* stop timers and set SIGVTALRM to be ignored */
- disable_timer();
+ /* stop timers and set timer signal to be ignored */
+ os_timer_disable();
/* disable SIGIO for the fds and set SIGIO to be ignored */
err = deactivate_all_fds();
diff --git a/arch/um/os-Linux/process.c b/arch/um/os-Linux/process.c
index 8408aba..f3bd983 100644
--- a/arch/um/os-Linux/process.c
+++ b/arch/um/os-Linux/process.c
@@ -89,6 +89,11 @@ int os_process_parent(int pid)
return parent;
}
+void os_alarm_process(int pid)
+{
+ kill(pid, SIGALRM);
+}
+
void os_stop_process(int pid)
{
kill(pid, SIGSTOP);
diff --git a/arch/um/os-Linux/signal.c b/arch/um/os-Linux/signal.c
index 036d0db..e04a4cd 100644
--- a/arch/um/os-Linux/signal.c
+++ b/arch/um/os-Linux/signal.c
@@ -13,7 +13,6 @@
#include <kern_util.h>
#include <os.h>
#include <sysdep/mcontext.h>
-#include "internal.h"
void (*sig_info[NSIG])(int, struct siginfo *, struct uml_pt_regs *) = {
[SIGTRAP] = relay_signal,
@@ -23,7 +22,8 @@ void (*sig_info[NSIG])(int, struct siginfo *, struct uml_pt_regs *) = {
[SIGBUS] = bus_handler,
[SIGSEGV] = segv_handler,
[SIGIO] = sigio_handler,
- [SIGVTALRM] = timer_handler };
+ [SIGALRM] = timer_handler
+};
static void sig_handler_common(int sig, struct siginfo *si, mcontext_t *mc)
{
@@ -38,7 +38,7 @@ static void sig_handler_common(int sig, struct siginfo *si, mcontext_t *mc)
}
/* enable signals if sig isn't IRQ signal */
- if ((sig != SIGIO) && (sig != SIGWINCH) && (sig != SIGVTALRM))
+ if ((sig != SIGIO) && (sig != SIGWINCH) && (sig != SIGALRM))
unblock_signals();
(*sig_info[sig])(sig, si, &r);
@@ -55,8 +55,8 @@ static void sig_handler_common(int sig, struct siginfo *si, mcontext_t *mc)
#define SIGIO_BIT 0
#define SIGIO_MASK (1 << SIGIO_BIT)
-#define SIGVTALRM_BIT 1
-#define SIGVTALRM_MASK (1 << SIGVTALRM_BIT)
+#define SIGALRM_BIT 1
+#define SIGALRM_MASK (1 << SIGALRM_BIT)
static int signals_enabled;
static unsigned int signals_pending;
@@ -78,36 +78,34 @@ void sig_handler(int sig, struct siginfo *si, mcontext_t *mc)
set_signals(enabled);
}
-static void real_alarm_handler(mcontext_t *mc)
+static void timer_real_alarm_handler(mcontext_t *mc)
{
struct uml_pt_regs regs;
if (mc != NULL)
get_regs_from_mc(®s, mc);
- regs.is_user = 0;
- unblock_signals();
- timer_handler(SIGVTALRM, NULL, ®s);
+ timer_handler(SIGALRM, NULL, ®s);
}
-void alarm_handler(int sig, struct siginfo *unused_si, mcontext_t *mc)
+void timer_alarm_handler(int sig, struct siginfo *unused_si, mcontext_t *mc)
{
int enabled;
enabled = signals_enabled;
if (!signals_enabled) {
- signals_pending |= SIGVTALRM_MASK;
+ signals_pending |= SIGALRM_MASK;
return;
}
block_signals();
- real_alarm_handler(mc);
+ timer_real_alarm_handler(mc);
set_signals(enabled);
}
-void timer_init(void)
+void timer_set_signal_handler(void)
{
- set_handler(SIGVTALRM);
+ set_handler(SIGALRM);
}
void set_sigstack(void *sig_stack, int size)
@@ -131,10 +129,9 @@ static void (*handlers[_NSIG])(int sig, struct siginfo *si, mcontext_t *mc) = {
[SIGIO] = sig_handler,
[SIGWINCH] = sig_handler,
- [SIGVTALRM] = alarm_handler
+ [SIGALRM] = timer_alarm_handler
};
-
static void hard_handler(int sig, siginfo_t *si, void *p)
{
struct ucontext *uc = p;
@@ -188,9 +185,9 @@ void set_handler(int sig)
/* block irq ones */
sigemptyset(&action.sa_mask);
- sigaddset(&action.sa_mask, SIGVTALRM);
sigaddset(&action.sa_mask, SIGIO);
sigaddset(&action.sa_mask, SIGWINCH);
+ sigaddset(&action.sa_mask, SIGALRM);
if (sig == SIGSEGV)
flags |= SA_NODEFER;
@@ -283,8 +280,8 @@ void unblock_signals(void)
if (save_pending & SIGIO_MASK)
sig_handler_common(SIGIO, NULL, NULL);
- if (save_pending & SIGVTALRM_MASK)
- real_alarm_handler(NULL);
+ if (save_pending & SIGALRM_MASK)
+ timer_real_alarm_handler(NULL);
}
}
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c
index 3dddedb..00c68bf 100644
--- a/arch/um/os-Linux/skas/process.c
+++ b/arch/um/os-Linux/skas/process.c
@@ -45,7 +45,7 @@ static int ptrace_dump_regs(int pid)
* Signals that are OK to receive in the stub - we'll just continue it.
* SIGWINCH will happen when UML is inside a detached screen.
*/
-#define STUB_SIG_MASK ((1 << SIGVTALRM) | (1 << SIGWINCH))
+#define STUB_SIG_MASK ((1 << SIGALRM) | (1 << SIGWINCH))
/* Signals that the stub will finish with - anything else is an error */
#define STUB_DONE_MASK (1 << SIGTRAP)
@@ -179,19 +179,13 @@ extern char __syscall_stub_start[];
static int userspace_tramp(void *stack)
{
void *addr;
- int err, fd;
+ int fd;
unsigned long long offset;
ptrace(PTRACE_TRACEME, 0, 0, 0);
signal(SIGTERM, SIG_DFL);
signal(SIGWINCH, SIG_IGN);
- err = set_interval();
- if (err) {
- printk(UM_KERN_ERR "userspace_tramp - setting timer failed, "
- "errno = %d\n", err);
- exit(1);
- }
/*
* This has a pte, but it can't be mapped in with the usual
@@ -282,7 +276,7 @@ int start_userspace(unsigned long stub_stack)
"errno = %d\n", errno);
goto out_kill;
}
- } while (WIFSTOPPED(status) && (WSTOPSIG(status) == SIGVTALRM));
+ } while (WIFSTOPPED(status) && (WSTOPSIG(status) == SIGALRM));
if (!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGSTOP)) {
err = -EINVAL;
@@ -315,8 +309,6 @@ int start_userspace(unsigned long stub_stack)
void userspace(struct uml_pt_regs *regs)
{
- struct itimerval timer;
- unsigned long long nsecs, now;
int err, status, op, pid = userspace_pid[0];
/* To prevent races if using_sysemu changes under us.*/
int local_using_sysemu;
@@ -325,13 +317,8 @@ void userspace(struct uml_pt_regs *regs)
/* Handle any immediate reschedules or signals */
interrupt_end();
- if (getitimer(ITIMER_VIRTUAL, &timer))
- printk(UM_KERN_ERR "Failed to get itimer, errno = %d\n", errno);
- nsecs = timer.it_value.tv_sec * UM_NSEC_PER_SEC +
- timer.it_value.tv_usec * UM_NSEC_PER_USEC;
- nsecs += os_nsecs();
-
while (1) {
+
/*
* This can legitimately fail if the process loads a
* bogus value into a segment register. It will
@@ -401,18 +388,7 @@ void userspace(struct uml_pt_regs *regs)
case SIGTRAP:
relay_signal(SIGTRAP, (struct siginfo *)&si, regs);
break;
- case SIGVTALRM:
- now = os_nsecs();
- if (now < nsecs)
- break;
- block_signals();
- (*sig_info[sig])(sig, (struct siginfo *)&si, regs);
- unblock_signals();
- nsecs = timer.it_value.tv_sec *
- UM_NSEC_PER_SEC +
- timer.it_value.tv_usec *
- UM_NSEC_PER_USEC;
- nsecs += os_nsecs();
+ case SIGALRM:
break;
case SIGIO:
case SIGILL:
@@ -460,7 +436,6 @@ __initcall(init_thread_regs);
int copy_context_skas0(unsigned long new_stack, int pid)
{
- struct timeval tv = { .tv_sec = 0, .tv_usec = UM_USEC_PER_SEC / UM_HZ };
int err;
unsigned long current_stack = current_stub_stack();
struct stub_data *data = (struct stub_data *) current_stack;
@@ -472,11 +447,10 @@ int copy_context_skas0(unsigned long new_stack, int pid)
* prepare offset and fd of child's stack as argument for parent's
* and child's mmap2 calls
*/
- *data = ((struct stub_data) { .offset = MMAP_OFFSET(new_offset),
- .fd = new_fd,
- .timer = ((struct itimerval)
- { .it_value = tv,
- .it_interval = tv }) });
+ *data = ((struct stub_data) {
+ .offset = MMAP_OFFSET(new_offset),
+ .fd = new_fd
+ });
err = ptrace_setregs(pid, thread_regs);
if (err < 0) {
diff --git a/arch/um/os-Linux/time.c b/arch/um/os-Linux/time.c
index e9824d5..0e2bb7d 100644
--- a/arch/um/os-Linux/time.c
+++ b/arch/um/os-Linux/time.c
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2012-2014 Cisco Systems
* Copyright (C) 2000 - 2007 Jeff Dike (jdike{addtoit,linux.intel}.com)
* Licensed under the GPL
*/
@@ -10,177 +11,172 @@
#include <sys/time.h>
#include <kern_util.h>
#include <os.h>
-#include "internal.h"
+#include <string.h>
+#include <timer-internal.h>
-int set_interval(void)
-{
- int usec = UM_USEC_PER_SEC / UM_HZ;
- struct itimerval interval = ((struct itimerval) { { 0, usec },
- { 0, usec } });
-
- if (setitimer(ITIMER_VIRTUAL, &interval, NULL) == -1)
- return -errno;
+static timer_t event_high_res_timer = 0;
- return 0;
+static inline long long timeval_to_ns(const struct timeval *tv)
+{
+ return ((long long) tv->tv_sec * UM_NSEC_PER_SEC) +
+ tv->tv_usec * UM_NSEC_PER_USEC;
}
-int timer_one_shot(int ticks)
+static inline long long timespec_to_ns(const struct timespec *ts)
{
- unsigned long usec = ticks * UM_USEC_PER_SEC / UM_HZ;
- unsigned long sec = usec / UM_USEC_PER_SEC;
- struct itimerval interval;
-
- usec %= UM_USEC_PER_SEC;
- interval = ((struct itimerval) { { 0, 0 }, { sec, usec } });
+ return ((long long) ts->tv_sec * UM_NSEC_PER_SEC) +
+ ts->tv_nsec;
+}
- if (setitimer(ITIMER_VIRTUAL, &interval, NULL) == -1)
- return -errno;
+long long os_persistent_clock_emulation (void) {
+ struct timespec realtime_tp;
- return 0;
+ clock_gettime(CLOCK_REALTIME, &realtime_tp);
+ return timespec_to_ns(&realtime_tp);
}
/**
- * timeval_to_ns - Convert timeval to nanoseconds
- * @ts: pointer to the timeval variable to be converted
- *
- * Returns the scalar nanosecond representation of the timeval
- * parameter.
- *
- * Ripped from linux/time.h because it's a kernel header, and thus
- * unusable from here.
+ * os_timer_create() - create an new posix (interval) timer
*/
-static inline long long timeval_to_ns(const struct timeval *tv)
-{
- return ((long long) tv->tv_sec * UM_NSEC_PER_SEC) +
- tv->tv_usec * UM_NSEC_PER_USEC;
+int os_timer_create(void* timer) {
+
+ timer_t* t = timer;
+
+ if(t == NULL) {
+ t = &event_high_res_timer;
+ }
+
+ if (timer_create(
+ CLOCK_MONOTONIC,
+ NULL,
+ t) == -1) {
+ return -1;
+ }
+ return 0;
}
-long long disable_timer(void)
+int os_timer_set_interval(void* timer, void* i)
{
- struct itimerval time = ((struct itimerval) { { 0, 0 }, { 0, 0 } });
- long long remain, max = UM_NSEC_PER_SEC / UM_HZ;
+ struct itimerspec its;
+ unsigned long long nsec;
+ timer_t* t = timer;
+ struct itimerspec* its_in = i;
- if (setitimer(ITIMER_VIRTUAL, &time, &time) < 0)
- printk(UM_KERN_ERR "disable_timer - setitimer failed, "
- "errno = %d\n", errno);
+ if(t == NULL) {
+ t = &event_high_res_timer;
+ }
- remain = timeval_to_ns(&time.it_value);
- if (remain > max)
- remain = max;
+ nsec = UM_NSEC_PER_SEC / UM_HZ;
- return remain;
-}
+ if(its_in != NULL) {
+ its.it_value.tv_sec = its_in->it_value.tv_sec;
+ its.it_value.tv_nsec = its_in->it_value.tv_nsec;
+ } else {
+ its.it_value.tv_sec = 0;
+ its.it_value.tv_nsec = nsec;
+ }
-long long os_nsecs(void)
-{
- struct timeval tv;
+ its.it_interval.tv_sec = 0;
+ its.it_interval.tv_nsec = nsec;
- gettimeofday(&tv, NULL);
- return timeval_to_ns(&tv);
-}
+ if(timer_settime(*t, 0, &its, NULL) == -1) {
+ return -errno;
+ }
-#ifdef UML_CONFIG_NO_HZ_COMMON
-static int after_sleep_interval(struct timespec *ts)
-{
return 0;
}
-static void deliver_alarm(void)
+/**
+ * os_timer_remain() - returns the remaining nano seconds of the given interval
+ * timer
+ * Because this is the remaining time of an interval timer, which correspondends
+ * to HZ, this value can never be bigger than one second. Just
+ * the nanosecond part of the timer is returned.
+ * The returned time is relative to the start time of the interval timer.
+ * Return an negative value in an error case.
+ */
+long os_timer_remain(void* timer)
{
- alarm_handler(SIGVTALRM, NULL, NULL);
-}
+ struct itimerspec its;
+ timer_t* t = timer;
-static unsigned long long sleep_time(unsigned long long nsecs)
-{
- return nsecs;
-}
+ if(t == NULL) {
+ t = &event_high_res_timer;
+ }
-#else
-unsigned long long last_tick;
-unsigned long long skew;
+ if(timer_gettime(t, &its) == -1) {
+ return -errno;
+ }
+
+ return its.it_value.tv_nsec;
+}
-static void deliver_alarm(void)
+int os_timer_one_shot(int ticks)
{
- unsigned long long this_tick = os_nsecs();
- int one_tick = UM_NSEC_PER_SEC / UM_HZ;
+ struct itimerspec its;
+ unsigned long long nsec;
+ unsigned long sec;
- /* Protection against the host's time going backwards */
- if ((last_tick != 0) && (this_tick < last_tick))
- this_tick = last_tick;
+ nsec = (ticks + 1);
+ sec = nsec / UM_NSEC_PER_SEC;
+ nsec = nsec % UM_NSEC_PER_SEC;
- if (last_tick == 0)
- last_tick = this_tick - one_tick;
+ its.it_value.tv_sec = nsec / UM_NSEC_PER_SEC;
+ its.it_value.tv_nsec = nsec;
- skew += this_tick - last_tick;
+ its.it_interval.tv_sec = 0;
+ its.it_interval.tv_nsec = 0; // we cheat here
- while (skew >= one_tick) {
- alarm_handler(SIGVTALRM, NULL, NULL);
- skew -= one_tick;
- }
-
- last_tick = this_tick;
+ timer_settime(event_high_res_timer, 0, &its, NULL);
+ return 0;
}
-static unsigned long long sleep_time(unsigned long long nsecs)
+/**
+ * os_timer_disable() - disable the posix (interval) timer
+ * Returns the remaining interval timer time in nanoseconds
+ */
+long long os_timer_disable(void)
{
- return nsecs > skew ? nsecs - skew : 0;
+ struct itimerspec its;
+
+ memset(&its, 0, sizeof(struct itimerspec));
+ timer_settime(event_high_res_timer, 0, &its, &its);
+
+ return its.it_value.tv_sec * UM_NSEC_PER_SEC + its.it_value.tv_nsec;
}
-static inline long long timespec_to_us(const struct timespec *ts)
+long long os_vnsecs(void)
{
- return ((long long) ts->tv_sec * UM_USEC_PER_SEC) +
- ts->tv_nsec / UM_NSEC_PER_USEC;
+ struct timespec ts;
+
+ clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&ts);
+ return timespec_to_ns(&ts);
}
-static int after_sleep_interval(struct timespec *ts)
+long long os_nsecs(void)
{
- int usec = UM_USEC_PER_SEC / UM_HZ;
- long long start_usecs = timespec_to_us(ts);
- struct timeval tv;
- struct itimerval interval;
-
- /*
- * It seems that rounding can increase the value returned from
- * setitimer to larger than the one passed in. Over time,
- * this will cause the remaining time to be greater than the
- * tick interval. If this happens, then just reduce the first
- * tick to the interval value.
- */
- if (start_usecs > usec)
- start_usecs = usec;
-
- start_usecs -= skew / UM_NSEC_PER_USEC;
- if (start_usecs < 0)
- start_usecs = 0;
-
- tv = ((struct timeval) { .tv_sec = start_usecs / UM_USEC_PER_SEC,
- .tv_usec = start_usecs % UM_USEC_PER_SEC });
- interval = ((struct itimerval) { { 0, usec }, tv });
-
- if (setitimer(ITIMER_VIRTUAL, &interval, NULL) == -1)
- return -errno;
+ struct timespec ts;
- return 0;
+ clock_gettime(CLOCK_MONOTONIC,&ts);
+ return timespec_to_ns(&ts);
}
-#endif
-void idle_sleep(unsigned long long nsecs)
+/**
+ * os_idle_sleep() - sleep for a given time of nsecs
+ * @nsecs: nanoseconds to sleep
+ */
+void os_idle_sleep(unsigned long long nsecs)
{
struct timespec ts;
- /*
- * nsecs can come in as zero, in which case, this starts a
- * busy loop. To prevent this, reset nsecs to the tick
- * interval if it is zero.
- */
- if (nsecs == 0)
- nsecs = UM_NSEC_PER_SEC / UM_HZ;
-
- nsecs = sleep_time(nsecs);
- ts = ((struct timespec) { .tv_sec = nsecs / UM_NSEC_PER_SEC,
- .tv_nsec = nsecs % UM_NSEC_PER_SEC });
-
- if (nanosleep(&ts, &ts) == 0)
- deliver_alarm();
- after_sleep_interval(&ts);
+ if (nsecs <= 0) {
+ return;
+ }
+
+ ts = ((struct timespec) {
+ .tv_sec = nsecs / UM_NSEC_PER_SEC,
+ .tv_nsec = nsecs % UM_NSEC_PER_SEC
+ });
+
+ clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);
}
--
2.1.4
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply related [flat|nested] 29+ messages in thread* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-21 8:42 [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers Anton Ivanov
@ 2015-10-25 18:46 ` Anton Ivanov
2015-10-26 10:12 ` Richard Weinberger
0 siblings, 1 reply; 29+ messages in thread
From: Anton Ivanov @ 2015-10-25 18:46 UTC (permalink / raw)
To: user-mode-linux-devel; +Cc: Richard Weinberger
Hi List, hi Richard,
I am going to sort out the UBD patchset next as that has no dependencies
on timer and the other stuff which is waiting in the queue behind the
timers.
That should give UML a significant boost. It is nothing particularly
revolutionary (qemu has been using some of that for ages).
I should be able to get these out of the door early on this week.
A.
P.S. If there is anything to fix on the timer one, please shout.
A.
On 21/10/15 09:42, Anton Ivanov wrote:
> Background: UML is using an obsolete itimer call for
> all timers and "polls" for kernel space timer firing
> in its userspace portion resulting in a long list
> of bugs and incorrect behaviour(s). It also uses
> ITIMER_VIRTUAL for its timer which results in the
> timer being dependent on it running and the cpu
> load.
>
> This patch fixes this by moving to posix high resolution
> timers firing off CLOCK_MONOTONIC and relaying the timer
> correctly to the UML userspace.
>
> FIXES: crashes when hosts suspends/resumes
>
> FIXES: broken userspace timers - effecive ~40Hz instead
> of what they should be. Note - this modifies skas behavior
> by no longer setting an itimer per clone(). Timer events
> are relayed instead.
>
> FIXES: kernel network packet scheduling disciplines
> FIXES: tcp behaviour especially under load
> FIXES: various timer related corner cases
>
> IMPROVES: overall responsiveness of the userspace
>
> Signed-off-by: Anton Ivanov <aivanov@brocade.com>
> Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
> ---
> arch/um/Makefile | 2 +-
> arch/um/include/shared/os.h | 15 +-
> arch/um/include/shared/skas/stub-data.h | 5 +-
> arch/um/include/shared/timer-internal.h | 13 ++
> arch/um/kernel/process.c | 6 +-
> arch/um/kernel/skas/clone.c | 5 -
> arch/um/kernel/skas/mmu.c | 2 +
> arch/um/kernel/time.c | 71 +++++----
> arch/um/os-Linux/internal.h | 1 -
> arch/um/os-Linux/main.c | 6 +-
> arch/um/os-Linux/process.c | 5 +
> arch/um/os-Linux/signal.c | 35 +++--
> arch/um/os-Linux/skas/process.c | 44 ++----
> arch/um/os-Linux/time.c | 248 ++++++++++++++++----------------
> 14 files changed, 231 insertions(+), 227 deletions(-)
> create mode 100644 arch/um/include/shared/timer-internal.h
> delete mode 100644 arch/um/os-Linux/internal.h
>
[snip]
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-25 18:46 ` Anton Ivanov
@ 2015-10-26 10:12 ` Richard Weinberger
2015-10-29 6:23 ` Anton Ivanov
0 siblings, 1 reply; 29+ messages in thread
From: Richard Weinberger @ 2015-10-26 10:12 UTC (permalink / raw)
To: Anton Ivanov, user-mode-linux-devel
Hi!
Am 25.10.2015 um 19:46 schrieb Anton Ivanov:
> Hi List, hi Richard,
>
> I am going to sort out the UBD patchset next as that has no dependencies on timer and the other stuff which is waiting in the queue behind the timers.
>
> That should give UML a significant boost. It is nothing particularly revolutionary (qemu has been using some of that for ages).
>
> I should be able to get these out of the door early on this week.
Nice!
> A.
>
> P.S. If there is anything to fix on the timer one, please shout.
Looks good so far. Unless it breaks a lot it will be part of the 4.4 merge window. :)
Thanks,
//richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-26 10:12 ` Richard Weinberger
@ 2015-10-29 6:23 ` Anton Ivanov
2015-10-31 13:54 ` Richard Weinberger
0 siblings, 1 reply; 29+ messages in thread
From: Anton Ivanov @ 2015-10-29 6:23 UTC (permalink / raw)
To: Richard Weinberger, user-mode-linux-devel
I got the first patchset to build, it works very well on a single core
host or with CPU pinning of the UML - the performance gain is > 25%.
However, I introduced a race somewhere along the way - it crashes UML
reliably if you do not pin CPUs.
I will debug it, fix it and submit. I am guessing a week or so. IMHO 25%
is worth it :)
A.
On 26/10/15 10:12, Richard Weinberger wrote:
> Hi!
>
> Am 25.10.2015 um 19:46 schrieb Anton Ivanov:
>> Hi List, hi Richard,
>>
>> I am going to sort out the UBD patchset next as that has no dependencies on timer and the other stuff which is waiting in the queue behind the timers.
>>
>> That should give UML a significant boost. It is nothing particularly revolutionary (qemu has been using some of that for ages).
>>
>> I should be able to get these out of the door early on this week.
> Nice!
>
>> A.
>>
>> P.S. If there is anything to fix on the timer one, please shout.
> Looks good so far. Unless it breaks a lot it will be part of the 4.4 merge window. :)
>
> Thanks,
> //richard
>
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-29 6:23 ` Anton Ivanov
@ 2015-10-31 13:54 ` Richard Weinberger
2015-10-31 15:10 ` Thomas Meyer
0 siblings, 1 reply; 29+ messages in thread
From: Richard Weinberger @ 2015-10-31 13:54 UTC (permalink / raw)
To: Anton Ivanov
Cc: Richard Weinberger, user-mode-linux-devel@lists.sourceforge.net
On Thu, Oct 29, 2015 at 7:23 AM, Anton Ivanov
<anton.ivanov@kot-begemot.co.uk> wrote:
> I got the first patchset to build, it works very well on a single core
> host or with CPU pinning of the UML - the performance gain is > 25%.
>
> However, I introduced a race somewhere along the way - it crashes UML
> reliably if you do not pin CPUs.
How does the crash look like?
I see also an issue with that patch, after UML has an uptime of a few minutes
a task which does nanosleep() will never wake up.
[<000000006001a29d>] __switch_to+0x53/0x82
[<00000000602995d2>] __schedule+0x2f4/0x3f7
[<0000000060299751>] schedule+0x7c/0x95
[<000000006029b871>] do_nanosleep+0x8b/0x134
[<0000000060068a41>] hrtimer_nanosleep+0xb2/0x15a
[<0000000060068b90>] SyS_nanosleep+0xa7/0xbf
[<000000006001d492>] handle_syscall+0x6a/0x84
[<00000000600304a8>] userspace+0x3d8/0x463
[<000000006001a180>] fork_handler+0x85/0x87
[<ffffffffffffffff>] 0xffffffffffffffff
--
Thanks,
//richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 13:54 ` Richard Weinberger
@ 2015-10-31 15:10 ` Thomas Meyer
2015-10-31 15:13 ` Richard Weinberger
0 siblings, 1 reply; 29+ messages in thread
From: Thomas Meyer @ 2015-10-31 15:10 UTC (permalink / raw)
To: Richard Weinberger, Anton Ivanov
Cc: Richard Weinberger, user-mode-linux-devel@lists.sourceforge.net
Am Samstag, den 31.10.2015, 14:54 +0100 schrieb Richard Weinberger:
> On Thu, Oct 29, 2015 at 7:23 AM, Anton Ivanov
> <anton.ivanov@kot-begemot.co.uk> wrote:
> > I got the first patchset to build, it works very well on a single
> > core
> > host or with CPU pinning of the UML - the performance gain is >
> > 25%.
> >
> > However, I introduced a race somewhere along the way - it crashes
> > UML
> > reliably if you do not pin CPUs.
>
> How does the crash look like?
> I see also an issue with that patch, after UML has an uptime of a few
> minutes
> a task which does nanosleep() will never wake up.
>
> [<000000006001a29d>] __switch_to+0x53/0x82
> [<00000000602995d2>] __schedule+0x2f4/0x3f7
> [<0000000060299751>] schedule+0x7c/0x95
> [<000000006029b871>] do_nanosleep+0x8b/0x134
> [<0000000060068a41>] hrtimer_nanosleep+0xb2/0x15a
> [<0000000060068b90>] SyS_nanosleep+0xa7/0xbf
> [<000000006001d492>] handle_syscall+0x6a/0x84
> [<00000000600304a8>] userspace+0x3d8/0x463
> [<000000006001a180>] fork_handler+0x85/0x87
> [<ffffffffffffffff>] 0xffffffffffffffff
>
Hi,
is this crash/hang about the "switch clocksource to hrtimers" patch or
about the next patch that improves UBD improvements?
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 15:10 ` Thomas Meyer
@ 2015-10-31 15:13 ` Richard Weinberger
2015-10-31 15:16 ` Thomas Meyer
0 siblings, 1 reply; 29+ messages in thread
From: Richard Weinberger @ 2015-10-31 15:13 UTC (permalink / raw)
To: Thomas Meyer, Richard Weinberger, Anton Ivanov
Cc: user-mode-linux-devel@lists.sourceforge.net
Am 31.10.2015 um 16:10 schrieb Thomas Meyer:
> Am Samstag, den 31.10.2015, 14:54 +0100 schrieb Richard Weinberger:
>> On Thu, Oct 29, 2015 at 7:23 AM, Anton Ivanov
>> <anton.ivanov@kot-begemot.co.uk> wrote:
>>> I got the first patchset to build, it works very well on a single
>>> core
>>> host or with CPU pinning of the UML - the performance gain is >
>>> 25%.
>>>
>>> However, I introduced a race somewhere along the way - it crashes
>>> UML
>>> reliably if you do not pin CPUs.
>>
>> How does the crash look like?
>> I see also an issue with that patch, after UML has an uptime of a few
>> minutes
>> a task which does nanosleep() will never wake up.
>>
>> [<000000006001a29d>] __switch_to+0x53/0x82
>> [<00000000602995d2>] __schedule+0x2f4/0x3f7
>> [<0000000060299751>] schedule+0x7c/0x95
>> [<000000006029b871>] do_nanosleep+0x8b/0x134
>> [<0000000060068a41>] hrtimer_nanosleep+0xb2/0x15a
>> [<0000000060068b90>] SyS_nanosleep+0xa7/0xbf
>> [<000000006001d492>] handle_syscall+0x6a/0x84
>> [<00000000600304a8>] userspace+0x3d8/0x463
>> [<000000006001a180>] fork_handler+0x85/0x87
>> [<ffffffffffffffff>] 0xffffffffffffffff
>>
>
> Hi,
>
> is this crash/hang about the "switch clocksource to hrtimers" patch or
> about the next patch that improves UBD improvements?
Whoops. Forgot to mention. "switch clocksource to hrtimers" is the bad one.
So far I can trigger the issue only by starting UML and waiting some time.
Thanks,
//richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 15:13 ` Richard Weinberger
@ 2015-10-31 15:16 ` Thomas Meyer
2015-10-31 15:21 ` Richard Weinberger
0 siblings, 1 reply; 29+ messages in thread
From: Thomas Meyer @ 2015-10-31 15:16 UTC (permalink / raw)
To: Richard Weinberger, Richard Weinberger, Anton Ivanov
Cc: user-mode-linux-devel@lists.sourceforge.net
Am Samstag, den 31.10.2015, 16:13 +0100 schrieb Richard Weinberger:
> Am 31.10.2015 um 16:10 schrieb Thomas Meyer:
> > Am Samstag, den 31.10.2015, 14:54 +0100 schrieb Richard Weinberger:
> > > On Thu, Oct 29, 2015 at 7:23 AM, Anton Ivanov
> > > <anton.ivanov@kot-begemot.co.uk> wrote:
> > > > I got the first patchset to build, it works very well on a
> > > > single
> > > > core
> > > > host or with CPU pinning of the UML - the performance gain is >
> > > > 25%.
> > > >
> > > > However, I introduced a race somewhere along the way - it
> > > > crashes
> > > > UML
> > > > reliably if you do not pin CPUs.
> > >
> > > How does the crash look like?
> > > I see also an issue with that patch, after UML has an uptime of a
> > > few
> > > minutes
> > > a task which does nanosleep() will never wake up.
> > >
> > > [<000000006001a29d>] __switch_to+0x53/0x82
> > > [<00000000602995d2>] __schedule+0x2f4/0x3f7
> > > [<0000000060299751>] schedule+0x7c/0x95
> > > [<000000006029b871>] do_nanosleep+0x8b/0x134
> > > [<0000000060068a41>] hrtimer_nanosleep+0xb2/0x15a
> > > [<0000000060068b90>] SyS_nanosleep+0xa7/0xbf
> > > [<000000006001d492>] handle_syscall+0x6a/0x84
> > > [<00000000600304a8>] userspace+0x3d8/0x463
> > > [<000000006001a180>] fork_handler+0x85/0x87
> > > [<ffffffffffffffff>] 0xffffffffffffffff
> > >
> >
> > Hi,
> >
> > is this crash/hang about the "switch clocksource to hrtimers" patch
> > or
> > about the next patch that improves UBD improvements?
>
> Whoops. Forgot to mention. "switch clocksource to hrtimers" is the
> bad one.
> So far I can trigger the issue only by starting UML and waiting some
> time.
mhh. strange. I didn't see this behaviour on my machine, but my machine
is a rare single core system so, likely a race condition while relaying
the timer interrupt to the userspace process.
But I'm out of ideas how this could happen!
what happens when you send the hanging process a SIGVTALRM signal? does
it proceed correctly?
>
> Thanks,
> //richard
>
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 15:16 ` Thomas Meyer
@ 2015-10-31 15:21 ` Richard Weinberger
2015-10-31 15:24 ` Thomas Meyer
2015-11-02 8:14 ` Anton Ivanov
0 siblings, 2 replies; 29+ messages in thread
From: Richard Weinberger @ 2015-10-31 15:21 UTC (permalink / raw)
To: Thomas Meyer, Anton Ivanov; +Cc: user-mode-linux-devel@lists.sourceforge.net
Am 31.10.2015 um 16:16 schrieb Thomas Meyer:
> mhh. strange. I didn't see this behaviour on my machine, but my machine
> is a rare single core system so, likely a race condition while relaying
> the timer interrupt to the userspace process.
Here I can trigger it by starting UML, logging in and waiting ~5min.
Then i try to run "top" --> top hangs forever.
> But I'm out of ideas how this could happen!
Maybe some stupid timeslice over/underflow.
> what happens when you send the hanging process a SIGVTALRM signal? does
> it proceed correctly?
You mean sending SIGVTALRM to the UML host process?
It runs normally, I can also login on other ttys.
Thanks,
//richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 15:21 ` Richard Weinberger
@ 2015-10-31 15:24 ` Thomas Meyer
2015-10-31 15:30 ` Richard Weinberger
2015-11-02 8:14 ` Anton Ivanov
1 sibling, 1 reply; 29+ messages in thread
From: Thomas Meyer @ 2015-10-31 15:24 UTC (permalink / raw)
To: Richard Weinberger, Anton Ivanov
Cc: user-mode-linux-devel@lists.sourceforge.net
Am Samstag, den 31.10.2015, 16:21 +0100 schrieb Richard Weinberger:
> Am 31.10.2015 um 16:16 schrieb Thomas Meyer:
> > mhh. strange. I didn't see this behaviour on my machine, but my
> > machine
> > is a rare single core system so, likely a race condition while
> > relaying
> > the timer interrupt to the userspace process.
>
> Here I can trigger it by starting UML, logging in and waiting ~5min.
> Then i try to run "top" --> top hangs forever.
>
> > But I'm out of ideas how this could happen!
>
> Maybe some stupid timeslice over/underflow.
>
> > what happens when you send the hanging process a SIGVTALRM signal?
> > does
> > it proceed correctly?
>
> You mean sending SIGVTALRM to the UML host process?
No, to the hanging userspace process, maybe the uml host process did
receive a timer interrupt, but failed to relay this signal to the
correct userspace process.
> It runs normally, I can also login on other ttys.
>
> Thanks,
> //richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 15:24 ` Thomas Meyer
@ 2015-10-31 15:30 ` Richard Weinberger
2015-10-31 15:44 ` Thomas Meyer
0 siblings, 1 reply; 29+ messages in thread
From: Richard Weinberger @ 2015-10-31 15:30 UTC (permalink / raw)
To: Thomas Meyer, Anton Ivanov; +Cc: user-mode-linux-devel@lists.sourceforge.net
Am 31.10.2015 um 16:24 schrieb Thomas Meyer:
> Am Samstag, den 31.10.2015, 16:21 +0100 schrieb Richard Weinberger:
>> Am 31.10.2015 um 16:16 schrieb Thomas Meyer:
>>> mhh. strange. I didn't see this behaviour on my machine, but my
>>> machine
>>> is a rare single core system so, likely a race condition while
>>> relaying
>>> the timer interrupt to the userspace process.
>>
>> Here I can trigger it by starting UML, logging in and waiting ~5min.
>> Then i try to run "top" --> top hangs forever.
>>
>>> But I'm out of ideas how this could happen!
>>
>> Maybe some stupid timeslice over/underflow.
>>
>>> what happens when you send the hanging process a SIGVTALRM signal?
>>> does
>>> it proceed correctly?
>>
>> You mean sending SIGVTALRM to the UML host process?
>
> No, to the hanging userspace process, maybe the uml host process did
> receive a timer interrupt, but failed to relay this signal to the
> correct userspace process.
Well, this is not what top expects and dies.
signal 26 (VTALRM) was caught by top, please
see http://www.debian.org/Bugs/Reporting
The problem is within UML's scheduler it does not wake top
after the nanosleep() expires.
Maybe the new clock is too imprecise, dunno.
Thanks,
//richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 15:30 ` Richard Weinberger
@ 2015-10-31 15:44 ` Thomas Meyer
2015-10-31 16:22 ` Anton Ivanov
2015-10-31 19:06 ` Richard Weinberger
0 siblings, 2 replies; 29+ messages in thread
From: Thomas Meyer @ 2015-10-31 15:44 UTC (permalink / raw)
To: Richard Weinberger, Anton Ivanov
Cc: user-mode-linux-devel@lists.sourceforge.net
Am Samstag, den 31.10.2015, 16:30 +0100 schrieb Richard Weinberger:
> Am 31.10.2015 um 16:24 schrieb Thomas Meyer:
> > Am Samstag, den 31.10.2015, 16:21 +0100 schrieb Richard Weinberger:
> > > Am 31.10.2015 um 16:16 schrieb Thomas Meyer:
> > > > mhh. strange. I didn't see this behaviour on my machine, but my
> > > > machine
> > > > is a rare single core system so, likely a race condition while
> > > > relaying
> > > > the timer interrupt to the userspace process.
> > >
> > > Here I can trigger it by starting UML, logging in and waiting
> > > ~5min.
> > > Then i try to run "top" --> top hangs forever.
> > >
> > > > But I'm out of ideas how this could happen!
> > >
> > > Maybe some stupid timeslice over/underflow.
> > >
> > > > what happens when you send the hanging process a SIGVTALRM
> > > > signal?
> > > > does
> > > > it proceed correctly?
> > >
> > > You mean sending SIGVTALRM to the UML host process?
> >
> > No, to the hanging userspace process, maybe the uml host process
> > did
> > receive a timer interrupt, but failed to relay this signal to the
> > correct userspace process.
>
> Well, this is not what top expects and dies.
> signal 26 (VTALRM) was caught by top, please
> see http://www.debian.org/Bugs/Reporting
>
So you did send a VTALARM in the UML system to the top process?
When yes then this was a misunderstanding! I wanted you to send a
SIGVTALRM on the uml host system to the hanging pid. does this resolve
the hang?
> The problem is within UML's scheduler it does not wake top
> after the nanosleep() expires.
> Maybe the new clock is too imprecise, dunno.
>
> Thanks,
> //richard
>
> ---------------------------------------------------------------------
> ---------
> _______________________________________________
> User-mode-linux-devel mailing list
> User-mode-linux-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 15:44 ` Thomas Meyer
@ 2015-10-31 16:22 ` Anton Ivanov
2015-10-31 19:08 ` Richard Weinberger
2015-10-31 19:06 ` Richard Weinberger
1 sibling, 1 reply; 29+ messages in thread
From: Anton Ivanov @ 2015-10-31 16:22 UTC (permalink / raw)
To: Thomas Meyer, Richard Weinberger
Cc: user-mode-linux-devel@lists.sourceforge.net
Richard, can you send me your config.
I have had it running for a couple of days before submission both under
load and idle it was doing OK.
A
On 31/10/15 15:44, Thomas Meyer wrote:
> Am Samstag, den 31.10.2015, 16:30 +0100 schrieb Richard Weinberger:
>> Am 31.10.2015 um 16:24 schrieb Thomas Meyer:
>>> Am Samstag, den 31.10.2015, 16:21 +0100 schrieb Richard Weinberger:
>>>> Am 31.10.2015 um 16:16 schrieb Thomas Meyer:
>>>>> mhh. strange. I didn't see this behaviour on my machine, but my
>>>>> machine
>>>>> is a rare single core system so, likely a race condition while
>>>>> relaying
>>>>> the timer interrupt to the userspace process.
>>>> Here I can trigger it by starting UML, logging in and waiting
>>>> ~5min.
>>>> Then i try to run "top" --> top hangs forever.
>>>>
>>>>> But I'm out of ideas how this could happen!
>>>> Maybe some stupid timeslice over/underflow.
>>>>
>>>>> what happens when you send the hanging process a SIGVTALRM
>>>>> signal?
>>>>> does
>>>>> it proceed correctly?
>>>> You mean sending SIGVTALRM to the UML host process?
>>> No, to the hanging userspace process, maybe the uml host process
>>> did
>>> receive a timer interrupt, but failed to relay this signal to the
>>> correct userspace process.
>> Well, this is not what top expects and dies.
>> signal 26 (VTALRM) was caught by top, please
>> see http://www.debian.org/Bugs/Reporting
>>
> So you did send a VTALARM in the UML system to the top process?
> When yes then this was a misunderstanding! I wanted you to send a
> SIGVTALRM on the uml host system to the hanging pid. does this resolve
> the hang?
>
>
>> The problem is within UML's scheduler it does not wake top
>> after the nanosleep() expires.
>> Maybe the new clock is too imprecise, dunno.
>>
>> Thanks,
>> //richard
>>
>> ---------------------------------------------------------------------
>> ---------
>> _______________________________________________
>> User-mode-linux-devel mailing list
>> User-mode-linux-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
>
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 16:22 ` Anton Ivanov
@ 2015-10-31 19:08 ` Richard Weinberger
2015-10-31 20:17 ` Anton Ivanov
0 siblings, 1 reply; 29+ messages in thread
From: Richard Weinberger @ 2015-10-31 19:08 UTC (permalink / raw)
To: Anton Ivanov, Thomas Meyer; +Cc: user-mode-linux-devel@lists.sourceforge.net
[-- Attachment #1: Type: text/plain, Size: 432 bytes --]
Am 31.10.2015 um 17:22 schrieb Anton Ivanov:
> Richard, can you send me your config.
Sure. It is basically a defconfig.
> I have had it running for a couple of days before submission both under load and idle it was doing OK.
Well, what userspace did you try?
I did some more tests, if nanosleep() is called periodically the issue does not arise.
Maybe your userspace (systemd?) fires the syscall too often. ;)
Thanks,
//richard
[-- Attachment #2: config.um --]
[-- Type: text/plain, Size: 26103 bytes --]
#
# Automatically generated file; DO NOT EDIT.
# User Mode Linux/x86 4.3.0-rc7 Kernel Configuration
#
CONFIG_UML=y
CONFIG_MMU=y
CONFIG_NO_IOMEM=y
# CONFIG_TRACE_IRQFLAGS_SUPPORT is not set
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_BUG=y
CONFIG_HZ=100
#
# UML-specific options
#
#
# Host processor type and features
#
# CONFIG_MK8 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_MATOM is not set
CONFIG_GENERIC_CPU=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_TSC=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_UML_X86=y
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y
CONFIG_ARCH_DEFCONFIG="arch/um/configs/x86_64_defconfig"
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_3_LEVEL_PGTABLES=y
# CONFIG_ARCH_HAS_SC_SIGNALS is not set
# CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA is not set
CONFIG_GENERIC_HWEIGHT=y
# CONFIG_STATIC_LINK is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_COMPACTION is not set
CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_ZONE_DMA_FLAG=0
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_NEED_PER_CPU_KM=y
# CONFIG_CLEANCACHE is not set
# CONFIG_FRONTSWAP is not set
# CONFIG_ZPOOL is not set
# CONFIG_ZBUD is not set
# CONFIG_ZSMALLOC is not set
# CONFIG_IDLE_PAGE_TRACKING is not set
CONFIG_LD_SCRIPT_DYN=y
CONFIG_BINFMT_ELF=y
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
CONFIG_BINFMT_SCRIPT=y
# CONFIG_HAVE_AOUT is not set
CONFIG_BINFMT_MISC=m
CONFIG_COREDUMP=y
CONFIG_HOSTFS=y
CONFIG_MCONSOLE=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_KERNEL_STACK_ORDER=1
# CONFIG_MMAPPER is not set
CONFIG_NO_DMA=y
CONFIG_PGTABLE_LEVELS=3
CONFIG_IRQ_WORK=y
#
# General setup
#
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=128
CONFIG_CROSS_COMPILE=""
# CONFIG_COMPILE_TEST is not set
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_DEFAULT_HOSTNAME="(none)"
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_CROSS_MEMORY_ATTACH=y
# CONFIG_FHANDLE is not set
CONFIG_USELIB=y
# CONFIG_AUDIT is not set
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
#
# IRQ subsystem
#
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_CLOCKEVENTS=y
#
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
CONFIG_NO_HZ_IDLE=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
#
# CPU/Task time and stats accounting
#
CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
# CONFIG_TASKSTATS is not set
#
# RCU Subsystem
#
CONFIG_TINY_RCU=y
# CONFIG_RCU_EXPERT is not set
CONFIG_SRCU=y
# CONFIG_TASKS_RCU is not set
# CONFIG_RCU_STALL_COMMON is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_RCU_EXPEDITE_BOOT is not set
CONFIG_BUILD_BIN2C=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_FREEZER=y
# CONFIG_CGROUP_PIDS is not set
CONFIG_CGROUP_DEVICE=y
CONFIG_CPUSETS=y
CONFIG_PROC_PID_CPUSET=y
CONFIG_CGROUP_CPUACCT=y
# CONFIG_MEMCG is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_CFS_BANDWIDTH is not set
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
CONFIG_NET_NS=y
# CONFIG_SCHED_AUTOGROUP is not set
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_SYSFS_DEPRECATED_V2 is not set
# CONFIG_RELAY is not set
# CONFIG_BLK_DEV_INITRD is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
CONFIG_HAVE_UID16=y
CONFIG_BPF=y
# CONFIG_EXPERT is not set
CONFIG_UID16=y
CONFIG_MULTIUSER=y
# CONFIG_SGETMASK_SYSCALL is not set
CONFIG_SYSFS_SYSCALL=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_HAVE_FUTEX_CMPXCHG=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
# CONFIG_BPF_SYSCALL is not set
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_ADVISE_SYSCALLS=y
# CONFIG_USERFAULTFD is not set
CONFIG_MEMBARRIER=y
# CONFIG_EMBEDDED is not set
#
# Kernel Performance Events And Counters
#
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SYSTEM_DATA_VERIFICATION is not set
# CONFIG_PROFILING is not set
# CONFIG_UPROBES is not set
CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y
# CONFIG_CC_STACKPROTECTOR is not set
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_MODULES_USE_ELF_RELA=y
#
# GCOV-based kernel profiling
#
# CONFIG_ARCH_HAS_GCOV_PROFILE_ALL is not set
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
# CONFIG_MODULE_SIG is not set
# CONFIG_MODULE_COMPRESS is not set
CONFIG_BLOCK=y
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_BSGLIB is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
# CONFIG_BLK_DEV_THROTTLING is not set
# CONFIG_BLK_CMDLINE_PARSER is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_EFI_PARTITION=y
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=m
# CONFIG_CFQ_GROUP_IOSCHED is not set
CONFIG_DEFAULT_DEADLINE=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="deadline"
CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
CONFIG_INLINE_READ_UNLOCK=y
CONFIG_INLINE_READ_UNLOCK_IRQ=y
CONFIG_INLINE_WRITE_UNLOCK=y
CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
CONFIG_FREEZER=y
#
# UML Character Devices
#
CONFIG_STDERR_CONSOLE=y
CONFIG_SSL=y
CONFIG_NULL_CHAN=y
CONFIG_PORT_CHAN=y
CONFIG_PTY_CHAN=y
CONFIG_TTY_CHAN=y
CONFIG_XTERM_CHAN=y
# CONFIG_NOCONFIG_CHAN is not set
CONFIG_CON_ZERO_CHAN="fd:0,fd:1"
CONFIG_CON_CHAN="pts"
CONFIG_SSL_CHAN="pts"
CONFIG_UML_SOUND=m
CONFIG_SOUND=m
CONFIG_SOUND_OSS_CORE=y
CONFIG_HOSTAUDIO=m
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER=y
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
CONFIG_ALLOW_DEV_COREDUMP=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_GENERIC_CPU_DEVICES=y
# CONFIG_DMA_SHARED_BUFFER is not set
#
# Bus devices
#
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
# CONFIG_OF is not set
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_NULL_BLK is not set
CONFIG_BLK_DEV_UBD=y
# CONFIG_BLK_DEV_UBD_SYNC is not set
CONFIG_BLK_DEV_COW_COMMON=y
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_DRBD is not set
CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_BLK_DEV_RBD is not set
#
# Misc devices
#
# CONFIG_DUMMY_IRQ is not set
# CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_C2PORT is not set
#
# EEPROM support
#
# CONFIG_EEPROM_93CX6 is not set
#
# Texas Instruments shared transport line discipline
#
#
# Altera FPGA firmware download module
#
#
# Intel MIC Bus Driver
#
#
# SCIF Bus Driver
#
#
# Intel MIC Host Driver
#
#
# Intel MIC Card Driver
#
#
# SCIF Driver
#
# CONFIG_ECHO is not set
# CONFIG_CXL_BASE is not set
# CONFIG_CXL_KERNEL_API is not set
# CONFIG_CXL_EEH is not set
#
# SCSI device support
#
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_MD is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
CONFIG_DUMMY=m
# CONFIG_EQUALIZER is not set
# CONFIG_NET_TEAM is not set
# CONFIG_MACVLAN is not set
# CONFIG_VXLAN is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
CONFIG_TUN=m
# CONFIG_TUN_VNET_CROSS_LE is not set
# CONFIG_VETH is not set
# CONFIG_NLMON is not set
#
# CAIF transport drivers
#
#
# Distributed Switch Architecture drivers
#
# CONFIG_NET_DSA_MV88E6XXX is not set
# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
CONFIG_ETHERNET=y
CONFIG_NET_VENDOR_ARC=y
CONFIG_NET_VENDOR_EZCHIP=y
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_I825XX=y
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_NATSEMI=y
CONFIG_NET_VENDOR_8390=y
CONFIG_NET_VENDOR_QUALCOMM=y
CONFIG_NET_VENDOR_RENESAS=y
CONFIG_NET_VENDOR_ROCKER=y
CONFIG_NET_VENDOR_SAMSUNG=y
CONFIG_NET_VENDOR_SYNOPSYS=y
CONFIG_NET_VENDOR_VIA=y
# CONFIG_PHYLIB is not set
CONFIG_PPP=m
# CONFIG_PPP_BSDCOMP is not set
# CONFIG_PPP_DEFLATE is not set
# CONFIG_PPP_FILTER is not set
# CONFIG_PPP_MPPE is not set
# CONFIG_PPP_MULTILINK is not set
# CONFIG_PPPOE is not set
# CONFIG_PPP_ASYNC is not set
# CONFIG_PPP_SYNC_TTY is not set
CONFIG_SLIP=m
CONFIG_SLHC=m
# CONFIG_SLIP_COMPRESSED is not set
# CONFIG_SLIP_SMART is not set
# CONFIG_SLIP_MODE_SLIP6 is not set
#
# Host-side USB support is needed for USB Network Adapter support
#
CONFIG_WLAN=y
# CONFIG_HOSTAP is not set
# CONFIG_WL_MEDIATEK is not set
# CONFIG_WL_TI is not set
#
# Enable WiMAX (Networking options) to see the WiMAX drivers
#
# CONFIG_WAN is not set
#
# Character devices
#
CONFIG_TTY=y
CONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=32
# CONFIG_N_GSM is not set
# CONFIG_TRACE_SINK is not set
CONFIG_DEVMEM=y
CONFIG_DEVKMEM=y
# CONFIG_HW_RANDOM is not set
CONFIG_UML_RANDOM=y
# CONFIG_R3964 is not set
# CONFIG_RAW_DRIVER is not set
#
# I2C support
#
# CONFIG_I2C is not set
# CONFIG_SPMI is not set
# CONFIG_HSI is not set
#
# PPS support
#
# CONFIG_PPS is not set
#
# PPS generators support
#
#
# PTP clock support
#
# CONFIG_PTP_1588_CLOCK is not set
#
# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
#
# CONFIG_POWER_SUPPLY is not set
# CONFIG_POWER_AVS is not set
# CONFIG_THERMAL is not set
# CONFIG_WATCHDOG is not set
# CONFIG_REGULATOR is not set
CONFIG_SOUND_OSS_CORE_PRECLAIM=y
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# CONFIG_UWB is not set
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_AUXDISPLAY is not set
# CONFIG_UIO is not set
# CONFIG_VIRT_DRIVERS is not set
#
# Virtio drivers
#
#
# Microsoft Hyper-V guest support
#
# CONFIG_STAGING is not set
# CONFIG_CHROME_PLATFORMS is not set
#
# Hardware Spinlock drivers
#
#
# Clock Source drivers
#
# CONFIG_ATMEL_PIT is not set
# CONFIG_MAILBOX is not set
CONFIG_IOMMU_SUPPORT=y
#
# Generic IOMMU Pagetable Support
#
#
# Remoteproc drivers
#
#
# Rpmsg drivers
#
#
# SOC (System On Chip) specific Drivers
#
# CONFIG_SUNXI_SRAM is not set
# CONFIG_SOC_TI is not set
# CONFIG_PM_DEVFREQ is not set
# CONFIG_EXTCON is not set
# CONFIG_MEMORY is not set
# CONFIG_IIO is not set
# CONFIG_PWM is not set
# CONFIG_RESET_CONTROLLER is not set
# CONFIG_FMC is not set
#
# PHY Subsystem
#
# CONFIG_GENERIC_PHY is not set
# CONFIG_POWERCAP is not set
#
# Performance monitor support
#
# CONFIG_RAS is not set
#
# Android
#
# CONFIG_ANDROID is not set
# CONFIG_LIBNVDIMM is not set
# CONFIG_NVMEM is not set
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_DIAG is not set
CONFIG_UNIX=y
# CONFIG_UNIX_DIAG is not set
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_XFRM_STATISTICS is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE_DEMUX is not set
# CONFIG_NET_IP_TUNNEL is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_NET_IPVTI is not set
# CONFIG_NET_UDP_TUNNEL is not set
# CONFIG_NET_FOU is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
CONFIG_INET_XFRM_MODE_TRANSPORT=y
CONFIG_INET_XFRM_MODE_TUNNEL=y
CONFIG_INET_XFRM_MODE_BEET=y
# CONFIG_INET_LRO is not set
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_INET_UDP_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NET_PTP_CLASSIFY is not set
# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_L2TP is not set
# CONFIG_BRIDGE is not set
CONFIG_HAVE_NET_DSA=y
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_PHONET is not set
# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
# CONFIG_BATMAN_ADV is not set
# CONFIG_OPENVSWITCH is not set
# CONFIG_VSOCKETS is not set
# CONFIG_NETLINK_MMAP is not set
# CONFIG_NETLINK_DIAG is not set
# CONFIG_MPLS is not set
# CONFIG_HSR is not set
# CONFIG_NET_SWITCHDEV is not set
# CONFIG_CGROUP_NET_PRIO is not set
# CONFIG_CGROUP_NET_CLASSID is not set
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set
CONFIG_WIRELESS=y
# CONFIG_CFG80211 is not set
# CONFIG_LIB80211 is not set
#
# CFG80211 needs to be enabled for MAC80211
#
CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
# CONFIG_CAIF is not set
# CONFIG_CEPH_LIB is not set
# CONFIG_NFC is not set
# CONFIG_LWTUNNEL is not set
#
# UML Network Devices
#
CONFIG_UML_NET=y
CONFIG_UML_NET_ETHERTAP=y
CONFIG_UML_NET_TUNTAP=y
CONFIG_UML_NET_SLIP=y
CONFIG_UML_NET_DAEMON=y
# CONFIG_UML_NET_VDE is not set
CONFIG_UML_NET_MCAST=y
# CONFIG_UML_NET_PCAP is not set
CONFIG_UML_NET_SLIRP=y
#
# File systems
#
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT2=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
# CONFIG_EXT4_FS_SECURITY is not set
# CONFIG_EXT4_ENCRYPTION is not set
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_REISERFS_FS_XATTR is not set
# CONFIG_JFS_FS is not set
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_BTRFS_FS is not set
# CONFIG_NILFS2_FS is not set
# CONFIG_F2FS_FS is not set
# CONFIG_FS_DAX is not set
# CONFIG_FS_POSIX_ACL is not set
CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_FANOTIFY is not set
CONFIG_QUOTA=y
# CONFIG_QUOTA_NETLINK_INTERFACE is not set
CONFIG_PRINT_QUOTA_WARNING=y
# CONFIG_QUOTA_DEBUG is not set
# CONFIG_QFMT_V1 is not set
# CONFIG_QFMT_V2 is not set
CONFIG_QUOTACTL=y
CONFIG_AUTOFS4_FS=m
# CONFIG_FUSE_FS is not set
# CONFIG_OVERLAY_FS is not set
#
# Caches
#
# CONFIG_FSCACHE is not set
#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
# CONFIG_PROC_CHILDREN is not set
CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_TMPFS_XATTR is not set
# CONFIG_HUGETLB_PAGE is not set
# CONFIG_CONFIGFS_FS is not set
CONFIG_MISC_FILESYSTEMS=y
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_LOGFS is not set
# CONFIG_CRAMFS is not set
# CONFIG_SQUASHFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX6FS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_PSTORE is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
# CONFIG_NFS_FS is not set
# CONFIG_NFSD is not set
# CONFIG_CEPH_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_MAC_ROMAN is not set
# CONFIG_NLS_MAC_CELTIC is not set
# CONFIG_NLS_MAC_CENTEURO is not set
# CONFIG_NLS_MAC_CROATIAN is not set
# CONFIG_NLS_MAC_CYRILLIC is not set
# CONFIG_NLS_MAC_GAELIC is not set
# CONFIG_NLS_MAC_GREEK is not set
# CONFIG_NLS_MAC_ICELAND is not set
# CONFIG_NLS_MAC_INUIT is not set
# CONFIG_NLS_MAC_ROMANIAN is not set
# CONFIG_NLS_MAC_TURKISH is not set
# CONFIG_NLS_UTF8 is not set
#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY_DMESG_RESTRICT is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITYFS is not set
CONFIG_DEFAULT_SECURITY_DAC=y
CONFIG_DEFAULT_SECURITY=""
CONFIG_CRYPTO=y
#
# Crypto core or helper
#
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=m
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_RNG_DEFAULT=m
CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_AKCIPHER2=y
# CONFIG_CRYPTO_RSA is not set
CONFIG_CRYPTO_MANAGER=m
CONFIG_CRYPTO_MANAGER2=y
# CONFIG_CRYPTO_USER is not set
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
# CONFIG_CRYPTO_GF128MUL is not set
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_NULL2=y
CONFIG_CRYPTO_WORKQUEUE=y
# CONFIG_CRYPTO_CRYPTD is not set
# CONFIG_CRYPTO_MCRYPTD is not set
# CONFIG_CRYPTO_AUTHENC is not set
# CONFIG_CRYPTO_TEST is not set
#
# Authenticated Encryption with Associated Data
#
# CONFIG_CRYPTO_CCM is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
# CONFIG_CRYPTO_SEQIV is not set
CONFIG_CRYPTO_ECHAINIV=m
#
# Block modes
#
# CONFIG_CRYPTO_CBC is not set
# CONFIG_CRYPTO_CTR is not set
# CONFIG_CRYPTO_CTS is not set
# CONFIG_CRYPTO_ECB is not set
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_XTS is not set
#
# Hash modes
#
# CONFIG_CRYPTO_CMAC is not set
CONFIG_CRYPTO_HMAC=m
# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_VMAC is not set
#
# Digest
#
CONFIG_CRYPTO_CRC32C=y
# CONFIG_CRYPTO_CRC32 is not set
# CONFIG_CRYPTO_CRCT10DIF is not set
# CONFIG_CRYPTO_GHASH is not set
# CONFIG_CRYPTO_POLY1305 is not set
# CONFIG_CRYPTO_MD4 is not set
# CONFIG_CRYPTO_MD5 is not set
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_RMD128 is not set
# CONFIG_CRYPTO_RMD160 is not set
# CONFIG_CRYPTO_RMD256 is not set
# CONFIG_CRYPTO_RMD320 is not set
# CONFIG_CRYPTO_SHA1 is not set
CONFIG_CRYPTO_SHA256=m
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_WP512 is not set
#
# Ciphers
#
CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_AES_X86_64 is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_ARC4 is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_DES is not set
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_SALSA20_X86_64 is not set
# CONFIG_CRYPTO_CHACHA20 is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
#
# Compression
#
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_ZLIB is not set
# CONFIG_CRYPTO_LZO is not set
# CONFIG_CRYPTO_842 is not set
# CONFIG_CRYPTO_LZ4 is not set
# CONFIG_CRYPTO_LZ4HC is not set
#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRYPTO_DRBG_MENU=m
CONFIG_CRYPTO_DRBG_HMAC=y
# CONFIG_CRYPTO_DRBG_HASH is not set
# CONFIG_CRYPTO_DRBG_CTR is not set
CONFIG_CRYPTO_DRBG=m
CONFIG_CRYPTO_JITTERENTROPY=m
# CONFIG_CRYPTO_USER_API_HASH is not set
# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
# CONFIG_CRYPTO_USER_API_RNG is not set
# CONFIG_CRYPTO_USER_API_AEAD is not set
CONFIG_CRYPTO_HW=y
#
# Certificates for signature checking
#
# CONFIG_BINARY_PRINTF is not set
#
# Library routines
#
CONFIG_BITREVERSE=y
# CONFIG_HAVE_ARCH_BITREVERSE is not set
CONFIG_GENERIC_NET_UTILS=y
CONFIG_GENERIC_FIND_FIRST_BIT=y
CONFIG_GENERIC_IO=y
# CONFIG_CRC_CCITT is not set
CONFIG_CRC16=y
# CONFIG_CRC_T10DIF is not set
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
# CONFIG_CRC32_SELFTEST is not set
CONFIG_CRC32_SLICEBY8=y
# CONFIG_CRC32_SLICEBY4 is not set
# CONFIG_CRC32_SARWATE is not set
# CONFIG_CRC32_BIT is not set
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
# CONFIG_CRC8 is not set
# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
# CONFIG_RANDOM32_SELFTEST is not set
# CONFIG_XZ_DEC is not set
# CONFIG_XZ_DEC_BCJ is not set
CONFIG_DQL=y
CONFIG_NLATTR=y
# CONFIG_CORDIC is not set
# CONFIG_DDR is not set
# CONFIG_SG_SPLIT is not set
# CONFIG_ARCH_HAS_SG_CHAIN is not set
#
# Kernel hacking
#
#
# printk and dmesg options
#
# CONFIG_PRINTK_TIME is not set
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_BOOT_PRINTK_DELAY is not set
#
# Compile-time checks and compiler options
#
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_DEBUG_INFO_SPLIT is not set
# CONFIG_DEBUG_INFO_DWARF4 is not set
# CONFIG_GDB_SCRIPTS is not set
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=1024
# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_READABLE_ASM is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_PAGE_OWNER is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not set
CONFIG_FRAME_POINTER=y
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
CONFIG_DEBUG_KERNEL=y
#
# Memory Debugging
#
# CONFIG_PAGE_EXTENSION is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_VM is not set
CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_SHIRQ is not set
#
# Debug Lockups and Hangs
#
# CONFIG_LOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
# CONFIG_SCHED_INFO is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_SCHED_STACK_END_CHECK is not set
# CONFIG_DEBUG_TIMEKEEPING is not set
# CONFIG_TIMER_STATS is not set
#
# Lock Debugging (spinlocks, mutexes, etc...)
#
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_LOCK_TORTURE_TEST is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_PI_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_DEBUG_CREDENTIALS is not set
#
# RCU Debugging
#
# CONFIG_PROVE_RCU is not set
# CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_TORTURE_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_TRACE is not set
# CONFIG_RCU_EQS_DEBUG is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
# CONFIG_FAULT_INJECTION is not set
#
# Runtime Testing
#
# CONFIG_TEST_LIST_SORT is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_RBTREE_TEST is not set
# CONFIG_INTERVAL_TREE_TEST is not set
# CONFIG_PERCPU_TEST is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_TEST_HEXDUMP is not set
# CONFIG_TEST_STRING_HELPERS is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_TEST_LKM is not set
# CONFIG_TEST_USER_COPY is not set
# CONFIG_TEST_BPF is not set
# CONFIG_TEST_FIRMWARE is not set
# CONFIG_TEST_UDELAY is not set
# CONFIG_TEST_STATIC_KEYS is not set
# CONFIG_SAMPLES is not set
# CONFIG_GPROF is not set
# CONFIG_GCOV is not set
CONFIG_EARLY_PRINTK=y
[-- Attachment #3: Type: text/plain, Size: 79 bytes --]
------------------------------------------------------------------------------
[-- Attachment #4: Type: text/plain, Size: 194 bytes --]
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 19:08 ` Richard Weinberger
@ 2015-10-31 20:17 ` Anton Ivanov
0 siblings, 0 replies; 29+ messages in thread
From: Anton Ivanov @ 2015-10-31 20:17 UTC (permalink / raw)
To: Richard Weinberger, Thomas Meyer
Cc: user-mode-linux-devel@lists.sourceforge.net
On 31/10/15 19:08, Richard Weinberger wrote:
> Am 31.10.2015 um 17:22 schrieb Anton Ivanov:
>> Richard, can you send me your config.
> Sure. It is basically a defconfig.
I am dragging an old config from some work I did a while back. I will
scrap it and do a defconfig build one I get back home (I am traveling at
the moment).
>
>> I have had it running for a couple of days before submission both under load and idle it was doing OK.
> Well, what userspace did you try?
Debian Wheezy and Jessie including a full apt-get update ; apt-get
dist-upgrade
> I did some more tests, if nanosleep() is called periodically the issue does not arise.
> Maybe your userspace (systemd?) fires the syscall too often. ;)
Either that, or I re-used my old scripts which for a variety of reasons
do CPU pinning (I do not remember if I turned that off or not before
testing).
It may be that it does not show up when you are running UML pinned on
one host CPU. Same as above - I will re-test when I get back home, both
with my config and and with defconfig.
A
>
> Thanks,
> //richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 15:44 ` Thomas Meyer
2015-10-31 16:22 ` Anton Ivanov
@ 2015-10-31 19:06 ` Richard Weinberger
1 sibling, 0 replies; 29+ messages in thread
From: Richard Weinberger @ 2015-10-31 19:06 UTC (permalink / raw)
To: Thomas Meyer, Anton Ivanov; +Cc: user-mode-linux-devel@lists.sourceforge.net
Am 31.10.2015 um 16:44 schrieb Thomas Meyer:
> Am Samstag, den 31.10.2015, 16:30 +0100 schrieb Richard Weinberger:
>> Am 31.10.2015 um 16:24 schrieb Thomas Meyer:
>>> Am Samstag, den 31.10.2015, 16:21 +0100 schrieb Richard Weinberger:
>>>> Am 31.10.2015 um 16:16 schrieb Thomas Meyer:
>>>>> mhh. strange. I didn't see this behaviour on my machine, but my
>>>>> machine
>>>>> is a rare single core system so, likely a race condition while
>>>>> relaying
>>>>> the timer interrupt to the userspace process.
>>>>
>>>> Here I can trigger it by starting UML, logging in and waiting
>>>> ~5min.
>>>> Then i try to run "top" --> top hangs forever.
>>>>
>>>>> But I'm out of ideas how this could happen!
>>>>
>>>> Maybe some stupid timeslice over/underflow.
>>>>
>>>>> what happens when you send the hanging process a SIGVTALRM
>>>>> signal?
>>>>> does
>>>>> it proceed correctly?
>>>>
>>>> You mean sending SIGVTALRM to the UML host process?
>>>
>>> No, to the hanging userspace process, maybe the uml host process
>>> did
>>> receive a timer interrupt, but failed to relay this signal to the
>>> correct userspace process.
>>
>> Well, this is not what top expects and dies.
>> signal 26 (VTALRM) was caught by top, please
>> see http://www.debian.org/Bugs/Reporting
>>
This happens when i send the signal _within_ UML.
Of course, top terminates.
> So you did send a VTALARM in the UML system to the top process?
> When yes then this was a misunderstanding! I wanted you to send a
> SIGVTALRM on the uml host system to the hanging pid. does this resolve
> the hang?
I also sent SIGVTALRM to the hanging pid on the host side.
It did not help. :(
Thanks,
//richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-10-31 15:21 ` Richard Weinberger
2015-10-31 15:24 ` Thomas Meyer
@ 2015-11-02 8:14 ` Anton Ivanov
2015-11-02 8:37 ` Richard Weinberger
1 sibling, 1 reply; 29+ messages in thread
From: Anton Ivanov @ 2015-11-02 8:14 UTC (permalink / raw)
To: Richard Weinberger, Thomas Meyer
Cc: user-mode-linux-devel@lists.sourceforge.net
I was testing under similar conditions (CPU pinning using taskset -c 0
on a multicore).
I have removed it and run some retests - I cannot reproduce the hang at
this point with my config
I am going to run a defconfig and compare the results to see if this
will give me any insights on the root cause.
A.
On 31/10/15 15:21, Richard Weinberger wrote:
> Am 31.10.2015 um 16:16 schrieb Thomas Meyer:
>> mhh. strange. I didn't see this behaviour on my machine, but my machine
>> is a rare single core system so, likely a race condition while relaying
>> the timer interrupt to the userspace process.
> Here I can trigger it by starting UML, logging in and waiting ~5min.
> Then i try to run "top" --> top hangs forever.
>
>> But I'm out of ideas how this could happen!
> Maybe some stupid timeslice over/underflow.
>
>> what happens when you send the hanging process a SIGVTALRM signal? does
>> it proceed correctly?
> You mean sending SIGVTALRM to the UML host process?
> It runs normally, I can also login on other ttys.
>
> Thanks,
> //richard
>
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 8:14 ` Anton Ivanov
@ 2015-11-02 8:37 ` Richard Weinberger
2015-11-02 8:41 ` Anton Ivanov
0 siblings, 1 reply; 29+ messages in thread
From: Richard Weinberger @ 2015-11-02 8:37 UTC (permalink / raw)
To: Anton Ivanov, Thomas Meyer; +Cc: user-mode-linux-devel@lists.sourceforge.net
Hi!
Am 02.11.2015 um 09:14 schrieb Anton Ivanov:
> I was testing under similar conditions (CPU pinning using taskset -c 0 on a multicore).
>
> I have removed it and run some retests - I cannot reproduce the hang at this point with my config
>
> I am going to run a defconfig and compare the results to see if this will give me any insights on the root cause.
I can reproduce on both my build machine (8 core) and my laptop (4 core).
If it helps I can share the rootfs.
On my laptop I was able to reproduce within 5 minutes.
1. make defconfig ARCH=um
2. make -j 4 linux ARCH=um
3. ./linux ubda=../Downloads/Debian-Squeeze-AMD64-root_fs mem=1G
4. login to tty0
5. wait a few minutes
6. try to run top, it will hang in nanosleep
Thanks,
//richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 8:37 ` Richard Weinberger
@ 2015-11-02 8:41 ` Anton Ivanov
2015-11-02 8:52 ` Richard Weinberger
0 siblings, 1 reply; 29+ messages in thread
From: Anton Ivanov @ 2015-11-02 8:41 UTC (permalink / raw)
To: Richard Weinberger, Thomas Meyer
Cc: user-mode-linux-devel@lists.sourceforge.net
On 02/11/15 08:37, Richard Weinberger wrote:
> Hi!
>
> Am 02.11.2015 um 09:14 schrieb Anton Ivanov:
>> I was testing under similar conditions (CPU pinning using taskset -c 0 on a multicore).
>>
>> I have removed it and run some retests - I cannot reproduce the hang at this point with my config
>>
>> I am going to run a defconfig and compare the results to see if this will give me any insights on the root cause.
> I can reproduce on both my build machine (8 core) and my laptop (4 core).
> If it helps I can share the rootfs.
>
> On my laptop I was able to reproduce within 5 minutes.
> 1. make defconfig ARCH=um
> 2. make -j 4 linux ARCH=um
> 3. ./linux ubda=../Downloads/Debian-Squeeze-AMD64-root_fs mem=1G
> 4. login to tty0
> 5. wait a few minutes
> 6. try to run top, it will hang in nanosleep
Pretty much the same. Does not hang, multiple test runs. Userspace is a
relatively full install of a debian jessie.
I ran deconfig and did a diff. The prime suspect differences between my
config and defconfig are stack order 3 (not 1) and io sched of cfq, not
deadline.
I am going to retest just with these first to see if one of them is the
culprit, if that does not make a difference, run it with defconfig and
try to reproduce the hang.
A.
>
> Thanks,
> //richard
>
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 8:41 ` Anton Ivanov
@ 2015-11-02 8:52 ` Richard Weinberger
2015-11-02 8:57 ` Anton Ivanov
0 siblings, 1 reply; 29+ messages in thread
From: Richard Weinberger @ 2015-11-02 8:52 UTC (permalink / raw)
To: Anton Ivanov, Thomas Meyer; +Cc: user-mode-linux-devel@lists.sourceforge.net
Am 02.11.2015 um 09:41 schrieb Anton Ivanov:
> On 02/11/15 08:37, Richard Weinberger wrote:
>> Hi!
>>
>> Am 02.11.2015 um 09:14 schrieb Anton Ivanov:
>>> I was testing under similar conditions (CPU pinning using taskset -c 0 on a multicore).
>>>
>>> I have removed it and run some retests - I cannot reproduce the hang at this point with my config
>>>
>>> I am going to run a defconfig and compare the results to see if this will give me any insights on the root cause.
>> I can reproduce on both my build machine (8 core) and my laptop (4 core).
>> If it helps I can share the rootfs.
>>
>> On my laptop I was able to reproduce within 5 minutes.
>> 1. make defconfig ARCH=um
>> 2. make -j 4 linux ARCH=um
>> 3. ./linux ubda=../Downloads/Debian-Squeeze-AMD64-root_fs mem=1G
>> 4. login to tty0
>> 5. wait a few minutes
>> 6. try to run top, it will hang in nanosleep
>
> Pretty much the same. Does not hang, multiple test runs. Userspace is a relatively full install of a debian jessie.
>
> I ran deconfig and did a diff. The prime suspect differences between my config and defconfig are stack order 3 (not 1) and io sched of cfq, not deadline.
>
> I am going to retest just with these first to see if one of them is the culprit, if that does not make a difference, run it with defconfig and try to reproduce the hang.
I'm pretty sure that you don't see the issue as your Jessy userspace uses nanosleep periodically.
Thanks,
//richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 8:52 ` Richard Weinberger
@ 2015-11-02 8:57 ` Anton Ivanov
2015-11-02 9:12 ` Richard Weinberger
0 siblings, 1 reply; 29+ messages in thread
From: Anton Ivanov @ 2015-11-02 8:57 UTC (permalink / raw)
To: Richard Weinberger, Thomas Meyer
Cc: user-mode-linux-devel@lists.sourceforge.net
On 02/11/15 08:52, Richard Weinberger wrote:
> Am 02.11.2015 um 09:41 schrieb Anton Ivanov:
>> On 02/11/15 08:37, Richard Weinberger wrote:
>>> Hi!
>>>
>>> Am 02.11.2015 um 09:14 schrieb Anton Ivanov:
>>>> I was testing under similar conditions (CPU pinning using taskset -c 0 on a multicore).
>>>>
>>>> I have removed it and run some retests - I cannot reproduce the hang at this point with my config
>>>>
>>>> I am going to run a defconfig and compare the results to see if this will give me any insights on the root cause.
>>> I can reproduce on both my build machine (8 core) and my laptop (4 core).
>>> If it helps I can share the rootfs.
>>>
>>> On my laptop I was able to reproduce within 5 minutes.
>>> 1. make defconfig ARCH=um
>>> 2. make -j 4 linux ARCH=um
>>> 3. ./linux ubda=../Downloads/Debian-Squeeze-AMD64-root_fs mem=1G
>>> 4. login to tty0
>>> 5. wait a few minutes
>>> 6. try to run top, it will hang in nanosleep
>> Pretty much the same. Does not hang, multiple test runs. Userspace is a relatively full install of a debian jessie.
>>
>> I ran deconfig and did a diff. The prime suspect differences between my config and defconfig are stack order 3 (not 1) and io sched of cfq, not deadline.
>>
>> I am going to retest just with these first to see if one of them is the culprit, if that does not make a difference, run it with defconfig and try to reproduce the hang.
> I'm pretty sure that you don't see the issue as your Jessy userspace uses nanosleep periodically.
There are quite a few things running so this may indeed be the case.
What do you use for userspace (so I can try to reproduce this and debug it)?
A.
>
> Thanks,
> //richard
>
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 8:57 ` Anton Ivanov
@ 2015-11-02 9:12 ` Richard Weinberger
2015-11-02 9:53 ` Anton Ivanov
0 siblings, 1 reply; 29+ messages in thread
From: Richard Weinberger @ 2015-11-02 9:12 UTC (permalink / raw)
To: Anton Ivanov, Thomas Meyer; +Cc: user-mode-linux-devel@lists.sourceforge.net
Am 02.11.2015 um 09:57 schrieb Anton Ivanov:
> On 02/11/15 08:52, Richard Weinberger wrote:
>> Am 02.11.2015 um 09:41 schrieb Anton Ivanov:
>>> On 02/11/15 08:37, Richard Weinberger wrote:
>>>> Hi!
>>>>
>>>> Am 02.11.2015 um 09:14 schrieb Anton Ivanov:
>>>>> I was testing under similar conditions (CPU pinning using taskset -c 0 on a multicore).
>>>>>
>>>>> I have removed it and run some retests - I cannot reproduce the hang at this point with my config
>>>>>
>>>>> I am going to run a defconfig and compare the results to see if this will give me any insights on the root cause.
>>>> I can reproduce on both my build machine (8 core) and my laptop (4 core).
>>>> If it helps I can share the rootfs.
>>>>
>>>> On my laptop I was able to reproduce within 5 minutes.
>>>> 1. make defconfig ARCH=um
>>>> 2. make -j 4 linux ARCH=um
>>>> 3. ./linux ubda=../Downloads/Debian-Squeeze-AMD64-root_fs mem=1G
>>>> 4. login to tty0
>>>> 5. wait a few minutes
>>>> 6. try to run top, it will hang in nanosleep
>>> Pretty much the same. Does not hang, multiple test runs. Userspace is a relatively full install of a debian jessie.
>>>
>>> I ran deconfig and did a diff. The prime suspect differences between my config and defconfig are stack order 3 (not 1) and io sched of cfq, not deadline.
>>>
>>> I am going to retest just with these first to see if one of them is the culprit, if that does not make a difference, run it with defconfig and try to reproduce the hang.
>> I'm pretty sure that you don't see the issue as your Jessy userspace uses nanosleep periodically.
>
> There are quite a few things running so this may indeed be the case.
>
> What do you use for userspace (so I can try to reproduce this and debug it)?
Debian Squeeze amd64 with almost nothing running.
PID TTY STAT TIME COMMAND
2 ? S 0:00 [kthreadd]
3 ? S 0:00 \_ [ksoftirqd/0]
4 ? S 0:00 \_ [kworker/0:0]
5 ? S< 0:00 \_ [kworker/0:0H]
6 ? S 0:00 \_ [kworker/u2:0]
7 ? S 0:00 \_ [kdevtmpfs]
8 ? S< 0:00 \_ [netns]
9 ? S< 0:00 \_ [writeback]
10 ? S 0:00 \_ [kworker/u2:1]
11 ? S< 0:00 \_ [crypto]
12 ? S 0:00 \_ [kworker/0:1]
13 ? S< 0:00 \_ [bioset]
14 ? S< 0:00 \_ [kblockd]
15 ? S 0:00 \_ [kswapd0]
68 ? S 0:00 \_ [fsnotify_mark]
221 ? S< 0:00 \_ [bioset]
229 ? S< 0:00 \_ [deferwq]
231 ? S 0:00 \_ [jbd2/ubda-8]
232 ? S< 0:00 \_ [ext4-rsv-conver]
233 ? S< 0:00 \_ [kworker/0:1H]
1 ? Ss 0:00 init [2]
271 ? S<s 0:00 udevd --daemon
297 ? S< 0:00 \_ udevd --daemon
298 ? S< 0:00 \_ udevd --daemon
549 ? Sl 0:00 /usr/sbin/rsyslogd -c4
580 ? Ss 0:00 /usr/sbin/cron
595 ? Ss 0:00 /usr/bin/dbus-daemon --system
609 ? Ss 0:00 /usr/sbin/sshd
628 tty0 Ss 0:00 /bin/login --
631 tty0 S 0:00 \_ -bash
636 tty0 R+ 0:00 \_ ps fax
629 tty1 Ss+ 0:00 /sbin/getty 38400 tty1 linux
630 ttyS0 Ss+ 0:00 /sbin/getty 115200 ttyS0 linux
Thanks,
//richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 9:12 ` Richard Weinberger
@ 2015-11-02 9:53 ` Anton Ivanov
2015-11-02 10:01 ` Richard Weinberger
0 siblings, 1 reply; 29+ messages in thread
From: Anton Ivanov @ 2015-11-02 9:53 UTC (permalink / raw)
To: Richard Weinberger, Thomas Meyer
Cc: user-mode-linux-devel@lists.sourceforge.net
[snip]
>>> I'm pretty sure that you don't see the issue as your Jessy userspace uses nanosleep periodically.
>> There are quite a few things running so this may indeed be the case.
>>
>> What do you use for userspace (so I can try to reproduce this and debug it)?
> Debian Squeeze amd64 with almost nothing running.
>
> PID TTY STAT TIME COMMAND
> 2 ? S 0:00 [kthreadd]
> 3 ? S 0:00 \_ [ksoftirqd/0]
> 4 ? S 0:00 \_ [kworker/0:0]
> 5 ? S< 0:00 \_ [kworker/0:0H]
> 6 ? S 0:00 \_ [kworker/u2:0]
> 7 ? S 0:00 \_ [kdevtmpfs]
> 8 ? S< 0:00 \_ [netns]
> 9 ? S< 0:00 \_ [writeback]
> 10 ? S 0:00 \_ [kworker/u2:1]
> 11 ? S< 0:00 \_ [crypto]
> 12 ? S 0:00 \_ [kworker/0:1]
> 13 ? S< 0:00 \_ [bioset]
> 14 ? S< 0:00 \_ [kblockd]
> 15 ? S 0:00 \_ [kswapd0]
> 68 ? S 0:00 \_ [fsnotify_mark]
> 221 ? S< 0:00 \_ [bioset]
> 229 ? S< 0:00 \_ [deferwq]
> 231 ? S 0:00 \_ [jbd2/ubda-8]
> 232 ? S< 0:00 \_ [ext4-rsv-conver]
> 233 ? S< 0:00 \_ [kworker/0:1H]
> 1 ? Ss 0:00 init [2]
> 271 ? S<s 0:00 udevd --daemon
> 297 ? S< 0:00 \_ udevd --daemon
> 298 ? S< 0:00 \_ udevd --daemon
> 549 ? Sl 0:00 /usr/sbin/rsyslogd -c4
> 580 ? Ss 0:00 /usr/sbin/cron
> 595 ? Ss 0:00 /usr/bin/dbus-daemon --system
> 609 ? Ss 0:00 /usr/sbin/sshd
> 628 tty0 Ss 0:00 /bin/login --
> 631 tty0 S 0:00 \_ -bash
> 636 tty0 R+ 0:00 \_ ps fax
> 629 tty1 Ss+ 0:00 /sbin/getty 38400 tty1 linux
> 630 ttyS0 Ss+ 0:00 /sbin/getty 115200 ttyS0 linux
I cannot reproduce that by dropping jessie into single user mode so I am
going to build a squeeze image and re-test with that.
A.
>
> Thanks,
> //richard
>
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 9:53 ` Anton Ivanov
@ 2015-11-02 10:01 ` Richard Weinberger
2015-11-02 10:59 ` Anton Ivanov
2015-11-02 14:30 ` Anton Ivanov
0 siblings, 2 replies; 29+ messages in thread
From: Richard Weinberger @ 2015-11-02 10:01 UTC (permalink / raw)
To: Anton Ivanov, Thomas Meyer; +Cc: user-mode-linux-devel@lists.sourceforge.net
Am 02.11.2015 um 10:53 schrieb Anton Ivanov:
> [snip]
>
>>>> I'm pretty sure that you don't see the issue as your Jessy userspace uses nanosleep periodically.
>>> There are quite a few things running so this may indeed be the case.
>>>
>>> What do you use for userspace (so I can try to reproduce this and debug it)?
>> Debian Squeeze amd64 with almost nothing running.
>>
>> PID TTY STAT TIME COMMAND
>> 2 ? S 0:00 [kthreadd]
>> 3 ? S 0:00 \_ [ksoftirqd/0]
>> 4 ? S 0:00 \_ [kworker/0:0]
>> 5 ? S< 0:00 \_ [kworker/0:0H]
>> 6 ? S 0:00 \_ [kworker/u2:0]
>> 7 ? S 0:00 \_ [kdevtmpfs]
>> 8 ? S< 0:00 \_ [netns]
>> 9 ? S< 0:00 \_ [writeback]
>> 10 ? S 0:00 \_ [kworker/u2:1]
>> 11 ? S< 0:00 \_ [crypto]
>> 12 ? S 0:00 \_ [kworker/0:1]
>> 13 ? S< 0:00 \_ [bioset]
>> 14 ? S< 0:00 \_ [kblockd]
>> 15 ? S 0:00 \_ [kswapd0]
>> 68 ? S 0:00 \_ [fsnotify_mark]
>> 221 ? S< 0:00 \_ [bioset]
>> 229 ? S< 0:00 \_ [deferwq]
>> 231 ? S 0:00 \_ [jbd2/ubda-8]
>> 232 ? S< 0:00 \_ [ext4-rsv-conver]
>> 233 ? S< 0:00 \_ [kworker/0:1H]
>> 1 ? Ss 0:00 init [2]
>> 271 ? S<s 0:00 udevd --daemon
>> 297 ? S< 0:00 \_ udevd --daemon
>> 298 ? S< 0:00 \_ udevd --daemon
>> 549 ? Sl 0:00 /usr/sbin/rsyslogd -c4
>> 580 ? Ss 0:00 /usr/sbin/cron
>> 595 ? Ss 0:00 /usr/bin/dbus-daemon --system
>> 609 ? Ss 0:00 /usr/sbin/sshd
>> 628 tty0 Ss 0:00 /bin/login --
>> 631 tty0 S 0:00 \_ -bash
>> 636 tty0 R+ 0:00 \_ ps fax
>> 629 tty1 Ss+ 0:00 /sbin/getty 38400 tty1 linux
>> 630 ttyS0 Ss+ 0:00 /sbin/getty 115200 ttyS0 linux
>
> I cannot reproduce that by dropping jessie into single user mode so I am going to build a squeeze image and re-test with that.
I can also reproduce using init=/bin/bash.
Thanks,
//richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 10:01 ` Richard Weinberger
@ 2015-11-02 10:59 ` Anton Ivanov
2015-11-02 11:00 ` Anton Ivanov
2015-11-02 14:30 ` Anton Ivanov
1 sibling, 1 reply; 29+ messages in thread
From: Anton Ivanov @ 2015-11-02 10:59 UTC (permalink / raw)
To: Richard Weinberger, Thomas Meyer
Cc: user-mode-linux-devel@lists.sourceforge.net
On 02/11/15 10:01, Richard Weinberger wrote:
> Am 02.11.2015 um 10:53 schrieb Anton Ivanov:
>> [snip]
>>
>>>>> I'm pretty sure that you don't see the issue as your Jessy userspace uses nanosleep periodically.
>>>> There are quite a few things running so this may indeed be the case.
>>>>
>>>> What do you use for userspace (so I can try to reproduce this and debug it)?
>>> Debian Squeeze amd64 with almost nothing running.
>>>
>>> PID TTY STAT TIME COMMAND
>>> 2 ? S 0:00 [kthreadd]
>>> 3 ? S 0:00 \_ [ksoftirqd/0]
>>> 4 ? S 0:00 \_ [kworker/0:0]
>>> 5 ? S< 0:00 \_ [kworker/0:0H]
>>> 6 ? S 0:00 \_ [kworker/u2:0]
>>> 7 ? S 0:00 \_ [kdevtmpfs]
>>> 8 ? S< 0:00 \_ [netns]
>>> 9 ? S< 0:00 \_ [writeback]
>>> 10 ? S 0:00 \_ [kworker/u2:1]
>>> 11 ? S< 0:00 \_ [crypto]
>>> 12 ? S 0:00 \_ [kworker/0:1]
>>> 13 ? S< 0:00 \_ [bioset]
>>> 14 ? S< 0:00 \_ [kblockd]
>>> 15 ? S 0:00 \_ [kswapd0]
>>> 68 ? S 0:00 \_ [fsnotify_mark]
>>> 221 ? S< 0:00 \_ [bioset]
>>> 229 ? S< 0:00 \_ [deferwq]
>>> 231 ? S 0:00 \_ [jbd2/ubda-8]
>>> 232 ? S< 0:00 \_ [ext4-rsv-conver]
>>> 233 ? S< 0:00 \_ [kworker/0:1H]
>>> 1 ? Ss 0:00 init [2]
>>> 271 ? S<s 0:00 udevd --daemon
>>> 297 ? S< 0:00 \_ udevd --daemon
>>> 298 ? S< 0:00 \_ udevd --daemon
>>> 549 ? Sl 0:00 /usr/sbin/rsyslogd -c4
>>> 580 ? Ss 0:00 /usr/sbin/cron
>>> 595 ? Ss 0:00 /usr/bin/dbus-daemon --system
>>> 609 ? Ss 0:00 /usr/sbin/sshd
>>> 628 tty0 Ss 0:00 /bin/login --
>>> 631 tty0 S 0:00 \_ -bash
>>> 636 tty0 R+ 0:00 \_ ps fax
>>> 629 tty1 Ss+ 0:00 /sbin/getty 38400 tty1 linux
>>> 630 ttyS0 Ss+ 0:00 /sbin/getty 115200 ttyS0 linux
>> I cannot reproduce that by dropping jessie into single user mode so I am going to build a squeeze image and re-test with that.
> I can also reproduce using init=/bin/bash.
I may have to use that. There is a recurring sleep 1 in one of the
scripts in udev on sarge which results in enough nanosleeps for this not
to show up on an "out-of-the-box" sarge build.
A.
>
> Thanks,
> //richard
>
>
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 10:59 ` Anton Ivanov
@ 2015-11-02 11:00 ` Anton Ivanov
0 siblings, 0 replies; 29+ messages in thread
From: Anton Ivanov @ 2015-11-02 11:00 UTC (permalink / raw)
To: Richard Weinberger, Thomas Meyer
Cc: user-mode-linux-devel@lists.sourceforge.net
On 02/11/15 10:59, Anton Ivanov wrote:
> On 02/11/15 10:01, Richard Weinberger wrote:
>> Am 02.11.2015 um 10:53 schrieb Anton Ivanov:
>>> [snip]
>>>
>>>>>> I'm pretty sure that you don't see the issue as your Jessy
>>>>>> userspace uses nanosleep periodically.
>>>>> There are quite a few things running so this may indeed be the case.
>>>>>
>>>>> What do you use for userspace (so I can try to reproduce this and
>>>>> debug it)?
>>>> Debian Squeeze amd64 with almost nothing running.
>>>>
>>>> PID TTY STAT TIME COMMAND
>>>> 2 ? S 0:00 [kthreadd]
>>>> 3 ? S 0:00 \_ [ksoftirqd/0]
>>>> 4 ? S 0:00 \_ [kworker/0:0]
>>>> 5 ? S< 0:00 \_ [kworker/0:0H]
>>>> 6 ? S 0:00 \_ [kworker/u2:0]
>>>> 7 ? S 0:00 \_ [kdevtmpfs]
>>>> 8 ? S< 0:00 \_ [netns]
>>>> 9 ? S< 0:00 \_ [writeback]
>>>> 10 ? S 0:00 \_ [kworker/u2:1]
>>>> 11 ? S< 0:00 \_ [crypto]
>>>> 12 ? S 0:00 \_ [kworker/0:1]
>>>> 13 ? S< 0:00 \_ [bioset]
>>>> 14 ? S< 0:00 \_ [kblockd]
>>>> 15 ? S 0:00 \_ [kswapd0]
>>>> 68 ? S 0:00 \_ [fsnotify_mark]
>>>> 221 ? S< 0:00 \_ [bioset]
>>>> 229 ? S< 0:00 \_ [deferwq]
>>>> 231 ? S 0:00 \_ [jbd2/ubda-8]
>>>> 232 ? S< 0:00 \_ [ext4-rsv-conver]
>>>> 233 ? S< 0:00 \_ [kworker/0:1H]
>>>> 1 ? Ss 0:00 init [2]
>>>> 271 ? S<s 0:00 udevd --daemon
>>>> 297 ? S< 0:00 \_ udevd --daemon
>>>> 298 ? S< 0:00 \_ udevd --daemon
>>>> 549 ? Sl 0:00 /usr/sbin/rsyslogd -c4
>>>> 580 ? Ss 0:00 /usr/sbin/cron
>>>> 595 ? Ss 0:00 /usr/bin/dbus-daemon --system
>>>> 609 ? Ss 0:00 /usr/sbin/sshd
>>>> 628 tty0 Ss 0:00 /bin/login --
>>>> 631 tty0 S 0:00 \_ -bash
>>>> 636 tty0 R+ 0:00 \_ ps fax
>>>> 629 tty1 Ss+ 0:00 /sbin/getty 38400 tty1 linux
>>>> 630 ttyS0 Ss+ 0:00 /sbin/getty 115200 ttyS0 linux
>>> I cannot reproduce that by dropping jessie into single user mode so
>>> I am going to build a squeeze image and re-test with that.
>> I can also reproduce using init=/bin/bash.
>
> I may have to use that. There is a recurring sleep 1 in one of the
> scripts in udev on sarge which results in enough nanosleeps for this
> not to show up on an "out-of-the-box" sarge build.
Sorry, meant to say squeeze.
A.
>
> A.
>
>>
>> Thanks,
>> //richard
>>
>>
>
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 10:01 ` Richard Weinberger
2015-11-02 10:59 ` Anton Ivanov
@ 2015-11-02 14:30 ` Anton Ivanov
2015-11-02 15:25 ` Richard Weinberger
1 sibling, 1 reply; 29+ messages in thread
From: Anton Ivanov @ 2015-11-02 14:30 UTC (permalink / raw)
To: Richard Weinberger, Thomas Meyer
Cc: user-mode-linux-devel@lists.sourceforge.net
On 02/11/15 10:01, Richard Weinberger wrote:
> Am 02.11.2015 um 10:53 schrieb Anton Ivanov:
>> [snip]
>>
>>>>> I'm pretty sure that you don't see the issue as your Jessy userspace uses nanosleep periodically.
>>>> There are quite a few things running so this may indeed be the case.
>>>>
>>>> What do you use for userspace (so I can try to reproduce this and debug it)?
>>> Debian Squeeze amd64 with almost nothing running.
>>>
>>> PID TTY STAT TIME COMMAND
>>> 2 ? S 0:00 [kthreadd]
>>> 3 ? S 0:00 \_ [ksoftirqd/0]
>>> 4 ? S 0:00 \_ [kworker/0:0]
>>> 5 ? S< 0:00 \_ [kworker/0:0H]
>>> 6 ? S 0:00 \_ [kworker/u2:0]
>>> 7 ? S 0:00 \_ [kdevtmpfs]
>>> 8 ? S< 0:00 \_ [netns]
>>> 9 ? S< 0:00 \_ [writeback]
>>> 10 ? S 0:00 \_ [kworker/u2:1]
>>> 11 ? S< 0:00 \_ [crypto]
>>> 12 ? S 0:00 \_ [kworker/0:1]
>>> 13 ? S< 0:00 \_ [bioset]
>>> 14 ? S< 0:00 \_ [kblockd]
>>> 15 ? S 0:00 \_ [kswapd0]
>>> 68 ? S 0:00 \_ [fsnotify_mark]
>>> 221 ? S< 0:00 \_ [bioset]
>>> 229 ? S< 0:00 \_ [deferwq]
>>> 231 ? S 0:00 \_ [jbd2/ubda-8]
>>> 232 ? S< 0:00 \_ [ext4-rsv-conver]
>>> 233 ? S< 0:00 \_ [kworker/0:1H]
>>> 1 ? Ss 0:00 init [2]
>>> 271 ? S<s 0:00 udevd --daemon
>>> 297 ? S< 0:00 \_ udevd --daemon
>>> 298 ? S< 0:00 \_ udevd --daemon
>>> 549 ? Sl 0:00 /usr/sbin/rsyslogd -c4
>>> 580 ? Ss 0:00 /usr/sbin/cron
>>> 595 ? Ss 0:00 /usr/bin/dbus-daemon --system
>>> 609 ? Ss 0:00 /usr/sbin/sshd
>>> 628 tty0 Ss 0:00 /bin/login --
>>> 631 tty0 S 0:00 \_ -bash
>>> 636 tty0 R+ 0:00 \_ ps fax
>>> 629 tty1 Ss+ 0:00 /sbin/getty 38400 tty1 linux
>>> 630 ttyS0 Ss+ 0:00 /sbin/getty 115200 ttyS0 linux
>> I cannot reproduce that by dropping jessie into single user mode so I am going to build a squeeze image and re-test with that.
> I can also reproduce using init=/bin/bash.
Reproduced, I think I located the culprit.
We still need to relay the "interruption" signal which broke a nanosleep.
I am testing a fix, which so far is working. If the fix proves viable, I
will test it as above (init=/bin/bash) and the normal tests I usually do
anyway.
If it works OK, I will submit v4.
A.
>
> Thanks,
> //richard
>
>
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 14:30 ` Anton Ivanov
@ 2015-11-02 15:25 ` Richard Weinberger
2015-11-02 16:19 ` Anton Ivanov
0 siblings, 1 reply; 29+ messages in thread
From: Richard Weinberger @ 2015-11-02 15:25 UTC (permalink / raw)
To: Anton Ivanov, Thomas Meyer; +Cc: user-mode-linux-devel@lists.sourceforge.net
Am 02.11.2015 um 15:30 schrieb Anton Ivanov:
> On 02/11/15 10:01, Richard Weinberger wrote:
>> Am 02.11.2015 um 10:53 schrieb Anton Ivanov:
>>> [snip]
>>>
>>>>>> I'm pretty sure that you don't see the issue as your Jessy userspace uses nanosleep periodically.
>>>>> There are quite a few things running so this may indeed be the case.
>>>>>
>>>>> What do you use for userspace (so I can try to reproduce this and debug it)?
>>>> Debian Squeeze amd64 with almost nothing running.
>>>>
>>>> PID TTY STAT TIME COMMAND
>>>> 2 ? S 0:00 [kthreadd]
>>>> 3 ? S 0:00 \_ [ksoftirqd/0]
>>>> 4 ? S 0:00 \_ [kworker/0:0]
>>>> 5 ? S< 0:00 \_ [kworker/0:0H]
>>>> 6 ? S 0:00 \_ [kworker/u2:0]
>>>> 7 ? S 0:00 \_ [kdevtmpfs]
>>>> 8 ? S< 0:00 \_ [netns]
>>>> 9 ? S< 0:00 \_ [writeback]
>>>> 10 ? S 0:00 \_ [kworker/u2:1]
>>>> 11 ? S< 0:00 \_ [crypto]
>>>> 12 ? S 0:00 \_ [kworker/0:1]
>>>> 13 ? S< 0:00 \_ [bioset]
>>>> 14 ? S< 0:00 \_ [kblockd]
>>>> 15 ? S 0:00 \_ [kswapd0]
>>>> 68 ? S 0:00 \_ [fsnotify_mark]
>>>> 221 ? S< 0:00 \_ [bioset]
>>>> 229 ? S< 0:00 \_ [deferwq]
>>>> 231 ? S 0:00 \_ [jbd2/ubda-8]
>>>> 232 ? S< 0:00 \_ [ext4-rsv-conver]
>>>> 233 ? S< 0:00 \_ [kworker/0:1H]
>>>> 1 ? Ss 0:00 init [2]
>>>> 271 ? S<s 0:00 udevd --daemon
>>>> 297 ? S< 0:00 \_ udevd --daemon
>>>> 298 ? S< 0:00 \_ udevd --daemon
>>>> 549 ? Sl 0:00 /usr/sbin/rsyslogd -c4
>>>> 580 ? Ss 0:00 /usr/sbin/cron
>>>> 595 ? Ss 0:00 /usr/bin/dbus-daemon --system
>>>> 609 ? Ss 0:00 /usr/sbin/sshd
>>>> 628 tty0 Ss 0:00 /bin/login --
>>>> 631 tty0 S 0:00 \_ -bash
>>>> 636 tty0 R+ 0:00 \_ ps fax
>>>> 629 tty1 Ss+ 0:00 /sbin/getty 38400 tty1 linux
>>>> 630 ttyS0 Ss+ 0:00 /sbin/getty 115200 ttyS0 linux
>>> I cannot reproduce that by dropping jessie into single user mode so I am going to build a squeeze image and re-test with that.
>> I can also reproduce using init=/bin/bash.
>
> Reproduced, I think I located the culprit.
>
> We still need to relay the "interruption" signal which broke a nanosleep.
>
> I am testing a fix, which so far is working. If the fix proves viable, I will test it as above (init=/bin/bash) and the normal tests I usually do anyway.
>
> If it works OK, I will submit v4.
Yay!
Thanks,
//richard the QA engineer ;)
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers
2015-11-02 15:25 ` Richard Weinberger
@ 2015-11-02 16:19 ` Anton Ivanov
0 siblings, 0 replies; 29+ messages in thread
From: Anton Ivanov @ 2015-11-02 16:19 UTC (permalink / raw)
To: Richard Weinberger, Thomas Meyer
Cc: user-mode-linux-devel@lists.sourceforge.net
On 02/11/15 15:25, Richard Weinberger wrote:
> Am 02.11.2015 um 15:30 schrieb Anton Ivanov:
>> On 02/11/15 10:01, Richard Weinberger wrote:
>>> Am 02.11.2015 um 10:53 schrieb Anton Ivanov:
>>>> [snip]
>>>>
>>>>>>> I'm pretty sure that you don't see the issue as your Jessy userspace uses nanosleep periodically.
>>>>>> There are quite a few things running so this may indeed be the case.
>>>>>>
>>>>>> What do you use for userspace (so I can try to reproduce this and debug it)?
>>>>> Debian Squeeze amd64 with almost nothing running.
>>>>>
>>>>> PID TTY STAT TIME COMMAND
>>>>> 2 ? S 0:00 [kthreadd]
>>>>> 3 ? S 0:00 \_ [ksoftirqd/0]
>>>>> 4 ? S 0:00 \_ [kworker/0:0]
>>>>> 5 ? S< 0:00 \_ [kworker/0:0H]
>>>>> 6 ? S 0:00 \_ [kworker/u2:0]
>>>>> 7 ? S 0:00 \_ [kdevtmpfs]
>>>>> 8 ? S< 0:00 \_ [netns]
>>>>> 9 ? S< 0:00 \_ [writeback]
>>>>> 10 ? S 0:00 \_ [kworker/u2:1]
>>>>> 11 ? S< 0:00 \_ [crypto]
>>>>> 12 ? S 0:00 \_ [kworker/0:1]
>>>>> 13 ? S< 0:00 \_ [bioset]
>>>>> 14 ? S< 0:00 \_ [kblockd]
>>>>> 15 ? S 0:00 \_ [kswapd0]
>>>>> 68 ? S 0:00 \_ [fsnotify_mark]
>>>>> 221 ? S< 0:00 \_ [bioset]
>>>>> 229 ? S< 0:00 \_ [deferwq]
>>>>> 231 ? S 0:00 \_ [jbd2/ubda-8]
>>>>> 232 ? S< 0:00 \_ [ext4-rsv-conver]
>>>>> 233 ? S< 0:00 \_ [kworker/0:1H]
>>>>> 1 ? Ss 0:00 init [2]
>>>>> 271 ? S<s 0:00 udevd --daemon
>>>>> 297 ? S< 0:00 \_ udevd --daemon
>>>>> 298 ? S< 0:00 \_ udevd --daemon
>>>>> 549 ? Sl 0:00 /usr/sbin/rsyslogd -c4
>>>>> 580 ? Ss 0:00 /usr/sbin/cron
>>>>> 595 ? Ss 0:00 /usr/bin/dbus-daemon --system
>>>>> 609 ? Ss 0:00 /usr/sbin/sshd
>>>>> 628 tty0 Ss 0:00 /bin/login --
>>>>> 631 tty0 S 0:00 \_ -bash
>>>>> 636 tty0 R+ 0:00 \_ ps fax
>>>>> 629 tty1 Ss+ 0:00 /sbin/getty 38400 tty1 linux
>>>>> 630 ttyS0 Ss+ 0:00 /sbin/getty 115200 ttyS0 linux
>>>> I cannot reproduce that by dropping jessie into single user mode so I am going to build a squeeze image and re-test with that.
>>> I can also reproduce using init=/bin/bash.
>> Reproduced, I think I located the culprit.
>>
>> We still need to relay the "interruption" signal which broke a nanosleep.
>>
>> I am testing a fix, which so far is working. If the fix proves viable, I will test it as above (init=/bin/bash) and the normal tests I usually do anyway.
>>
>> If it works OK, I will submit v4.
> Yay!
Apologies for that. A few years back I found that I can mask most of the
races which this patch is trying to address by pinning to a single CPU.
As a result most of my test scripts have a taskset -c 0 in them.
The revised version where we restore the relay of nanosleep
interruptions checks out for me, I just re-submitted it.
I will rebase my ubd patches on top of that and once they work, submit
them as well.
A.
>
> Thanks,
> //richard the QA engineer ;)
>
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 29+ messages in thread
end of thread, other threads:[~2015-11-02 16:19 UTC | newest]
Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-21 8:42 [uml-devel] [PATCH v3] um: Switch clocksource to hrtimers Anton Ivanov
2015-10-25 18:46 ` Anton Ivanov
2015-10-26 10:12 ` Richard Weinberger
2015-10-29 6:23 ` Anton Ivanov
2015-10-31 13:54 ` Richard Weinberger
2015-10-31 15:10 ` Thomas Meyer
2015-10-31 15:13 ` Richard Weinberger
2015-10-31 15:16 ` Thomas Meyer
2015-10-31 15:21 ` Richard Weinberger
2015-10-31 15:24 ` Thomas Meyer
2015-10-31 15:30 ` Richard Weinberger
2015-10-31 15:44 ` Thomas Meyer
2015-10-31 16:22 ` Anton Ivanov
2015-10-31 19:08 ` Richard Weinberger
2015-10-31 20:17 ` Anton Ivanov
2015-10-31 19:06 ` Richard Weinberger
2015-11-02 8:14 ` Anton Ivanov
2015-11-02 8:37 ` Richard Weinberger
2015-11-02 8:41 ` Anton Ivanov
2015-11-02 8:52 ` Richard Weinberger
2015-11-02 8:57 ` Anton Ivanov
2015-11-02 9:12 ` Richard Weinberger
2015-11-02 9:53 ` Anton Ivanov
2015-11-02 10:01 ` Richard Weinberger
2015-11-02 10:59 ` Anton Ivanov
2015-11-02 11:00 ` Anton Ivanov
2015-11-02 14:30 ` Anton Ivanov
2015-11-02 15:25 ` Richard Weinberger
2015-11-02 16:19 ` Anton Ivanov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.