Skip to contentSkip to conversation

fs/aio: fix sleeping while TASK_INTERRUPTIBLE

RFC PATCH In review Chris Mason 5 participants 21 messages Dec 23, 2014 – Feb 9, 2015

Subsystems (22)
lore
Share & tools
lore
#0 lore raw

RFC PATCH 1/1 fs/aio: fix sleeping while TASK_INTERRUPTIBLE

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

[  445.464634] WARNING: CPU: 22 PID: 4367 at kernel/sched/core.c:7303 __might_sleep+0x9a/0xb0()
[  445.481699] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff81093f68>] prepare_to_wait_event+0x68/0x120
[  445.504494] Modules linked in: btrfs raid6_pq zlib_deflate lzo_compress xor xfs exportfs libcrc32c nfsv4 k10temp coretemp hwmon loop tcp_diag inet_diag ip6table_filter ip6_tables xt_NFLOG nfnetlink_log nfnetlink xt_comment xt_statistic iptable_filter ip_tables x_tables mptctl netconsole autofs4 nfsv3 nfs lockd grace rpcsec_gss_krb5 auth_rpcgss oid_registry sunrpc ipv6 ext3 jbd dm_mod iTCO_wdt iTCO_vendor_support ipmi_si ipmi_msghandler rtc_cmos pcspkr i2c_i801 lpc_ich mfd_core shpchp ehci_pci ehci_hcd mlx4_en ptp pps_core mlx4_core ses enclosure sg button megaraid_sas
[  445.612013] CPU: 22 PID: 4367 Comm: mysqld Tainted: G        W 3.18.0-mason+ #21
[  445.627862] Hardware name: ZTSYSTEMS Echo Ridge T4  /A9DRPF-10D, BIOS 1.07 05/10/2012
[  445.643727]  0000000000001c87 ffff880e18ae7c58 ffffffff81658fc9 0000000000001c87
[  445.659194]  ffff880e18ae7ca8 ffff880e18ae7c98 ffffffff81054b25 0000000000000000
[  445.674695]  0000000000000000 000000000000026d ffffffff81a13c0b 0000000000000000
[  445.690091] Call Trace:
[  445.695129]  [<ffffffff81658fc9>] dump_stack+0x4f/0x6e
[  445.705545]  [<ffffffff81054b25>] warn_slowpath_common+0x95/0xe0
[  445.717699]  [<ffffffff81054c26>] warn_slowpath_fmt+0x46/0x50
[  445.729341]  [<ffffffff81093f68>] ?  prepare_to_wait_event+0x68/0x120
[  445.742191]  [<ffffffff81093f68>] ?  prepare_to_wait_event+0x68/0x120
[  445.755037]  [<ffffffff8107b03a>] __might_sleep+0x9a/0xb0
[  445.765975]  [<ffffffff8165b5df>] mutex_lock_nested+0x2f/0x3b0
[  445.777783]  [<ffffffff81093f5e>] ?  prepare_to_wait_event+0x5e/0x120
[  445.790617]  [<ffffffff81093f5e>] ?  prepare_to_wait_event+0x5e/0x120
[  445.803473]  [<ffffffff811f794b>] aio_read_events+0x4b/0x2a0
[  445.814930]  [<ffffffff811f7d36>] read_events+0x196/0x240
[  445.825873]  [<ffffffff810bb0f0>] ? update_rmtp+0x80/0x80
[  445.836799]  [<ffffffff810bba54>] ?  hrtimer_start_range_ns+0x14/0x20
[  445.849656]  [<ffffffff810939e0>] ? wait_woken+0xa0/0xa0
[  445.860419]  [<ffffffff811f7867>] ? lookup_ioctx+0x47/0xe0
[  445.871519]  [<ffffffff811f8c34>] SyS_io_getevents+0x64/0x110
[  445.883140]  [<ffffffff810f433c>] ?  __audit_syscall_entry+0xac/0x110
[  445.895986]  [<ffffffff8165fcd2>] system_call_fastpath+0x12/0x17
[  445.908131] ---[ end trace 1df697a0d5d1d796 ]---

The patch below fixes things by pushing the mutex out of aio_read_events and into it's caller. I ended up open coding the waiting and hrtimer loop because I couldn't see a cleaner way to avoid taking the mutex extra times.

I also had to set the state to running before calling kmap or copy_to_user(), which means we might blow through schedule() if we do end up copying out a single event.

This has been lightly tested and hasn't been benchmarked, so RFC for now.

---
 fs/aio.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 file changed, 93 insertions(+), 24 deletions(-)
fs/aio.c +93 -24
index 1b7893e..b3f9fd5 100644
@@ -1131,6 +1131,8 @@ EXPORT_SYMBOL(aio_complete);
 /* aio_read_events_ring
  *	Pull an event off of the ioctx's event ring.  Returns the number of
  *	events fetched
+ *
+ *	must be called with ctx->ring locked
  */
 static long aio_read_events_ring(struct kioctx *ctx,
 				 struct io_event __user *event, long nr)
