linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] Fastboot revisited: Asynchronous function calls
@ 2009-01-04 17:24 Arjan van de Ven
  2009-01-04 17:28 ` [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot Arjan van de Ven
                   ` (5 more replies)
  0 siblings, 6 replies; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 17:24 UTC (permalink / raw)
  To: linux-kernel
  Cc: torvalds, mingo, fweisbec, linux-scsi, linux-ide, linux-acpi,
	akpm

Hi,

This patch series is based on Linus' original reaction to some of the
fastboot patches which introduced an "asynchronous initcall level".
Linus did not like the initcall level approach much, and wanted a much
more finegrained kind of thing.

This patch series introduces asynchronous function calls.
The goal is still the same (boot faster), the method is entirely
different.

Asynchronous function calls allow drivers and subsystems to do
operations asynchronously, while providing a mechanism to serialize
the asynchronous operations at "externally visible" locations, such as
device number registrations. 

As such, this approach is NOT a "full parallel kernel init".
For one, it keeps device numbers stable. For another, it's very much
opt-in for any code using this.

Rather, it is more comparable to an out-of-order cpu, where computations
are done asynchronously, but are retired in program order.

This series first introduces the infrastructure in patch 1,
and then adds users of this infrastructure (scsi in patch2, libata in
patch 3 and acpi in patch 4).

To see this working, I uploaded a "before" and "after" kernel bootchart
for one of my testboxes at

http://www.fenrus.org/linux/before.svg
http://www.fenrus.org/linux/after.svg

As you can see with inkscape (or gimp or any other svg viewer), there
is still room for doing more things in parallel, but the 3 example usage
patches are a big win already.


One comment about the API:
Originally I had functionality in mind where the caller of
async_schedule() could get back the cookie value of the scheduled task.
However I had no users of this, so I removed the code to do this. If
someone finds a place where this is useful we can easily add this back.

-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot
  2009-01-04 17:24 [PATCH 0/4] Fastboot revisited: Asynchronous function calls Arjan van de Ven
@ 2009-01-04 17:28 ` Arjan van de Ven
  2009-01-04 18:33   ` Linus Torvalds
  2009-01-04 19:05   ` Andi Kleen
  2009-01-04 17:29 ` [PATCH 2/4] fastboot: make scsi probes asynchronous Arjan van de Ven
                   ` (4 subsequent siblings)
  5 siblings, 2 replies; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 17:28 UTC (permalink / raw)
  To: linux-kernel
  Cc: Arjan van de Ven, torvalds, mingo, fweisbec, linux-scsi,
	linux-ide, linux-acpi, akpm

>From 97ade4deb2124aebe73d0094da76fd136fc5b082 Mon Sep 17 00:00:00 2001
From: Arjan van de Ven <arjan@linux.intel.com>
Date: Sun, 4 Jan 2009 05:32:28 -0800
Subject: [PATCH] fastboot: Asynchronous function calls to speed up kernel boot

Right now, most of the kernel boot is strictly synchronous, such that
various hardware delays are done sequentially.

In order to make the kernel boot faster, this patch introduces
infrastructure to allow doing some of the initialization steps
asynchronously, which will hide significant portions of the hardware delays
in practice.

In order to not change device order and other similar observables, this
patch does NOT do full parallel initialization.

Rather, it operates more in the way an out of order CPU does; the work may
be done out of order and asynchronous, but the observable effects
(instruction retiring for the CPU) are still done in the original sequence.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
---
 include/linux/async.h |   21 ++++
 init/main.c           |    5 +-
 kernel/Makefile       |    3 +-
 kernel/async.c        |  305 +++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 332 insertions(+), 2 deletions(-)
 create mode 100644 include/linux/async.h
 create mode 100644 kernel/async.c

diff --git a/include/linux/async.h b/include/linux/async.h
new file mode 100644
index 0000000..b54d83a
--- /dev/null
+++ b/include/linux/async.h
@@ -0,0 +1,21 @@
+/*
+ * async.h: Asynchronous function calls for boot performance
+ *
+ * (C) Copyright 2009 Intel Corporation
+ * Author: Arjan van de Ven <arjan@linux.intel.com>
+ *
+ * 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 the Free Software Foundation; version 2
+ * of the License.
+ */
+
+#include <linux/types.h>
+
+typedef u64 async_cookie_t;
+typedef void (async_func_ptr) (void *data, async_cookie_t cookie);
+
+extern void async_schedule(async_func_ptr *ptr, void *data);
+extern void async_synchronize_full(void);
+extern void async_synchronize_cookie(async_cookie_t cookie);
+
diff --git a/init/main.c b/init/main.c
index cd168eb..40d5373 100644
--- a/init/main.c
+++ b/init/main.c
@@ -63,6 +63,7 @@
 #include <linux/signal.h>
 #include <linux/idr.h>
 #include <linux/ftrace.h>
+#include <linux/async.h>
 #include <trace/boot.h>
 
 #include <asm/io.h>
@@ -687,7 +688,7 @@ asmlinkage void __init start_kernel(void)
 	rest_init();
 }
 
-static int initcall_debug;
+int initcall_debug;
 core_param(initcall_debug, initcall_debug, bool, 0644);
 
 int do_one_initcall(initcall_t fn)
@@ -788,6 +789,8 @@ static void run_init_process(char *init_filename)
  */
 static int noinline init_post(void)
 {
+	/* need to finish all async __init code before freeing the memory */
+	async_synchronize_full();
 	free_initmem();
 	unlock_kernel();
 	mark_rodata_ro();
diff --git a/kernel/Makefile b/kernel/Makefile
index e1c5bf3..2921d90 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -9,7 +9,8 @@ obj-y     = sched.o fork.o exec_domain.o panic.o printk.o \
 	    rcupdate.o extable.o params.o posix-timers.o \
 	    kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \
 	    hrtimer.o rwsem.o nsproxy.o srcu.o semaphore.o \
-	    notifier.o ksysfs.o pm_qos_params.o sched_clock.o cred.o
+	    notifier.o ksysfs.o pm_qos_params.o sched_clock.o cred.o \
+	    async.o
 
 ifdef CONFIG_FUNCTION_TRACER
 # Do not trace debug files and internal ftrace files
diff --git a/kernel/async.c b/kernel/async.c
new file mode 100644
index 0000000..9918fe5
--- /dev/null
+++ b/kernel/async.c
@@ -0,0 +1,305 @@
+/*
+ * async.c: Asynchronous function calls for boot performance
+ *
+ * (C) Copyright 2009 Intel Corporation
+ * Author: Arjan van de Ven <arjan@linux.intel.com>
+ *
+ * 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 the Free Software Foundation; version 2
+ * of the License.
+ */
+
+
+/*
+
+Goals and Theory of Operation
+
+The primary goal of this feature is to reduce the kernel boot time,
+by doing various independent hardware delays and discovery operations
+decoupled and not strictly serialized.
+
+More specifically, the asynchronous function call concept allows
+certain operations (primarily during system boot) to happen
+asynchronously, out of order, while these operations still
+have their externally visible parts happen sequentially and in-order.
+(not unlike how out-of-order CPUs retire their instructions in order)
+
+Key to the asynchronous function call implementation is the concept of
+a "sequence cookie" (which, although it has an abstracted type, can be
+thought of as a monotonically incrementing number).
+
+The async core will assign each scheduled event such a sequence cookie and
+pass this to the called functions.
+
+The asynchronously called function should before doing a globally visible
+operation, such as registering device numbers, call the
+async_synchronize_cookie() function and pass in its own cookie. The
+async_synchronize_cookie() function will make sure that all asynchronous
+operations that were scheduled prior to the operation corresponding with the
+cookie have completed.
+
+Subsystem/driver initialization code that scheduled asynchronous probe
+functions, but which shares global resources with other drivers/subsystems
+that do not use the asynchronous call feature, need to do a full
+synchronization with the async_synchronize_full() function, before returning
+from their init function. This is to maintain strict ordering between the
+asynchronous and synchronous parts of the kernel.
+
+*/
+
+#include <linux/async.h>
+#include <linux/module.h>
+#include <linux/wait.h>
+#include <linux/sched.h>
+#include <linux/init.h>
+#include <linux/kthread.h>
+#include <asm/atomic.h>
+
+static async_cookie_t next_cookie = 1;
+static async_cookie_t lowest_in_progress = 1;
+
+
+static LIST_HEAD(async_pending);
+static LIST_HEAD(async_running);
+static DEFINE_SPINLOCK(async_lock);
+
+struct async_entry {
+	struct list_head list;
+	async_cookie_t   cookie;
+	async_func_ptr	 *func;
+	void             *data;
+};
+
+static DECLARE_WAIT_QUEUE_HEAD(async_done);
+static DECLARE_WAIT_QUEUE_HEAD(async_new);
+
+static atomic_t entry_count;
+static atomic_t thread_count;
+
+extern int initcall_debug;
+
+
+/*
+ * MUST be called with the lock held!
+ */
+static void __recalc_lowest_in_progress(void)
+{
+	struct async_entry *entry;
+	if (!list_empty(&async_pending)) {
+		entry = list_first_entry(&async_pending,
+			struct async_entry, list);
+		lowest_in_progress = entry->cookie;
+	} else if (!list_empty(&async_running)) {
+		entry = list_first_entry(&async_running,
+			struct async_entry, list);
+		lowest_in_progress = entry->cookie;
+	} else {
+		/* nothing in progress... next_cookie is "infinity" */
+		lowest_in_progress = next_cookie;
+	}
+
+}
+/*
+ * pick the first pending entry and run it
+ */
+static void run_one_entry(void)
+{
+	unsigned long flags;
+	struct async_entry *entry;
+	ktime_t calltime, delta, rettime;
+
+	/* 1) pick one task from the pending queue */
+
+	spin_lock_irqsave(&async_lock, flags);
+	if (list_empty(&async_pending))
+		goto out;
+	entry = list_first_entry(&async_pending, struct async_entry, list);
+
+	/* 2) move it to the running queue */
+	list_del(&entry->list);
+	list_add_tail(&entry->list, &async_running);
+	spin_unlock_irqrestore(&async_lock, flags);
+
+	/* 3) run it (and print duration)*/
+	if (initcall_debug) {
+		printk("calling  %lli_%pF @ %i\n", entry->cookie, entry->func, task_pid_nr(current));
+		calltime = ktime_get();
+	}
+	entry->func(entry->data, entry->cookie);
+	if (initcall_debug) {
+		rettime = ktime_get();
+		delta = ktime_sub(rettime, calltime);
+		printk("initcall %lli_%pF returned 0 after %lld usecs\n", entry->cookie,
+			entry->func, ktime_to_ns(delta) >> 10);
+	}
+
+	/* 4) remove it from the running queue */
+	spin_lock_irqsave(&async_lock, flags);
+	list_del(&entry->list);
+
+	/* 5) free the entry  */
+	kfree(entry);
+	atomic_dec(&entry_count);
+
+	/* 6) update the lowest_in_progress value */
+	__recalc_lowest_in_progress();
+
+	spin_unlock_irqrestore(&async_lock, flags);
+
+	/* 7) wake up any waiters. */
+	wake_up(&async_done);
+	return;
+
+out:
+	spin_unlock_irqrestore(&async_lock, flags);
+}
+
+
+void async_schedule(async_func_ptr *ptr, void *data)
+{
+	struct async_entry *entry;
+	unsigned long flags;
+
+	/* allow irq-off callers */
+	entry = kzalloc(sizeof(struct async_entry), GFP_ATOMIC);
+	if (!entry) {
+		async_cookie_t newcookie;
+		spin_lock_irqsave(&async_lock, flags);
+		newcookie = next_cookie++;
+		spin_unlock_irqrestore(&async_lock, flags);
+
+		/* low on memory.. run synchronously */
+		ptr(data, newcookie);
+		return;
+	}
+	entry->func = ptr;
+	entry->data = data;
+
+	spin_lock_irqsave(&async_lock, flags);
+	entry->cookie = next_cookie++;
+	list_add_tail(&entry->list, &async_pending);
+	atomic_inc(&entry_count);
+	spin_unlock_irqrestore(&async_lock, flags);
+	wake_up(&async_new);
+}
+EXPORT_SYMBOL_GPL(async_schedule);
+
+void async_synchronize_full(void)
+{
+	async_synchronize_cookie(next_cookie);
+}
+EXPORT_SYMBOL_GPL(async_synchronize_full);
+
+void async_synchronize_cookie(async_cookie_t cookie)
+{
+	ktime_t starttime, delta, endtime;
+
+	if (initcall_debug) {
+		printk("async_waiting @ %i\n", task_pid_nr(current));
+		starttime = ktime_get();
+	}
+
+	wait_event(async_done, lowest_in_progress >= cookie);
+
+	if (initcall_debug) {
+		endtime = ktime_get();
+		delta = ktime_sub(endtime, starttime);
+
+		printk("async_continuing @ %i after %lli usec\n",
+			task_pid_nr(current), ktime_to_ns(delta) >> 10);
+	}
+}
+EXPORT_SYMBOL_GPL(async_synchronize_cookie);
+
+
+static int async_thread(void *unused)
+{
+	DECLARE_WAITQUEUE(wq, current);
+	add_wait_queue(&async_new, &wq);
+
+	while (!kthread_should_stop()) {
+		int ret = HZ;
+		set_current_state(TASK_INTERRUPTIBLE);
+		/*
+		 * check the list head without lock.. false positives
+		 * are dealt with inside run_one_entry() while holding
+		 * the lock.
+		 */
+		rmb();
+		if (!list_empty(&async_pending))
+			run_one_entry();
+		else
+			ret = schedule_timeout(HZ);
+
+		if (ret == 0) {
+			/*
+			 * we timed out, this means we as thread are redundant.
+			 * we sign off and die, but we to avoid any races there
+			 * is a last-straw check to see if work snuck in.
+			 */
+			atomic_dec(&thread_count);
+			wmb(); /* manager must see our departure first */
+			if (list_empty(&async_pending))
+				break;
+			/*
+			 * woops work came in between us timing out and us
+			 * signing off; we need to stay alive and keep working.
+			 */
+			atomic_inc(&thread_count);
+		}
+	}
+	remove_wait_queue(&async_new, &wq);
+
+	return 0;
+}
+
+static int async_manager_thread(void *unused)
+{
+	int max_threads;
+	DECLARE_WAITQUEUE(wq, current);
+	add_wait_queue(&async_new, &wq);
+
+	while (!kthread_should_stop()) {
+		int tc, ec;
+
+		/*
+		 * Maximum number of worker threads.
+		 * Even on the smallest machine we want 8
+		 * Scaling by 4 per logical CPU
+		 * But no more than 256 to not overload stuff too much
+		 * (and yes these are magic numbers that might need tuning)
+		 * Calculated dynamic because early on the nr of online cpus
+		 * is 1...
+		 */
+		max_threads = 4 + 4 * num_online_cpus();
+		if (max_threads > 256)
+			max_threads = 256;
+
+
+		set_current_state(TASK_INTERRUPTIBLE);
+
+		tc = atomic_read(&thread_count);
+		rmb();
+		ec = atomic_read(&entry_count);
+
+		while (tc < ec && tc < max_threads) {
+			kthread_run(async_thread, NULL, "async/%i", tc);
+			atomic_inc(&thread_count);
+			tc++;
+		}
+
+		schedule();
+	}
+	remove_wait_queue(&async_new, &wq);
+
+	return 0;
+}
+
+static int __init async_init(void)
+{
+	kthread_run(async_manager_thread, NULL, "async/mgr");
+	return 0;
+}
+
+core_initcall(async_init);
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH 2/4] fastboot: make scsi probes asynchronous
  2009-01-04 17:24 [PATCH 0/4] Fastboot revisited: Asynchronous function calls Arjan van de Ven
  2009-01-04 17:28 ` [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot Arjan van de Ven
@ 2009-01-04 17:29 ` Arjan van de Ven
  2009-01-04 18:05   ` Matthew Wilcox
  2009-01-04 17:30 ` [PATCH 3/4] fastboot: make the libata port scan asynchronous Arjan van de Ven
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 17:29 UTC (permalink / raw)
  To: linux-kernel
  Cc: Arjan van de Ven, torvalds, mingo, fweisbec, linux-scsi,
	linux-ide, linux-acpi, akpm

>From 2087b546abddced50fa73ea9a71b5a040ae1026e Mon Sep 17 00:00:00 2001
From: Arjan van de Ven <arjan@linux.intel.com>
Date: Sun, 4 Jan 2009 05:32:28 -0800
Subject: [PATCH] fastboot: make scsi probes asynchronous

This patch makes part of the scsi probe (which is mostly device spin up and the
partition scan) asynchronous. Only the part that runs after getting the device
number allocated is asynchronous, ensuring that device numbering remains stable.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
---
 drivers/scsi/scsi_scan.c |    3 +
 drivers/scsi/sd.c        |  109 ++++++++++++++++++++++++++++------------------
 2 files changed, 70 insertions(+), 42 deletions(-)

diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 18486b5..17914a3 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -32,6 +32,7 @@
 #include <linux/delay.h>
 #include <linux/kthread.h>
 #include <linux/spinlock.h>
+#include <linux/async.h>
 
 #include <scsi/scsi.h>
 #include <scsi/scsi_cmnd.h>
@@ -179,6 +180,8 @@ int scsi_complete_async_scans(void)
 	spin_unlock(&async_scan_lock);
 
 	kfree(data);
+	/* Synchronize async operations globally */
+	async_synchronize_full();
 	return 0;
 }
 
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 62b28d5..e035c11 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -48,6 +48,7 @@
 #include <linux/delay.h>
 #include <linux/mutex.h>
 #include <linux/string_helpers.h>
+#include <linux/async.h>
 #include <asm/uaccess.h>
 
 #include <scsi/scsi.h>
@@ -1802,6 +1803,71 @@ static int sd_format_disk_name(char *prefix, int index, char *buf, int buflen)
 	return 0;
 }
 
+/*
+ * The asynchronous part of sd_probe
+ */
+static void sd_probe_async(void *data, async_cookie_t cookie)
+{
+	struct scsi_disk *sdkp = data;
+	struct scsi_device *sdp;
+	struct gendisk *gd;
+	u32 index;
+	struct device *dev;
+
+	sdp = sdkp->device;
+	gd = sdkp->disk;
+	index = sdkp->index;
+	dev = &sdp->sdev_gendev;
+
+	if (!sdp->request_queue->rq_timeout) {
+		if (sdp->type != TYPE_MOD)
+			blk_queue_rq_timeout(sdp->request_queue, SD_TIMEOUT);
+		else
+			blk_queue_rq_timeout(sdp->request_queue,
+					     SD_MOD_TIMEOUT);
+	}
+
+	device_initialize(&sdkp->dev);
+	sdkp->dev.parent = &sdp->sdev_gendev;
+	sdkp->dev.class = &sd_disk_class;
+	strncpy(sdkp->dev.bus_id, sdp->sdev_gendev.bus_id, BUS_ID_SIZE);
+
+	if (device_add(&sdkp->dev))
+		goto out_free_index;
+
+	get_device(&sdp->sdev_gendev);
+
+	if (index < SD_MAX_DISKS) {
+		gd->major = sd_major((index & 0xf0) >> 4);
+		gd->first_minor = ((index & 0xf) << 4) | (index & 0xfff00);
+		gd->minors = SD_MINORS;
+	}
+	gd->fops = &sd_fops;
+	gd->private_data = &sdkp->driver;
+	gd->queue = sdkp->device->request_queue;
+
+	sd_revalidate_disk(gd);
+
+	blk_queue_prep_rq(sdp->request_queue, sd_prep_fn);
+
+	gd->driverfs_dev = &sdp->sdev_gendev;
+	gd->flags = GENHD_FL_EXT_DEVT | GENHD_FL_DRIVERFS;
+	if (sdp->removable)
+		gd->flags |= GENHD_FL_REMOVABLE;
+
+	dev_set_drvdata(dev, sdkp);
+	add_disk(gd);
+	sd_dif_config_host(sdkp);
+
+	sd_printk(KERN_NOTICE, sdkp, "Attached SCSI %sdisk\n",
+		  sdp->removable ? "removable " : "");
+
+	return;
+
+ out_free_index:
+	ida_remove(&sd_index_ida, index);
+}
+
 /**
  *	sd_probe - called during driver initialization and whenever a
  *	new scsi device is attached to the system. It is called once
@@ -1865,48 +1931,7 @@ static int sd_probe(struct device *dev)
 	sdkp->openers = 0;
 	sdkp->previous_state = 1;
 
-	if (!sdp->request_queue->rq_timeout) {
-		if (sdp->type != TYPE_MOD)
-			blk_queue_rq_timeout(sdp->request_queue, SD_TIMEOUT);
-		else
-			blk_queue_rq_timeout(sdp->request_queue,
-					     SD_MOD_TIMEOUT);
-	}
-
-	device_initialize(&sdkp->dev);
-	sdkp->dev.parent = &sdp->sdev_gendev;
-	sdkp->dev.class = &sd_disk_class;
-	strncpy(sdkp->dev.bus_id, sdp->sdev_gendev.bus_id, BUS_ID_SIZE);
-
-	if (device_add(&sdkp->dev))
-		goto out_free_index;
-
-	get_device(&sdp->sdev_gendev);
-
-	if (index < SD_MAX_DISKS) {
-		gd->major = sd_major((index & 0xf0) >> 4);
-		gd->first_minor = ((index & 0xf) << 4) | (index & 0xfff00);
-		gd->minors = SD_MINORS;
-	}
-	gd->fops = &sd_fops;
-	gd->private_data = &sdkp->driver;
-	gd->queue = sdkp->device->request_queue;
-
-	sd_revalidate_disk(gd);
-
-	blk_queue_prep_rq(sdp->request_queue, sd_prep_fn);
-
-	gd->driverfs_dev = &sdp->sdev_gendev;
-	gd->flags = GENHD_FL_EXT_DEVT | GENHD_FL_DRIVERFS;
-	if (sdp->removable)
-		gd->flags |= GENHD_FL_REMOVABLE;
-
-	dev_set_drvdata(dev, sdkp);
-	add_disk(gd);
-	sd_dif_config_host(sdkp);
-
-	sd_printk(KERN_NOTICE, sdkp, "Attached SCSI %sdisk\n",
-		  sdp->removable ? "removable " : "");
+	async_schedule(sd_probe_async, sdkp);
 
 	return 0;
 
-- 
1.6.0.6




-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH 3/4] fastboot: make the libata port scan asynchronous
  2009-01-04 17:24 [PATCH 0/4] Fastboot revisited: Asynchronous function calls Arjan van de Ven
  2009-01-04 17:28 ` [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot Arjan van de Ven
  2009-01-04 17:29 ` [PATCH 2/4] fastboot: make scsi probes asynchronous Arjan van de Ven
@ 2009-01-04 17:30 ` Arjan van de Ven
  2009-01-04 17:31 ` [PATCH 4/4] fastboot: make ACPI bus drivers probe asynchronous Arjan van de Ven
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 17:30 UTC (permalink / raw)
  To: linux-kernel
  Cc: Arjan van de Ven, torvalds, mingo, fweisbec, linux-scsi,
	linux-ide, linux-acpi, akpm


>From 2eb80a6c7b7c33a9053cfd286169d5163027f0cd Mon Sep 17 00:00:00 2001
From: Arjan van de Ven <arjan@linux.intel.com>
Date: Sun, 4 Jan 2009 05:32:28 -0800
Subject: [PATCH] fastboot: make the libata port scan asynchronous

This patch makes the libata port scanning asynchronous (per device).
There is a synchronization point before doing the actual disk scan
so that device ordering is not affected.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
---
 drivers/ata/libata-core.c |   84 ++++++++++++++++++++++++--------------------
 1 files changed, 46 insertions(+), 38 deletions(-)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index fecca42..fe2c208 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -56,6 +56,7 @@
 #include <linux/workqueue.h>
 #include <linux/scatterlist.h>
 #include <linux/io.h>
+#include <linux/async.h>
 #include <scsi/scsi.h>
 #include <scsi/scsi_cmnd.h>
 #include <scsi/scsi_host.h>
@@ -5909,6 +5910,48 @@ void ata_host_init(struct ata_host *host, struct device *dev,
 	host->ops = ops;
 }
 
+
+void async_port_probe(void *data, async_cookie_t cookie)
+{
+	int rc;
+	struct ata_port *ap = data;
+	/* probe */
+	if (ap->ops->error_handler) {
+		struct ata_eh_info *ehi = &ap->link.eh_info;
+		unsigned long flags;
+
+		ata_port_probe(ap);
+
+		/* kick EH for boot probing */
+		spin_lock_irqsave(ap->lock, flags);
+
+		ehi->probe_mask |= ATA_ALL_DEVICES;
+		ehi->action |= ATA_EH_RESET | ATA_EH_LPM;
+		ehi->flags |= ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET;
+
+		ap->pflags &= ~ATA_PFLAG_INITIALIZING;
+		ap->pflags |= ATA_PFLAG_LOADING;
+		ata_port_schedule_eh(ap);
+
+		spin_unlock_irqrestore(ap->lock, flags);
+
+		/* wait for EH to finish */
+		ata_port_wait_eh(ap);
+	} else {
+		DPRINTK("ata%u: bus probe begin\n", ap->print_id);
+		rc = ata_bus_probe(ap);
+		DPRINTK("ata%u: bus probe end\n", ap->print_id);
+
+		if (rc) {
+			/* FIXME: do something useful here?
+			 * Current libata behavior will
+			 * tear down everything when
+			 * the module is removed
+			 * or the h/w is unplugged.
+			 */
+		}
+	}
+}
 /**
  *	ata_host_register - register initialized ATA host
  *	@host: ATA host to register
@@ -5988,45 +6031,9 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
 	DPRINTK("probe begin\n");
 	for (i = 0; i < host->n_ports; i++) {
 		struct ata_port *ap = host->ports[i];
-
-		/* probe */
-		if (ap->ops->error_handler) {
-			struct ata_eh_info *ehi = &ap->link.eh_info;
-			unsigned long flags;
-
-			ata_port_probe(ap);
-
-			/* kick EH for boot probing */
-			spin_lock_irqsave(ap->lock, flags);
-
-			ehi->probe_mask |= ATA_ALL_DEVICES;
-			ehi->action |= ATA_EH_RESET | ATA_EH_LPM;
-			ehi->flags |= ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET;
-
-			ap->pflags &= ~ATA_PFLAG_INITIALIZING;
-			ap->pflags |= ATA_PFLAG_LOADING;
-			ata_port_schedule_eh(ap);
-
-			spin_unlock_irqrestore(ap->lock, flags);
-
-			/* wait for EH to finish */
-			ata_port_wait_eh(ap);
-		} else {
-			DPRINTK("ata%u: bus probe begin\n", ap->print_id);
-			rc = ata_bus_probe(ap);
-			DPRINTK("ata%u: bus probe end\n", ap->print_id);
-
-			if (rc) {
-				/* FIXME: do something useful here?
-				 * Current libata behavior will
-				 * tear down everything when
-				 * the module is removed
-				 * or the h/w is unplugged.
-				 */
-			}
-		}
+		async_schedule(async_port_probe, ap);
 	}
-
+	async_synchronize_full();
 	/* probes are done, now scan each port's disk(s) */
 	DPRINTK("host probe begin\n");
 	for (i = 0; i < host->n_ports; i++) {
@@ -6034,6 +6041,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
 
 		ata_scsi_scan_host(ap, 1);
 	}
+	DPRINTK("host probe end\n");
 
 	return 0;
 }
-- 
1.6.0.6


-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH 4/4] fastboot: make ACPI bus drivers probe asynchronous
  2009-01-04 17:24 [PATCH 0/4] Fastboot revisited: Asynchronous function calls Arjan van de Ven
                   ` (2 preceding siblings ...)
  2009-01-04 17:30 ` [PATCH 3/4] fastboot: make the libata port scan asynchronous Arjan van de Ven
@ 2009-01-04 17:31 ` Arjan van de Ven
  2009-01-05  2:03   ` Zhao Yakui
  2009-01-04 18:16 ` [PATCH 0/4] Fastboot revisited: Asynchronous function calls Linus Torvalds
  2009-01-05  6:01 ` Nigel Cunningham
  5 siblings, 1 reply; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 17:31 UTC (permalink / raw)
  To: linux-kernel
  Cc: Arjan van de Ven, torvalds, mingo, fweisbec, linux-scsi,
	linux-ide, linux-acpi, akpm


>From 20af3efd07b775a27a997e3df1039e20ea18f62b Mon Sep 17 00:00:00 2001
From: Arjan van de Ven <arjan@linux.intel.com>
Date: Sun, 4 Jan 2009 05:32:28 -0800
Subject: [PATCH] fastboot: make ACPI bus drivers probe asynchronous

the various ACPI bus drivers have non-overlapping devices and can
each be run asynchronous. Some of the ACPI drivers (especially the
battery one, but others as well) can take quite a long time to probe.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
---
 drivers/acpi/scan.c |   23 ++++++++++++++++-------
 1 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 39b7233..a9e542d 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -8,6 +8,7 @@
 #include <linux/acpi.h>
 #include <linux/signal.h>
 #include <linux/kthread.h>
+#include <linux/async.h>
 
 #include <acpi/acpi_drivers.h>
 #include <acpi/acinterp.h>	/* for acpi_ex_eisa_id_to_string() */
@@ -578,6 +579,19 @@ static int acpi_start_single_object(struct acpi_device *device)
 	return result;
 }
 
+static void acpi_bus_register_async(void *data, async_cookie_t cookie)
+{
+	int ret;
+	struct acpi_driver *driver = data;
+	driver->drv.name = driver->name;
+	driver->drv.bus = &acpi_bus_type;
+	driver->drv.owner = driver->owner;
+
+	async_synchronize_cookie(cookie);
+
+	ret = driver_register(&driver->drv);
+	WARN_ON(ret != 0);
+}
 /**
  * acpi_bus_register_driver - register a driver with the ACPI bus
  * @driver: driver being registered
@@ -588,16 +602,11 @@ static int acpi_start_single_object(struct acpi_device *device)
  */
 int acpi_bus_register_driver(struct acpi_driver *driver)
 {
-	int ret;
 
 	if (acpi_disabled)
 		return -ENODEV;
-	driver->drv.name = driver->name;
-	driver->drv.bus = &acpi_bus_type;
-	driver->drv.owner = driver->owner;
-
-	ret = driver_register(&driver->drv);
-	return ret;
+	async_schedule(acpi_bus_register_async, driver);
+	return 0;
 }
 
 EXPORT_SYMBOL(acpi_bus_register_driver);
-- 
1.6.0.6


-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* Re: [PATCH 2/4] fastboot: make scsi probes asynchronous
  2009-01-04 17:29 ` [PATCH 2/4] fastboot: make scsi probes asynchronous Arjan van de Ven
@ 2009-01-04 18:05   ` Matthew Wilcox
  2009-01-04 18:13     ` Arjan van de Ven
  0 siblings, 1 reply; 42+ messages in thread
From: Matthew Wilcox @ 2009-01-04 18:05 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: linux-kernel, torvalds, mingo, fweisbec, linux-scsi, linux-ide,
	linux-acpi, akpm

On Sun, Jan 04, 2009 at 09:29:40AM -0800, Arjan van de Ven wrote:
> >From 2087b546abddced50fa73ea9a71b5a040ae1026e Mon Sep 17 00:00:00 2001
> From: Arjan van de Ven <arjan@linux.intel.com>
> Date: Sun, 4 Jan 2009 05:32:28 -0800
> Subject: [PATCH] fastboot: make scsi probes asynchronous
> 
> This patch makes part of the scsi probe (which is mostly device spin up and the
> partition scan) asynchronous. Only the part that runs after getting the device
> number allocated is asynchronous, ensuring that device numbering remains stable.

Is this really a big win?  Were you using the async scsi scan code
already?

-- 
Matthew Wilcox				Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 2/4] fastboot: make scsi probes asynchronous
  2009-01-04 18:05   ` Matthew Wilcox
@ 2009-01-04 18:13     ` Arjan van de Ven
  2009-01-04 18:38       ` Jaswinder Singh Rajput
  0 siblings, 1 reply; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 18:13 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: linux-kernel, torvalds, mingo, fweisbec, linux-scsi, linux-ide,
	linux-acpi, akpm

On Sun, 4 Jan 2009 11:05:15 -0700
Matthew Wilcox <matthew@wil.cx> wrote:

> On Sun, Jan 04, 2009 at 09:29:40AM -0800, Arjan van de Ven wrote:
> > >From 2087b546abddced50fa73ea9a71b5a040ae1026e Mon Sep 17 00:00:00
> > >2001
> > From: Arjan van de Ven <arjan@linux.intel.com>
> > Date: Sun, 4 Jan 2009 05:32:28 -0800
> > Subject: [PATCH] fastboot: make scsi probes asynchronous
> > 
> > This patch makes part of the scsi probe (which is mostly device
> > spin up and the partition scan) asynchronous. Only the part that
> > runs after getting the device number allocated is asynchronous,
> > ensuring that device numbering remains stable.
> 
> Is this really a big win?  Were you using the async scsi scan code
> already? 

just checked;
my box has CONFIG_SCSI_SCAN_ASYNC=y set for both cases
it seems to be about 0.1 seconds win still though...
sounds little, but a kernel boot should be less than a second, so that
is still 10%. And it's obviously also disk dependent..
(I used libata connected disks obviously)



-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 17:24 [PATCH 0/4] Fastboot revisited: Asynchronous function calls Arjan van de Ven
                   ` (3 preceding siblings ...)
  2009-01-04 17:31 ` [PATCH 4/4] fastboot: make ACPI bus drivers probe asynchronous Arjan van de Ven
@ 2009-01-04 18:16 ` Linus Torvalds
  2009-01-04 18:31   ` Arjan van de Ven
                     ` (3 more replies)
  2009-01-05  6:01 ` Nigel Cunningham
  5 siblings, 4 replies; 42+ messages in thread
From: Linus Torvalds @ 2009-01-04 18:16 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: linux-kernel, mingo, fweisbec, linux-scsi, linux-ide, linux-acpi,
	akpm



On Sun, 4 Jan 2009, Arjan van de Ven wrote:
> 
> To see this working, I uploaded a "before" and "after" kernel bootchart
> for one of my testboxes at
> 
> http://www.fenrus.org/linux/before.svg
> http://www.fenrus.org/linux/after.svg

Ok, so why does the serial port init take so long? That's a quarter of a 
second for you, which is ridiculous.

I _think_ it's the irq auto-probing, but that's just a guess. The 8250 
driver does some historical crud, like

	probe_irq_off(probe_irq_on());

to get rid of any pending irq's, but that should be entirely pointless 
these days. I bet that line basically goes back to pre-history, before we 
made the auto-probing much stabler.

The irq auto-probing itself also has a few excessive delays, like waiting 
for 0.1 s just to wait for spurious interrupts to trigger. Doing the extra 
unnecessary probe makes that doubly expensive.

Does this patch make any difference to you? I'm not at all sure that it's 
the irq probing, but if it is, then this should make the serial probe go 
much faster.

		Linus

---
 drivers/serial/8250.c  |    1 -
 kernel/irq/autoprobe.c |    4 ++--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index daa0056..436372e 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -1259,7 +1259,6 @@ static void autoconfig_irq(struct uart_8250_port *up)
 	}
 
 	/* forget possible initially masked and pending IRQ */
-	probe_irq_off(probe_irq_on());
 	save_mcr = serial_inp(up, UART_MCR);
 	save_ier = serial_inp(up, UART_IER);
 	serial_outp(up, UART_MCR, UART_MCR_OUT1 | UART_MCR_OUT2);
diff --git a/kernel/irq/autoprobe.c b/kernel/irq/autoprobe.c
index cc0f732..e272784 100644
--- a/kernel/irq/autoprobe.c
+++ b/kernel/irq/autoprobe.c
@@ -60,7 +60,7 @@ unsigned long probe_irq_on(void)
 	}
 
 	/* Wait for longstanding interrupts to trigger. */
-	msleep(20);
+	msleep(10);
 
 	/*
 	 * enable any unassigned irqs
@@ -80,7 +80,7 @@ unsigned long probe_irq_on(void)
 	/*
 	 * Wait for spurious interrupts to trigger
 	 */
-	msleep(100);
+	msleep(10);
 
 	/*
 	 * Now filter out any obviously spurious interrupts

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 18:16 ` [PATCH 0/4] Fastboot revisited: Asynchronous function calls Linus Torvalds
@ 2009-01-04 18:31   ` Arjan van de Ven
  2009-01-04 18:54     ` Linus Torvalds
  2009-01-04 19:27   ` Linus Torvalds
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 18:31 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: linux-kernel, mingo, fweisbec, linux-scsi, linux-ide, linux-acpi,
	akpm

On Sun, 4 Jan 2009 10:16:57 -0800 (PST)
Linus Torvalds <torvalds@linux-foundation.org> wrote:

> 
> 
> On Sun, 4 Jan 2009, Arjan van de Ven wrote:
> > 
> > To see this working, I uploaded a "before" and "after" kernel
> > bootchart for one of my testboxes at
> > 
> > http://www.fenrus.org/linux/before.svg
> > http://www.fenrus.org/linux/after.svg
> 
> Ok, so why does the serial port init take so long? That's a quarter
> of a second for you, which is ridiculous.

good question; I was about to start looking into that one (but wanted
to get the patches out first before I did more than 3 to not waste time
on some dead-end approach if it ends up being that)

> 
> I _think_ it's the irq auto-probing, but that's just a guess.

I kinda was hoping that in part it was a scaling thing with the number
of ports (4 in my .config) so that I could do the ports
asynchronous compared to eachother ;-)

> The irq auto-probing itself also has a few excessive delays, like
> waiting for 0.1 s just to wait for spurious interrupts to trigger.
> Doing the extra unnecessary probe makes that doubly expensive.
> 
> Does this patch make any difference to you? I'm not at all sure that
> it's the irq probing, but if it is, then this should make the serial
> probe go much faster.

it turned it into a 25 msec deal .. pretty good improvement in my book.
(now I still might want to try to do this async so that it becomes
25/4 ... but the pressure i

-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot
  2009-01-04 17:28 ` [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot Arjan van de Ven
@ 2009-01-04 18:33   ` Linus Torvalds
  2009-01-04 18:40     ` Arjan van de Ven
  2009-01-04 18:49     ` Arjan van de Ven
  2009-01-04 19:05   ` Andi Kleen
  1 sibling, 2 replies; 42+ messages in thread
From: Linus Torvalds @ 2009-01-04 18:33 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: Linux Kernel Mailing List, Ingo Molnar, fweisbec, linux-scsi,
	linux-ide, linux-acpi, Andrew Morton



On Sun, 4 Jan 2009, Arjan van de Ven wrote:
> +
> +typedef u64 async_cookie_t;
> +typedef void (async_func_ptr) (void *data, async_cookie_t cookie);
> +
> +extern void async_schedule(async_func_ptr *ptr, void *data);
> +extern void async_synchronize_full(void);
> +extern void async_synchronize_cookie(async_cookie_t cookie);

Hmm. The cookie use doesn't seem to make much sense.

Why do you pass in the cookie to the async function, but don't return it 
to the caller? That seems backwards - you'd normally expect that it is the 
_caller_ that wants the cookie (to synchronise with a specific async 
call), not the callee. But now the only one who knows the cookie is the 
wrong entry - just the callee, not the caller.

Yes, yes, I read the explanation in the comments, and it says that the 
callee should do it to guarantee its own ordering, and your acpi port 
thing does that in order to apparently start a sequence that is 
asynchronous only wrt the synchronous code, but not wrt itself. That's a 
_very_ odd model, but whatever works. But wouldn't it still make sense to 
let the caller wait for individual events too?

IOW, I'd just suggest changing the interface so that "async_schedule()" 
also returns the cookie. 

			Linus

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 2/4] fastboot: make scsi probes asynchronous
  2009-01-04 18:13     ` Arjan van de Ven
@ 2009-01-04 18:38       ` Jaswinder Singh Rajput
  2009-01-04 18:44         ` Arjan van de Ven
  0 siblings, 1 reply; 42+ messages in thread
From: Jaswinder Singh Rajput @ 2009-01-04 18:38 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: Matthew Wilcox, linux-kernel, torvalds, mingo, fweisbec,
	linux-scsi, linux-ide, linux-acpi, akpm

On Sun, Jan 4, 2009 at 11:43 PM, Arjan van de Ven <arjan@infradead.org> wrote:
>
> just checked;
> my box has CONFIG_SCSI_SCAN_ASYNC=y set for both cases
> it seems to be about 0.1 seconds win still though...
> sounds little, but a kernel boot should be less than a second, so that
> is still 10%. And it's obviously also disk dependent..
> (I used libata connected disks obviously)
>

Do you also have boot time numbers for RAM and/or flash based
filesystem (disk-less)

JSR

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot
  2009-01-04 18:33   ` Linus Torvalds
@ 2009-01-04 18:40     ` Arjan van de Ven
  2009-01-04 18:49     ` Arjan van de Ven
  1 sibling, 0 replies; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 18:40 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Linux Kernel Mailing List, Ingo Molnar, fweisbec, linux-scsi,
	linux-ide, linux-acpi, Andrew Morton

On Sun, 4 Jan 2009 10:33:34 -0800 (PST)
Linus Torvalds <torvalds@linux-foundation.org> wrote:

> 
> 
> On Sun, 4 Jan 2009, Arjan van de Ven wrote:
> > +
> > +typedef u64 async_cookie_t;
> > +typedef void (async_func_ptr) (void *data, async_cookie_t cookie);
> > +
> > +extern void async_schedule(async_func_ptr *ptr, void *data);
> > +extern void async_synchronize_full(void);
> > +extern void async_synchronize_cookie(async_cookie_t cookie);
> 
> Hmm. The cookie use doesn't seem to make much sense.
> 
> Why do you pass in the cookie to the async function, but don't return
> it to the caller? That seems backwards - you'd normally expect that
> it is the _caller_ that wants the cookie (to synchronise with a
> specific async call), not the callee. But now the only one who knows
> the cookie is the wrong entry - just the callee, not the caller.

in fact, either could need it.
the callee could need it when IT does a global registration (for
example to get a device number) at the end of its sequence.
We'd want that registration to happen sequential (it's basically the
equivalent of a commit/retirement of the instruction in a CPU)
the caller could need it when it wants to wait for the async function
it kicked off.