@@ -1139,8 +1141,7 @@ static long aio_read_events_ring(struct kioctx *ctx,
 	unsigned head, tail, pos;
 	long ret = 0;
 	int copy_ret;
-
-	mutex_lock(&ctx->ring_lock);
+	int running = current->state == TASK_RUNNING;
 
 	/* Access to ->ring_pages here is protected by ctx->ring_lock. */
 	ring = kmap_atomic(ctx->ring_pages[0]);
@@ -1179,6 +1180,17 @@ static long aio_read_events_ring(struct kioctx *ctx,
 		page = ctx->ring_pages[pos / AIO_EVENTS_PER_PAGE];
 		pos %= AIO_EVENTS_PER_PAGE;
 
+		/* we're called after calling prepare_to_wait, which means
+		 * our current state might not be TASK_RUNNING.  Set it
+		 * to running here to sleeps in kmap or copy_to_user don't
+		 * last forever.  If we don't copy enough events out, we'll
+		 * loop through schedule() one time before sleeping.
+		 */
+		if (!running) {
+			__set_current_state(TASK_RUNNING);
+			running = 1;
+		}
+
 		ev = kmap(page);
 		copy_ret = copy_to_user(event + ret, ev + pos,
 					sizeof(*ev) * avail);
@@ -1201,11 +1213,10 @@ static long aio_read_events_ring(struct kioctx *ctx,
 
 	pr_debug("%li  h%u t%u\n", ret, head, tail);
 out:
-	mutex_unlock(&ctx->ring_lock);
-
 	return ret;
 }
 
+/* must be called with ctx->ring locked */
 static bool aio_read_events(struct kioctx *ctx, long min_nr, long nr,
 			    struct io_event __user *event, long *i)
 {
@@ -1223,6 +1234,73 @@ static bool aio_read_events(struct kioctx *ctx, long min_nr, long nr,
 	return ret < 0 || *i >= min_nr;
 }
 
+/*
+ * will take aio ring lock
+ */
+static long aio_wait_events(struct kioctx *ctx, long min_nr, long nr,
+			    struct io_event __user *event,
+			    long *i_ret, ktime_t until)
+{
+	struct hrtimer_sleeper t;
+	long ret;
+	DEFINE_WAIT(wait);
+
+	mutex_lock(&ctx->ring_lock);
+
+	/*
+	 * this is an open coding of wait_event_interruptible_hrtimeout
+	 * so we can deal with the ctx->mutex nicely.  It starts with the
+	 * fast path for existing events:
+	 */
+	ret = aio_read_events(ctx, min_nr, nr, event, i_ret);
+	if (ret) {
+		mutex_unlock(&ctx->ring_lock);
+		return ret;
+	}
+
+	hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+	hrtimer_init_sleeper(&t, current);
+	if (until.tv64 != KTIME_MAX) {
+		hrtimer_start_range_ns(&t.timer, until, current->timer_slack_ns,
+				      HRTIMER_MODE_REL);
+	}
+
+	while (1) {
+		ret = prepare_to_wait_event(&ctx->wait, &wait,
+					    TASK_INTERRUPTIBLE);
+		if (ret)
+			break;
+
+		ret = aio_read_events(ctx, min_nr, nr, event, i_ret);
+		if (ret)
+			break;
+
+		/* make sure we didn't timeout taking the mutex */
+		if (!t.task) {
+			ret = -ETIME;
+			break;
+		}
+
+		mutex_unlock(&ctx->ring_lock);
+		schedule();
+
+		if (!t.task) {
+			ret = -ETIME;
+			goto out;
+		}
+		mutex_lock(&ctx->ring_lock);
+
+	}
+	mutex_unlock(&ctx->ring_lock);
+
+out:
+	finish_wait(&ctx->wait, &wait);
+	hrtimer_cancel(&t.timer);
+	destroy_hrtimer_on_stack(&t.timer);
+	return ret;
+
+}
+
 static long read_events(struct kioctx *ctx, long min_nr, long nr,
 			struct io_event __user *event,
 			struct timespec __user *timeout)
@@ -1239,27 +1317,18 @@ static long read_events(struct kioctx *ctx, long min_nr, long nr,
 		until = timespec_to_ktime(ts);
 	}
 
-	/*
-	 * Note that aio_read_events() is being called as the conditional - i.e.
-	 * we're calling it after prepare_to_wait() has set task state to
-	 * TASK_INTERRUPTIBLE.
-	 *
-	 * But aio_read_events() can block, and if it blocks it's going to flip
-	 * the task state back to TASK_RUNNING.
-	 *
-	 * This should be ok, provided it doesn't flip the state back to
-	 * TASK_RUNNING and return 0 too much - that causes us to spin. That
-	 * will only happen if the mutex_lock() call blocks, and we then find
-	 * the ringbuffer empty. So in practice we should be ok, but it's
-	 * something to be aware of when touching this code.
-	 */
-	if (until.tv64 == 0)
-		aio_read_events(ctx, min_nr, nr, event, &ret);
-	else
-		wait_event_interruptible_hrtimeout(ctx->wait,
-				aio_read_events(ctx, min_nr, nr, event, &ret),
-				until);
 
+	if (until.tv64 == 0) {
+		mutex_lock(&ctx->ring_lock);
+		aio_read_events(ctx, min_nr, nr, event, &ret);
+		mutex_unlock(&ctx->ring_lock);
+	} else {
+		/*
+		 * we're pitching the -ETIME and -ERESTARTSYS return values
+		 * here.  It'll turn into -EINTR? ick
+		 */
+		aio_wait_events(ctx, min_nr, nr, event, &ret, until);
+	}
 	if (!ret && signal_pending(current))
 		ret = -EINTR;
 
Signature · 7 lines
1.8.1

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in
the body to [email protected].  For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>
maintainer
#1 lore raw
Quoted 4 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

...

Quoted 2 lines

This has been lightly tested and hasn't been benchmarked, so RFC for now.

This was on my list of things to look at today.

I'm not at all happy with this particular patch. It looks like this issue was introduced back in 3.10 by Kent's big overhaul of things. The main benefit Kent's changes achieved stems from holding ring_lock across fetching multiple events rather than taking the spin lock for every event. I'm going to see if I can come up with a simpler way of fixing this.

-ben

Signature · 7 lines
"Thought is the essence of where you are now."

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in
the body to [email protected].  For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>
#2 lore raw
Quoted 12 lines · Benjamin LaHaise
Quoted 7 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch
someone
calling might_sleep with their state != TASK_RUNNING. The idea was
to
find buggy code locking mutexes after calling prepare_to_wait(),
kind
of like this:

...

Quoted 2 lines

This has been lightly tested and hasn't been benchmarked, so RFC for now.

Quoted 7 lines

This was on my list of things to look at today.

I'm not at all happy with this particular patch. It looks like this issue was introduced back in 3.10 by Kent's big overhaul of things. The main benefit Kent's changes achieved stems from holding ring_lock across fetching multiple events rather than taking the spin lock for every event. I'm going to see if I can come up with a simpler way of fixing this.

Works for me, the patch is mostly a (somewhat commented) list of all the places we're currently doing it wrong.

-chris

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to [email protected]. For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>

maintainer
#3 lore raw

Hi Chris,

Quoted 2 lines · Chris Mason

Works for me, the patch is mostly a (somewhat commented) list of all the places we're currently doing it wrong.

I think the following change should suffice to fix this issue, and it's a lot easier to review, too. I've given this a quick test, and it works for me. I do have one concern: is it safe to call mutex_lock() when the current task is already on other wait queues? If the answer is no, then it may be necessary to convert ->ring_lock back into spinlock as it was prior to 3.10 to avoid using mutex_lock(). The same question applies to kmap() and copy_to_user(), and those concerns might have implications across the rest of the kernel. Thoughts?

-ben

Signature · 1 line
"Thought is the essence of where you are now."
fs/aio.c +9 -1
index 1b7893e..a25bd96 100644
@@ -1140,7 +1140,14 @@ static long aio_read_events_ring(struct kioctx *ctx,
 	long ret = 0;
 	int copy_ret;
 
-	mutex_lock(&ctx->ring_lock);
+	/* Avoid clobbering current->state during mutex_lock(). */
+	if (!mutex_trylock(&ctx->ring_lock)) {
+		long state = current->state;
+
+		__set_current_state(TASK_RUNNING);
+		mutex_lock(&ctx->ring_lock);
+		__set_current_state(state);
+	}
 
 	/* Access to ->ring_pages here is protected by ctx->ring_lock. */
 	ring = kmap_atomic(ctx->ring_pages[0]);
@@ -1179,6 +1186,7 @@ static long aio_read_events_ring(struct kioctx *ctx,
 		page = ctx->ring_pages[pos / AIO_EVENTS_PER_PAGE];
 		pos %= AIO_EVENTS_PER_PAGE;
 
+		__set_current_state(TASK_RUNNING);
 		ev = kmap(page);
 		copy_ret = copy_to_user(event + ret, ev + pos,
 					sizeof(*ev) * avail);

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to [email protected]. For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>

#4 lore raw
Quoted 15 lines · Benjamin LaHaise

Hi Chris,

Quoted 2 lines · Chris Mason

Works for me, the patch is mostly a (somewhat commented) list of all the places we're currently doing it wrong.

I think the following change should suffice to fix this issue, and it's a lot easier to review, too. I've given this a quick test, and it works for me. I do have one concern: is it safe to call mutex_lock() when the current task is already on other wait queues? If the answer is no, then it may be necessary to convert ->ring_lock back into spinlock as it was prior to 3.10 to avoid using mutex_lock(). The same question applies to kmap() and copy_to_user(), and those concerns might have implications across the rest of the kernel. Thoughts?

fs/aio.c static long aio_read_events_ring(struct kioctx *ctx, · line 1149

Quoted 1 line
fs/aio.c +1 -0
+		__set_current_state(state);

I don't think this is safe - if we race, and another thread wakes us up, we're setting our state back to TASK_INTERRUPTIBLE _without_ us being on the waitlist.

maintainer
#5 lore raw
Quoted 16 lines · Kent Overstreet
Quoted 15 lines · Benjamin LaHaise

Hi Chris,

Quoted 2 lines · Chris Mason

Works for me, the patch is mostly a (somewhat commented) list of all the places we're currently doing it wrong.

I think the following change should suffice to fix this issue, and it's a lot easier to review, too. I've given this a quick test, and it works for me. I do have one concern: is it safe to call mutex_lock() when the current task is already on other wait queues? If the answer is no, then it may be necessary to convert ->ring_lock back into spinlock as it was prior to 3.10 to avoid using mutex_lock(). The same question applies to kmap() and copy_to_user(), and those concerns might have implications across the rest of the kernel. Thoughts?

Quoted 4 lines

fs/aio.c static long aio_read_events_ring(struct kioctx *ctx, · line 1149

Quoted 1 line
fs/aio.c +1 -0
+		__set_current_state(state);

I don't think this is safe - if we race, and another thread wakes us up, we're setting our state back to TASK_INTERRUPTIBLE _without_ us being on the waitlist.

It should be -- the conditions for going to sleep are checked after current's state is set here.

-ben

Signature · 7 lines
"Thought is the essence of where you are now."

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in
the body to [email protected].  For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>
#6 lore raw
Quoted 17 lines · Benjamin LaHaise
Quoted 16 lines · Kent Overstreet
Quoted 15 lines · Benjamin LaHaise

Hi Chris,

Quoted 2 lines · Chris Mason

Works for me, the patch is mostly a (somewhat commented) list of all the places we're currently doing it wrong.

I think the following change should suffice to fix this issue, and it's a lot easier to review, too. I've given this a quick test, and it works for me. I do have one concern: is it safe to call mutex_lock() when the current task is already on other wait queues? If the answer is no, then it may be necessary to convert ->ring_lock back into spinlock as it was prior to 3.10 to avoid using mutex_lock(). The same question applies to kmap() and copy_to_user(), and those concerns might have implications across the rest of the kernel. Thoughts?

Quoted 7 lines
Quoted 4 lines

fs/aio.c static long aio_read_events_ring(struct kioctx *ctx, · line 1149

Quoted 1 line
fs/aio.c +1 -0
+		__set_current_state(state);

I don't think this is safe - if we race, and another thread wakes us up, we're setting our state back to TASK_INTERRUPTIBLE _without_ us being on the waitlist.

It should be -- the conditions for going to sleep are checked after current's state is set here.

Ah - and then you set the task state back to TASK_RUNNING if _any_ events were found... yeah, I guess that seems safe. Probably worth a few comments, though :)

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to [email protected]. For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>

#7 lore raw
In reply to Benjamin LaHaise
Quoted 27 lines · Benjamin LaHaise
Quoted 26 lines · Kent Overstreet
Quoted 4 lines · Benjamin LaHaise

Hi Chris,

Quoted 1 line · Chris Mason

Works for me, the patch is mostly a (somewhat commented) list

of all

Quoted 3 lines
Quoted 1 line

the places we're currently doing it wrong.

I think the following change should suffice to fix this issue,

and it's a

Quoted 1 line

lot easier to review, too. I've given this a quick test, and it

works for

Quoted 1 line

me. I do have one concern: is it safe to call mutex_lock() when

the current

Quoted 1 line

task is already on other wait queues? If the answer is no, then

it may be

Quoted 1 line

necessary to convert ->ring_lock back into spinlock as it was

prior to 3.10

Quoted 1 line

to avoid using mutex_lock(). The same question applies to kmap()

and

Quoted 1 line

copy_to_user(), and those concerns might have implications across

the rest

Quoted 3 lines

of the kernel. Thoughts?

fs/aio.c +1 -0
+		__set_current_state(state);
Quoted 7 lines
Quoted 4 lines

I don't think this is safe - if we race, and another thread wakes
us up, we're
setting our state back to TASK_INTERRUPTIBLE _without_ us being on
the waitlist.

It should be -- the conditions for going to sleep are checked after current's state is set here.

We're task interruptible and may be run under a timer, so we'll catch wakeups for signals and timers in addition to available aio events.

-chris

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to [email protected]. For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>

#8 lore raw
In reply to Chris Mason
Quoted 4 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

Ben just told me about this issue.

IMO, the way the code is structured now is correct, I would argue the problem is with the way wait_event() works - they way they have to mess with the global-ish task state when adding a wait_queue_t to a wait_queue_head (who came up with these names?)

Bcache's closures don't have this problem; a closure being on a waitlist has nothing to do with task state - instead, closures keep a counter of the number of things they're waiting on. You can add a closure to a waitlist and then separately, later, do a closure_sync() to wait on the closure's remaining count to hit 0.

Bcache in fact used to have a closure_wait_event() macro that was exactly analogous to wait_event() but using a closure - I forget what it was used for, but at some point it wasn't used by bcache anymore and got deleted.

I just cooked up closure_sync_interruptible_hrtimeout() and the corresponding wait_event macro and then converted aio to use it. This would IMO be a much cleaner solution to the original problem.

The one disadvantage I know of, with the current code, is that closure waitlists are singly linked - so they can be lockless, but that means you wake up/remove a single closure from a waitlist, you have to do wake_up_all() - which is an obvious disadvantage w.r.t. spurious wakeups. If people like this approach though I'll just make closure waitlists doubly linked with a lock (which is something I'd been considering doing anyways)

Here's the patch to the aio code - the rest of the series is in a branch at:
http://evilpiepirate.org/git/linux-bcache.git/log/?h=aio_ring_fix

Disclaimer: code has only been _lightly_ tested so far, the closure hrtimer stuff was somewhat nontrivial

commit c91f0de111da37581709f7d201793a88c6993188

Author: Kent Overstreet <[email protected]>
Date:   Wed Dec 24 17:20:32 2014 -0800

aio: Convert to closure waitlist for aio ring buffer

Advantage of closure waitlists is that we don't have to muck with the task state before we actually sleep; instead of prepare_to_wait() we do closure_wait(), which like prepare_to_wait() adds an object to a waitlist but unlike prepare_to_wait it's the closure that's doing the waiting, not the task.

This fixes the issue with doing copy_to_user() after modifying the task state.

Change-Id: Ifc75123d5bb620277d1e78dd5102e5d8bead1add

fs/aio.c +8 -20
index 1b7893ecc2..284c74e624 100644
@@ -40,6 +40,7 @@
 #include <linux/ramfs.h>
 #include <linux/percpu-refcount.h>
 #include <linux/mount.h>
+#include <linux/closure.h>
 
 #include <asm/kmap_types.h>
 #include <asm/uaccess.h>
@@ -136,7 +137,7 @@ struct kioctx {
 
 	struct {
 		struct mutex	ring_lock;
-		wait_queue_head_t wait;
+		struct closure_waitlist wait;
 	} ____cacheline_aligned_in_smp;
 
 	struct {
@@ -689,7 +690,6 @@ static struct kioctx *ioctx_alloc(unsigned nr_events)
 	/* Protect against page migration throughout kiotx setup by keeping
 	 * the ring_lock mutex held until setup is complete. */
 	mutex_lock(&ctx->ring_lock);
-	init_waitqueue_head(&ctx->wait);
 
 	INIT_LIST_HEAD(&ctx->active_reqs);
 
@@ -772,7 +772,7 @@ static int kill_ioctx(struct mm_struct *mm, struct kioctx *ctx,
 	spin_unlock(&mm->ioctx_lock);
 
 	/* percpu_ref_kill() will do the necessary call_rcu() */
-	wake_up_all(&ctx->wait);
+	closure_wake_up(&ctx->wait);
 
 	/*
 	 * It'd be more correct to do this in free_ioctx(), after all
@@ -1121,8 +1121,7 @@ void aio_complete(struct kiocb *iocb, long res, long res2)
 	 */
 	smp_mb();
 
-	if (waitqueue_active(&ctx->wait))
-		wake_up(&ctx->wait);
+	closure_wake_up(&ctx->wait);
 
 	percpu_ref_put(&ctx->reqs);
 }
@@ -1237,26 +1236,15 @@ static long read_events(struct kioctx *ctx, long min_nr, long nr,
 			return -EFAULT;
 
 		until = timespec_to_ktime(ts);
+
+		if (until.tv64)
+			until = ktime_add(ktime_get(), until);
 	}
 
-	/*
-	 * Note that aio_read_events() is being called as the conditional - i.e.
-	 * we're calling it after prepare_to_wait() has set task state to
-	 * TASK_INTERRUPTIBLE.
-	 *
-	 * But aio_read_events() can block, and if it blocks it's going to flip
-	 * the task state back to TASK_RUNNING.
-	 *
-	 * This should be ok, provided it doesn't flip the state back to
-	 * TASK_RUNNING and return 0 too much - that causes us to spin. That
-	 * will only happen if the mutex_lock() call blocks, and we then find
-	 * the ringbuffer empty. So in practice we should be ok, but it's
-	 * something to be aware of when touching this code.
-	 */
 	if (until.tv64 == 0)
 		aio_read_events(ctx, min_nr, nr, event, &ret);
 	else
-		wait_event_interruptible_hrtimeout(ctx->wait,
+		closure_wait_event_hrtimeout(&ctx->wait,
 				aio_read_events(ctx, min_nr, nr, event, &ret),
 				until);
 
#9 lore raw
Quoted 34 lines · Kent Overstreet
Quoted 4 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

Ben just told me about this issue.

IMO, the way the code is structured now is correct, I would argue the problem is with the way wait_event() works - they way they have to mess with the global-ish task state when adding a wait_queue_t to a wait_queue_head (who came up with these names?)

Bcache's closures don't have this problem; a closure being on a waitlist has nothing to do with task state - instead, closures keep a counter of the number of things they're waiting on. You can add a closure to a waitlist and then separately, later, do a closure_sync() to wait on the closure's remaining count to hit 0.

Bcache in fact used to have a closure_wait_event() macro that was exactly analogous to wait_event() but using a closure - I forget what it was used for, but at some point it wasn't used by bcache anymore and got deleted.

I just cooked up closure_sync_interruptible_hrtimeout() and the corresponding wait_event macro and then converted aio to use it. This would IMO be a much cleaner solution to the original problem.

The one disadvantage I know of, with the current code, is that closure waitlists are singly linked - so they can be lockless, but that means you wake up/remove a single closure from a waitlist, you have to do wake_up_all() - which is an obvious disadvantage w.r.t. spurious wakeups. If people like this approach though I'll just make closure waitlists doubly linked with a lock (which is something I'd been considering doing anyways)

Quoted 6 lines

Here's the patch to the aio code - the rest of the series is in a branch at:
http://evilpiepirate.org/git/linux-bcache.git/log/?h=aio_ring_fix

Disclaimer: code has only been _lightly_ tested so far, the closure hrtimer stuff was somewhat nontrivial

How can someone test the code?
Use xfstests? Other tools (to test aio)?

How do I turn on the "debugging"?

I am testing on top of Linux v3.19-rc1 with some "known" mm and bth fixes.

I have...

CONFIG_CLOSURE_DEBUG=y

My full kernel-config and patchset are attached.

- Sedat -

Quoted 95 lines

commit c91f0de111da37581709f7d201793a88c6993188

Author: Kent Overstreet <[email protected]>
Date:   Wed Dec 24 17:20:32 2014 -0800

aio: Convert to closure waitlist for aio ring buffer

Advantage of closure waitlists is that we don't have to muck with the task state before we actually sleep; instead of prepare_to_wait() we do closure_wait(), which like prepare_to_wait() adds an object to a waitlist but unlike prepare_to_wait it's the closure that's doing the waiting, not the task.

This fixes the issue with doing copy_to_user() after modifying the task state.

Change-Id: Ifc75123d5bb620277d1e78dd5102e5d8bead1add

fs/aio.c +8 -21
index 1b7893ecc2..284c74e624 100644
@@ -40,6 +40,7 @@
 #include <linux/ramfs.h>
 #include <linux/percpu-refcount.h>
 #include <linux/mount.h>
+#include <linux/closure.h>
 
 #include <asm/kmap_types.h>
 #include <asm/uaccess.h>
@@ -136,7 +137,7 @@ struct kioctx {
 
        struct {
                struct mutex    ring_lock;
-               wait_queue_head_t wait;
+               struct closure_waitlist wait;
        } ____cacheline_aligned_in_smp;
 
        struct {
@@ -689,7 +690,6 @@ static struct kioctx *ioctx_alloc(unsigned nr_events)
        /* Protect against page migration throughout kiotx setup by keeping
         * the ring_lock mutex held until setup is complete. */
        mutex_lock(&ctx->ring_lock);
-       init_waitqueue_head(&ctx->wait);
 
        INIT_LIST_HEAD(&ctx->active_reqs);
 
@@ -772,7 +772,7 @@ static int kill_ioctx(struct mm_struct *mm, struct kioctx *ctx,
        spin_unlock(&mm->ioctx_lock);
 
        /* percpu_ref_kill() will do the necessary call_rcu() */
-       wake_up_all(&ctx->wait);
+       closure_wake_up(&ctx->wait);
 
        /*
         * It'd be more correct to do this in free_ioctx(), after all
@@ -1121,8 +1121,7 @@ void aio_complete(struct kiocb *iocb, long res, long res2)
         */
        smp_mb();
 
-       if (waitqueue_active(&ctx->wait))
-               wake_up(&ctx->wait);
+       closure_wake_up(&ctx->wait);
 
        percpu_ref_put(&ctx->reqs);
 }
@@ -1237,26 +1236,15 @@ static long read_events(struct kioctx *ctx, long min_nr, long nr,
                        return -EFAULT;
 
                until = timespec_to_ktime(ts);
+
+               if (until.tv64)
+                       until = ktime_add(ktime_get(), until);
        }
 
-       /*
-        * Note that aio_read_events() is being called as the conditional - i.e.
-        * we're calling it after prepare_to_wait() has set task state to
-        * TASK_INTERRUPTIBLE.
-        *
-        * But aio_read_events() can block, and if it blocks it's going to flip
-        * the task state back to TASK_RUNNING.
-        *
-        * This should be ok, provided it doesn't flip the state back to
-        * TASK_RUNNING and return 0 too much - that causes us to spin. That
-        * will only happen if the mutex_lock() call blocks, and we then find
-        * the ringbuffer empty. So in practice we should be ok, but it's
-        * something to be aware of when touching this code.
-        */
        if (until.tv64 == 0)
                aio_read_events(ctx, min_nr, nr, event, &ret);
        else
-               wait_event_interruptible_hrtimeout(ctx->wait,
+               closure_wait_event_hrtimeout(&ctx->wait,
                                aio_read_events(ctx, min_nr, nr, event, &ret),
                                until);
 
--
Quoted 3 lines

To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Al Viro (3):
Bluetooth: hidp_connection_add() unsafe use of l2cap_pi()
Bluetooth: cmtp: cmtp_add_connection() should verify that it's dealing with l2cap socket
Bluetooth: bnep: bnep_add_connection() should verify that it's dealing with l2cap socket

Johan Hedberg (1):
Bluetooth: Fix accepting connections when not using mgmt

Jukka Rissanen (1):
Bluetooth: 6lowpan: Do not free skb when packet is dropped

Kent Overstreet (3):
closures: move to lib/
closures: fix closure_sync()
aio: Convert to closure waitlist for aio ring buffer

Kirill A. Shutemov (1):
Revert "mm/memory.c: share the i_mmap_rwsem"

Marcel Holtmann (1):
Bluetooth: Fix controller configuration with HCI_QUIRK_INVALID_BDADDR

Sedat Dilek (7):
Merge git://git.kernel.org/.../bluetooth/bluetooth into for-3.19/bluetooth-fixes
kbuild: deb-pkg: Try to determine distribution
kbuild: deb-pkg: Bump year in debian/copyright file (v3)
kbuild: deb-pkg: Update git repository URL in debian/copyright file (v3) Merge branch 'for-3.19/mm-fixes' into 3.19.0-rc1-2-iniza-small Merge branch 'for-3.19/bluetooth-fixes' into 3.19.0-rc1-2-iniza-small Merge branch 'for-3.19/aio-ring-fixes' into 3.19.0-rc1-2-iniza-small

Slava Pestov (1):
closures: Add closure_sync_interruptible_hrtimeout

 drivers/md/bcache/Kconfig   |   9 -
 drivers/md/bcache/Makefile  |   6 +-
 drivers/md/bcache/bcache.h  |   2 +-
 drivers/md/bcache/closure.c | 222 ---------------------
 drivers/md/bcache/closure.h | 386 -------------------------------------
 drivers/md/bcache/super.c   |   1 -
 drivers/md/bcache/util.h    |   3 +-
 fs/aio.c                    |  28 +--
 include/linux/closure.h     | 458 ++++++++++++++++++++++++++++++++++++++++++++
 lib/Kconfig.debug           |   8 +
 lib/Makefile                |   2 +-
 lib/closure.c               | 285 +++++++++++++++++++++++++++
 mm/memory.c                 |   4 +-
 net/bluetooth/6lowpan.c     |   1 -
 net/bluetooth/bnep/core.c   |   3 +
 net/bluetooth/cmtp/core.c   |   3 +
 net/bluetooth/hci_event.c   |  16 +-
 net/bluetooth/hidp/core.c   |   3 +-
 scripts/package/builddeb    |  19 +-
 19 files changed, 803 insertions(+), 656 deletions(-)
drivers/md/bcache/Kconfig +0 -9
index 4d20088..4178abe 100644
@@ -15,12 +15,3 @@ config BCACHE_DEBUG
 
 	Enables extra debugging tools, allows expensive runtime checks to be
 	turned on.
-
-config BCACHE_CLOSURES_DEBUG
-	bool "Debug closures"
-	depends on BCACHE
-	select DEBUG_FS
-	---help---
-	Keeps all active closures in a linked list and provides a debugfs
-	interface to list them, which makes it possible to see asynchronous
-	operations that get stuck.
drivers/md/bcache/Makefile +3 -3
index c488b84..25d7aa3 100644
@@ -1,8 +1,8 @@
 
 obj-$(CONFIG_BCACHE)	+= bcache.o
 
-bcache-y		:= alloc.o bset.o btree.o closure.o debug.o extents.o\
-	io.o journal.o movinggc.o request.o stats.o super.o sysfs.o trace.o\
-	util.o writeback.o
+bcache-y		:= alloc.o bset.o btree.o debug.o extents.o io.o\
+	journal.o movinggc.o request.o stats.o super.o sysfs.o trace.o util.o\
+	writeback.o
 
 CFLAGS_request.o	+= -Iblock
drivers/md/bcache/bcache.h +1 -1
index 04f7bc2..21efa45 100644
@@ -179,6 +179,7 @@
 
 #include <linux/bcache.h>
 #include <linux/bio.h>
+#include <linux/closure.h>
 #include <linux/kobject.h>
 #include <linux/list.h>
 #include <linux/mutex.h>
@@ -189,7 +190,6 @@
 
 #include "bset.h"
 #include "util.h"
-#include "closure.h"
 
 struct bucket {
 	atomic_t	pin;
drivers/md/bcache/closure.c deleted +0 -222

222 lines not on this page · raw message

drivers/md/bcache/closure.h deleted +0 -386

386 lines not on this page · raw message

drivers/md/bcache/super.c +0 -1
index 4dd2bb7..085c535 100644
@@ -2097,7 +2097,6 @@ static int __init bcache_init(void)
 	mutex_init(&bch_register_lock);
 	init_waitqueue_head(&unregister_wait);
 	register_reboot_notifier(&reboot);
-	closure_debug_init();
 
 	bcache_major = register_blkdev(0, "bcache");
 	if (bcache_major < 0)
drivers/md/bcache/util.h +1 -2
index 98df757..6cd43c8 100644
@@ -3,6 +3,7 @@
 #define _BCACHE_UTIL_H
 
 #include <linux/blkdev.h>
+#include <linux/closure.h>
 #include <linux/errno.h>
 #include <linux/kernel.h>
 #include <linux/llist.h>
@@ -10,8 +11,6 @@
 #include <linux/vmalloc.h>
 #include <linux/workqueue.h>
 
-#include "closure.h"
-
 #define PAGE_SECTORS		(PAGE_SIZE / 512)
 
 struct closure;
fs/aio.c +8 -20
index 1b7893e..284c74e 100644
@@ -40,6 +40,7 @@
 #include <linux/ramfs.h>
 #include <linux/percpu-refcount.h>
 #include <linux/mount.h>
+#include <linux/closure.h>
 
 #include <asm/kmap_types.h>
 #include <asm/uaccess.h>
@@ -136,7 +137,7 @@ struct kioctx {
 
 	struct {
 		struct mutex	ring_lock;
-		wait_queue_head_t wait;
+		struct closure_waitlist wait;
 	} ____cacheline_aligned_in_smp;
 
 	struct {
@@ -689,7 +690,6 @@ static struct kioctx *ioctx_alloc(unsigned nr_events)
 	/* Protect against page migration throughout kiotx setup by keeping
 	 * the ring_lock mutex held until setup is complete. */
 	mutex_lock(&ctx->ring_lock);
-	init_waitqueue_head(&ctx->wait);
 
 	INIT_LIST_HEAD(&ctx->active_reqs);
 
@@ -772,7 +772,7 @@ static int kill_ioctx(struct mm_struct *mm, struct kioctx *ctx,
 	spin_unlock(&mm->ioctx_lock);
 
 	/* percpu_ref_kill() will do the necessary call_rcu() */
-	wake_up_all(&ctx->wait);
+	closure_wake_up(&ctx->wait);
 
 	/*
 	 * It'd be more correct to do this in free_ioctx(), after all
@@ -1121,8 +1121,7 @@ void aio_complete(struct kiocb *iocb, long res, long res2)
 	 */
 	smp_mb();
 
-	if (waitqueue_active(&ctx->wait))
-		wake_up(&ctx->wait);
+	closure_wake_up(&ctx->wait);
 
 	percpu_ref_put(&ctx->reqs);
 }
@@ -1237,26 +1236,15 @@ static long read_events(struct kioctx *ctx, long min_nr, long nr,
 			return -EFAULT;
 
 		until = timespec_to_ktime(ts);
+
+		if (until.tv64)
+			until = ktime_add(ktime_get(), until);
 	}
 
-	/*
-	 * Note that aio_read_events() is being called as the conditional - i.e.
-	 * we're calling it after prepare_to_wait() has set task state to
-	 * TASK_INTERRUPTIBLE.
-	 *
-	 * But aio_read_events() can block, and if it blocks it's going to flip
-	 * the task state back to TASK_RUNNING.
-	 *
-	 * This should be ok, provided it doesn't flip the state back to
-	 * TASK_RUNNING and return 0 too much - that causes us to spin. That
-	 * will only happen if the mutex_lock() call blocks, and we then find
-	 * the ringbuffer empty. So in practice we should be ok, but it's
-	 * something to be aware of when touching this code.
-	 */
 	if (until.tv64 == 0)
 		aio_read_events(ctx, min_nr, nr, event, &ret);
 	else
-		wait_event_interruptible_hrtimeout(ctx->wait,
+		closure_wait_event_hrtimeout(&ctx->wait,
 				aio_read_events(ctx, min_nr, nr, event, &ret),
 				until);
 
include/linux/closure.h new file +458 -0

458 lines not on this page · raw message

lib/Kconfig.debug +8 -0
index 5f2ce61..453dc68 100644
@@ -1308,6 +1308,14 @@ config DEBUG_BLOCK_EXT_DEVT
 
 	  Say N if you are unsure.
 
+config CLOSURE_DEBUG
+	bool "Debug closures"
+	select DEBUG_FS
+	---help---
+	Keeps all active closures in a linked list and provides a debugfs
+	interface to list them, which makes it possible to see asynchronous
+	operations that get stuck.
+
 config NOTIFIER_ERROR_INJECTION
 	tristate "Notifier error injection"
 	depends on DEBUG_KERNEL
lib/Makefile +1 -1
index 3c3b30b..d27b7cf 100644
@@ -26,7 +26,7 @@ obj-y += bcd.o div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \
 	 bust_spinlocks.o hexdump.o kasprintf.o bitmap.o scatterlist.o \
 	 gcd.o lcm.o list_sort.o uuid.o flex_array.o iovec.o clz_ctz.o \
 	 bsearch.o find_last_bit.o find_next_bit.o llist.o memweight.o kfifo.o \
-	 percpu-refcount.o percpu_ida.o rhashtable.o reciprocal_div.o
+	 percpu-refcount.o percpu_ida.o rhashtable.o reciprocal_div.o closure.o
 obj-y += string_helpers.o
 obj-$(CONFIG_TEST_STRING_HELPERS) += test-string_helpers.o
 obj-y += kstrtox.o
lib/closure.c new file +285 -0

285 lines not on this page · raw message

mm/memory.c +2 -2
index 649e7d4..ca920d1 100644
@@ -2378,12 +2378,12 @@ void unmap_mapping_range(struct address_space *mapping,
 		details.last_index = ULONG_MAX;
 
 
-	i_mmap_lock_read(mapping);
+	i_mmap_lock_write(mapping);
 	if (unlikely(!RB_EMPTY_ROOT(&mapping->i_mmap)))
 		unmap_mapping_range_tree(&mapping->i_mmap, &details);
 	if (unlikely(!list_empty(&mapping->i_mmap_nonlinear)))
 		unmap_mapping_range_list(&mapping->i_mmap_nonlinear, &details);
-	i_mmap_unlock_read(mapping);
+	i_mmap_unlock_write(mapping);
 }
 EXPORT_SYMBOL(unmap_mapping_range);
 
net/bluetooth/6lowpan.c +0 -1
index 76617be..c989253 100644
@@ -390,7 +390,6 @@ static int recv_pkt(struct sk_buff *skb, struct net_device *dev,
 
 drop:
 	dev->stats.rx_dropped++;
-	kfree_skb(skb);
 	return NET_RX_DROP;
 }
 
net/bluetooth/bnep/core.c +3 -0
index 85bcc21..ce82722d 100644
@@ -533,6 +533,9 @@ int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock)
 
 	BT_DBG("");
 
+	if (!l2cap_is_socket(sock))
+		return -EBADFD;
+
 	baswap((void *) dst, &l2cap_pi(sock->sk)->chan->dst);
 	baswap((void *) src, &l2cap_pi(sock->sk)->chan->src);
 
net/bluetooth/cmtp/core.c +3 -0
index 67fe5e8..278a194 100644
@@ -334,6 +334,9 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
 
 	BT_DBG("");
 
+	if (!l2cap_is_socket(sock))
+		return -EBADFD;
+
 	session = kzalloc(sizeof(struct cmtp_session), GFP_KERNEL);
 	if (!session)
 		return -ENOMEM;
net/bluetooth/hci_event.c +12 -4
index 39a5c8a..3f2e8b8 100644
@@ -242,7 +242,8 @@ static void hci_cc_read_local_name(struct hci_dev *hdev, struct sk_buff *skb)
 	if (rp->status)
 		return;
 
-	if (test_bit(HCI_SETUP, &hdev->dev_flags))
+	if (test_bit(HCI_SETUP, &hdev->dev_flags) ||
+	    test_bit(HCI_CONFIG, &hdev->dev_flags))
 		memcpy(hdev->dev_name, rp->name, HCI_MAX_NAME_LENGTH);
 }
 
@@ -509,7 +510,8 @@ static void hci_cc_read_local_version(struct hci_dev *hdev, struct sk_buff *skb)
 	if (rp->status)
 		return;
 
-	if (test_bit(HCI_SETUP, &hdev->dev_flags)) {
+	if (test_bit(HCI_SETUP, &hdev->dev_flags) ||
+	    test_bit(HCI_CONFIG, &hdev->dev_flags)) {
 		hdev->hci_ver = rp->hci_ver;
 		hdev->hci_rev = __le16_to_cpu(rp->hci_rev);
 		hdev->lmp_ver = rp->lmp_ver;
@@ -528,7 +530,8 @@ static void hci_cc_read_local_commands(struct hci_dev *hdev,
 	if (rp->status)
 		return;
 
-	if (test_bit(HCI_SETUP, &hdev->dev_flags))
+	if (test_bit(HCI_SETUP, &hdev->dev_flags) ||
+	    test_bit(HCI_CONFIG, &hdev->dev_flags))
 		memcpy(hdev->commands, rp->commands, sizeof(hdev->commands));
 }
 
@@ -2194,7 +2197,12 @@ static void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
 		return;
 	}
 
-	if (!test_bit(HCI_CONNECTABLE, &hdev->dev_flags) &&
+	/* Require HCI_CONNECTABLE or a whitelist entry to accept the
+	 * connection. These features are only touched through mgmt so
+	 * only do the checks if HCI_MGMT is set.
+	 */
+	if (test_bit(HCI_MGMT, &hdev->dev_flags) &&
+	    !test_bit(HCI_CONNECTABLE, &hdev->dev_flags) &&
 	    !hci_bdaddr_list_lookup(&hdev->whitelist, &ev->bdaddr,
 				    BDADDR_BREDR)) {
 		    hci_reject_conn(hdev, &ev->bdaddr);
net/bluetooth/hidp/core.c +2 -1
index cc25d0b..07348e1 100644
@@ -1314,13 +1314,14 @@ int hidp_connection_add(struct hidp_connadd_req *req,
 {
 	struct hidp_session *session;
 	struct l2cap_conn *conn;
-	struct l2cap_chan *chan = l2cap_pi(ctrl_sock->sk)->chan;
+	struct l2cap_chan *chan;
 	int ret;
 
 	ret = hidp_verify_sockets(ctrl_sock, intr_sock);
 	if (ret)
 		return ret;
 
+	chan = l2cap_pi(ctrl_sock->sk)->chan;
 	conn = NULL;
 	l2cap_chan_lock(chan);
 	if (chan->conn)
scripts/package/builddeb +16 -3
index 5972624..7a60d1a 100755
@@ -217,9 +217,22 @@ else
 fi
 maintainer="$name <$email>"
 
+# Try to determine distribution
+if [ -e $(which lsb_release) ]; then
+       codename=$(lsb_release --codename --short)
+       if [ "$codename" != "" ]; then
+		distribution=$codename
+       else
+		distribution="UNRELEASED"
+		echo "WARNING: The distribution could NOT be determined!"
+       fi
+else
+       echo "HINT: Install lsb_release binary, this helps to identify your distribution!"
+fi
+
 # Generate a simple changelog template
 cat <<EOF > debian/changelog
-linux-upstream ($packageversion) unstable; urgency=low
+linux-upstream ($packageversion) $distribution; urgency=low
 
   * Custom built Linux kernel.
 
@@ -233,10 +246,10 @@ This is a packacked upstream version of the Linux kernel.
 The sources may be found at most Linux ftp sites, including:
 ftp://ftp.kernel.org/pub/linux/kernel
 
-Copyright: 1991 - 2009 Linus Torvalds and others.
+Copyright: 1991 - 2014 Linus Torvalds and others.
 
 The git repository for mainline kernel development is at:
-git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
+git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
#10 lore raw
Quoted 47 lines · Sedat Dilek
Quoted 34 lines · Kent Overstreet
Quoted 4 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

Ben just told me about this issue.

IMO, the way the code is structured now is correct, I would argue the problem is with the way wait_event() works - they way they have to mess with the global-ish task state when adding a wait_queue_t to a wait_queue_head (who came up with these names?)

Bcache's closures don't have this problem; a closure being on a waitlist has nothing to do with task state - instead, closures keep a counter of the number of things they're waiting on. You can add a closure to a waitlist and then separately, later, do a closure_sync() to wait on the closure's remaining count to hit 0.

Bcache in fact used to have a closure_wait_event() macro that was exactly analogous to wait_event() but using a closure - I forget what it was used for, but at some point it wasn't used by bcache anymore and got deleted.

I just cooked up closure_sync_interruptible_hrtimeout() and the corresponding wait_event macro and then converted aio to use it. This would IMO be a much cleaner solution to the original problem.

The one disadvantage I know of, with the current code, is that closure waitlists are singly linked - so they can be lockless, but that means you wake up/remove a single closure from a waitlist, you have to do wake_up_all() - which is an obvious disadvantage w.r.t. spurious wakeups. If people like this approach though I'll just make closure waitlists doubly linked with a lock (which is something I'd been considering doing anyways)

Quoted 6 lines

Here's the patch to the aio code - the rest of the series is in a branch at:
http://evilpiepirate.org/git/linux-bcache.git/log/?h=aio_ring_fix

Disclaimer: code has only been _lightly_ tested so far, the closure hrtimer stuff was somewhat nontrivial

How can someone test the code?
Use xfstests? Other tools (to test aio)?

How do I turn on the "debugging"?

Quoted 8 lines

I am testing on top of Linux v3.19-rc1 with some "known" mm and bth fixes.

I have...

CONFIG_CLOSURE_DEBUG=y

My full kernel-config and patchset are attached.

[ CC Jens and Ming Lei ]

I have re-tested to reproduce the call-trace [0] especially observed when running fio here.

My base was again next-20141231 with block.git#for-next which has now loop-mq included.

I pulled in your aio_ring_fix Git branch [1] on top of my "loop-mq" kernel.

My fio line looks like this...

# LC_ALL=C rm -v -f randread.*

# sync && sync && sync
# echo 3 > /proc/sys/vm/drop_caches
# LC_ALL=C fio-2.2.4 --name=randread --rw=randread --bs=4k
--ioengine=libaio --iodepth=64 --direct=1 --numjobs=1 --size=2048M

...with sizes of 1G and 2G.

This makes the call-trace go away when testing extensively with new fio v2.2.4 [2] (10x with size=1G and 1x size=2G).

Attached are my kernel-config, patch on top of next-20141231 and dmesg.

Hope this feedback helps.

- Sedat -

[0] https://lkml.org/lkml/2015/1/1/18
[1] http://evilpiepirate.org/git/linux-bcache.git/log/?h=aio_ring_fix
[2] http://git.kernel.org/cgit/linux/kernel/git/axboe/fio.git/tag/?id=fio-2.2.4

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.19.0-rc2-next-20141231.7-loopmq-small ([email protected]@fambox) (gcc version 4.9.2 (Ubuntu 4.9.2-0ubuntu1~12.04) ) #1 SMP Sun Jan 4 09:46:47 CET 2015
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.19.0-rc2-next-20141231.7-loopmq-small root=UUID=001AADA61AAD9964 loop=/ubuntu/disks/root.disk ro
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] Disabled fast string operations
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d7ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d800-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000201fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020200000-0x000000003fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000040000000-0x00000000401fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000040200000-0x00000000d9c9efff] usable
[    0.000000] BIOS-e820: [mem 0x00000000d9c9f000-0x00000000dae7efff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000dae7f000-0x00000000daf9efff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000daf9f000-0x00000000daffefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000dafff000-0x00000000daffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000db000000-0x00000000df9fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed08000-0x00000000fed08fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed10000-0x00000000fed19fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffd80000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000011fdfffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.6 present.
[    0.000000] DMI: SAMSUNG ELECTRONICS CO., LTD. 530U3BI/530U4BI/530U4BH/530U3BI/530U4BI/530U4BH, BIOS 13XK 03/28/2013
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] AGP: No AGP bridge found
[    0.000000] e820: last_pfn = 0x11fe00 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 000000000 mask F80000000 write-back
[    0.000000]   1 base 080000000 mask FC0000000 write-back
[    0.000000]   2 base 0C0000000 mask FE0000000 write-back
[    0.000000]   3 base 0DC000000 mask FFC000000 uncachable
[    0.000000]   4 base 0DB000000 mask FFF000000 uncachable
[    0.000000]   5 base 100000000 mask FE0000000 write-back
[    0.000000]   6 base 11FE00000 mask FFFE00000 uncachable
[    0.000000]   7 base 0FFC00000 mask FFFC00000 write-protect
[    0.000000]   8 disabled
[    0.000000]   9 disabled
[    0.000000] PAT configuration [0-7]: WB  WC  UC- UC  WB  WC  UC- UC  
[    0.000000] e820: last_pfn = 0xdb000 max_arch_pfn = 0x400000000
[    0.000000] found SMP MP-table at [mem 0x000f00e0-0x000f00ef] mapped at [ffff8800000f00e0]
[    0.000000] Scanning 1 areas for low memory corruption
[    0.000000] Base memory trampoline at [ffff880000097000] 97000 size 24576
[    0.000000] reserving inaccessible SNB gfx pages
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] BRK [0x02cad000, 0x02cadfff] PGTABLE
[    0.000000] BRK [0x02cae000, 0x02caefff] PGTABLE
[    0.000000] BRK [0x02caf000, 0x02caffff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x11fc00000-0x11fdfffff]
[    0.000000]  [mem 0x11fc00000-0x11fdfffff] page 2M
[    0.000000] BRK [0x02cb0000, 0x02cb0fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x11c000000-0x11fbfffff]
[    0.000000]  [mem 0x11c000000-0x11fbfffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x100000000-0x11bffffff]
[    0.000000]  [mem 0x100000000-0x11bffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x00100000-0x1fffffff]
[    0.000000]  [mem 0x00100000-0x001fffff] page 4k
[    0.000000]  [mem 0x00200000-0x1fffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x20200000-0x3fffffff]
[    0.000000]  [mem 0x20200000-0x3fffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x40200000-0xd9c9efff]
[    0.000000]  [mem 0x40200000-0xd9bfffff] page 2M
[    0.000000]  [mem 0xd9c00000-0xd9c9efff] page 4k
[    0.000000] BRK [0x02cb1000, 0x02cb1fff] PGTABLE
[    0.000000] BRK [0x02cb2000, 0x02cb2fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0xdafff000-0xdaffffff]
[    0.000000]  [mem 0xdafff000-0xdaffffff] page 4k
[    0.000000] RAMDISK: [mem 0x37936000-0x37c92fff]
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI: RSDP 0x00000000000F0100 000024 (v02 SECCSD)
[    0.000000] ACPI: XSDT 0x00000000DAFFE170 00008C (v01 SECCSD LH43STAR 00000002 PTEC 00000002)
[    0.000000] ACPI: FACP 0x00000000DAFEF000 00010C (v05 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: DSDT 0x00000000DAFF2000 0083AC (v02 SECCSD SNB-CPT  00000000 INTL 20061109)
[    0.000000] ACPI: FACS 0x00000000DAF47000 000040
[    0.000000] ACPI: SLIC 0x00000000DAFFD000 000176 (v01 SECCSD LH43STAR 00000002 PTEC 00000001)
[    0.000000] ACPI: SSDT 0x00000000DAFFB000 001068 (v01 SECCSD PtidDevc 00001000 INTL 20061109)
[    0.000000] ACPI: ASF! 0x00000000DAFF1000 0000A5 (v32 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: HPET 0x00000000DAFEE000 000038 (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: APIC 0x00000000DAFED000 000098 (v03 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: MCFG 0x00000000DAFEC000 00003C (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: SSDT 0x00000000DAFEB000 000804 (v01 PmRef  Cpu0Ist  00003000 INTL 20061109)
[    0.000000] ACPI: SSDT 0x00000000DAFEA000 000996 (v01 PmRef  CpuPm    00003000 INTL 20061109)
[    0.000000] ACPI: UEFI 0x00000000DAFE9000 00003E (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: UEFI 0x00000000DAFE8000 000042 (v01 PTL    COMBUF   00000001 PTL  00000001)
[    0.000000] ACPI: UEFI 0x00000000DAFE7000 00026A (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: SSDT 0x00000000DAFE6000 0000D0 (v01 Iffs   IffsAsl  00003000 INTL 20061109)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] No NUMA configuration found
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000011fdfffff]
[    0.000000] NODE_DATA(0) allocated [mem 0x11fdf8000-0x11fdfcfff]
[    0.000000]  [ffffea0000000000-ffffea00047fffff] PMD -> [ffff88011b400000-ffff88011f3fffff] on node 0
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   [mem 0x100000000-0x11fdfffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0009cfff]
[    0.000000]   node   0: [mem 0x00100000-0x1fffffff]
[    0.000000]   node   0: [mem 0x20200000-0x3fffffff]
[    0.000000]   node   0: [mem 0x40200000-0xd9c9efff]
[    0.000000]   node   0: [mem 0xdafff000-0xdaffffff]
[    0.000000]   node   0: [mem 0x100000000-0x11fdfffff]
[    0.000000] Initmem setup node 0 [mem 0x00001000-0x11fdfffff]
[    0.000000] On node 0 totalpages: 1021500
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 156 pages reserved
[    0.000000]   DMA zone: 3996 pages, LIFO batch:0
[    0.000000]   DMA32 zone: 13859 pages used for memmap
[    0.000000]   DMA32 zone: 886944 pages, LIFO batch:31
[    0.000000]   Normal zone: 2040 pages used for memmap
[    0.000000]   Normal zone: 130560 pages, LIFO batch:31
[    0.000000] Reserving Intel graphics stolen memory at 0xdba00000-0xdf9fffff
[    0.000000] ACPI: PM-Timer IO Port: 0x408
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x02] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x03] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.000000] ACPI: IOAPIC (id[0x0e] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 14, version 32, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a301 base: 0xfed00000
[    0.000000] smpboot: Allowing 8 CPUs, 4 hotplug CPUs
[    0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009d000-0x0009dfff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000dffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000e0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x20000000-0x201fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x40000000-0x401fffff]
[    0.000000] PM: Registered nosave memory: [mem 0xd9c9f000-0xdae7efff]
[    0.000000] PM: Registered nosave memory: [mem 0xdae7f000-0xdaf9efff]
[    0.000000] PM: Registered nosave memory: [mem 0xdaf9f000-0xdaffefff]
[    0.000000] PM: Registered nosave memory: [mem 0xdb000000-0xdf9fffff]
[    0.000000] PM: Registered nosave memory: [mem 0xdfa00000-0xf7ffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xf8000000-0xfbffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfc000000-0xfebfffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfec00000-0xfec00fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfec01000-0xfed07fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed08000-0xfed08fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed09000-0xfed0ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed10000-0xfed19fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed1a000-0xfed1bfff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed1c000-0xfed1ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed20000-0xfedfffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfee00000-0xfee00fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfee01000-0xffd7ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xffd80000-0xffffffff]
[    0.000000] e820: [mem 0xdfa00000-0xf7ffffff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:8 nr_node_ids:1
[    0.000000] PERCPU: Embedded 32 pages/cpu @ffff88011fa00000 s91520 r8192 d31360 u262144
[    0.000000] pcpu-alloc: s91520 r8192 d31360 u262144 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 
[    0.000000] Built 1 zonelists in Node order, mobility grouping on.  Total pages: 1005381
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.19.0-rc2-next-20141231.7-loopmq-small root=UUID=001AADA61AAD9964 loop=/ubuntu/disks/root.disk ro
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] xsave: enabled xstate_bv 0x7, cntxt size 0x340 using standard form
[    0.000000] AGP: Checking aperture...
[    0.000000] AGP: No AGP bridge found
[    0.000000] Calgary: detecting Calgary via BIOS EBDA area
[    0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
[    0.000000] Memory: 3919072K/4086000K available (7599K kernel code, 1297K rwdata, 3376K rodata, 1380K init, 14360K bss, 166928K reserved, 0K cma-reserved)
[    0.000000] Hierarchical RCU implementation.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=8.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=8
[    0.000000] NR_IRQS:16640 nr_irqs:488 16
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[    0.000000] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.000000] ... MAX_LOCK_DEPTH:          48
[    0.000000] ... MAX_LOCKDEP_KEYS:        8191
[    0.000000] ... CLASSHASH_SIZE:          4096
[    0.000000] ... MAX_LOCKDEP_ENTRIES:     32768
[    0.000000] ... MAX_LOCKDEP_CHAINS:      65536
[    0.000000] ... CHAINHASH_SIZE:          32768
[    0.000000]  memory used by lock dependency info: 8159 kB
[    0.000000]  per task-struct memory footprint: 1920 bytes
[    0.000000] hpet clockevent registered
[    0.000000] tsc: Fast TSC calibration using PIT
[    0.000000] tsc: Detected 1596.477 MHz processor
[    0.000072] Calibrating delay loop (skipped), value calculated using timer frequency.. 3192.95 BogoMIPS (lpj=6385908)
[    0.000080] pid_max: default: 32768 minimum: 301
[    0.000101] ACPI: Core revision 20141107
[    0.018206] ACPI: All ACPI Tables successfully acquired
[    0.019853] Security Framework initialized
[    0.019865] AppArmor: AppArmor initialized
[    0.019869] Yama: becoming mindful.
[    0.020791] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
[    0.022073] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.022546] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
[    0.022566] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes)
[    0.023588] Initializing cgroup subsys memory
[    0.023624] Initializing cgroup subsys devices
[    0.023654] Initializing cgroup subsys freezer
[    0.023681] Initializing cgroup subsys blkio
[    0.023688] Initializing cgroup subsys perf_event
[    0.023697] Initializing cgroup subsys hugetlb
[    0.023750] Disabled fast string operations
[    0.023754] CPU: Physical Processor ID: 0
[    0.023757] CPU: Processor Core ID: 0
[    0.023764] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.023764] ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)
[    0.023772] mce: CPU supports 7 MCE banks
[    0.023787] CPU0: Thermal monitoring enabled (TM1)
[    0.023807] Last level iTLB entries: 4KB 512, 2MB 8, 4MB 8
[    0.023807] Last level dTLB entries: 4KB 512, 2MB 32, 4MB 32, 1GB 0
[    0.024006] Freeing SMP alternatives memory: 24K (ffffffff81e9f000 - ffffffff81ea5000)
[    0.025330] ftrace: allocating 28222 entries in 111 pages
[    0.041966] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.081632] smpboot: CPU0: Intel(R) Core(TM) i5-2467M CPU @ 1.60GHz (fam: 06, model: 2a, stepping: 07)
[    0.081648] TSC deadline timer enabled
[    0.081692] Performance Events: PEBS fmt1+, 16-deep LBR, SandyBridge events, full-width counters, Intel PMU driver.
[    0.081729] ... version:                3
[    0.081732] ... bit width:              48
[    0.081735] ... generic registers:      4
[    0.081737] ... value mask:             0000ffffffffffff
[    0.081740] ... max period:             0000ffffffffffff
[    0.081743] ... fixed-purpose events:   3
[    0.081746] ... event mask:             000000070000000f
[    0.083369] x86: Booting SMP configuration:
[    0.083374] .... node  #0, CPUs:      #1
[    0.094327] Disabled fast string operations
[    0.096765] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[    0.097126]  #2
[    0.108074] Disabled fast string operations
[    0.110551]  #3<6>[    0.121502] Disabled fast string operations
[    0.123653] x86: Booted up 1 node, 4 CPUs
[    0.123662] smpboot: Total of 4 processors activated (12771.81 BogoMIPS)
[    0.128355] devtmpfs: initialized
[    0.133074] evm: security.selinux
[    0.133078] evm: security.SMACK64
[    0.133080] evm: security.capability
[    0.133221] PM: Registering ACPI NVS region [mem 0xdae7f000-0xdaf9efff] (1179648 bytes)
[    0.134628] NET: Registered protocol family 16
[    0.143740] cpuidle: using governor ladder
[    0.154231] cpuidle: using governor menu
[    0.154398] ACPI: bus type PCI registered
[    0.154652] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xf8000000-0xfbffffff] (base 0xf8000000)
[    0.154659] PCI: MMCONFIG at [mem 0xf8000000-0xfbffffff] reserved in E820
[    0.154789] PCI: Using configuration type 1 for base access
[    0.167691] ACPI: Added _OSI(Module Device)
[    0.167698] ACPI: Added _OSI(Processor Device)
[    0.167702] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.167705] ACPI: Added _OSI(Processor Aggregator Device)
[    0.179335] ACPI: Executed 1 blocks of module-level executable AML code
[    0.186128] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[    0.190502] ACPI: Dynamic OEM Table Load:
[    0.190525] ACPI: SSDT 0xFFFF88011A794000 000688 (v01 PmRef  Cpu0Cst  00003001 INTL 20061109)
[    0.192480] ACPI: Dynamic OEM Table Load:
[    0.192500] ACPI: SSDT 0xFFFF88011A7C0800 000303 (v01 PmRef  ApIst    00003000 INTL 20061109)
[    0.194320] ACPI: Dynamic OEM Table Load:
[    0.194340] ACPI: SSDT 0xFFFF88011A7BDA00 000119 (v01 PmRef  ApCst    00003000 INTL 20061109)
[    0.198636] ACPI: Interpreter enabled
[    0.198659] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20141107/hwxface-580)
[    0.198710] ACPI: (supports S0 S1 S3 S4 S5)
[    0.198714] ACPI: Using IOAPIC for interrupt routing
[    0.198774] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.215918] ACPI: Power Resource [FN00] (off)
[    0.216284] ACPI: Power Resource [FN01] (off)
[    0.216554] ACPI: Power Resource [FN02] (off)
[    0.216821] ACPI: Power Resource [FN03] (off)
[    0.217095] ACPI: Power Resource [FN04] (off)
[    0.219109] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-3e])
[    0.219120] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[    0.219609] \_SB_.PCI0:_OSC invalid UUID
[    0.219612] _OSC request data:1 1f 0 
[    0.219617] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[    0.220785] PCI host bridge to bus 0000:00
[    0.220792] pci_bus 0000:00: root bus resource [bus 00-3e]
[    0.220797] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7]
[    0.220801] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.220805] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.220809] pci_bus 0000:00: root bus resource [mem 0xdfa00000-0xfeafffff]
[    0.220813] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed44fff]
[    0.220862] pci 0000:00:00.0: [8086:0104] type 00 class 0x060000
[    0.221196] pci 0000:00:02.0: [8086:0116] type 00 class 0x030000
[    0.221217] pci 0000:00:02.0: reg 0x10: [mem 0xf0000000-0xf03fffff 64bit]
[    0.221228] pci 0000:00:02.0: reg 0x18: [mem 0xe0000000-0xefffffff 64bit pref]
[    0.221236] pci 0000:00:02.0: reg 0x20: [io  0x3000-0x303f]
[    0.221615] pci 0000:00:16.0: [8086:1c3a] type 00 class 0x078000
[    0.221658] pci 0000:00:16.0: reg 0x10: [mem 0xf0705000-0xf070500f 64bit]
[    0.221806] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold
[    0.222120] pci 0000:00:1a.0: [8086:1c2d] type 00 class 0x0c0320
[    0.222159] pci 0000:00:1a.0: reg 0x10: [mem 0xf070a000-0xf070a3ff]
[    0.222335] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
[    0.222596] pci 0000:00:1b.0: [8086:1c20] type 00 class 0x040300
[    0.222632] pci 0000:00:1b.0: reg 0x10: [mem 0xf0700000-0xf0703fff 64bit]
[    0.222802] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.222965] pci 0000:00:1b.0: System wakeup disabled by ACPI
[    0.223101] pci 0000:00:1c.0: [8086:1c10] type 01 class 0x060400
[    0.223274] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.223408] pci 0000:00:1c.0: System wakeup disabled by ACPI
[    0.223545] pci 0000:00:1c.3: [8086:1c16] type 01 class 0x060400
[    0.223717] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
[    0.223850] pci 0000:00:1c.3: System wakeup disabled by ACPI
[    0.223985] pci 0000:00:1c.4: [8086:1c18] type 01 class 0x060400
[    0.224162] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold
[    0.224429] pci 0000:00:1d.0: [8086:1c26] type 00 class 0x0c0320
[    0.224467] pci 0000:00:1d.0: reg 0x10: [mem 0xf0709000-0xf07093ff]
[    0.224642] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[    0.224894] pci 0000:00:1f.0: [8086:1c49] type 00 class 0x060100
[    0.225301] pci 0000:00:1f.2: [8086:1c03] type 00 class 0x010601
[    0.225342] pci 0000:00:1f.2: reg 0x10: [io  0x3088-0x308f]
[    0.225358] pci 0000:00:1f.2: reg 0x14: [io  0x3094-0x3097]
[    0.225375] pci 0000:00:1f.2: reg 0x18: [io  0x3080-0x3087]
[    0.225391] pci 0000:00:1f.2: reg 0x1c: [io  0x3090-0x3093]
[    0.225407] pci 0000:00:1f.2: reg 0x20: [io  0x3060-0x307f]
[    0.225424] pci 0000:00:1f.2: reg 0x24: [mem 0xf0708000-0xf07087ff]
[    0.225537] pci 0000:00:1f.2: PME# supported from D3hot
[    0.225784] pci 0000:00:1f.3: [8086:1c22] type 00 class 0x0c0500
[    0.225815] pci 0000:00:1f.3: reg 0x10: [mem 0xf0704000-0xf07040ff 64bit]
[    0.225871] pci 0000:00:1f.3: reg 0x20: [io  0xefa0-0xefbf]
[    0.226528] pci 0000:01:00.0: [8086:0091] type 00 class 0x028000
[    0.226904] pci 0000:01:00.0: reg 0x10: [mem 0xf0600000-0xf0601fff 64bit]
[    0.228679] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[    0.228978] pci 0000:01:00.0: System wakeup disabled by ACPI
[    0.234091] pci 0000:00:1c.0: PCI bridge to [bus 01]
[    0.234105] pci 0000:00:1c.0:   bridge window [mem 0xf0600000-0xf06fffff]
[    0.234345] pci 0000:02:00.0: [10ec:8168] type 00 class 0x020000
[    0.234437] pci 0000:02:00.0: reg 0x10: [io  0x2000-0x20ff]
[    0.234574] pci 0000:02:00.0: reg 0x18: [mem 0xf0404000-0xf0404fff 64bit pref]
[    0.234659] pci 0000:02:00.0: reg 0x20: [mem 0xf0400000-0xf0403fff 64bit pref]
[    0.235131] pci 0000:02:00.0: supports D1 D2
[    0.235133] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.235284] pci 0000:02:00.0: System wakeup disabled by ACPI
[    0.241992] pci 0000:00:1c.3: PCI bridge to [bus 02]
[    0.242001] pci 0000:00:1c.3:   bridge window [io  0x2000-0x2fff]
[    0.242016] pci 0000:00:1c.3:   bridge window [mem 0xf0400000-0xf04fffff 64bit pref]
[    0.242220] pci 0000:03:00.0: [1b21:1042] type 00 class 0x0c0330
[    0.242268] pci 0000:03:00.0: reg 0x10: [mem 0xf0500000-0xf0507fff 64bit]
[    0.242544] pci 0000:03:00.0: PME# supported from D3hot D3cold
[    0.242789] pci 0000:00:1c.4: PCI bridge to [bus 03]
[    0.242802] pci 0000:00:1c.4:   bridge window [mem 0xf0500000-0xf05fffff]
[    0.244502] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 10 *11 12 14 15)
[    0.244642] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.244781] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 *10 11 12 14 15)
[    0.244915] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 *10 11 12 14 15)
[    0.245059] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 10 11 12 14 15) *9
[    0.245194] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.245330] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 10 *11 12 14 15)
[    0.245463] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 10 11 12 14 15) *9
[    0.246632] ACPI: Enabled 4 GPEs in block 00 to 3F
[    0.246755] ACPI : EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62
[    0.247076] ACPI : EC: 0 stale EC events cleared
[    0.247711] vgaarb: setting as boot device: PCI:0000:00:02.0
[    0.247717] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.247727] vgaarb: loaded
[    0.247730] vgaarb: bridge control possible 0000:00:02.0
[    0.248339] SCSI subsystem initialized
[    0.248483] libata version 3.00 loaded.
[    0.248564] ACPI: bus type USB registered
[    0.248622] usbcore: registered new interface driver usbfs
[    0.248654] usbcore: registered new interface driver hub
[    0.248717] usbcore: registered new device driver usb
[    0.249087] PCI: Using ACPI for IRQ routing
[    0.252653] PCI: pci_cache_line_size set to 64 bytes
[    0.252782] e820: reserve RAM buffer [mem 0x0009d800-0x0009ffff]
[    0.252790] e820: reserve RAM buffer [mem 0xd9c9f000-0xdbffffff]
[    0.252793] e820: reserve RAM buffer [mem 0xdb000000-0xdbffffff]
[    0.252795] e820: reserve RAM buffer [mem 0x11fe00000-0x11fffffff]
[    0.253407] NetLabel: Initializing
[    0.253411] NetLabel:  domain hash size = 128
[    0.253414] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.253462] NetLabel:  unlabeled traffic allowed by default
[    0.253622] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[    0.253633] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[    0.256723] Switched to clocksource hpet
[    0.295492] AppArmor: AppArmor Filesystem Enabled
[    0.295717] pnp: PnP ACPI init
[    0.296335] system 00:00: [io  0x0680-0x069f] has been reserved
[    0.296342] system 00:00: [io  0x1000-0x100f] has been reserved
[    0.296347] system 00:00: [io  0x5000-0x5003] has been reserved
[    0.296352] system 00:00: [io  0xffff] has been reserved
[    0.296357] system 00:00: [io  0x0400-0x0453] could not be reserved
[    0.296362] system 00:00: [io  0x0458-0x047f] has been reserved
[    0.296367] system 00:00: [io  0x0500-0x057f] has been reserved
[    0.296372] system 00:00: [io  0x0a00-0x0a0f] has been reserved
[    0.296377] system 00:00: [io  0x164e-0x164f] has been reserved
[    0.296382] system 00:00: [io  0x5000-0x500f] could not be reserved
[    0.296414] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.296500] pnp 00:01: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.296633] system 00:02: [io  0x0454-0x0457] has been reserved
[    0.296641] system 00:02: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active)
[    0.296768] pnp 00:03: Plug and Play ACPI device, IDs PNP0303 (active)
[    0.296883] pnp 00:04: Plug and Play ACPI device, IDs ETD0b00 SYN0002 PNP0f13 (active)
[    0.297228] system 00:05: [mem 0xfed1c000-0xfed1ffff] has been reserved
[    0.297234] system 00:05: [mem 0xfed10000-0xfed17fff] has been reserved
[    0.297239] system 00:05: [mem 0xfed18000-0xfed18fff] has been reserved
[    0.297244] system 00:05: [mem 0xfed19000-0xfed19fff] has been reserved
[    0.297249] system 00:05: [mem 0xf8000000-0xfbffffff] has been reserved
[    0.297254] system 00:05: [mem 0xfed20000-0xfed3ffff] has been reserved
[    0.297259] system 00:05: [mem 0xfed90000-0xfed93fff] has been reserved
[    0.297264] system 00:05: [mem 0xfed45000-0xfed8ffff] has been reserved
[    0.297269] system 00:05: [mem 0xff000000-0xffffffff] could not be reserved
[    0.297275] system 00:05: [mem 0xfee00000-0xfeefffff] could not be reserved
[    0.297282] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.298133] system 00:06: Plug and Play ACPI device, IDs PNP0c01 (active)
[    0.298194] pnp: PnP ACPI: found 7 devices
[    0.308429] pci 0000:00:1c.0: PCI bridge to [bus 01]
[    0.308443] pci 0000:00:1c.0:   bridge window [mem 0xf0600000-0xf06fffff]
[    0.308460] pci 0000:00:1c.3: PCI bridge to [bus 02]
[    0.308466] pci 0000:00:1c.3:   bridge window [io  0x2000-0x2fff]
[    0.308481] pci 0000:00:1c.3:   bridge window [mem 0xf0400000-0xf04fffff 64bit pref]
[    0.308494] pci 0000:00:1c.4: PCI bridge to [bus 03]
[    0.308504] pci 0000:00:1c.4:   bridge window [mem 0xf0500000-0xf05fffff]
[    0.308522] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7]
[    0.308524] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff]
[    0.308526] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
[    0.308528] pci_bus 0000:00: resource 7 [mem 0xdfa00000-0xfeafffff]
[    0.308530] pci_bus 0000:00: resource 8 [mem 0xfed40000-0xfed44fff]
[    0.308532] pci_bus 0000:01: resource 1 [mem 0xf0600000-0xf06fffff]
[    0.308535] pci_bus 0000:02: resource 0 [io  0x2000-0x2fff]
[    0.308537] pci_bus 0000:02: resource 2 [mem 0xf0400000-0xf04fffff 64bit pref]
[    0.308539] pci_bus 0000:03: resource 1 [mem 0xf0500000-0xf05fffff]
[    0.308638] NET: Registered protocol family 2
[    0.309141] TCP established hash table entries: 32768 (order: 6, 262144 bytes)
[    0.309582] TCP bind hash table entries: 32768 (order: 9, 2097152 bytes)
[    0.311826] TCP: Hash tables configured (established 32768 bind 32768)
[    0.311912] TCP: reno registered
[    0.311977] UDP hash table entries: 2048 (order: 6, 327680 bytes)
[    0.312324] UDP-Lite hash table entries: 2048 (order: 6, 327680 bytes)
[    0.312964] NET: Registered protocol family 1
[    0.312995] pci 0000:00:02.0: Video device with shadowed ROM
[    0.314465] PCI: CLS 64 bytes, default 64
[    0.314681] Trying to unpack rootfs image as initramfs...
[    0.395163] Freeing initrd memory: 3444K (ffff880037936000 - ffff880037c93000)
[    0.395183] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.395188] software IO TLB [mem 0xd5c9f000-0xd9c9f000] (64MB) mapped at [ffff8800d5c9f000-ffff8800d9c9efff]
[    0.395873] RAPL PMU detected, hw unit 2^-16 Joules, API unit is 2^-32 Joules, 3 fixed counters 163840 ms ovfl timer
[    0.396069] microcode: CPU0 sig=0x206a7, pf=0x10, revision=0x28
[    0.396088] microcode: CPU1 sig=0x206a7, pf=0x10, revision=0x28
[    0.396112] microcode: CPU2 sig=0x206a7, pf=0x10, revision=0x28
[    0.396140] microcode: CPU3 sig=0x206a7, pf=0x10, revision=0x28
[    0.396299] microcode: Microcode Update Driver: v2.00 <[email protected]>, Peter Oruba
[    0.396363] Scanning for low memory corruption every 60 seconds
[    0.397586] futex hash table entries: 2048 (order: 6, 262144 bytes)
[    0.397748] Initialise system trusted keyring
[    0.397864] audit: initializing netlink subsys (disabled)
[    0.397938] audit: type=2000 audit(1420365041.392:1): initialized
[    0.398831] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    0.399293] VFS: Disk quotas dquot_6.5.2
[    0.399332] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.400146] fuse init (API version 7.23)
[    0.401241] Key type asymmetric registered
[    0.401263] Asymmetric key parser 'x509' registered
[    0.401315] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    0.401448] io scheduler noop registered
[    0.401455] io scheduler deadline registered (default)
[    0.401484] io scheduler cfq registered
[    0.401490] start plist test
[    0.403927] end plist test
[    0.404953] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[    0.405084] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[    0.405281] intel_idle: MWAIT substates: 0x21120
[    0.405283] intel_idle: v0.4 model 0x2A
[    0.405284] intel_idle: lapic_timer_reliable_states 0xffffffff
[    0.406702] ACPI: AC Adapter [ADP1] (on-line)
[    0.407448] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
[    0.407491] ACPI: Lid Switch [LID0]
[    0.407610] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1
[    0.407652] ACPI: Power Button [PWRB]
[    0.407775] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
[    0.407783] ACPI: Power Button [PWRF]
[    0.410871] thermal LNXTHERM:00: registered as thermal_zone0
[    0.410877] ACPI: Thermal Zone [TZ00] (70 C)
[    0.411471] thermal LNXTHERM:01: registered as thermal_zone1
[    0.411476] ACPI: Thermal Zone [TZ01] (30 C)
[    0.411574] GHES: HEST is not enabled!
[    0.411849] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    0.419860] ACPI: Battery Slot [BAT1] (battery present)
[    0.419914] Linux agpgart interface v0.103
[    0.424509] brd: module loaded
[    0.428209] loop: module loaded
[    0.431873] ahci 0000:00:1f.2: version 3.0
[    0.432216] ahci 0000:00:1f.2: SSS flag set, parallel bus scan disabled
[    0.444751] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 6 Gbps 0x1b impl SATA mode
[    0.444770] ahci 0000:00:1f.2: flags: 64bit ncq sntf ilck stag pm led clo pio slum part ems sxs apst 
[    0.470755] scsi host0: ahci
[    0.471279] scsi host1: ahci
[    0.471701] scsi host2: ahci
[    0.472140] scsi host3: ahci
[    0.472465] scsi host4: ahci
[    0.472777] scsi host5: ahci
[    0.472929] ata1: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708100 irq 25
[    0.472936] ata2: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708180 irq 25
[    0.472940] ata3: DUMMY
[    0.472945] ata4: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708280 irq 25
[    0.472950] ata5: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708300 irq 25
[    0.472954] ata6: DUMMY
[    0.474233] libphy: Fixed MDIO Bus: probed
[    0.474547] tun: Universal TUN/TAP device driver, 1.6
[    0.474550] tun: (C) 1999-2004 Max Krasnyansky <[email protected]>
[    0.474743] PPP generic driver version 2.4.2
[    0.475091] xhci_hcd 0000:03:00.0: xHCI Host Controller
[    0.475257] xhci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 1
[    0.485685] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    0.485691] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.485696] usb usb1: Product: xHCI Host Controller
[    0.485700] usb usb1: Manufacturer: Linux 3.19.0-rc2-next-20141231.7-loopmq-small xhci-hcd
[    0.485705] usb usb1: SerialNumber: 0000:03:00.0
[    0.486429] hub 1-0:1.0: USB hub found
[    0.486506] hub 1-0:1.0: 2 ports detected
[    0.487301] xhci_hcd 0000:03:00.0: xHCI Host Controller
[    0.487314] xhci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 2
[    0.487487] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    0.487492] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.487497] usb usb2: Product: xHCI Host Controller
[    0.487500] usb usb2: Manufacturer: Linux 3.19.0-rc2-next-20141231.7-loopmq-small xhci-hcd
[    0.487505] usb usb2: SerialNumber: 0000:03:00.0
[    0.487917] hub 2-0:1.0: USB hub found
[    0.487969] hub 2-0:1.0: 2 ports detected
[    0.488413] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.488420] ehci-pci: EHCI PCI platform driver
[    0.488737] ehci-pci 0000:00:1a.0: EHCI Host Controller
[    0.488769] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 3
[    0.488794] ehci-pci 0000:00:1a.0: debug port 2
[    0.492718] ehci-pci 0000:00:1a.0: cache line size of 64 is not supported
[    0.492752] ehci-pci 0000:00:1a.0: irq 16, io mem 0xf070a000
[    0.504596] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
[    0.504696] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
[    0.504701] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.504706] usb usb3: Product: EHCI Host Controller
[    0.504709] usb usb3: Manufacturer: Linux 3.19.0-rc2-next-20141231.7-loopmq-small ehci_hcd
[    0.504714] usb usb3: SerialNumber: 0000:00:1a.0
[    0.505129] hub 3-0:1.0: USB hub found
[    0.505150] hub 3-0:1.0: 2 ports detected
[    0.505805] ehci-pci 0000:00:1d.0: EHCI Host Controller
[    0.505822] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 4
[    0.505849] ehci-pci 0000:00:1d.0: debug port 2
[    0.509766] ehci-pci 0000:00:1d.0: cache line size of 64 is not supported
[    0.509793] ehci-pci 0000:00:1d.0: irq 23, io mem 0xf0709000
[    0.520553] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[    0.520665] usb usb4: New USB device found, idVendor=1d6b, idProduct=0002
[    0.520669] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.520674] usb usb4: Product: EHCI Host Controller
[    0.520678] usb usb4: Manufacturer: Linux 3.19.0-rc2-next-20141231.7-loopmq-small ehci_hcd
[    0.520682] usb usb4: SerialNumber: 0000:00:1d.0
[    0.521084] hub 4-0:1.0: USB hub found
[    0.521107] hub 4-0:1.0: 2 ports detected
[    0.521453] ehci-platform: EHCI generic platform driver
[    0.521486] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.521502] ohci-pci: OHCI PCI platform driver
[    0.521534] ohci-platform: OHCI generic platform driver
[    0.521558] uhci_hcd: USB Universal Host Controller Interface driver
[    0.521675] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:EPAD] at 0x60,0x64 irq 1,12
[    0.530929] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.530978] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.531599] mousedev: PS/2 mouse device common for all mice
[    0.532734] rtc_cmos 00:01: rtc core: registered rtc_cmos as rtc0
[    0.532776] rtc_cmos 00:01: alarms up to one month, y3k, 242 bytes nvram, hpet irqs
[    0.532834] device-mapper: uevent: version 1.0.3
[    0.532986] device-mapper: ioctl: 4.30.0-ioctl (2014-12-22) initialised: [email protected]
[    0.533015] Intel P-state driver initializing.
[    0.533493] ledtrig-cpu: registered to indicate activity on CPUs
[    0.533649] TCP: cubic registered
[    0.533768] NET: Registered protocol family 10
[    0.534460] NET: Registered protocol family 17
[    0.534485] Key type dns_resolver registered
[    0.535595] Loading compiled-in X.509 certificates
[    0.536946] Loaded X.509 cert 'Magrathea: Glacier signing key: 4a12587b0f17c5400d4bd214df55f0118759d555'
[    0.536990] registered taskstats version 1
[    0.542052] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3
[    0.542483] Key type trusted registered
[    0.552220] Key type encrypted registered
[    0.552233] AppArmor: AppArmor sha1 policy hashing enabled
[    0.552239] evm: HMAC attrs: 0x1
[    0.553128] rtc_cmos 00:01: setting system clock to 2015-01-04 09:50:42 UTC (1420365042)
[    0.553259] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found
[    0.553264] EDD information not available.
[    0.792514] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    0.793812] ata1.00: ATA-8: Hitachi HTS545050A7E380, GG2OA6C0, max UDMA/133
[    0.793831] ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[    0.795211] ata1.00: configured for UDMA/133
[    0.796054] scsi 0:0:0:0: Direct-Access     ATA      Hitachi HTS54505 A6C0 PQ: 0 ANSI: 5
[    0.797126] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[    0.797134] sd 0:0:0:0: [sda] 4096-byte physical blocks
[    0.797327] sd 0:0:0:0: [sda] Write Protect is off
[    0.797335] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    0.797432] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    0.797480] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    0.807928]  sda: sda1 sda2 sda3
[    0.809275] sd 0:0:0:0: [sda] Attached SCSI disk
[    0.816448] usb 3-1: new high-speed USB device number 2 using ehci-pci
[    0.832507] usb 4-1: new high-speed USB device number 2 using ehci-pci
[    0.949096] usb 3-1: New USB device found, idVendor=8087, idProduct=0024
[    0.949113] usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    0.949873] hub 3-1:1.0: USB hub found
[    0.950174] hub 3-1:1.0: 6 ports detected
[    0.965072] usb 4-1: New USB device found, idVendor=8087, idProduct=0024
[    0.965082] usb 4-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    0.965671] hub 4-1:1.0: USB hub found
[    0.966019] hub 4-1:1.0: 6 ports detected
[    1.116285] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    1.116867] ata2.00: ATA-8: SanDisk iSSD P4 16GB, SSD 9.14, max UDMA/133
[    1.116875] ata2.00: 31277232 sectors, multi 1: LBA48 
[    1.117575] ata2.00: configured for UDMA/133
[    1.117898] scsi 1:0:0:0: Direct-Access     ATA      SanDisk iSSD P4  9.14 PQ: 0 ANSI: 5
[    1.118587] sd 1:0:0:0: [sdb] 31277232 512-byte logical blocks: (16.0 GB/14.9 GiB)
[    1.118652] sd 1:0:0:0: Attached scsi generic sg1 type 0
[    1.118873] sd 1:0:0:0: [sdb] Write Protect is off
[    1.118881] sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    1.118955] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.119954]  sdb: sdb1 sdb2
[    1.120859] sd 1:0:0:0: [sdb] Attached SCSI disk
[    1.224417] usb 3-1.2: new high-speed USB device number 3 using ehci-pci
[    1.236400] usb 4-1.4: new low-speed USB device number 3 using ehci-pci
[    1.319778] usb 3-1.2: New USB device found, idVendor=12d1, idProduct=1436
[    1.319787] usb 3-1.2: New USB device strings: Mfr=4, Product=3, SerialNumber=0
[    1.319791] usb 3-1.2: Product: HUAWEI Mobile
[    1.319794] usb 3-1.2: Manufacturer: HUAWEI Technology
[    1.335139] usb 4-1.4: New USB device found, idVendor=046d, idProduct=c00e
[    1.335148] usb 4-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.335152] usb 4-1.4: Product: USB-PS/2 Optical Mouse
[    1.335156] usb 4-1.4: Manufacturer: Logitech
[    1.392174] tsc: Refined TSC clocksource calibration: 1596.373 MHz
[    1.396293] usb 3-1.4: new high-speed USB device number 4 using ehci-pci
[    1.408277] usb 4-1.5: new full-speed USB device number 4 using ehci-pci
[    1.436095] ata4: SATA link down (SStatus 0 SControl 300)
[    1.505308] usb 4-1.5: New USB device found, idVendor=8086, idProduct=0189
[    1.505318] usb 4-1.5: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    1.648562] usb 3-1.4: New USB device found, idVendor=2232, idProduct=1018
[    1.648572] usb 3-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.648577] usb 3-1.4: Product: WebCam SC-13HDL11431N
[    1.648580] usb 3-1.4: Manufacturer: 123
[    1.755829] ata5: SATA link down (SStatus 0 SControl 300)
[    1.756687] Freeing unused kernel memory: 1380K (ffffffff81d46000 - ffffffff81e9f000)
[    1.756693] Write protecting the kernel read-only data: 12288k
[    1.757398] Freeing unused kernel memory: 580K (ffff88000176f000 - ffff880001800000)
[    1.757840] Freeing unused kernel memory: 720K (ffff880001b4c000 - ffff880001c00000)
[    1.790126] udevd[131]: starting version 175
[    2.030253] usb-storage 3-1.2:1.0: USB Mass Storage device detected
[    2.031170] usb-storage 3-1.2:1.1: USB Mass Storage device detected
[    2.033380] usb-storage 3-1.2:1.2: USB Mass Storage device detected
[    2.040392] usb-storage 3-1.2:1.3: USB Mass Storage device detected
[    2.041243] usb-storage 3-1.2:1.4: USB Mass Storage device detected
[    2.048679] usb-storage 3-1.2:1.5: USB Mass Storage device detected
[    2.053345] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[    2.053374] r8169 0000:02:00.0: can't disable ASPM; OS doesn't have ASPM control
[    2.054879] scsi host11: usb-storage 3-1.2:1.5
[    2.055250] usb-storage 3-1.2:1.6: USB Mass Storage device detected
[    2.057284] r8169 0000:02:00.0 eth0: RTL8168evl/8111evl at 0xffffc9000067e000, e8:03:9a:36:17:a9, XID 0c900800 IRQ 31
[    2.057300] r8169 0000:02:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[    2.062643] scsi host12: usb-storage 3-1.2:1.6
[    2.063243] usbcore: registered new interface driver usb-storage
[    2.086371] usbcore: registered new interface driver usbhid
[    2.086379] usbhid: USB HID core driver
[    2.147668] input: Logitech USB-PS/2 Optical Mouse as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.4/4-1.4:1.0/0003:046D:C00E.0001/input/input6
[    2.148085] hid-generic 0003:046D:C00E.0001: input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:1d.0-1.4/input0
[    2.391631] Switched to clocksource tsc
[    2.837709] EXT4-fs (loop0): mounted filesystem with ordered data mode. Opts: (null)
[    3.052564] scsi 11:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
[    3.056164] sr 11:0:0:0: [sr0] scsi-1 drive
[    3.056174] cdrom: Uniform CD-ROM driver Revision: 3.20
[    3.056889] sr 11:0:0:0: Attached scsi CD-ROM sr0
[    3.057142] sr 11:0:0:0: Attached scsi generic sg2 type 5
[    3.060032] scsi 12:0:0:0: Direct-Access     HUAWEI   SD Storage       2.31 PQ: 0 ANSI: 2
[    3.060569] sd 12:0:0:0: Attached scsi generic sg3 type 0
[    3.062476] sd 12:0:0:0: [sdc] Attached SCSI removable disk
[    3.550888] random: nonblocking pool is initialized
[    5.022049] init: ureadahead main process (419) terminated with status 5
[    8.938948] Adding 262140k swap on /host/ubuntu/disks/swap.disk.  Priority:-1 extents:1 across:262140k FS
[    9.104870] EXT4-fs (loop0): re-mounted. Opts: errors=remount-ro
[    9.291270] udevd[703]: starting version 175
[   10.597506] lp: driver loaded but no devices found
[   12.524690] wmi: Mapper loaded
[   12.526153] [drm] Initialized drm 1.1.0 20060810
[   12.756098] ACPI Warning: SystemIO range 0x0000000000000428-0x000000000000042f conflicts with OpRegion 0x0000000000000400-0x000000000000047f (\PMIO) (20141107/utaddress-258)
[   12.756112] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[   12.756119] ACPI Warning: SystemIO range 0x0000000000000540-0x000000000000054f conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20141107/utaddress-258)
[   12.756125] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[   12.756128] ACPI Warning: SystemIO range 0x0000000000000530-0x000000000000053f conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20141107/utaddress-258)
[   12.756132] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[   12.756133] ACPI Warning: SystemIO range 0x0000000000000500-0x000000000000052f conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20141107/utaddress-258)
[   12.756137] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[   12.756139] lpc_ich: Resource conflict(s) found affecting gpio_ich
[   12.837710] samsung_laptop: detected SABI interface: SwSmi@
[   12.837715] samsung_laptop: Backlight controlled by ACPI video driver
[   13.148649] ppdev: user-space parallel port driver
[   14.543311] Bluetooth: Core ver 2.20
[   14.543356] NET: Registered protocol family 31
[   14.543359] Bluetooth: HCI device and connection manager initialized
[   14.543396] Bluetooth: HCI socket layer initialized
[   14.543402] Bluetooth: L2CAP socket layer initialized
[   14.543428] Bluetooth: SCO socket layer initialized
[   14.743423] usbcore: registered new interface driver btusb
[   14.908412] psmouse serio1: elantech: assuming hardware version 3 (with firmware version 0x450f00)
[   14.923382] psmouse serio1: elantech: Synaptics capabilities query result 0x08, 0x17, 0x0c.
[   14.934964] audit: type=1400 audit(1420361456.890:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=1026 comm="apparmor_parser"
[   14.934974] audit: type=1400 audit(1420361456.890:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1026 comm="apparmor_parser"
[   14.934980] audit: type=1400 audit(1420361456.890:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=1026 comm="apparmor_parser"
[   14.935173] audit: type=1400 audit(1420361456.890:5): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=974 comm="apparmor_parser"
[   14.935187] audit: type=1400 audit(1420361456.890:6): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=974 comm="apparmor_parser"
[   14.935197] audit: type=1400 audit(1420361456.890:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=974 comm="apparmor_parser"
[   14.935950] audit: type=1400 audit(1420361456.890:8): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1026 comm="apparmor_parser"
[   14.935963] audit: type=1400 audit(1420361456.890:9): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1026 comm="apparmor_parser"
[   14.935982] audit: type=1400 audit(1420361456.890:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=974 comm="apparmor_parser"
[   14.935990] audit: type=1400 audit(1420361456.890:11): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=974 comm="apparmor_parser"
[   15.001194] input: ETPS/2 Elantech Touchpad as /devices/platform/i8042/serio1/input/input7
[   15.185418] usbcore: registered new interface driver usbserial
[   15.253925] cdc_ether 3-1.2:1.1 wwan0: register 'cdc_ether' at usb-0000:00:1a.0-1.2, Mobile Broadband Network Device, 02:50:f3:00:00:00
[   15.253992] usbcore: registered new interface driver cdc_ether
[   15.418631] cfg80211: Calling CRDA to update world regulatory domain
[   16.016936] usbcore: registered new interface driver option
[   16.018327] usbserial: USB Serial support registered for GSM modem (1-port)
[   16.019281] option 3-1.2:1.0: GSM modem (1-port) converter detected
[   16.020858] usb 3-1.2: GSM modem (1-port) converter now attached to ttyUSB0
[   16.021064] option 3-1.2:1.3: GSM modem (1-port) converter detected
[   16.021259] usb 3-1.2: GSM modem (1-port) converter now attached to ttyUSB1
[   16.021300] option 3-1.2:1.4: GSM modem (1-port) converter detected
[   16.021652] usb 3-1.2: GSM modem (1-port) converter now attached to ttyUSB2
[   16.040253] Linux video capture interface: v2.00
[   16.216166] Intel(R) Wireless WiFi driver for Linux, in-tree:
[   16.216170] Copyright(c) 2003- 2014 Intel Corporation
[   16.216411] iwlwifi 0000:01:00.0: can't disable ASPM; OS doesn't have ASPM control
[   16.221338] cfg80211: World regulatory domain updated:
[   16.221343] cfg80211:  DFS Master region: unset
[   16.221345] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[   16.221348] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm), (N/A)
[   16.221351] cfg80211:   (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm), (N/A)
[   16.221353] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm), (N/A)
[   16.221354] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm), (N/A)
[   16.221356] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm), (N/A)
[   16.360358] [drm] Memory usable by graphics device = 2048M
[   16.360416] [drm] Replacing VGA console driver
[   16.385540] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[   16.385544] [drm] Driver supports precise vblank timestamp query.
[   16.386188] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[   16.398567] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[   16.399121] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input8
[   16.399999] [drm] Initialized i915 1.6.0 20141121 for 0000:00:02.0 on minor 0
[   16.411924] fbcon: inteldrmfb (fb0) is primary device
[   16.635677] iwlwifi 0000:01:00.0: loaded firmware version 18.168.6.1 op_mode iwldvm
[   16.726477] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   16.726478] Bluetooth: BNEP filters: protocol multicast
[   16.726488] Bluetooth: BNEP socket layer initialized
[   17.377441] Console: switching to colour frame buffer device 170x48
[   17.380618] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[   17.380622] i915 0000:00:02.0: registered panic notifier
[   17.397432] init: failsafe main process (1070) killed by TERM signal
[   17.846455] uvcvideo: Found UVC 1.00 device WebCam SC-13HDL11431N (2232:1018)
[   17.866076] input: WebCam SC-13HDL11431N as /devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1.4/3-1.4:1.0/input/input9
[   17.866513] usbcore: registered new interface driver uvcvideo
[   17.866518] USB Video Class driver (1.1.1)
[   18.207099] Bluetooth: RFCOMM TTY layer initialized
[   18.207114] Bluetooth: RFCOMM socket layer initialized
[   18.207131] Bluetooth: RFCOMM ver 1.11
[   18.914064] sound hdaudioC0D0: autoconfig: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[   18.914069] sound hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[   18.914072] sound hdaudioC0D0:    hp_outs=1 (0x15/0x0/0x0/0x0/0x0)
[   18.914074] sound hdaudioC0D0:    mono: mono_out=0x0
[   18.914075] sound hdaudioC0D0:    inputs:
[   18.914079] sound hdaudioC0D0:      Internal Mic=0x19
[   18.914082] sound hdaudioC0D0:      Mic=0x18
[   19.029335] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEBUG disabled
[   19.029341] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEBUGFS enabled
[   19.029345] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEVICE_TRACING enabled
[   19.029350] iwlwifi 0000:01:00.0: Detected Intel(R) Centrino(R) Advanced-N 6230 AGN, REV=0xB0
[   19.029938] iwlwifi 0000:01:00.0: L1 Enabled - LTR Disabled
[   19.047709] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10
[   19.050017] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11
[   19.050401] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input12
[   19.058881] ieee80211 phy0: Selected rate control algorithm 'iwl-agn-rs'
[   20.064784] audit_printk_skb: 15 callbacks suppressed
[   20.064789] audit: type=1400 audit(1420361462.022:17): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=1303 comm="apparmor_parser"
[   20.064798] audit: type=1400 audit(1420361462.022:18): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1303 comm="apparmor_parser"
[   20.064805] audit: type=1400 audit(1420361462.022:19): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1303 comm="apparmor_parser"
[   20.065441] audit: type=1400 audit(1420361462.022:20): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1303 comm="apparmor_parser"
[   20.065447] audit: type=1400 audit(1420361462.022:21): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1303 comm="apparmor_parser"
[   20.065787] audit: type=1400 audit(1420361462.022:22): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1303 comm="apparmor_parser"
[   20.072045] audit: type=1400 audit(1420361462.030:23): apparmor="STATUS" operation="profile_replace" name="/usr/lib/cups/backend/cups-pdf" pid=1307 comm="apparmor_parser"
[   20.072055] audit: type=1400 audit(1420361462.030:24): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid=1307 comm="apparmor_parser"
[   20.072774] audit: type=1400 audit(1420361462.030:25): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid=1307 comm="apparmor_parser"
[   20.375543] audit: type=1400 audit(1420361462.334:26): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=1309 comm="apparmor_parser"
[   23.890190] r8169 0000:02:00.0 eth0: link down
[   23.890247] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[  116.397334] usb 4-1.5: USB disconnect, device number 4
[  119.252168] PPP BSD Compression module registered
[  119.257867] PPP Deflate Compression module registered
[  143.183054] show_signal_msg: 126 callbacks suppressed
[  143.183063] firefox[2614]: segfault at 7f5aad4c0b52 ip 00007f5a6e6fc357 sp 00007fff3e0b3a18 error 6 in libGL.so.1.2.0[7f5a6e6fc000+bb000]
[  169.935527] bash (2700): drop_caches: 3
[  279.315338] bash (2700): drop_caches: 3
[  338.878735] bash (2700): drop_caches: 3
[  392.021851] bash (2700): drop_caches: 3
[  444.443503] bash (2700): drop_caches: 3
[  497.977428] bash (2700): drop_caches: 3
[  553.296218] bash (2700): drop_caches: 3
[  616.897188] bash (2700): drop_caches: 3
[  672.593479] bash (2700): drop_caches: 3
[  728.569440] bash (2700): drop_caches: 3
[  799.515728] bash (2700): drop_caches: 3
[ 2152.513198] perf interrupt took too long (2506 > 2500), lowering kernel.perf_event_max_sample_rate to 50000