so both make total sense to me.

> 
> Yes, yes, I read the explanation in the comments, and it says that
> the callee should do it to guarantee its own ordering, and your acpi
> port thing does that in order to apparently start a sequence that is 
> asynchronous only wrt the synchronous code, but not wrt itself.
> That's a _very_ odd model, but whatever works. But wouldn't it still
> make sense to let the caller wait for individual events too?
> 
> IOW, I'd just suggest changing the interface so that
> "async_schedule()" also returns the cookie. 

I had that originally... (as I described in the first mail).. but had
no users of it in the places I converted.
I'm happy to just return it; it does make sense (that's why I did this
originally)....


-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 2/4] fastboot: make scsi probes asynchronous
  2009-01-04 18:38       ` Jaswinder Singh Rajput
@ 2009-01-04 18:44         ` Arjan van de Ven
  0 siblings, 0 replies; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 18:44 UTC (permalink / raw)
  To: Jaswinder Singh Rajput
  Cc: Matthew Wilcox, linux-kernel, torvalds, mingo, fweisbec,
	linux-scsi, linux-ide, linux-acpi, akpm

On Mon, 5 Jan 2009 00:08:42 +0530
"Jaswinder Singh Rajput" <jaswinderlinux@gmail.com> wrote:

> On Sun, Jan 4, 2009 at 11:43 PM, Arjan van de Ven
> <arjan@infradead.org> wrote:
> >
> > just checked;
> > my box has CONFIG_SCSI_SCAN_ASYNC=y set for both cases
> > it seems to be about 0.1 seconds win still though...
> > sounds little, but a kernel boot should be less than a second, so
> > that is still 10%. And it's obviously also disk dependent..
> > (I used libata connected disks obviously)
> >
> 
> Do you also have boot time numbers for RAM and/or flash based
> filesystem (disk-less)

my laptop with a pretty nice SSD shows a similar kind of behavior
(bit shorter in time, but there the entire kernel boot is shorter as a
whole)



-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot
  2009-01-04 18:33   ` Linus Torvalds
  2009-01-04 18:40     ` Arjan van de Ven
@ 2009-01-04 18:49     ` Arjan van de Ven
  1 sibling, 0 replies; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 18:49 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Linux Kernel Mailing List, Ingo Molnar, fweisbec, linux-scsi,
	linux-ide, linux-acpi, Andrew Morton

On Sun, 4 Jan 2009 10:33:34 -0800 (PST)
Linus Torvalds <torvalds@linux-foundation.org> wrote:

> IOW, I'd just suggest changing the interface so that
> "async_schedule()" also returns the cookie. 
> 

>From 6b436c0fab92c50cae7ba3bcd9bcfebf2c9596f7 Mon Sep 17 00:00:00 2001
From: Arjan van de Ven <arjan@linux.intel.com>
Date: Sun, 4 Jan 2009 10:47:27 -0800
Subject: [PATCH] fastboot: return the cookie from async_schedule()

Put this code back as suggested by Linus; even if there's no users right
now it makes conceptual sense and the cost is basically zero.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
---
 include/linux/async.h |    2 +-
 kernel/async.c        |   10 ++++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/include/linux/async.h b/include/linux/async.h
index b54d83a..678d4fd 100644
--- a/include/linux/async.h
+++ b/include/linux/async.h
@@ -15,7 +15,7 @@
 typedef u64 async_cookie_t;
 typedef void (async_func_ptr) (void *data, async_cookie_t cookie);
 
-extern void async_schedule(async_func_ptr *ptr, void *data);
+extern async_cookie_t async_schedule(async_func_ptr *ptr, void *data);
 extern void async_synchronize_full(void);
 extern void async_synchronize_cookie(async_cookie_t cookie);
 
diff --git a/kernel/async.c b/kernel/async.c
index 9918fe5..8ecebf5 100644
--- a/kernel/async.c
+++ b/kernel/async.c
@@ -156,32 +156,34 @@ out:
 }
 
 
-void async_schedule(async_func_ptr *ptr, void *data)
+async_cookie_t async_schedule(async_func_ptr *ptr, void *data)
 {
 	struct async_entry *entry;
 	unsigned long flags;
+	async_cookie_t newcookie;
+	
 
 	/* allow irq-off callers */
 	entry = kzalloc(sizeof(struct async_entry), GFP_ATOMIC);
 	if (!entry) {
-		async_cookie_t newcookie;
 		spin_lock_irqsave(&async_lock, flags);
 		newcookie = next_cookie++;
 		spin_unlock_irqrestore(&async_lock, flags);
 
 		/* low on memory.. run synchronously */
 		ptr(data, newcookie);
-		return;
+		return newcookie;
 	}
 	entry->func = ptr;
 	entry->data = data;
 
 	spin_lock_irqsave(&async_lock, flags);
-	entry->cookie = next_cookie++;
+	newcookie = entry->cookie = next_cookie++;
 	list_add_tail(&entry->list, &async_pending);
 	atomic_inc(&entry_count);
 	spin_unlock_irqrestore(&async_lock, flags);
 	wake_up(&async_new);
+	return newcookie;
 }
 EXPORT_SYMBOL_GPL(async_schedule);
 
-- 
1.6.0.6


-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 18:31   ` Arjan van de Ven
@ 2009-01-04 18:54     ` Linus Torvalds
  2009-01-04 19:05       ` Arjan van de Ven
  2009-01-04 19:11       ` Andi Kleen
  0 siblings, 2 replies; 42+ messages in thread
From: Linus Torvalds @ 2009-01-04 18:54 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: linux-kernel, mingo, fweisbec, linux-scsi, linux-ide, linux-acpi,
	akpm



On Sun, 4 Jan 2009, Arjan van de Ven wrote:
> > 
> > I _think_ it's the irq auto-probing, but that's just a guess.
> 
> I kinda was hoping that in part it was a scaling thing with the number
> of ports (4 in my .config) so that I could do the ports
> asynchronous compared to eachother ;-)

Since it seems to be the irq auto-probing, then doing it asynchronously 
won't help. Not only will it happen only for ports that you actually have 
(rather than the number you have configured), but even if you actually 
have multiple physical ports, the irq autoprobing is all serialized (and 
has to be - it depends on).

It's serialized by the 'probing_active' mutex.

In fact, I suspect we should entirely disallow asynchronous irq probing, 
because while the probing itself is serialized wrt _other_ autoprobing, 
it's not necessarily safe wrt other drivers allocating interrupts in a 
non-probing manner.

So not only should we not bother to do irq autoprobing asynchronously 
(because it won't help), we also probably should make sure that there is 
no other driver doing any asynchronous "request_irq()" _while_ we probe. 
IOW, we should consider the "request_irq()" to be a globally ordered 
event, like requesting a major/minor number or registering a driver.

Of course, the way your asynchronous setup is done, there should never 
really be a reason for a driver to do the "request_irq()" asynchronously. 

The driver _should_ have already requested the irq in its synchronous 
part, and then do only the actual IO probing asynchronously. So I think 
we're all fine, but it may be worth pointing this out.

It might also be worth it to have some debug facilities for this, and have 
things like request_irq(), device_register() and driver_register() etc all 
verify that they are not called from "async context".

> > Does this patch make any difference to you? I'm not at all sure that
> > it's the irq probing, but if it is, then this should make the serial
> > probe go much faster.
> 
> it turned it into a 25 msec deal .. pretty good improvement in my book.

Ok, that certainly makes it a non-issue. It's a scary change in the sense 
that it's touching code that we _never_ touch, and it's magic irq 
autoprobing stuff, but at the same time, 0.1 seconds for testing whether 
some spurious irq happens is a pretty ridiculous cost. Especially since 
we're only talking legacy ISA interrupts anyway. If we have screaming 
interrupts, they'll happen immediately, not after a tenth of a second.

That said, I also wonder if we really even need to autoprobe the 
interrupts on any modern hardware. Rather than trying to speed up irq 
probing, maybe we could figure it out some other way.. The only thing that 
matters on 99% of all machines are the one or two standard ports that 
normally show up on 2f8h/irq3 and 3f8h/irq4 or something like that. 

			Linus

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 2/4] fastboot: make scsi probes asynchronous
       [not found]         ` <fa.opIcflAvDANLuO5+8NjVCjt/94o@ifi.uio.no>