Arnd Bergmann (1):
Merge tag 'mvebu-fixes-3.19' of git://git.infradead.org/linux-mvebu into fixes

Dan Carpenter (1):
OMAPDSS: pll: NULL dereference in error handling

Jens Axboe (5):
block: wake up waiters when a queue is marked dying Merge tag 'v3.19-rc2' into for-3.20/core
blk-mq: export blk_mq_freeze_queue()
loop: add blk-mq.h include
Merge branch 'for-3.20/drivers' into for-next

Jiri Kosina (1):
Revert "cfg80211: make WEXT compatibility unselectable"

Keith Busch (3):
blk-mq: Exit queue on alloc failure
blk-mq: Export freeze/unfreeze functions
NVMe: Fix double free irq

Kent Overstreet (3):
closures: move to lib/
closures: fix closure_sync()
aio: Convert to closure waitlist for aio ring buffer

Linus Torvalds (7):
Merge branch 'for-linus' of git://git.kernel.org/.../dtor/input
Merge tag 'fbdev-fixes-3.19' of git://git.kernel.org/.../tomba/linux
Merge tag 'fixes-for-linus' of git://git.kernel.org/.../arm/arm-soc
Merge git://git.kernel.org/.../herbert/crypto-2.6
Merge tag 'nios2-fixes-v3.19-rc3' of git://git.rocketboards.org/linux-socfpga-next
Revert "Input: atmel_mxt_ts - use deep sleep mode when stopped" Merge branch 'upstream' of git://git.infradead.org/users/pcmoore/audit