@ 2009-01-04 18:55           ` Sitsofe Wheeler
  0 siblings, 0 replies; 42+ messages in thread
From: Sitsofe Wheeler @ 2009-01-04 18:55 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: Jaswinder Singh Rajput, Matthew Wilcox, linux-kernel, torvalds,
	mingo, fweisbec, linux-scsi, linux-ide, linux-acpi, akpm

Arjan van de Ven wrote:
> On Mon, 5 Jan 2009 00:08:42 +0530
> "Jaswinder Singh Rajput" <jaswinderlinux@gmail.com> wrote:
> 
>> On Sun, Jan 4, 2009 at 11:43 PM, Arjan van de Ven
>> <arjan@infradead.org> wrote:
>>> just checked;
>>> my box has CONFIG_SCSI_SCAN_ASYNC=y set for both cases
>>> it seems to be about 0.1 seconds win still though...
>>> sounds little, but a kernel boot should be less than a second, so
>>> that is still 10%. And it's obviously also disk dependent..
>>> (I used libata connected disks obviously)
>>>
>> Do you also have boot time numbers for RAM and/or flash based
>> filesystem (disk-less)
> 
> my laptop with a pretty nice SSD shows a similar kind of behavior
> (bit shorter in time, but there the entire kernel boot is shorter as a
> whole)

I've just tested this on my EeePC 900 (on the slower SSD) and I see a 
0.41 second speed up if I look at the time up to "Write protecting the 
kernel text" message. The gap is bigger if I take the time up to the 
point when the internal network card (an Attansic) prints its irq - then 
the gap is 1.31 seconds. Everything seems to be good so I guess if it 
helps you can add a tested-by line:

Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>

---

debug_initcall log without fastboot:

[    0.000000] BIOS EBDA/lowmem at: 0009fc00/0009fc00
[    0.000000] Linux version 2.6.28-rc9-00070-gc20137f-dirty 
(sits@xenon.sucs.swan.ac.uk) (gcc version 4.1.2 20070925 (Red Hat 
4.1.2-33)) #19 Sun Jan 4 18:20:58 GMT 2009
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
[    0.000000]  BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 000000003f780000 (usable)
[    0.000000]  BIOS-e820: 000000003f780000 - 000000003f790000 (ACPI data)
[    0.000000]  BIOS-e820: 000000003f790000 - 000000003f7d0000 (ACPI NVS)
[    0.000000]  BIOS-e820: 000000003f7d0000 - 000000003f7de000 (reserved)
[    0.000000]  BIOS-e820: 000000003f7e0000 - 000000003f800000 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved)
[    0.000000] DMI present.
[    0.000000] last_pfn = 0x3f780 max_arch_pfn = 0x100000
[    0.000000] original variable MTRRs
[    0.000000] reg 0, base: 0GB, range: 1GB, type WB
[    0.000000] reg 1, base: 1016MB, range: 8MB, type UC
[    0.000000] total RAM coverred: 1016M
[    0.000000]  gran_size: 64K 	chunk_size: 64K 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 128K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 256K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 512K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 1M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 16M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 128K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 256K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 512K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 1M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 16M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 32M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 64M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 256K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 512K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 1M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 16M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 32M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 64M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 512K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 1M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 16M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 32M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 64M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 1M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 16M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 128M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 256M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 512M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 16M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 128M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 256M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 512M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 16M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 128M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 256M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 512M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 16M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 128M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 256M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 512M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 16M 	chunk_size: 16M 	num_reg: 6  	lose cover 
RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 2G 	num_reg: 6  	lose cover 
RAM: 8M
[    0.000000]  gran_size: 32M 	chunk_size: 32M 	num_reg: 5  	lose cover 
RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 2G 	num_reg: 5  	lose cover 
RAM: 24M
[    0.000000]  gran_size: 64M 	chunk_size: 64M 	num_reg: 4  	lose cover 
RAM: 56M
[    0.000000]  gran_size: 64M 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 56M
[    0.000000]  gran_size: 64M 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 56M
[    0.000000]  gran_size: 64M 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 56M
[    0.000000]  gran_size: 64M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 56M
[    0.000000]  gran_size: 64M 	chunk_size: 2G 	num_reg: 4  	lose cover 
RAM: 56M
[    0.000000]  gran_size: 128M 	chunk_size: 128M 	num_reg: 3  	lose 
cover RAM: 120M
[    0.000000]  gran_size: 128M 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 120M
[    0.000000]  gran_size: 128M 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 120M
[    0.000000]  gran_size: 128M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 120M
[    0.000000]  gran_size: 128M 	chunk_size: 2G 	num_reg: 3  	lose cover 
RAM: 120M
[    0.000000]  gran_size: 256M 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 248M
[    0.000000]  gran_size: 256M 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 248M
[    0.000000]  gran_size: 256M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 248M
[    0.000000]  gran_size: 256M 	chunk_size: 2G 	num_reg: 2  	lose cover 
RAM: 248M
[    0.000000]  gran_size: 512M 	chunk_size: 512M 	num_reg: 1  	lose 
cover RAM: 504M
[    0.000000]  gran_size: 512M 	chunk_size: 1G 	num_reg: 1  	lose cover 
RAM: 504M
[    0.000000]  gran_size: 512M 	chunk_size: 2G 	num_reg: 1  	lose cover 
RAM: 504M
[    0.000000]  gran_size: 1G 	chunk_size: 1G 	num_reg: 0  	lose cover 
RAM: 1016M
[    0.000000]  gran_size: 1G 	chunk_size: 2G 	num_reg: 0  	lose cover 
RAM: 1016M
[    0.000000]  gran_size: 2G 	chunk_size: 2G 	num_reg: 0  	lose cover 
RAM: 1016M
[    0.000000] Found optimal setting for mtrr clean up
[    0.000000] gran_size: 64K 	chunk_size: 16M 	num_reg: 2  	lose RAM: 0G
[    0.000000] range0: 0000000000000000 - 0000000040000000
[    0.000000] Setting variable MTRR 0, base: 0GB, range: 1GB, type WB
[    0.000000] hole: 000000003f800000 - 0000000040000000
[    0.000000] Setting variable MTRR 1, base: 1016MB, range: 8MB, type UC
[    0.000000] kernel direct mapping tables up to 377fe000 @ 7000-d000
[    0.000000] ACPI: RSDP 000FBE60, 0014 (r0 ACPIAM)
[    0.000000] ACPI: RSDT 3F780000, 0034 (r1 A M I  OEMRSDT   9000811 
MSFT       97)
[    0.000000] ACPI: FACP 3F780200, 0081 (r1 A M I  OEMFACP   9000811 
MSFT       97)
[    0.000000] ACPI: DSDT 3F780400, 6109 (r1  A0979 A0979034       34 
INTL 20060113)
[    0.000000] ACPI: FACS 3F790000, 0040
[    0.000000] ACPI: APIC 3F780390, 0068 (r1 A M I  OEMAPIC   9000811 
MSFT       97)
[    0.000000] ACPI: OEMB 3F790040, 0046 (r1 A M I  AMI_OEM   9000811 
MSFT       97)
[    0.000000] ACPI: MCFG 3F786510, 003C (r1 A M I  OEMMCFG   9000811 
MSFT       97)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 127MB HIGHMEM available.
[    0.000000] 887MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 377fe000
[    0.000000]   low ram: 00000000 - 377fe000
[    0.000000]   bootmap 00009000 - 0000ff00
[    0.000000] (6 early reservations) ==> bootmem [0000000000 - 00377fe000]
[    0.000000]   #0 [0000000000 - 0000001000]   BIOS data page ==> 
[0000000000 - 0000001000]
[    0.000000]   #1 [0000100000 - 000054208c]    TEXT DATA BSS ==> 
[0000100000 - 000054208c]
[    0.000000]   #2 [0000543000 - 0000546000]    INIT_PG_TABLE ==> 
[0000543000 - 0000546000]
[    0.000000]   #3 [000009fc00 - 0000100000]    BIOS reserved ==> 
[000009fc00 - 0000100000]
[    0.000000]   #4 [0000007000 - 0000009000]          PGTABLE ==> 
[0000007000 - 0000009000]
[    0.000000]   #5 [0000009000 - 0000010000]          BOOTMAP ==> 
[0000009000 - 0000010000]
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA      0x00000000 -> 0x00001000
[    0.000000]   Normal   0x00001000 -> 0x000377fe
[    0.000000]   HighMem  0x000377fe -> 0x0003f780
[    0.000000] Movable zone start PFN for each node
[    0.000000] early_node_map[2] active PFN ranges
[    0.000000]     0: 0x00000000 -> 0x0000009f
[    0.000000]     0: 0x00000100 -> 0x0003f780
[    0.000000] On node 0 totalpages: 259871
[    0.000000] free_area_init_node: node 0, pgdat c0483f40, node_mem_map 
c1000000
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3967 pages, LIFO batch:0
[    0.000000]   Normal zone: 1744 pages used for memmap
[    0.000000]   Normal zone: 221486 pages, LIFO batch:31
[    0.000000]   HighMem zone: 256 pages used for memmap
[    0.000000]   HighMem zone: 32386 pages, LIFO batch:7
[    0.000000]   Movable zone: 0 pages used for memmap
[    0.000000] ACPI: PM-Timer IO Port: 0x808
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 1, 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: 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: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.000000] Allocating PCI resources starting at 40000000 (gap: 
3f800000:bf600000)
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on. 
Total pages: 257839
[    0.000000] Kernel command line: initcall_debug root=/dev/sdb2 ro quiet
[    0.000000] Enabling fast FPU save and restore... done.
[    0.000000] Enabling unmasked SIMD FPU exception support... done.
[    0.000000] Initializing CPU#0
[    0.000000] PID hash table entries: 4096 (order: 12, 16384 bytes)
[    0.000000] Fast TSC calibration using PIT
[    0.000000] Detected 900.107 MHz processor.
[    0.000999] Console: colour VGA+ 80x25
[    0.000999] console [tty0] enabled
[    0.000999] Dentry cache hash table entries: 131072 (order: 7, 524288 
bytes)
[    0.000999] Inode-cache hash table entries: 65536 (order: 6, 262144 
bytes)
[    0.000999] Memory: 1025852k/1039872k available (2600k kernel code, 
13332k reserved, 1031k data, 276k init, 130568k highmem)
[    0.000999] virtual kernel memory layout:
[    0.000999]     fixmap  : 0xfffac000 - 0xfffff000   ( 332 kB)
[    0.000999]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
[    0.000999]     vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
[    0.000999]     lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
[    0.000999]       .init : 0xc048e000 - 0xc04d3000   ( 276 kB)
[    0.000999]       .data : 0xc038a300 - 0xc048bf2c   (1031 kB)
[    0.000999]       .text : 0xc0100000 - 0xc038a300   (2600 kB)
[    0.000999] Checking if this processor honours the WP bit even in 
supervisor mode...Ok.
[    0.000999] SLUB: Genslabs=12, HWalign=64, Order=0-3, MinObjects=0, 
CPUs=1, Nodes=1
[    0.001013] Calibrating delay loop (skipped), value calculated using 
timer frequency.. 1800.21 BogoMIPS (lpj=900107)
[    0.001037] Security Framework initialized
[    0.001058] Mount-cache hash table entries: 512
[    0.001277] CPU: L1 I cache: 32K, L1 D cache: 32K
[    0.001283] CPU: L2 cache: 512K
[    0.001289] Intel machine check architecture supported.
[    0.001296] Intel machine check reporting enabled on CPU#0.
[    0.001308] CPU: Intel(R) Celeron(R) M processor          900MHz 
stepping 08
[    0.001321] Checking 'hlt' instruction... OK.
[    0.005652] Freeing SMP alternatives: 0k freed
[    0.005657] ACPI: Core revision 20080926
[    0.020075] calling  spawn_ksoftirqd+0x0/0x30 @ 1
[    0.020103] initcall spawn_ksoftirqd+0x0/0x30 returned 0 after 0 usecs
[    0.020110] calling  spawn_softlockup_task+0x0/0x50 @ 1
[    0.020133] initcall spawn_softlockup_task+0x0/0x50 returned 0 after 
0 usecs
[    0.020139] calling  tracer_alloc_buffers+0x0/0xf0 @ 1
[    0.021205] initcall tracer_alloc_buffers+0x0/0xf0 returned 0 after 
976 usecs
[    0.021566] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.031995] APIC calibration not consistent with PM Timer: 119ms 
instead of 100ms
[    0.031995] APIC delta adjusted to PM-Timer: 625063 (749965)
[    0.031995] calling  net_ns_init+0x0/0x1c0 @ 1
[    0.031995] net_namespace: 288 bytes
[    0.031995] initcall net_ns_init+0x0/0x1c0 returned 0 after 0 usecs
[    0.031995] calling  reboot_init+0x0/0x10 @ 1
[    0.031995] initcall reboot_init+0x0/0x10 returned 0 after 0 usecs
[    0.031995] calling  sysctl_init+0x0/0x10 @ 1
[    0.031995] initcall sysctl_init+0x0/0x10 returned 0 after 0 usecs
[    0.031995] calling  ksysfs_init+0x0/0xb0 @ 1
[    0.031995] initcall ksysfs_init+0x0/0xb0 returned 0 after 0 usecs
[    0.031995] calling  init_jiffies_clocksource+0x0/0x10 @ 1
[    0.031995] initcall init_jiffies_clocksource+0x0/0x10 returned 0 
after 0 usecs
[    0.031995] calling  pm_init+0x0/0x30 @ 1
[    0.031995] initcall pm_init+0x0/0x30 returned 0 after 0 usecs
[    0.031995] calling  filelock_init+0x0/0x30 @ 1
[    0.031995] initcall filelock_init+0x0/0x30 returned 0 after 0 usecs
[    0.031995] calling  init_script_binfmt+0x0/0x10 @ 1
[    0.031995] initcall init_script_binfmt+0x0/0x10 returned 0 after 0 usecs
[    0.031995] calling  init_elf_binfmt+0x0/0x10 @ 1
[    0.031995] initcall init_elf_binfmt+0x0/0x10 returned 0 after 0 usecs
[    0.031995] calling  debugfs_init+0x0/0x50 @ 1
[    0.031995] initcall debugfs_init+0x0/0x50 returned 0 after 0 usecs
[    0.031995] calling  random32_init+0x0/0xa0 @ 1
[    0.031995] initcall random32_init+0x0/0xa0 returned 0 after 0 usecs
[    0.031995] calling  cpuidle_init+0x0/0x20 @ 1
[    0.031995] initcall cpuidle_init+0x0/0x20 returned 0 after 0 usecs
[    0.031995] calling  sock_init+0x0/0x60 @ 1
[    0.031995] initcall sock_init+0x0/0x60 returned 0 after 0 usecs
[    0.031995] calling  netlink_proto_init+0x0/0x130 @ 1
[    0.031995] NET: Registered protocol family 16
[    0.031995] initcall netlink_proto_init+0x0/0x130 returned 0 after 0 
usecs
[    0.031995] calling  bdi_class_init+0x0/0x40 @ 1
[    0.031995] initcall bdi_class_init+0x0/0x40 returned 0 after 0 usecs
[    0.031995] calling  kobject_uevent_init+0x0/0x50 @ 1
[    0.031995] initcall kobject_uevent_init+0x0/0x50 returned 0 after 0 
usecs
[    0.031995] calling  pcibus_class_init+0x0/0x10 @ 1
[    0.031995] initcall pcibus_class_init+0x0/0x10 returned 0 after 0 usecs
[    0.031995] calling  pci_driver_init+0x0/0x10 @ 1
[    0.031995] initcall pci_driver_init+0x0/0x10 returned 0 after 0 usecs
[    0.031995] calling  backlight_class_init+0x0/0x50 @ 1
[    0.031995] initcall backlight_class_init+0x0/0x50 returned 0 after 0 
usecs
[    0.031995] calling  tty_class_init+0x0/0x30 @ 1
[    0.031995] initcall tty_class_init+0x0/0x30 returned 0 after 0 usecs
[    0.031995] calling  vtconsole_class_init+0x0/0xe0 @ 1
[    0.032052] initcall vtconsole_class_init+0x0/0xe0 returned 0 after 
976 usecs
[    0.032063] calling  amd_postcore_init+0x0/0x40 @ 1
[    0.032069] initcall amd_postcore_init+0x0/0x40 returned 0 after 0 usecs
[    0.032077] calling  arch_kdebugfs_init+0x0/0x20 @ 1
[    0.032087] initcall arch_kdebugfs_init+0x0/0x20 returned 0 after 0 usecs
[    0.032094] calling  init_pit_clocksource+0x0/0xb0 @ 1
[    0.032100] initcall init_pit_clocksource+0x0/0xb0 returned 0 after 0 
usecs
[    0.032107] calling  mtrr_if_init+0x0/0x70 @ 1
[    0.032116] initcall mtrr_if_init+0x0/0x70 returned 0 after 0 usecs
[    0.032124] calling  ffh_cstate_init+0x0/0x30 @ 1
[    0.032130] initcall ffh_cstate_init+0x0/0x30 returned 0 after 0 usecs
[    0.032139] calling  acpi_pci_init+0x0/0x60 @ 1
[    0.032143] ACPI: bus type pci registered
[    0.032149] initcall acpi_pci_init+0x0/0x60 returned 0 after 0 usecs
[    0.032157] calling  init_acpi_device_notify+0x0/0x3f @ 1
[    0.032162] initcall init_acpi_device_notify+0x0/0x3f returned 0 
after 0 usecs
[    0.032170] calling  pci_arch_init+0x0/0x50 @ 1
[    0.032218] PCI: MCFG configuration 0: base e0000000 segment 0 buses 
0 - 255
[    0.032225] PCI: Not using MMCONFIG.
[    0.032437] PCI: PCI BIOS revision 3.00 entry at 0xf0031, last bus=5
[    0.032443] PCI: Using configuration type 1 for base access
[    0.032486] initcall pci_arch_init+0x0/0x50 returned 0 after 0 usecs
[    0.032495] calling  topology_init+0x0/0x10 @ 1
[    0.032556] initcall topology_init+0x0/0x10 returned 0 after 0 usecs
[    0.032565] calling  mtrr_init_finialize+0x0/0x40 @ 1
[    0.032571] initcall mtrr_init_finialize+0x0/0x40 returned 0 after 0 
usecs
[    0.032579] calling  param_sysfs_init+0x0/0x320 @ 1
[    0.036228] initcall param_sysfs_init+0x0/0x320 returned 0 after 3905 
usecs
[    0.036242] calling  pm_sysrq_init+0x0/0x20 @ 1
[    0.036248] initcall pm_sysrq_init+0x0/0x20 returned 0 after 0 usecs
[    0.036256] calling  readahead_init+0x0/0x40 @ 1
[    0.036333] initcall readahead_init+0x0/0x40 returned 0 after 0 usecs
[    0.036346] calling  init_bio+0x0/0xc0 @ 1
[    0.036373] initcall init_bio+0x0/0xc0 returned 0 after 0 usecs
[    0.036381] calling  cryptomgr_init+0x0/0x30 @ 1
[    0.036392] initcall cryptomgr_init+0x0/0x30 returned 0 after 0 usecs
[    0.036400] calling  blk_settings_init+0x0/0x20 @ 1
[    0.036406] initcall blk_settings_init+0x0/0x20 returned 0 after 0 usecs
[    0.036415] calling  blk_ioc_init+0x0/0x30 @ 1
[    0.036421] initcall blk_ioc_init+0x0/0x30 returned 0 after 0 usecs
[    0.036429] calling  blk_softirq_init+0x0/0x30 @ 1
[    0.036435] initcall blk_softirq_init+0x0/0x30 returned 0 after 0 usecs
[    0.036444] calling  genhd_device_init+0x0/0x60 @ 1
[    0.036529] initcall genhd_device_init+0x0/0x60 returned 0 after 0 usecs
[    0.036542] calling  pci_slot_init+0x0/0x40 @ 1
[    0.036551] initcall pci_slot_init+0x0/0x40 returned 0 after 0 usecs
[    0.036560] calling  fbmem_init+0x0/0x90 @ 1
[    0.036620] initcall fbmem_init+0x0/0x90 returned 0 after 0 usecs
[    0.036630] calling  acpi_init+0x0/0x23a @ 1
[    0.037656] ACPI: EC: Look up EC in DSDT
[    0.050566] ACPI: Interpreter enabled
[    0.050578] ACPI: (supports S0 S1 S3 S5)
[    0.050612] ACPI: Using IOAPIC for interrupt routing
[    0.050725] PCI: MCFG configuration 0: base e0000000 segment 0 buses 
0 - 255
[    0.054015] PCI: MCFG area at e0000000 reserved in ACPI motherboard 
resources
[    0.054020] PCI: Using MMCONFIG for extended config space
[    0.054032] initcall acpi_init+0x0/0x23a returned 0 after 17575 usecs
[    0.054042] calling  acpi_scan_init+0x0/0xea @ 1
[    0.064461] initcall acpi_scan_init+0x0/0xea returned 0 after 9764 usecs
[    0.064475] calling  acpi_ec_init+0x0/0x51 @ 1
[    0.064532] ACPI: EC: GPE = 0x18, I/O: command/status = 0x66, data = 0x62
[    0.064537] ACPI: EC: driver started in poll mode
[    0.064599] initcall acpi_ec_init+0x0/0x51 returned 0 after 0 usecs
[    0.064607] calling  dock_init+0x0/0x79 @ 1
[    0.064820] ACPI: No dock devices found.
[    0.064824] initcall dock_init+0x0/0x79 returned 0 after 0 usecs
[    0.064832] calling  acpi_pci_root_init+0x0/0x21 @ 1
[    0.064976] ACPI: PCI Root Bridge [PCI0] (0000:00)
[    0.065155] pci 0000:00:02.0: reg 10 32bit mmio: [0xf7f00000-0xf7f7ffff]
[    0.065163] pci 0000:00:02.0: reg 14 io port: [0xec00-0xec07]
[    0.065170] pci 0000:00:02.0: reg 18 32bit mmio: [0xd0000000-0xdfffffff]
[    0.065178] pci 0000:00:02.0: reg 1c 32bit mmio: [0xf7ec0000-0xf7efffff]
[    0.065215] pci 0000:00:02.1: reg 10 32bit mmio: [0xf7f80000-0xf7ffffff]
[    0.065310] pci 0000:00:1b.0: reg 10 64bit mmio: [0xf7eb8000-0xf7ebbfff]
[    0.065344] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.065350] pci 0000:00:1b.0: PME# disabled
[    0.065402] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.065407] pci 0000:00:1c.0: PME# disabled
[    0.065460] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
[    0.065466] pci 0000:00:1c.1: PME# disabled
[    0.065519] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
[    0.065525] pci 0000:00:1c.2: PME# disabled
[    0.065577] pci 0000:00:1d.0: reg 20 io port: [0xe400-0xe41f]
[    0.065631] pci 0000:00:1d.1: reg 20 io port: [0xe480-0xe49f]
[    0.065683] pci 0000:00:1d.2: reg 20 io port: [0xe800-0xe81f]
[    0.065735] pci 0000:00:1d.3: reg 20 io port: [0xe880-0xe89f]
[    0.065792] pci 0000:00:1d.7: reg 10 32bit mmio: [0xf7eb7c00-0xf7eb7fff]
[    0.065835] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold
[    0.065841] pci 0000:00:1d.7: PME# disabled
[    0.065962] pci 0000:00:1f.0: Force enabled HPET at 0xfed00000
[    0.065972] pci 0000:00:1f.0: quirk: region 0800-087f claimed by ICH6 
ACPI/GPIO/TCO
[    0.065979] pci 0000:00:1f.0: quirk: region 0480-04bf claimed by ICH6 
GPIO
[    0.066019] pci 0000:00:1f.2: reg 10 io port: [0x00-0x07]
[    0.066028] pci 0000:00:1f.2: reg 14 io port: [0x00-0x03]
[    0.066036] pci 0000:00:1f.2: reg 18 io port: [0x00-0x07]
[    0.066044] pci 0000:00:1f.2: reg 1c io port: [0x00-0x03]
[    0.066052] pci 0000:00:1f.2: reg 20 io port: [0xffa0-0xffaf]
[    0.066074] pci 0000:00:1f.2: PME# supported from D3hot
[    0.066079] pci 0000:00:1f.2: PME# disabled
[    0.066128] pci 0000:00:1f.3: reg 20 io port: [0x400-0x41f]
[    0.066256] pci 0000:03:00.0: reg 10 64bit mmio: [0xfbfc0000-0xfbffffff]
[    0.066293] pci 0000:03:00.0: reg 30 32bit mmio: [0xfbfa0000-0xfbfbffff]
[    0.066308] pci 0000:03:00.0: PME# supported from D3hot D3cold
[    0.066315] pci 0000:03:00.0: PME# disabled
[    0.066370] pci 0000:00:1c.1: bridge 32bit mmio: [0xfbf00000-0xfbffffff]
[    0.066434] pci 0000:01:00.0: reg 10 64bit mmio: [0xfbef0000-0xfbefffff]
[    0.066534] pci 0000:00:1c.2: bridge 32bit mmio: [0xf8000000-0xfbefffff]
[    0.066543] pci 0000:00:1c.2: bridge 64bit mmio pref: 
[0xf0000000-0xf6ffffff]
[    0.066594] pci 0000:00:1e.0: transparent bridge
[    0.066625] bus 00 -> node 0
[    0.066643] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[    0.067164] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P3._PRT]
[    0.067360] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P5._PRT]
[    0.067549] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P6._PRT]
[    0.075233] initcall acpi_pci_root_init+0x0/0x21 returned 0 after 
10740 usecs
[    0.075246] calling  acpi_pci_link_init+0x0/0x59 @ 1
[    0.075469] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 *5 6 7 10 11 12 
14 15)
[    0.075743] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 10 *11 12 
14 15)
[    0.076028] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 *10 11 12 
14 15)
[    0.076299] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 *7 10 11 12 
14 15)
[    0.076567] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 10 11 12 
14 15) *0, disabled.
[    0.076833] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 10 11 12 
14 15) *0, disabled.
[    0.077111] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 10 11 12 
14 15) *0, disabled.
[    0.077377] ACPI: PCI Interrupt Link [LNKH] (IRQs *3 4 5 6 7 10 11 12 
14 15)
[    0.077536] initcall acpi_pci_link_init+0x0/0x59 returned 0 after 
1952 usecs
[    0.077546] calling  acpi_power_init+0x0/0x65 @ 1
[    0.077617] initcall acpi_power_init+0x0/0x65 returned 0 after 0 usecs
[    0.077626] calling  acpi_system_init+0x0/0x164 @ 1
[    0.077716] initcall acpi_system_init+0x0/0x164 returned 0 after 0 usecs
[    0.077724] calling  pnp_init+0x0/0x10 @ 1
[    0.077783] initcall pnp_init+0x0/0x10 returned 0 after 0 usecs
[    0.077791] calling  misc_init+0x0/0xa0 @ 1
[    0.077846] initcall misc_init+0x0/0xa0 returned 0 after 0 usecs
[    0.077854] calling  init_scsi+0x0/0x90 @ 1
[    0.078106] SCSI subsystem initialized
[    0.078113] initcall init_scsi+0x0/0x90 returned 0 after 976 usecs
[    0.078122] calling  ata_init+0x0/0x3a0 @ 1
[    0.078167] libata version 3.00 loaded.
[    0.078172] initcall ata_init+0x0/0x3a0 returned 0 after 0 usecs
[    0.078180] calling  usb_init+0x0/0x120 @ 1
[    0.078325] usbcore: registered new interface driver usbfs
[    0.078384] usbcore: registered new interface driver hub
[    0.078448] usbcore: registered new device driver usb
[    0.078457] initcall usb_init+0x0/0x120 returned 0 after 0 usecs
[    0.078466] calling  serio_init+0x0/0xb0 @ 1
[    0.078533] initcall serio_init+0x0/0xb0 returned 0 after 0 usecs
[    0.078542] calling  input_init+0x0/0x100 @ 1
[    0.078597] initcall input_init+0x0/0x100 returned 0 after 0 usecs
[    0.078606] calling  rtc_init+0x0/0x70 @ 1
[    0.078661] initcall rtc_init+0x0/0x70 returned 0 after 0 usecs
[    0.078670] calling  power_supply_class_init+0x0/0x30 @ 1
[    0.078713] initcall power_supply_class_init+0x0/0x30 returned 0 
after 0 usecs
[    0.078725] calling  hwmon_init+0x0/0x40 @ 1
[    0.078767] initcall hwmon_init+0x0/0x40 returned 0 after 0 usecs
[    0.078778] calling  thermal_init+0x0/0x30 @ 1
[    0.078820] initcall thermal_init+0x0/0x30 returned 0 after 0 usecs
[    0.078830] calling  leds_init+0x0/0x30 @ 1
[    0.078873] initcall leds_init+0x0/0x30 returned 0 after 0 usecs
[    0.078884] calling  pci_subsys_init+0x0/0x100 @ 1
[    0.078888] PCI: Using ACPI for IRQ routing
[    0.078977] initcall pci_subsys_init+0x0/0x100 returned 0 after 0 usecs
[    0.079011] calling  proto_init+0x0/0x30 @ 1
[    0.079022] initcall proto_init+0x0/0x30 returned 0 after 0 usecs
[    0.079031] calling  net_dev_init+0x0/0x100 @ 1
[    0.079096] initcall net_dev_init+0x0/0x100 returned 0 after 0 usecs
[    0.079106] calling  neigh_init+0x0/0x80 @ 1
[    0.079112] initcall neigh_init+0x0/0x80 returned 0 after 0 usecs
[    0.079121] calling  genl_init+0x0/0xd0 @ 1
[    0.079138] initcall genl_init+0x0/0xd0 returned 0 after 0 usecs
[    0.079138] calling  wireless_nlevent_init+0x0/0x20 @ 1
[    0.079138] initcall wireless_nlevent_init+0x0/0x20 returned 0 after 
0 usecs
[    0.079138] calling  cfg80211_init+0x0/0x80 @ 1
[    0.079138] cfg80211: Using static regulatory domain info
[    0.079138] cfg80211: Regulatory domain: US
[    0.079138] 	(start_freq - end_freq @ bandwidth), (max_antenna_gain, 
max_eirp)
[    0.079138] 	(2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm)
[    0.079138] 	(5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[    0.079138] 	(5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[    0.079138] 	(5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[    0.079138] 	(5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[    0.079138] 	(5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm)
[    0.079138] cfg80211: Calling CRDA for country: US
[    0.079140] initcall cfg80211_init+0x0/0x80 returned 0 after 0 usecs
[    0.079150] calling  ieee80211_init+0x0/0x20 @ 1
[    0.079156] initcall ieee80211_init+0x0/0x20 returned 0 after 0 usecs
[    0.079163] calling  rfkill_init+0x0/0x70 @ 1
[    0.079207] initcall rfkill_init+0x0/0x70 returned 0 after 0 usecs
[    0.079215] calling  sysctl_init+0x0/0x40 @ 1
[    0.079220] initcall sysctl_init+0x0/0x40 returned 0 after 0 usecs
[    0.079228] calling  pci_iommu_init+0x0/0x10 @ 1
[    0.079233] initcall pci_iommu_init+0x0/0x10 returned 0 after 0 usecs
[    0.079242] calling  print_all_ICs+0x0/0x880 @ 1
[    0.079248] initcall print_all_ICs+0x0/0x880 returned 0 after 0 usecs
[    0.079257] calling  hpet_late_init+0x0/0x180 @ 1
[    0.079505] hpet clockevent registered
[    0.079510] HPET: 3 timers in total, 0 timers will be used for 
per-cpu timer
[    0.079519] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[    0.079527] hpet0: 3 comparators, 64-bit 14.318180 MHz counter
[    0.080998] initcall hpet_late_init+0x0/0x180 returned 0 after 1952 usecs
[    0.081007] calling  clocksource_done_booting+0x0/0x10 @ 1
[    0.081013] initcall clocksource_done_booting+0x0/0x10 returned 0 
after 0 usecs
[    0.081021] calling  rb_init_debugfs+0x0/0x50 @ 1
[    0.081033] initcall rb_init_debugfs+0x0/0x50 returned 0 after 0 usecs
[    0.081041] calling  tracer_init_debugfs+0x0/0x310 @ 1
[    0.081068] initcall tracer_init_debugfs+0x0/0x310 returned 0 after 0 
usecs
[    0.081076] calling  init_pipe_fs+0x0/0x50 @ 1
[    0.081094] initcall init_pipe_fs+0x0/0x50 returned 0 after 0 usecs
[    0.081102] calling  init_mnt_writers+0x0/0x10 @ 1
[    0.081107] initcall init_mnt_writers+0x0/0x10 returned 0 after 0 usecs
[    0.081115] calling  eventpoll_init+0x0/0xa0 @ 1
[    0.081126] initcall eventpoll_init+0x0/0xa0 returned 0 after 0 usecs
[    0.081133] calling  anon_inode_init+0x0/0x100 @ 1
[    0.081143] initcall anon_inode_init+0x0/0x100 returned 0 after 0 usecs
[    0.081152] calling  acpi_event_init+0x0/0x78 @ 1
[    0.081161] initcall acpi_event_init+0x0/0x78 returned 0 after 0 usecs
[    0.081161] calling  pnpacpi_init+0x0/0xa0 @ 1
[    0.081161] pnp: PnP ACPI init
[    0.081161] ACPI: bus type pnp registered
[    0.085371] pnp: PnP ACPI: found 13 devices
[    0.085376] ACPI: ACPI bus type pnp unregistered
[    0.085384] initcall pnpacpi_init+0x0/0xa0 returned 0 after 4288 usecs
[    0.085396] calling  pnp_system_init+0x0/0x10 @ 1
[    0.085417] system 00:01: iomem range 0xfed13000-0xfed19fff has been 
reserved
[    0.085435] system 00:08: ioport range 0x380-0x383 has been reserved
[    0.085440] system 00:08: ioport range 0x4d0-0x4d1 has been reserved
[    0.085445] system 00:08: ioport range 0x800-0x87f has been reserved
[    0.085451] system 00:08: ioport range 0x480-0x4bf has been reserved
[    0.085462] system 00:08: iomem range 0xfed1c000-0xfed1ffff has been 
reserved
[    0.085468] system 00:08: iomem range 0xfed20000-0xfed8ffff has been 
reserved
[    0.085474] system 00:08: iomem range 0xfff00000-0xffffffff could not 
be reserved
[    0.085484] system 00:09: iomem range 0xfec00000-0xfec00fff has been 
reserved
[    0.085490] system 00:09: iomem range 0xfee00000-0xfee00fff has been 
reserved
[    0.085499] system 00:0a: iomem range 0xe0000000-0xefffffff has been 
reserved
[    0.085512] system 00:0b: iomem range 0xe0000000-0xefffffff has been 
reserved
[    0.085524] system 00:0c: iomem range 0x0-0x9ffff could not be reserved
[    0.085529] system 00:0c: iomem range 0xe0000-0xfffff could not be 
reserved
[    0.085535] system 00:0c: iomem range 0x100000-0x3f7fffff could not 
be reserved
[    0.085592] initcall pnp_system_init+0x0/0x10 returned 0 after 185 usecs
[    0.085601] calling  chr_dev_init+0x0/0xb0 @ 1
[    0.086077] initcall chr_dev_init+0x0/0xb0 returned 0 after 457 usecs
[    0.086087] calling  firmware_class_init+0x0/0x70 @ 1
[    0.086136] initcall firmware_class_init+0x0/0x70 returned 0 after 41 
usecs
[    0.086146] calling  loopback_init+0x0/0x10 @ 1
[    0.086282] initcall loopback_init+0x0/0x10 returned 0 after 126 usecs
[    0.086292] calling  init_acpi_pm_clocksource+0x0/0x230 @ 1
[    0.120833] initcall init_acpi_pm_clocksource+0x0/0x230 returned 0 
after 33725 usecs
[    0.120843] calling  pcibios_assign_resources+0x0/0x80 @ 1
[    0.120882] pci 0000:00:1c.0: PCI bridge, secondary bus 0000:04
[    0.120886] pci 0000:00:1c.0:   IO window: disabled
[    0.120893] pci 0000:00:1c.0:   MEM window: disabled
[    0.120899] pci 0000:00:1c.0:   PREFETCH window: disabled
[    0.120907] pci 0000:00:1c.1: PCI bridge, secondary bus 0000:03
[    0.120911] pci 0000:00:1c.1:   IO window: disabled
[    0.120918] pci 0000:00:1c.1:   MEM window: 0xfbf00000-0xfbffffff
[    0.120924] pci 0000:00:1c.1:   PREFETCH window: disabled
[    0.120932] pci 0000:00:1c.2: PCI bridge, secondary bus 0000:01
[    0.120936] pci 0000:00:1c.2:   IO window: disabled
[    0.120943] pci 0000:00:1c.2:   MEM window: 0xf8000000-0xfbefffff
[    0.120949] pci 0000:00:1c.2:   PREFETCH window: 
0x000000f0000000-0x000000f6ffffff
[    0.120958] pci 0000:00:1e.0: PCI bridge, secondary bus 0000:05
[    0.120962] pci 0000:00:1e.0:   IO window: disabled
[    0.120968] pci 0000:00:1e.0:   MEM window: disabled
[    0.120974] pci 0000:00:1e.0:   PREFETCH window: disabled
[    0.121003] pci 0000:00:1c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    0.121010] pci 0000:00:1c.0: setting latency timer to 64
[    0.121021] pci 0000:00:1c.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
[    0.121027] pci 0000:00:1c.1: setting latency timer to 64
[    0.121038] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18
[    0.121044] pci 0000:00:1c.2: setting latency timer to 64
[    0.121053] pci 0000:00:1e.0: setting latency timer to 64
[    0.121059] bus: 00 index 0 io port: [0x00-0xffff]
[    0.121063] bus: 00 index 1 mmio: [0x000000-0xffffffff]
[    0.121067] bus: 04 index 0 mmio: [0x0-0x0]
[    0.121071] bus: 04 index 1 mmio: [0x0-0x0]
[    0.121074] bus: 04 index 2 mmio: [0x0-0x0]
[    0.121078] bus: 04 index 3 mmio: [0x0-0x0]
[    0.121082] bus: 03 index 0 mmio: [0x0-0x0]
[    0.121086] bus: 03 index 1 mmio: [0xfbf00000-0xfbffffff]
[    0.121090] bus: 03 index 2 mmio: [0x0-0x0]
[    0.121093] bus: 03 index 3 mmio: [0x0-0x0]
[    0.121097] bus: 01 index 0 mmio: [0x0-0x0]
[    0.121101] bus: 01 index 1 mmio: [0xf8000000-0xfbefffff]
[    0.121105] bus: 01 index 2 mmio: [0xf0000000-0xf6ffffff]
[    0.121109] bus: 01 index 3 mmio: [0x0-0x0]
[    0.121113] bus: 05 index 0 mmio: [0x0-0x0]
[    0.121116] bus: 05 index 1 mmio: [0x0-0x0]
[    0.121120] bus: 05 index 2 mmio: [0x0-0x0]
[    0.121124] bus: 05 index 3 io port: [0x00-0xffff]
[    0.121128] bus: 05 index 4 mmio: [0x000000-0xffffffff]
[    0.121135] initcall pcibios_assign_resources+0x0/0x80 returned 0 
after 277 usecs
[    0.121145] calling  inet_init+0x0/0x1f0 @ 1
[    0.121161] NET: Registered protocol family 2
[    0.121263] IP route cache hash table entries: 32768 (order: 5, 
131072 bytes)
[    0.121397] TCP established hash table entries: 131072 (order: 8, 
1048576 bytes)
[    0.123091] TCP bind hash table entries: 65536 (order: 6, 262144 bytes)
[    0.123578] TCP: Hash tables configured (established 131072 bind 65536)
[    0.123585] TCP reno registered
[    0.123717] initcall inet_init+0x0/0x1f0 returned 0 after 2492 usecs
[    0.123735] calling  af_unix_init+0x0/0x50 @ 1
[    0.123741] NET: Registered protocol family 1
[    0.123752] initcall af_unix_init+0x0/0x50 returned 0 after 12 usecs
[    0.123764] calling  populate_rootfs+0x0/0xa0 @ 1
[    0.123976] initcall populate_rootfs+0x0/0xa0 returned 0 after 197 usecs
[    0.124005] calling  i8259A_init_sysfs+0x0/0x20 @ 1
[    0.124165] initcall i8259A_init_sysfs+0x0/0x20 returned 0 after 147 
usecs
[    0.124176] calling  sbf_init+0x0/0xb0 @ 1
[    0.124182] initcall sbf_init+0x0/0xb0 returned 0 after 0 usecs
[    0.124191] calling  i8237A_init_sysfs+0x0/0x20 @ 1
[    0.124273] initcall i8237A_init_sysfs+0x0/0x20 returned 0 after 74 usecs
[    0.124283] calling  add_rtc_cmos+0x0/0xa0 @ 1
[    0.124294] initcall add_rtc_cmos+0x0/0xa0 returned 0 after 5 usecs
[    0.124301] calling  cache_sysfs_init+0x0/0x240 @ 1
[    0.124307] initcall cache_sysfs_init+0x0/0x240 returned 0 after 0 usecs
[    0.124314] calling  thermal_throttle_init_device+0x0/0x40 @ 1
[    0.124321] initcall thermal_throttle_init_device+0x0/0x40 returned 0 
after 0 usecs
[    0.124329] calling  init_nonfatal_mce_checker+0x0/0x60 @ 1
[    0.124335] Machine check exception polling timer started.
[    0.124341] initcall init_nonfatal_mce_checker+0x0/0x60 returned 0 
after 5 usecs
[    0.124349] calling  msr_init+0x0/0xc0 @ 1
[    0.124481] initcall msr_init+0x0/0xc0 returned 0 after 122 usecs
[    0.124491] calling  cpuid_init+0x0/0xc0 @ 1
[    0.124592] initcall cpuid_init+0x0/0xc0 returned 0 after 92 usecs
[    0.124603] calling  init_lapic_sysfs+0x0/0x30 @ 1
[    0.124685] initcall init_lapic_sysfs+0x0/0x30 returned 0 after 72 usecs
[    0.124695] calling  ioapic_init_sysfs+0x0/0xa0 @ 1
[    0.124774] initcall ioapic_init_sysfs+0x0/0xa0 returned 0 after 70 usecs
[    0.124785] calling  microcode_init+0x0/0x110 @ 1
[    0.124916] Microcode Update Driver: v2.00 
<tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    0.124928] initcall microcode_init+0x0/0x110 returned 0 after 130 usecs
[    0.124939] calling  aes_init+0x0/0x10 @ 1
[    0.124998] alg: cipher: Test 1 failed on encryption for aes-asm
[    0.125064] 00000000: 00 01 02 03 04 05 06 07 08 08 08 08 08 08 08 08
[    0.125081] initcall aes_init+0x0/0x10 returned 0 after 131 usecs
[    0.125092] calling  proc_execdomains_init+0x0/0x30 @ 1
[    0.125105] initcall proc_execdomains_init+0x0/0x30 returned 0 after 
6 usecs
[    0.125114] calling  ioresources_init+0x0/0x40 @ 1
[    0.125123] initcall ioresources_init+0x0/0x40 returned 0 after 2 usecs
[    0.125132] calling  uid_cache_init+0x0/0x60 @ 1
[    0.125144] initcall uid_cache_init+0x0/0x60 returned 0 after 5 usecs
[    0.125152] calling  init_posix_timers+0x0/0xd0 @ 1
[    0.125159] initcall init_posix_timers+0x0/0xd0 returned 0 after 1 usecs
[    0.125166] calling  init_posix_cpu_timers+0x0/0xb0 @ 1
[    0.125172] initcall init_posix_cpu_timers+0x0/0xb0 returned 0 after 
0 usecs
[    0.125179] calling  nsproxy_cache_init+0x0/0x30 @ 1
[    0.125185] initcall nsproxy_cache_init+0x0/0x30 returned 0 after 1 usecs
[    0.125193] calling  timekeeping_init_device+0x0/0x20 @ 1
[    0.125291] initcall timekeeping_init_device+0x0/0x20 returned 0 
after 89 usecs
[    0.125301] calling  init_clocksource_sysfs+0x0/0x40 @ 1
[    0.125385] initcall init_clocksource_sysfs+0x0/0x40 returned 0 after 
76 usecs
[    0.125394] calling  init_timer_list_procfs+0x0/0x30 @ 1
[    0.125403] initcall init_timer_list_procfs+0x0/0x30 returned 0 after 
3 usecs
[    0.125410] calling  futex_init+0x0/0x60 @ 1
[    0.125423] initcall futex_init+0x0/0x60 returned 0 after 8 usecs
[    0.125430] calling  proc_dma_init+0x0/0x30 @ 1
[    0.125437] initcall proc_dma_init+0x0/0x30 returned 0 after 1 usecs
[    0.125443] calling  kallsyms_init+0x0/0x30 @ 1
[    0.125450] initcall kallsyms_init+0x0/0x30 returned 0 after 1 usecs
[    0.125457] calling  ikconfig_init+0x0/0x40 @ 1
[    0.125464] initcall ikconfig_init+0x0/0x40 returned 0 after 1 usecs
[    0.125471] calling  utsname_sysctl_init+0x0/0x10 @ 1
[    0.125479] initcall utsname_sysctl_init+0x0/0x10 returned 0 after 3 
usecs
[    0.125487] calling  init_sched_switch_trace+0x0/0x40 @ 1
[    0.125494] initcall init_sched_switch_trace+0x0/0x40 returned 0 
after 2 usecs
[    0.125503] calling  init_per_zone_pages_min+0x0/0x50 @ 1
[    0.125574] initcall init_per_zone_pages_min+0x0/0x50 returned 0 
after 61 usecs
[    0.125581] calling  pdflush_init+0x0/0x20 @ 1
[    0.125622] initcall pdflush_init+0x0/0x20 returned 0 after 34 usecs
[    0.125630] calling  kswapd_init+0x0/0x10 @ 1
[    0.125651] initcall kswapd_init+0x0/0x10 returned 0 after 16 usecs
[    0.125659] calling  setup_vmstat+0x0/0x90 @ 1
[    0.125672] initcall setup_vmstat+0x0/0x90 returned 0 after 7 usecs
[    0.125680] calling  mm_sysfs_init+0x0/0x20 @ 1
[    0.125690] initcall mm_sysfs_init+0x0/0x20 returned 0 after 4 usecs
[    0.125697] calling  proc_vmalloc_init+0x0/0x30 @ 1
[    0.125705] initcall proc_vmalloc_init+0x0/0x30 returned 0 after 2 usecs
[    0.125713] calling  init_emergency_pool+0x0/0x70 @ 1
[    0.125752] highmem bounce pool size: 64 pages
[    0.125757] initcall init_emergency_pool+0x0/0x70 returned 0 after 37 
usecs
[    0.125765] calling  init_tmpfs+0x0/0xd0 @ 1
[    0.125794] initcall init_tmpfs+0x0/0xd0 returned 0 after 23 usecs
[    0.125801] calling  fasync_init+0x0/0x30 @ 1
[    0.125809] initcall fasync_init+0x0/0x30 returned 0 after 2 usecs
[    0.125818] calling  proc_filesystems_init+0x0/0x30 @ 1
[    0.125826] initcall proc_filesystems_init+0x0/0x30 returned 0 after 
2 usecs
[    0.125834] calling  inotify_setup+0x0/0x10 @ 1
[    0.125840] initcall inotify_setup+0x0/0x10 returned 0 after 0 usecs
[    0.125848] calling  inotify_user_setup+0x0/0xc0 @ 1
[    0.125862] initcall inotify_user_setup+0x0/0xc0 returned 0 after 8 usecs
[    0.125870] calling  proc_locks_init+0x0/0x30 @ 1
[    0.125877] initcall proc_locks_init+0x0/0x30 returned 0 after 2 usecs
[    0.125885] calling  init_mbcache+0x0/0x10 @ 1
[    0.125891] initcall init_mbcache+0x0/0x10 returned 0 after 0 usecs
[    0.125899] calling  proc_cmdline_init+0x0/0x30 @ 1
[    0.125907] initcall proc_cmdline_init+0x0/0x30 returned 0 after 2 usecs
[    0.125916] calling  proc_cpuinfo_init+0x0/0x30 @ 1
[    0.125925] initcall proc_cpuinfo_init+0x0/0x30 returned 0 after 3 usecs
[    0.125933] calling  proc_devices_init+0x0/0x30 @ 1
[    0.125940] initcall proc_devices_init+0x0/0x30 returned 0 after 1 usecs
[    0.125948] calling  proc_interrupts_init+0x0/0x30 @ 1
[    0.125956] initcall proc_interrupts_init+0x0/0x30 returned 0 after 2 
usecs
[    0.125964] calling  proc_loadavg_init+0x0/0x30 @ 1
[    0.125972] initcall proc_loadavg_init+0x0/0x30 returned 0 after 1 usecs
[    0.125980] calling  proc_meminfo_init+0x0/0x30 @ 1
[    0.125996] initcall proc_meminfo_init+0x0/0x30 returned 0 after 2 usecs
[    0.126004] calling  proc_stat_init+0x0/0x30 @ 1
[    0.126012] initcall proc_stat_init+0x0/0x30 returned 0 after 1 usecs
[    0.126020] calling  proc_uptime_init+0x0/0x30 @ 1
[    0.126032] initcall proc_uptime_init+0x0/0x30 returned 0 after 7 usecs
[    0.126041] calling  proc_version_init+0x0/0x30 @ 1
[    0.126048] initcall proc_version_init+0x0/0x30 returned 0 after 2 usecs
[    0.126058] calling  proc_kcore_init+0x0/0x50 @ 1
[    0.126065] initcall proc_kcore_init+0x0/0x50 returned 0 after 1 usecs
[    0.126073] calling  proc_kmsg_init+0x0/0x30 @ 1
[    0.126080] initcall proc_kmsg_init+0x0/0x30 returned 0 after 1 usecs
[    0.126088] calling  proc_page_init+0x0/0x50 @ 1
[    0.126098] initcall proc_page_init+0x0/0x50 returned 0 after 4 usecs
[    0.126106] calling  init_devpts_fs+0x0/0x30 @ 1
[    0.126121] initcall init_devpts_fs+0x0/0x30 returned 0 after 9 usecs
[    0.126129] calling  init_ext3_fs+0x0/0x70 @ 1
[    0.126143] initcall init_ext3_fs+0x0/0x70 returned 0 after 8 usecs
[    0.126151] calling  journal_init+0x0/0xa0 @ 1
[    0.126162] initcall journal_init+0x0/0xa0 returned 0 after 4 usecs
[    0.126169] calling  init_ext2_fs+0x0/0x70 @ 1
[    0.126179] initcall init_ext2_fs+0x0/0x70 returned 0 after 4 usecs
[    0.126188] calling  init_ramfs_fs+0x0/0x10 @ 1
[    0.126195] initcall init_ramfs_fs+0x0/0x10 returned 0 after 2 usecs
[    0.126203] calling  init_fat_fs+0x0/0x50 @ 1
[    0.126210] initcall init_fat_fs+0x0/0x50 returned 0 after 1 usecs
[    0.126217] calling  init_vfat_fs+0x0/0x10 @ 1
[    0.126225] initcall init_vfat_fs+0x0/0x10 returned 0 after 2 usecs
[    0.126233] calling  init_iso9660_fs+0x0/0x60 @ 1
[    0.126241] initcall init_iso9660_fs+0x0/0x60 returned 0 after 2 usecs
[    0.126249] calling  init_nls_cp437+0x0/0x10 @ 1
[    0.126255] initcall init_nls_cp437+0x0/0x10 returned 0 after 0 usecs
[    0.126264] calling  init_nls_cp1250+0x0/0x10 @ 1
[    0.126269] initcall init_nls_cp1250+0x0/0x10 returned 0 after 0 usecs
[    0.126278] calling  init_nls_ascii+0x0/0x10 @ 1
[    0.126283] initcall init_nls_ascii+0x0/0x10 returned 0 after 0 usecs
[    0.126292] calling  init_nls_iso8859_1+0x0/0x10 @ 1
[    0.126298] initcall init_nls_iso8859_1+0x0/0x10 returned 0 after 0 usecs
[    0.126306] calling  init_nls_utf8+0x0/0x30 @ 1
[    0.126312] initcall init_nls_utf8+0x0/0x30 returned 0 after 0 usecs
[    0.126320] calling  fuse_init+0x0/0x130 @ 1
[    0.126324] fuse init (API version 7.10)
[    0.126425] initcall fuse_init+0x0/0x130 returned 0 after 94 usecs
[    0.126437] calling  ipc_init+0x0/0x20 @ 1
[    0.126447] msgmni has been set to 1749
[    0.126458] initcall ipc_init+0x0/0x20 returned 0 after 15 usecs
[    0.126466] calling  ipc_sysctl_init+0x0/0x10 @ 1
[    0.126474] initcall ipc_sysctl_init+0x0/0x10 returned 0 after 2 usecs
[    0.126482] calling  init_mqueue_fs+0x0/0xb0 @ 1
[    0.126507] initcall init_mqueue_fs+0x0/0xb0 returned 0 after 18 usecs
[    0.126515] calling  crypto_algapi_init+0x0/0x10 @ 1
[    0.126524] initcall crypto_algapi_init+0x0/0x10 returned 0 after 2 usecs
[    0.126533] calling  chainiv_module_init+0x0/0x10 @ 1
[    0.126542] initcall chainiv_module_init+0x0/0x10 returned 0 after 3 
usecs
[    0.126552] calling  eseqiv_module_init+0x0/0x10 @ 1
[    0.126558] initcall eseqiv_module_init+0x0/0x10 returned 0 after 0 usecs
[    0.126567] calling  crypto_ecb_module_init+0x0/0x10 @ 1
[    0.126573] initcall crypto_ecb_module_init+0x0/0x10 returned 0 after 
0 usecs
[    0.126582] calling  aes_init+0x0/0x340 @ 1
[    0.126705] initcall aes_init+0x0/0x340 returned 0 after 112 usecs
[    0.126715] calling  arc4_init+0x0/0x10 @ 1
[    0.126818] initcall arc4_init+0x0/0x10 returned 0 after 94 usecs
[    0.126827] calling  krng_mod_init+0x0/0x10 @ 1
[    0.126848] alg: No test for stdrng (krng)
[    0.126860] initcall krng_mod_init+0x0/0x10 returned 0 after 25 usecs
[    0.126869] calling  proc_genhd_init+0x0/0x40 @ 1
[    0.126881] initcall proc_genhd_init+0x0/0x40 returned 0 after 6 usecs
[    0.126889] calling  noop_init+0x0/0x10 @ 1
[    0.126894] io scheduler noop registered
[    0.126899] initcall noop_init+0x0/0x10 returned 0 after 4 usecs
[    0.126908] calling  deadline_init+0x0/0x10 @ 1
[    0.126911] io scheduler deadline registered (default)
[    0.126917] initcall deadline_init+0x0/0x10 returned 0 after 3 usecs
[    0.126928] calling  pci_init+0x0/0x40 @ 1
[    0.126946] pci 0000:00:02.0: Boot video device
[    0.129784] initcall pci_init+0x0/0x40 returned 0 after 2780 usecs
[    0.129797] calling  pci_proc_init+0x0/0x70 @ 1
[    0.129862] initcall pci_proc_init+0x0/0x70 returned 0 after 58 usecs
[    0.129871] calling  pcie_portdrv_init+0x0/0x50 @ 1
[    0.129978] pcieport-driver 0000:00:1c.0: setting latency timer to 64
[    0.130025] pcieport-driver 0000:00:1c.0: found MSI capability
[    0.130056] pcieport-driver 0000:00:1c.0: irq 287 for MSI/MSI-X
[    0.130071] pci_express 0000:00:1c.0:pcie00: allocate port service
[    0.130132] pci_express 0000:00:1c.0:pcie02: allocate port service
[    0.130184] pci_express 0000:00:1c.0:pcie03: allocate port service
[    0.130285] pcieport-driver 0000:00:1c.1: setting latency timer to 64
[    0.130325] pcieport-driver 0000:00:1c.1: found MSI capability
[    0.130351] pcieport-driver 0000:00:1c.1: irq 286 for MSI/MSI-X
[    0.130366] pci_express 0000:00:1c.1:pcie00: allocate port service
[    0.130419] pci_express 0000:00:1c.1:pcie02: allocate port service
[    0.130475] pci_express 0000:00:1c.1:pcie03: allocate port service
[    0.130576] pcieport-driver 0000:00:1c.2: setting latency timer to 64
[    0.130613] pcieport-driver 0000:00:1c.2: found MSI capability
[    0.130640] pcieport-driver 0000:00:1c.2: irq 285 for MSI/MSI-X
[    0.130654] pci_express 0000:00:1c.2:pcie00: allocate port service
[    0.130712] pci_express 0000:00:1c.2:pcie02: allocate port service
[    0.130766] pci_express 0000:00:1c.2:pcie03: allocate port service
[    0.130908] initcall pcie_portdrv_init+0x0/0x50 returned 0 after 1004 
usecs
[    0.130920] calling  aer_service_init+0x0/0x20 @ 1
[    0.130973] initcall aer_service_init+0x0/0x20 returned 0 after 44 usecs
[    0.131008] calling  fb_console_init+0x0/0x130 @ 1
[    0.131079] initcall fb_console_init+0x0/0x130 returned 0 after 62 usecs
[    0.131092] calling  display_class_init+0x0/0x70 @ 1
[    0.131141] initcall display_class_init+0x0/0x70 returned 0 after 40 
usecs
[    0.131152] calling  vesafb_init+0x0/0x1fb @ 1
[    0.131266] initcall vesafb_init+0x0/0x1fb returned 0 after 103 usecs
[    0.131278] calling  acpi_reserve_resources+0x0/0xc4 @ 1
[    0.131290] initcall acpi_reserve_resources+0x0/0xc4 returned 0 after 
4 usecs
[    0.131298] calling  acpi_ac_init+0x0/0x39 @ 1
[    0.131513] ACPI: AC Adapter [AC0] (on-line)
[    0.131609] initcall acpi_ac_init+0x0/0x39 returned 0 after 296 usecs
[    0.131618] calling  acpi_battery_init+0x0/0x39 @ 1
[    0.134025] ACPI: EC: non-query interrupt received, switching to 
interrupt mode
[    0.421506] ACPI: Battery Slot [BAT0] (battery present)
[    0.421890] initcall acpi_battery_init+0x0/0x39 returned 0 after 
283458 usecs
[    0.421901] calling  acpi_button_init+0x0/0x4d @ 1
[    0.422061] input: Power Button (FF) as 
/devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[    0.422066] ACPI: Power Button (FF) [PWRF]
[    0.422203] input: Lid Switch as 
/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input1
[    0.438027] ACPI: Lid Switch [LID]
[    0.438181] input: Sleep Button (CM) as 
/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input2
[    0.438187] ACPI: Sleep Button (CM) [SLPB]
[    0.438306] input: Power Button (CM) as 
/devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input3
[    0.438312] ACPI: Power Button (CM) [PWRB]
[    0.438363] initcall acpi_button_init+0x0/0x4d returned 0 after 16067 
usecs
[    0.438373] calling  acpi_fan_init+0x0/0x28 @ 1
[    0.438442] initcall acpi_fan_init+0x0/0x28 returned 0 after 61 usecs
[    0.438451] calling  irqrouter_init_sysfs+0x0/0x2d @ 1
[    0.438533] initcall irqrouter_init_sysfs+0x0/0x2d returned 0 after 
73 usecs
[    0.438542] calling  acpi_processor_init+0x0/0x85 @ 1
[    0.439234] ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3])
[    0.439313] processor ACPI_CPU:00: registered as cooling_device0
[    0.439321] ACPI: Processor [CPU1] (supports 8 throttling states)
[    0.439389] initcall acpi_processor_init+0x0/0x85 returned 0 after 
819 usecs
[    0.439399] calling  acpi_thermal_init+0x0/0x72 @ 1
[    0.463076] thermal LNXTHERM:01: registered as thermal_zone0
[    0.479766] ACPI: Thermal Zone [TZ00] (56 C)
[    0.479830] initcall acpi_thermal_init+0x0/0x72 returned 0 after 
39475 usecs
[    0.479842] calling  rand_initialize+0x0/0x30 @ 1
[    0.479888] initcall rand_initialize+0x0/0x30 returned 0 after 38 usecs
[    0.479895] calling  tty_init+0x0/0x110 @ 1
[    0.484038] initcall tty_init+0x0/0x110 returned 0 after 4034 usecs
[    0.484051] calling  pty_init+0x0/0x290 @ 1
[    0.484167] initcall pty_init+0x0/0x290 returned 0 after 106 usecs
[    0.484184] calling  sysrq_init+0x0/0x30 @ 1
[    0.484203] initcall sysrq_init+0x0/0x30 returned 0 after 13 usecs
[    0.484210] calling  hpet_init+0x0/0x60 @ 1
[    0.484360] initcall hpet_init+0x0/0x60 returned 0 after 139 usecs
[    0.484369] calling  nvram_init+0x0/0x80 @ 1
[    0.484437] Non-volatile memory driver v1.2
[    0.484444] initcall nvram_init+0x0/0x80 returned 0 after 67 usecs
[    0.484452] calling  agp_init+0x0/0x30 @ 1
[    0.484456] Linux agpgart interface v0.103
[    0.484461] initcall agp_init+0x0/0x30 returned 0 after 3 usecs
[    0.484469] calling  agp_intel_init+0x0/0x30 @ 1
[    0.484499] agpgart-intel 0000:00:00.0: Intel 915GM Chipset
[    0.484794] agpgart-intel 0000:00:00.0: detected 7932K stolen memory
[    0.488307] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
[    0.488377] initcall agp_intel_init+0x0/0x30 returned 0 after 3807 usecs
[    0.488391] calling  drm_core_init+0x0/0x100 @ 1
[    0.488454] [drm] Initialized drm 1.1.0 20060810
[    0.488460] initcall drm_core_init+0x0/0x100 returned 0 after 61 usecs
[    0.488469] calling  i915_init+0x0/0x20 @ 1
[    0.488503] pci 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    0.488509] pci 0000:00:02.0: setting latency timer to 64
[    0.488588] [drm:i915_gem_detect_bit_6_swizzle] *ERROR* Couldn't read 
from MCHBAR.  Disabling tiling.
[    0.488795] [drm] Initialized i915 1.6.0 20080730 on minor 0
[    0.488835] initcall i915_init+0x0/0x20 returned 0 after 351 usecs
[    0.488844] calling  loop_init+0x0/0x1c0 @ 1
[    0.489894] loop: module loaded
[    0.489902] initcall loop_init+0x0/0x1c0 returned 0 after 1026 usecs
[    0.489914] calling  eeepc_laptop_init+0x0/0x1c0 @ 1
[    0.489950] eeepc: Eee PC Hotkey Driver
[    0.490217] eeepc: Hotkey init flags 0x41
[    0.491472] eeepc: Get control methods supported: 0x101711
[    0.491616] input: Asus EeePC extra buttons as 
/devices/virtual/input/input4
[    0.495990] initcall eeepc_laptop_init+0x0/0x1c0 returned 0 after 
5924 usecs
[    0.496002] calling  atl2_init_module+0x0/0x50 @ 1
[    0.496006] Atheros(R) L2 Ethernet Driver - version 2.2.3
[    0.496010] Copyright (c) 2007 Atheros Corporation.
[    0.496045] atl2 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[    0.496057] atl2 0000:03:00.0: setting latency timer to 64
[    0.534415] initcall atl2_init_module+0x0/0x50 returned 0 after 37504 
usecs
[    0.534429] calling  net_olddevs_init+0x0/0x90 @ 1
[    0.534441] initcall net_olddevs_init+0x0/0x90 returned 0 after 6 usecs
[    0.534449] calling  init_ath5k_pci+0x0/0x30 @ 1
[    0.534486] ath5k_pci 0000:01:00.0: PCI INT A -> GSI 18 (level, low) 
-> IRQ 18
[    0.534498] ath5k_pci 0000:01:00.0: setting latency timer to 64
[    0.534542] ath5k_pci 0000:01:00.0: registered as 'phy0'
[    0.574864] phy0: Selected rate control algorithm 'minstrel'
[    0.575138] ath5k phy0: Atheros AR2425 chip found (MAC: 0xe2, PHY: 0x70)
[    0.575211] initcall init_ath5k_pci+0x0/0x30 returned 0 after 39798 usecs
[    0.575224] calling  videodev_init+0x0/0x90 @ 1
[    0.575227] Linux video capture interface: v2.00
[    0.575283] initcall videodev_init+0x0/0x90 returned 0 after 51 usecs
[    0.575292] calling  uvc_init+0x0/0x90 @ 1
[    0.575455] usbcore: registered new interface driver uvcvideo
[    0.575461] USB Video Class driver (v0.1.0)
[    0.575467] initcall uvc_init+0x0/0x90 returned 0 after 165 usecs
[    0.575476] calling  init_sd+0x0/0xa0 @ 1
[    0.575529] Driver 'sd' needs updating - please use bus_type methods
[    0.575579] initcall init_sd+0x0/0xa0 returned 0 after 95 usecs
[    0.575588] calling  piix_init+0x0/0x30 @ 1
[    0.575616] ata_piix 0000:00:1f.2: version 2.12
[    0.575639] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) 
-> IRQ 19
[    0.575645] ata_piix 0000:00:1f.2: MAP [ P0 P2 IDE IDE ]
[    0.575705] ata_piix 0000:00:1f.2: setting latency timer to 64
[    0.575781] scsi0 : ata_piix
[    0.575954] scsi1 : ata_piix
[    0.579246] ata1: SATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xffa0 
irq 14
[    0.579252] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xffa8 
irq 15
[    0.580183] Switched to high resolution mode on CPU 0
[    0.897363] ata2.00: ATA-5: ASUS-PHISON OB SSD, TST2.04P, max UDMA/66
[    0.897368] ata2.00: 7880544 sectors, multi 0: LBA
[    0.897441] ata2.01: ATA-5: ASUS-PHISON SSD, TST2.04P, max UDMA/66
[    0.897445] ata2.01: 31522176 sectors, multi 0: LBA
[    0.900338] ata2.00: configured for UDMA/66
[    0.903332] ata2.01: configured for UDMA/66
[    0.903481] scsi 1:0:0:0: Direct-Access     ATA      ASUS-PHISON OB S 
TST2 PQ: 0 ANSI: 5
[    0.903772] sd 1:0:0:0: [sda] 7880544 512-byte hardware sectors: 
(4.03 GB/3.75 GiB)
[    0.903796] sd 1:0:0:0: [sda] Write Protect is off
[    0.903800] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    0.903834] sd 1:0:0:0: [sda] Write cache: disabled, read cache: 
enabled, doesn't support DPO or FUA
[    0.903930] sd 1:0:0:0: [sda] 7880544 512-byte hardware sectors: 
(4.03 GB/3.75 GiB)
[    0.903951] sd 1:0:0:0: [sda] Write Protect is off
[    0.903955] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    0.903987] sd 1:0:0:0: [sda] Write cache: disabled, read cache: 
enabled, doesn't support DPO or FUA
[    0.903992]  sda: sda1 sda2 sda3 sda4
[    0.905460] sd 1:0:0:0: [sda] Attached SCSI disk
[    0.905648] scsi 1:0:1:0: Direct-Access     ATA      ASUS-PHISON SSD 
  TST2 PQ: 0 ANSI: 5
[    0.905899] sd 1:0:1:0: [sdb] 31522176 512-byte hardware sectors: 
(16.1 GB/15.0 GiB)
[    0.905923] sd 1:0:1:0: [sdb] Write Protect is off
[    0.905927] sd 1:0:1:0: [sdb] Mode Sense: 00 3a 00 00
[    0.905960] sd 1:0:1:0: [sdb] Write cache: disabled, read cache: 
enabled, doesn't support DPO or FUA
[    0.906064] sd 1:0:1:0: [sdb] 31522176 512-byte hardware sectors: 
(16.1 GB/15.0 GiB)
[    0.906087] sd 1:0:1:0: [sdb] Write Protect is off
[    0.906091] sd 1:0:1:0: [sdb] Mode Sense: 00 3a 00 00
[    0.906123] sd 1:0:1:0: [sdb] Write cache: disabled, read cache: 
enabled, doesn't support DPO or FUA
[    0.906129]  sdb: sdb1 sdb2
[    0.907751] sd 1:0:1:0: [sdb] Attached SCSI disk
[    0.907879] initcall piix_init+0x0/0x30 returned 0 after 324493 usecs
[    0.907891] calling  ehci_hcd_init+0x0/0x80 @ 1
[    0.907895] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.907939] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) 
-> IRQ 23
[    0.907968] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[    0.907974] ehci_hcd 0000:00:1d.7: EHCI Host Controller
[    0.908091] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned 
bus number 1
[    0.912011] ehci_hcd 0000:00:1d.7: debug port 1
[    0.912019] ehci_hcd 0000:00:1d.7: cache line size of 32 is not supported
[    0.912037] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xf7eb7c00
[    0.921011] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[    0.921205] usb usb1: configuration #1 chosen from 1 choice
[    0.921290] hub 1-0:1.0: USB hub found
[    0.921303] hub 1-0:1.0: 8 ports detected
[    0.921587] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    0.921593] usb usb1: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.921598] usb usb1: Product: EHCI Host Controller
[    0.921602] usb usb1: Manufacturer: Linux 
2.6.28-rc9-00070-gc20137f-dirty ehci_hcd
[    0.921606] usb usb1: SerialNumber: 0000:00:1d.7
[    0.921664] initcall ehci_hcd_init+0x0/0x80 returned 0 after 13440 usecs
[    0.921676] calling  uhci_hcd_init+0x0/0xc0 @ 1
[    0.921680] uhci_hcd: USB Universal Host Controller Interface driver
[    0.921711] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) 
-> IRQ 23
[    0.921723] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[    0.921728] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[    0.921802] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned 
bus number 2
[    0.921833] uhci_hcd 0000:00:1d.0: irq 23, io base 0x0000e400
[    0.922031] usb usb2: configuration #1 chosen from 1 choice
[    0.922115] hub 2-0:1.0: USB hub found
[    0.922128] hub 2-0:1.0: 2 ports detected
[    0.922327] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[    0.922332] usb usb2: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.922337] usb usb2: Product: UHCI Host Controller
[    0.922341] usb usb2: Manufacturer: Linux 
2.6.28-rc9-00070-gc20137f-dirty uhci_hcd
[    0.922345] usb usb2: SerialNumber: 0000:00:1d.0
[    0.922376] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) 
-> IRQ 19
[    0.922387] uhci_hcd 0000:00:1d.1: setting latency timer to 64
[    0.922392] uhci_hcd 0000:00:1d.1: UHCI Host Controller
[    0.922465] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned 
bus number 3
[    0.922502] uhci_hcd 0000:00:1d.1: irq 19, io base 0x0000e480
[    0.922678] usb usb3: configuration #1 chosen from 1 choice
[    0.922768] hub 3-0:1.0: USB hub found
[    0.922781] hub 3-0:1.0: 2 ports detected
[    0.922985] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
[    0.922990] usb usb3: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.922995] usb usb3: Product: UHCI Host Controller
[    0.922999] usb usb3: Manufacturer: Linux 
2.6.28-rc9-00070-gc20137f-dirty uhci_hcd
[    0.923015] usb usb3: SerialNumber: 0000:00:1d.1
[    0.923045] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) 
-> IRQ 18
[    0.923055] uhci_hcd 0000:00:1d.2: setting latency timer to 64
[    0.923060] uhci_hcd 0000:00:1d.2: UHCI Host Controller
[    0.923132] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned 
bus number 4
[    0.923165] uhci_hcd 0000:00:1d.2: irq 18, io base 0x0000e800
[    0.923352] usb usb4: configuration #1 chosen from 1 choice
[    0.923438] hub 4-0:1.0: USB hub found
[    0.923450] hub 4-0:1.0: 2 ports detected
[    0.923646] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
[    0.923653] usb usb4: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.923657] usb usb4: Product: UHCI Host Controller
[    0.923661] usb usb4: Manufacturer: Linux 
2.6.28-rc9-00070-gc20137f-dirty uhci_hcd
[    0.923665] usb usb4: SerialNumber: 0000:00:1d.2
[    0.923693] uhci_hcd 0000:00:1d.3: PCI INT D -> GSI 16 (level, low) 
-> IRQ 16
[    0.923703] uhci_hcd 0000:00:1d.3: setting latency timer to 64
[    0.923708] uhci_hcd 0000:00:1d.3: UHCI Host Controller
[    0.923786] uhci_hcd 0000:00:1d.3: new USB bus registered, assigned 
bus number 5
[    0.923822] uhci_hcd 0000:00:1d.3: irq 16, io base 0x0000e880
[    0.924035] usb usb5: configuration #1 chosen from 1 choice
[    0.924121] hub 5-0:1.0: USB hub found
[    0.924133] hub 5-0:1.0: 2 ports detected
[    0.924339] usb usb5: New USB device found, idVendor=1d6b, idProduct=0001
[    0.924345] usb usb5: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.924349] usb usb5: Product: UHCI Host Controller
[    0.924353] usb usb5: Manufacturer: Linux 
2.6.28-rc9-00070-gc20137f-dirty uhci_hcd
[    0.924358] usb usb5: SerialNumber: 0000:00:1d.3
[    0.924427] initcall uhci_hcd_init+0x0/0xc0 returned 0 after 2677 usecs
[    0.924440] calling  usb_stor_init+0x0/0x40 @ 1
[    0.924443] Initializing USB Mass Storage driver...
[    0.924533] usbcore: registered new interface driver usb-storage
[    0.924541] USB Mass Storage support registered.
[    0.924548] initcall usb_stor_init+0x0/0x40 returned 0 after 99 usecs
[    0.924558] calling  i8042_init+0x0/0x420 @ 1
[    0.924730] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 
0x60,0x64 irq 1,12
[    0.956821] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.956830] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.956841] initcall i8042_init+0x0/0x420 returned 0 after 31518 usecs
[    0.956851] calling  mousedev_init+0x0/0x90 @ 1
[    0.957125] mice: PS/2 mouse device common for all mice
[    0.957134] initcall mousedev_init+0x0/0x90 returned 0 after 269 usecs
[    0.957143] calling  evdev_init+0x0/0x10 @ 1
[    0.957599] initcall evdev_init+0x0/0x10 returned 0 after 436 usecs
[    0.957609] calling  atkbd_init+0x0/0x20 @ 1
[    0.957669] initcall atkbd_init+0x0/0x20 returned 0 after 52 usecs
[    0.957680] calling  psmouse_init+0x0/0x70 @ 1
[    0.958455] initcall psmouse_init+0x0/0x70 returned 0 after 750 usecs
[    0.958466] calling  cmos_init+0x0/0x40 @ 1
[    0.958503] rtc_cmos 00:03: RTC can wake from S4
[    0.958605] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0
[    0.958635] rtc0: alarms up to one month, 114 bytes nvram, hpet irqs
[    0.958692] initcall cmos_init+0x0/0x40 returned 0 after 213 usecs
[    0.958703] calling  init_ladder+0x0/0x10 @ 1
[    0.958881] cpuidle: using governor ladder
[    0.958891] initcall init_ladder+0x0/0x10 returned 0 after 177 usecs
[    0.958900] calling  init_menu+0x0/0x10 @ 1
[    0.959229] cpuidle: using governor menu
[    0.959236] initcall init_menu+0x0/0x10 returned 0 after 321 usecs
[    0.959246] calling  init_soundcore+0x0/0x30 @ 1
[    0.959299] initcall init_soundcore+0x0/0x30 returned 0 after 46 usecs
[    0.959309] calling  alsa_sound_init+0x0/0x80 @ 1
[    0.959335] Advanced Linux Sound Architecture Driver Version 1.0.18rc3.
[    0.959341] initcall alsa_sound_init+0x0/0x80 returned 0 after 25 usecs
[    0.959350] calling  alsa_timer_init+0x0/0x160 @ 1
[    0.959438] initcall alsa_timer_init+0x0/0x160 returned 0 after 80 usecs
[    0.959449] calling  alsa_pcm_init+0x0/0x60 @ 1
[    0.959457] initcall alsa_pcm_init+0x0/0x60 returned 0 after 2 usecs
[    0.959464] calling  snd_mem_init+0x0/0x30 @ 1
[    0.959474] initcall snd_mem_init+0x0/0x30 returned 0 after 3 usecs
[    0.959482] calling  alsa_card_azx_init+0x0/0x20 @ 1
[    0.959528] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 16 (level, low) 
-> IRQ 16
[    0.959568] HDA Intel 0000:00:1b.0: setting latency timer to 64
[    0.961058] Marking TSC unstable due to TSC halts in idle
[    0.961805] input: AT Translated Set 2 keyboard as 
/devices/platform/i8042/serio0/input/input5
[    0.967927] hda_codec: Unknown model for ALC662, trying auto-probe 
from BIOS...
[    0.992789] initcall alsa_card_azx_init+0x0/0x20 returned 0 after 
32515 usecs
[    0.992805] calling  alsa_sound_last_init+0x0/0x70 @ 1
[    0.992809] ALSA device list:
[    0.992812]   #0: HDA Intel at 0xf7eb8000 irq 16
[    0.992818] initcall alsa_sound_last_init+0x0/0x70 returned 0 after 6 
usecs
[    0.992828] calling  sysctl_core_init+0x0/0x20 @ 1
[    0.992856] initcall sysctl_core_init+0x0/0x20 returned 0 after 20 usecs
[    0.992864] calling  sysctl_ipv4_init+0x0/0x40 @ 1
[    0.992883] initcall sysctl_ipv4_init+0x0/0x40 returned 0 after 11 usecs
[    0.992892] calling  inet_diag_init+0x0/0x70 @ 1
[    0.992908] initcall inet_diag_init+0x0/0x70 returned 0 after 9 usecs
[    0.992917] calling  tcp_diag_init+0x0/0x10 @ 1
[    0.992925] initcall tcp_diag_init+0x0/0x10 returned 0 after 2 usecs
[    0.992933] calling  cubictcp_register+0x0/0xb0 @ 1
[    0.992938] TCP cubic registered
[    0.992943] initcall cubictcp_register+0x0/0xb0 returned 0 after 4 usecs
[    0.992950] calling  packet_init+0x0/0x40 @ 1
[    0.992955] NET: Registered protocol family 17
[    0.992969] initcall packet_init+0x0/0x40 returned 0 after 13 usecs
[    0.992976] calling  rfkill_handler_init+0x0/0x40 @ 1
[    0.993037] initcall rfkill_handler_init+0x0/0x40 returned 0 after 53 
usecs
[    0.993048] calling  hpet_insert_resource+0x0/0x20 @ 1
[    0.993055] initcall hpet_insert_resource+0x0/0x20 returned 1 after 0 
usecs
[    0.993064] initcall hpet_insert_resource+0x0/0x20 returned with 
error code 1
[    0.993070] calling  lapic_insert_resource+0x0/0x40 @ 1
[    0.993081] initcall lapic_insert_resource+0x0/0x40 returned 0 after 
3 usecs
[    0.993089] calling  init_lapic_nmi_sysfs+0x0/0x40 @ 1
[    0.993097] initcall init_lapic_nmi_sysfs+0x0/0x40 returned 0 after 0 
usecs
[    0.993105] calling  ioapic_insert_resources+0x0/0x60 @ 1
[    0.993113] initcall ioapic_insert_resources+0x0/0x60 returned 0 
after 1 usecs
[    0.993122] calling  io_apic_bug_finalize+0x0/0x20 @ 1
[    0.993129] initcall io_apic_bug_finalize+0x0/0x20 returned 0 after 0 
usecs
[    0.993138] calling  check_early_ioremap_leak+0x0/0x70 @ 1
[    0.993146] initcall check_early_ioremap_leak+0x0/0x70 returned 0 
after 1 usecs
[    0.993155] calling  print_ipi_mode+0x0/0x30 @ 1
[    0.993159] Using IPI Shortcut mode
[    0.993165] initcall print_ipi_mode+0x0/0x30 returned 0 after 3 usecs
[    0.993175] calling  init_oops_id+0x0/0x20 @ 1
[    0.993191] initcall init_oops_id+0x0/0x20 returned 0 after 11 usecs
[    0.993200] calling  disable_boot_consoles+0x0/0x50 @ 1
[    0.993208] initcall disable_boot_consoles+0x0/0x50 returned 0 after 
0 usecs
[    0.993217] calling  pm_qos_power_init+0x0/0x80 @ 1
[    0.993424] initcall pm_qos_power_init+0x0/0x80 returned 0 after 195 
usecs
[    0.993436] calling  random32_reseed+0x0/0x60 @ 1
[    0.993457] initcall random32_reseed+0x0/0x60 returned 0 after 13 usecs
[    0.993465] calling  pci_sysfs_init+0x0/0x50 @ 1
[    0.993597] initcall pci_sysfs_init+0x0/0x50 returned 0 after 121 usecs
[    0.993606] calling  acpi_wakeup_device_init+0x0/0x66 @ 1
[    0.993614] initcall acpi_wakeup_device_init+0x0/0x66 returned 0 
after 2 usecs
[    0.993622] calling  acpi_sleep_proc_init+0x0/0x2a @ 1
[    0.993633] initcall acpi_sleep_proc_init+0x0/0x2a returned 0 after 5 
usecs
[    0.993641] calling  seqgen_init+0x0/0x10 @ 1
[    0.993676] initcall seqgen_init+0x0/0x10 returned 0 after 29 usecs
[    0.993685] calling  scsi_complete_async_scans+0x0/0xc0 @ 1
[    0.993692] initcall scsi_complete_async_scans+0x0/0xc0 returned 0 
after 1 usecs
[    0.993702] calling  rtc_hctosys+0x0/0x190 @ 1
[    0.993737] rtc_cmos 00:03: setting system clock to 2009-01-04 
18:37:20 UTC (1231094240)
[    0.993744] initcall rtc_hctosys+0x0/0x190 returned 0 after 35 usecs
[    0.993753] calling  pci_mmcfg_late_insert_resources+0x0/0x150 @ 1
[    0.993763] initcall pci_mmcfg_late_insert_resources+0x0/0x150 
returned 0 after 2 usecs
[    0.993772] calling  tcp_congestion_default+0x0/0x10 @ 1
[    0.993781] initcall tcp_congestion_default+0x0/0x10 returned 0 after 
1 usecs
[    1.079055] Clocksource tsc unstable (delta = -99044354 ns)
[    1.224061] usb 1-5: new high speed USB device using ehci_hcd and 
address 2
[    1.341816] usb 1-5: configuration #1 chosen from 1 choice
[    1.342085] scsi2 : SCSI emulation for USB Mass Storage devices
[    1.342342] usb-storage: device found at 2
[    1.342346] usb-storage: waiting for device to settle before scanning
[    1.342565] usb 1-5: New USB device found, idVendor=0951, idProduct=1606
[    1.342571] usb 1-5: New USB device strings: Mfr=1, Product=2, 
SerialNumber=4
[    1.342575] usb 1-5: Product: UB6225
[    1.342578] usb 1-5: Manufacturer: ENE
[    1.342582] usb 1-5: SerialNumber: 146030377350
[    3.021250] input: ImPS/2 Logitech Wheel Mouse as 
/devices/platform/i8042/serio1/input/input6
[    3.120056] kjournald starting.  Commit interval 5 seconds
[    3.120073] EXT3-fs: mounted filesystem with ordered data mode.
[    3.120091] VFS: Mounted root (ext3 filesystem) readonly.
[    3.120316] Freeing unused kernel memory: 276k freed
[    3.120386] Write protecting the kernel text: 2604k
[    3.120419] Write protecting the kernel read-only data: 704k
[    6.342209] usb-storage: device scan complete
[    6.342718] scsi 2:0:0:0: Direct-Access     USB2.0   CardReader SD0 
  0100 PQ: 0 ANSI: 0
[    6.711124] EXT3 FS on sdb2, internal journal
[    6.860063] sd 2:0:0:0: [sdc] 15661056 512-byte hardware sectors: 
(8.01 GB/7.46 GiB)
[    6.860552] sd 2:0:0:0: [sdc] Write Protect is on
[    6.860557] sd 2:0:0:0: [sdc] Mode Sense: 03 00 80 00
[    6.860562] sd 2:0:0:0: [sdc] Assuming drive cache: write through
[    6.870403] sd 2:0:0:0: [sdc] 15661056 512-byte hardware sectors: 
(8.01 GB/7.46 GiB)
[    6.871536] sd 2:0:0:0: [sdc] Write Protect is on
[    6.871543] sd 2:0:0:0: [sdc] Mode Sense: 03 00 80 00
[    6.871548] sd 2:0:0:0: [sdc] Assuming drive cache: write through
[    6.871615]  sdc: sdc1 sdc2
[    6.879637] sd 2:0:0:0: [sdc] Attached SCSI removable disk
[    9.659179] warning: `avahi-daemon' uses 32-bit capabilities (legacy 
support in use)
[   10.932457] atl2 0000:03:00.0: irq 284 for MSI/MSI-X
[   37.301047] kjournald starting.  Commit interval 5 seconds
[   37.301075] EXT3-fs: mounted filesystem with ordered data mode.
[   41.174928] wlan0: authenticate with AP 00:0f:b5:cc:c9:36
[   41.176864] wlan0: authenticated
[   41.176874] wlan0: associate with AP 00:0f:b5:cc:c9:36
[   41.179183] wlan0: RX AssocResp from 00:0f:b5:cc:c9:36 (capab=0x431 
status=0 aid=2)
[   41.179190] wlan0: associated