Michal Marek (2):
kbuild: Drop support for clean-rule
kbuild: Fix removal of the debian/ directory

Ming Lei (5):
block: fix checking return value of blk_mq_init_queue
block: loop: improve performance via blk-mq
block: loop: say goodby to bio
block: loop: introduce lo_discard() and lo_req_flush()
block: loop: don't handle REQ_FUA explicitly

Paul Moore (1):
audit: create private file name copies when auditing inodes

Sedat Dilek (9):
Merge branch 'rc-fixes' of git://git.kernel.org/.../mmarek/kbuild into for-3.19/kbuild-fixes Merge branch 'kbuild' of git://git.kernel.org/.../mmarek/kbuild into for-3.19/kbuild-fixes
builddeb: Update year and git repository URL in debian/copyright
Merge branch 'misc' of git://git.kernel.org/.../mmarek/kbuild into for-3.19/kbuild-fixes
builddeb: Try to determine distribution
Merge branch 'for-3.19/kbuild-fixes' into 3.19.0-rc2-next-20141231.6-loopmq-small Merge branch 'for-3.19/builddeb-fixes' into 3.19.0-rc2-next-20141231.6-loopmq-small Merge branch 'for-3.20/block-next-20150102' into 3.19.0-rc2-next-20141231.6-loopmq-small Merge branch 'for-3.19/aio-ring-fixes' into 3.19.0-rc2-next-20141231.7-loopmq-small

Slava Pestov (1):
closures: Add closure_sync_interruptible_hrtimeout

Steev Klimaszewski (1):
Add USB_EHCI_EXYNOS to multi_v7_defconfig

Tobias Klauser (1):
nios2: Use preempt_schedule_irq

Tomi Valkeinen (4):
OMAPDSS: HDMI: remove double initializer entries video/logo: prevent use of logos after they have been freed video/fbdev: fix defio's fsync
OMAPDSS: SDI: fix output port_num

Walter Goossens (1):
nios2: Initialize cpuinfo.mmu

 arch/arm/configs/multi_v7_defconfig      |   1 +
 arch/nios2/kernel/cpuinfo.c              |   1 +
 arch/nios2/kernel/entry.S                |  20 +-
 block/blk-core.c                         |  21 +-
 block/blk-mq-tag.c                       |  14 +-
 block/blk-mq-tag.h                       |   1 +
 block/blk-mq.c                           |  21 +-
 block/blk-mq.h                           |   1 +
 drivers/block/loop.c                     | 416 ++++++++++++++--------------
 drivers/block/loop.h                     |  18 +-
 drivers/block/null_blk.c                 |   2 +-
 drivers/block/nvme-core.c                |  19 +-
 drivers/block/virtio_blk.c               |   2 +-
 drivers/input/touchscreen/atmel_mxt_ts.c |  99 ++-----
 drivers/md/bcache/Kconfig                |   9 -
 drivers/md/bcache/Makefile               |   6 +-
 drivers/md/bcache/bcache.h               |   2 +-
 drivers/md/bcache/closure.c              | 222 ---------------
 drivers/md/bcache/closure.h              | 386 --------------------------
 drivers/md/bcache/super.c                |   1 -
 drivers/md/bcache/util.h                 |   3 +-
 drivers/video/fbdev/core/fb_defio.c      |   5 +-
 drivers/video/fbdev/omap2/dss/hdmi_pll.c |   2 -
 drivers/video/fbdev/omap2/dss/pll.c      |   3 +-
 drivers/video/fbdev/omap2/dss/sdi.c      |   2 +
 drivers/video/logo/logo.c                |  17 +-
 fs/aio.c                                 |  28 +-
 include/linux/blk-mq.h                   |   3 +
 include/linux/closure.h                  | 458 +++++++++++++++++++++++++++++++
 kernel/auditsc.c                         |  49 +++-
 lib/Kconfig.debug                        |   8 +
 lib/Makefile                             |   2 +-
 lib/closure.c                            | 285 +++++++++++++++++++
 net/wireless/Kconfig                     |   2 +-
 scripts/Makefile.clean                   |  19 +-
 scripts/package/builddeb                 |  17 +-
 36 files changed, 1165 insertions(+), 1000 deletions(-)
arch/arm/configs/multi_v7_defconfig +1 -0
index 2328fe7..bc393b7 100644
@@ -338,6 +338,7 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_MVEBU=y
 CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_EXYNOS=y
 CONFIG_USB_EHCI_TEGRA=y
 CONFIG_USB_EHCI_HCD_STI=y
 CONFIG_USB_EHCI_HCD_PLATFORM=y
arch/nios2/kernel/cpuinfo.c +1 -0
index 51d5bb9..a223691d 100644
@@ -72,6 +72,7 @@ void __init setup_cpuinfo(void)
 	cpuinfo.has_div = fcpu_has(cpu, "altr,has-div");
 	cpuinfo.has_mul = fcpu_has(cpu, "altr,has-mul");
 	cpuinfo.has_mulx = fcpu_has(cpu, "altr,has-mulx");
+	cpuinfo.mmu = fcpu_has(cpu, "altr,has-mmu");
 
 	if (IS_ENABLED(CONFIG_NIOS2_HW_DIV_SUPPORT) && !cpuinfo.has_div)
 		err_cpu("DIV");
arch/nios2/kernel/entry.S +2 -18
index 83bca17..0bdfd13 100644
@@ -365,30 +365,14 @@ ENTRY(ret_from_interrupt)
 	GET_THREAD_INFO	r1
 	ldw	r4, TI_PREEMPT_COUNT(r1)
 	bne	r4, r0, restore_all
-
-need_resched:
 	ldw	r4, TI_FLAGS(r1)		/* ? Need resched set */
 	BTBZ	r10, r4, TIF_NEED_RESCHED, restore_all
 	ldw	r4, PT_ESTATUS(sp)	/* ? Interrupts off */
 	andi	r10, r4, ESTATUS_EPIE
 	beq	r10, r0, restore_all
-	movia	r4, PREEMPT_ACTIVE
-	stw	r4, TI_PREEMPT_COUNT(r1)
-	rdctl	r10, status		/* enable intrs again */
-	ori	r10, r10 ,STATUS_PIE
-	wrctl	status, r10
-	PUSH	r1
-	call	schedule
-	POP	r1
-	mov	r4, r0
-	stw	r4, TI_PREEMPT_COUNT(r1)
-	rdctl	r10, status		/* disable intrs */
-	andi	r10, r10, %lo(~STATUS_PIE)
-	wrctl	status, r10
-	br	need_resched
-#else
-	br	restore_all
+	call	preempt_schedule_irq
 #endif
+	br	restore_all
 
 /***********************************************************************
  * A few syscall wrappers
block/blk-core.c +20 -1
index 7e78931..c81f02c 100644
@@ -473,6 +473,25 @@ void blk_queue_bypass_end(struct request_queue *q)
 }
 EXPORT_SYMBOL_GPL(blk_queue_bypass_end);
 
+void blk_set_queue_dying(struct request_queue *q)
+{
+	queue_flag_set_unlocked(QUEUE_FLAG_DYING, q);
+
+	if (q->mq_ops)
+		blk_mq_wake_waiters(q);
+	else {
+		struct request_list *rl;
+
+		blk_queue_for_each_rl(rl, q) {
+			if (rl->rq_pool) {
+				wake_up(&rl->wait[BLK_RW_SYNC]);
+				wake_up(&rl->wait[BLK_RW_ASYNC]);
+			}
+		}
+	}
+}
+EXPORT_SYMBOL_GPL(blk_set_queue_dying);
+
 /**
  * blk_cleanup_queue - shutdown a request queue
  * @q: request queue to shutdown
@@ -486,7 +505,7 @@ void blk_cleanup_queue(struct request_queue *q)
 
 	/* mark @q DYING, no new request or merges will be allowed afterwards */
 	mutex_lock(&q->sysfs_lock);
-	queue_flag_set_unlocked(QUEUE_FLAG_DYING, q);
+	blk_set_queue_dying(q);
 	spin_lock_irq(lock);
 
 	/*
block/blk-mq-tag.c +10 -4
index 32e8dbb..60c9d4a 100644
@@ -68,9 +68,9 @@ bool __blk_mq_tag_busy(struct blk_mq_hw_ctx *hctx)
 }
 
 /*
- * Wakeup all potentially sleeping on normal (non-reserved) tags
+ * Wakeup all potentially sleeping on tags
  */
-static void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags)
+void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags, bool include_reserve)
 {
 	struct blk_mq_bitmap_tags *bt;
 	int i, wake_index;
@@ -85,6 +85,12 @@ static void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags)
 
 		wake_index = bt_index_inc(wake_index);
 	}
+
+	if (include_reserve) {
+		bt = &tags->breserved_tags;
+		if (waitqueue_active(&bt->bs[0].wait))
+			wake_up(&bt->bs[0].wait);
+	}
 }
 
 /*
@@ -100,7 +106,7 @@ void __blk_mq_tag_idle(struct blk_mq_hw_ctx *hctx)
 
 	atomic_dec(&tags->active_queues);
 
-	blk_mq_tag_wakeup_all(tags);
+	blk_mq_tag_wakeup_all(tags, false);
 }
 
 /*
@@ -584,7 +590,7 @@ int blk_mq_tag_update_depth(struct blk_mq_tags *tags, unsigned int tdepth)
 	 * static and should never need resizing.
 	 */
 	bt_update_count(&tags->bitmap_tags, tdepth);
-	blk_mq_tag_wakeup_all(tags);
+	blk_mq_tag_wakeup_all(tags, false);
 	return 0;
 }
 
block/blk-mq-tag.h +1 -0
index 6206ed1..a6fa0fc 100644
@@ -54,6 +54,7 @@ extern bool blk_mq_has_free_tags(struct blk_mq_tags *tags);
 extern ssize_t blk_mq_tag_sysfs_show(struct blk_mq_tags *tags, char *page);
 extern void blk_mq_tag_init_last_tag(struct blk_mq_tags *tags, unsigned int *last_tag);
 extern int blk_mq_tag_update_depth(struct blk_mq_tags *tags, unsigned int depth);
+extern void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags, bool);
 
 enum {
 	BLK_MQ_TAG_CACHE_MIN	= 1,
block/blk-mq.c +18 -3
index 1076f86..04caf9f 100644
@@ -107,7 +107,7 @@ static void blk_mq_usage_counter_release(struct percpu_ref *ref)
 	wake_up_all(&q->mq_freeze_wq);
 }
 
-static void blk_mq_freeze_queue_start(struct request_queue *q)
+void blk_mq_freeze_queue_start(struct request_queue *q)
 {
 	bool freeze;
 
@@ -120,6 +120,7 @@ static void blk_mq_freeze_queue_start(struct request_queue *q)
 		blk_mq_run_queues(q, false);
 	}
 }
+EXPORT_SYMBOL_GPL(blk_mq_freeze_queue_start);
 
 static void blk_mq_freeze_queue_wait(struct request_queue *q)
 {
@@ -135,8 +136,9 @@ void blk_mq_freeze_queue(struct request_queue *q)
 	blk_mq_freeze_queue_start(q);
 	blk_mq_freeze_queue_wait(q);
 }
+EXPORT_SYMBOL_GPL(blk_mq_freeze_queue);
 
-static void blk_mq_unfreeze_queue(struct request_queue *q)
+void blk_mq_unfreeze_queue(struct request_queue *q)
 {
 	bool wake;
 
@@ -149,6 +151,17 @@ static void blk_mq_unfreeze_queue(struct request_queue *q)
 		wake_up_all(&q->mq_freeze_wq);
 	}
 }
+EXPORT_SYMBOL_GPL(blk_mq_unfreeze_queue);
+
+void blk_mq_wake_waiters(struct request_queue *q)
+{
+	struct blk_mq_hw_ctx *hctx;
+	unsigned int i;
+
+	queue_for_each_hw_ctx(q, hctx, i)
+		if (blk_mq_hw_queue_mapped(hctx))
+			blk_mq_tag_wakeup_all(hctx->tags, true);
+}
 
 bool blk_mq_can_queue(struct blk_mq_hw_ctx *hctx)
 {
@@ -259,8 +272,10 @@ struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp,
 		ctx = alloc_data.ctx;
 	}
 	blk_mq_put_ctx(ctx);
-	if (!rq)
+	if (!rq) {
+		blk_mq_queue_exit(q);
 		return ERR_PTR(-EWOULDBLOCK);
+	}
 	return rq;
 }
 EXPORT_SYMBOL(blk_mq_alloc_request);
block/blk-mq.h +1 -0
index 206230e..4f4f943 100644
@@ -32,6 +32,7 @@ void blk_mq_free_queue(struct request_queue *q);
 void blk_mq_clone_flush_request(struct request *flush_rq,
 		struct request *orig_rq);
 int blk_mq_update_nr_requests(struct request_queue *q, unsigned int nr);
+void blk_mq_wake_waiters(struct request_queue *q);
 
 /*
  * CPU hotplug helpers
drivers/block/loop.c +204 -212

582 lines not on this page · raw message

drivers/block/loop.h +12 -6
index 90df5d6..301c27f 100644
@@ -11,8 +11,10 @@
 
 #include <linux/bio.h>
 #include <linux/blkdev.h>
+#include <linux/blk-mq.h>
 #include <linux/spinlock.h>
 #include <linux/mutex.h>
+#include <linux/workqueue.h>
 #include <uapi/linux/loop.h>
 
 /* Possible states of device */
@@ -52,19 +54,23 @@ struct loop_device {
 	gfp_t		old_gfp_mask;
 
 	spinlock_t		lo_lock;
-	struct bio_list		lo_bio_list;
-	unsigned int		lo_bio_count;
+	struct list_head	write_cmd_head;
+	struct work_struct	write_work;
+	bool			write_started;
 	int			lo_state;
 	struct mutex		lo_ctl_mutex;
-	struct task_struct	*lo_thread;
-	wait_queue_head_t	lo_event;
-	/* wait queue for incoming requests */
-	wait_queue_head_t	lo_req_wait;
 
 	struct request_queue	*lo_queue;
+	struct blk_mq_tag_set	tag_set;
 	struct gendisk		*lo_disk;
 };
 