debug_initcall log with fastboot:

[    0.000000] BIOS EBDA/lowmem at: 0009fc00/0009fc00
[    0.000000] Linux version 2.6.28-00001-g55bd644-dirty 
(sits@xenon.sucs.swan.ac.uk) (gcc version 4.1.2 20070925 (Red Hat 
4.1.2-33)) #18 Sun Jan 4 18:13:12 GMT 2009
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
[    0.000000]  BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 000000003f780000 (usable)
[    0.000000]  BIOS-e820: 000000003f780000 - 000000003f790000 (ACPI data)
[    0.000000]  BIOS-e820: 000000003f790000 - 000000003f7d0000 (ACPI NVS)
[    0.000000]  BIOS-e820: 000000003f7d0000 - 000000003f7de000 (reserved)
[    0.000000]  BIOS-e820: 000000003f7e0000 - 000000003f800000 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved)
[    0.000000] DMI present.
[    0.000000] last_pfn = 0x3f780 max_arch_pfn = 0x100000
[    0.000000] original variable MTRRs
[    0.000000] reg 0, base: 0GB, range: 1GB, type WB
[    0.000000] reg 1, base: 1016MB, range: 8MB, type UC
[    0.000000] total RAM coverred: 1016M
[    0.000000]  gran_size: 64K 	chunk_size: 64K 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 128K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 256K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 512K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 1M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 16M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 64K 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 128K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 256K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 512K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 1M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 16M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 32M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 64M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 128K 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 256K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 512K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 1M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 16M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 32M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 64M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 256K 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 512K 	num_reg: 7  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 1M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 16M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 32M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 64M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 512K 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 1M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 16M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 128M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 256M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 512M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 1M 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 2M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 16M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 128M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 256M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 512M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 2M 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 4M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 16M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 128M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 256M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 512M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 4M 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 8M 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 16M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 128M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 256M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 512M 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 8M 	chunk_size: 2G 	num_reg: 7  	lose cover 
RAM: 0G
[    0.000000]  gran_size: 16M 	chunk_size: 16M 	num_reg: 6  	lose cover 
RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 32M 	num_reg: 2  	lose cover 
RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 8M
[    0.000000]  gran_size: 16M 	chunk_size: 2G 	num_reg: 6  	lose cover 
RAM: 8M
[    0.000000]  gran_size: 32M 	chunk_size: 32M 	num_reg: 5  	lose cover 
RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 64M 	num_reg: 2  	lose cover 
RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 24M
[    0.000000]  gran_size: 32M 	chunk_size: 2G 	num_reg: 5  	lose cover 
RAM: 24M
[    0.000000]  gran_size: 64M 	chunk_size: 64M 	num_reg: 4  	lose cover 
RAM: 56M
[    0.000000]  gran_size: 64M 	chunk_size: 128M 	num_reg: 2  	lose 
cover RAM: 56M
[    0.000000]  gran_size: 64M 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 56M
[    0.000000]  gran_size: 64M 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 56M
[    0.000000]  gran_size: 64M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 56M
[    0.000000]  gran_size: 64M 	chunk_size: 2G 	num_reg: 4  	lose cover 
RAM: 56M
[    0.000000]  gran_size: 128M 	chunk_size: 128M 	num_reg: 3  	lose 
cover RAM: 120M
[    0.000000]  gran_size: 128M 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 120M
[    0.000000]  gran_size: 128M 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 120M
[    0.000000]  gran_size: 128M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 120M
[    0.000000]  gran_size: 128M 	chunk_size: 2G 	num_reg: 3  	lose cover 
RAM: 120M
[    0.000000]  gran_size: 256M 	chunk_size: 256M 	num_reg: 2  	lose 
cover RAM: 248M
[    0.000000]  gran_size: 256M 	chunk_size: 512M 	num_reg: 2  	lose 
cover RAM: 248M
[    0.000000]  gran_size: 256M 	chunk_size: 1G 	num_reg: 2  	lose cover 
RAM: 248M
[    0.000000]  gran_size: 256M 	chunk_size: 2G 	num_reg: 2  	lose cover 
RAM: 248M
[    0.000000]  gran_size: 512M 	chunk_size: 512M 	num_reg: 1  	lose 
cover RAM: 504M
[    0.000000]  gran_size: 512M 	chunk_size: 1G 	num_reg: 1  	lose cover 
RAM: 504M
[    0.000000]  gran_size: 512M 	chunk_size: 2G 	num_reg: 1  	lose cover 
RAM: 504M
[    0.000000]  gran_size: 1G 	chunk_size: 1G 	num_reg: 0  	lose cover 
RAM: 1016M
[    0.000000]  gran_size: 1G 	chunk_size: 2G 	num_reg: 0  	lose cover 
RAM: 1016M
[    0.000000]  gran_size: 2G 	chunk_size: 2G 	num_reg: 0  	lose cover 
RAM: 1016M
[    0.000000] Found optimal setting for mtrr clean up
[    0.000000] gran_size: 64K 	chunk_size: 16M 	num_reg: 2  	lose RAM: 0G
[    0.000000] range0: 0000000000000000 - 0000000040000000
[    0.000000] Setting variable MTRR 0, base: 0GB, range: 1GB, type WB
[    0.000000] hole: 000000003f800000 - 0000000040000000
[    0.000000] Setting variable MTRR 1, base: 1016MB, range: 8MB, type UC
[    0.000000] kernel direct mapping tables up to 377fe000 @ 7000-d000
[    0.000000] ACPI: RSDP 000FBE60, 0014 (r0 ACPIAM)
[    0.000000] ACPI: RSDT 3F780000, 0034 (r1 A M I  OEMRSDT   9000811 
MSFT       97)
[    0.000000] ACPI: FACP 3F780200, 0081 (r1 A M I  OEMFACP   9000811 
MSFT       97)
[    0.000000] ACPI: DSDT 3F780400, 6109 (r1  A0979 A0979034       34 
INTL 20060113)
[    0.000000] ACPI: FACS 3F790000, 0040
[    0.000000] ACPI: APIC 3F780390, 0068 (r1 A M I  OEMAPIC   9000811 
MSFT       97)
[    0.000000] ACPI: OEMB 3F790040, 0046 (r1 A M I  AMI_OEM   9000811 
MSFT       97)
[    0.000000] ACPI: MCFG 3F786510, 003C (r1 A M I  OEMMCFG   9000811 
MSFT       97)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 127MB HIGHMEM available.
[    0.000000] 887MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 377fe000
[    0.000000]   low ram: 00000000 - 377fe000
[    0.000000]   bootmap 00009000 - 0000ff00
[    0.000000] (6 early reservations) ==> bootmem [0000000000 - 00377fe000]
[    0.000000]   #0 [0000000000 - 0000001000]   BIOS data page ==> 
[0000000000 - 0000001000]
[    0.000000]   #1 [0000100000 - 000054208c]    TEXT DATA BSS ==> 
[0000100000 - 000054208c]
[    0.000000]   #2 [0000543000 - 0000546000]    INIT_PG_TABLE ==> 
[0000543000 - 0000546000]
[    0.000000]   #3 [000009fc00 - 0000100000]    BIOS reserved ==> 
[000009fc00 - 0000100000]
[    0.000000]   #4 [0000007000 - 0000009000]          PGTABLE ==> 
[0000007000 - 0000009000]
[    0.000000]   #5 [0000009000 - 0000010000]          BOOTMAP ==> 
[0000009000 - 0000010000]
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA      0x00000000 -> 0x00001000
[    0.000000]   Normal   0x00001000 -> 0x000377fe
[    0.000000]   HighMem  0x000377fe -> 0x0003f780
[    0.000000] Movable zone start PFN for each node
[    0.000000] early_node_map[2] active PFN ranges
[    0.000000]     0: 0x00000000 -> 0x0000009f
[    0.000000]     0: 0x00000100 -> 0x0003f780
[    0.000000] On node 0 totalpages: 259871
[    0.000000] free_area_init_node: node 0, pgdat c0483f60, node_mem_map 
c1000000
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3967 pages, LIFO batch:0
[    0.000000]   Normal zone: 1744 pages used for memmap
[    0.000000]   Normal zone: 221486 pages, LIFO batch:31
[    0.000000]   HighMem zone: 256 pages used for memmap
[    0.000000]   HighMem zone: 32386 pages, LIFO batch:7
[    0.000000]   Movable zone: 0 pages used for memmap
[    0.000000] ACPI: PM-Timer IO Port: 0x808
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 1, 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: 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: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.000000] Allocating PCI resources starting at 40000000 (gap: 
3f800000:bf600000)
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on. 
Total pages: 257839
[    0.000000] Kernel command line: initcall_debug root=/dev/sdb2 ro quiet
[    0.000000] Enabling fast FPU save and restore... done.
[    0.000000] Enabling unmasked SIMD FPU exception support... done.
[    0.000000] Initializing CPU#0
[    0.000000] PID hash table entries: 4096 (order: 12, 16384 bytes)
[    0.000000] Fast TSC calibration using PIT
[    0.000000] Detected 900.153 MHz processor.
[    0.000999] Console: colour VGA+ 80x25
[    0.000999] console [tty0] enabled
[    0.000999] Dentry cache hash table entries: 131072 (order: 7, 524288 
bytes)
[    0.000999] Inode-cache hash table entries: 65536 (order: 6, 262144 
bytes)
[    0.000999] Memory: 1025852k/1039872k available (2602k kernel code, 
13332k reserved, 1029k data, 276k init, 130568k highmem)
[    0.000999] virtual kernel memory layout:
[    0.000999]     fixmap  : 0xfffac000 - 0xfffff000   ( 332 kB)
[    0.000999]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
[    0.000999]     vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
[    0.000999]     lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
[    0.000999]       .init : 0xc048e000 - 0xc04d3000   ( 276 kB)
[    0.000999]       .data : 0xc038a960 - 0xc048bf2c   (1029 kB)
[    0.000999]       .text : 0xc0100000 - 0xc038a960   (2602 kB)
[    0.000999] Checking if this processor honours the WP bit even in 
supervisor mode...Ok.
[    0.000999] SLUB: Genslabs=12, HWalign=64, Order=0-3, MinObjects=0, 
CPUs=1, Nodes=1
[    0.001014] Calibrating delay loop (skipped), value calculated using 
timer frequency.. 1800.30 BogoMIPS (lpj=900153)
[    0.001041] Security Framework initialized
[    0.001061] Mount-cache hash table entries: 512
[    0.001280] CPU: L1 I cache: 32K, L1 D cache: 32K
[    0.001286] CPU: L2 cache: 512K
[    0.001291] Intel machine check architecture supported.
[    0.001298] Intel machine check reporting enabled on CPU#0.
[    0.001311] CPU: Intel(R) Celeron(R) M processor          900MHz 
stepping 08
[    0.001321] Checking 'hlt' instruction... OK.
[    0.005651] Freeing SMP alternatives: 0k freed
[    0.005655] ACPI: Core revision 20080926
[    0.020077] calling  spawn_ksoftirqd+0x0/0x30 @ 1
[    0.020105] initcall spawn_ksoftirqd+0x0/0x30 returned 0 after 0 usecs
[    0.020112] calling  spawn_softlockup_task+0x0/0x50 @ 1
[    0.020136] initcall spawn_softlockup_task+0x0/0x50 returned 0 after 
0 usecs
[    0.020142] calling  tracer_alloc_buffers+0x0/0xf0 @ 1
[    0.020473] initcall tracer_alloc_buffers+0x0/0xf0 returned 0 after 0 
usecs
[    0.020837] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.030995] calling  net_ns_init+0x0/0x1c0 @ 1
[    0.030995] net_namespace: 288 bytes
[    0.030995] initcall net_ns_init+0x0/0x1c0 returned 0 after 0 usecs
[    0.030995] calling  reboot_init+0x0/0x10 @ 1
[    0.030995] initcall reboot_init+0x0/0x10 returned 0 after 0 usecs
[    0.030995] calling  sysctl_init+0x0/0x10 @ 1
[    0.030995] initcall sysctl_init+0x0/0x10 returned 0 after 0 usecs
[    0.030995] calling  ksysfs_init+0x0/0xb0 @ 1
[    0.030995] initcall ksysfs_init+0x0/0xb0 returned 0 after 0 usecs
[    0.030995] calling  async_init+0x0/0x40 @ 1
[    0.030995] initcall async_init+0x0/0x40 returned 0 after 0 usecs
[    0.030995] calling  init_jiffies_clocksource+0x0/0x10 @ 1
[    0.030995] initcall init_jiffies_clocksource+0x0/0x10 returned 0 
after 0 usecs
[    0.030995] calling  pm_init+0x0/0x30 @ 1
[    0.030995] initcall pm_init+0x0/0x30 returned 0 after 0 usecs
[    0.030995] calling  filelock_init+0x0/0x30 @ 1
[    0.030995] initcall filelock_init+0x0/0x30 returned 0 after 0 usecs
[    0.030995] calling  init_script_binfmt+0x0/0x10 @ 1
[    0.030995] initcall init_script_binfmt+0x0/0x10 returned 0 after 0 usecs
[    0.030995] calling  init_elf_binfmt+0x0/0x10 @ 1
[    0.030995] initcall init_elf_binfmt+0x0/0x10 returned 0 after 0 usecs
[    0.030995] calling  debugfs_init+0x0/0x50 @ 1
[    0.030995] initcall debugfs_init+0x0/0x50 returned 0 after 0 usecs
[    0.030995] calling  random32_init+0x0/0xa0 @ 1
[    0.030995] initcall random32_init+0x0/0xa0 returned 0 after 0 usecs
[    0.030995] calling  cpuidle_init+0x0/0x20 @ 1
[    0.030995] initcall cpuidle_init+0x0/0x20 returned 0 after 0 usecs
[    0.030995] calling  sock_init+0x0/0x60 @ 1
[    0.030995] initcall sock_init+0x0/0x60 returned 0 after 0 usecs
[    0.030995] calling  netlink_proto_init+0x0/0x130 @ 1
[    0.030995] NET: Registered protocol family 16
[    0.030995] initcall netlink_proto_init+0x0/0x130 returned 0 after 0 
usecs
[    0.030995] calling  bdi_class_init+0x0/0x40 @ 1
[    0.030995] initcall bdi_class_init+0x0/0x40 returned 0 after 0 usecs
[    0.030995] calling  kobject_uevent_init+0x0/0x50 @ 1
[    0.030995] initcall kobject_uevent_init+0x0/0x50 returned 0 after 0 
usecs
[    0.030995] calling  pcibus_class_init+0x0/0x10 @ 1
[    0.030995] initcall pcibus_class_init+0x0/0x10 returned 0 after 0 usecs
[    0.030995] calling  pci_driver_init+0x0/0x10 @ 1
[    0.030995] initcall pci_driver_init+0x0/0x10 returned 0 after 0 usecs
[    0.030995] calling  backlight_class_init+0x0/0x50 @ 1
[    0.030995] initcall backlight_class_init+0x0/0x50 returned 0 after 0 
usecs
[    0.030995] calling  tty_class_init+0x0/0x30 @ 1
[    0.030995] initcall tty_class_init+0x0/0x30 returned 0 after 0 usecs
[    0.030995] calling  vtconsole_class_init+0x0/0xe0 @ 1
[    0.031077] initcall vtconsole_class_init+0x0/0xe0 returned 0 after 
976 usecs
[    0.031088] calling  amd_postcore_init+0x0/0x40 @ 1
[    0.031093] initcall amd_postcore_init+0x0/0x40 returned 0 after 0 usecs
[    0.031102] calling  arch_kdebugfs_init+0x0/0x20 @ 1
[    0.031112] initcall arch_kdebugfs_init+0x0/0x20 returned 0 after 0 usecs
[    0.031119] calling  init_pit_clocksource+0x0/0xb0 @ 1
[    0.031125] initcall init_pit_clocksource+0x0/0xb0 returned 0 after 0 
usecs
[    0.031133] calling  mtrr_if_init+0x0/0x70 @ 1
[    0.031142] initcall mtrr_if_init+0x0/0x70 returned 0 after 0 usecs
[    0.031150] calling  ffh_cstate_init+0x0/0x30 @ 1
[    0.031155] initcall ffh_cstate_init+0x0/0x30 returned 0 after 0 usecs
[    0.031164] calling  acpi_pci_init+0x0/0x60 @ 1
[    0.031169] ACPI: bus type pci registered
[    0.031175] initcall acpi_pci_init+0x0/0x60 returned 0 after 0 usecs
[    0.031183] calling  init_acpi_device_notify+0x0/0x3f @ 1
[    0.031189] initcall init_acpi_device_notify+0x0/0x3f returned 0 
after 0 usecs
[    0.031197] calling  pci_arch_init+0x0/0x50 @ 1
[    0.031244] PCI: MCFG configuration 0: base e0000000 segment 0 buses 
0 - 255
[    0.031250] PCI: Not using MMCONFIG.
[    0.031465] PCI: PCI BIOS revision 3.00 entry at 0xf0031, last bus=5
[    0.031469] PCI: Using configuration type 1 for base access
[    0.031513] initcall pci_arch_init+0x0/0x50 returned 0 after 0 usecs
[    0.031522] calling  topology_init+0x0/0x10 @ 1
[    0.031584] initcall topology_init+0x0/0x10 returned 0 after 0 usecs
[    0.031595] calling  mtrr_init_finialize+0x0/0x40 @ 1
[    0.031601] initcall mtrr_init_finialize+0x0/0x40 returned 0 after 0 
usecs
[    0.031609] calling  param_sysfs_init+0x0/0x320 @ 1
[    0.035308] initcall param_sysfs_init+0x0/0x320 returned 0 after 3905 
usecs
[    0.035323] calling  pm_sysrq_init+0x0/0x20 @ 1
[    0.035329] initcall pm_sysrq_init+0x0/0x20 returned 0 after 0 usecs
[    0.035337] calling  readahead_init+0x0/0x40 @ 1
[    0.035415] initcall readahead_init+0x0/0x40 returned 0 after 0 usecs
[    0.035425] calling  init_bio+0x0/0xc0 @ 1
[    0.035453] initcall init_bio+0x0/0xc0 returned 0 after 0 usecs
[    0.035461] calling  cryptomgr_init+0x0/0x30 @ 1
[    0.035475] initcall cryptomgr_init+0x0/0x30 returned 0 after 0 usecs
[    0.035483] calling  blk_settings_init+0x0/0x20 @ 1
[    0.035489] initcall blk_settings_init+0x0/0x20 returned 0 after 0 usecs
[    0.035498] calling  blk_ioc_init+0x0/0x30 @ 1
[    0.035504] initcall blk_ioc_init+0x0/0x30 returned 0 after 0 usecs
[    0.035513] calling  blk_softirq_init+0x0/0x30 @ 1
[    0.035518] initcall blk_softirq_init+0x0/0x30 returned 0 after 0 usecs
[    0.035527] calling  genhd_device_init+0x0/0x60 @ 1
[    0.035615] initcall genhd_device_init+0x0/0x60 returned 0 after 0 usecs
[    0.035628] calling  pci_slot_init+0x0/0x40 @ 1
[    0.035639] initcall pci_slot_init+0x0/0x40 returned 0 after 0 usecs
[    0.035648] calling  fbmem_init+0x0/0x90 @ 1
[    0.035708] initcall fbmem_init+0x0/0x90 returned 0 after 0 usecs
[    0.035719] calling  acpi_init+0x0/0x23a @ 1
[    0.036754] ACPI: EC: Look up EC in DSDT
[    0.050470] ACPI: Interpreter enabled
[    0.050484] ACPI: (supports S0 S1 S3 S5)
[    0.050516] ACPI: Using IOAPIC for interrupt routing
[    0.050628] PCI: MCFG configuration 0: base e0000000 segment 0 buses 
0 - 255
[    0.053911] PCI: MCFG area at e0000000 reserved in ACPI motherboard 
resources
[    0.053917] PCI: Using MMCONFIG for extended config space
[    0.053928] initcall acpi_init+0x0/0x23a returned 0 after 17575 usecs
[    0.053938] calling  acpi_scan_init+0x0/0xea @ 1
[    0.064432] initcall acpi_scan_init+0x0/0xea returned 0 after 10740 usecs
[    0.064445] calling  acpi_ec_init+0x0/0x51 @ 1
[    0.064456] initcall acpi_ec_init+0x0/0x51 returned 0 after 0 usecs
[    0.064464] calling  dock_init+0x0/0x79 @ 1
[    0.064673] ACPI: No dock devices found.
[    0.064677] initcall dock_init+0x0/0x79 returned 0 after 0 usecs
[    0.064684] calling  acpi_pci_root_init+0x0/0x21 @ 1
[    0.064690] initcall acpi_pci_root_init+0x0/0x21 returned 0 after 0 usecs
[    0.064697] calling  acpi_pci_link_init+0x0/0x59 @ 1
[    0.064703] initcall acpi_pci_link_init+0x0/0x59 returned 0 after 0 usecs
[    0.064710] calling  acpi_power_init+0x0/0x65 @ 1
[    0.064718] initcall acpi_power_init+0x0/0x65 returned 0 after 0 usecs
[    0.064725] calling  acpi_system_init+0x0/0x164 @ 1
[    0.064818] initcall acpi_system_init+0x0/0x164 returned 0 after 0 usecs
[    0.064825] calling  pnp_init+0x0/0x10 @ 1
[    0.064905] initcall pnp_init+0x0/0x10 returned 0 after 0 usecs
[    0.064914] calling  misc_init+0x0/0xa0 @ 1
[    0.064969] calling  1_acpi_bus_register_async+0x0/0x4b @ 151
[    0.064974] async_waiting @ 151
[    0.064977] async_continuing @ 151 after 0 usec
[    0.065049] ACPI: EC: GPE = 0x18, I/O: command/status = 0x66, data = 0x62
[    0.065053] ACPI: EC: driver started in poll mode
[    0.065126] initcall misc_init+0x0/0xa0 returned 0 after 976 usecs
[    0.065135] calling  init_scsi+0x0/0x90 @ 1
[    0.065300] initcall 1_acpi_bus_register_async+0x0/0x4b returned 0 
after 976 usecs
[    0.065309] calling  2_acpi_bus_register_async+0x0/0x4b @ 151
[    0.065312] async_waiting @ 151
[    0.065315] async_continuing @ 151 after 0 usec
[    0.065470] ACPI: PCI Root Bridge [PCI0] (0000:00)
[    0.065543] calling  3_acpi_bus_register_async+0x0/0x4b @ 154
[    0.065547] async_waiting @ 154
[    0.065700] pci 0000:00:02.0: reg 10 32bit mmio: [0xf7f00000-0xf7f7ffff]
[    0.065708] pci 0000:00:02.0: reg 14 io port: [0xec00-0xec07]
[    0.065716] pci 0000:00:02.0: reg 18 32bit mmio: [0xd0000000-0xdfffffff]
[    0.065724] pci 0000:00:02.0: reg 1c 32bit mmio: [0xf7ec0000-0xf7efffff]
[    0.065761] pci 0000:00:02.1: reg 10 32bit mmio: [0xf7f80000-0xf7ffffff]
[    0.065855] pci 0000:00:1b.0: reg 10 64bit mmio: [0xf7eb8000-0xf7ebbfff]
[    0.065888] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.065894] pci 0000:00:1b.0: PME# disabled
[    0.065946] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.065951] pci 0000:00:1c.0: PME# disabled
[    0.066013] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
[    0.066019] pci 0000:00:1c.1: PME# disabled
[    0.066072] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
[    0.066078] pci 0000:00:1c.2: PME# disabled
[    0.066130] pci 0000:00:1d.0: reg 20 io port: [0xe400-0xe41f]
[    0.066184] pci 0000:00:1d.1: reg 20 io port: [0xe480-0xe49f]
[    0.066237] pci 0000:00:1d.2: reg 20 io port: [0xe800-0xe81f]
[    0.066289] pci 0000:00:1d.3: reg 20 io port: [0xe880-0xe89f]
[    0.066346] pci 0000:00:1d.7: reg 10 32bit mmio: [0xf7eb7c00-0xf7eb7fff]
[    0.066389] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold
[    0.066395] pci 0000:00:1d.7: PME# disabled
[    0.066517] pci 0000:00:1f.0: Force enabled HPET at 0xfed00000
[    0.066526] pci 0000:00:1f.0: quirk: region 0800-087f claimed by ICH6 
ACPI/GPIO/TCO
[    0.066533] pci 0000:00:1f.0: quirk: region 0480-04bf claimed by ICH6 
GPIO
[    0.066565] pci 0000:00:1f.2: reg 10 io port: [0x00-0x07]
[    0.066573] pci 0000:00:1f.2: reg 14 io port: [0x00-0x03]
[    0.066581] pci 0000:00:1f.2: reg 18 io port: [0x00-0x07]
[    0.066589] pci 0000:00:1f.2: reg 1c io port: [0x00-0x03]
[    0.066598] pci 0000:00:1f.2: reg 20 io port: [0xffa0-0xffaf]
[    0.066618] pci 0000:00:1f.2: PME# supported from D3hot
[    0.066624] pci 0000:00:1f.2: PME# disabled
[    0.066673] pci 0000:00:1f.3: reg 20 io port: [0x400-0x41f]
[    0.066806] pci 0000:03:00.0: reg 10 64bit mmio: [0xfbfc0000-0xfbffffff]
[    0.066843] pci 0000:03:00.0: reg 30 32bit mmio: [0xfbfa0000-0xfbfbffff]
[    0.066858] pci 0000:03:00.0: PME# supported from D3hot D3cold
[    0.066864] pci 0000:03:00.0: PME# disabled
[    0.066919] pci 0000:00:1c.1: bridge 32bit mmio: [0xfbf00000-0xfbffffff]
[    0.066982] pci 0000:01:00.0: reg 10 64bit mmio: [0xfbef0000-0xfbefffff]
[    0.067105] pci 0000:00:1c.2: bridge 32bit mmio: [0xf8000000-0xfbefffff]
[    0.067114] pci 0000:00:1c.2: bridge 64bit mmio pref: 
[0xf0000000-0xf6ffffff]
[    0.067167] pci 0000:00:1e.0: transparent bridge
[    0.067197] bus 00 -> node 0
[    0.067214] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[    0.067717] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P3._PRT]
[    0.067910] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P5._PRT]
[    0.068109] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P6._PRT]
[    0.068841] calling  4_acpi_bus_register_async+0x0/0x4b @ 157
[    0.068845] async_waiting @ 157
[    0.069404] SCSI subsystem initialized
[    0.069414] initcall init_scsi+0x0/0x90 returned 0 after 3905 usecs
[    0.069424] calling  ata_init+0x0/0x3a0 @ 1
[    0.069477] libata version 3.00 loaded.
[    0.069483] initcall ata_init+0x0/0x3a0 returned 0 after 0 usecs
[    0.069491] calling  usb_init+0x0/0x120 @ 1
[    0.071818] usbcore: registered new interface driver usbfs
[    0.072331] usbcore: registered new interface driver hub
[    0.072833] usbcore: registered new device driver usb
[    0.072843] initcall usb_init+0x0/0x120 returned 0 after 2929 usecs
[    0.072853] calling  serio_init+0x0/0xb0 @ 1
[    0.073391] initcall serio_init+0x0/0xb0 returned 0 after 976 usecs
[    0.073403] calling  input_init+0x0/0x100 @ 1
[    0.073881] initcall input_init+0x0/0x100 returned 0 after 0 usecs
[    0.073893] calling  rtc_init+0x0/0x70 @ 1
[    0.074404] initcall rtc_init+0x0/0x70 returned 0 after 976 usecs
[    0.074414] calling  power_supply_class_init+0x0/0x30 @ 1
[    0.074898] initcall power_supply_class_init+0x0/0x30 returned 0 
after 0 usecs
[    0.074909] calling  hwmon_init+0x0/0x40 @ 1
[    0.075400] initcall hwmon_init+0x0/0x40 returned 0 after 976 usecs
[    0.075411] calling  thermal_init+0x0/0x30 @ 1
[    0.075888] initcall thermal_init+0x0/0x30 returned 0 after 0 usecs
[    0.075898] calling  leds_init+0x0/0x30 @ 1
[    0.076400] initcall leds_init+0x0/0x30 returned 0 after 976 usecs
[    0.076411] calling  pci_subsys_init+0x0/0x100 @ 1
[    0.076415] PCI: Using ACPI for IRQ routing
[    0.076485] initcall pci_subsys_init+0x0/0x100 returned 0 after 0 usecs
[    0.076494] calling  proto_init+0x0/0x30 @ 1
[    0.076504] initcall proto_init+0x0/0x30 returned 0 after 0 usecs
[    0.076512] calling  net_dev_init+0x0/0x100 @ 1
[    0.076636] initcall net_dev_init+0x0/0x100 returned 0 after 0 usecs
[    0.076646] calling  neigh_init+0x0/0x80 @ 1
[    0.076653] initcall neigh_init+0x0/0x80 returned 0 after 0 usecs
[    0.076661] calling  genl_init+0x0/0xd0 @ 1
[    0.077089] initcall 2_acpi_bus_register_async+0x0/0x4b returned 0 
after 11716 usecs
[    0.077099] async_continuing @ 154 after 11716 usec
[    0.077330] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 *5 6 7 10 11 12 
14 15)
[    0.077607] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 10 *11 12 
14 15)
[    0.077873] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 *10 11 12 
14 15)
[    0.078174] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 *7 10 11 12 
14 15)
[    0.078441] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 10 11 12 
14 15) *0, disabled.
[    0.078715] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 10 11 12 
14 15) *0, disabled.
[    0.078982] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 10 11 12 
14 15) *0, disabled.
[    0.079259] ACPI: PCI Interrupt Link [LNKH] (IRQs *3 4 5 6 7 10 11 12 
14 15)
[    0.079414] initcall 3_acpi_bus_register_async+0x0/0x4b returned 0 
after 13669 usecs
[    0.079422] async_continuing @ 157 after 10740 usec
[    0.079486] initcall 4_acpi_bus_register_async+0x0/0x4b returned 0 
after 10740 usecs
[    0.079494] initcall genl_init+0x0/0xd0 returned 0 after 2929 usecs
[    0.079494] calling  wireless_nlevent_init+0x0/0x20 @ 1
[    0.079494] initcall wireless_nlevent_init+0x0/0x20 returned 0 after 
0 usecs
[    0.079494] calling  cfg80211_init+0x0/0x80 @ 1
[    0.079494] cfg80211: Using static regulatory domain info
[    0.079494] cfg80211: Regulatory domain: US
[    0.079494] 	(start_freq - end_freq @ bandwidth), (max_antenna_gain, 
max_eirp)
[    0.079494] 	(2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm)
[    0.079494] 	(5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[    0.079494] 	(5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[    0.079494] 	(5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[    0.079494] 	(5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
[    0.079494] 	(5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm)
[    0.079494] cfg80211: Calling CRDA for country: US
[    0.079494] initcall cfg80211_init+0x0/0x80 returned 0 after 0 usecs
[    0.079494] calling  ieee80211_init+0x0/0x20 @ 1
[    0.079494] initcall ieee80211_init+0x0/0x20 returned 0 after 0 usecs
[    0.079494] calling  rfkill_init+0x0/0x70 @ 1
[    0.079494] initcall rfkill_init+0x0/0x70 returned 0 after 0 usecs
[    0.079494] calling  sysctl_init+0x0/0x40 @ 1
[    0.079494] initcall sysctl_init+0x0/0x40 returned 0 after 0 usecs
[    0.079494] calling  pci_iommu_init+0x0/0x10 @ 1
[    0.079494] initcall pci_iommu_init+0x0/0x10 returned 0 after 0 usecs
[    0.079494] calling  print_all_ICs+0x0/0x880 @ 1
[    0.079494] initcall print_all_ICs+0x0/0x880 returned 0 after 0 usecs
[    0.079494] calling  hpet_late_init+0x0/0x180 @ 1
[    0.080170] hpet clockevent registered
[    0.080175] HPET: 3 timers in total, 0 timers will be used for 
per-cpu timer
[    0.080184] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[    0.080192] hpet0: 3 comparators, 64-bit 14.318180 MHz counter
[    0.081998] initcall hpet_late_init+0x0/0x180 returned 0 after 2929 usecs
[    0.082009] calling  clocksource_done_booting+0x0/0x10 @ 1
[    0.082015] initcall clocksource_done_booting+0x0/0x10 returned 0 
after 0 usecs
[    0.082023] calling  rb_init_debugfs+0x0/0x50 @ 1
[    0.082035] initcall rb_init_debugfs+0x0/0x50 returned 0 after 0 usecs
[    0.082043] calling  tracer_init_debugfs+0x0/0x310 @ 1
[    0.082073] initcall tracer_init_debugfs+0x0/0x310 returned 0 after 0 
usecs
[    0.082081] calling  init_pipe_fs+0x0/0x50 @ 1
[    0.082099] initcall init_pipe_fs+0x0/0x50 returned 0 after 0 usecs
[    0.082107] calling  init_mnt_writers+0x0/0x10 @ 1
[    0.082113] initcall init_mnt_writers+0x0/0x10 returned 0 after 0 usecs
[    0.082121] calling  eventpoll_init+0x0/0xa0 @ 1
[    0.082131] initcall eventpoll_init+0x0/0xa0 returned 0 after 0 usecs
[    0.082139] calling  anon_inode_init+0x0/0x100 @ 1
[    0.082149] initcall anon_inode_init+0x0/0x100 returned 0 after 0 usecs
[    0.082157] calling  acpi_event_init+0x0/0x78 @ 1
[    0.082170] initcall acpi_event_init+0x0/0x78 returned 0 after 0 usecs
[    0.082170] calling  pnpacpi_init+0x0/0xa0 @ 1
[    0.082170] pnp: PnP ACPI init
[    0.082170] ACPI: bus type pnp registered
[    0.086407] pnp: PnP ACPI: found 13 devices
[    0.086414] ACPI: ACPI bus type pnp unregistered
[    0.086423] initcall pnpacpi_init+0x0/0xa0 returned 0 after 4326 usecs
[    0.086433] calling  pnp_system_init+0x0/0x10 @ 1
[    0.086457] system 00:01: iomem range 0xfed13000-0xfed19fff has been 
reserved
[    0.086475] system 00:08: ioport range 0x380-0x383 has been reserved
[    0.086480] system 00:08: ioport range 0x4d0-0x4d1 has been reserved
[    0.086485] system 00:08: ioport range 0x800-0x87f has been reserved
[    0.086491] system 00:08: ioport range 0x480-0x4bf has been reserved
[    0.086501] system 00:08: iomem range 0xfed1c000-0xfed1ffff has been 
reserved
[    0.086507] system 00:08: iomem range 0xfed20000-0xfed8ffff has been 
reserved
[    0.086513] system 00:08: iomem range 0xfff00000-0xffffffff could not 
be reserved
[    0.086523] system 00:09: iomem range 0xfec00000-0xfec00fff has been 
reserved
[    0.086529] system 00:09: iomem range 0xfee00000-0xfee00fff has been 
reserved
[    0.086538] system 00:0a: iomem range 0xe0000000-0xefffffff has been 
reserved
[    0.086551] system 00:0b: iomem range 0xe0000000-0xefffffff has been 
reserved
[    0.086562] system 00:0c: iomem range 0x0-0x9ffff could not be reserved
[    0.086568] system 00:0c: iomem range 0xe0000-0xfffff could not be 
reserved
[    0.086573] system 00:0c: iomem range 0x100000-0x3f7fffff could not 
be reserved
[    0.086633] initcall pnp_system_init+0x0/0x10 returned 0 after 188 usecs
[    0.086643] calling  chr_dev_init+0x0/0xb0 @ 1
[    0.087144] initcall chr_dev_init+0x0/0xb0 returned 0 after 482 usecs
[    0.087154] calling  firmware_class_init+0x0/0x70 @ 1
[    0.087204] initcall firmware_class_init+0x0/0x70 returned 0 after 42 
usecs
[    0.087213] calling  loopback_init+0x0/0x10 @ 1
[    0.087352] initcall loopback_init+0x0/0x10 returned 0 after 129 usecs
[    0.087362] calling  init_acpi_pm_clocksource+0x0/0x230 @ 1
[    0.121906] initcall init_acpi_pm_clocksource+0x0/0x230 returned 0 
after 33727 usecs
[    0.121916] calling  pcibios_assign_resources+0x0/0x80 @ 1
[    0.121964] pci 0000:00:1c.0: PCI bridge, secondary bus 0000:04
[    0.121969] pci 0000:00:1c.0:   IO window: disabled
[    0.121979] pci 0000:00:1c.0:   MEM window: disabled
[    0.121985] pci 0000:00:1c.0:   PREFETCH window: disabled
[    0.122000] pci 0000:00:1c.1: PCI bridge, secondary bus 0000:03
[    0.122004] pci 0000:00:1c.1:   IO window: disabled
[    0.122011] pci 0000:00:1c.1:   MEM window: 0xfbf00000-0xfbffffff
[    0.122017] pci 0000:00:1c.1:   PREFETCH window: disabled
[    0.122032] pci 0000:00:1c.2: PCI bridge, secondary bus 0000:01
[    0.122036] pci 0000:00:1c.2:   IO window: disabled
[    0.122043] pci 0000:00:1c.2:   MEM window: 0xf8000000-0xfbefffff
[    0.122050] pci 0000:00:1c.2:   PREFETCH window: 
0x000000f0000000-0x000000f6ffffff
[    0.122059] pci 0000:00:1e.0: PCI bridge, secondary bus 0000:05
[    0.122062] pci 0000:00:1e.0:   IO window: disabled
[    0.122069] pci 0000:00:1e.0:   MEM window: disabled
[    0.122074] pci 0000:00:1e.0:   PREFETCH window: disabled
[    0.122098] pci 0000:00:1c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    0.122107] pci 0000:00:1c.0: setting latency timer to 64
[    0.122118] pci 0000:00:1c.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
[    0.122124] pci 0000:00:1c.1: setting latency timer to 64
[    0.122136] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18
[    0.122142] pci 0000:00:1c.2: setting latency timer to 64
[    0.122151] pci 0000:00:1e.0: setting latency timer to 64
[    0.122157] bus: 00 index 0 io port: [0x00-0xffff]
[    0.122161] bus: 00 index 1 mmio: [0x000000-0xffffffff]
[    0.122165] bus: 04 index 0 mmio: [0x0-0x0]
[    0.122169] bus: 04 index 1 mmio: [0x0-0x0]
[    0.122173] bus: 04 index 2 mmio: [0x0-0x0]
[    0.122176] bus: 04 index 3 mmio: [0x0-0x0]
[    0.122180] bus: 03 index 0 mmio: [0x0-0x0]
[    0.122184] bus: 03 index 1 mmio: [0xfbf00000-0xfbffffff]
[    0.122188] bus: 03 index 2 mmio: [0x0-0x0]
[    0.122191] bus: 03 index 3 mmio: [0x0-0x0]
[    0.122195] bus: 01 index 0 mmio: [0x0-0x0]
[    0.122199] bus: 01 index 1 mmio: [0xf8000000-0xfbefffff]
[    0.122203] bus: 01 index 2 mmio: [0xf0000000-0xf6ffffff]
[    0.122207] bus: 01 index 3 mmio: [0x0-0x0]
[    0.122211] bus: 05 index 0 mmio: [0x0-0x0]
[    0.122215] bus: 05 index 1 mmio: [0x0-0x0]
[    0.122218] bus: 05 index 2 mmio: [0x0-0x0]
[    0.122222] bus: 05 index 3 io port: [0x00-0xffff]
[    0.122226] bus: 05 index 4 mmio: [0x000000-0xffffffff]
[    0.122234] initcall pcibios_assign_resources+0x0/0x80 returned 0 
after 303 usecs
[    0.122244] calling  inet_init+0x0/0x1f0 @ 1
[    0.122260] NET: Registered protocol family 2
[    0.122365] IP route cache hash table entries: 32768 (order: 5, 
131072 bytes)
[    0.122498] TCP established hash table entries: 131072 (order: 8, 
1048576 bytes)
[    0.124208] TCP bind hash table entries: 65536 (order: 6, 262144 bytes)
[    0.124624] TCP: Hash tables configured (established 131072 bind 65536)
[    0.124631] TCP reno registered
[    0.124757] initcall inet_init+0x0/0x1f0 returned 0 after 2437 usecs
[    0.124777] calling  af_unix_init+0x0/0x50 @ 1
[    0.124783] NET: Registered protocol family 1
[    0.124795] initcall af_unix_init+0x0/0x50 returned 0 after 12 usecs
[    0.124806] calling  populate_rootfs+0x0/0xa0 @ 1
[    0.125040] initcall populate_rootfs+0x0/0xa0 returned 0 after 218 usecs
[    0.125053] calling  i8259A_init_sysfs+0x0/0x20 @ 1
[    0.125210] initcall i8259A_init_sysfs+0x0/0x20 returned 0 after 146 
usecs
[    0.125222] calling  sbf_init+0x0/0xb0 @ 1
[    0.125228] initcall sbf_init+0x0/0xb0 returned 0 after 0 usecs
[    0.125237] calling  i8237A_init_sysfs+0x0/0x20 @ 1
[    0.125316] initcall i8237A_init_sysfs+0x0/0x20 returned 0 after 71 usecs
[    0.125325] calling  add_rtc_cmos+0x0/0xa0 @ 1
[    0.125336] initcall add_rtc_cmos+0x0/0xa0 returned 0 after 5 usecs
[    0.125344] calling  cache_sysfs_init+0x0/0x240 @ 1
[    0.125349] initcall cache_sysfs_init+0x0/0x240 returned 0 after 0 usecs
[    0.125357] calling  thermal_throttle_init_device+0x0/0x40 @ 1
[    0.125363] initcall thermal_throttle_init_device+0x0/0x40 returned 0 
after 0 usecs
[    0.125372] calling  init_nonfatal_mce_checker+0x0/0x60 @ 1
[    0.125378] Machine check exception polling timer started.
[    0.125384] initcall init_nonfatal_mce_checker+0x0/0x60 returned 0 
after 6 usecs
[    0.125392] calling  msr_init+0x0/0xc0 @ 1
[    0.125525] initcall msr_init+0x0/0xc0 returned 0 after 122 usecs
[    0.125535] calling  cpuid_init+0x0/0xc0 @ 1
[    0.125643] initcall cpuid_init+0x0/0xc0 returned 0 after 98 usecs
[    0.125655] calling  init_lapic_sysfs+0x0/0x30 @ 1
[    0.125735] initcall init_lapic_sysfs+0x0/0x30 returned 0 after 71 usecs
[    0.125745] calling  ioapic_init_sysfs+0x0/0xa0 @ 1
[    0.125827] initcall ioapic_init_sysfs+0x0/0xa0 returned 0 after 73 usecs
[    0.125837] calling  microcode_init+0x0/0x110 @ 1
[    0.125968] Microcode Update Driver: v2.00 
<tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    0.125989] initcall microcode_init+0x0/0x110 returned 0 after 140 usecs
[    0.126003] calling  aes_init+0x0/0x10 @ 1
[    0.126055] alg: cipher: Test 1 failed on encryption for aes-asm
[    0.126120] 00000000: 00 01 02 03 04 05 06 07 08 08 08 08 08 08 08 08
[    0.126137] initcall aes_init+0x0/0x10 returned 0 after 124 usecs
[    0.126147] calling  proc_execdomains_init+0x0/0x30 @ 1
[    0.126161] initcall proc_execdomains_init+0x0/0x30 returned 0 after 
7 usecs
[    0.126169] calling  ioresources_init+0x0/0x40 @ 1
[    0.126177] initcall ioresources_init+0x0/0x40 returned 0 after 3 usecs
[    0.126184] calling  uid_cache_init+0x0/0x60 @ 1
[    0.126194] initcall uid_cache_init+0x0/0x60 returned 0 after 4 usecs
[    0.126201] calling  init_posix_timers+0x0/0xd0 @ 1
[    0.126208] initcall init_posix_timers+0x0/0xd0 returned 0 after 1 usecs
[    0.126215] calling  init_posix_cpu_timers+0x0/0xb0 @ 1
[    0.126221] initcall init_posix_cpu_timers+0x0/0xb0 returned 0 after 
0 usecs
[    0.126228] calling  nsproxy_cache_init+0x0/0x30 @ 1
[    0.126234] initcall nsproxy_cache_init+0x0/0x30 returned 0 after 1 usecs
[    0.126242] calling  timekeeping_init_device+0x0/0x20 @ 1
[    0.126339] initcall timekeeping_init_device+0x0/0x20 returned 0 
after 88 usecs
[    0.126348] calling  init_clocksource_sysfs+0x0/0x40 @ 1
[    0.126431] initcall init_clocksource_sysfs+0x0/0x40 returned 0 after 
74 usecs
[    0.126440] calling  init_timer_list_procfs+0x0/0x30 @ 1
[    0.126449] initcall init_timer_list_procfs+0x0/0x30 returned 0 after 
3 usecs
[    0.126456] calling  futex_init+0x0/0x60 @ 1
[    0.126470] initcall futex_init+0x0/0x60 returned 0 after 9 usecs
[    0.126477] calling  proc_dma_init+0x0/0x30 @ 1
[    0.126483] initcall proc_dma_init+0x0/0x30 returned 0 after 1 usecs
[    0.126490] calling  kallsyms_init+0x0/0x30 @ 1
[    0.126497] initcall kallsyms_init+0x0/0x30 returned 0 after 2 usecs
[    0.126504] calling  ikconfig_init+0x0/0x40 @ 1
[    0.126511] initcall ikconfig_init+0x0/0x40 returned 0 after 1 usecs
[    0.126518] calling  utsname_sysctl_init+0x0/0x10 @ 1
[    0.126526] initcall utsname_sysctl_init+0x0/0x10 returned 0 after 3 
usecs
[    0.126535] calling  init_sched_switch_trace+0x0/0x40 @ 1
[    0.126542] initcall init_sched_switch_trace+0x0/0x40 returned 0 
after 1 usecs
[    0.126550] calling  init_per_zone_pages_min+0x0/0x50 @ 1
[    0.126620] initcall init_per_zone_pages_min+0x0/0x50 returned 0 
after 61 usecs
[    0.126628] calling  pdflush_init+0x0/0x20 @ 1
[    0.126668] initcall pdflush_init+0x0/0x20 returned 0 after 33 usecs
[    0.126676] calling  kswapd_init+0x0/0x10 @ 1
[    0.126698] initcall kswapd_init+0x0/0x10 returned 0 after 16 usecs
[    0.126706] calling  setup_vmstat+0x0/0x90 @ 1
[    0.126719] initcall setup_vmstat+0x0/0x90 returned 0 after 7 usecs
[    0.126727] calling  mm_sysfs_init+0x0/0x20 @ 1
[    0.126736] initcall mm_sysfs_init+0x0/0x20 returned 0 after 4 usecs
[    0.126744] calling  proc_vmalloc_init+0x0/0x30 @ 1
[    0.126751] initcall proc_vmalloc_init+0x0/0x30 returned 0 after 2 usecs
[    0.126759] calling  init_emergency_pool+0x0/0x70 @ 1
[    0.126796] highmem bounce pool size: 64 pages
[    0.126802] initcall init_emergency_pool+0x0/0x70 returned 0 after 35 
usecs
[    0.126810] calling  init_tmpfs+0x0/0xd0 @ 1
[    0.126840] initcall init_tmpfs+0x0/0xd0 returned 0 after 24 usecs
[    0.126848] calling  fasync_init+0x0/0x30 @ 1
[    0.126856] initcall fasync_init+0x0/0x30 returned 0 after 2 usecs
[    0.126865] calling  proc_filesystems_init+0x0/0x30 @ 1
[    0.126874] initcall proc_filesystems_init+0x0/0x30 returned 0 after 
3 usecs
[    0.126882] calling  inotify_setup+0x0/0x10 @ 1
[    0.126889] initcall inotify_setup+0x0/0x10 returned 0 after 1 usecs
[    0.126897] calling  inotify_user_setup+0x0/0xc0 @ 1
[    0.126910] initcall inotify_user_setup+0x0/0xc0 returned 0 after 7 usecs
[    0.126918] calling  proc_locks_init+0x0/0x30 @ 1
[    0.126925] initcall proc_locks_init+0x0/0x30 returned 0 after 2 usecs
[    0.126933] calling  init_mbcache+0x0/0x10 @ 1
[    0.126939] initcall init_mbcache+0x0/0x10 returned 0 after 0 usecs
[    0.126948] calling  proc_cmdline_init+0x0/0x30 @ 1
[    0.126956] initcall proc_cmdline_init+0x0/0x30 returned 0 after 2 usecs
[    0.126964] calling  proc_cpuinfo_init+0x0/0x30 @ 1
[    0.126982] initcall proc_cpuinfo_init+0x0/0x30 returned 0 after 10 usecs
[    0.126990] calling  proc_devices_init+0x0/0x30 @ 1
[    0.126997] initcall proc_devices_init+0x0/0x30 returned 0 after 1 usecs
[    0.127006] calling  proc_interrupts_init+0x0/0x30 @ 1
[    0.127014] initcall proc_interrupts_init+0x0/0x30 returned 0 after 2 
usecs
[    0.127024] calling  proc_loadavg_init+0x0/0x30 @ 1
[    0.127031] initcall proc_loadavg_init+0x0/0x30 returned 0 after 1 usecs
[    0.127039] calling  proc_meminfo_init+0x0/0x30 @ 1
[    0.127046] initcall proc_meminfo_init+0x0/0x30 returned 0 after 1 usecs
[    0.127054] calling  proc_stat_init+0x0/0x30 @ 1
[    0.127062] initcall proc_stat_init+0x0/0x30 returned 0 after 1 usecs
[    0.127070] calling  proc_uptime_init+0x0/0x30 @ 1
[    0.127083] initcall proc_uptime_init+0x0/0x30 returned 0 after 7 usecs
[    0.127091] calling  proc_version_init+0x0/0x30 @ 1
[    0.127098] initcall proc_version_init+0x0/0x30 returned 0 after 2 usecs
[    0.127107] calling  proc_kcore_init+0x0/0x50 @ 1
[    0.127114] initcall proc_kcore_init+0x0/0x50 returned 0 after 2 usecs
[    0.127122] calling  proc_kmsg_init+0x0/0x30 @ 1
[    0.127129] initcall proc_kmsg_init+0x0/0x30 returned 0 after 1 usecs
[    0.127137] calling  proc_page_init+0x0/0x50 @ 1
[    0.127147] initcall proc_page_init+0x0/0x50 returned 0 after 4 usecs
[    0.127155] calling  init_devpts_fs+0x0/0x30 @ 1
[    0.127171] initcall init_devpts_fs+0x0/0x30 returned 0 after 9 usecs
[    0.127179] calling  init_ext3_fs+0x0/0x70 @ 1
[    0.127192] initcall init_ext3_fs+0x0/0x70 returned 0 after 6 usecs
[    0.127200] calling  journal_init+0x0/0xa0 @ 1
[    0.127210] initcall journal_init+0x0/0xa0 returned 0 after 4 usecs
[    0.127219] calling  init_ext2_fs+0x0/0x70 @ 1
[    0.127228] initcall init_ext2_fs+0x0/0x70 returned 0 after 4 usecs
[    0.127236] calling  init_ramfs_fs+0x0/0x10 @ 1
[    0.127244] initcall init_ramfs_fs+0x0/0x10 returned 0 after 1 usecs
[    0.127252] calling  init_fat_fs+0x0/0x50 @ 1
[    0.127258] initcall init_fat_fs+0x0/0x50 returned 0 after 1 usecs
[    0.127266] calling  init_vfat_fs+0x0/0x10 @ 1
[    0.127273] initcall init_vfat_fs+0x0/0x10 returned 0 after 2 usecs
[    0.127282] calling  init_iso9660_fs+0x0/0x60 @ 1
[    0.127290] initcall init_iso9660_fs+0x0/0x60 returned 0 after 2 usecs
[    0.127298] calling  init_nls_cp437+0x0/0x10 @ 1
[    0.127304] initcall init_nls_cp437+0x0/0x10 returned 0 after 0 usecs
[    0.127313] calling  init_nls_cp1250+0x0/0x10 @ 1
[    0.127318] initcall init_nls_cp1250+0x0/0x10 returned 0 after 0 usecs
[    0.127327] calling  init_nls_ascii+0x0/0x10 @ 1
[    0.127332] initcall init_nls_ascii+0x0/0x10 returned 0 after 0 usecs
[    0.127341] calling  init_nls_iso8859_1+0x0/0x10 @ 1
[    0.127346] initcall init_nls_iso8859_1+0x0/0x10 returned 0 after 0 usecs
[    0.127355] calling  init_nls_utf8+0x0/0x30 @ 1
[    0.127361] initcall init_nls_utf8+0x0/0x30 returned 0 after 0 usecs
[    0.127369] calling  fuse_init+0x0/0x130 @ 1
[    0.127373] fuse init (API version 7.10)
[    0.127474] initcall fuse_init+0x0/0x130 returned 0 after 93 usecs
[    0.127486] calling  ipc_init+0x0/0x20 @ 1
[    0.127496] msgmni has been set to 1749
[    0.127508] initcall ipc_init+0x0/0x20 returned 0 after 16 usecs
[    0.127516] calling  ipc_sysctl_init+0x0/0x10 @ 1
[    0.127524] initcall ipc_sysctl_init+0x0/0x10 returned 0 after 1 usecs
[    0.127532] calling  init_mqueue_fs+0x0/0xb0 @ 1
[    0.127557] initcall init_mqueue_fs+0x0/0xb0 returned 0 after 18 usecs
[    0.127567] calling  crypto_algapi_init+0x0/0x10 @ 1
[    0.127575] initcall crypto_algapi_init+0x0/0x10 returned 0 after 2 usecs
[    0.127586] calling  chainiv_module_init+0x0/0x10 @ 1
[    0.127594] initcall chainiv_module_init+0x0/0x10 returned 0 after 1 
usecs
[    0.127603] calling  eseqiv_module_init+0x0/0x10 @ 1
[    0.127609] initcall eseqiv_module_init+0x0/0x10 returned 0 after 0 usecs
[    0.127618] calling  crypto_ecb_module_init+0x0/0x10 @ 1
[    0.127624] initcall crypto_ecb_module_init+0x0/0x10 returned 0 after 
0 usecs
[    0.127633] calling  aes_init+0x0/0x340 @ 1
[    0.127754] initcall aes_init+0x0/0x340 returned 0 after 110 usecs
[    0.127763] calling  arc4_init+0x0/0x10 @ 1
[    0.127863] initcall arc4_init+0x0/0x10 returned 0 after 91 usecs
[    0.127872] calling  krng_mod_init+0x0/0x10 @ 1
[    0.127893] alg: No test for stdrng (krng)
[    0.127905] initcall krng_mod_init+0x0/0x10 returned 0 after 26 usecs
[    0.127914] calling  proc_genhd_init+0x0/0x40 @ 1
[    0.127928] initcall proc_genhd_init+0x0/0x40 returned 0 after 8 usecs
[    0.127937] calling  noop_init+0x0/0x10 @ 1
[    0.127942] io scheduler noop registered
[    0.127947] initcall noop_init+0x0/0x10 returned 0 after 4 usecs
[    0.127955] calling  deadline_init+0x0/0x10 @ 1
[    0.127959] io scheduler deadline registered (default)
[    0.127965] initcall deadline_init+0x0/0x10 returned 0 after 3 usecs
[    0.127986] calling  pci_init+0x0/0x40 @ 1
[    0.128004] pci 0000:00:02.0: Boot video device
[    0.130840] initcall pci_init+0x0/0x40 returned 0 after 2777 usecs
[    0.130853] calling  pci_proc_init+0x0/0x70 @ 1
[    0.130923] initcall pci_proc_init+0x0/0x70 returned 0 after 61 usecs
[    0.130932] calling  pcie_portdrv_init+0x0/0x50 @ 1
[    0.131050] pcieport-driver 0000:00:1c.0: setting latency timer to 64
[    0.131091] pcieport-driver 0000:00:1c.0: found MSI capability
[    0.131123] pcieport-driver 0000:00:1c.0: irq 287 for MSI/MSI-X
[    0.131139] pci_express 0000:00:1c.0:pcie00: allocate port service
[    0.131203] pci_express 0000:00:1c.0:pcie02: allocate port service
[    0.131256] pci_express 0000:00:1c.0:pcie03: allocate port service
[    0.131362] pcieport-driver 0000:00:1c.1: setting latency timer to 64
[    0.131399] pcieport-driver 0000:00:1c.1: found MSI capability
[    0.131425] pcieport-driver 0000:00:1c.1: irq 286 for MSI/MSI-X
[    0.131439] pci_express 0000:00:1c.1:pcie00: allocate port service
[    0.131496] pci_express 0000:00:1c.1:pcie02: allocate port service
[    0.131549] pci_express 0000:00:1c.1:pcie03: allocate port service
[    0.131652] pcieport-driver 0000:00:1c.2: setting latency timer to 64
[    0.131690] pcieport-driver 0000:00:1c.2: found MSI capability
[    0.131717] pcieport-driver 0000:00:1c.2: irq 285 for MSI/MSI-X
[    0.131731] pci_express 0000:00:1c.2:pcie00: allocate port service
[    0.131787] pci_express 0000:00:1c.2:pcie02: allocate port service
[    0.131843] pci_express 0000:00:1c.2:pcie03: allocate port service
[    0.132016] initcall pcie_portdrv_init+0x0/0x50 returned 0 after 1048 
usecs
[    0.132028] calling  aer_service_init+0x0/0x20 @ 1
[    0.132083] initcall aer_service_init+0x0/0x20 returned 0 after 47 usecs
[    0.132094] calling  fb_console_init+0x0/0x130 @ 1
[    0.132166] initcall fb_console_init+0x0/0x130 returned 0 after 62 usecs
[    0.132177] calling  display_class_init+0x0/0x70 @ 1
[    0.132228] initcall display_class_init+0x0/0x70 returned 0 after 42 
usecs
[    0.132239] calling  vesafb_init+0x0/0x1fb @ 1
[    0.132354] initcall vesafb_init+0x0/0x1fb returned 0 after 103 usecs
[    0.132364] calling  acpi_reserve_resources+0x0/0xc4 @ 1
[    0.132376] initcall acpi_reserve_resources+0x0/0xc4 returned 0 after 
6 usecs
[    0.132383] calling  acpi_ac_init+0x0/0x39 @ 1
[    0.132400] initcall acpi_ac_init+0x0/0x39 returned 0 after 12 usecs
[    0.132407] calling  acpi_battery_init+0x0/0x39 @ 1
[    0.132415] initcall acpi_battery_init+0x0/0x39 returned 0 after 2 usecs
[    0.132422] calling  acpi_button_init+0x0/0x4d @ 1
[    0.132429] initcall acpi_button_init+0x0/0x4d returned 0 after 2 usecs
[    0.132436] calling  acpi_fan_init+0x0/0x28 @ 1
[    0.132441] initcall acpi_fan_init+0x0/0x28 returned 0 after 0 usecs
[    0.132449] calling  irqrouter_init_sysfs+0x0/0x2d @ 1
[    0.132475] calling  5_acpi_bus_register_async+0x0/0x4b @ 160
[    0.132479] async_waiting @ 160
[    0.132482] async_continuing @ 160 after 0 usec
[    0.132652] calling  6_acpi_bus_register_async+0x0/0x4b @ 157
[    0.132657] async_waiting @ 157
[    0.132665] calling  7_acpi_bus_register_async+0x0/0x4b @ 154
[    0.132668] async_waiting @ 154
[    0.132675] calling  8_acpi_bus_register_async+0x0/0x4b @ 151
[    0.132679] async_waiting @ 151
[    0.132784] ACPI: AC Adapter [AC0] (on-line)
[    0.132875] initcall irqrouter_init_sysfs+0x0/0x2d returned 0 after 
408 usecs
[    0.132885] calling  acpi_processor_init+0x0/0x85 @ 1
[    0.132904] initcall acpi_processor_init+0x0/0x85 returned 0 after 13 
usecs
[    0.132912] calling  acpi_thermal_init+0x0/0x72 @ 1
[    0.132926] initcall acpi_thermal_init+0x0/0x72 returned 0 after 8 usecs
[    0.132938] calling  rand_initialize+0x0/0x30 @ 1
[    0.132991] initcall rand_initialize+0x0/0x30 returned 0 after 46 usecs
[    0.132998] calling  tty_init+0x0/0x110 @ 1
[    0.133077] calling  9_acpi_bus_register_async+0x0/0x4b @ 280
[    0.133081] async_waiting @ 280
[    0.133123] calling  10_acpi_bus_register_async+0x0/0x4b @ 281
[    0.133127] async_waiting @ 281
[    0.133146] initcall 5_acpi_bus_register_async+0x0/0x4b returned 0 
after 647 usecs
[    0.133157] async_continuing @ 157 after 484 usec
[    0.134644] ACPI: EC: non-query interrupt received, switching to 
interrupt mode
[    0.139017] initcall tty_init+0x0/0x110 returned 0 after 5867 usecs
[    0.139030] calling  pty_init+0x0/0x290 @ 1
[    0.139134] initcall pty_init+0x0/0x290 returned 0 after 95 usecs
[    0.139177] calling  sysrq_init+0x0/0x30 @ 1
[    0.139218] initcall sysrq_init+0x0/0x30 returned 0 after 21 usecs
[    0.139225] calling  hpet_init+0x0/0x60 @ 1
[    0.139318] initcall hpet_init+0x0/0x60 returned 0 after 84 usecs
[    0.139327] calling  nvram_init+0x0/0x80 @ 1
[    0.139372] calling  11_acpi_bus_register_async+0x0/0x4b @ 160
[    0.139376] async_waiting @ 160
[    0.139424] Non-volatile memory driver v1.2
[    0.139431] initcall nvram_init+0x0/0x80 returned 0 after 95 usecs
[    0.139440] calling  agp_init+0x0/0x30 @ 1
[    0.139444] Linux agpgart interface v0.103
[    0.139449] initcall agp_init+0x0/0x30 returned 0 after 3 usecs
[    0.139456] calling  agp_intel_init+0x0/0x30 @ 1
[    0.139487] agpgart-intel 0000:00:00.0: Intel 915GM Chipset
[    0.139787] agpgart-intel 0000:00:00.0: detected 7932K stolen memory
[    0.143481] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
[    0.143555] initcall agp_intel_init+0x0/0x30 returned 0 after 3994 usecs
[    0.143568] calling  drm_core_init+0x0/0x100 @ 1
[    0.143635] [drm] Initialized drm 1.1.0 20060810
[    0.143642] initcall drm_core_init+0x0/0x100 returned 0 after 66 usecs
[    0.143651] calling  i915_init+0x0/0x20 @ 1
[    0.143689] pci 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    0.143695] pci 0000:00:02.0: setting latency timer to 64
[    0.143772] [drm:i915_gem_detect_bit_6_swizzle] *ERROR* Couldn't read 
from MCHBAR.  Disabling tiling.
[    0.143996] [drm] Initialized i915 1.6.0 20080730 on minor 0
[    0.144037] initcall i915_init+0x0/0x20 returned 0 after 370 usecs
[    0.144047] calling  loop_init+0x0/0x1c0 @ 1
[    0.145278] loop: module loaded
[    0.145287] initcall loop_init+0x0/0x1c0 returned 0 after 1203 usecs
[    0.145299] calling  eeepc_laptop_init+0x0/0x1c0 @ 1
[    0.145313] initcall eeepc_laptop_init+0x0/0x1c0 returned -19 after 8 
usecs
[    0.145320] calling  atl2_init_module+0x0/0x50 @ 1
[    0.145325] Atheros(R) L2 Ethernet Driver - version 2.2.3
[    0.145328] Copyright (c) 2007 Atheros Corporation.
[    0.145363] atl2 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[    0.145375] atl2 0000:03:00.0: setting latency timer to 64
[    0.145468] calling  12_acpi_bus_register_async+0x0/0x4b @ 375
[    0.145472] async_waiting @ 375
[    0.215208] initcall atl2_init_module+0x0/0x50 returned 0 after 68239 
usecs
[    0.215222] calling  net_olddevs_init+0x0/0x90 @ 1
[    0.215236] initcall net_olddevs_init+0x0/0x90 returned 0 after 7 usecs
[    0.215244] calling  init_ath5k_pci+0x0/0x30 @ 1
[    0.215281] ath5k_pci 0000:01:00.0: PCI INT A -> GSI 18 (level, low) 
-> IRQ 18
[    0.215294] ath5k_pci 0000:01:00.0: setting latency timer to 64
[    0.215345] ath5k_pci 0000:01:00.0: registered as 'phy0'
[    0.255667] phy0: Selected rate control algorithm 'minstrel'
[    0.255925] ath5k phy0: Atheros AR2425 chip found (MAC: 0xe2, PHY: 0x70)
[    0.255999] initcall init_ath5k_pci+0x0/0x30 returned 0 after 39788 usecs
[    0.256012] calling  videodev_init+0x0/0x90 @ 1
[    0.256016] Linux video capture interface: v2.00
[    0.256071] initcall videodev_init+0x0/0x90 returned 0 after 51 usecs
[    0.256080] calling  uvc_init+0x0/0x90 @ 1
[    0.256346] usbcore: registered new interface driver uvcvideo
[    0.256353] USB Video Class driver (v0.1.0)
[    0.256359] initcall uvc_init+0x0/0x90 returned 0 after 267 usecs
[    0.256368] calling  init_sd+0x0/0xa0 @ 1
[    0.256423] Driver 'sd' needs updating - please use bus_type methods
[    0.256471] initcall init_sd+0x0/0xa0 returned 0 after 94 usecs
[    0.256479] calling  piix_init+0x0/0x30 @ 1
[    0.256508] ata_piix 0000:00:1f.2: version 2.12
[    0.256531] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) 
-> IRQ 19
[    0.256537] ata_piix 0000:00:1f.2: MAP [ P0 P2 IDE IDE ]
[    0.256600] ata_piix 0000:00:1f.2: setting latency timer to 64
[    0.256674] scsi0 : ata_piix
[    0.256849] scsi1 : ata_piix
[    0.260209] ata1: SATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xffa0 
irq 14
[    0.260217] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xffa8 
irq 15
[    0.260231] async_waiting @ 1
[    0.260279] calling  13_async_port_probe+0x0/0x80 @ 395
[    0.447870] initcall 13_async_port_probe+0x0/0x80 returned 0 after 
183184 usecs
[    0.447888] calling  14_async_port_probe+0x0/0x80 @ 395
[    0.448011] async_continuing @ 375 after 295444 usec
[    0.448050] eeepc: Eee PC Hotkey Driver
[    0.448255] eeepc: Hotkey init flags 0x41
[    0.449483] eeepc: Get control methods supported: 0x101711
[    0.449582] async_continuing @ 160 after 302931 usec
[    0.449621] async_continuing @ 281 after 309072 usec
[    0.449816] async_continuing @ 154 after 309710 usec
[    0.449947] async_continuing @ 151 after 309828 usec
[    0.449980] async_continuing @ 280 after 309468 usec
[    0.450056] input: Asus EeePC extra buttons as 
/devices/virtual/input/input0
[    0.450100] initcall 11_acpi_bus_register_async+0x0/0x4b returned 0 
after 303433 usecs
[    0.450504] input: Power Button (FF) as 
/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
[    0.450532] initcall 8_acpi_bus_register_async+0x0/0x4b returned 0 
after 310398 usecs
[    0.452163] initcall 12_acpi_bus_register_async+0x0/0x4b returned 0 
after 299496 usecs
[    0.452194] ACPI: Power Button (FF) [PWRF]
[    0.452998] input: Lid Switch as 
/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input2
[    0.453055] ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3])
[    0.453136] processor ACPI_CPU:00: registered as cooling_device0
[    0.453145] ACPI: Processor [CPU1] (supports 8 throttling states)
[    0.453224] initcall 9_acpi_bus_register_async+0x0/0x4b returned 0 
after 312634 usecs
[    0.458702] thermal LNXTHERM:01: registered as thermal_zone0
[    0.465844] ACPI: Lid Switch [LID]
[    0.465995] input: Sleep Button (CM) as 
/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input3
[    0.466020] ACPI: Sleep Button (CM) [SLPB]
[    0.466139] input: Power Button (CM) as 
/devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input4
[    0.466164] ACPI: Power Button (CM) [PWRB]
[    0.466217] initcall 7_acpi_bus_register_async+0x0/0x4b returned 0 
after 325724 usecs
[    0.498770] ACPI: Battery Slot [BAT0] (battery present)
[    0.499161] initcall 6_acpi_bus_register_async+0x0/0x4b returned 0 
after 357908 usecs
[    0.509372] ACPI: Thermal Zone [TZ00] (54 C)
[    0.509455] initcall 10_acpi_bus_register_async+0x0/0x4b returned 0 
after 367503 usecs
[    0.589924] Switched to high resolution mode on CPU 0
[    0.596364] ata2.00: ATA-5: ASUS-PHISON OB SSD, TST2.04P, max UDMA/66
[    0.596369] ata2.00: 7880544 sectors, multi 0: LBA
[    0.596442] ata2.01: ATA-5: ASUS-PHISON SSD, TST2.04P, max UDMA/66
[    0.596447] ata2.01: 31522176 sectors, multi 0: LBA
[    0.599341] ata2.00: configured for UDMA/66
[    0.602333] ata2.01: configured for UDMA/66
[    0.602350] initcall 14_async_port_probe+0x0/0x80 returned 0 after 
150833 usecs
[    0.602358] async_continuing @ 1 after 334105 usec
[    0.602508] scsi 1:0:0:0: Direct-Access     ATA      ASUS-PHISON OB S 
TST2 PQ: 0 ANSI: 5
[    0.602727] calling  15_sd_probe_async+0x0/0x250 @ 395
[    0.602938] scsi 1:0:1:0: Direct-Access     ATA      ASUS-PHISON SSD 
  TST2 PQ: 0 ANSI: 5
[    0.603060] sd 1:0:0:0: [sda] 7880544 512-byte hardware sectors: 
(4.03 GB/3.75 GiB)
[    0.603084] sd 1:0:0:0: [sda] Write Protect is off
[    0.603089] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    0.603123] sd 1:0:0:0: [sda] Write cache: disabled, read cache: 
enabled, doesn't support DPO or FUA
[    0.603226] sd 1:0:0:0: [sda] 7880544 512-byte hardware sectors: 
(4.03 GB/3.75 GiB)
[    0.603246] sd 1:0:0:0: [sda] Write Protect is off
[    0.603250] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    0.603281] sd 1:0:0:0: [sda] Write cache: disabled, read cache: 
enabled, doesn't support DPO or FUA
[    0.603287]  sda:calling  16_sd_probe_async+0x0/0x250 @ 375
[    0.603731] initcall piix_init+0x0/0x30 returned 0 after 339104 usecs
[    0.603748] calling  ehci_hcd_init+0x0/0x80 @ 1
[    0.603752] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.603798] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) 
-> IRQ 23
[    0.603828] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[    0.603833] ehci_hcd 0000:00:1d.7: EHCI Host Controller
[    0.603940] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned 
bus number 1
[    0.607880] ehci_hcd 0000:00:1d.7: debug port 1
[    0.607889] ehci_hcd 0000:00:1d.7: cache line size of 32 is not supported
[    0.607909] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xf7eb7c00
[    0.611841] sd 1:0:1:0: [sdb] 31522176 512-byte hardware sectors: 
(16.1 GB/15.0 GiB)
[    0.611864] sd 1:0:1:0: [sdb] Write Protect is off
[    0.611868] sd 1:0:1:0: [sdb] Mode Sense: 00 3a 00 00
[    0.611901] sd 1:0:1:0: [sdb] Write cache: disabled, read cache: 
enabled, doesn't support DPO or FUA
[    0.611999] sd 1:0:1:0: [sdb] 31522176 512-byte hardware sectors: 
(16.1 GB/15.0 GiB)
[    0.612029] sd 1:0:1:0: [sdb] Write Protect is off
[    0.612033] sd 1:0:1:0: [sdb] Mode Sense: 00 3a 00 00
[    0.612065] sd 1:0:1:0: [sdb] Write cache: disabled, read cache: 
enabled, doesn't support DPO or FUA
[    0.612070]  sdb: sda1 sda2 sda3 sda4
[    0.612572] sd 1:0:0:0: [sda] Attached SCSI disk
[    0.612584] initcall 15_sd_probe_async+0x0/0x250 returned 0 after 
9614 usecs
[    0.613427]  sdb1 sdb2
[    0.613695] sd 1:0:1:0: [sdb] Attached SCSI disk
[    0.613705] initcall 16_sd_probe_async+0x0/0x250 returned 0 after 
9905 usecs
[    0.617014] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[    0.617188] usb usb1: configuration #1 chosen from 1 choice
[    0.617278] hub 1-0:1.0: USB hub found
[    0.617294] hub 1-0:1.0: 8 ports detected
[    0.617567] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    0.617572] usb usb1: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.617578] usb usb1: Product: EHCI Host Controller
[    0.617582] usb usb1: Manufacturer: Linux 2.6.28-00001-g55bd644-dirty 
ehci_hcd
[    0.617586] usb usb1: SerialNumber: 0000:00:1d.7
[    0.617646] initcall ehci_hcd_init+0x0/0x80 returned 0 after 13563 usecs
[    0.617658] calling  uhci_hcd_init+0x0/0xc0 @ 1
[    0.617662] uhci_hcd: USB Universal Host Controller Interface driver
[    0.617699] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) 
-> IRQ 23
[    0.617711] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[    0.617717] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[    0.617799] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned 
bus number 2
[    0.617831] uhci_hcd 0000:00:1d.0: irq 23, io base 0x0000e400
[    0.618024] usb usb2: configuration #1 chosen from 1 choice
[    0.618107] hub 2-0:1.0: USB hub found
[    0.618121] hub 2-0:1.0: 2 ports detected
[    0.618316] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[    0.618321] usb usb2: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.618326] usb usb2: Product: UHCI Host Controller
[    0.618330] usb usb2: Manufacturer: Linux 2.6.28-00001-g55bd644-dirty 
uhci_hcd
[    0.618334] usb usb2: SerialNumber: 0000:00:1d.0
[    0.618367] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) 
-> IRQ 19
[    0.618377] uhci_hcd 0000:00:1d.1: setting latency timer to 64
[    0.618382] uhci_hcd 0000:00:1d.1: UHCI Host Controller
[    0.618461] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned 
bus number 3
[    0.618500] uhci_hcd 0000:00:1d.1: irq 19, io base 0x0000e480
[    0.618670] usb usb3: configuration #1 chosen from 1 choice
[    0.618751] hub 3-0:1.0: USB hub found
[    0.618764] hub 3-0:1.0: 2 ports detected
[    0.618965] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
[    0.618970] usb usb3: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.618975] usb usb3: Product: UHCI Host Controller
[    0.618979] usb usb3: Manufacturer: Linux 2.6.28-00001-g55bd644-dirty 
uhci_hcd
[    0.618983] usb usb3: SerialNumber: 0000:00:1d.1
[    0.619025] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) 
-> IRQ 18
[    0.619036] uhci_hcd 0000:00:1d.2: setting latency timer to 64
[    0.619041] uhci_hcd 0000:00:1d.2: UHCI Host Controller
[    0.619117] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned 
bus number 4
[    0.619146] uhci_hcd 0000:00:1d.2: irq 18, io base 0x0000e800
[    0.619331] usb usb4: configuration #1 chosen from 1 choice
[    0.619413] hub 4-0:1.0: USB hub found
[    0.619424] hub 4-0:1.0: 2 ports detected
[    0.619625] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
[    0.619630] usb usb4: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.619635] usb usb4: Product: UHCI Host Controller
[    0.619639] usb usb4: Manufacturer: Linux 2.6.28-00001-g55bd644-dirty 
uhci_hcd
[    0.619643] usb usb4: SerialNumber: 0000:00:1d.2
[    0.619677] uhci_hcd 0000:00:1d.3: PCI INT D -> GSI 16 (level, low) 
-> IRQ 16
[    0.619687] uhci_hcd 0000:00:1d.3: setting latency timer to 64
[    0.619692] uhci_hcd 0000:00:1d.3: UHCI Host Controller
[    0.619766] uhci_hcd 0000:00:1d.3: new USB bus registered, assigned 
bus number 5
[    0.619802] uhci_hcd 0000:00:1d.3: irq 16, io base 0x0000e880
[    0.619984] usb usb5: configuration #1 chosen from 1 choice
[    0.620106] hub 5-0:1.0: USB hub found
[    0.620119] hub 5-0:1.0: 2 ports detected
[    0.620320] usb usb5: New USB device found, idVendor=1d6b, idProduct=0001
[    0.620325] usb usb5: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.620329] usb usb5: Product: UHCI Host Controller
[    0.620333] usb usb5: Manufacturer: Linux 2.6.28-00001-g55bd644-dirty 
uhci_hcd
[    0.620337] usb usb5: SerialNumber: 0000:00:1d.3
[    0.620407] initcall uhci_hcd_init+0x0/0xc0 returned 0 after 2672 usecs
[    0.620422] calling  usb_stor_init+0x0/0x40 @ 1
[    0.620425] Initializing USB Mass Storage driver...
[    0.620515] usbcore: registered new interface driver usb-storage
[    0.620522] USB Mass Storage support registered.
[    0.620528] initcall usb_stor_init+0x0/0x40 returned 0 after 98 usecs
[    0.620539] calling  i8042_init+0x0/0x420 @ 1
[    0.620704] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 
0x60,0x64 irq 1,12
[    0.652020] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.652028] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.652041] initcall i8042_init+0x0/0x420 returned 0 after 30755 usecs
[    0.652051] calling  mousedev_init+0x0/0x90 @ 1
[    0.652312] mice: PS/2 mouse device common for all mice
[    0.652320] initcall mousedev_init+0x0/0x90 returned 0 after 255 usecs
[    0.652329] calling  evdev_init+0x0/0x10 @ 1
[    0.652800] initcall evdev_init+0x0/0x10 returned 0 after 453 usecs
[    0.652810] calling  atkbd_init+0x0/0x20 @ 1
[    0.652870] initcall atkbd_init+0x0/0x20 returned 0 after 51 usecs
[    0.652879] calling  psmouse_init+0x0/0x70 @ 1
[    0.653659] initcall psmouse_init+0x0/0x70 returned 0 after 754 usecs
[    0.653668] calling  cmos_init+0x0/0x40 @ 1
[    0.653706] rtc_cmos 00:03: RTC can wake from S4
[    0.653802] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0
[    0.653832] rtc0: alarms up to one month, 114 bytes nvram, hpet irqs
[    0.653890] initcall cmos_init+0x0/0x40 returned 0 after 208 usecs
[    0.653900] calling  init_ladder+0x0/0x10 @ 1
[    0.654081] cpuidle: using governor ladder
[    0.654088] initcall init_ladder+0x0/0x10 returned 0 after 178 usecs
[    0.654097] calling  init_menu+0x0/0x10 @ 1
[    0.654410] cpuidle: using governor menu
[    0.654417] initcall init_menu+0x0/0x10 returned 0 after 306 usecs
[    0.654427] calling  init_soundcore+0x0/0x30 @ 1
[    0.654480] initcall init_soundcore+0x0/0x30 returned 0 after 45 usecs
[    0.654489] calling  alsa_sound_init+0x0/0x80 @ 1
[    0.654514] Advanced Linux Sound Architecture Driver Version 1.0.18rc3.
[    0.654520] initcall alsa_sound_init+0x0/0x80 returned 0 after 24 usecs
[    0.654528] calling  alsa_timer_init+0x0/0x160 @ 1
[    0.654621] initcall alsa_timer_init+0x0/0x160 returned 0 after 84 usecs
[    0.654631] calling  alsa_pcm_init+0x0/0x60 @ 1
[    0.654639] initcall alsa_pcm_init+0x0/0x60 returned 0 after 2 usecs
[    0.654647] calling  snd_mem_init+0x0/0x30 @ 1
[    0.654657] initcall snd_mem_init+0x0/0x30 returned 0 after 3 usecs
[    0.654665] calling  alsa_card_azx_init+0x0/0x20 @ 1
[    0.654708] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 16 (level, low) 
-> IRQ 16
[    0.654748] HDA Intel 0000:00:1b.0: setting latency timer to 64
[    0.656056] Marking TSC unstable due to TSC halts in idle
[    0.656780] input: AT Translated Set 2 keyboard as 
/devices/platform/i8042/serio0/input/input5
[    0.661942] hda_codec: Unknown model for ALC662, trying auto-probe 
from BIOS...
[    0.686794] initcall alsa_card_azx_init+0x0/0x20 returned 0 after 
31364 usecs
[    0.686810] calling  alsa_sound_last_init+0x0/0x70 @ 1
[    0.686814] ALSA device list:
[    0.686817]   #0: HDA Intel at 0xf7eb8000 irq 16
[    0.686824] initcall alsa_sound_last_init+0x0/0x70 returned 0 after 6 
usecs
[    0.686833] calling  sysctl_core_init+0x0/0x20 @ 1
[    0.686856] initcall sysctl_core_init+0x0/0x20 returned 0 after 16 usecs
[    0.686864] calling  sysctl_ipv4_init+0x0/0x40 @ 1
[    0.686882] initcall sysctl_ipv4_init+0x0/0x40 returned 0 after 11 usecs
[    0.686888] calling  inet_diag_init+0x0/0x70 @ 1
[    0.686903] initcall inet_diag_init+0x0/0x70 returned 0 after 8 usecs
[    0.686909] calling  tcp_diag_init+0x0/0x10 @ 1
[    0.686915] initcall tcp_diag_init+0x0/0x10 returned 0 after 1 usecs
[    0.686922] calling  cubictcp_register+0x0/0xb0 @ 1
[    0.686927] TCP cubic registered
[    0.686932] initcall cubictcp_register+0x0/0xb0 returned 0 after 4 usecs
[    0.686939] calling  packet_init+0x0/0x40 @ 1
[    0.686944] NET: Registered protocol family 17
[    0.686958] initcall packet_init+0x0/0x40 returned 0 after 14 usecs
[    0.686965] calling  rfkill_handler_init+0x0/0x40 @ 1
[    0.687028] initcall rfkill_handler_init+0x0/0x40 returned 0 after 54 
usecs
[    0.687040] calling  hpet_insert_resource+0x0/0x20 @ 1
[    0.687047] initcall hpet_insert_resource+0x0/0x20 returned 1 after 0 
usecs
[    0.687056] initcall hpet_insert_resource+0x0/0x20 returned with 
error code 1
[    0.687062] calling  lapic_insert_resource+0x0/0x40 @ 1
[    0.687074] initcall lapic_insert_resource+0x0/0x40 returned 0 after 
5 usecs
[    0.687083] calling  init_lapic_nmi_sysfs+0x0/0x40 @ 1
[    0.687091] initcall init_lapic_nmi_sysfs+0x0/0x40 returned 0 after 0 
usecs
[    0.687099] calling  ioapic_insert_resources+0x0/0x60 @ 1
[    0.687107] initcall ioapic_insert_resources+0x0/0x60 returned 0 
after 1 usecs
[    0.687116] calling  io_apic_bug_finalize+0x0/0x20 @ 1
[    0.687123] initcall io_apic_bug_finalize+0x0/0x20 returned 0 after 0 
usecs
[    0.687132] calling  check_early_ioremap_leak+0x0/0x70 @ 1
[    0.687140] initcall check_early_ioremap_leak+0x0/0x70 returned 0 
after 1 usecs
[    0.687149] calling  print_ipi_mode+0x0/0x30 @ 1
[    0.687153] Using IPI Shortcut mode
[    0.687159] initcall print_ipi_mode+0x0/0x30 returned 0 after 3 usecs
[    0.687169] calling  init_oops_id+0x0/0x20 @ 1
[    0.687188] initcall init_oops_id+0x0/0x20 returned 0 after 13 usecs
[    0.687196] calling  disable_boot_consoles+0x0/0x50 @ 1
[    0.687204] initcall disable_boot_consoles+0x0/0x50 returned 0 after 
0 usecs
[    0.687213] calling  pm_qos_power_init+0x0/0x80 @ 1
[    0.687431] initcall pm_qos_power_init+0x0/0x80 returned 0 after 206 
usecs
[    0.687443] calling  random32_reseed+0x0/0x60 @ 1
[    0.687463] initcall random32_reseed+0x0/0x60 returned 0 after 13 usecs
[    0.687473] calling  pci_sysfs_init+0x0/0x50 @ 1
[    0.687606] initcall pci_sysfs_init+0x0/0x50 returned 0 after 123 usecs
[    0.687615] calling  acpi_wakeup_device_init+0x0/0x66 @ 1
[    0.687624] initcall acpi_wakeup_device_init+0x0/0x66 returned 0 
after 3 usecs
[    0.687634] calling  acpi_sleep_proc_init+0x0/0x2a @ 1
[    0.687645] initcall acpi_sleep_proc_init+0x0/0x2a returned 0 after 5 
usecs
[    0.687653] calling  seqgen_init+0x0/0x10 @ 1
[    0.687689] initcall seqgen_init+0x0/0x10 returned 0 after 29 usecs
[    0.687698] calling  scsi_complete_async_scans+0x0/0xd0 @ 1
[    0.687705] initcall scsi_complete_async_scans+0x0/0xd0 returned 0 
after 1 usecs
[    0.687714] calling  rtc_hctosys+0x0/0x190 @ 1
[    0.687747] rtc_cmos 00:03: setting system clock to 2009-01-04 
18:25:04 UTC (1231093504)
[    0.687754] initcall rtc_hctosys+0x0/0x190 returned 0 after 34 usecs
[    0.687763] calling  pci_mmcfg_late_insert_resources+0x0/0x150 @ 1
[    0.687786] initcall pci_mmcfg_late_insert_resources+0x0/0x150 
returned 0 after 15 usecs
[    0.687797] calling  tcp_congestion_default+0x0/0x10 @ 1
[    0.687805] initcall tcp_congestion_default+0x0/0x10 returned 0 after 
1 usecs
[    0.920083] usb 1-5: new high speed USB device using ehci_hcd and 
address 2
[    1.035410] usb 1-5: configuration #1 chosen from 1 choice
[    1.035659] scsi2 : SCSI emulation for USB Mass Storage devices
[    1.035903] usb-storage: device found at 2
[    1.035906] usb-storage: waiting for device to settle before scanning
[    1.036147] usb 1-5: New USB device found, idVendor=0951, idProduct=1606
[    1.036153] usb 1-5: New USB device strings: Mfr=1, Product=2, 
SerialNumber=4
[    1.036157] usb 1-5: Product: UB6225
[    1.036160] usb 1-5: Manufacturer: ENE
[    1.036163] usb 1-5: SerialNumber: 146030377350
[    1.080020] Clocksource tsc unstable (delta = -321716980 ns)
[    2.697478] input: ImPS/2 Logitech Wheel Mouse as 
/devices/platform/i8042/serio1/input/input6
[    2.710044] kjournald starting.  Commit interval 5 seconds
[    2.710059] EXT3-fs: mounted filesystem with ordered data mode.
[    2.710076] VFS: Mounted root (ext3 filesystem) readonly.
[    2.710119] async_waiting @ 1
[    2.710124] async_continuing @ 1 after 0 usec
[    2.710311] Freeing unused kernel memory: 276k freed
[    2.710380] Write protecting the kernel text: 2604k
[    2.710411] Write protecting the kernel read-only data: 704k
[    5.917853] EXT3 FS on sdb2, internal journal
[    6.035218] usb-storage: device scan complete
[    6.035675] scsi 2:0:0:0: Direct-Access     USB2.0   CardReader SD0 
  0100 PQ: 0 ANSI: 0