+struct loop_cmd {
+	struct work_struct read_work;
+	struct request *rq;
+	struct list_head list;
+};
+
 /* Support for loadable transfer modules */
 struct loop_func_table {
 	int number;	/* filter type */ 
drivers/block/null_blk.c +1 -1
index ae9f615..aa2224a 100644
@@ -530,7 +530,7 @@ static int null_add_dev(void)
 			goto out_cleanup_queues;
 
 		nullb->q = blk_mq_init_queue(&nullb->tag_set);
-		if (!nullb->q) {
+		if (IS_ERR(nullb->q)) {
 			rv = -ENOMEM;
 			goto out_cleanup_tags;
 		}
drivers/block/nvme-core.c +13 -6
index b1d5d87..f7d083b 100644
@@ -1131,10 +1131,16 @@ static void nvme_free_queues(struct nvme_dev *dev, int lowest)
  */
 static int nvme_suspend_queue(struct nvme_queue *nvmeq)
 {
-	int vector = nvmeq->dev->entry[nvmeq->cq_vector].vector;
+	int vector;
 
 	spin_lock_irq(&nvmeq->q_lock);
+	if (nvmeq->cq_vector == -1) {
+		spin_unlock_irq(&nvmeq->q_lock);
+		return 1;
+	}
+	vector = nvmeq->dev->entry[nvmeq->cq_vector].vector;
 	nvmeq->dev->online_queues--;
+	nvmeq->cq_vector = -1;
 	spin_unlock_irq(&nvmeq->q_lock);
 
 	irq_set_affinity_hint(vector, NULL);
@@ -1173,7 +1179,7 @@ static void nvme_disable_queue(struct nvme_dev *dev, int qid)
 }
 
 static struct nvme_queue *nvme_alloc_queue(struct nvme_dev *dev, int qid,
-							int depth, int vector)
+							int depth)
 {
 	struct device *dmadev = &dev->pci_dev->dev;
 	struct nvme_queue *nvmeq = kzalloc(sizeof(*nvmeq), GFP_KERNEL);
@@ -1199,7 +1205,6 @@ static struct nvme_queue *nvme_alloc_queue(struct nvme_dev *dev, int qid,
 	nvmeq->cq_phase = 1;
 	nvmeq->q_db = &dev->dbs[qid * 2 * dev->db_stride];
 	nvmeq->q_depth = depth;
-	nvmeq->cq_vector = vector;
 	nvmeq->qid = qid;
 	dev->queue_count++;
 	dev->queues[qid] = nvmeq;
@@ -1244,6 +1249,7 @@ static int nvme_create_queue(struct nvme_queue *nvmeq, int qid)
 	struct nvme_dev *dev = nvmeq->dev;
 	int result;
 
+	nvmeq->cq_vector = qid - 1;
 	result = adapter_alloc_cq(dev, qid, nvmeq);
 	if (result < 0)
 		return result;
@@ -1370,7 +1376,7 @@ static int nvme_alloc_admin_tags(struct nvme_dev *dev)
 			return -ENOMEM;
 
 		dev->admin_q = blk_mq_init_queue(&dev->admin_tagset);
-		if (!dev->admin_q) {
+		if (IS_ERR(dev->admin_q)) {
 			blk_mq_free_tag_set(&dev->admin_tagset);
 			return -ENOMEM;
 		}
@@ -1416,7 +1422,7 @@ static int nvme_configure_admin_queue(struct nvme_dev *dev)
 
 	nvmeq = dev->queues[0];
 	if (!nvmeq) {
-		nvmeq = nvme_alloc_queue(dev, 0, NVME_AQ_DEPTH, 0);
+		nvmeq = nvme_alloc_queue(dev, 0, NVME_AQ_DEPTH);
 		if (!nvmeq)
 			return -ENOMEM;
 	}
@@ -1443,6 +1449,7 @@ static int nvme_configure_admin_queue(struct nvme_dev *dev)
 	if (result)
 		goto free_nvmeq;
 
+	nvmeq->cq_vector = 0;
 	result = queue_request_irq(dev, nvmeq, nvmeq->irqname);
 	if (result)
 		goto free_tags;
@@ -1944,7 +1951,7 @@ static void nvme_create_io_queues(struct nvme_dev *dev)
 	unsigned i;
 
 	for (i = dev->queue_count; i <= dev->max_qid; i++)
-		if (!nvme_alloc_queue(dev, i, dev->q_depth, i - 1))
+		if (!nvme_alloc_queue(dev, i, dev->q_depth))
 			break;
 
 	for (i = dev->online_queues; i <= dev->queue_count - 1; i++)
drivers/block/virtio_blk.c +1 -1
index 7ef7c09..cdfbd21 100644
@@ -638,7 +638,7 @@ static int virtblk_probe(struct virtio_device *vdev)
 		goto out_put_disk;
 
 	q = vblk->disk->queue = blk_mq_init_queue(&vblk->tag_set);
-	if (!q) {
+	if (IS_ERR(q)) {
 		err = -ENOMEM;
 		goto out_free_tags;
 	}
drivers/input/touchscreen/atmel_mxt_ts.c +26 -73

151 lines not on this page · raw message

drivers/md/bcache/Kconfig +0 -9
index 4d20088..4178abe 100644
@@ -15,12 +15,3 @@ config BCACHE_DEBUG
 
 	Enables extra debugging tools, allows expensive runtime checks to be
 	turned on.
-
-config BCACHE_CLOSURES_DEBUG
-	bool "Debug closures"
-	depends on BCACHE
-	select DEBUG_FS
-	---help---
-	Keeps all active closures in a linked list and provides a debugfs
-	interface to list them, which makes it possible to see asynchronous
-	operations that get stuck.
drivers/md/bcache/Makefile +3 -3
index c488b84..25d7aa3 100644
@@ -1,8 +1,8 @@
 
 obj-$(CONFIG_BCACHE)	+= bcache.o
 
-bcache-y		:= alloc.o bset.o btree.o closure.o debug.o extents.o\
-	io.o journal.o movinggc.o request.o stats.o super.o sysfs.o trace.o\
-	util.o writeback.o
+bcache-y		:= alloc.o bset.o btree.o debug.o extents.o io.o\
+	journal.o movinggc.o request.o stats.o super.o sysfs.o trace.o util.o\
+	writeback.o
 
 CFLAGS_request.o	+= -Iblock
drivers/md/bcache/bcache.h +1 -1
index 04f7bc2..21efa45 100644
@@ -179,6 +179,7 @@
 
 #include <linux/bcache.h>
 #include <linux/bio.h>
+#include <linux/closure.h>
 #include <linux/kobject.h>
 #include <linux/list.h>
 #include <linux/mutex.h>
@@ -189,7 +190,6 @@
 
 #include "bset.h"
 #include "util.h"
-#include "closure.h"
 
 struct bucket {
 	atomic_t	pin;
drivers/md/bcache/closure.c deleted +0 -222

222 lines not on this page · raw message

drivers/md/bcache/closure.h deleted +0 -386

386 lines not on this page · raw message

drivers/md/bcache/super.c +0 -1
index 4dd2bb7..085c535 100644
@@ -2097,7 +2097,6 @@ static int __init bcache_init(void)
 	mutex_init(&bch_register_lock);
 	init_waitqueue_head(&unregister_wait);
 	register_reboot_notifier(&reboot);
-	closure_debug_init();
 
 	bcache_major = register_blkdev(0, "bcache");
 	if (bcache_major < 0)
drivers/md/bcache/util.h +1 -2
index 98df757..6cd43c8 100644
@@ -3,6 +3,7 @@
 #define _BCACHE_UTIL_H
 
 #include <linux/blkdev.h>
+#include <linux/closure.h>
 #include <linux/errno.h>
 #include <linux/kernel.h>
 #include <linux/llist.h>
@@ -10,8 +11,6 @@
 #include <linux/vmalloc.h>
 #include <linux/workqueue.h>
 
-#include "closure.h"
-
 #define PAGE_SECTORS		(PAGE_SIZE / 512)
 
 struct closure;
drivers/video/fbdev/core/fb_defio.c +3 -2
index 900aa4e..d6cab1f 100644
@@ -83,9 +83,10 @@ int fb_deferred_io_fsync(struct file *file, loff_t start, loff_t end, int datasy
 	cancel_delayed_work_sync(&info->deferred_work);
 
 	/* Run it immediately */
-	err = schedule_delayed_work(&info->deferred_work, 0);
+	schedule_delayed_work(&info->deferred_work, 0);
 	mutex_unlock(&inode->i_mutex);
-	return err;
+
+	return 0;
 }
 EXPORT_SYMBOL_GPL(fb_deferred_io_fsync);
 
drivers/video/fbdev/omap2/dss/hdmi_pll.c +0 -2
index 87accdb..ac83ef5 100644
@@ -132,7 +132,6 @@ static const struct dss_pll_hw dss_omap4_hdmi_pll_hw = {
 	.mX_max = 127,
 	.fint_min = 500000,
 	.fint_max = 2500000,
-	.clkdco_max = 1800000000,
 
 	.clkdco_min = 500000000,
 	.clkdco_low = 1000000000,
@@ -156,7 +155,6 @@ static const struct dss_pll_hw dss_omap5_hdmi_pll_hw = {
 	.mX_max = 127,
 	.fint_min = 620000,
 	.fint_max = 2500000,
-	.clkdco_max = 1800000000,
 
 	.clkdco_min = 750000000,
 	.clkdco_low = 1500000000,
drivers/video/fbdev/omap2/dss/pll.c +2 -1
index 50bc62c5..335ffac 100644
@@ -97,7 +97,8 @@ int dss_pll_enable(struct dss_pll *pll)
 	return 0;
 
 err_enable:
-	regulator_disable(pll->regulator);
+	if (pll->regulator)
+		regulator_disable(pll->regulator);
 err_reg:
 	clk_disable_unprepare(pll->clkin);
 	return r;
drivers/video/fbdev/omap2/dss/sdi.c +2 -0
index d51a9830..5c2ccab 100644
@@ -342,6 +342,8 @@ static void sdi_init_output(struct platform_device *pdev)
 	out->output_type = OMAP_DISPLAY_TYPE_SDI;
 	out->name = "sdi.0";
 	out->dispc_channel = OMAP_DSS_CHANNEL_LCD;
+	/* We have SDI only on OMAP3, where it's on port 1 */
+	out->port_num = 1;
 	out->ops.sdi = &sdi_ops;
 	out->owner = THIS_MODULE;
 
drivers/video/logo/logo.c +16 -1
index 940cd19..10fbfd8 100644
@@ -21,6 +21,21 @@ static bool nologo;
 module_param(nologo, bool, 0);
 MODULE_PARM_DESC(nologo, "Disables startup logo");
 
+/*
+ * Logos are located in the initdata, and will be freed in kernel_init.
+ * Use late_init to mark the logos as freed to prevent any further use.
+ */
+
+static bool logos_freed;
+
+static int __init fb_logo_late_init(void)
+{
+	logos_freed = true;
+	return 0;
+}
+
+late_initcall(fb_logo_late_init);
+
 /* logo's are marked __initdata. Use __init_refok to tell
  * modpost that it is intended that this function uses data
  * marked __initdata.
@@ -29,7 +44,7 @@ const struct linux_logo * __init_refok fb_find_logo(int depth)
 {
 	const struct linux_logo *logo = NULL;
 
-	if (nologo)
+	if (nologo || logos_freed)
 		return NULL;
 
 	if (depth >= 1) {
fs/aio.c +8 -20
index 1b7893e..284c74e 100644
@@ -40,6 +40,7 @@
 #include <linux/ramfs.h>
 #include <linux/percpu-refcount.h>
 #include <linux/mount.h>
+#include <linux/closure.h>
 
 #include <asm/kmap_types.h>
 #include <asm/uaccess.h>
@@ -136,7 +137,7 @@ struct kioctx {
 
 	struct {
 		struct mutex	ring_lock;
-		wait_queue_head_t wait;
+		struct closure_waitlist wait;
 	} ____cacheline_aligned_in_smp;
 
 	struct {
@@ -689,7 +690,6 @@ static struct kioctx *ioctx_alloc(unsigned nr_events)
 	/* Protect against page migration throughout kiotx setup by keeping
 	 * the ring_lock mutex held until setup is complete. */
 	mutex_lock(&ctx->ring_lock);
-	init_waitqueue_head(&ctx->wait);
 
 	INIT_LIST_HEAD(&ctx->active_reqs);
 
@@ -772,7 +772,7 @@ static int kill_ioctx(struct mm_struct *mm, struct kioctx *ctx,
 	spin_unlock(&mm->ioctx_lock);
 
 	/* percpu_ref_kill() will do the necessary call_rcu() */
-	wake_up_all(&ctx->wait);
+	closure_wake_up(&ctx->wait);
 
 	/*
 	 * It'd be more correct to do this in free_ioctx(), after all
@@ -1121,8 +1121,7 @@ void aio_complete(struct kiocb *iocb, long res, long res2)
 	 */
 	smp_mb();
 
-	if (waitqueue_active(&ctx->wait))
-		wake_up(&ctx->wait);
+	closure_wake_up(&ctx->wait);
 
 	percpu_ref_put(&ctx->reqs);
 }
@@ -1237,26 +1236,15 @@ static long read_events(struct kioctx *ctx, long min_nr, long nr,
 			return -EFAULT;
 
 		until = timespec_to_ktime(ts);
+
+		if (until.tv64)
+			until = ktime_add(ktime_get(), until);
 	}
 
-	/*
-	 * Note that aio_read_events() is being called as the conditional - i.e.
-	 * we're calling it after prepare_to_wait() has set task state to
-	 * TASK_INTERRUPTIBLE.
-	 *
-	 * But aio_read_events() can block, and if it blocks it's going to flip
-	 * the task state back to TASK_RUNNING.
-	 *
-	 * This should be ok, provided it doesn't flip the state back to
-	 * TASK_RUNNING and return 0 too much - that causes us to spin. That
-	 * will only happen if the mutex_lock() call blocks, and we then find
-	 * the ringbuffer empty. So in practice we should be ok, but it's
-	 * something to be aware of when touching this code.
-	 */
 	if (until.tv64 == 0)
 		aio_read_events(ctx, min_nr, nr, event, &ret);
 	else
-		wait_event_interruptible_hrtimeout(ctx->wait,
+		closure_wait_event_hrtimeout(&ctx->wait,
 				aio_read_events(ctx, min_nr, nr, event, &ret),
 				until);
 
include/linux/blk-mq.h +3 -0
index 8aded9a..5b6500c 100644
@@ -212,6 +212,9 @@ void blk_mq_start_stopped_hw_queues(struct request_queue *q, bool async);
 void blk_mq_delay_queue(struct blk_mq_hw_ctx *hctx, unsigned long msecs);
 void blk_mq_tag_busy_iter(struct blk_mq_hw_ctx *hctx, busy_iter_fn *fn,
 		void *priv);
+void blk_mq_freeze_queue(struct request_queue *q);
+void blk_mq_unfreeze_queue(struct request_queue *q);
+void blk_mq_freeze_queue_start(struct request_queue *q);
 
 /*
  * Driver command data is immediately after the request. So subtract request
include/linux/closure.h new file +458 -0

458 lines not on this page · raw message

kernel/auditsc.c +40 -9

68 lines not on this page · raw message

lib/Kconfig.debug +8 -0
index a4a6d9a..29bc239 100644
@@ -1309,6 +1309,14 @@ config DEBUG_BLOCK_EXT_DEVT
 
 	  Say N if you are unsure.
 
+config CLOSURE_DEBUG
+	bool "Debug closures"
+	select DEBUG_FS
+	---help---
+	Keeps all active closures in a linked list and provides a debugfs
+	interface to list them, which makes it possible to see asynchronous
+	operations that get stuck.
+
 config NOTIFIER_ERROR_INJECTION
 	tristate "Notifier error injection"
 	depends on DEBUG_KERNEL
lib/Makefile +1 -1
index f42838a..eb468da 100644
@@ -26,7 +26,7 @@ obj-y += bcd.o div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \
 	 bust_spinlocks.o hexdump.o kasprintf.o bitmap.o scatterlist.o \
 	 gcd.o lcm.o list_sort.o uuid.o flex_array.o iovec.o clz_ctz.o \
 	 bsearch.o find_last_bit.o find_next_bit.o llist.o memweight.o kfifo.o \
-	 percpu-refcount.o percpu_ida.o rhashtable.o reciprocal_div.o
+	 percpu-refcount.o percpu_ida.o rhashtable.o reciprocal_div.o closure.o
 obj-y += string_helpers.o
 obj-$(CONFIG_TEST_STRING_HELPERS) += test-string_helpers.o
 obj-y += kstrtox.o
lib/closure.c new file +285 -0

285 lines not on this page · raw message

net/wireless/Kconfig +1 -1
index 22ba971..29c8675 100644
@@ -175,7 +175,7 @@ config CFG80211_INTERNAL_REGDB
 	  Most distributions have a CRDA package.  So if unsure, say N.
 
 config CFG80211_WEXT
-	bool
+	bool "cfg80211 wireless extensions compatibility"
 	depends on CFG80211
 	select WEXT_CORE
 	help
scripts/Makefile.clean +8 -11
index 1bca180..55c96cb 100644
@@ -42,19 +42,19 @@ __clean-files	:= $(extra-y) $(extra-m) $(extra-)       \
 
 __clean-files   := $(filter-out $(no-clean-files), $(__clean-files))
 
-# as clean-files is given relative to the current directory, this adds
-# a $(obj) prefix, except for absolute paths
+# clean-files is given relative to the current directory, unless it
+# starts with $(objtree)/ (which means "./", so do not add "./" unless
+# you want to delete a file from the toplevel object directory).
 
 __clean-files   := $(wildcard                                               \
-                   $(addprefix $(obj)/, $(filter-out /%, $(__clean-files))) \
-		   $(filter /%, $(__clean-files)))
+		   $(addprefix $(obj)/, $(filter-out $(objtree)/%, $(__clean-files))) \
+		   $(filter $(objtree)/%, $(__clean-files)))
 
-# as clean-dirs is given relative to the current directory, this adds
-# a $(obj) prefix, except for absolute paths
+# same as clean-files
 
 __clean-dirs    := $(wildcard                                               \
-                   $(addprefix $(obj)/, $(filter-out /%, $(clean-dirs)))    \
-		   $(filter /%, $(clean-dirs)))
+		   $(addprefix $(obj)/, $(filter-out $(objtree)/%, $(clean-dirs)))    \
+		   $(filter $(objtree)/%, $(clean-dirs)))
 
 # ==========================================================================
 
@@ -71,9 +71,6 @@ endif
 ifneq ($(strip $(__clean-dirs)),)
 	+$(call cmd,cleandir)
 endif
-ifneq ($(strip $(clean-rule)),)
-	+$(clean-rule)
-endif
 	@:
 
 
scripts/package/builddeb +14 -3
index 5972624..88dbf23 100755
@@ -217,9 +217,20 @@ else
 fi
 maintainer="$name <$email>"
 
+# Try to determine distribution
+if [ -n "$KDEB_CHANGELOG_DIST" ]; then
+        distribution=$KDEB_CHANGELOG_DIST
+elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ]; then
+        : # nothing to do in this case
+else
+        distribution="unstable"
+        echo >&2 "Using default distribution of 'unstable' in the changelog"
+        echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
+fi
+
 # Generate a simple changelog template
 cat <<EOF > debian/changelog
-linux-upstream ($packageversion) unstable; urgency=low
+linux-upstream ($packageversion) $distribution; urgency=low
 
   * Custom built Linux kernel.
 
@@ -233,10 +244,10 @@ This is a packacked upstream version of the Linux kernel.
 The sources may be found at most Linux ftp sites, including:
 ftp://ftp.kernel.org/pub/linux/kernel
 
-Copyright: 1991 - 2009 Linus Torvalds and others.
+Copyright: 1991 - 2015 Linus Torvalds and others.
 
 The git repository for mainline kernel development is at:
-git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
+git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
#11 lore raw
In reply to Kent Overstreet
Quoted 9 lines · Kent Overstreet
Quoted 7 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch
someone
calling might_sleep with their state != TASK_RUNNING. The idea was
to
find buggy code locking mutexes after calling prepare_to_wait(),
kind
of like this:

Quoted 6 lines

Ben just told me about this issue.

IMO, the way the code is structured now is correct, I would argue the problem is with the way wait_event() works - they way they have to mess with the global-ish task state when adding a wait_queue_t to a wait_queue_head (who came up with these names?)

Grin, probably related to the guy who made closure_wait() not actually wait.

The advantage to the waitqueue head _t setup is its a very well understood mechanism for sleeping on something without missing wakeups. The locking overhead for the waitqueues can be a problem for lots of waiters on the same queue, but otherwise the overhead is low.

I think closures are too big a hammer for this problem, unless benchmarks show we need the lockless lists (I really like that part). I do hesitate to make big changes here because debugging AIO hangs is horrible. The code is only tested by a few workloads, and we can go a long time before problems are noticed. When people do hit bugs, we only notice the ones where applications pile up in getevents. Otherwise it's just strange performance changes that we can't explain because they are hidden in the app's AIO state machine.

When I first looked at the warning, I didn't realize that might_sleep and friends were setting a preempted flag to make sure the task wasn't removed from the runqueue. So I thought we'd potentially sleep forever (thanks Peter for details++). The real risk here is burning CPU in the running state, potentially a lot of it if the mutex is highly contended. We've probably been hitting this for a while, but since we test AIO performance with fast storage, the burning just made us look faster.

-chris

#12 lore raw
Quoted 19 lines · Chris Mason
Quoted 8 lines · Kent Overstreet
Quoted 4 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

Ben just told me about this issue.

Quoted 7 lines

IMO, the way the code is structured now is correct, I would argue the problem is
with the way wait_event() works - they way they have to mess with the global-ish
task state when adding a wait_queue_t to a wait_queue_head (who came up with
these names?)

Quoted 1 line

Grin, probably related to the guy who made closure_wait() not actually wait.

Hah, touche :)

Quoted 4 lines

The advantage to the waitqueue head _t setup is its a very well understood mechanism for sleeping on something without missing wakeups. The locking overhead for the waitqueues can be a problem for lots of waiters on the same queue, but otherwise the overhead is low.

Well, unfortunately I'm not sure it's possible to sanely implement wake_one() with a lockless singly linked list...

although, maybe we can do it with a lock that's only used for wakups (removing entries from the list), not adding entries to the list... that would still be nice...

Quoted 8 lines

I think closures are too big a hammer for this problem, unless benchmarks show we need the lockless lists (I really like that part). I do hesitate to make big changes here because debugging AIO hangs is horrible. The code is only tested by a few workloads, and we can go a long time before problems are noticed. When people do hit bugs, we only notice the ones where applications pile up in getevents. Otherwise it's just strange performance changes that we can't explain because they are hidden in the app's AIO state machine.

Eh - OTOH, closures are old code that have been quite solid and has been changing very little over the past several years, and they're used very heavily in bcache (and some other out of tree code). The company I'm at now also has a pretty extensive nightly test suite for bcache now that's by extension testing closures too.

And IMO doing this with closures makes the AIO code much cleaner and saner - reading this version, I'm _much_ more confident the AIO code is correct vs. having to fiddle with the task state.

Quoted 7 lines

When I first looked at the warning, I didn't realize that might_sleep and friends were setting a preempted flag to make sure the task wasn't removed from the runqueue. So I thought we'd potentially sleep forever (thanks Peter for details++). The real risk here is burning CPU in the running state, potentially a lot of it if the mutex is highly contended. We've probably been hitting this for a while, but since we test AIO performance with fast storage, the burning just made us look faster.

This issue btw did come up in reviews when I first wrote this code, people definitely saw what was going on at the time (Andrew Morton, among others). The reasoning was that another that's going to sleep is going to just be squashing our task state setting before they sleep, so it wasn't going to deadlock. And then if the code does sleep and sets task state back to TASK_RUNNING - because we just slept we're probably going to want to recheck the conditional again, which here is pretty cheap.

So I'm still not sure it's a real issue (at least with the mutex_lock() usage; what Ben was telling me about copy_to_user() sounded more concerning).

OTOH, we recently ran into this same kind of bug in some (out of tree) code of our own, where the conditional passed to wait_event() was sending RPCs which was then _always_ setting the task state back to TASK_RUNNING - so a few weeks ago a coworker brought back closure_wait_event() for that. That bug also made me a bit more concerned about this type of issue.

I do also thing it's worth having a generic version of wait_event() that anyone can use with arbitrary conditional expressions without worrying about the safety of things that might muck with task state - I do feel pretty strongly that that would find good uses outside of just the AIO code. Lately I've been able to improve a lot of code by restructuring it to use wait_event(), even when the conditional is another large function - it a big win to be able to use standard infrastructure that solves a pretty subtle issue. Just think of it as a better wait_event() :)

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to [email protected]. For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>

maintainer
#13 lore raw
In reply to Chris Mason

Hi Chris,

Quoted 4 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

...

Quoted 5 lines

This has been lightly tested and hasn't been benchmarked, so RFC for now.

After mulling this over, I think your patch is probably the safest for us to apply at present as it is also the most amenable to backporting. Are you okay with removing the RFC status? I still have my concerns about possible task wakeups causing problems with filesystem code if the copy_to_user() takes a page fault, but those can be addressed separately. Kent's closures are an option for the future, but I think it would be more appropriate for that new code to be introduced in the next merge window.

-ben

Signature · 7 lines
"Thought is the essence of where you are now."

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in
the body to [email protected].  For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>
#14 lore raw
Quoted 17 lines · Benjamin LaHaise

Hi Chris,

Quoted 7 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch
someone
calling might_sleep with their state != TASK_RUNNING. The idea was
to
find buggy code locking mutexes after calling prepare_to_wait(),
kind
of like this:

...

Quoted 5 lines

This has been lightly tested and hasn't been benchmarked, so RFC for now.

Quoted 8 lines

After mulling this over, I think your patch is probably the safest for us to apply at present as it is also the most amenable to backporting. Are you okay with removing the RFC status? I still have my concerns about possible task wakeups causing problems with filesystem code if the copy_to_user() takes a page fault, but those can be addressed separately. Kent's closures are an option for the future, but I think it would be more appropriate for that new code to be introduced in the next merge window.

I'll resend the patch with improved comments, and get perf tests done on fast storage.

-chris

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to [email protected]. For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>

#15 lore raw
In reply to Chris Mason
Quoted 7 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

[  445.464634] WARNING: CPU: 22 PID: 4367 at kernel/sched/core.c:7303 __might_sleep+0x9a/0xb0()
[  445.481699] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff81093f68>] prepare_to_wait_event+0x68/0x120

Hi Chris,

This still isn't fixed in -rc5 - I'm hitting it multiple times in every xfstests run I do. What's the current status of your fix?

Cheers,

Dave.

Signature · 2 lines
Dave Chinner
[email protected]
#16 lore raw
Quoted 6 lines · Dave Chinner
Quoted 5 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

Quoted 7 lines
Quoted 2 lines
[  445.464634] WARNING: CPU: 22 PID: 4367 at kernel/sched/core.c:7303 __might_sleep+0x9a/0xb0()
[  445.481699] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff81093f68>] prepare_to_wait_event+0x68/0x120

Hi Chris,

This still isn't fixed in -rc5 - I'm hitting it multiple times in every xfstests run I do. What's the current status of your fix?

I worried this is going to have a perf hit, so I talked Jens into double checking it on one of his super high iop boxes.

-chris

--
To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to [email protected]. For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"[email protected]">[email protected]</a>

#17 lore raw
Quoted 10 lines · Chris Mason
Quoted 9 lines · Dave Chinner
Quoted 7 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

[  445.464634] WARNING: CPU: 22 PID: 4367 at kernel/sched/core.c:7303 __might_sleep+0x9a/0xb0()
[  445.481699] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff81093f68>] prepare_to_wait_event+0x68/0x120
Quoted 8 lines
Quoted 4 lines

Hi Chris,

This still isn't fixed in -rc5 - I'm hitting it multiple times in every xfstests run I do. What's the current status of your fix?

I worried this is going to have a perf hit, so I talked Jens into double checking it on one of his super high iop boxes.

What happened here?
Did Jens finished his testing?
Was there a patch posted by Chris?

As a feedback...
I retested with Linux v3.19-rc7 and fio v2.2.5 and the warning is gone.

Is this due to...?

commit 00845eb968ead28007338b2bb852b8beef816583
"sched: don't cause task state changes in nested sleep debugging"

Thanks.

- Sedat -

root@fambox:~# LC_ALL=C rm -v -f randread.* && sync && sync && sync && echo 3 > /proc/sys/vm/drop_caches && LC_ALL=C fio-2.2.5 --name=randread --rw=randread --bs=4k --ioengine=libaio --iodepth=64 --direct=1 --numjobs=1 --size=1024M && LC_ALL=C rm -v -f randread.*
randread: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=64
fio-2.2.5
Starting 1 process
randread: Laying out IO file(s) (1 file(s) / 1024MB)
Jobs: 1 (f=1): [r(1)] [100.0% done] [240.9MB/0KB/0KB /s] [61.5K/0/0 iops] [eta 00m:00s]
randread: (groupid=0, jobs=1): err= 0: pid=4764: Tue Feb  3 10:08:38 2015
  read : io=1024.0MB, bw=245453KB/s, iops=61363, runt=  4272msec
    slat (usec): min=7, max=286, avg=11.29, stdev= 2.24
    clat (usec): min=8, max=1639, avg=1030.07, stdev=49.09
     lat (usec): min=18, max=1774, avg=1041.56, stdev=49.51
    clat percentiles (usec):
     |  1.00th=[  988],  5.00th=[  996], 10.00th=[ 1004], 20.00th=[ 1012],
     | 30.00th=[ 1012], 40.00th=[ 1020], 50.00th=[ 1020], 60.00th=[ 1032],
     | 70.00th=[ 1032], 80.00th=[ 1032], 90.00th=[ 1048], 95.00th=[ 1064],
     | 99.00th=[ 1336], 99.50th=[ 1352], 99.90th=[ 1480], 99.95th=[ 1512],
     | 99.99th=[ 1576]
    bw (KB  /s): min=237936, max=247120, per=99.93%, avg=245277.00, stdev=3003.28
    lat (usec) : 10=0.01%, 50=0.01%, 100=0.01%, 250=0.01%, 500=0.01%
    lat (usec) : 750=0.01%, 1000=6.29%
    lat (msec) : 2=93.69%
  cpu          : usr=23.74%, sys=76.15%, ctx=12, majf=0, minf=72
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued    : total=r=262144/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
READ: io=1024.0MB, aggrb=245453KB/s, minb=245453KB/s, maxb=245453KB/s, mint=4272msec, maxt=4272msec

Disk stats (read/write):
loop0: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00%
removed `randread.0.0'

root@fambox:~# dmesg | tail
[   18.132273] audit: type=1400 audit(1422954272.091:9): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=979 comm="apparmor_parser"
[   18.132279] audit: type=1400 audit(1422954272.091:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=979 comm="apparmor_parser"
[   18.132584] audit: type=1400 audit(1422954272.091:11): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=1020 comm="apparmor_parser"
[   19.458920] init: failsafe main process (1119) killed by TERM signal
[   23.419654] r8169 0000:02:00.0 eth0: link down
[   23.419722] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   57.815270] usb 4-1.5: USB disconnect, device number 4
[   68.246186] PPP BSD Compression module registered
[   68.251269] PPP Deflate Compression module registered
[  233.195250] bash (4695): drop_caches: 3

-dileks // 03-FEB-2015

#18 lore raw
Quoted 27 lines · Sedat Dilek
Quoted 10 lines · Chris Mason
Quoted 9 lines · Dave Chinner
Quoted 7 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

[  445.464634] WARNING: CPU: 22 PID: 4367 at kernel/sched/core.c:7303 __might_sleep+0x9a/0xb0()
[  445.481699] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff81093f68>] prepare_to_wait_event+0x68/0x120
Quoted 8 lines
Quoted 4 lines

Hi Chris,

This still isn't fixed in -rc5 - I'm hitting it multiple times in every xfstests run I do. What's the current status of your fix?

I worried this is going to have a perf hit, so I talked Jens into double checking it on one of his super high iop boxes.

What happened here?
Did Jens finished his testing?
Was there a patch posted by Chris?

As a feedback...
I retested with Linux v3.19-rc7 and fio v2.2.5 and the warning is gone.

Quoted 7 lines

Is this due to...?

commit 00845eb968ead28007338b2bb852b8beef816583
"sched: don't cause task state changes in nested sleep debugging"

Thanks.

I have done some more testing, also with a Linux v3.19-rc7 and block-loopmq patchset.
Unfortunately, the warning still exists.

- Sedat -

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.19.0-rc7-1-loopmq-small ([email protected]@fambox) (gcc version 4.9.2 (Ubuntu 4.9.2-0ubuntu1~12.04) ) #1 SMP Tue Feb 3 10:42:00 CET 2015
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.19.0-rc7-1-loopmq-small root=UUID=001AADA61AAD9964 loop=/ubuntu/disks/root.disk ro
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] Disabled fast string operations
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d7ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d800-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000201fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020200000-0x000000003fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000040000000-0x00000000401fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000040200000-0x00000000d9c9efff] usable
[    0.000000] BIOS-e820: [mem 0x00000000d9c9f000-0x00000000dae7efff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000dae7f000-0x00000000daf9efff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000daf9f000-0x00000000daffefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000dafff000-0x00000000daffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000db000000-0x00000000df9fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed08000-0x00000000fed08fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed10000-0x00000000fed19fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffd80000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000011fdfffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.6 present.
[    0.000000] DMI: SAMSUNG ELECTRONICS CO., LTD. 530U3BI/530U4BI/530U4BH/530U3BI/530U4BI/530U4BH, BIOS 13XK 03/28/2013
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] AGP: No AGP bridge found
[    0.000000] e820: last_pfn = 0x11fe00 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 000000000 mask F80000000 write-back
[    0.000000]   1 base 080000000 mask FC0000000 write-back
[    0.000000]   2 base 0C0000000 mask FE0000000 write-back
[    0.000000]   3 base 0DC000000 mask FFC000000 uncachable
[    0.000000]   4 base 0DB000000 mask FFF000000 uncachable
[    0.000000]   5 base 100000000 mask FE0000000 write-back
[    0.000000]   6 base 11FE00000 mask FFFE00000 uncachable
[    0.000000]   7 base 0FFC00000 mask FFFC00000 write-protect
[    0.000000]   8 disabled
[    0.000000]   9 disabled
[    0.000000] PAT configuration [0-7]: WB  WC  UC- UC  WB  WC  UC- UC  
[    0.000000] e820: last_pfn = 0xdb000 max_arch_pfn = 0x400000000
[    0.000000] found SMP MP-table at [mem 0x000f00e0-0x000f00ef] mapped at [ffff8800000f00e0]
[    0.000000] Scanning 1 areas for low memory corruption
[    0.000000] Base memory trampoline at [ffff880000097000] 97000 size 24576
[    0.000000] reserving inaccessible SNB gfx pages
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] BRK [0x02cab000, 0x02cabfff] PGTABLE
[    0.000000] BRK [0x02cac000, 0x02cacfff] PGTABLE
[    0.000000] BRK [0x02cad000, 0x02cadfff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x11fc00000-0x11fdfffff]
[    0.000000]  [mem 0x11fc00000-0x11fdfffff] page 2M
[    0.000000] BRK [0x02cae000, 0x02caefff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x100000000-0x11fbfffff]
[    0.000000]  [mem 0x100000000-0x11fbfffff] page 2M
[    0.000000] init_memory_mapping: [mem 0xc0000000-0xd9c9efff]
[    0.000000]  [mem 0xc0000000-0xd9bfffff] page 2M
[    0.000000]  [mem 0xd9c00000-0xd9c9efff] page 4k
[    0.000000] BRK [0x02caf000, 0x02caffff] PGTABLE
[    0.000000] BRK [0x02cb0000, 0x02cb0fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0xdafff000-0xdaffffff]
[    0.000000]  [mem 0xdafff000-0xdaffffff] page 4k
[    0.000000] init_memory_mapping: [mem 0x00100000-0x1fffffff]
[    0.000000]  [mem 0x00100000-0x001fffff] page 4k
[    0.000000]  [mem 0x00200000-0x1fffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x20200000-0x3fffffff]
[    0.000000]  [mem 0x20200000-0x3fffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x40200000-0xbfffffff]
[    0.000000]  [mem 0x40200000-0xbfffffff] page 2M
[    0.000000] RAMDISK: [mem 0x37938000-0x37c93fff]
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI: RSDP 0x00000000000F0100 000024 (v02 SECCSD)
[    0.000000] ACPI: XSDT 0x00000000DAFFE170 00008C (v01 SECCSD LH43STAR 00000002 PTEC 00000002)
[    0.000000] ACPI: FACP 0x00000000DAFEF000 00010C (v05 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: DSDT 0x00000000DAFF2000 0083AC (v02 SECCSD SNB-CPT  00000000 INTL 20061109)
[    0.000000] ACPI: FACS 0x00000000DAF47000 000040
[    0.000000] ACPI: SLIC 0x00000000DAFFD000 000176 (v01 SECCSD LH43STAR 00000002 PTEC 00000001)
[    0.000000] ACPI: SSDT 0x00000000DAFFB000 001068 (v01 SECCSD PtidDevc 00001000 INTL 20061109)
[    0.000000] ACPI: ASF! 0x00000000DAFF1000 0000A5 (v32 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: HPET 0x00000000DAFEE000 000038 (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: APIC 0x00000000DAFED000 000098 (v03 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: MCFG 0x00000000DAFEC000 00003C (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: SSDT 0x00000000DAFEB000 000804 (v01 PmRef  Cpu0Ist  00003000 INTL 20061109)
[    0.000000] ACPI: SSDT 0x00000000DAFEA000 000996 (v01 PmRef  CpuPm    00003000 INTL 20061109)
[    0.000000] ACPI: UEFI 0x00000000DAFE9000 00003E (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: UEFI 0x00000000DAFE8000 000042 (v01 PTL    COMBUF   00000001 PTL  00000001)
[    0.000000] ACPI: UEFI 0x00000000DAFE7000 00026A (v01 SECCSD LH43STAR 00000002 PTL  00000002)
[    0.000000] ACPI: SSDT 0x00000000DAFE6000 0000D0 (v01 Iffs   IffsAsl  00003000 INTL 20061109)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] No NUMA configuration found
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000011fdfffff]
[    0.000000] NODE_DATA(0) allocated [mem 0x11fdf8000-0x11fdfcfff]
[    0.000000]  [ffffea0000000000-ffffea00047fffff] PMD -> [ffff88011b400000-ffff88011f3fffff] on node 0
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   [mem 0x100000000-0x11fdfffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0009cfff]
[    0.000000]   node   0: [mem 0x00100000-0x1fffffff]
[    0.000000]   node   0: [mem 0x20200000-0x3fffffff]
[    0.000000]   node   0: [mem 0x40200000-0xd9c9efff]
[    0.000000]   node   0: [mem 0xdafff000-0xdaffffff]
[    0.000000]   node   0: [mem 0x100000000-0x11fdfffff]
[    0.000000] Initmem setup node 0 [mem 0x00001000-0x11fdfffff]
[    0.000000] On node 0 totalpages: 1021500
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 156 pages reserved
[    0.000000]   DMA zone: 3996 pages, LIFO batch:0
[    0.000000]   DMA32 zone: 13859 pages used for memmap
[    0.000000]   DMA32 zone: 886944 pages, LIFO batch:31
[    0.000000]   Normal zone: 2040 pages used for memmap
[    0.000000]   Normal zone: 130560 pages, LIFO batch:31
[    0.000000] Reserving Intel graphics stolen memory at 0xdba00000-0xdf9fffff
[    0.000000] ACPI: PM-Timer IO Port: 0x408
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x02] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x03] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.000000] ACPI: IOAPIC (id[0x0e] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 14, version 32, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a301 base: 0xfed00000
[    0.000000] smpboot: Allowing 8 CPUs, 4 hotplug CPUs
[    0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009d000-0x0009dfff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000dffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000e0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x20000000-0x201fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x40000000-0x401fffff]
[    0.000000] PM: Registered nosave memory: [mem 0xd9c9f000-0xdae7efff]
[    0.000000] PM: Registered nosave memory: [mem 0xdae7f000-0xdaf9efff]
[    0.000000] PM: Registered nosave memory: [mem 0xdaf9f000-0xdaffefff]
[    0.000000] PM: Registered nosave memory: [mem 0xdb000000-0xdf9fffff]
[    0.000000] PM: Registered nosave memory: [mem 0xdfa00000-0xf7ffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xf8000000-0xfbffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfc000000-0xfebfffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfec00000-0xfec00fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfec01000-0xfed07fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed08000-0xfed08fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed09000-0xfed0ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed10000-0xfed19fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed1a000-0xfed1bfff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed1c000-0xfed1ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed20000-0xfedfffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfee00000-0xfee00fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfee01000-0xffd7ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xffd80000-0xffffffff]
[    0.000000] e820: [mem 0xdfa00000-0xf7ffffff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:8 nr_node_ids:1
[    0.000000] PERCPU: Embedded 32 pages/cpu @ffff88011fa00000 s91456 r8192 d31424 u262144
[    0.000000] pcpu-alloc: s91456 r8192 d31424 u262144 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 
[    0.000000] Built 1 zonelists in Node order, mobility grouping on.  Total pages: 1005381
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.19.0-rc7-1-loopmq-small root=UUID=001AADA61AAD9964 loop=/ubuntu/disks/root.disk ro
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] xsave: enabled xstate_bv 0x7, cntxt size 0x340 using standard form
[    0.000000] AGP: Checking aperture...
[    0.000000] AGP: No AGP bridge found
[    0.000000] Calgary: detecting Calgary via BIOS EBDA area
[    0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
[    0.000000] Memory: 3919084K/4086000K available (7596K kernel code, 1284K rwdata, 3372K rodata, 1384K init, 14360K bss, 166916K reserved, 0K cma-reserved)
[    0.000000] Hierarchical RCU implementation.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=8.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=8
[    0.000000] NR_IRQS:16640 nr_irqs:488 16
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[    0.000000] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.000000] ... MAX_LOCK_DEPTH:          48
[    0.000000] ... MAX_LOCKDEP_KEYS:        8191
[    0.000000] ... CLASSHASH_SIZE:          4096
[    0.000000] ... MAX_LOCKDEP_ENTRIES:     32768
[    0.000000] ... MAX_LOCKDEP_CHAINS:      65536
[    0.000000] ... CHAINHASH_SIZE:          32768
[    0.000000]  memory used by lock dependency info: 8159 kB
[    0.000000]  per task-struct memory footprint: 1920 bytes
[    0.000000] hpet clockevent registered
[    0.000000] tsc: Fast TSC calibration using PIT
[    0.000000] tsc: Detected 1596.534 MHz processor
[    0.000075] Calibrating delay loop (skipped), value calculated using timer frequency.. 3193.06 BogoMIPS (lpj=6386136)
[    0.000083] pid_max: default: 32768 minimum: 301
[    0.000107] ACPI: Core revision 20141107
[    0.018216] ACPI: All ACPI Tables successfully acquired
[    0.020003] Security Framework initialized
[    0.020015] AppArmor: AppArmor initialized
[    0.020019] Yama: becoming mindful.
[    0.020951] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
[    0.022227] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.022705] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
[    0.022724] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes)
[    0.023747] Initializing cgroup subsys memory
[    0.023763] Initializing cgroup subsys devices
[    0.023792] Initializing cgroup subsys freezer
[    0.023819] Initializing cgroup subsys blkio
[    0.023826] Initializing cgroup subsys perf_event
[    0.023835] Initializing cgroup subsys hugetlb
[    0.023909] Disabled fast string operations
[    0.023913] CPU: Physical Processor ID: 0
[    0.023916] CPU: Processor Core ID: 0
[    0.023923] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.023923] ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)
[    0.023932] mce: CPU supports 7 MCE banks
[    0.023946] CPU0: Thermal monitoring enabled (TM1)
[    0.023966] Last level iTLB entries: 4KB 512, 2MB 8, 4MB 8
[    0.023966] Last level dTLB entries: 4KB 512, 2MB 32, 4MB 32, 1GB 0
[    0.024165] Freeing SMP alternatives memory: 24K (ffffffff81e9d000 - ffffffff81ea3000)
[    0.025481] ftrace: allocating 28220 entries in 111 pages
[    0.042117] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.081785] smpboot: CPU0: Intel(R) Core(TM) i5-2467M CPU @ 1.60GHz (fam: 06, model: 2a, stepping: 07)
[    0.081800] TSC deadline timer enabled
[    0.081843] Performance Events: PEBS fmt1+, 16-deep LBR, SandyBridge events, full-width counters, Intel PMU driver.
[    0.081880] ... version:                3
[    0.081883] ... bit width:              48
[    0.081886] ... generic registers:      4
[    0.081889] ... value mask:             0000ffffffffffff
[    0.081892] ... max period:             0000ffffffffffff
[    0.081895] ... fixed-purpose events:   3
[    0.081897] ... event mask:             000000070000000f
[    0.083447] x86: Booting SMP configuration:
[    0.083452] .... node  #0, CPUs:      #1
[    0.094406] Disabled fast string operations
[    0.096861] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[    0.097260]  #2
[    0.108208] Disabled fast string operations
[    0.110683]  #3<6>[    0.121633] Disabled fast string operations
[    0.123786] x86: Booted up 1 node, 4 CPUs
[    0.123794] smpboot: Total of 4 processors activated (12772.27 BogoMIPS)
[    0.128482] devtmpfs: initialized
[    0.133651] evm: security.selinux
[    0.133656] evm: security.SMACK64
[    0.133658] evm: security.capability
[    0.133800] PM: Registering ACPI NVS region [mem 0xdae7f000-0xdaf9efff] (1179648 bytes)
[    0.135204] NET: Registered protocol family 16
[    0.143900] cpuidle: using governor ladder
[    0.154366] cpuidle: using governor menu
[    0.154521] ACPI: bus type PCI registered
[    0.154774] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xf8000000-0xfbffffff] (base 0xf8000000)
[    0.154782] PCI: MMCONFIG at [mem 0xf8000000-0xfbffffff] reserved in E820
[    0.154912] PCI: Using configuration type 1 for base access
[    0.171786] ACPI: Added _OSI(Module Device)
[    0.171792] ACPI: Added _OSI(Processor Device)
[    0.171796] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.171800] ACPI: Added _OSI(Processor Aggregator Device)
[    0.183557] ACPI: Executed 1 blocks of module-level executable AML code
[    0.190415] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[    0.192034] ACPI: Dynamic OEM Table Load:
[    0.192058] ACPI: SSDT 0xFFFF88011A7B0800 000688 (v01 PmRef  Cpu0Cst  00003001 INTL 20061109)
[    0.194048] ACPI: Dynamic OEM Table Load:
[    0.194069] ACPI: SSDT 0xFFFF88011A7A9800 000303 (v01 PmRef  ApIst    00003000 INTL 20061109)
[    0.195923] ACPI: Dynamic OEM Table Load:
[    0.195943] ACPI: SSDT 0xFFFF88011A7B1E00 000119 (v01 PmRef  ApCst    00003000 INTL 20061109)
[    0.200277] ACPI: Interpreter enabled
[    0.200298] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20141107/hwxface-580)
[    0.200348] ACPI: (supports S0 S1 S3 S4 S5)
[    0.200352] ACPI: Using IOAPIC for interrupt routing
[    0.200411] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.217424] ACPI: Power Resource [FN00] (off)
[    0.217785] ACPI: Power Resource [FN01] (off)
[    0.218056] ACPI: Power Resource [FN02] (off)
[    0.218325] ACPI: Power Resource [FN03] (off)
[    0.218592] ACPI: Power Resource [FN04] (off)
[    0.220617] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-3e])
[    0.220628] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[    0.221103] \_SB_.PCI0:_OSC invalid UUID
[    0.221105] _OSC request data:1 1f 0 
[    0.221111] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[    0.222301] PCI host bridge to bus 0000:00
[    0.222307] pci_bus 0000:00: root bus resource [bus 00-3e]
[    0.222312] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7]
[    0.222316] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.222320] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.222324] pci_bus 0000:00: root bus resource [mem 0xdfa00000-0xfeafffff]
[    0.222329] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed44fff]
[    0.222377] pci 0000:00:00.0: [8086:0104] type 00 class 0x060000
[    0.222711] pci 0000:00:02.0: [8086:0116] type 00 class 0x030000
[    0.222731] pci 0000:00:02.0: reg 0x10: [mem 0xf0000000-0xf03fffff 64bit]
[    0.222742] pci 0000:00:02.0: reg 0x18: [mem 0xe0000000-0xefffffff 64bit pref]
[    0.222750] pci 0000:00:02.0: reg 0x20: [io  0x3000-0x303f]
[    0.223140] pci 0000:00:16.0: [8086:1c3a] type 00 class 0x078000
[    0.223182] pci 0000:00:16.0: reg 0x10: [mem 0xf0705000-0xf070500f 64bit]
[    0.223329] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold
[    0.223632] pci 0000:00:1a.0: [8086:1c2d] type 00 class 0x0c0320
[    0.223670] pci 0000:00:1a.0: reg 0x10: [mem 0xf070a000-0xf070a3ff]
[    0.223845] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
[    0.224120] pci 0000:00:1b.0: [8086:1c20] type 00 class 0x040300
[    0.224155] pci 0000:00:1b.0: reg 0x10: [mem 0xf0700000-0xf0703fff 64bit]
[    0.224326] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.224476] pci 0000:00:1b.0: System wakeup disabled by ACPI
[    0.224612] pci 0000:00:1c.0: [8086:1c10] type 01 class 0x060400
[    0.224784] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.224921] pci 0000:00:1c.0: System wakeup disabled by ACPI
[    0.225059] pci 0000:00:1c.3: [8086:1c16] type 01 class 0x060400
[    0.225231] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
[    0.225364] pci 0000:00:1c.3: System wakeup disabled by ACPI
[    0.225500] pci 0000:00:1c.4: [8086:1c18] type 01 class 0x060400
[    0.225678] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold
[    0.225950] pci 0000:00:1d.0: [8086:1c26] type 00 class 0x0c0320
[    0.225988] pci 0000:00:1d.0: reg 0x10: [mem 0xf0709000-0xf07093ff]
[    0.226163] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[    0.226419] pci 0000:00:1f.0: [8086:1c49] type 00 class 0x060100
[    0.226827] pci 0000:00:1f.2: [8086:1c03] type 00 class 0x010601
[    0.226868] pci 0000:00:1f.2: reg 0x10: [io  0x3088-0x308f]
[    0.226884] pci 0000:00:1f.2: reg 0x14: [io  0x3094-0x3097]
[    0.226901] pci 0000:00:1f.2: reg 0x18: [io  0x3080-0x3087]
[    0.226917] pci 0000:00:1f.2: reg 0x1c: [io  0x3090-0x3093]
[    0.226933] pci 0000:00:1f.2: reg 0x20: [io  0x3060-0x307f]
[    0.226949] pci 0000:00:1f.2: reg 0x24: [mem 0xf0708000-0xf07087ff]
[    0.227062] pci 0000:00:1f.2: PME# supported from D3hot
[    0.227309] pci 0000:00:1f.3: [8086:1c22] type 00 class 0x0c0500
[    0.227341] pci 0000:00:1f.3: reg 0x10: [mem 0xf0704000-0xf07040ff 64bit]
[    0.227386] pci 0000:00:1f.3: reg 0x20: [io  0xefa0-0xefbf]
[    0.228087] pci 0000:01:00.0: [8086:0091] type 00 class 0x028000
[    0.228462] pci 0000:01:00.0: reg 0x10: [mem 0xf0600000-0xf0601fff 64bit]
[    0.230175] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[    0.230479] pci 0000:01:00.0: System wakeup disabled by ACPI
[    0.236197] pci 0000:00:1c.0: PCI bridge to [bus 01]
[    0.236211] pci 0000:00:1c.0:   bridge window [mem 0xf0600000-0xf06fffff]
[    0.236449] pci 0000:02:00.0: [10ec:8168] type 00 class 0x020000
[    0.236541] pci 0000:02:00.0: reg 0x10: [io  0x2000-0x20ff]
[    0.236678] pci 0000:02:00.0: reg 0x18: [mem 0xf0404000-0xf0404fff 64bit pref]
[    0.236763] pci 0000:02:00.0: reg 0x20: [mem 0xf0400000-0xf0403fff 64bit pref]
[    0.237238] pci 0000:02:00.0: supports D1 D2
[    0.237240] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.237396] pci 0000:02:00.0: System wakeup disabled by ACPI
[    0.244091] pci 0000:00:1c.3: PCI bridge to [bus 02]
[    0.244100] pci 0000:00:1c.3:   bridge window [io  0x2000-0x2fff]
[    0.244115] pci 0000:00:1c.3:   bridge window [mem 0xf0400000-0xf04fffff 64bit pref]
[    0.244322] pci 0000:03:00.0: [1b21:1042] type 00 class 0x0c0330
[    0.244370] pci 0000:03:00.0: reg 0x10: [mem 0xf0500000-0xf0507fff 64bit]
[    0.244617] pci 0000:03:00.0: PME# supported from D3hot D3cold
[    0.244860] pci 0000:00:1c.4: PCI bridge to [bus 03]
[    0.244873] pci 0000:00:1c.4:   bridge window [mem 0xf0500000-0xf05fffff]
[    0.246537] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 10 *11 12 14 15)
[    0.246676] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.246815] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 *10 11 12 14 15)
[    0.246949] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 *10 11 12 14 15)
[    0.247084] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 10 11 12 14 15) *9
[    0.247217] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.247353] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 10 *11 12 14 15)
[    0.247486] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 10 11 12 14 15) *9
[    0.248627] ACPI: Enabled 4 GPEs in block 00 to 3F
[    0.248750] ACPI : EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62
[    0.249121] ACPI : EC: 0 stale EC events cleared
[    0.249742] vgaarb: setting as boot device: PCI:0000:00:02.0
[    0.249747] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.249758] vgaarb: loaded
[    0.249761] vgaarb: bridge control possible 0000:00:02.0
[    0.250391] SCSI subsystem initialized
[    0.250533] libata version 3.00 loaded.
[    0.250607] ACPI: bus type USB registered
[    0.250665] usbcore: registered new interface driver usbfs
[    0.250699] usbcore: registered new interface driver hub
[    0.250762] usbcore: registered new device driver usb
[    0.251139] PCI: Using ACPI for IRQ routing
[    0.254708] PCI: pci_cache_line_size set to 64 bytes
[    0.254834] e820: reserve RAM buffer [mem 0x0009d800-0x0009ffff]
[    0.254841] e820: reserve RAM buffer [mem 0xd9c9f000-0xdbffffff]
[    0.254844] e820: reserve RAM buffer [mem 0xdb000000-0xdbffffff]
[    0.254846] e820: reserve RAM buffer [mem 0x11fe00000-0x11fffffff]
[    0.255468] NetLabel: Initializing
[    0.255473] NetLabel:  domain hash size = 128
[    0.255475] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.255525] NetLabel:  unlabeled traffic allowed by default
[    0.255688] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[    0.255699] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[    0.257786] Switched to clocksource hpet
[    0.296662] AppArmor: AppArmor Filesystem Enabled
[    0.296883] pnp: PnP ACPI init
[    0.297476] system 00:00: [io  0x0680-0x069f] has been reserved
[    0.297483] system 00:00: [io  0x1000-0x100f] has been reserved
[    0.297488] system 00:00: [io  0x5000-0x5003] has been reserved
[    0.297493] system 00:00: [io  0xffff] has been reserved
[    0.297498] system 00:00: [io  0x0400-0x0453] could not be reserved
[    0.297503] system 00:00: [io  0x0458-0x047f] has been reserved
[    0.297507] system 00:00: [io  0x0500-0x057f] has been reserved
[    0.297512] system 00:00: [io  0x0a00-0x0a0f] has been reserved
[    0.297516] system 00:00: [io  0x164e-0x164f] has been reserved
[    0.297521] system 00:00: [io  0x5000-0x500f] could not be reserved
[    0.297553] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.297642] pnp 00:01: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.297792] system 00:02: [io  0x0454-0x0457] has been reserved
[    0.297800] system 00:02: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active)
[    0.297889] pnp 00:03: Plug and Play ACPI device, IDs PNP0303 (active)
[    0.297995] pnp 00:04: Plug and Play ACPI device, IDs ETD0b00 SYN0002 PNP0f13 (active)
[    0.298346] system 00:05: [mem 0xfed1c000-0xfed1ffff] has been reserved
[    0.298352] system 00:05: [mem 0xfed10000-0xfed17fff] has been reserved
[    0.298357] system 00:05: [mem 0xfed18000-0xfed18fff] has been reserved
[    0.298362] system 00:05: [mem 0xfed19000-0xfed19fff] has been reserved
[    0.298367] system 00:05: [mem 0xf8000000-0xfbffffff] has been reserved
[    0.298372] system 00:05: [mem 0xfed20000-0xfed3ffff] has been reserved
[    0.298376] system 00:05: [mem 0xfed90000-0xfed93fff] has been reserved
[    0.298381] system 00:05: [mem 0xfed45000-0xfed8ffff] has been reserved
[    0.298387] system 00:05: [mem 0xff000000-0xffffffff] could not be reserved
[    0.298392] system 00:05: [mem 0xfee00000-0xfeefffff] could not be reserved
[    0.298399] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.299204] system 00:06: Plug and Play ACPI device, IDs PNP0c01 (active)
[    0.299261] pnp: PnP ACPI: found 7 devices
[    0.309367] pci 0000:00:1c.0: PCI bridge to [bus 01]
[    0.309381] pci 0000:00:1c.0:   bridge window [mem 0xf0600000-0xf06fffff]
[    0.309398] pci 0000:00:1c.3: PCI bridge to [bus 02]
[    0.309404] pci 0000:00:1c.3:   bridge window [io  0x2000-0x2fff]
[    0.309418] pci 0000:00:1c.3:   bridge window [mem 0xf0400000-0xf04fffff 64bit pref]
[    0.309431] pci 0000:00:1c.4: PCI bridge to [bus 03]
[    0.309441] pci 0000:00:1c.4:   bridge window [mem 0xf0500000-0xf05fffff]
[    0.309459] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7]
[    0.309461] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff]
[    0.309463] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
[    0.309465] pci_bus 0000:00: resource 7 [mem 0xdfa00000-0xfeafffff]
[    0.309467] pci_bus 0000:00: resource 8 [mem 0xfed40000-0xfed44fff]
[    0.309469] pci_bus 0000:01: resource 1 [mem 0xf0600000-0xf06fffff]
[    0.309472] pci_bus 0000:02: resource 0 [io  0x2000-0x2fff]
[    0.309474] pci_bus 0000:02: resource 2 [mem 0xf0400000-0xf04fffff 64bit pref]
[    0.309476] pci_bus 0000:03: resource 1 [mem 0xf0500000-0xf05fffff]
[    0.309579] NET: Registered protocol family 2
[    0.310036] TCP established hash table entries: 32768 (order: 6, 262144 bytes)
[    0.310478] TCP bind hash table entries: 32768 (order: 9, 2097152 bytes)
[    0.312724] TCP: Hash tables configured (established 32768 bind 32768)
[    0.312806] TCP: reno registered
[    0.312870] UDP hash table entries: 2048 (order: 6, 327680 bytes)
[    0.313221] UDP-Lite hash table entries: 2048 (order: 6, 327680 bytes)
[    0.313815] NET: Registered protocol family 1
[    0.313844] pci 0000:00:02.0: Video device with shadowed ROM
[    0.315293] PCI: CLS 64 bytes, default 64
[    0.315523] Trying to unpack rootfs image as initramfs...
[    0.394210] Freeing initrd memory: 3440K (ffff880037938000 - ffff880037c94000)
[    0.394287] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.394293] software IO TLB [mem 0xd5c9f000-0xd9c9f000] (64MB) mapped at [ffff8800d5c9f000-ffff8800d9c9efff]
[    0.394958] RAPL PMU detected, hw unit 2^-16 Joules, API unit is 2^-32 Joules, 3 fixed counters 163840 ms ovfl timer
[    0.395157] microcode: CPU0 sig=0x206a7, pf=0x10, revision=0x28
[    0.395177] microcode: CPU1 sig=0x206a7, pf=0x10, revision=0x28
[    0.395200] microcode: CPU2 sig=0x206a7, pf=0x10, revision=0x28
[    0.395220] microcode: CPU3 sig=0x206a7, pf=0x10, revision=0x28
[    0.395379] microcode: Microcode Update Driver: v2.00 <[email protected]>, Peter Oruba
[    0.395441] Scanning for low memory corruption every 60 seconds
[    0.396610] futex hash table entries: 2048 (order: 6, 262144 bytes)
[    0.396774] Initialise system trusted keyring
[    0.396897] audit: initializing netlink subsys (disabled)
[    0.396967] audit: type=2000 audit(1422960320.392:1): initialized
[    0.397864] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    0.398320] VFS: Disk quotas dquot_6.5.2
[    0.398358] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.399190] fuse init (API version 7.23)
[    0.400271] Key type asymmetric registered
[    0.400291] Asymmetric key parser 'x509' registered
[    0.400345] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    0.400479] io scheduler noop registered
[    0.400486] io scheduler deadline registered (default)
[    0.400517] io scheduler cfq registered
[    0.400522] start plist test
[    0.403097] end plist test
[    0.404079] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[    0.404206] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[    0.404397] intel_idle: MWAIT substates: 0x21120
[    0.404398] intel_idle: v0.4 model 0x2A
[    0.404400] intel_idle: lapic_timer_reliable_states 0xffffffff
[    0.405980] ACPI: AC Adapter [ADP1] (on-line)
[    0.406738] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
[    0.406781] ACPI: Lid Switch [LID0]
[    0.406902] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1
[    0.406943] ACPI: Power Button [PWRB]
[    0.407064] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
[    0.407072] ACPI: Power Button [PWRF]
[    0.410145] thermal LNXTHERM:00: registered as thermal_zone0
[    0.410151] ACPI: Thermal Zone [TZ00] (74 C)
[    0.410741] thermal LNXTHERM:01: registered as thermal_zone1
[    0.410746] ACPI: Thermal Zone [TZ01] (30 C)
[    0.410852] GHES: HEST is not enabled!
[    0.411182] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    0.418667] ACPI: Battery Slot [BAT1] (battery present)
[    0.419225] Linux agpgart interface v0.103
[    0.423895] brd: module loaded
[    0.427610] loop: module loaded
[    0.432120] ahci 0000:00:1f.2: version 3.0
[    0.432453] ahci 0000:00:1f.2: SSS flag set, parallel bus scan disabled
[    0.432510] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 6 Gbps 0x1b impl SATA mode
[    0.432517] ahci 0000:00:1f.2: flags: 64bit ncq sntf ilck stag pm led clo pio slum part ems sxs apst 
[    0.455766] scsi host0: ahci
[    0.456298] scsi host1: ahci
[    0.456684] scsi host2: ahci
[    0.457076] scsi host3: ahci
[    0.457392] scsi host4: ahci
[    0.457694] scsi host5: ahci
[    0.457852] ata1: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708100 irq 25
[    0.457859] ata2: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708180 irq 25
[    0.457863] ata3: DUMMY
[    0.457867] ata4: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708280 irq 25
[    0.457873] ata5: SATA max UDMA/133 abar m2048@0xf0708000 port 0xf0708300 irq 25
[    0.457877] ata6: DUMMY
[    0.459146] libphy: Fixed MDIO Bus: probed
[    0.459465] tun: Universal TUN/TAP device driver, 1.6
[    0.459469] tun: (C) 1999-2004 Max Krasnyansky <[email protected]>
[    0.459637] PPP generic driver version 2.4.2
[    0.459988] xhci_hcd 0000:03:00.0: xHCI Host Controller
[    0.460149] xhci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 1
[    0.470478] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    0.470483] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.470487] usb usb1: Product: xHCI Host Controller
[    0.470490] usb usb1: Manufacturer: Linux 3.19.0-rc7-1-loopmq-small xhci-hcd
[    0.470494] usb usb1: SerialNumber: 0000:03:00.0
[    0.471186] hub 1-0:1.0: USB hub found
[    0.471245] hub 1-0:1.0: 2 ports detected
[    0.472011] xhci_hcd 0000:03:00.0: xHCI Host Controller
[    0.472022] xhci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 2
[    0.472170] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    0.472174] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.472178] usb usb2: Product: xHCI Host Controller
[    0.472181] usb usb2: Manufacturer: Linux 3.19.0-rc7-1-loopmq-small xhci-hcd
[    0.472185] usb usb2: SerialNumber: 0000:03:00.0
[    0.472612] hub 2-0:1.0: USB hub found
[    0.472658] hub 2-0:1.0: 2 ports detected
[    0.473001] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.473006] ehci-pci: EHCI PCI platform driver
[    0.473267] ehci-pci 0000:00:1a.0: EHCI Host Controller
[    0.473286] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 3
[    0.473311] ehci-pci 0000:00:1a.0: debug port 2
[    0.477234] ehci-pci 0000:00:1a.0: cache line size of 64 is not supported
[    0.477265] ehci-pci 0000:00:1a.0: irq 16, io mem 0xf070a000
[    0.485673] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
[    0.485782] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
[    0.485787] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.485791] usb usb3: Product: EHCI Host Controller
[    0.485794] usb usb3: Manufacturer: Linux 3.19.0-rc7-1-loopmq-small ehci_hcd
[    0.485797] usb usb3: SerialNumber: 0000:00:1a.0
[    0.486207] hub 3-0:1.0: USB hub found
[    0.486225] hub 3-0:1.0: 2 ports detected
[    0.486811] ehci-pci 0000:00:1d.0: EHCI Host Controller
[    0.486826] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 4
[    0.486848] ehci-pci 0000:00:1d.0: debug port 2
[    0.490744] ehci-pci 0000:00:1d.0: cache line size of 64 is not supported
[    0.490768] ehci-pci 0000:00:1d.0: irq 23, io mem 0xf0709000
[    0.501633] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[    0.501739] usb usb4: New USB device found, idVendor=1d6b, idProduct=0002
[    0.501743] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.501747] usb usb4: Product: EHCI Host Controller
[    0.501750] usb usb4: Manufacturer: Linux 3.19.0-rc7-1-loopmq-small ehci_hcd
[    0.501753] usb usb4: SerialNumber: 0000:00:1d.0
[    0.502123] hub 4-0:1.0: USB hub found
[    0.502143] hub 4-0:1.0: 2 ports detected
[    0.502436] ehci-platform: EHCI generic platform driver
[    0.502460] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.502474] ohci-pci: OHCI PCI platform driver
[    0.502505] ohci-platform: OHCI generic platform driver
[    0.502526] uhci_hcd: USB Universal Host Controller Interface driver
[    0.502630] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:EPAD] at 0x60,0x64 irq 1,12
[    0.509719] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.509768] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.510378] mousedev: PS/2 mouse device common for all mice
[    0.511586] rtc_cmos 00:01: rtc core: registered rtc_cmos as rtc0
[    0.511627] rtc_cmos 00:01: alarms up to one month, y3k, 242 bytes nvram, hpet irqs
[    0.511722] device-mapper: uevent: version 1.0.3
[    0.511923] device-mapper: ioctl: 4.29.0-ioctl (2014-10-28) initialised: [email protected]
[    0.511952] Intel P-state driver initializing.
[    0.512547] ledtrig-cpu: registered to indicate activity on CPUs
[    0.512679] TCP: cubic registered
[    0.512910] NET: Registered protocol family 10
[    0.513700] NET: Registered protocol family 17
[    0.513723] Key type dns_resolver registered
[    0.514790] Loading compiled-in X.509 certificates
[    0.516100] Loaded X.509 cert 'Magrathea: Glacier signing key: 1805abcf66ce65b2b43fff07867648fc779df8cc'
[    0.516146] registered taskstats version 1
[    0.517929] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3
[    0.521708] Key type trusted registered
[    0.529668] Key type encrypted registered
[    0.529682] AppArmor: AppArmor sha1 policy hashing enabled
[    0.529688] evm: HMAC attrs: 0x1
[    0.530547] rtc_cmos 00:01: setting system clock to 2015-02-03 10:45:21 UTC (1422960321)
[    0.530696] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found
[    0.530708] EDD information not available.
[    0.777590] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    0.778897] ata1.00: ATA-8: Hitachi HTS545050A7E380, GG2OA6C0, max UDMA/133
[    0.778915] ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[    0.780284] ata1.00: configured for UDMA/133
[    0.781083] scsi 0:0:0:0: Direct-Access     ATA      Hitachi HTS54505 A6C0 PQ: 0 ANSI: 5
[    0.782043] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[    0.782055] sd 0:0:0:0: [sda] 4096-byte physical blocks
[    0.782194] sd 0:0:0:0: [sda] Write Protect is off
[    0.782202] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    0.782256] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    0.782746] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    0.795782]  sda: sda1 sda2 sda3
[    0.797141] sd 0:0:0:0: [sda] Attached SCSI disk
[    0.797546] usb 3-1: new high-speed USB device number 2 using ehci-pci
[    0.813587] usb 4-1: new high-speed USB device number 2 using ehci-pci
[    0.930544] usb 3-1: New USB device found, idVendor=8087, idProduct=0024
[    0.930553] usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    0.931444] hub 3-1:1.0: USB hub found
[    0.931823] hub 3-1:1.0: 6 ports detected
[    0.946093] usb 4-1: New USB device found, idVendor=8087, idProduct=0024
[    0.946103] usb 4-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    0.946643] hub 4-1:1.0: USB hub found
[    0.946854] hub 4-1:1.0: 6 ports detected
[    1.101358] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    1.101940] ata2.00: ATA-8: SanDisk iSSD P4 16GB, SSD 9.14, max UDMA/133
[    1.101947] ata2.00: 31277232 sectors, multi 1: LBA48 
[    1.102664] ata2.00: configured for UDMA/133
[    1.102944] scsi 1:0:0:0: Direct-Access     ATA      SanDisk iSSD P4  9.14 PQ: 0 ANSI: 5
[    1.103702] sd 1:0:0:0: [sdb] 31277232 512-byte logical blocks: (16.0 GB/14.9 GiB)
[    1.103764] sd 1:0:0:0: Attached scsi generic sg1 type 0
[    1.103984] sd 1:0:0:0: [sdb] Write Protect is off
[    1.103991] sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    1.104071] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.105086]  sdb: sdb1 sdb2
[    1.105882] sd 1:0:0:0: [sdb] Attached SCSI disk
[    1.205623] usb 3-1.2: new high-speed USB device number 3 using ehci-pci
[    1.217605] usb 4-1.4: new low-speed USB device number 3 using ehci-pci
[    1.300938] usb 3-1.2: New USB device found, idVendor=12d1, idProduct=1436
[    1.300947] usb 3-1.2: New USB device strings: Mfr=4, Product=3, SerialNumber=0
[    1.300951] usb 3-1.2: Product: HUAWEI Mobile
[    1.300954] usb 3-1.2: Manufacturer: HUAWEI Technology
[    1.316045] usb 4-1.4: New USB device found, idVendor=046d, idProduct=c00e
[    1.316054] usb 4-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.316058] usb 4-1.4: Product: USB-PS/2 Optical Mouse
[    1.316061] usb 4-1.4: Manufacturer: Logitech
[    1.377211] usb 3-1.4: new high-speed USB device number 4 using ehci-pci
[    1.389193] usb 4-1.5: new full-speed USB device number 4 using ehci-pci
[    1.393094] tsc: Refined TSC clocksource calibration: 1596.373 MHz
[    1.421132] ata4: SATA link down (SStatus 0 SControl 300)
[    1.486413] usb 4-1.5: New USB device found, idVendor=8086, idProduct=0189
[    1.486423] usb 4-1.5: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    1.629592] usb 3-1.4: New USB device found, idVendor=2232, idProduct=1018
[    1.629601] usb 3-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.629606] usb 3-1.4: Product: WebCam SC-13HDL11431N
[    1.629609] usb 3-1.4: Manufacturer: 123
[    1.740905] ata5: SATA link down (SStatus 0 SControl 300)
[    1.741761] Freeing unused kernel memory: 1384K (ffffffff81d43000 - ffffffff81e9d000)
[    1.741769] Write protecting the kernel read-only data: 12288k
[    1.742466] Freeing unused kernel memory: 584K (ffff88000176e000 - ffff880001800000)
[    1.742908] Freeing unused kernel memory: 724K (ffff880001b4b000 - ffff880001c00000)
[    1.775660] udevd[131]: starting version 175
[    2.051999] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[    2.052028] r8169 0000:02:00.0: can't disable ASPM; OS doesn't have ASPM control
[    2.054422] r8169 0000:02:00.0 eth0: RTL8168evl/8111evl at 0xffffc9000067e000, e8:03:9a:36:17:a9, XID 0c900800 IRQ 31
[    2.054437] r8169 0000:02:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[    2.064571] usb-storage 3-1.2:1.0: USB Mass Storage device detected
[    2.068785] usbcore: registered new interface driver usbhid
[    2.068796] usbhid: USB HID core driver
[    2.068954] usb-storage 3-1.2:1.1: USB Mass Storage device detected
[    2.074874] usb-storage 3-1.2:1.2: USB Mass Storage device detected
[    2.078994] usb-storage 3-1.2:1.3: USB Mass Storage device detected
[    2.079528] usb-storage 3-1.2:1.4: USB Mass Storage device detected
[    2.080035] usb-storage 3-1.2:1.5: USB Mass Storage device detected
[    2.082445] scsi host11: usb-storage 3-1.2:1.5
[    2.082776] usb-storage 3-1.2:1.6: USB Mass Storage device detected
[    2.086935] scsi host12: usb-storage 3-1.2:1.6
[    2.088218] usbcore: registered new interface driver usb-storage
[    2.145428] input: Logitech USB-PS/2 Optical Mouse as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.4/4-1.4:1.0/0003:046D:C00E.0001/input/input6
[    2.145888] hid-generic 0003:046D:C00E.0001: input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:1d.0-1.4/input0
[    2.392921] Switched to clocksource tsc
[    2.825057] EXT4-fs (loop0): mounted filesystem with ordered data mode. Opts: (null)
[    3.082273] scsi 11:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
[    3.086133] scsi 12:0:0:0: Direct-Access     HUAWEI   SD Storage       2.31 PQ: 0 ANSI: 2
[    3.086628] sr 11:0:0:0: [sr0] scsi-1 drive
[    3.086635] cdrom: Uniform CD-ROM driver Revision: 3.20
[    3.087250] sr 11:0:0:0: Attached scsi CD-ROM sr0
[    3.087470] sr 11:0:0:0: Attached scsi generic sg2 type 5
[    3.088147] sd 12:0:0:0: Attached scsi generic sg3 type 0
[    3.090708] sd 12:0:0:0: [sdc] Attached SCSI removable disk
[    3.566135] random: nonblocking pool is initialized
[    4.927369] init: ureadahead main process (425) terminated with status 5
[    9.186683] Adding 262140k swap on /host/ubuntu/disks/swap.disk.  Priority:-1 extents:1 across:262140k FS
[    9.356949] EXT4-fs (loop0): re-mounted. Opts: errors=remount-ro
[    9.508385] udevd[737]: starting version 175
[   10.741522] lp: driver loaded but no devices found
[   12.982942] wmi: Mapper loaded
[   13.008344] ACPI Warning: SystemIO range 0x0000000000000428-0x000000000000042f conflicts with OpRegion 0x0000000000000400-0x000000000000047f (\PMIO) (20141107/utaddress-258)
[   13.008354] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[   13.008360] ACPI Warning: SystemIO range 0x0000000000000540-0x000000000000054f conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20141107/utaddress-258)
[   13.008364] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[   13.008366] ACPI Warning: SystemIO range 0x0000000000000530-0x000000000000053f conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20141107/utaddress-258)
[   13.008370] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[   13.008372] ACPI Warning: SystemIO range 0x0000000000000500-0x000000000000052f conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20141107/utaddress-258)
[   13.008376] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[   13.008377] lpc_ich: Resource conflict(s) found affecting gpio_ich
[   13.359373] samsung_laptop: detected SABI interface: SwSmi@
[   13.359379] samsung_laptop: Backlight controlled by ACPI video driver
[   14.096472] Bluetooth: Core ver 2.20
[   14.096521] NET: Registered protocol family 31
[   14.096525] Bluetooth: HCI device and connection manager initialized
[   14.096609] Bluetooth: HCI socket layer initialized
[   14.096617] Bluetooth: L2CAP socket layer initialized
[   14.096657] Bluetooth: SCO socket layer initialized
[   14.272277] usbcore: registered new interface driver btusb
[   14.733999] [drm] Initialized drm 1.1.0 20060810
[   14.919305] psmouse serio1: elantech: assuming hardware version 3 (with firmware version 0x450f00)
[   14.934396] psmouse serio1: elantech: Synaptics capabilities query result 0x08, 0x17, 0x0c.
[   15.010235] input: ETPS/2 Elantech Touchpad as /devices/platform/i8042/serio1/input/input7
[   15.020048] cfg80211: Calling CRDA to update world regulatory domain
[   15.630808] usbcore: registered new interface driver usbserial
[   15.739966] audit: type=1400 audit(1422956736.718:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=1033 comm="apparmor_parser"
[   15.739976] audit: type=1400 audit(1422956736.718:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1033 comm="apparmor_parser"
[   15.739982] audit: type=1400 audit(1422956736.718:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=1033 comm="apparmor_parser"
[   15.740003] audit: type=1400 audit(1422956736.718:5): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=990 comm="apparmor_parser"
[   15.740013] audit: type=1400 audit(1422956736.718:6): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=990 comm="apparmor_parser"
[   15.740020] audit: type=1400 audit(1422956736.718:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=990 comm="apparmor_parser"
[   15.740637] audit: type=1400 audit(1422956736.718:8): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1033 comm="apparmor_parser"
[   15.740644] audit: type=1400 audit(1422956736.718:9): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1033 comm="apparmor_parser"
[   15.740664] audit: type=1400 audit(1422956736.718:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=990 comm="apparmor_parser"
[   15.740671] audit: type=1400 audit(1422956736.718:11): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=990 comm="apparmor_parser"
[   16.150189] cfg80211: World regulatory domain updated:
[   16.150194] cfg80211:  DFS Master region: unset
[   16.150196] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[   16.150200] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm), (N/A)
[   16.150202] cfg80211:   (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm), (N/A)
[   16.150204] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm), (N/A)
[   16.150206] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm), (N/A)
[   16.150208] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm), (N/A)
[   16.697150] Bluetooth: RFCOMM TTY layer initialized
[   16.697164] Bluetooth: RFCOMM socket layer initialized
[   16.697181] Bluetooth: RFCOMM ver 1.11
[   16.757344] init: failsafe main process (1081) killed by TERM signal
[   16.809837] usbcore: registered new interface driver option
[   16.811570] usbserial: USB Serial support registered for GSM modem (1-port)
[   16.811701] option 3-1.2:1.0: GSM modem (1-port) converter detected
[   16.814441] usb 3-1.2: GSM modem (1-port) converter now attached to ttyUSB0
[   16.814810] option 3-1.2:1.3: GSM modem (1-port) converter detected
[   16.815255] usb 3-1.2: GSM modem (1-port) converter now attached to ttyUSB1
[   16.815389] option 3-1.2:1.4: GSM modem (1-port) converter detected
[   16.815727] usb 3-1.2: GSM modem (1-port) converter now attached to ttyUSB2
[   16.907265] Intel(R) Wireless WiFi driver for Linux, in-tree:
[   16.907270] Copyright(c) 2003- 2014 Intel Corporation
[   16.907570] iwlwifi 0000:01:00.0: can't disable ASPM; OS doesn't have ASPM control
[   16.939617] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   16.939622] Bluetooth: BNEP filters: protocol multicast
[   16.939633] Bluetooth: BNEP socket layer initialized
[   17.996405] iwlwifi 0000:01:00.0: loaded firmware version 18.168.6.1 op_mode iwldvm
[   18.563684] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEBUG disabled
[   18.563689] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEBUGFS enabled
[   18.563691] iwlwifi 0000:01:00.0: CONFIG_IWLWIFI_DEVICE_TRACING enabled
[   18.563694] iwlwifi 0000:01:00.0: Detected Intel(R) Centrino(R) Advanced-N 6230 AGN, REV=0xB0
[   18.564040] iwlwifi 0000:01:00.0: L1 Enabled - LTR Disabled
[   19.297272] ieee80211 phy0: Selected rate control algorithm 'iwl-agn-rs'
[   19.358069] ppdev: user-space parallel port driver
[   19.375514] Linux video capture interface: v2.00
[   19.627194] cdc_ether 3-1.2:1.1 wwan0: register 'cdc_ether' at usb-0000:00:1a.0-1.2, Mobile Broadband Network Device, 02:50:f3:00:00:00
[   19.627261] usbcore: registered new interface driver cdc_ether
[   20.078892] [drm] Memory usable by graphics device = 2048M
[   20.078950] [drm] Replacing VGA console driver
[   20.104038] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[   20.104042] [drm] Driver supports precise vblank timestamp query.
[   20.104707] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[   20.117015] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[   20.117588] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input8
[   20.118576] [drm] Initialized i915 1.6.0 20141121 for 0000:00:02.0 on minor 0
[   20.130346] fbcon: inteldrmfb (fb0) is primary device
[   20.155515] uvcvideo: Found UVC 1.00 device WebCam SC-13HDL11431N (2232:1018)
[   20.175095] input: WebCam SC-13HDL11431N as /devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1.4/3-1.4:1.0/input/input9
[   20.175468] usbcore: registered new interface driver uvcvideo
[   20.175469] USB Video Class driver (1.1.1)
[   20.212124] sound hdaudioC0D0: autoconfig: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[   20.212127] sound hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[   20.212129] sound hdaudioC0D0:    hp_outs=1 (0x15/0x0/0x0/0x0/0x0)
[   20.212131] sound hdaudioC0D0:    mono: mono_out=0x0
[   20.212133] sound hdaudioC0D0:    inputs:
[   20.212137] sound hdaudioC0D0:      Internal Mic=0x19
[   20.212141] sound hdaudioC0D0:      Mic=0x18
[   20.295945] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10
[   20.301009] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11
[   20.301363] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input12
[   21.159832] Console: switching to colour frame buffer device 170x48
[   21.163053] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[   21.163057] i915 0000:00:02.0: registered panic notifier
[   25.122378] r8169 0000:02:00.0 eth0: link down
[   25.122567] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   61.121533] usb 4-1.5: USB disconnect, device number 4
[   83.165469] PPP BSD Compression module registered
[   83.170475] PPP Deflate Compression module registered
[   99.489363] show_signal_msg: 171 callbacks suppressed
[   99.489370] firefox[2622]: segfault at 7f91fe5c1b52 ip 00007f91bf826357 sp 00007fffbef47478 error 6 in libGL.so.1.2.0[7f91bf826000+bb000]
[  125.400798] bash (2714): drop_caches: 3
[  166.192512] ------------[ cut here ]------------
[  166.192522] WARNING: CPU: 0 PID: 2816 at kernel/sched/core.c:7300 __might_sleep+0xae/0xc0()
[  166.192527] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff810b856d>] prepare_to_wait_event+0x5d/0x110
[  166.192528] Modules linked in: ppp_deflate bsd_comp ppp_async crc_ccitt snd_hda_codec_hdmi snd_hda_codec_realtek uvcvideo i915 snd_hda_codec_generic snd_hda_intel snd_hda_controller snd_hda_codec videobuf2_vmalloc videobuf2_memops videobuf2_core cdc_ether usbnet i2c_algo_bit v4l2_common snd_hwdep snd_pcm parport_pc videodev ppdev arc4 snd_seq_midi snd_seq_midi_event iwldvm mac80211 bnep iwlwifi option drm_kms_helper rfcomm joydev usb_wwan usbserial cfg80211 snd_rawmidi drm snd_seq btusb bluetooth psmouse snd_timer snd_seq_device snd samsung_laptop serio_raw video soundcore lpc_ich wmi intel_rst mac_hid lp parport binfmt_misc hid_generic usbhid usb_storage r8169 hid mii
[  166.192579] CPU: 0 PID: 2816 Comm: fio-2.2.5 Not tainted 3.19.0-rc7-1-loopmq-small #1
[  166.192581] Hardware name: SAMSUNG ELECTRONICS CO., LTD. 530U3BI/530U4BI/530U4BH/530U3BI/530U4BI/530U4BH, BIOS 13XK 03/28/2013
[  166.192583]  ffffffff81a66e55 ffff880078c47c38 ffffffff8175bd3c 0000000000000000
[  166.192587]  ffff880078c47c88 ffff880078c47c78 ffffffff810755ea ffff880078c47d28
[  166.192590]  ffffffff81a67feb 000000000000026d 0000000000000000 0000000001ccfe20
[  166.192594] Call Trace:
[  166.192600]  [<ffffffff8175bd3c>] dump_stack+0x4c/0x65
[  166.192605]  [<ffffffff810755ea>] warn_slowpath_common+0x8a/0xc0
[  166.192608]  [<ffffffff81075666>] warn_slowpath_fmt+0x46/0x50
[  166.192612]  [<ffffffff810c2edd>] ? mark_held_locks+0x6d/0xa0
[  166.192616]  [<ffffffff81760f52>] ? mutex_lock_nested+0x2b2/0x4e0
[  166.192618]  [<ffffffff810b856d>] ? prepare_to_wait_event+0x5d/0x110
[  166.192621]  [<ffffffff810b856d>] ? prepare_to_wait_event+0x5d/0x110
[  166.192623]  [<ffffffff8109c64e>] __might_sleep+0xae/0xc0
[  166.192626]  [<ffffffff81760ccf>] mutex_lock_nested+0x2f/0x4e0
[  166.192628]  [<ffffffff810b8563>] ? prepare_to_wait_event+0x53/0x110
[  166.192632]  [<ffffffff8124417f>] aio_read_events+0x4f/0x2d0
[  166.192635]  [<ffffffff810c311d>] ? trace_hardirqs_on+0xd/0x10
[  166.192638]  [<ffffffff81244600>] read_events+0x200/0x320
[  166.192641]  [<ffffffff810b8450>] ? wait_woken+0xc0/0xc0
[  166.192645]  [<ffffffff810e9550>] ? hrtimer_get_res+0x50/0x50
[  166.192648]  [<ffffffff81244ae0>] ? lookup_ioctx+0xd0/0x140
[  166.192651]  [<ffffffff812464f2>] SyS_io_getevents+0x62/0x100
[  166.192655]  [<ffffffff813b598e>] ? trace_hardirqs_on_thunk+0x3a/0x3f
[  166.192658]  [<ffffffff81765c2d>] system_call_fastpath+0x16/0x1b
[  166.192661] ---[ end trace 35d42b281f58ce45 ]---
#19 lore raw
In reply to Chris Mason
Quoted 12 lines · Chris Mason
Quoted 11 lines · Dave Chinner
Quoted 7 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

[  445.464634] WARNING: CPU: 22 PID: 4367 at kernel/sched/core.c:7303 __might_sleep+0x9a/0xb0()
[  445.481699] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff81093f68>] prepare_to_wait_event+0x68/0x120

Hi Chris,

Quoted 8 lines
Quoted 2 lines

This still isn't fixed in -rc5 - I'm hitting it multiple times in every xfstests run I do. What's the current status of your fix?

I worried this is going to have a perf hit, so I talked Jens into double checking it on one of his super high iop boxes.

From reading the log [1] this issue seems to be fixed by...

commit 9c9ce763b114e608b5cf3aa6cb69ad9f6e8b6adf
aio: annotate aio_read_event_ring for sleep patterns

- Sedat -

[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9c9ce763b114e608b5cf3aa6cb69ad9f6e8b6adf

#20 lore raw
Quoted 20 lines · Sedat Dilek
Quoted 10 lines · Chris Mason
Quoted 9 lines · Dave Chinner
Quoted 7 lines · Chris Mason

The 3.19 merge window brought in a great new warning to catch someone calling might_sleep with their state != TASK_RUNNING. The idea was to find buggy code locking mutexes after calling prepare_to_wait(), kind of like this:

[  445.464634] WARNING: CPU: 22 PID: 4367 at kernel/sched/core.c:7303 __might_sleep+0x9a/0xb0()
[  445.481699] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff81093f68>] prepare_to_wait_event+0x68/0x120
Quoted 8 lines
Quoted 4 lines

Hi Chris,

This still isn't fixed in -rc5 - I'm hitting it multiple times in every xfstests run I do. What's the current status of your fix?

I worried this is going to have a perf hit, so I talked Jens into double checking it on one of his super high iop boxes.

Quoted 8 lines

From reading the log [1] this issue seems to be fixed by...

commit 9c9ce763b114e608b5cf3aa6cb69ad9f6e8b6adf
aio: annotate aio_read_event_ring for sleep patterns

- Sedat -

[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9c9ce763b114e608b5cf3aa6cb69ad9f6e8b6adf

I have retested with Linux v3.19 (final) and fio-2.2.5 and the warning is gone.

Testcase:

# LC_ALL=C rm -v -f randread.*

# sync && sync && sync
# echo 3 > /proc/sys/vm/drop_caches
# LC_ALL=C fio-2.2.5 --name=randread --rw=randread --bs=4k
--ioengine=libaio --iodepth=64 --direct=1 --numjobs=1 --size=1024M #
LC_ALL=C rm -v -f randread.*

My dmesg diff:

# diff -uprN dmesg_3.19.0-1-iniza-small_before-fio.txt
dmesg_3.19.0-1-iniza-small_after-fio.txt
--- dmesg_3.19.0-1-iniza-small_before-fio.txt   2015-02-09
05:16:36.377686868 +0100
+++ dmesg_3.19.0-1-iniza-small_after-fio.txt    2015-02-09
05:17:52.269684487 +0100
@@ -797,3 +797,4 @@
 [  697.624755] PPP BSD Compression module registered
 [  697.638376] PPP Deflate Compression module registered
 [  720.366430] usb 4-1.5: USB disconnect, device number 4
+[  786.772407] bash (2806): drop_caches: 3

- Sedat -