[    6.042393] calling  17_sd_probe_async+0x0/0x250 @ 1436
[    6.555027] sd 2:0:0:0: [sdc] 15661056 512-byte hardware sectors: 
(8.01 GB/7.46 GiB)
[    6.555507] sd 2:0:0:0: [sdc] Write Protect is on
[    6.555512] sd 2:0:0:0: [sdc] Mode Sense: 03 00 80 00
[    6.555516] sd 2:0:0:0: [sdc] Assuming drive cache: write through
[    6.557135] sd 2:0:0:0: [sdc] 15661056 512-byte hardware sectors: 
(8.01 GB/7.46 GiB)
[    6.557653] sd 2:0:0:0: [sdc] Write Protect is on
[    6.557658] sd 2:0:0:0: [sdc] Mode Sense: 03 00 80 00
[    6.557663] sd 2:0:0:0: [sdc] Assuming drive cache: write through
[    6.557746]  sdc: sdc1 sdc2
[    6.560603] sd 2:0:0:0: [sdc] Attached SCSI removable disk
[    6.560618] initcall 17_sd_probe_async+0x0/0x250 returned 0 after 
506065 usecs
[   10.967884] warning: `avahi-daemon' uses 32-bit capabilities (legacy 
support in use)
[   12.242904] atl2 0000:03:00.0: irq 284 for MSI/MSI-X
[   35.712381] kjournald starting.  Commit interval 5 seconds
[   35.712412] EXT3-fs: mounted filesystem with ordered data mode.
[   40.411827] wlan0: authenticate with AP 00:0f:b5:cc:c9:36
[   40.413427] wlan0: authenticated
[   40.413437] wlan0: associate with AP 00:0f:b5:cc:c9:36
[   40.415763] wlan0: RX AssocResp from 00:0f:b5:cc:c9:36 (capab=0x431 
status=0 aid=2)
[   40.415770] wlan0: associated

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot
  2009-01-04 17:28 ` [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot Arjan van de Ven
  2009-01-04 18:33   ` Linus Torvalds
@ 2009-01-04 19:05   ` Andi Kleen
  2009-01-04 19:09     ` Arjan van de Ven
  1 sibling, 1 reply; 42+ messages in thread
From: Andi Kleen @ 2009-01-04 19:05 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: linux-kernel, torvalds, mingo, fweisbec, linux-scsi, linux-ide,
	linux-acpi, akpm

Arjan van de Ven <arjan@infradead.org> writes:
> +static int async_manager_thread(void *unused)
> +{
> +	int max_threads;
> +	DECLARE_WAITQUEUE(wq, current);
> +	add_wait_queue(&async_new, &wq);
> +
> +	while (!kthread_should_stop()) {
> +		int tc, ec;
> +
> +		/*
> +		 * Maximum number of worker threads.
> +		 * Even on the smallest machine we want 8
> +		 * Scaling by 4 per logical CPU
> +		 * But no more than 256 to not overload stuff too much
> +		 * (and yes these are magic numbers that might need tuning)
> +		 * Calculated dynamic because early on the nr of online cpus
> +		 * is 1...
> +		 */
> +		max_threads = 4 + 4 * num_online_cpus();
> +		if (max_threads > 256)
> +			max_threads = 256;
> +
> +
> +		set_current_state(TASK_INTERRUPTIBLE);
> +
> +		tc = atomic_read(&thread_count);
> +		rmb();
> +		ec = atomic_read(&entry_count);
> +
> +		while (tc < ec && tc < max_threads) {
> +			kthread_run(async_thread, NULL, "async/%i", tc);
> +			atomic_inc(&thread_count);
> +			tc++;
> +		}
> +
> +		schedule();

Surely the thread should die again boot up? On module load
synchronisity is usually not a problem.

Personally I think it would be better to make this more generic.
Various subsystems have thread pool implementations now, and this
is just another variant that except for the sequence stuff
isn't all that much different. So it would be better to have 
a generic worker thread manager that just supports these
barriers too.

-andi

-- 
ak@linux.intel.com

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 18:54     ` Linus Torvalds
@ 2009-01-04 19:05       ` Arjan van de Ven
  2009-01-04 19:11         ` Linus Torvalds
  2009-01-05 16:21         ` Alan Cox
  2009-01-04 19:11       ` Andi Kleen
  1 sibling, 2 replies; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 19:05 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: linux-kernel, mingo, fweisbec, linux-scsi, linux-ide, linux-acpi,
	akpm

On Sun, 4 Jan 2009 10:54:15 -0800 (PST)
Linus Torvalds <torvalds@linux-foundation.org> wrote:
> 
> Since it seems to be the irq auto-probing, then doing it
> asynchronously won't help. Not only will it happen only for ports
> that you actually have (rather than the number you have configured),
> but even if you actually have multiple physical ports, the irq
> autoprobing is all serialized (and has to be - it depends on).
> 
> It's serialized by the 'probing_active' mutex.
> 
> In fact, I suspect we should entirely disallow asynchronous irq
> probing, because while the probing itself is serialized wrt _other_
> autoprobing, it's not necessarily safe wrt other drivers allocating
> interrupts in a non-probing manner.
> 
> So not only should we not bother to do irq autoprobing asynchronously 
> (because it won't help), we also probably should make sure that there
> is no other driver doing any asynchronous "request_irq()" _while_ we
> probe. IOW, we should consider the "request_irq()" to be a globally
> ordered event, like requesting a major/minor number or registering a
> driver.

well.
or we declare the irq probing stuff "rare" and just make THAT fully
serializing....
do a full synchronization before starting a probe 
(at that point no new async stuff can show up if it wouldn't show up
already right now), and be done with it.

> > > Does this patch make any difference to you? I'm not at all sure
> > > that it's the irq probing, but if it is, then this should make
> > > the serial probe go much faster.
> > 
> > it turned it into a 25 msec deal .. pretty good improvement in my
> > book.
> 
> Ok, that certainly makes it a non-issue. It's a scary change in the
> sense that it's touching code that we _never_ touch, and it's magic
> irq autoprobing stuff, but at the same time, 0.1 seconds for testing
> whether some spurious irq happens is a pretty ridiculous cost.
> Especially since we're only talking legacy ISA interrupts anyway. If
> we have screaming interrupts, they'll happen immediately, not after a
> tenth of a second.
> 
> That said, I also wonder if we really even need to autoprobe the 
> interrupts on any modern hardware. Rather than trying to speed up irq 
> probing, maybe we could figure it out some other way.. The only thing
> that matters on 99% of all machines are the one or two standard ports
> that normally show up on 2f8h/irq3 and 3f8h/irq4 or something like
> that. 

too bad this stuff isn't PCI enumerated.
but if someone really still maintains this code, it could probably be
rewritten in a "we think it's likely irq 3. how about we test that. Oh
no? then we do expensive probing" kind of way.

Right now I don't think I have time for it (this is going to take time..
there's so many weird things with serial ports that it's bound to break
stuff in the beginning etc)


-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot
  2009-01-04 19:05   ` Andi Kleen
@ 2009-01-04 19:09     ` Arjan van de Ven
  2009-01-04 19:49       ` Andi Kleen
  0 siblings, 1 reply; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 19:09 UTC (permalink / raw)
  To: Andi Kleen
  Cc: linux-kernel, torvalds, mingo, fweisbec, linux-scsi, linux-ide,
	linux-acpi, akpm

On Sun, 04 Jan 2009 20:05:26 +0100
Andi Kleen <andi@firstfloor.org> wrote:

> Surely the thread should die again boot up? On module load
> synchronisity is usually not a problem.

sadly that's not correct in practice based on the fast boot work we've
done.

> 
> Personally I think it would be better to make this more generic.
> Various subsystems have thread pool implementations now, 

sort of kinda. If a good one appears I'd be happy to build on top of
that, assuming it's generic enough.

> and this
> is just another variant that except for the sequence stuff
> isn't all that much different. So it would be better to have 
> a generic worker thread manager that just supports these
> barriers too.

... or maybe think about seeing this system as exactly that thread
manager?


-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 18:54     ` Linus Torvalds
  2009-01-04 19:05       ` Arjan van de Ven
@ 2009-01-04 19:11       ` Andi Kleen
  2009-01-04 19:46         ` Robert Hancock
  1 sibling, 1 reply; 42+ messages in thread
From: Andi Kleen @ 2009-01-04 19:11 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Arjan van de Ven, linux-kernel, mingo, fweisbec, linux-scsi,
	linux-ide, linux-acpi, akpm

Linus Torvalds <torvalds@linux-foundation.org> writes:

> That said, I also wonder if we really even need to autoprobe the 
> interrupts on any modern hardware. Rather than trying to speed up irq 
> probing, maybe we could figure it out some other way..

You'll hate that suggestion, but i8250_pnp should already discover
it fine via ACPI on modern systems. ia64 has done it this way 
forever. 

It probably won't work on really old system, but one could always
use DMI year to distingush (not pretty, but works usually)

-Andi

-- 
ak@linux.intel.com

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 19:05       ` Arjan van de Ven
@ 2009-01-04 19:11         ` Linus Torvalds
  2009-01-04 19:19           ` Arjan van de Ven
  2009-01-05 16:21         ` Alan Cox
  1 sibling, 1 reply; 42+ messages in thread
From: Linus Torvalds @ 2009-01-04 19:11 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: linux-kernel, mingo, fweisbec, linux-scsi, linux-ide, linux-acpi,
	akpm



On Sun, 4 Jan 2009, Arjan van de Ven wrote:
>
> or we declare the irq probing stuff "rare" and just make THAT fully
> serializing....
> do a full synchronization before starting a probe 

Yes. That's entirely possible. However, have you verified that if an async 
thread does a synchronization, it doesn't deadlock? 

> > That said, I also wonder if we really even need to autoprobe the 
> > interrupts on any modern hardware. Rather than trying to speed up irq 
> > probing, maybe we could figure it out some other way.. The only thing
> > that matters on 99% of all machines are the one or two standard ports
> > that normally show up on 2f8h/irq3 and 3f8h/irq4 or something like
> > that. 
> 
> too bad this stuff isn't PCI enumerated.
> but if someone really still maintains this code, it could probably be
> rewritten in a "we think it's likely irq 3. how about we test that. Oh
> no? then we do expensive probing" kind of way.
> 
> Right now I don't think I have time for it (this is going to take time..
> there's so many weird things with serial ports that it's bound to break
> stuff in the beginning etc)

Yeah. The problem is that that driver is used on such varied hardware. But 
we can probably pick it up from PnP/ACPI, and autoprobe only for things 
that don't get the info from there (either because they are not PC's, or 
becuase PnP/ACPI isn't configured in). 

This is one case where I wouldn't be afraid of PnP information, because we 
could easily choose to only trust it if it makes sense (ie "if it's the 
standard 2f8/irq3 thing, then you might as well trust PnP").

		Linus

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 19:11         ` Linus Torvalds
@ 2009-01-04 19:19           ` Arjan van de Ven
  0 siblings, 0 replies; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 19:19 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: linux-kernel, mingo, fweisbec, linux-scsi, linux-ide, linux-acpi,
	akpm

On Sun, 4 Jan 2009 11:11:53 -0800 (PST)
Linus Torvalds <torvalds@linux-foundation.org> wrote:

> 
> 
> On Sun, 4 Jan 2009, Arjan van de Ven wrote:
> >
> > or we declare the irq probing stuff "rare" and just make THAT fully
> > serializing....
> > do a full synchronization before starting a probe 
> 
> Yes. That's entirely possible. However, have you verified that if an
> async thread does a synchronization, it doesn't deadlock? 

an async thread can synchronize on its own cookie.
so yes if we make this a global serialize, we can't do irq autoprobing
in async context. If we can use PNP/etc for serial.. I don't think
that's a big deal.. nobody with sane hw would need to autoprobe ever.
 


-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 18:16 ` [PATCH 0/4] Fastboot revisited: Asynchronous function calls Linus Torvalds
  2009-01-04 18:31   ` Arjan van de Ven
@ 2009-01-04 19:27   ` Linus Torvalds
  2009-01-04 19:48     ` Arjan van de Ven
  2009-01-04 21:44   ` Alan Cox
  2009-01-11 13:14   ` Pavel Machek
  3 siblings, 1 reply; 42+ messages in thread
From: Linus Torvalds @ 2009-01-04 19:27 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: linux-kernel, mingo, fweisbec, linux-scsi, linux-ide, linux-acpi,
	akpm



On Sun, 4 Jan 2009, Linus Torvalds wrote:
> 
> Ok, so why does the serial port init take so long? That's a quarter of a 
> second for you, which is ridiculous.

Hmm. I also note that you don't seem to have the IDE probing configured in 
at all. It's not _that_ uncommon, afaik, and even if you have no devices 
behind it (or perhaps _especially_ if you have no devices behind it), the 
IDE probe is actually pretty expensive. Hmm?

Also, I'm looking at the AHCI vs Marvell thing, and the problem seems to 
be that you do that libata port scan like this:

        for (i = 0; i < host->n_ports; i++) {
                struct ata_port *ap = host->ports[i];

                async_schedule(async_port_probe, ap);
        }

	async_synchronize_full();
        /* probes are done, now scan each port's disk(s) */
        DPRINTK("host probe begin\n");
        for (i = 0; i < host->n_ports; i++) {
                struct ata_port *ap = host->ports[i];

                ata_scsi_scan_host(ap, 1);
        }

which means that there is a full serialization between each controller.

Wouldn't is be possible to move the "ata_scsi_scan_host(ap, 1);" _into_ 
the async_port_probe(), and just do a

	async_synchronize_cookie(cookie);

before it? Hmm?

And then not do any async_synchronize_full() at all, until much later. For 
example, we clearly do need that full synchronization before we try to 
mount the root filesystem, but we should have that particular 
synchronization regardless of any SATA issues.

I may be missing something obvious, of course. Maybe a simple cookie 
synchronization isn't sufficient for some reason (most likely reason: 
other SCSI drivers that don't do it).

			Linus

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 19:11       ` Andi Kleen
@ 2009-01-04 19:46         ` Robert Hancock
  0 siblings, 0 replies; 42+ messages in thread
From: Robert Hancock @ 2009-01-04 19:46 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Linus Torvalds, Arjan van de Ven, linux-kernel, mingo, fweisbec,
	linux-scsi, linux-ide, linux-acpi, akpm

Andi Kleen wrote:
> Linus Torvalds <torvalds@linux-foundation.org> writes:
> 
>> That said, I also wonder if we really even need to autoprobe the 
>> interrupts on any modern hardware. Rather than trying to speed up irq 
>> probing, maybe we could figure it out some other way..
> 
> You'll hate that suggestion, but i8250_pnp should already discover
> it fine via ACPI on modern systems. ia64 has done it this way 
> forever. 
> 
> It probably won't work on really old system, but one could always
> use DMI year to distingush (not pretty, but works usually)

Well, we should be able to tell where we got the port information from, 
if it's somewhere expected to be reliable like PCI configuration, ISAPnP 
or PnPACPI, or whether we're just probing magical ports and hoping to 
find something.

The only cases on x86 hardware where I would think probing would have to 
happen would be where the machine was too old to do either ISA Plug & 
Play or PnPACPI, or if you added in a non-PnP ISA modem or serial card.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 19:27   ` Linus Torvalds
@ 2009-01-04 19:48     ` Arjan van de Ven
  0 siblings, 0 replies; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-04 19:48 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: linux-kernel, mingo, fweisbec, linux-scsi, linux-ide, linux-acpi,
	akpm

On Sun, 4 Jan 2009 11:27:08 -0800 (PST)
Linus Torvalds <torvalds@linux-foundation.org> wrote:

> 
> 
> On Sun, 4 Jan 2009, Linus Torvalds wrote:
> > 
> > Ok, so why does the serial port init take so long? That's a quarter
> > of a second for you, which is ridiculous.
> 
> Hmm. I also note that you don't seem to have the IDE probing
> configured in at all. It's not _that_ uncommon, afaik, and even if
> you have no devices behind it (or perhaps _especially_ if you have no
> devices behind it), the IDE probe is actually pretty expensive. Hmm?

actually pretty much all PC distros no longer ship with CONFIG_IDE,
only libata.

And afaik the box that that bootchart came from only has SATA devices
and the bios is also configured as such.. so not even libata sees IDE
devices.

> Also, I'm looking at the AHCI vs Marvell thing, and the problem seems
> to be that you do that libata port scan like this:
> 
>         for (i = 0; i < host->n_ports; i++) {
>                 struct ata_port *ap = host->ports[i];
> 
>                 async_schedule(async_port_probe, ap);
>         }
> 
> 	async_synchronize_full();
>         /* probes are done, now scan each port's disk(s) */
>         DPRINTK("host probe begin\n");
>         for (i = 0; i < host->n_ports; i++) {
>                 struct ata_port *ap = host->ports[i];
> 
>                 ata_scsi_scan_host(ap, 1);
>         }
> 
> which means that there is a full serialization between each
> controller.

yeah in the current patch that is exactly the case.
I don't know the libata code enough to know if it's safe to do
otherwise. The code was structured such that it looked VERY deliberate
to do these two things in separate steps.

 
> Wouldn't is be possible to move the "ata_scsi_scan_host(ap, 1);"
> _into_ the async_port_probe(), and just do a
> 
> 	async_synchronize_cookie(cookie);
> 
> before it? Hmm?

I would think so but someone from the libata/scsi world needs to say
so.. I didn't want to break the world entirely yet. 

 
> And then not do any async_synchronize_full() at all, until much
> later. For example, we clearly do need that full synchronization
> before we try to mount the root filesystem, but we should have that

actually we should try to mount, and if we fail, then synchronize, and
try again. 
I need that capability for something else anyway 
(and have a patch to do this in general, I just need to dust it off and
see if it's still any good)

[in case you're curious: if you boot without initrd, and have a
touchpad, right now the kernel will wait for the touchpad probing to be
done explicitly before trying to mount the rootfs; on many laptops that
I have access to that touchpad probing can easily take 7 seconds. The
patch I have gets rid of that delay by just trying, for most cases
it'll just be there anyway]

> particular synchronization regardless of any SATA issues.

yeah likewise before freeing initmem... pretty much the same reason.
I'm not worried about that too much; at some point you just have to
serialize. no big deal.




-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot
  2009-01-04 19:09     ` Arjan van de Ven
@ 2009-01-04 19:49       ` Andi Kleen
  2009-01-04 19:52         ` Andrew Morton
  0 siblings, 1 reply; 42+ messages in thread
From: Andi Kleen @ 2009-01-04 19:49 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: Andi Kleen, linux-kernel, torvalds, mingo, fweisbec, linux-scsi,
	linux-ide, linux-acpi, akpm

On Sun, Jan 04, 2009 at 11:09:32AM -0800, Arjan van de Ven wrote:
> On Sun, 04 Jan 2009 20:05:26 +0100
> Andi Kleen <andi@firstfloor.org> wrote:
> 
> > Surely the thread should die again boot up? On module load
> > synchronisity is usually not a problem.
> 
> sadly that's not correct in practice based on the fast boot work we've
> done.

Hmm, but I'm not sure your current code is module safe, in particular 
against unloading again. You would likely need a barrier at the end
of module load at least.

> 
> > 
> > Personally I think it would be better to make this more generic.
> > Various subsystems have thread pool implementations now, 
> 
> sort of kinda. If a good one appears I'd be happy to build on top of
> that, assuming it's generic enough.

I think you can just create a separate barrier primitive which
will work independently of any special thread managers.

> 
> > and this
> > is just another variant that except for the sequence stuff
> > isn't all that much different. So it would be better to have 
> > a generic worker thread manager that just supports these
> > barriers too.
> 
> ... or maybe think about seeing this system as exactly that thread
> manager?

I'm not sure it's generic enough.

-Andi

-- 
ak@linux.intel.com

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot
  2009-01-04 19:49       ` Andi Kleen
@ 2009-01-04 19:52         ` Andrew Morton
  0 siblings, 0 replies; 42+ messages in thread
From: Andrew Morton @ 2009-01-04 19:52 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Arjan van de Ven, linux-kernel, torvalds, mingo, fweisbec,
	linux-scsi, linux-ide, linux-acpi

On Sun, 4 Jan 2009 20:49:46 +0100 Andi Kleen <andi@firstfloor.org> wrote:

> > 
> > > and this
> > > is just another variant that except for the sequence stuff
> > > isn't all that much different. So it would be better to have 
> > > a generic worker thread manager that just supports these
> > > barriers too.
> > 
> > ... or maybe think about seeing this system as exactly that thread
> > manager?
> 
> I'm not sure it's generic enough.

There's appreciable overlap with David Howells's "slow work" thread
pool thingy. If either of those was generic enough, the other would
go away.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 18:16 ` [PATCH 0/4] Fastboot revisited: Asynchronous function calls Linus Torvalds
  2009-01-04 18:31   ` Arjan van de Ven
  2009-01-04 19:27   ` Linus Torvalds
@ 2009-01-04 21:44   ` Alan Cox
  2009-01-11 13:14   ` Pavel Machek
  3 siblings, 0 replies; 42+ messages in thread
From: Alan Cox @ 2009-01-04 21:44 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Arjan van de Ven, linux-kernel, mingo, fweisbec, linux-scsi,
	linux-ide, linux-acpi, akpm

> I _think_ it's the irq auto-probing, but that's just a guess. The 8250 
> driver does some historical crud, like
> 
> 	probe_irq_off(probe_irq_on());
> 
> to get rid of any pending irq's, but that should be entirely pointless 
> these days. I bet that line basically goes back to pre-history, before we 
> made the auto-probing much stabler.

For non ISA boxes we shouldn't be - but this old code. The IRQ for the
built in ports is defined by convention, in the BIOS PnP tables or with
ACPI in the ACPI tables. So we shouldn't even be autoprobing the IRQ.

We *do* have to wait one transmission timeout or so to detect buggy uarts
but in theory that could be moved down into the open path.

Alan


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 4/4] fastboot: make ACPI bus drivers probe asynchronous
  2009-01-05  2:03   ` Zhao Yakui
@ 2009-01-05  1:58     ` Arjan van de Ven
  2009-01-05  2:51       ` Zhao Yakui
  0 siblings, 1 reply; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-05  1:58 UTC (permalink / raw)
  To: Zhao Yakui
  Cc: linux-kernel@vger.kernel.org, torvalds@linux-foundation.org,
	mingo@elte.hu, fweisbec@gmail.com, linux-scsi@vger.kernel.org,
	linux-ide@vger.kernel.org, linux-acpi@vger.kernel.org,
	akpm@linux-foundation.org

On Mon, 05 Jan 2009 10:03:12 +0800
Zhao Yakui <yakui.zhao@intel.com> wrote:

> On Sun, 2009-01-04 at 09:31 -0800, Arjan van de Ven wrote:
> > From 20af3efd07b775a27a997e3df1039e20ea18f62b Mon Sep 17 00:00:00
> > 2001 From: Arjan van de Ven <arjan@linux.intel.com>
> > Date: Sun, 4 Jan 2009 05:32:28 -0800
> > Subject: [PATCH] fastboot: make ACPI bus drivers probe asynchronous
> > 
> > the various ACPI bus drivers have non-overlapping devices and can
> > each be run asynchronous. Some of the ACPI drivers (especially the
> > battery one, but others as well) can take quite a long time to
> > probe.
> It seems that all the ACPI drivers are registered asynchronously after
> this change. 

they are registered asynchronously compared to the rest of the kernel,
but in strict original sequence compared to eachother.


> > +static void acpi_bus_register_async(void *data, async_cookie_t
> > cookie) +{
> > +	int ret;
> > +	struct acpi_driver *driver = data;
> > +	driver->drv.name = driver->name;
> > +	driver->drv.bus = &acpi_bus_type;
> > +	driver->drv.owner = driver->owner;
> > +
> > +	async_synchronize_cookie(cookie);
> > +
> > +	ret = driver_register(&driver->drv);
> > +	WARN_ON(ret != 0);
> > +}

because of the async_synchronize_cookie() call!

-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 4/4] fastboot: make ACPI bus drivers probe asynchronous
  2009-01-04 17:31 ` [PATCH 4/4] fastboot: make ACPI bus drivers probe asynchronous Arjan van de Ven
@ 2009-01-05  2:03   ` Zhao Yakui
  2009-01-05  1:58     ` Arjan van de Ven
  0 siblings, 1 reply; 42+ messages in thread
From: Zhao Yakui @ 2009-01-05  2:03 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: linux-kernel@vger.kernel.org, torvalds@linux-foundation.org,
	mingo@elte.hu, fweisbec@gmail.com, linux-scsi@vger.kernel.org,
	linux-ide@vger.kernel.org, linux-acpi@vger.kernel.org,
	akpm@linux-foundation.org

On Sun, 2009-01-04 at 09:31 -0800, Arjan van de Ven wrote:
> From 20af3efd07b775a27a997e3df1039e20ea18f62b Mon Sep 17 00:00:00 2001
> From: Arjan van de Ven <arjan@linux.intel.com>
> Date: Sun, 4 Jan 2009 05:32:28 -0800
> Subject: [PATCH] fastboot: make ACPI bus drivers probe asynchronous
> 
> the various ACPI bus drivers have non-overlapping devices and can
> each be run asynchronous. Some of the ACPI drivers (especially the
> battery one, but others as well) can take quite a long time to probe.
It seems that all the ACPI drivers are registered asynchronously after
this change. 
   But there exists some dependency between some ACPI device drivers. It
is not very reasonable that the device driver is loaded asynchronously
if there exists the dependency between some drivers. 

For example: 
   On some boxes the info of battery is related with Embedded
controller. The EC driver should be loaded completely before registering
battery driver.
   On some boxes there exist the devices of ACPI power resource. And the
device power state is transited by controlling power resource. In such
case the power resource device driver should be loaded completely before
transiting the device power state.


Best regards.

> 
> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
> ---
>  drivers/acpi/scan.c |   23 ++++++++++++++++-------
>  1 files changed, 16 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 39b7233..a9e542d 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -8,6 +8,7 @@
>  #include <linux/acpi.h>
>  #include <linux/signal.h>
>  #include <linux/kthread.h>
> +#include <linux/async.h>
>  
>  #include <acpi/acpi_drivers.h>
>  #include <acpi/acinterp.h>	/* for acpi_ex_eisa_id_to_string() */
> @@ -578,6 +579,19 @@ static int acpi_start_single_object(struct acpi_device *device)
>  	return result;
>  }
>  
> +static void acpi_bus_register_async(void *data, async_cookie_t cookie)
> +{
> +	int ret;
> +	struct acpi_driver *driver = data;
> +	driver->drv.name = driver->name;
> +	driver->drv.bus = &acpi_bus_type;
> +	driver->drv.owner = driver->owner;
> +
> +	async_synchronize_cookie(cookie);
> +
> +	ret = driver_register(&driver->drv);
> +	WARN_ON(ret != 0);
> +}
>  /**
>   * acpi_bus_register_driver - register a driver with the ACPI bus
>   * @driver: driver being registered
> @@ -588,16 +602,11 @@ static int acpi_start_single_object(struct acpi_device *device)
>   */
>  int acpi_bus_register_driver(struct acpi_driver *driver)
>  {
> -	int ret;
>  
>  	if (acpi_disabled)
>  		return -ENODEV;
> -	driver->drv.name = driver->name;
> -	driver->drv.bus = &acpi_bus_type;
> -	driver->drv.owner = driver->owner;
> -
> -	ret = driver_register(&driver->drv);
> -	return ret;
> +	async_schedule(acpi_bus_register_async, driver);
> +	return 0;
>  }
>  
>  EXPORT_SYMBOL(acpi_bus_register_driver);
> -- 
> 1.6.0.6
> 
> 


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 4/4] fastboot: make ACPI bus drivers probe asynchronous
  2009-01-05  2:51       ` Zhao Yakui
@ 2009-01-05  2:51         ` Arjan van de Ven
  2009-01-05  5:30           ` Zhao Yakui
  0 siblings, 1 reply; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-05  2:51 UTC (permalink / raw)
  To: Zhao Yakui
  Cc: linux-kernel@vger.kernel.org, torvalds@linux-foundation.org,
	mingo@elte.hu, fweisbec@gmail.com, linux-scsi@vger.kernel.org,
	linux-ide@vger.kernel.org, linux-acpi@vger.kernel.org,
	akpm@linux-foundation.org

On Mon, 05 Jan 2009 10:51:50 +0800
Zhao Yakui <yakui.zhao@intel.com> wrote:

> > because of the async_synchronize_cookie() call!
> After the async_synchronize_cookie is called, the register sequence
> will become strict. 
> But there exist multiple threads. It is possible that the function of
> acpi_bus_register_async is called on different threads. In such case
> the dependency can't be guaranteed. 

this is not correct.
when the async_synchronize_cookie() call returns, all previous
acpi_bus_register_async() calls have completed. So no older ones can be
running.

there also can be no newer ones, because newer ones will wait for the
current one to entirely complete before they will return from
acpi_bus_register_async()

so.. since all older ones are complete, and no new ones can happen..
the sequence is strictly followed.

-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 4/4] fastboot: make ACPI bus drivers probe asynchronous
  2009-01-05  1:58     ` Arjan van de Ven
@ 2009-01-05  2:51       ` Zhao Yakui
  2009-01-05  2:51         ` Arjan van de Ven
  0 siblings, 1 reply; 42+ messages in thread
From: Zhao Yakui @ 2009-01-05  2:51 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: linux-kernel@vger.kernel.org, torvalds@linux-foundation.org,
	mingo@elte.hu, fweisbec@gmail.com, linux-scsi@vger.kernel.org,
	linux-ide@vger.kernel.org, linux-acpi@vger.kernel.org,
	akpm@linux-foundation.org

On Sun, 2009-01-04 at 17:58 -0800, Arjan van de Ven wrote:
> On Mon, 05 Jan 2009 10:03:12 +0800
> Zhao Yakui <yakui.zhao@intel.com> wrote:
> 
> > On Sun, 2009-01-04 at 09:31 -0800, Arjan van de Ven wrote:
> > > From 20af3efd07b775a27a997e3df1039e20ea18f62b Mon Sep 17 00:00:00
> > > 2001 From: Arjan van de Ven <arjan@linux.intel.com>
> > > Date: Sun, 4 Jan 2009 05:32:28 -0800
> > > Subject: [PATCH] fastboot: make ACPI bus drivers probe asynchronous
> > > 
> > > the various ACPI bus drivers have non-overlapping devices and can
> > > each be run asynchronous. Some of the ACPI drivers (especially the
> > > battery one, but others as well) can take quite a long time to
> > > probe.
> > It seems that all the ACPI drivers are registered asynchronously after
> > this change. 
> 
> they are registered asynchronously compared to the rest of the kernel,
> but in strict original sequence compared to eachother.
> 
> 
> > > +static void acpi_bus_register_async(void *data, async_cookie_t
> > > cookie) +{
> > > +	int ret;
> > > +	struct acpi_driver *driver = data;
> > > +	driver->drv.name = driver->name;
> > > +	driver->drv.bus = &acpi_bus_type;
> > > +	driver->drv.owner = driver->owner;
> > > +
> > > +	async_synchronize_cookie(cookie);
> > > +
> > > +	ret = driver_register(&driver->drv);
> > > +	WARN_ON(ret != 0);
> > > +}
> 
> because of the async_synchronize_cookie() call!
After the async_synchronize_cookie is called, the register sequence will
become strict. 
But there exist multiple threads. It is possible that the function of
acpi_bus_register_async is called on different threads. In such case the
dependency can't be guaranteed. 

Thanks.
> 


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 4/4] fastboot: make ACPI bus drivers probe asynchronous
  2009-01-05  2:51         ` Arjan van de Ven
@ 2009-01-05  5:30           ` Zhao Yakui
  0 siblings, 0 replies; 42+ messages in thread
From: Zhao Yakui @ 2009-01-05  5:30 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: linux-kernel@vger.kernel.org, torvalds@linux-foundation.org,
	mingo@elte.hu, fweisbec@gmail.com, linux-scsi@vger.kernel.org,
	linux-ide@vger.kernel.org, linux-acpi@vger.kernel.org,
	akpm@linux-foundation.org

On Sun, 2009-01-04 at 18:51 -0800, Arjan van de Ven wrote:
> On Mon, 05 Jan 2009 10:51:50 +0800
> Zhao Yakui <yakui.zhao@intel.com> wrote:
> 
> > > because of the async_synchronize_cookie() call!
> > After the async_synchronize_cookie is called, the register sequence
> > will become strict. 
> > But there exist multiple threads. It is possible that the function of
> > acpi_bus_register_async is called on different threads. In such case
> > the dependency can't be guaranteed. 
> 
> this is not correct.
> when the async_synchronize_cookie() call returns, all previous
> acpi_bus_register_async() calls have completed. So no older ones can be
> running.
Thanks for the detailed explanation. Understand it.
But I still have another question about the function of
async_synchronize_cookie. I don't know whether my understanding is
correct or not.
The function of async_synchronize_cookie is realized by comparing the
variable of lowest_in_progress with the cookie. Only when the
lowest_in_process is greater than or equal to the cookie value, it will
return. When async_schedule is called, a new cookie will be assigned,
which can also be used as the second argument of
async_synchronize_cookie.

The value of lowest_in_progress is updated after calling the callback
function (async_func_ptr). But the async_synchronize_cookie is called in
the callback function (acpi_bus_register_async). 
In such case it seems that there exists the dead lock. The value of
lowest_in_progress should be updated before finishing the async callback
function. But the value of lowest_in_progress is updated after calling
the async callback function.


> 
> there also can be no newer ones, because newer ones will wait for the
> current one to entirely complete before they will return from
> acpi_bus_register_async()
> 
> so.. since all older ones are complete, and no new ones can happen..
> the sequence is strictly followed.
> 


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 17:24 [PATCH 0/4] Fastboot revisited: Asynchronous function calls Arjan van de Ven
                   ` (4 preceding siblings ...)
  2009-01-04 18:16 ` [PATCH 0/4] Fastboot revisited: Asynchronous function calls Linus Torvalds
@ 2009-01-05  6:01 ` Nigel Cunningham
  2009-01-05  8:47   ` Frederic Weisbecker
  2009-01-05 10:53   ` Arjan van de Ven
  5 siblings, 2 replies; 42+ messages in thread
From: Nigel Cunningham @ 2009-01-05  6:01 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: linux-kernel, torvalds, mingo, fweisbec, linux-scsi, linux-ide,
	linux-acpi, akpm

Hi Arjan.

Great work, and valuable too. I'm just wondering if the header file name
"async.h" is a little too generic? Something like async_init.h perhaps?

Regards,

Nigel

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-05  6:01 ` Nigel Cunningham
@ 2009-01-05  8:47   ` Frederic Weisbecker
  2009-01-05 10:53   ` Arjan van de Ven
  1 sibling, 0 replies; 42+ messages in thread
From: Frederic Weisbecker @ 2009-01-05  8:47 UTC (permalink / raw)
  To: Nigel Cunningham
  Cc: Arjan van de Ven, linux-kernel, torvalds, mingo, linux-scsi,
	linux-ide, linux-acpi, akpm

On Mon, Jan 05, 2009 at 05:01:34PM +1100, Nigel Cunningham wrote:
> Hi Arjan.
> 
> Great work, and valuable too. I'm just wondering if the header file name
> "async.h" is a little too generic? Something like async_init.h perhaps?
> 
> Regards,
> 
> Nigel
>

Hi Nigel,

That's what I thought too at first. But I guess there could be other
users of these async functions than the initcalls.
It looks like out of order workqueues that can synchronize themselves.
It seems a bit more costly than workqueues (since the concept comes along
a loop of creation/destroying of several threads) but more efficient for the
same reason as the number of active threads adapts to the number of CPU and jobs to perform.
The purpose is not the same. But I guess it's more reliable
than workqueues for pathes that require mutiple parallel jobs which need
to locally synchronize on critical pathes.


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-05  6:01 ` Nigel Cunningham
  2009-01-05  8:47   ` Frederic Weisbecker
@ 2009-01-05 10:53   ` Arjan van de Ven
  2009-01-05 11:18     ` Nigel Cunningham
  2009-01-07  2:41     ` Shaohua Li
  1 sibling, 2 replies; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-05 10:53 UTC (permalink / raw)
  To: ncunningham-lkml
  Cc: linux-kernel, torvalds, mingo, fweisbec, linux-scsi, linux-ide,
	linux-acpi, akpm

On Mon, 05 Jan 2009 17:01:34 +1100
Nigel Cunningham <ncunningham-lkml@crca.org.au> wrote:

> Hi Arjan.
> 
> Great work, and valuable too. I'm just wondering if the header file
> name "async.h" is a little too generic? Something like async_init.h
> perhaps?
> 

while the users I have in mind are during init, the concept and
infrastructure of asynchronous function calls is by no means limited to
that use case... I hope there are many other uses for this :)


-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-05 10:53   ` Arjan van de Ven
@ 2009-01-05 11:18     ` Nigel Cunningham
  2009-01-07  2:41     ` Shaohua Li
  1 sibling, 0 replies; 42+ messages in thread
From: Nigel Cunningham @ 2009-01-05 11:18 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: linux-kernel, torvalds, mingo, fweisbec, linux-scsi, linux-ide,
	linux-acpi, akpm

Hi.

On Mon, 2009-01-05 at 02:53 -0800, Arjan van de Ven wrote:
> On Mon, 05 Jan 2009 17:01:34 +1100
> Nigel Cunningham <ncunningham-lkml@crca.org.au> wrote:
> 
> > Hi Arjan.
> > 
> > Great work, and valuable too. I'm just wondering if the header file
> > name "async.h" is a little too generic? Something like async_init.h
> > perhaps?
> > 
> 
> while the users I have in mind are during init, the concept and
> infrastructure of asynchronous function calls is by no means limited to
> that use case... I hope there are many other uses for this :)

Okee doke. How about async_fn or something like that then? It's just
that there's async I/O and no doubt other async stuff I haven't thought
of. Still, it's a relatively minor point.

Night!

Nigel


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 19:05       ` Arjan van de Ven
  2009-01-04 19:11         ` Linus Torvalds
@ 2009-01-05 16:21         ` Alan Cox
  2009-01-05 21:13           ` Arjan van de Ven
  1 sibling, 1 reply; 42+ messages in thread
From: Alan Cox @ 2009-01-05 16:21 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: Linus Torvalds, linux-kernel, mingo, fweisbec, linux-scsi,
	linux-ide, linux-acpi, akpm

> Right now I don't think I have time for it (this is going to take time..
> there's so many weird things with serial ports that it's bound to break
> stuff in the beginning etc)

I can't duplicate this. Can you check you don't have

config SERIAL_8250_DETECT_IRQ
        bool "Autodetect IRQ on standard ports (unsafe)"
        depends on SERIAL_8250_EXTENDED
        help
          Say Y here if you want the kernel to try to guess which IRQ
          to use for your serial port.

          This is considered unsafe; it is far better to configure the
IRQ in a boot script using the setserial command.

          If unsure, say N.


enabled


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-05 16:21         ` Alan Cox
@ 2009-01-05 21:13           ` Arjan van de Ven
  2009-01-05 21:21             ` Linus Torvalds
  0 siblings, 1 reply; 42+ messages in thread
From: Arjan van de Ven @ 2009-01-05 21:13 UTC (permalink / raw)
  To: Alan Cox
  Cc: Linus Torvalds, linux-kernel, mingo, fweisbec, linux-scsi,
	linux-ide, linux-acpi, akpm

On Mon, 5 Jan 2009 16:21:25 +0000
Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:

> > Right now I don't think I have time for it (this is going to take
> > time.. there's so many weird things with serial ports that it's
> > bound to break stuff in the beginning etc)
> 
> I can't duplicate this. Can you check you don't have
> 
> config SERIAL_8250_DETECT_IRQ
>         bool "Autodetect IRQ on standard ports (unsafe)"
>         depends on SERIAL_8250_EXTENDED
>         help
>           Say Y here if you want the kernel to try to guess which IRQ
>           to use for your serial port.
> 
>           This is considered unsafe; it is far better to configure the
> IRQ in a boot script using the setserial command.
> 
>           If unsure, say N.
> 
> 
> enabled
> 
ok I had that enabled somehow....
retesting now


-- 
Arjan van de Ven 	Intel Open Source Technology Centre
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-05 21:13           ` Arjan van de Ven
@ 2009-01-05 21:21             ` Linus Torvalds
  0 siblings, 0 replies; 42+ messages in thread
From: Linus Torvalds @ 2009-01-05 21:21 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: Alan Cox, linux-kernel, mingo, fweisbec, linux-scsi, linux-ide,
	linux-acpi, akpm



On Mon, 5 Jan 2009, Arjan van de Ven wrote:
>
> ok I had that enabled somehow....

Well, it's not just "somehow".

It's the x86 def_config value, and it's also the default in at least the 
Fedora kernels.

Probably for a very good - although these days probably historical - 
reason: on older hardware, it really wasn't all that unusual to have the 
serial port at other interrupts.

And Alan may point to the help text, but that doesn't really matter since 
everybody clearly ignores it, and it's not what has been tested.

But yeah, we probably should disable it at least for modern machines. And 
even if it doesn't autodetect the irq, "setserial" hopefully still does 
work (and was always required for some machines anyway)

			Linus

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-05 10:53   ` Arjan van de Ven
  2009-01-05 11:18     ` Nigel Cunningham
@ 2009-01-07  2:41     ` Shaohua Li
  1 sibling, 0 replies; 42+ messages in thread
From: Shaohua Li @ 2009-01-07  2:41 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: ncunningham-lkml@crca.org.au, linux-kernel@vger.kernel.org,
	torvalds@linux-foundation.org, mingo@elte.hu, fweisbec@gmail.com,
	linux-scsi@vger.kernel.org, linux-ide@vger.kernel.org,
	linux-acpi@vger.kernel.org, akpm@linux-foundation.org

On Mon, Jan 05, 2009 at 06:53:00PM +0800, Arjan van de Ven wrote:
> On Mon, 05 Jan 2009 17:01:34 +1100
> Nigel Cunningham <ncunningham-lkml@crca.org.au> wrote:
> 
> > Hi Arjan.
> > 
> > Great work, and valuable too. I'm just wondering if the header file
> > name "async.h" is a little too generic? Something like async_init.h
> > perhaps?
> > 
> 
> while the users I have in mind are during init, the concept and
> infrastructure of asynchronous function calls is by no means limited to
> that use case... I hope there are many other uses for this :)
This can be used for shutdown too. Some drivers like sata and serio
shutdown time is long.

Thanks,
Shaohua

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH 0/4] Fastboot revisited: Asynchronous function calls
  2009-01-04 18:16 ` [PATCH 0/4] Fastboot revisited: Asynchronous function calls Linus Torvalds
                     ` (2 preceding siblings ...)
  2009-01-04 21:44   ` Alan Cox
@ 2009-01-11 13:14   ` Pavel Machek
  3 siblings, 0 replies; 42+ messages in thread
From: Pavel Machek @ 2009-01-11 13:14 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Arjan van de Ven, linux-kernel, mingo, fweisbec, linux-scsi,
	linux-ide, linux-acpi, akpm

On Sun 2009-01-04 10:16:57, Linus Torvalds wrote:
> 
> 
> On Sun, 4 Jan 2009, Arjan van de Ven wrote:
> > 
> > To see this working, I uploaded a "before" and "after" kernel bootchart
> > for one of my testboxes at
> > 
> > http://www.fenrus.org/linux/before.svg
> > http://www.fenrus.org/linux/after.svg
> 
> Ok, so why does the serial port init take so long? That's a quarter of a 
> second for you, which is ridiculous.
> 
> I _think_ it's the irq auto-probing, but that's just a guess. The 8250 
> driver does some historical crud, like
> 
> 	probe_irq_off(probe_irq_on());
> 
> to get rid of any pending irq's, but that should be entirely pointless 
> these days. I bet that line basically goes back to pre-history, before we 
> made the auto-probing much stabler.
> 
> The irq auto-probing itself also has a few excessive delays, like waiting 
> for 0.1 s just to wait for spurious interrupts to trigger. Doing the extra 
> unnecessary probe makes that doubly expensive.
> 
> Does this patch make any difference to you? I'm not at all sure that it's 
> the irq probing, but if it is, then this should make the serial probe go 
> much faster.

Do serial ports even matter for the netbooks this is targeted at?
Serial ports are gone even on normal notebooks and getting rare at
desktop...


>  	}
>  
>  	/* forget possible initially masked and pending IRQ */
> -	probe_irq_off(probe_irq_on());

Delete the comment, too? :-).

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2009-01-11 13:14 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-04 17:24 [PATCH 0/4] Fastboot revisited: Asynchronous function calls Arjan van de Ven
2009-01-04 17:28 ` [PATCH 1/4] fastboot: Asynchronous function calls to speed up kernel boot Arjan van de Ven
2009-01-04 18:33   ` Linus Torvalds
2009-01-04 18:40     ` Arjan van de Ven
2009-01-04 18:49     ` Arjan van de Ven
2009-01-04 19:05   ` Andi Kleen
2009-01-04 19:09     ` Arjan van de Ven
2009-01-04 19:49       ` Andi Kleen
2009-01-04 19:52         ` Andrew Morton
2009-01-04 17:29 ` [PATCH 2/4] fastboot: make scsi probes asynchronous Arjan van de Ven
2009-01-04 18:05   ` Matthew Wilcox
2009-01-04 18:13     ` Arjan van de Ven
2009-01-04 18:38       ` Jaswinder Singh Rajput
2009-01-04 18:44         ` Arjan van de Ven
2009-01-04 17:30 ` [PATCH 3/4] fastboot: make the libata port scan asynchronous Arjan van de Ven
2009-01-04 17:31 ` [PATCH 4/4] fastboot: make ACPI bus drivers probe asynchronous Arjan van de Ven
2009-01-05  2:03   ` Zhao Yakui
2009-01-05  1:58     ` Arjan van de Ven
2009-01-05  2:51       ` Zhao Yakui
2009-01-05  2:51         ` Arjan van de Ven
2009-01-05  5:30           ` Zhao Yakui
2009-01-04 18:16 ` [PATCH 0/4] Fastboot revisited: Asynchronous function calls Linus Torvalds
2009-01-04 18:31   ` Arjan van de Ven
2009-01-04 18:54     ` Linus Torvalds
2009-01-04 19:05       ` Arjan van de Ven
2009-01-04 19:11         ` Linus Torvalds
2009-01-04 19:19           ` Arjan van de Ven
2009-01-05 16:21         ` Alan Cox
2009-01-05 21:13           ` Arjan van de Ven
2009-01-05 21:21             ` Linus Torvalds
2009-01-04 19:11       ` Andi Kleen
2009-01-04 19:46         ` Robert Hancock
2009-01-04 19:27   ` Linus Torvalds
2009-01-04 19:48     ` Arjan van de Ven
2009-01-04 21:44   ` Alan Cox
2009-01-11 13:14   ` Pavel Machek
2009-01-05  6:01 ` Nigel Cunningham
2009-01-05  8:47   ` Frederic Weisbecker
2009-01-05 10:53   ` Arjan van de Ven
2009-01-05 11:18     ` Nigel Cunningham
2009-01-07  2:41     ` Shaohua Li
     [not found] <fa.h0UoSd20jEtik35h1v63j+E67Io@ifi.uio.no>
     [not found] ` <fa.5PP24JO26n+WYiDr/9b4OySGjWY@ifi.uio.no>
     [not found]   ` <fa.FlPVm6dv2aVhxgrZlA92A/26QC8@ifi.uio.no>
     [not found]     ` <fa.xSdAPowIDNEH2rL6hWZp0t33p2U@ifi.uio.no>
     [not found]       ` <fa.abMnCBprOI1BL1RNVaAvYnUsaEw@ifi.uio.no>
     [not found]         ` <fa.opIcflAvDANLuO5+8NjVCjt/94o@ifi.uio.no>
2009-01-04 18:55           ` [PATCH 2/4] fastboot: make scsi probes asynchronous Sitsofe Wheeler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).